From cd76de78bfa6049f57d51edf29f1a4bacaf0bead Mon Sep 17 00:00:00 2001 From: liyongde <1419499670@qq.com> Date: Tue, 20 Jan 2026 17:39:09 +0800 Subject: [PATCH] =?UTF-8?q?opt=EF=BC=9A=E6=A0=91=E5=BD=A2=E7=BB=93?= =?UTF-8?q?=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pmm/project/request/addRequestDialog.vue | 29 +++++++++++-------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/nl-vue/src/views/pmm/project/request/addRequestDialog.vue b/nl-vue/src/views/pmm/project/request/addRequestDialog.vue index dd33fae..7132161 100644 --- a/nl-vue/src/views/pmm/project/request/addRequestDialog.vue +++ b/nl-vue/src/views/pmm/project/request/addRequestDialog.vue @@ -158,7 +158,7 @@ startTime: '', endTime: '', isTop: true, - parentDetailId: 0 + parentDetailId: undefined }) const formData = ref(defaultForm()) @@ -173,7 +173,7 @@ parentDetailId: [ { validator: async (_rule, value) => { - if (formData.value.isTop === false && !value) { + if (formData.value.isTop === false && (value === undefined || value === null || value === '')) { return Promise.reject(new Error('请选择上级类目')) } return Promise.resolve() @@ -183,12 +183,16 @@ ] } + const normalizeParentDetailId = (val) => { + if (val === undefined || val === null || val === '' || val === 0 || val === '0') { + return undefined + } + return val + } + const toTreeNode = (item = {}) => { const id = item.detailId - const titleParts = [] - if (item.modelName) titleParts.push(item.modelName) - if (item.modelDetail) titleParts.push(item.modelDetail) - const title = titleParts.length ? titleParts.join(' - ') : String(id || '') + const title = item.modelName ? item.modelName : String(id || '') return { title, value: id, @@ -241,7 +245,7 @@ const onTopChange = async () => { if (formData.value.isTop === true) { - formData.value.parentDetailId = 0 + formData.value.parentDetailId = undefined parentTreeData.value = [] } else { // 顶级新增同级(parentId = 0)加载根节点 @@ -253,11 +257,12 @@ const onOpen = async (payload = {}) => { open.value = true formData.value = Object.assign(defaultForm(), cloneDeep(payload || {})) - if (typeof formData.value.isTop !== 'boolean') { - formData.value.isTop = !formData.value.parentDetailId - } - if (formData.value.isTop) { - formData.value.parentDetailId = 0 + formData.value.parentDetailId = normalizeParentDetailId(formData.value.parentDetailId) + if (formData.value.parentDetailId === undefined) { + // 同级新增且传入 parentDetailId 为 0/'0' 时也视为顶级 + formData.value.isTop = true + } else if (typeof formData.value.isTop !== 'boolean') { + formData.value.isTop = false } if (formData.value.isTop === false) { await loadRootTree()