From bbda803e9062e45a7a4fa905d3308d992f5833f8 Mon Sep 17 00:00:00 2001 From: xlsea Date: Tue, 10 Jun 2025 11:05:50 +0800 Subject: [PATCH] =?UTF-8?q?fix(components):=20=E4=BF=AE=E5=A4=8D=E8=8F=9C?= =?UTF-8?q?=E5=8D=95=E6=A0=91=E9=80=89=E6=8B=A9=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/custom/menu-tree.vue | 12 ++++++++++-- src/views/system/role/index.vue | 4 ++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/components/custom/menu-tree.vue b/src/components/custom/menu-tree.vue index 721204aa..ec5fa602 100644 --- a/src/components/custom/menu-tree.vue +++ b/src/components/custom/menu-tree.vue @@ -90,16 +90,23 @@ function handleCheckedTreeNodeAll(checked: boolean) { checkedKeys.value = []; } -function getCheckedMenuIds() { +function getCheckedMenuIds(isCascade: boolean = false) { const menuIds = menuTreeRef.value?.getCheckedData()?.keys as string[]; const indeterminateData = menuTreeRef.value?.getIndeterminateData(); - if (cascade.value) { + if (cascade.value || isCascade) { const parentIds: string[] = indeterminateData?.keys.filter(item => !menuIds?.includes(String(item))) as string[]; menuIds?.push(...parentIds); } return menuIds; } +watch(cascade, () => { + if (cascade.value) { + return; + } + checkedKeys.value = getCheckedMenuIds(true); +}); + defineExpose({ getCheckedMenuIds, refresh: getMenuList @@ -121,6 +128,7 @@ defineExpose({ 父子联动 + {{ checkedKeys }} { return {dataScopeRecord[row.dataScope]}; } @@ -113,7 +113,7 @@ const { key: 'operate', title: $t('common.operate'), align: 'center', - width: 220, + width: 230, render: row => { if (row.roleId === 1) return null;