From 344163a1e4eea8f08ef1085db431c1a7a61911ca Mon Sep 17 00:00:00 2001 From: lzq <2495532633@qq.com> Date: Wed, 10 Dec 2025 17:38:20 +0800 Subject: [PATCH] 1 --- src/pages/sys/menus/Menus.vue | 49 ++++++++++++++++++++++++----------- 1 file changed, 34 insertions(+), 15 deletions(-) diff --git a/src/pages/sys/menus/Menus.vue b/src/pages/sys/menus/Menus.vue index fe50bd5..dd2d1e2 100644 --- a/src/pages/sys/menus/Menus.vue +++ b/src/pages/sys/menus/Menus.vue @@ -17,14 +17,21 @@ 新建 - - + @@ -84,12 +91,14 @@ import { elIcons } from '@/common/element/element.ts' import MenuForm from '@/pages/sys/menus/MenuForm.vue' import Strings from '@/common/utils/strings.ts' import AIcon from '@/components/a-icon/AIcon.tsx' +import type { TableInstance } from 'element-plus' const tableData = ref([]) const searchForm = reactive({}) const searching = ref(false) const showSearchForm = ref(true) const menuFormIns = useTemplateRef>('menuForm') +const dataTableIns = useTemplateRef>('dataTable') const deling = ref(false) function showDialog(data?: MenuTypes.MenuForm) { @@ -131,6 +140,7 @@ function listAll() { tableData.value = [] tableData.value = res.data?.map(it => { it.hasChildren = true + it.children = [] return it }) ?? [] }) @@ -139,18 +149,27 @@ function listAll() { }) } -function treeLoad(row: MenuTypes.SysMenu, _: any, resolve: (data: MenuTypes.SysMenu[]) => void) { +function treeLoad(row: MenuTypes.SysMenu, expanded: boolean, resolve: (data: MenuTypes.SysMenu[]) => void) { + if (resolve == null && !expanded) return searching.value = true - MenuApi.listAll({...searchForm, pid: row.id}) - .then(res => { - resolve(res.data?.map(it => { - it.hasChildren = true - return it - }) ?? []) - }) - .finally(() => { - searching.value = false - }) + MenuApi.listAll({...searchForm, pid: row.id}) + .then(res => { + if (resolve!=null){ + resolve(res.data?.map(it => { + it.hasChildren = true + return it + }) ?? []) + } else { + dataTableIns.value.updateKeyChildren(row.id,res.data?.map(it => { + it.hasChildren = true + it.children = [] + return it + }) ?? []) + } + }) + .finally(() => { + searching.value = false + }) } onMounted(() => {