feat(api-component): api-component组件的options支持指定disabled值 (#6991)

This commit is contained in:
JyQAQ 2025-12-03 10:03:23 +08:00 committed by GitHub
parent c76db7d8d1
commit 9105d4d14a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -36,6 +36,8 @@ interface Props {
childrenField?: string; childrenField?: string;
/** value字段名 */ /** value字段名 */
valueField?: string; valueField?: string;
/** disabled字段名 */
disabledField?: string;
/** 组件接收options数据的属性名 */ /** 组件接收options数据的属性名 */
optionsPropName?: string; optionsPropName?: string;
/** 是否立即调用api */ /** 是否立即调用api */
@ -75,6 +77,7 @@ defineOptions({ name: 'ApiComponent', inheritAttrs: false });
const props = withDefaults(defineProps<Props>(), { const props = withDefaults(defineProps<Props>(), {
labelField: 'label', labelField: 'label',
valueField: 'value', valueField: 'value',
disabledField: 'disabled',
childrenField: '', childrenField: '',
optionsPropName: 'options', optionsPropName: 'options',
resultField: '', resultField: '',
@ -108,17 +111,25 @@ const isFirstLoaded = ref(false);
const hasPendingRequest = ref(false); const hasPendingRequest = ref(false);
const getOptions = computed(() => { const getOptions = computed(() => {
const { labelField, valueField, childrenField, numberToString } = props; const {
labelField,
valueField,
disabledField,
childrenField,
numberToString,
} = props;
const refOptionsData = unref(refOptions); const refOptionsData = unref(refOptions);
function transformData(data: OptionsItem[]): OptionsItem[] { function transformData(data: OptionsItem[]): OptionsItem[] {
return data.map((item) => { return data.map((item) => {
const value = get(item, valueField); const value = get(item, valueField);
const disabled = get(item, disabledField);
return { return {
...objectOmit(item, [labelField, valueField, childrenField]), ...objectOmit(item, [labelField, valueField, disabled, childrenField]),
label: get(item, labelField), label: get(item, labelField),
value: numberToString ? `${value}` : value, value: numberToString ? `${value}` : value,
disabled: get(item, disabledField),
...(childrenField && item[childrenField] ...(childrenField && item[childrenField]
? { children: transformData(item[childrenField]) } ? { children: transformData(item[childrenField]) }
: {}), : {}),