修复拆解smData异常问题
This commit is contained in:
@@ -544,8 +544,21 @@ function transformFormData(data: any) {
|
||||
smStaticIpArr.push(dnnParts);
|
||||
}
|
||||
if (!dnnParts.includes('/') && !dnnParts.includes(':')) {
|
||||
//IPV4 没有/ 也没有:
|
||||
smStaticIpArr.push(dnnParts);
|
||||
const pattern = /^(\d{1,3}\.){3}\d{1,3}$/;
|
||||
if (pattern.test(dnnParts)) {
|
||||
// 验证数值范围
|
||||
const isValid = dnnParts.split('.').every((num: any) => {
|
||||
const n = parseInt(num, 10);
|
||||
return n >= 0 && n <= 255;
|
||||
});
|
||||
|
||||
// 只有当验证通过时才添加 IP
|
||||
if (isValid) {
|
||||
smStaticIpArr.push(dnnParts);
|
||||
}
|
||||
} else {//无/ 无:也有可能为dnn的字符串
|
||||
smallRowJson.dnn += '-' + dnnParts;
|
||||
}
|
||||
}
|
||||
|
||||
if (dnnParts.includes('/') && !dnnParts.includes(':')) {
|
||||
@@ -634,8 +647,8 @@ function fnModalOk() {
|
||||
const result = from.id
|
||||
? updateUDMSub(from)
|
||||
: from.num === 1
|
||||
? addUDMSub(from)
|
||||
: batchAddUDMSub(from, from.num);
|
||||
? addUDMSub(from)
|
||||
: batchAddUDMSub(from, from.num);
|
||||
const hide = message.loading(t('common.loading'), 0);
|
||||
result
|
||||
.then(res => {
|
||||
@@ -937,7 +950,7 @@ function fnGetList(pageNum?: number) {
|
||||
tableState.data = res.rows;
|
||||
if (
|
||||
tablePagination.total <=
|
||||
(queryParams.pageNum - 1) * tablePagination.pageSize &&
|
||||
(queryParams.pageNum - 1) * tablePagination.pageSize &&
|
||||
queryParams.pageNum !== 1
|
||||
) {
|
||||
tableState.loading = false;
|
||||
@@ -1090,42 +1103,26 @@ onMounted(() => {
|
||||
|
||||
<template>
|
||||
<PageContainer>
|
||||
<a-card
|
||||
v-show="tableState.seached"
|
||||
:bordered="false"
|
||||
:body-style="{ marginBottom: '24px', paddingBottom: 0 }"
|
||||
>
|
||||
<a-card v-show="tableState.seached" :bordered="false" :body-style="{ marginBottom: '24px', paddingBottom: 0 }">
|
||||
<!-- 表格搜索栏 -->
|
||||
<a-form :model="queryParams" name="queryParams" layout="horizontal">
|
||||
<a-row :gutter="16">
|
||||
<a-col :lg="6" :md="12" :xs="24">
|
||||
<a-form-item :label="t('views.neUser.sub.neType')" name="neId ">
|
||||
<a-select
|
||||
v-model:value="queryParams.neId"
|
||||
:options="neOtions"
|
||||
:placeholder="t('common.selectPlease')"
|
||||
@change="fnGetList(1)"
|
||||
/>
|
||||
<a-select v-model:value="queryParams.neId" :options="neOtions" :placeholder="t('common.selectPlease')"
|
||||
@change="fnGetList(1)" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :lg="6" :md="12" :xs="24">
|
||||
<a-form-item label="IMSI" name="imsi">
|
||||
<a-input
|
||||
v-model:value="queryParams.imsi"
|
||||
allow-clear
|
||||
:maxlength="15"
|
||||
:placeholder="t('common.inputPlease')"
|
||||
></a-input>
|
||||
<a-input v-model:value="queryParams.imsi" allow-clear :maxlength="15"
|
||||
:placeholder="t('common.inputPlease')"></a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :lg="6" :md="12" :xs="24">
|
||||
<a-form-item label="MSISDN" name="msisdn">
|
||||
<a-input
|
||||
v-model:value="queryParams.msisdn"
|
||||
allow-clear
|
||||
:maxlength="32"
|
||||
:placeholder="t('common.inputPlease')"
|
||||
></a-input>
|
||||
<a-input v-model:value="queryParams.msisdn" allow-clear :maxlength="32"
|
||||
:placeholder="t('common.inputPlease')"></a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :lg="6" :md="12" :xs="24">
|
||||
@@ -1161,31 +1158,16 @@ onMounted(() => {
|
||||
{{ t('common.addText') }}
|
||||
</a-button>
|
||||
|
||||
<a-button
|
||||
type="primary"
|
||||
danger
|
||||
ghost
|
||||
@click.prevent="fnModalVisibleByBatch()"
|
||||
>
|
||||
<a-button type="primary" danger ghost @click.prevent="fnModalVisibleByBatch()">
|
||||
<template #icon>
|
||||
<DeleteOutlined />
|
||||
</template>
|
||||
{{ t('views.neUser.auth.batchDelText') }}
|
||||
</a-button>
|
||||
|
||||
<a-popconfirm
|
||||
:title="t('views.neUser.sub.loadDataConfirm')"
|
||||
:ok-text="t('common.ok')"
|
||||
:cancel-text="t('common.cancel')"
|
||||
:disabled="modalState.loadDataLoading"
|
||||
@confirm="fnLoadData"
|
||||
>
|
||||
<a-button
|
||||
type="dashed"
|
||||
danger
|
||||
:disabled="modalState.loadDataLoading"
|
||||
:loading="modalState.loadDataLoading"
|
||||
>
|
||||
<a-popconfirm :title="t('views.neUser.sub.loadDataConfirm')" :ok-text="t('common.ok')"
|
||||
:cancel-text="t('common.cancel')" :disabled="modalState.loadDataLoading" @confirm="fnLoadData">
|
||||
<a-button type="dashed" danger :disabled="modalState.loadDataLoading" :loading="modalState.loadDataLoading">
|
||||
<template #icon>
|
||||
<SyncOutlined />
|
||||
</template>
|
||||
@@ -1200,13 +1182,8 @@ onMounted(() => {
|
||||
{{ t('views.neUser.sub.import') }}
|
||||
</a-button>
|
||||
|
||||
<a-popconfirm
|
||||
:title="t('views.neUser.sub.exportConfirm')"
|
||||
placement="topRight"
|
||||
ok-text="TXT"
|
||||
ok-type="default"
|
||||
@confirm="fnExportList('txt')"
|
||||
>
|
||||
<a-popconfirm :title="t('views.neUser.sub.exportConfirm')" placement="topRight" ok-text="TXT"
|
||||
ok-type="default" @confirm="fnExportList('txt')">
|
||||
<a-button type="dashed">
|
||||
<template #icon>
|
||||
<ExportOutlined />
|
||||
@@ -1215,30 +1192,20 @@ onMounted(() => {
|
||||
</a-button>
|
||||
</a-popconfirm>
|
||||
|
||||
<a-button
|
||||
type="default"
|
||||
danger
|
||||
:disabled="tableState.selectedRowKeys.length <= 0"
|
||||
:loading="modalState.loadDataLoading"
|
||||
@click.prevent="fnRecordDelete('0')"
|
||||
>
|
||||
<template #icon><DeleteOutlined /></template>
|
||||
<a-button type="default" danger :disabled="tableState.selectedRowKeys.length <= 0"
|
||||
:loading="modalState.loadDataLoading" @click.prevent="fnRecordDelete('0')">
|
||||
<template #icon>
|
||||
<DeleteOutlined />
|
||||
</template>
|
||||
{{ t('views.neUser.sub.checkDel') }}
|
||||
</a-button>
|
||||
|
||||
<a-popconfirm
|
||||
:title="t('views.neUser.sub.checkExportConfirm')"
|
||||
placement="topRight"
|
||||
ok-text="TXT"
|
||||
ok-type="default"
|
||||
@confirm="fnRecordExport('txt')"
|
||||
:disabled="tableState.selectedRowKeys.length <= 0"
|
||||
>
|
||||
<a-button
|
||||
type="default"
|
||||
:disabled="tableState.selectedRowKeys.length <= 0"
|
||||
>
|
||||
<template #icon><ExportOutlined /></template>
|
||||
<a-popconfirm :title="t('views.neUser.sub.checkExportConfirm')" placement="topRight" ok-text="TXT"
|
||||
ok-type="default" @confirm="fnRecordExport('txt')" :disabled="tableState.selectedRowKeys.length <= 0">
|
||||
<a-button type="default" :disabled="tableState.selectedRowKeys.length <= 0">
|
||||
<template #icon>
|
||||
<ExportOutlined />
|
||||
</template>
|
||||
{{ t('views.neUser.sub.checkExport') }}
|
||||
</a-button>
|
||||
</a-popconfirm>
|
||||
@@ -1250,35 +1217,29 @@ onMounted(() => {
|
||||
<a-space :size="8" align="center">
|
||||
<a-tooltip>
|
||||
<template #title>{{ t('common.searchBarText') }}</template>
|
||||
<a-switch
|
||||
v-model:checked="tableState.seached"
|
||||
:checked-children="t('common.switch.show')"
|
||||
:un-checked-children="t('common.switch.hide')"
|
||||
size="small"
|
||||
/>
|
||||
<a-switch v-model:checked="tableState.seached" :checked-children="t('common.switch.show')"
|
||||
:un-checked-children="t('common.switch.hide')" size="small" />
|
||||
</a-tooltip>
|
||||
<a-tooltip>
|
||||
<template #title>{{ t('common.reloadText') }}</template>
|
||||
<a-button type="text" @click.prevent="fnGetList()">
|
||||
<template #icon><ReloadOutlined /></template>
|
||||
<template #icon>
|
||||
<ReloadOutlined />
|
||||
</template>
|
||||
</a-button>
|
||||
</a-tooltip>
|
||||
<TableColumnsDnd
|
||||
cache-id="udmSubData"
|
||||
:columns="tableColumns"
|
||||
v-model:columns-dnd="tableColumnsDnd"
|
||||
></TableColumnsDnd>
|
||||
<TableColumnsDnd cache-id="udmSubData" :columns="tableColumns" v-model:columns-dnd="tableColumnsDnd">
|
||||
</TableColumnsDnd>
|
||||
<a-tooltip placement="topRight">
|
||||
<template #title>{{ t('common.sizeText') }}</template>
|
||||
<a-dropdown placement="bottomRight" trigger="click">
|
||||
<a-button type="text">
|
||||
<template #icon><ColumnHeightOutlined /></template>
|
||||
<template #icon>
|
||||
<ColumnHeightOutlined />
|
||||
</template>
|
||||
</a-button>
|
||||
<template #overlay>
|
||||
<a-menu
|
||||
:selected-keys="[tableState.size as string]"
|
||||
@click="fnTableSize"
|
||||
>
|
||||
<a-menu :selected-keys="[tableState.size as string]" @click="fnTableSize">
|
||||
<a-menu-item key="default">
|
||||
{{ t('common.size.default') }}
|
||||
</a-menu-item>
|
||||
@@ -1296,23 +1257,14 @@ onMounted(() => {
|
||||
</template>
|
||||
|
||||
<!-- 表格列表 -->
|
||||
<a-table
|
||||
class="table"
|
||||
row-key="imsi"
|
||||
:columns="tableColumnsDnd"
|
||||
:loading="tableState.loading"
|
||||
:data-source="tableState.data"
|
||||
:size="tableState.size"
|
||||
:pagination="tablePagination"
|
||||
:scroll="{ y: 'calc(100vh - 480px)' }"
|
||||
@change="fnTableChange"
|
||||
@resizeColumn="(w:number, col:any) => (col.width = w)"
|
||||
:row-selection="{
|
||||
<a-table class="table" row-key="imsi" :columns="tableColumnsDnd" :loading="tableState.loading"
|
||||
:data-source="tableState.data" :size="tableState.size" :pagination="tablePagination"
|
||||
:scroll="{ y: 'calc(100vh - 480px)' }" @change="fnTableChange"
|
||||
@resizeColumn="(w: number, col: any) => (col.width = w)" :row-selection="{
|
||||
type: 'checkbox',
|
||||
selectedRowKeys: tableState.selectedRowKeys,
|
||||
onChange: fnTableSelectedRowKeys,
|
||||
}"
|
||||
>
|
||||
}">
|
||||
<template #bodyCell="{ column, record }">
|
||||
<template v-if="column.key === 'cnFlag'">
|
||||
{{
|
||||
@@ -1332,10 +1284,7 @@ onMounted(() => {
|
||||
<a-space :size="8" align="center">
|
||||
<a-tooltip>
|
||||
<template #title>{{ t('common.editText') }}</template>
|
||||
<a-button
|
||||
type="link"
|
||||
@click.prevent="fnModalVisibleByEdit(record.imsi)"
|
||||
>
|
||||
<a-button type="link" @click.prevent="fnModalVisibleByEdit(record.imsi)">
|
||||
<template #icon>
|
||||
<FormOutlined />
|
||||
</template>
|
||||
@@ -1343,10 +1292,7 @@ onMounted(() => {
|
||||
</a-tooltip>
|
||||
<a-tooltip>
|
||||
<template #title>{{ t('common.deleteText') }}</template>
|
||||
<a-button
|
||||
type="link"
|
||||
@click.prevent="fnRecordDelete(record.imsi)"
|
||||
>
|
||||
<a-button type="link" @click.prevent="fnRecordDelete(record.imsi)">
|
||||
<template #icon>
|
||||
<DeleteOutlined />
|
||||
</template>
|
||||
@@ -1359,58 +1305,26 @@ onMounted(() => {
|
||||
</a-card>
|
||||
|
||||
<!-- 新增框或修改框 -->
|
||||
<ProModal
|
||||
:drag="true"
|
||||
:width="800"
|
||||
:destroyOnClose="true"
|
||||
style="top: 0px"
|
||||
:body-style="{ maxHeight: '600px', 'overflow-y': 'auto' }"
|
||||
:keyboard="false"
|
||||
:mask-closable="false"
|
||||
:open="modalState.openByEdit"
|
||||
:title="modalState.title"
|
||||
:confirm-loading="modalState.confirmLoading"
|
||||
@ok="fnModalOk"
|
||||
@cancel="fnModalCancel"
|
||||
>
|
||||
<a-form
|
||||
name="modalStateFrom"
|
||||
layout="horizontal"
|
||||
:label-col="{ span: 6 }"
|
||||
:labelWrap="true"
|
||||
>
|
||||
<ProModal :drag="true" :width="800" :destroyOnClose="true" style="top: 0px"
|
||||
:body-style="{ maxHeight: '600px', 'overflow-y': 'auto' }" :keyboard="false" :mask-closable="false"
|
||||
:open="modalState.openByEdit" :title="modalState.title" :confirm-loading="modalState.confirmLoading"
|
||||
@ok="fnModalOk" @cancel="fnModalCancel">
|
||||
<a-form name="modalStateFrom" layout="horizontal" :label-col="{ span: 6 }" :labelWrap="true">
|
||||
<a-row>
|
||||
<a-col :lg="12" :md="12" :xs="24">
|
||||
<a-form-item
|
||||
:label="t('views.neUser.sub.numAdd')"
|
||||
name="num"
|
||||
v-bind="modalStateFrom.validateInfos.num"
|
||||
v-show="!modalState.from.id"
|
||||
>
|
||||
<a-input-number
|
||||
v-model:value="modalState.from.num"
|
||||
style="width: 100%"
|
||||
:min="1"
|
||||
:max="10000"
|
||||
placeholder="<=10000"
|
||||
></a-input-number>
|
||||
<a-form-item :label="t('views.neUser.sub.numAdd')" name="num" v-bind="modalStateFrom.validateInfos.num"
|
||||
v-show="!modalState.from.id">
|
||||
<a-input-number v-model:value="modalState.from.num" style="width: 100%" :min="1" :max="10000"
|
||||
placeholder="<=10000"></a-input-number>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
|
||||
<a-row>
|
||||
<a-col :lg="12" :md="12" :xs="24">
|
||||
<a-form-item
|
||||
label="IMSI"
|
||||
name="imsi"
|
||||
v-bind="modalStateFrom.validateInfos.imsi"
|
||||
>
|
||||
<a-input
|
||||
v-model:value="modalState.from.imsi"
|
||||
allow-clear
|
||||
:maxlength="15"
|
||||
:disabled="!!modalState.from.id"
|
||||
>
|
||||
<a-form-item label="IMSI" name="imsi" v-bind="modalStateFrom.validateInfos.imsi">
|
||||
<a-input v-model:value="modalState.from.imsi" allow-clear :maxlength="15"
|
||||
:disabled="!!modalState.from.id">
|
||||
<template #prefix>
|
||||
<a-tooltip placement="topLeft">
|
||||
<template #title>
|
||||
@@ -1426,16 +1340,8 @@ onMounted(() => {
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :lg="12" :md="12" :xs="24">
|
||||
<a-form-item
|
||||
label="MSISDN"
|
||||
name="msisdn"
|
||||
v-bind="modalStateFrom.validateInfos.msisdn"
|
||||
>
|
||||
<a-input
|
||||
v-model:value="modalState.from.msisdn"
|
||||
allow-clear
|
||||
:maxlength="32"
|
||||
>
|
||||
<a-form-item label="MSISDN" name="msisdn" v-bind="modalStateFrom.validateInfos.msisdn">
|
||||
<a-input v-model:value="modalState.from.msisdn" allow-clear :maxlength="32">
|
||||
<template #prefix>
|
||||
<a-tooltip placement="topLeft">
|
||||
<template #title>
|
||||
@@ -1449,49 +1355,24 @@ onMounted(() => {
|
||||
</a-col>
|
||||
</a-row>
|
||||
|
||||
<a-form-item
|
||||
:label="t('common.remark')"
|
||||
:label-col="{ span: 3 }"
|
||||
:label-wrap="true"
|
||||
>
|
||||
<a-textarea
|
||||
v-model:value="modalState.from.remark"
|
||||
:auto-size="{ minRows: 1, maxRows: 6 }"
|
||||
:maxlength="500"
|
||||
:show-count="true"
|
||||
:placeholder="t('common.inputPlease')"
|
||||
/>
|
||||
<a-form-item :label="t('common.remark')" :label-col="{ span: 3 }" :label-wrap="true">
|
||||
<a-textarea v-model:value="modalState.from.remark" :auto-size="{ minRows: 1, maxRows: 6 }" :maxlength="500"
|
||||
:show-count="true" :placeholder="t('common.inputPlease')" />
|
||||
</a-form-item>
|
||||
|
||||
<!-- SM Data ---- S -->
|
||||
<a-divider orientation="left">
|
||||
Subscribed SM Data
|
||||
<a-tooltip title="Add SM Data">
|
||||
<a-button
|
||||
shape="circle"
|
||||
@click="addBigRow"
|
||||
style="margin-left: 10px"
|
||||
>
|
||||
<a-button shape="circle" @click="addBigRow" style="margin-left: 10px">
|
||||
<template #icon><plus-outlined /></template>
|
||||
</a-button> </a-tooltip
|
||||
></a-divider>
|
||||
</a-button> </a-tooltip></a-divider>
|
||||
<!-- 大数组布局 -->
|
||||
<div v-for="(row, index) in bigRows" :key="String(row.id)">
|
||||
<a-row>
|
||||
<a-col :lg="6" :md="6" :xs="24">
|
||||
<a-form-item
|
||||
label="SST"
|
||||
name="row.sst"
|
||||
:label-col="{ span: 12 }"
|
||||
:validateTrigger="[]"
|
||||
:required="true"
|
||||
>
|
||||
<a-input-number
|
||||
v-model:value="row.sst"
|
||||
:min="1"
|
||||
:max="3"
|
||||
:step="1"
|
||||
/>
|
||||
<a-form-item label="SST" name="row.sst" :label-col="{ span: 12 }" :validateTrigger="[]" :required="true">
|
||||
<a-input-number v-model:value="row.sst" :min="1" :max="3" :step="1" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
|
||||
@@ -1504,7 +1385,7 @@ onMounted(() => {
|
||||
<a-row>
|
||||
<a-col :span="4">
|
||||
<a-tooltip title="Add DNN">
|
||||
<a-button shape="circle" @click="addSmallRow(row.id)">
|
||||
<a-button shape="circle" @click="addSmallRow(row.id)" style="margin-left:10px ;">
|
||||
<template #icon><plus-square-outlined /></template>
|
||||
</a-button>
|
||||
</a-tooltip>
|
||||
@@ -1521,46 +1402,27 @@ onMounted(() => {
|
||||
</a-row>
|
||||
|
||||
<!-- 小数组布局 -->
|
||||
<div
|
||||
v-for="(smallRow, smallIndex) in row.smallRows"
|
||||
:key="String(smallRow.id)"
|
||||
>
|
||||
<div v-for="(smallRow, smallIndex) in row.smallRows" :key="String(smallRow.id)">
|
||||
<a-row>
|
||||
<a-col :lg="6" :md="7" :xs="24">
|
||||
<a-form-item
|
||||
label="DNN/APN"
|
||||
name="dnn"
|
||||
:validateTrigger="[]"
|
||||
:required="true"
|
||||
:label-col="{ span: 12 }"
|
||||
>
|
||||
<a-col :lg="6" :md="6" :xs="24">
|
||||
<a-form-item label="DNN/APN" name="dnn" :validateTrigger="[]" :required="true"
|
||||
:label-col="{ span: 12 }">
|
||||
<a-input v-model:value="smallRow.dnn" allow-clear></a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :lg="8" :md="6" :xs="24">
|
||||
<a-form-item
|
||||
label="Static IP"
|
||||
name="smStaticIp"
|
||||
:label-col="{ span: 5 }"
|
||||
>
|
||||
<a-input
|
||||
v-model:value="smallRow.smStaticIp"
|
||||
allow-clear
|
||||
></a-input>
|
||||
<a-col :lg="8" :md="8" :xs="24">
|
||||
<a-form-item label="Static IP" name="smStaticIp" :label-col="{ span: 5 }">
|
||||
<a-input v-model:value="smallRow.smStaticIp" allow-clear></a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :lg="8" :md="8" :xs="24">
|
||||
<a-form-item label="Routing Behind MS IP" name="msIp">
|
||||
<a-form-item label="Routing Behind MS IP" style="margin-left:10px ;" name="msIp">
|
||||
<a-input v-model:value="smallRow.msIp" allow-clear></a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :lg="1" :md="1" :xs="24" v-if="smallIndex !== 0">
|
||||
<a-col :lg="2" :md="2" :xs="24" v-if="smallIndex !== 0">
|
||||
<a-tooltip title="Delete DNN">
|
||||
<a-button
|
||||
danger
|
||||
shape="circle"
|
||||
@click="delDNN(smallIndex, row.id)"
|
||||
>
|
||||
<a-button danger shape="circle" @click="delDNN(smallIndex, row.id)" style="margin-left:10px ;">
|
||||
<template #icon><close-square-outlined /></template>
|
||||
</a-button>
|
||||
</a-tooltip>
|
||||
@@ -1577,11 +1439,7 @@ onMounted(() => {
|
||||
</template>
|
||||
<a-row>
|
||||
<a-col :lg="24" :md="24" :xs="24">
|
||||
<a-form-item
|
||||
label="5GC Flag"
|
||||
name="cnFlag"
|
||||
:help="t('views.neUser.sub.cnFlag')"
|
||||
>
|
||||
<a-form-item label="5GC Flag" name="cnFlag" :help="t('views.neUser.sub.cnFlag')">
|
||||
<a-select v-model:value="modalState.from.cnType">
|
||||
<a-select-option value="3">
|
||||
{{ t('views.neUser.sub.enable') }}
|
||||
@@ -1593,71 +1451,44 @@ onMounted(() => {
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :lg="24" :md="24" :xs="24">
|
||||
<a-form-item
|
||||
label="5G Subscribed UE AMBR Template"
|
||||
name="ambr"
|
||||
v-bind="modalStateFrom.validateInfos.ambr"
|
||||
>
|
||||
<a-input
|
||||
v-model:value="modalState.from.ambr"
|
||||
allow-clear
|
||||
:maxlength="50"
|
||||
>
|
||||
<a-form-item label="5G Subscribed UE AMBR Template" name="ambr"
|
||||
v-bind="modalStateFrom.validateInfos.ambr">
|
||||
<a-input v-model:value="modalState.from.ambr" allow-clear :maxlength="50">
|
||||
<template #prefix>
|
||||
<a-tooltip placement="topLeft">
|
||||
<template #title>
|
||||
{{ t('views.neUser.sub.inputTip', { num: '50' }) }}
|
||||
</template>
|
||||
<InfoCircleOutlined
|
||||
style="opacity: 0.45; color: inherit"
|
||||
/>
|
||||
<InfoCircleOutlined style="opacity: 0.45; color: inherit" />
|
||||
</a-tooltip>
|
||||
</template>
|
||||
</a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :lg="24" :md="24" :xs="24">
|
||||
<a-form-item
|
||||
label="5G Subscribed SNSSAIs Template"
|
||||
name="nssai"
|
||||
v-bind="modalStateFrom.validateInfos.nssai"
|
||||
>
|
||||
<a-input
|
||||
v-model:value="modalState.from.nssai"
|
||||
allow-clear
|
||||
:maxlength="50"
|
||||
>
|
||||
<a-form-item label="5G Subscribed SNSSAIs Template" name="nssai"
|
||||
v-bind="modalStateFrom.validateInfos.nssai">
|
||||
<a-input v-model:value="modalState.from.nssai" allow-clear :maxlength="50">
|
||||
<template #prefix>
|
||||
<a-tooltip placement="topLeft">
|
||||
<template #title>
|
||||
{{ t('views.neUser.sub.inputTip', { num: '50' }) }}
|
||||
</template>
|
||||
<InfoCircleOutlined
|
||||
style="opacity: 0.45; color: inherit"
|
||||
/>
|
||||
<InfoCircleOutlined style="opacity: 0.45; color: inherit" />
|
||||
</a-tooltip>
|
||||
</template>
|
||||
</a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :lg="24" :md="24" :xs="24">
|
||||
<a-form-item
|
||||
label="5G Subscribed SMF Selection Data Template"
|
||||
name="smfSel"
|
||||
>
|
||||
<a-input
|
||||
v-model:value="modalState.from.smfSel"
|
||||
allow-clear
|
||||
:maxlength="50"
|
||||
>
|
||||
<a-form-item label="5G Subscribed SMF Selection Data Template" name="smfSel">
|
||||
<a-input v-model:value="modalState.from.smfSel" allow-clear :maxlength="50">
|
||||
<template #prefix>
|
||||
<a-tooltip placement="topLeft">
|
||||
<template #title>
|
||||
{{ t('views.neUser.sub.inputTip', { num: '50' }) }}
|
||||
</template>
|
||||
<InfoCircleOutlined
|
||||
style="opacity: 0.45; color: inherit"
|
||||
/>
|
||||
<InfoCircleOutlined style="opacity: 0.45; color: inherit" />
|
||||
</a-tooltip>
|
||||
</template>
|
||||
</a-input>
|
||||
@@ -1665,77 +1496,48 @@ onMounted(() => {
|
||||
</a-col>
|
||||
<a-col :lg="24" :md="24" :xs="24">
|
||||
<a-form-item label="5G Forbidden Areas Template" name="arfb">
|
||||
<a-input
|
||||
v-model:value="modalState.from.arfb"
|
||||
allow-clear
|
||||
:maxlength="50"
|
||||
>
|
||||
<a-input v-model:value="modalState.from.arfb" allow-clear :maxlength="50">
|
||||
<template #prefix>
|
||||
<a-tooltip placement="topLeft">
|
||||
<template #title>
|
||||
{{ t('views.neUser.sub.arfbTip') }}
|
||||
</template>
|
||||
<InfoCircleOutlined
|
||||
style="opacity: 0.45; color: inherit"
|
||||
/>
|
||||
<InfoCircleOutlined style="opacity: 0.45; color: inherit" />
|
||||
</a-tooltip>
|
||||
</template>
|
||||
</a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :lg="24" :md="24" :xs="24">
|
||||
<a-form-item
|
||||
label="5G CAG Template"
|
||||
name="cag"
|
||||
v-bind="modalStateFrom.validateInfos.cag"
|
||||
>
|
||||
<a-input
|
||||
v-model:value="modalState.from.cag"
|
||||
allow-clear
|
||||
:maxlength="50"
|
||||
>
|
||||
<a-form-item label="5G CAG Template" name="cag" v-bind="modalStateFrom.validateInfos.cag">
|
||||
<a-input v-model:value="modalState.from.cag" allow-clear :maxlength="50">
|
||||
<template #prefix>
|
||||
<a-tooltip placement="topLeft">
|
||||
<template #title>
|
||||
{{ t('views.neUser.sub.inputTip', { num: '50' }) }}
|
||||
</template>
|
||||
<InfoCircleOutlined
|
||||
style="opacity: 0.45; color: inherit"
|
||||
/>
|
||||
<InfoCircleOutlined style="opacity: 0.45; color: inherit" />
|
||||
</a-tooltip>
|
||||
</template>
|
||||
</a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :lg="24" :md="24" :xs="24">
|
||||
<a-form-item
|
||||
label="5G Service Area Restriction Template"
|
||||
name="sar"
|
||||
>
|
||||
<a-input
|
||||
v-model:value="modalState.from.sar"
|
||||
allow-clear
|
||||
:maxlength="50"
|
||||
>
|
||||
<a-form-item label="5G Service Area Restriction Template" name="sar">
|
||||
<a-input v-model:value="modalState.from.sar" allow-clear :maxlength="50">
|
||||
<template #prefix>
|
||||
<a-tooltip placement="topLeft">
|
||||
<template #title>
|
||||
{{ t('views.neUser.sub.sarTip') }}
|
||||
</template>
|
||||
<InfoCircleOutlined
|
||||
style="opacity: 0.45; color: inherit"
|
||||
/>
|
||||
<InfoCircleOutlined style="opacity: 0.45; color: inherit" />
|
||||
</a-tooltip>
|
||||
</template>
|
||||
</a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :lg="24" :md="24" :xs="24">
|
||||
<a-form-item
|
||||
label="5G MICO Mode"
|
||||
name="mico"
|
||||
:help="t('views.neUser.sub.micoTip')"
|
||||
>
|
||||
<a-form-item label="5G MICO Mode" name="mico" :help="t('views.neUser.sub.micoTip')">
|
||||
<a-select v-model:value="modalState.from.mico">
|
||||
<a-select-option value="1">
|
||||
{{ t('views.neUser.sub.enable') }}
|
||||
@@ -1758,21 +1560,14 @@ onMounted(() => {
|
||||
</a-col>
|
||||
<a-col :lg="24" :md="24" :xs="24">
|
||||
<a-form-item label="5G UE Usage Type" name="ueUsageType">
|
||||
<a-input-number
|
||||
v-model:value="modalState.from.ueUsageType"
|
||||
style="width: 100%"
|
||||
:min="0"
|
||||
:max="127"
|
||||
placeholder="0 ~ 127"
|
||||
>
|
||||
<a-input-number v-model:value="modalState.from.ueUsageType" style="width: 100%" :min="0" :max="127"
|
||||
placeholder="0 ~ 127">
|
||||
<template #prefix>
|
||||
<a-tooltip placement="topLeft">
|
||||
<template #title>
|
||||
{{ t('views.neUser.sub.ueTypeTip') }}
|
||||
</template>
|
||||
<InfoCircleOutlined
|
||||
style="opacity: 0.45; color: inherit"
|
||||
/>
|
||||
<InfoCircleOutlined style="opacity: 0.45; color: inherit" />
|
||||
</a-tooltip>
|
||||
</template>
|
||||
</a-input-number>
|
||||
@@ -1780,21 +1575,14 @@ onMounted(() => {
|
||||
</a-col>
|
||||
<a-col :lg="24" :md="24" :xs="24">
|
||||
<a-form-item label="5G RFSP Index" name="rfspIndex">
|
||||
<a-input-number
|
||||
v-model:value="modalState.from.rfspIndex"
|
||||
style="width: 100%"
|
||||
:min="0"
|
||||
:max="127"
|
||||
placeholder="0 ~ 127"
|
||||
>
|
||||
<a-input-number v-model:value="modalState.from.rfspIndex" style="width: 100%" :min="0" :max="127"
|
||||
placeholder="0 ~ 127">
|
||||
<template #prefix>
|
||||
<a-tooltip placement="topLeft">
|
||||
<template #title>
|
||||
{{ t('views.neUser.sub.rfspTip') }}
|
||||
</template>
|
||||
<InfoCircleOutlined
|
||||
style="opacity: 0.45; color: inherit"
|
||||
/>
|
||||
<InfoCircleOutlined style="opacity: 0.45; color: inherit" />
|
||||
</a-tooltip>
|
||||
</template>
|
||||
</a-input-number>
|
||||
@@ -1809,11 +1597,7 @@ onMounted(() => {
|
||||
</template>
|
||||
<a-row>
|
||||
<a-col :lg="24" :md="24" :xs="24">
|
||||
<a-form-item
|
||||
label="4G EPS Flag"
|
||||
name="epsFlag"
|
||||
:help="t('views.neUser.sub.epsFlagTip')"
|
||||
>
|
||||
<a-form-item label="4G EPS Flag" name="epsFlag" :help="t('views.neUser.sub.epsFlagTip')">
|
||||
<a-select v-model:value="modalState.from.epsFlag">
|
||||
<a-select-option value="1">
|
||||
{{ t('views.neUser.sub.enable') }}
|
||||
@@ -1825,24 +1609,15 @@ onMounted(() => {
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :lg="24" :md="24" :xs="24">
|
||||
<a-form-item
|
||||
label="4G EPS User Template Name"
|
||||
name="epstpl"
|
||||
v-bind="modalStateFrom.validateInfos.epstpl"
|
||||
>
|
||||
<a-input
|
||||
v-model:value="modalState.from.epstpl"
|
||||
allow-clear
|
||||
:maxlength="50"
|
||||
>
|
||||
<a-form-item label="4G EPS User Template Name" name="epstpl"
|
||||
v-bind="modalStateFrom.validateInfos.epstpl">
|
||||
<a-input v-model:value="modalState.from.epstpl" allow-clear :maxlength="50">
|
||||
<template #prefix>
|
||||
<a-tooltip placement="topLeft">
|
||||
<template #title>
|
||||
{{ t('views.neUser.sub.inputTip', { num: '50' }) }}
|
||||
</template>
|
||||
<InfoCircleOutlined
|
||||
style="opacity: 0.45; color: inherit"
|
||||
/>
|
||||
<InfoCircleOutlined style="opacity: 0.45; color: inherit" />
|
||||
</a-tooltip>
|
||||
</template>
|
||||
</a-input>
|
||||
@@ -1851,20 +1626,14 @@ onMounted(() => {
|
||||
</a-row>
|
||||
<a-row>
|
||||
<a-col :lg="24" :md="24" :xs="24">
|
||||
<a-form-item
|
||||
label="4G Static IP"
|
||||
v-bind="modalStateFrom.validateInfos.staticIp"
|
||||
name="staticIp"
|
||||
>
|
||||
<a-form-item label="4G Static IP" v-bind="modalStateFrom.validateInfos.staticIp" name="staticIp">
|
||||
<a-input v-model:value="modalState.from.staticIp" allow-clear>
|
||||
<template #prefix>
|
||||
<a-tooltip placement="topLeft">
|
||||
<template #title>
|
||||
{{ t('views.neUser.sub.staticIpTip') }}
|
||||
</template>
|
||||
<InfoCircleOutlined
|
||||
style="opacity: 0.45; color: inherit"
|
||||
/>
|
||||
<InfoCircleOutlined style="opacity: 0.45; color: inherit" />
|
||||
</a-tooltip>
|
||||
</template>
|
||||
</a-input>
|
||||
@@ -1884,73 +1653,33 @@ onMounted(() => {
|
||||
</a-input>
|
||||
</a-form-item>
|
||||
|
||||
<a-form-item
|
||||
label="4G APN Context List"
|
||||
name="apnContext"
|
||||
:help="t('views.neUser.sub.apnContextTip')"
|
||||
>
|
||||
<a-form-item label="4G APN Context List" name="apnContext" :help="t('views.neUser.sub.apnContextTip')">
|
||||
<a-input-group compact>
|
||||
<a-input-number
|
||||
v-for="(_, i) in modalState.from.apnContext"
|
||||
:key="i"
|
||||
:title="i"
|
||||
style="width: 16.5%"
|
||||
:min="0"
|
||||
:max="99"
|
||||
v-model:value="modalState.from.apnContext[i]"
|
||||
></a-input-number>
|
||||
<a-input-number v-for="(_, i) in modalState.from.apnContext" :key="i" :title="i" style="width: 16.5%"
|
||||
:min="0" :max="99" v-model:value="modalState.from.apnContext[i]"></a-input-number>
|
||||
</a-input-group>
|
||||
</a-form-item>
|
||||
|
||||
<a-form-item
|
||||
label="4G EPS ODB"
|
||||
name="epsOdb"
|
||||
v-bind="modalStateFrom.validateInfos.epsOdb"
|
||||
>
|
||||
<a-tooltip
|
||||
:title="t('views.neUser.sub.epsOdbTip')"
|
||||
placement="topLeft"
|
||||
>
|
||||
<a-select
|
||||
v-model:value="modalState.from.epsOdb"
|
||||
mode="multiple"
|
||||
style="width: 100%"
|
||||
placeholder="Please select"
|
||||
:options="modalStateFromOption.odbJson"
|
||||
@change=""
|
||||
>
|
||||
<a-form-item label="4G EPS ODB" name="epsOdb" v-bind="modalStateFrom.validateInfos.epsOdb">
|
||||
<a-tooltip :title="t('views.neUser.sub.epsOdbTip')" placement="topLeft">
|
||||
<a-select v-model:value="modalState.from.epsOdb" mode="multiple" style="width: 100%"
|
||||
placeholder="Please select" :options="modalStateFromOption.odbJson" @change="">
|
||||
</a-select>
|
||||
</a-tooltip>
|
||||
</a-form-item>
|
||||
|
||||
<a-form-item label="4G HPLMN ODB" name="hplmnOdb">
|
||||
<a-tooltip
|
||||
:title="t('views.neUser.sub.hplmnOdbTip')"
|
||||
placement="topLeft"
|
||||
>
|
||||
<a-select
|
||||
v-model:value="modalState.from.hplmnOdb"
|
||||
mode="multiple"
|
||||
style="width: 100%"
|
||||
:options="modalStateFromOption.hplmnOdb"
|
||||
@change=""
|
||||
>
|
||||
<a-tooltip :title="t('views.neUser.sub.hplmnOdbTip')" placement="topLeft">
|
||||
<a-select v-model:value="modalState.from.hplmnOdb" mode="multiple" style="width: 100%"
|
||||
:options="modalStateFromOption.hplmnOdb" @change="">
|
||||
</a-select>
|
||||
</a-tooltip>
|
||||
</a-form-item>
|
||||
|
||||
<a-form-item label="4G Access Restriction Data" name="ard">
|
||||
<a-tooltip
|
||||
:title="t('views.neUser.sub.ardTip')"
|
||||
placement="topLeft"
|
||||
>
|
||||
<a-select
|
||||
v-model:value="modalState.from.ard"
|
||||
mode="multiple"
|
||||
style="width: 100%"
|
||||
:options="modalStateFromOption.ardJson"
|
||||
@change=""
|
||||
>
|
||||
<a-tooltip :title="t('views.neUser.sub.ardTip')" placement="topLeft">
|
||||
<a-select v-model:value="modalState.from.ard" mode="multiple" style="width: 100%"
|
||||
:options="modalStateFromOption.ardJson" @change="">
|
||||
</a-select>
|
||||
</a-tooltip>
|
||||
</a-form-item>
|
||||
@@ -1960,36 +1689,15 @@ onMounted(() => {
|
||||
</ProModal>
|
||||
|
||||
<!-- 批量删除框 -->
|
||||
<ProModal
|
||||
:drag="true"
|
||||
:destroyOnClose="true"
|
||||
style="top: 0px"
|
||||
:keyboard="false"
|
||||
:mask-closable="false"
|
||||
:open="modalState.openByBatchDel"
|
||||
:title="modalState.title"
|
||||
:confirm-loading="modalState.confirmLoading"
|
||||
@ok="fnBatchDelModalOk"
|
||||
@cancel="fnBatchDelModalCancel"
|
||||
>
|
||||
<a-form
|
||||
name="modalStateBatchDelFrom"
|
||||
layout="horizontal"
|
||||
:label-col="{ span: 6 }"
|
||||
:labelWrap="true"
|
||||
>
|
||||
<ProModal :drag="true" :destroyOnClose="true" style="top: 0px" :keyboard="false" :mask-closable="false"
|
||||
:open="modalState.openByBatchDel" :title="modalState.title" :confirm-loading="modalState.confirmLoading"
|
||||
@ok="fnBatchDelModalOk" @cancel="fnBatchDelModalCancel">
|
||||
<a-form name="modalStateBatchDelFrom" layout="horizontal" :label-col="{ span: 6 }" :labelWrap="true">
|
||||
<a-row>
|
||||
<a-col :lg="24" :md="24" :xs="24">
|
||||
<a-form-item
|
||||
:label="t('views.neUser.sub.startIMSI')"
|
||||
name="imsi"
|
||||
v-bind="modalStateBatchDelFrom.validateInfos.imsi"
|
||||
>
|
||||
<a-input
|
||||
v-model:value="modalState.BatchDelForm.imsi"
|
||||
allow-clear
|
||||
:maxlength="15"
|
||||
>
|
||||
<a-form-item :label="t('views.neUser.sub.startIMSI')" name="imsi"
|
||||
v-bind="modalStateBatchDelFrom.validateInfos.imsi">
|
||||
<a-input v-model:value="modalState.BatchDelForm.imsi" allow-clear :maxlength="15">
|
||||
<template #prefix>
|
||||
<a-tooltip placement="topLeft">
|
||||
<template #title>
|
||||
@@ -2005,18 +1713,10 @@ onMounted(() => {
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :lg="24" :md="24" :xs="24">
|
||||
<a-form-item
|
||||
:label="t('views.neUser.sub.numDel')"
|
||||
name="num"
|
||||
v-bind="modalStateBatchDelFrom.validateInfos.num"
|
||||
>
|
||||
<a-input-number
|
||||
v-model:value="modalState.BatchDelForm.num"
|
||||
style="width: 100%"
|
||||
:min="1"
|
||||
:max="10000"
|
||||
placeholder="<=10000"
|
||||
></a-input-number>
|
||||
<a-form-item :label="t('views.neUser.sub.numDel')" name="num"
|
||||
v-bind="modalStateBatchDelFrom.validateInfos.num">
|
||||
<a-input-number v-model:value="modalState.BatchDelForm.num" style="width: 100%" :min="1" :max="10000"
|
||||
placeholder="<=10000"></a-input-number>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
@@ -2024,23 +1724,12 @@ onMounted(() => {
|
||||
</ProModal>
|
||||
|
||||
<!-- 上传导入表格数据文件框 -->
|
||||
<UploadModal
|
||||
:title="uploadImportState.title"
|
||||
:loading="uploadImportState.loading"
|
||||
@upload="fnModalUploadImportUpload"
|
||||
@close="fnModalUploadImportClose"
|
||||
v-model:open="uploadImportState.open"
|
||||
:ext="['.txt']"
|
||||
:size="10"
|
||||
>
|
||||
<UploadModal :title="uploadImportState.title" :loading="uploadImportState.loading"
|
||||
@upload="fnModalUploadImportUpload" @close="fnModalUploadImportClose" v-model:open="uploadImportState.open"
|
||||
:ext="['.txt']" :size="10">
|
||||
<template #default>
|
||||
<a-textarea
|
||||
:disabled="true"
|
||||
:hidden="!uploadImportState.msg"
|
||||
:value="uploadImportState.msg"
|
||||
:auto-size="{ minRows: 2, maxRows: 8 }"
|
||||
style="background-color: transparent; color: rgba(0, 0, 0, 0.85)"
|
||||
/>
|
||||
<a-textarea :disabled="true" :hidden="!uploadImportState.msg" :value="uploadImportState.msg"
|
||||
:auto-size="{ minRows: 2, maxRows: 8 }" style="background-color: transparent; color: rgba(0, 0, 0, 0.85)" />
|
||||
</template>
|
||||
</UploadModal>
|
||||
</PageContainer>
|
||||
|
||||
Reference in New Issue
Block a user