feat:删除remark和smdata的校验
This commit is contained in:
@@ -124,13 +124,6 @@ let tableColumns = ref<ColumnsType>([
|
|||||||
sorter: true,
|
sorter: true,
|
||||||
width: 100,
|
width: 100,
|
||||||
},
|
},
|
||||||
{
|
|
||||||
title: 'TAG',
|
|
||||||
dataIndex: 'tag',
|
|
||||||
align: 'center',
|
|
||||||
width: 150,
|
|
||||||
key: 'tag'
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
title: 'TenantID',
|
title: 'TenantID',
|
||||||
dataIndex: 'tenantID',
|
dataIndex: 'tenantID',
|
||||||
@@ -150,6 +143,13 @@ let tableColumns = ref<ColumnsType>([
|
|||||||
align: 'center',
|
align: 'center',
|
||||||
width: 150,
|
width: 150,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
title: 'TAG',
|
||||||
|
dataIndex: 'tag',
|
||||||
|
align: 'center',
|
||||||
|
width: 150,
|
||||||
|
key: 'tag'
|
||||||
|
},
|
||||||
{
|
{
|
||||||
title: t('common.operate'),
|
title: t('common.operate'),
|
||||||
key: 'imsi',
|
key: 'imsi',
|
||||||
@@ -241,7 +241,6 @@ let modalState: ModalStateType = reactive({
|
|||||||
tag: '0',
|
tag: '0',
|
||||||
vni: '',
|
vni: '',
|
||||||
num: 1,
|
num: 1,
|
||||||
remark: '',
|
|
||||||
},
|
},
|
||||||
BatchDelForm: {
|
BatchDelForm: {
|
||||||
num: 1,
|
num: 1,
|
||||||
@@ -304,262 +303,17 @@ const modalStateFromOption = reactive({
|
|||||||
],
|
],
|
||||||
});
|
});
|
||||||
|
|
||||||
//新增时初始SM Data
|
|
||||||
const bigRows = ref<any[]>([
|
|
||||||
{
|
|
||||||
id: 0,
|
|
||||||
sst: '',
|
|
||||||
sd: '',
|
|
||||||
smallRows: [
|
|
||||||
{
|
|
||||||
id: 0,
|
|
||||||
dnn: '',
|
|
||||||
smStaticIp: '',
|
|
||||||
msIp: '',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 1,
|
|
||||||
dnn: 'ims',
|
|
||||||
smStaticIp: '',
|
|
||||||
msIp: '',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
]);
|
|
||||||
|
|
||||||
//小数组的index
|
|
||||||
let smallRowIndexCounter = 0;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 针对修改框的截取每位数值
|
|
||||||
* @param num 二进制值: 10001 n:长度有几位
|
|
||||||
*/
|
|
||||||
function PrefixZero(num: any, n: any) {
|
|
||||||
return (Array(n).join('0') + num).slice(-n);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 对话框弹出显示为 批量新增,批量删除
|
|
||||||
* @param noticeId 网元id, 不传为新增
|
|
||||||
*/
|
|
||||||
function fnModalVisibleByBatch() {
|
|
||||||
modalStateBatchDelFrom.resetFields(); //重置表单
|
|
||||||
modalState.title =
|
|
||||||
t('views.neUser.sub.batchDelText') + t('views.neUser.sub.subInfo');
|
|
||||||
modalState.openByBatchDel = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 对话框弹出显示为 新增或者修改
|
|
||||||
* @param noticeId 网元id, 不传为新增
|
|
||||||
*/
|
|
||||||
function fnModalVisibleByAdd() {
|
|
||||||
modalStateFrom.resetFields();
|
|
||||||
modalState.title = t('common.addText') + t('views.neUser.sub.subInfo');
|
|
||||||
modalState.openByAdd = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**对话框内表单属性和校验规则 */
|
|
||||||
const modalStateFrom = Form.useForm(
|
|
||||||
modalState.from,
|
|
||||||
reactive({
|
|
||||||
num: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
message: t('views.neUser.sub.numAdd') + t('common.unableNull'),
|
|
||||||
},
|
|
||||||
],
|
|
||||||
imsi: [
|
|
||||||
{
|
|
||||||
required: computed(() => modalState.from.tag === '1'),
|
|
||||||
message: 'IMSI' + t('common.unableNull')
|
|
||||||
},
|
|
||||||
{ min: 15, max: 15, message: t('views.neUser.auth.imsiConfirm') },
|
|
||||||
],
|
|
||||||
msisdn: [
|
|
||||||
{ required: true, message: 'MSISDN' + t('common.unableNull') },
|
|
||||||
],
|
|
||||||
tag: [
|
|
||||||
{ required: true, message: 'TAG' + t('common.unableNull') },
|
|
||||||
],
|
|
||||||
vni: [
|
|
||||||
{ required: true, message: 'VNI' + t('common.unableNull') },
|
|
||||||
],
|
|
||||||
})
|
|
||||||
);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 封装为SM Data
|
|
||||||
*/
|
|
||||||
function transformData(data: any) {
|
|
||||||
let transformedData = data.map((item: any) => {
|
|
||||||
if (!item.sst || !item.smallRows.every((smallRow: any) => smallRow.dnn)) {
|
|
||||||
message.error({
|
|
||||||
content: `${t('views.neUser.sub.smDataArrTip')}`,
|
|
||||||
duration: 3,
|
|
||||||
});
|
|
||||||
throw new Error('sst, sd, and all dnn are required fields');
|
|
||||||
}
|
|
||||||
|
|
||||||
let sstSd = item.sd
|
|
||||||
? item.sst + '-' + item.sd.padStart(6, '0')
|
|
||||||
: item.sst + '-';
|
|
||||||
let smallRowData = item.smallRows
|
|
||||||
.map((smallRow: any) => {
|
|
||||||
let parts = [smallRow.dnn];
|
|
||||||
if (smallRow.smStaticIp) {
|
|
||||||
parts.push(smallRow.smStaticIp);
|
|
||||||
}
|
|
||||||
if (smallRow.msIp) {
|
|
||||||
parts.push(smallRow.msIp);
|
|
||||||
}
|
|
||||||
return parts.join('-');
|
|
||||||
})
|
|
||||||
.join('&');
|
|
||||||
|
|
||||||
return sstSd + '&' + smallRowData;
|
|
||||||
});
|
|
||||||
|
|
||||||
return transformedData;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 拆解SM Data成表单数据
|
|
||||||
*/
|
|
||||||
function transformFormData(data: any) {
|
|
||||||
let allData = data ? data.split(';') : [];
|
|
||||||
let bigIDFlag = 0;
|
|
||||||
let smallIDFlag = 0;
|
|
||||||
|
|
||||||
let transformedData = allData.map((item: any) => {
|
|
||||||
let json: any = {
|
|
||||||
id: bigIDFlag++,
|
|
||||||
sst: item.split('&')[0].split('-')[0],
|
|
||||||
sd: item.split('&')[0].split('-')[1]
|
|
||||||
? item.split('&')[0].split('-')[1]
|
|
||||||
: '',
|
|
||||||
smallRows: [],
|
|
||||||
};
|
|
||||||
item
|
|
||||||
.split('&')
|
|
||||||
.slice(1)
|
|
||||||
.forEach((single: any) => {
|
|
||||||
let smallRowJson: any = {
|
|
||||||
id: smallIDFlag++,
|
|
||||||
dnn: single.split('-')[0],
|
|
||||||
smStaticIp: '',
|
|
||||||
msIp: '',
|
|
||||||
};
|
|
||||||
let smStaticIpArr: any = [];
|
|
||||||
single
|
|
||||||
.split('-')
|
|
||||||
.slice(1)
|
|
||||||
.forEach((dnnParts: any) => {
|
|
||||||
if (dnnParts.includes('/') && dnnParts.includes(':')) {
|
|
||||||
//IPV6 既有/ 又有:
|
|
||||||
smStaticIpArr.push(dnnParts);
|
|
||||||
}
|
|
||||||
if (!dnnParts.includes('/') && !dnnParts.includes(':')) {
|
|
||||||
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(':')) {
|
|
||||||
//msIp 只有/ 没有:
|
|
||||||
smallRowJson.msIp = dnnParts;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
smallRowJson.smStaticIp = smStaticIpArr.join('-');
|
|
||||||
json.smallRows.push(smallRowJson);
|
|
||||||
});
|
|
||||||
return json;
|
|
||||||
});
|
|
||||||
if (transformedData.length > 0) {
|
|
||||||
bigRows.value = transformedData;
|
|
||||||
} else {
|
|
||||||
bigRows.value = [
|
|
||||||
{
|
|
||||||
id: 0,
|
|
||||||
sst: '',
|
|
||||||
sd: '',
|
|
||||||
smallRows: [
|
|
||||||
{
|
|
||||||
id: 0,
|
|
||||||
dnn: '',
|
|
||||||
smStaticIp: '',
|
|
||||||
msIp: '',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 1,
|
|
||||||
dnn: 'ims',
|
|
||||||
smStaticIp: '',
|
|
||||||
msIp: '',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/**
|
/**
|
||||||
* 对话框弹出确认执行函数
|
* 对话框弹出确认执行函数
|
||||||
* 进行表达规则校验
|
* 进行表达规则校验
|
||||||
*/
|
*/
|
||||||
function fnModalOk() {
|
function fnModalOk() {
|
||||||
const from = Object.assign({}, toRaw(modalState.from));
|
const from = Object.assign({}, toRaw(modalState.from));
|
||||||
try {
|
|
||||||
from.smData = transformData(bigRows.value).join(';');
|
|
||||||
} catch (error: any) {
|
|
||||||
console.error(error.message);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
modalStateFrom
|
modalStateFrom
|
||||||
.validate()
|
.validate()
|
||||||
.then(e => {
|
.then(e => {
|
||||||
modalState.confirmLoading = true;
|
modalState.confirmLoading = true;
|
||||||
let ardArr = [0, 0, 0, 0, 0, 0, 0, 0];
|
|
||||||
let hplmnArr = [0, 0, 0, 0, 0, 0, 0, 0];
|
|
||||||
let odbArr = [0, 0, 0, 0, 0, 0, 0, 0, 0];
|
|
||||||
|
|
||||||
from.ard.forEach((item: any) => {
|
|
||||||
ardArr[item] = 1;
|
|
||||||
});
|
|
||||||
|
|
||||||
from.hplmnOdb.forEach((item: any) => {
|
|
||||||
hplmnArr[item] = 1;
|
|
||||||
});
|
|
||||||
|
|
||||||
from.epsOdb.forEach((item: any) => {
|
|
||||||
odbArr[item] = 1;
|
|
||||||
});
|
|
||||||
|
|
||||||
from.epsOdb = '' + parseInt(odbArr.join(''), 2);
|
|
||||||
from.hplmnOdb = '' + parseInt(hplmnArr.join(''), 2);
|
|
||||||
from.ard = '' + parseInt(ardArr.join(''), 2);
|
|
||||||
|
|
||||||
// 4G APN Context List
|
|
||||||
from.apnContext = from.apnContext
|
|
||||||
.map((item: number) => `${item}`.padStart(2, '0'))
|
|
||||||
.join('');
|
|
||||||
|
|
||||||
from.activeTime = `${from.activeTime}`;
|
|
||||||
from.rfspIndex = `${from.rfspIndex}`;
|
|
||||||
from.regTimer = `${from.regTimer}`;
|
|
||||||
from.ueUsageType = `${from.ueUsageType}`;
|
|
||||||
from.neId = queryParams.neId || '-';
|
from.neId = queryParams.neId || '-';
|
||||||
const result = from.num === 1
|
const result = from.num === 1
|
||||||
? addIMSSub(from)//单条新增
|
? addIMSSub(from)//单条新增
|
||||||
@@ -614,60 +368,6 @@ function fnModalOk() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**对话框内批量添加表单属性和校验规则 */
|
|
||||||
const modalStateBatchDelFrom = Form.useForm(
|
|
||||||
modalState.BatchDelForm,
|
|
||||||
reactive({
|
|
||||||
num: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
message: t('views.neUser.sub.numDel') + t('common.unableNull'),
|
|
||||||
},
|
|
||||||
],
|
|
||||||
imsi: [{ required: true, message: 'IMSI' + t('common.unableNull') }],
|
|
||||||
})
|
|
||||||
);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 对话框弹出 批量删除确认执行函数
|
|
||||||
* 进行表达规则校验
|
|
||||||
*/
|
|
||||||
function fnBatchDelModalOk() {
|
|
||||||
modalStateBatchDelFrom
|
|
||||||
.validate()
|
|
||||||
.then(e => {
|
|
||||||
modalState.confirmLoading = true;
|
|
||||||
const from = toRaw(modalState.BatchDelForm);
|
|
||||||
const neId = queryParams.neId || '-';
|
|
||||||
batchDelIMSSub(neId, from.imsi, from.num).then(res => {
|
|
||||||
if (res.code === RESULT_CODE_SUCCESS) {
|
|
||||||
const timerS = Math.ceil(+from.num / 1500) + 1;
|
|
||||||
notification.success({
|
|
||||||
message: modalState.title,
|
|
||||||
description: t('common.operateOk'),
|
|
||||||
duration: timerS,
|
|
||||||
});
|
|
||||||
setTimeout(() => {
|
|
||||||
modalState.openByBatchDel = false;
|
|
||||||
modalState.confirmLoading = false;
|
|
||||||
modalStateBatchDelFrom.resetFields();
|
|
||||||
fnGetList(1);
|
|
||||||
}, timerS * 1000);
|
|
||||||
} else {
|
|
||||||
modalState.confirmLoading = false;
|
|
||||||
notification.error({
|
|
||||||
message: modalState.title,
|
|
||||||
description: res.msg,
|
|
||||||
duration: 3,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
})
|
|
||||||
.catch(e => {
|
|
||||||
message.error(t('common.errorFields', { num: e.errorFields.length }), 3);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 对话框弹出关闭执行函数
|
* 对话框弹出关闭执行函数
|
||||||
* 进行表达规则校验
|
* 进行表达规则校验
|
||||||
@@ -675,38 +375,36 @@ function fnBatchDelModalOk() {
|
|||||||
function fnModalCancel() {
|
function fnModalCancel() {
|
||||||
modalState.openByAdd = false;
|
modalState.openByAdd = false;
|
||||||
modalStateFrom.resetFields();
|
modalStateFrom.resetFields();
|
||||||
bigRows.value = [
|
|
||||||
{
|
|
||||||
id: 0,
|
|
||||||
sst: '',
|
|
||||||
sd: '',
|
|
||||||
smallRows: [
|
|
||||||
{
|
|
||||||
id: 0,
|
|
||||||
dnn: '',
|
|
||||||
smStaticIp: '',
|
|
||||||
msIp: '',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 1,
|
|
||||||
dnn: 'ims',
|
|
||||||
smStaticIp: '',
|
|
||||||
msIp: '',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
];
|
|
||||||
smallRowIndexCounter = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**对话框内表单属性和校验规则 */
|
||||||
* 批量删除对话框弹出关闭执行函数
|
const modalStateFrom = Form.useForm(
|
||||||
* 进行表达规则校验
|
modalState.from,
|
||||||
*/
|
reactive({
|
||||||
function fnBatchDelModalCancel() {
|
num: [
|
||||||
modalState.openByBatchDel = false;
|
{
|
||||||
modalStateBatchDelFrom.resetFields();
|
required: true,
|
||||||
}
|
message: t('views.neUser.sub.numAdd') + t('common.unableNull'),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
imsi: [
|
||||||
|
{
|
||||||
|
required: computed(() => modalState.from.tag === '1'),
|
||||||
|
message: 'IMSI' + t('common.unableNull')
|
||||||
|
},
|
||||||
|
{ min: 15, max: 15, message: t('views.neUser.auth.imsiConfirm') },
|
||||||
|
],
|
||||||
|
msisdn: [
|
||||||
|
{ required: true, message: 'MSISDN' + t('common.unableNull') },
|
||||||
|
],
|
||||||
|
tag: [
|
||||||
|
{ required: true, message: 'TAG' + t('common.unableNull') },
|
||||||
|
],
|
||||||
|
vni: [
|
||||||
|
{ required: true, message: 'VNI' + t('common.unableNull') },
|
||||||
|
],
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* UDM签约用户删除
|
* UDM签约用户删除
|
||||||
@@ -1014,41 +712,6 @@ function fnModalUploadImportUpload(file: File) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function addSmallRow(bigIndex: any) {
|
|
||||||
const newSmallRow = {
|
|
||||||
id: ++smallRowIndexCounter,
|
|
||||||
dnn: '',
|
|
||||||
smStaticIp: '',
|
|
||||||
msIp: '',
|
|
||||||
};
|
|
||||||
bigRows.value[bigIndex].smallRows.push(newSmallRow);
|
|
||||||
}
|
|
||||||
|
|
||||||
function addBigRow() {
|
|
||||||
const newBigRow = {
|
|
||||||
id: bigRows.value.length,
|
|
||||||
sst: '',
|
|
||||||
sd: '',
|
|
||||||
smallRows: [
|
|
||||||
{
|
|
||||||
id: 0,
|
|
||||||
dnn: '',
|
|
||||||
smStaticIp: '',
|
|
||||||
msIp: '',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
};
|
|
||||||
bigRows.value.push(newBigRow);
|
|
||||||
}
|
|
||||||
|
|
||||||
function delDNN(sonIndex: any, bigIndex: any) {
|
|
||||||
bigRows.value[bigIndex].smallRows.splice(sonIndex, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
function delBigRow(bigIndex: any) {
|
|
||||||
bigRows.value.splice(bigIndex, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
function fnTenantNameFocus() {
|
function fnTenantNameFocus() {
|
||||||
Promise.allSettled([listTenant({ parentId: 0 })]).then(resArr => {
|
Promise.allSettled([listTenant({ parentId: 0 })]).then(resArr => {
|
||||||
if (resArr[0].status === 'fulfilled') {
|
if (resArr[0].status === 'fulfilled') {
|
||||||
@@ -1071,6 +734,104 @@ function fnTenantNameFocus() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 对话框弹出显示为 新增
|
||||||
|
*/
|
||||||
|
function fnModalVisibleByAdd() {
|
||||||
|
modalState.openByAdd = true;
|
||||||
|
modalState.title = t('common.addText') + t('views.neUser.sub.subInfo');
|
||||||
|
modalState.from = {
|
||||||
|
imsi: '',
|
||||||
|
msisdn: '',
|
||||||
|
tag: '0',
|
||||||
|
vni: '',
|
||||||
|
num: 1,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 对话框弹出显示为 批量删除
|
||||||
|
*/
|
||||||
|
function fnModalVisibleByBatch() {
|
||||||
|
modalState.openByBatchDel = true;
|
||||||
|
modalState.title = t('views.neUser.auth.batchDelText');
|
||||||
|
modalState.BatchDelForm = {
|
||||||
|
num: 1,
|
||||||
|
imsi: '',
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除对话框确认
|
||||||
|
*/
|
||||||
|
function fnBatchDelModalOk() {
|
||||||
|
modalStateBatchDelFrom
|
||||||
|
.validate()
|
||||||
|
.then(() => {
|
||||||
|
modalState.confirmLoading = true;
|
||||||
|
const hide = message.loading(t('common.loading'), 0);
|
||||||
|
const neId = queryParams.neId;
|
||||||
|
if (!neId) return;
|
||||||
|
|
||||||
|
batchDelIMSSub(neId, modalState.BatchDelForm.imsi, modalState.BatchDelForm.num)
|
||||||
|
.then(res => {
|
||||||
|
if (res.code === RESULT_CODE_SUCCESS) {
|
||||||
|
const timerS = Math.max(
|
||||||
|
Math.ceil(modalState.BatchDelForm.num / 500),
|
||||||
|
`${modalState.BatchDelForm.num}`.length * 5
|
||||||
|
);
|
||||||
|
notification.success({
|
||||||
|
message: modalState.title,
|
||||||
|
description: t('common.operateOk'),
|
||||||
|
duration: timerS,
|
||||||
|
});
|
||||||
|
setTimeout(() => {
|
||||||
|
fnGetList(1);
|
||||||
|
}, timerS * 1000);
|
||||||
|
} else {
|
||||||
|
notification.error({
|
||||||
|
message: modalState.title,
|
||||||
|
description: res.msg,
|
||||||
|
duration: 3,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.finally(() => {
|
||||||
|
hide();
|
||||||
|
fnBatchDelModalCancel();
|
||||||
|
modalState.confirmLoading = false;
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.catch(e => {
|
||||||
|
message.error(t('common.errorFields', { num: e.errorFields.length }), 3);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除对话框取消
|
||||||
|
*/
|
||||||
|
function fnBatchDelModalCancel() {
|
||||||
|
modalState.openByBatchDel = false;
|
||||||
|
modalStateBatchDelFrom.resetFields();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**批量删除对话框内表单属性和校验规则 */
|
||||||
|
const modalStateBatchDelFrom = Form.useForm(
|
||||||
|
modalState.BatchDelForm,
|
||||||
|
reactive({
|
||||||
|
imsi: [
|
||||||
|
{ required: true, message: 'IMSI' + t('common.unableNull') },
|
||||||
|
{ min: 15, max: 15, message: t('views.neUser.auth.imsiConfirm') },
|
||||||
|
],
|
||||||
|
num: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: t('views.neUser.sub.numDel') + t('common.unableNull'),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
// 获取网元网元列表
|
// 获取网元网元列表
|
||||||
useNeInfoStore()
|
useNeInfoStore()
|
||||||
@@ -1152,6 +913,18 @@ onMounted(() => {
|
|||||||
:placeholder="t('common.inputPlease')"></a-input>
|
: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-form-item
|
||||||
|
:label="t('views.neUser.sub.tenantName')"
|
||||||
|
name="tenantName"
|
||||||
|
>
|
||||||
|
<a-auto-complete
|
||||||
|
v-model:value="queryParams.tenantName"
|
||||||
|
:options="modalStateFromOption.tenantName"
|
||||||
|
@focus="fnTenantNameFocus"
|
||||||
|
></a-auto-complete>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
<a-col :lg="6" :md="12" :xs="24">
|
<a-col :lg="6" :md="12" :xs="24">
|
||||||
<a-form-item label="TAG" name="tag">
|
<a-form-item label="TAG" name="tag">
|
||||||
<a-select
|
<a-select
|
||||||
@@ -1165,18 +938,6 @@ onMounted(() => {
|
|||||||
/>
|
/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :lg="6" :md="12" :xs="24">
|
|
||||||
<a-form-item
|
|
||||||
:label="t('views.neUser.sub.tenantName')"
|
|
||||||
name="tenantName"
|
|
||||||
>
|
|
||||||
<a-auto-complete
|
|
||||||
v-model:value="queryParams.tenantName"
|
|
||||||
:options="modalStateFromOption.tenantName"
|
|
||||||
@focus="fnTenantNameFocus"
|
|
||||||
></a-auto-complete>
|
|
||||||
</a-form-item>
|
|
||||||
</a-col>
|
|
||||||
<a-col :lg="6" :md="12" :xs="24">
|
<a-col :lg="6" :md="12" :xs="24">
|
||||||
<a-form-item>
|
<a-form-item>
|
||||||
<a-space :size="8">
|
<a-space :size="8">
|
||||||
@@ -1530,20 +1291,6 @@ onMounted(() => {
|
|||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</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>
|
|
||||||
</a-form>
|
</a-form>
|
||||||
</ProModal>
|
</ProModal>
|
||||||
<!-- 批量删除-->
|
<!-- 批量删除-->
|
||||||
|
|||||||
Reference in New Issue
Block a user