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;