12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- <script setup lang="ts">
- import { ref, nextTick } from "vue";
- import { httpList } from "/@/api/system/menuOperator";
- import { ElTree } from "element-plus";
- import type { IMenuTree } from "../types";
- const defaultProps = {
- label: "menu_name",
- children: "child"
- };
- const emit = defineEmits(["treeSelectChange", "initTableData"]);
- const treeData = ref<Array<IMenuTree>>([]);
- const treeRef = ref<InstanceType<typeof ElTree>>(null);
- const defaultExpandedKeys = ref<Array<string>>([]);
- //获取菜单树列表
- async function initMenuList() {
- const { data: list } = await httpList({});
- treeData.value = list;
- const menu = list[0];
- const page = menu.child[0];
- defaultExpandedKeys.value = [menu.id];
- //默认选中节点
- nextTick(() => treeRef.value.setCurrentKey(page.id));
- emit("initTableData", page.id);
- }
- //选择节点
- function handleSelect(node) {
- emit("treeSelectChange", node);
- }
- initMenuList();
- </script>
- <template>
- <div
- class="max-w-280px w-[280px] h-full min-h-780px bg-white p-2 mt-5px mr-10px"
- >
- <div class="flex justify-between mb-1 font-bold">
- <h1>菜单列表</h1>
- </div>
- <el-tree
- ref="treeRef"
- accordion
- node-key="id"
- highlight-current
- :props="defaultProps"
- :data="treeData"
- :default-expanded-keys="defaultExpandedKeys"
- @current-change="handleSelect"
- />
- </div>
- </template>
|