|
|
|
@ -3,9 +3,6 @@ |
|
|
|
<template #[item]="data" v-for="item in Object.keys($slots)"> |
|
|
|
<slot :name="item" v-bind="data || {}"></slot> |
|
|
|
</template> |
|
|
|
<template #suffixIcon v-if="loading"> |
|
|
|
<LoadingOutlined spin /> |
|
|
|
</template> |
|
|
|
</a-tree> |
|
|
|
</template> |
|
|
|
|
|
|
|
@ -16,11 +13,11 @@ |
|
|
|
import { isArray, isFunction } from '/@/utils/is'; |
|
|
|
import { get } from 'lodash-es'; |
|
|
|
import { propTypes } from '/@/utils/propTypes'; |
|
|
|
import { LoadingOutlined } from '@ant-design/icons-vue'; |
|
|
|
import { DataNode } from 'ant-design-vue/es/tree'; |
|
|
|
|
|
|
|
export default defineComponent({ |
|
|
|
name: 'ApiTree', |
|
|
|
components: { ATree: Tree, LoadingOutlined }, |
|
|
|
components: { ATree: Tree }, |
|
|
|
props: { |
|
|
|
api: { type: Function as PropType<(arg?: Recordable<any>) => Promise<Recordable<any>>> }, |
|
|
|
params: { type: Object }, |
|
|
|
@ -30,7 +27,7 @@ |
|
|
|
}, |
|
|
|
emits: ['options-change', 'change'], |
|
|
|
setup(props, { attrs, emit }) { |
|
|
|
const treeData = ref<Recordable<any>[]>([]); |
|
|
|
const treeData = ref<DataNode[]>([]); |
|
|
|
const isFirstLoaded = ref<Boolean>(false); |
|
|
|
const loading = ref(false); |
|
|
|
const getAttrs = computed(() => { |
|
|
|
|