<template>
  <div class="m-4 mr-0 overflow-hidden bg-white">
      <BasicTree ref="asyncExpandTreeRef" title="部门列表" toolbar search
      treeWrapperClassName="h-[calc(100%-35px)] overflow-auto" loadData :actionList="actionList"
      :renderIcon="createIcon" :clickRowToExpand="false" :treeData="treeData" :fieldNames="{ key: 'id', title: 'name' }"
      :defaultExpandAll="true" @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();
  });
  defineExpose({
		fetch
	})
</script>