From d85889b3763850c76129c3dc74c9fc771fc301b3 Mon Sep 17 00:00:00 2001 From: zhongzm Date: Tue, 9 Sep 2025 19:13:30 +0800 Subject: [PATCH] =?UTF-8?q?feat:neInfo=E4=BF=AE=E6=94=B9=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E5=92=8C=E7=BC=96=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/ne/neInfo/components/EditModal.vue | 165 +++++++++---------- src/views/ne/neInfo/index.vue | 1 + 2 files changed, 80 insertions(+), 86 deletions(-) diff --git a/src/views/ne/neInfo/components/EditModal.vue b/src/views/ne/neInfo/components/EditModal.vue index 27e30823..9d031c7d 100644 --- a/src/views/ne/neInfo/components/EditModal.vue +++ b/src/views/ne/neInfo/components/EditModal.vue @@ -21,6 +21,10 @@ const props = defineProps({ type: String, default: '', }, + neListData: { + type: Array, + default: () => [], + }, }); /**字典数据 */ @@ -37,6 +41,52 @@ let dict: { neHostAuthMode: [], }); +/** + * 自动分配下一个可用的 NE ID + * @param neType 网元类型 + * @returns 下一个可用的 NE ID + */ +function generateNextNeId(neType: string): string { + const neListData = props.neListData as any[]; + + // 找到对应网元类型的分组 + const targetGroup = neListData.find(group => group.neType === neType); + + if (!targetGroup || !targetGroup.childrenData) { + return '001'; // 如果没有找到该类型的网元,返回001 + } + + // 获取该类型下所有网元的ID + const existingIds = targetGroup.childrenData + .map((item: any) => item.neId) + .filter((id: string) => /^\d+$/.test(id)) // 只保留纯数字ID + .map((id: string) => parseInt(id, 10)) + .sort((a: number, b: number) => a - b); + + // 找到下一个可用ID + let nextId = 1; + for (const id of existingIds) { + if (id === nextId) { + nextId++; + } else { + break; + } + } + + // 格式化为三位数字符串 + return nextId.toString().padStart(3, '0'); +} + +/** + * 生成 Resource Unique ID + * @param neType 网元类型 + * @param neId 网元ID + * @returns Resource Unique ID + */ +function generateResourceUniqueId(neType: string, neId: string): string { + return `4400HX${neType}${neId}`; +} + /** * 测试主机连接 */ @@ -158,18 +208,6 @@ const modalStateFrom = Form.useForm( message: t('views.ne.common.neTypePlease'), }, ], - neId: [ - { - required: true, - message: t('views.ne.common.neIdPlease'), - }, - ], - rmUid: [ - { - required: true, - message: t('views.ne.common.rmUidPlease'), - }, - ], ip: [ { required: true, @@ -215,6 +253,13 @@ function fnModalVisibleByEdit(editId: string) { if (!editId) { modalStateFrom.resetFields(); modalState.title = t('views.ne.neInfo.addTitle'); + + // 新增时自动分配 neId 和 rmUid + const defaultNeType = modalState.from.neType; + const newNeId = generateNextNeId(defaultNeType); + modalState.from.neId = newNeId; + modalState.from.rmUid = generateResourceUniqueId(defaultNeType, newNeId); + modalState.openByEdit = true; } else { if (modalState.confirmLoading) return; @@ -321,15 +366,14 @@ function fnNeTypeChange(v: any) { }); } - modalState.from.rmUid = `4400HX${v}${modalState.from.neId}`; // 4400HX1AMF001 + // 如果是新增模式,自动分配 neId 和 rmUid + if (!modalState.from.id) { + const newNeId = generateNextNeId(v); + modalState.from.neId = newNeId; + modalState.from.rmUid = generateResourceUniqueId(v, newNeId); + } } -/**表单修改网元neId */ -function fnNeIdChange(e: any) { - const v = e.target.value; - if (v.length < 1) return; - modalState.from.rmUid = `4400HX${modalState.from.neType}${v}`; // 4400HX1AMF001 -} /**表单修改网元IP */ function fnNeIPChange(e: any) { @@ -439,48 +483,22 @@ onMounted(() => { - - - - - - - - - - - - - - - + + + + + @@ -536,31 +554,6 @@ onMounted(() => { - - - - - diff --git a/src/views/ne/neInfo/index.vue b/src/views/ne/neInfo/index.vue index a6818935..8b35696d 100644 --- a/src/views/ne/neInfo/index.vue +++ b/src/views/ne/neInfo/index.vue @@ -908,6 +908,7 @@ onMounted(() => {