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(() => {