vue-vben-admin/src/components/SelectPos/DeptTree.vue

36 lines
1.0 KiB
Vue

<template>
<div class="m-4 mr-0 overflow-hidden bg-white">
<BasicTree title="部门列表" ref="asyncExpandTreeRef" toolbar search treeWrapperClassName="h-[calc(100%-35px)] overflow-auto" loadData
:clickRowToExpand="false" :treeData="treeData" :fieldNames="{ key: 'id', title: 'name' }"
@select="handleSelect" />
</div>
</template>
<script lang="ts" setup>
import { onMounted, ref ,nextTick,unref} from 'vue';
import { BasicTree, TreeItem } from '@/components/Tree';
import { getDeptList } from '@/api/demo/system';
defineOptions({ name: 'DeptTree' });
const emit = defineEmits(['select']);
const treeData = ref < TreeItem[] > ([]);
const asyncExpandTreeRef = ref < Nullable < TreeActionType >> (null);
async function fetch() {
treeData.value = (await getDeptList()) as unknown as TreeItem[];
// 展开全部
nextTick(() => {
unref(asyncExpandTreeRef)?.expandAll(true);
});
}
function handleSelect(keys) {
emit('select', keys[0]);
}
onMounted(() => {
fetch();
});
</script>