|
@@ -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]) }
|
|
|
: {}),
|
|
: {}),
|