feat: 优化ApiTreeSelect参数,可自定义value等
parent
9c142656f1
commit
2c9f11bce3
|
@ -1,5 +1,5 @@
|
|||
<script lang="ts" setup>
|
||||
import { computed, onMounted, ref, unref, useAttrs, watch } from 'vue'
|
||||
import { computed, onMounted, ref, unref, useAttrs, watch, watchEffect } from 'vue'
|
||||
import { TreeSelect } from 'ant-design-vue'
|
||||
import { get, set } from 'lodash-es'
|
||||
import { LoadingOutlined } from '@ant-design/icons-vue'
|
||||
|
@ -14,6 +14,9 @@ const props = defineProps({
|
|||
params: { type: Object },
|
||||
immediate: { type: Boolean, default: true },
|
||||
resultField: propTypes.string.def(''),
|
||||
labelField: propTypes.string.def('title'),
|
||||
valueField: propTypes.string.def('value'),
|
||||
childrenField: propTypes.string.def('children'),
|
||||
handleTree: { type: String, default: '' },
|
||||
parentId: { type: Number, default: 0 },
|
||||
parentLabel: { type: String, default: '' },
|
||||
|
@ -32,10 +35,20 @@ const getAttrs = computed(() => {
|
|||
}
|
||||
})
|
||||
|
||||
const fieldNames = {
|
||||
children: props.childrenField,
|
||||
value: props.valueField,
|
||||
label: props.labelField,
|
||||
}
|
||||
|
||||
function handleChange(...args) {
|
||||
emit('change', ...args)
|
||||
}
|
||||
|
||||
watchEffect(() => {
|
||||
props.immediate && fetch()
|
||||
})
|
||||
|
||||
watch(
|
||||
() => props.params,
|
||||
() => {
|
||||
|
@ -93,7 +106,7 @@ async function fetch() {
|
|||
</script>
|
||||
|
||||
<template>
|
||||
<TreeSelect v-bind="getAttrs" @change="handleChange">
|
||||
<TreeSelect v-bind="getAttrs" :field-names="fieldNames" @change="handleChange">
|
||||
<template v-for="item in Object.keys($slots)" #[item]="data">
|
||||
<slot :name="item" v-bind="data || {}" />
|
||||
</template>
|
||||
|
|
Loading…
Reference in New Issue