From 84ab75b475a4c0bcaf12754892dbb6df62acf52a Mon Sep 17 00:00:00 2001 From: YunaiV Date: Thu, 30 Mar 2023 09:35:35 +0800 Subject: [PATCH] =?UTF-8?q?REVIEW=20=E7=A7=9F=E6=88=B7=E5=A5=97=E9=A4=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tenantPackage/TenantPackageForm.vue | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/src/views/system/tenantPackage/TenantPackageForm.vue b/src/views/system/tenantPackage/TenantPackageForm.vue index 089dd55c..e96ff7db 100644 --- a/src/views/system/tenantPackage/TenantPackageForm.vue +++ b/src/views/system/tenantPackage/TenantPackageForm.vue @@ -33,7 +33,6 @@ ([]) // 树形结构数据 -const menuCheckStrictly = ref(false) // 在显示复选框的情况下,是否严格的遵循父子不互相关联的做法,默认为 true const menuExpand = ref(false) // 展开/折叠 const treeRef = ref>() // 树组件Ref const treeNodeAll = ref(false) // 全选/全不选 @@ -102,6 +100,8 @@ const open = async (type: string, id?: number) => { modelTitle.value = t('action.' + type) formType.value = type resetForm() + // 加载 Menu 列表。注意,必须放在前面,不然下面 setChecked 没数据节点 + menuOptions.value = handleTree(await MenuApi.getSimpleMenusList()) // 修改时,设置数据 if (id) { formLoading.value = true @@ -110,15 +110,13 @@ const open = async (type: string, id?: number) => { // 设置选中 formData.value = res // 设置选中 - res.menuIds?.forEach((item: any) => { - treeRef.value?.setChecked(item, true, false) + res.menuIds.forEach((menuId: number) => { + treeRef.value.setChecked(menuId, true, false) }) } finally { formLoading.value = false } } - // 加载Menu列表 - menuOptions.value = handleTree(await MenuApi.getSimpleMenusList()) } defineExpose({ open }) // 提供 open 方法,用于打开弹窗 @@ -134,8 +132,8 @@ const submitForm = async () => { try { const data = formData.value as unknown as TenantPackageApi.TenantPackageVO data.menuIds = [ - ...(treeRef.value!.getCheckedKeys(false) as unknown as Array), - ...(treeRef.value!.getHalfCheckedKeys() as unknown as Array) + ...(treeRef.value!.getCheckedKeys(false) as unknown as Array), // 获得当前选中节点 + ...(treeRef.value!.getHalfCheckedKeys() as unknown as Array) // 获得半选中的父节点 ] if (formType.value === 'create') { await TenantPackageApi.createTenantPackage(data) @@ -154,6 +152,10 @@ const submitForm = async () => { /** 重置表单 */ const resetForm = () => { + // 重置选项 + treeNodeAll.value = false + menuExpand.value = false + // 重置表单 formData.value = { id: null, name: null, @@ -162,10 +164,6 @@ const resetForm = () => { status: CommonStatusEnum.ENABLE } treeRef.value?.setCheckedNodes([]) - treeNodeAll.value = false - menuExpand.value = false - // 设置为非严格,继续使用半选中 - menuCheckStrictly.value = false formRef.value?.resetFields() } @@ -173,6 +171,7 @@ const resetForm = () => { const handleCheckedTreeNodeAll = () => { treeRef.value!.setCheckedNodes(treeNodeAll.value ? menuOptions.value : []) } + // 全部(展开/折叠)TODO:for循环全部展开和折叠树组件数据 const handleCheckedTreeExpand = () => { const nodes = treeRef.value?.store.nodesMap