feat:neInfo修改新增和编辑
This commit is contained in:
@@ -21,6 +21,10 @@ const props = defineProps({
|
|||||||
type: String,
|
type: String,
|
||||||
default: '',
|
default: '',
|
||||||
},
|
},
|
||||||
|
neListData: {
|
||||||
|
type: Array,
|
||||||
|
default: () => [],
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
/**字典数据 */
|
/**字典数据 */
|
||||||
@@ -37,6 +41,52 @@ let dict: {
|
|||||||
neHostAuthMode: [],
|
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'),
|
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: [
|
ip: [
|
||||||
{
|
{
|
||||||
required: true,
|
required: true,
|
||||||
@@ -215,6 +253,13 @@ function fnModalVisibleByEdit(editId: string) {
|
|||||||
if (!editId) {
|
if (!editId) {
|
||||||
modalStateFrom.resetFields();
|
modalStateFrom.resetFields();
|
||||||
modalState.title = t('views.ne.neInfo.addTitle');
|
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;
|
modalState.openByEdit = true;
|
||||||
} else {
|
} else {
|
||||||
if (modalState.confirmLoading) return;
|
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 */
|
/**表单修改网元IP */
|
||||||
function fnNeIPChange(e: any) {
|
function fnNeIPChange(e: any) {
|
||||||
@@ -439,48 +483,22 @@ onMounted(() => {
|
|||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
|
|
||||||
<a-row>
|
<!-- NE Name 占满整行 -->
|
||||||
<a-col :lg="12" :md="12" :xs="24">
|
<a-form-item
|
||||||
<a-form-item
|
:label="t('views.ne.common.neName')"
|
||||||
:label="t('views.ne.common.neId')"
|
name="neName"
|
||||||
name="neId"
|
v-bind="modalStateFrom.validateInfos.neName"
|
||||||
v-bind="modalStateFrom.validateInfos.neId"
|
:label-col="{ span: 3 }"
|
||||||
>
|
:labelWrap="true"
|
||||||
<a-input
|
>
|
||||||
v-model:value="modalState.from.neId"
|
<a-input
|
||||||
allow-clear
|
v-model:value="modalState.from.neName"
|
||||||
:placeholder="t('common.inputPlease')"
|
allow-clear
|
||||||
:maxlength="32"
|
:placeholder="t('common.inputPlease')"
|
||||||
@change="fnNeIdChange"
|
:maxlength="64"
|
||||||
:disabled="!!modalState.from.id"
|
>
|
||||||
>
|
</a-input>
|
||||||
<template #prefix>
|
</a-form-item>
|
||||||
<a-tooltip placement="topLeft">
|
|
||||||
<template #title>
|
|
||||||
{{ t('views.ne.common.neIdTip') }}
|
|
||||||
</template>
|
|
||||||
<InfoCircleOutlined style="opacity: 0.45; color: inherit" />
|
|
||||||
</a-tooltip>
|
|
||||||
</template>
|
|
||||||
</a-input>
|
|
||||||
</a-form-item>
|
|
||||||
</a-col>
|
|
||||||
<a-col :lg="12" :md="12" :xs="24">
|
|
||||||
<a-form-item
|
|
||||||
:label="t('views.ne.common.neName')"
|
|
||||||
name="neName"
|
|
||||||
v-bind="modalStateFrom.validateInfos.neName"
|
|
||||||
>
|
|
||||||
<a-input
|
|
||||||
v-model:value="modalState.from.neName"
|
|
||||||
allow-clear
|
|
||||||
:placeholder="t('common.inputPlease')"
|
|
||||||
:maxlength="64"
|
|
||||||
>
|
|
||||||
</a-input>
|
|
||||||
</a-form-item>
|
|
||||||
</a-col>
|
|
||||||
</a-row>
|
|
||||||
|
|
||||||
<a-row>
|
<a-row>
|
||||||
<a-col :lg="12" :md="12" :xs="24">
|
<a-col :lg="12" :md="12" :xs="24">
|
||||||
@@ -536,31 +554,6 @@ onMounted(() => {
|
|||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
|
|
||||||
<a-form-item
|
|
||||||
:label="t('views.ne.common.rmUid')"
|
|
||||||
name="rmUid"
|
|
||||||
v-bind="modalStateFrom.validateInfos.rmUid"
|
|
||||||
:label-col="{ span: 3 }"
|
|
||||||
:labelWrap="true"
|
|
||||||
>
|
|
||||||
<a-input
|
|
||||||
v-model:value="modalState.from.rmUid"
|
|
||||||
allow-clear
|
|
||||||
:placeholder="t('common.inputPlease')"
|
|
||||||
:maxlength="40"
|
|
||||||
>
|
|
||||||
<template #prefix>
|
|
||||||
<a-tooltip placement="topLeft">
|
|
||||||
<template #title>
|
|
||||||
<div>
|
|
||||||
{{ t('views.ne.common.rmUidTip') }}
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
<InfoCircleOutlined style="opacity: 0.45; color: inherit" />
|
|
||||||
</a-tooltip>
|
|
||||||
</template>
|
|
||||||
</a-input>
|
|
||||||
</a-form-item>
|
|
||||||
|
|
||||||
<a-row>
|
<a-row>
|
||||||
<a-col :lg="12" :md="12" :xs="24">
|
<a-col :lg="12" :md="12" :xs="24">
|
||||||
|
|||||||
@@ -908,6 +908,7 @@ onMounted(() => {
|
|||||||
<EditModal
|
<EditModal
|
||||||
v-model:open="modalState.openByEdit"
|
v-model:open="modalState.openByEdit"
|
||||||
:edit-id="modalState.editId"
|
:edit-id="modalState.editId"
|
||||||
|
:ne-list-data="tableState.data"
|
||||||
@ok="fnModalEditOk"
|
@ok="fnModalEditOk"
|
||||||
@cancel="fnModalEditCancel"
|
@cancel="fnModalEditCancel"
|
||||||
></EditModal>
|
></EditModal>
|
||||||
|
|||||||
Reference in New Issue
Block a user