修复拆解smData异常问题

This commit is contained in:
lai
2024-12-13 15:28:15 +08:00
parent c44fae8d13
commit a6bab3fa0b

View File

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