|
@@ -59,9 +59,15 @@ interface Props {
|
|
* - `first`:自动选择第一个选项
|
|
* - `first`:自动选择第一个选项
|
|
* - `last`:自动选择最后一个选项
|
|
* - `last`:自动选择最后一个选项
|
|
* - `one`: 当请求的结果只有一个选项时,自动选择该选项
|
|
* - `one`: 当请求的结果只有一个选项时,自动选择该选项
|
|
|
|
+ * - 函数:自定义选择逻辑,函数的参数为请求的结果数组,返回值为选择的选项
|
|
* - false:不自动选择(默认)
|
|
* - false:不自动选择(默认)
|
|
*/
|
|
*/
|
|
- autoSelect?: 'first' | 'last' | 'one' | false;
|
|
|
|
|
|
+ autoSelect?:
|
|
|
|
+ | 'first'
|
|
|
|
+ | 'last'
|
|
|
|
+ | 'one'
|
|
|
|
+ | ((item: OptionsItem[]) => OptionsItem)
|
|
|
|
+ | false;
|
|
}
|
|
}
|
|
|
|
|
|
defineOptions({ name: 'ApiComponent', inheritAttrs: false });
|
|
defineOptions({ name: 'ApiComponent', inheritAttrs: false });
|
|
@@ -209,24 +215,28 @@ function emitChange() {
|
|
unref(getOptions).length > 0
|
|
unref(getOptions).length > 0
|
|
) {
|
|
) {
|
|
let firstOption;
|
|
let firstOption;
|
|
- switch (props.autoSelect) {
|
|
|
|
- case 'first': {
|
|
|
|
- firstOption = unref(getOptions)[0];
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
- case 'last': {
|
|
|
|
- firstOption = unref(getOptions)[unref(getOptions).length - 1];
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
- case 'one': {
|
|
|
|
- if (unref(getOptions).length === 1) {
|
|
|
|
|
|
+ if (isFunction(props.autoSelect)) {
|
|
|
|
+ firstOption = props.autoSelect(unref(getOptions));
|
|
|
|
+ } else {
|
|
|
|
+ switch (props.autoSelect) {
|
|
|
|
+ case 'first': {
|
|
firstOption = unref(getOptions)[0];
|
|
firstOption = unref(getOptions)[0];
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ case 'last': {
|
|
|
|
+ firstOption = unref(getOptions)[unref(getOptions).length - 1];
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ case 'one': {
|
|
|
|
+ if (unref(getOptions).length === 1) {
|
|
|
|
+ firstOption = unref(getOptions)[0];
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
}
|
|
}
|
|
- break;
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- if (firstOption) modelValue.value = firstOption[props.valueField];
|
|
|
|
|
|
+ if (firstOption) modelValue.value = firstOption.value;
|
|
}
|
|
}
|
|
emit('optionsChange', unref(getOptions));
|
|
emit('optionsChange', unref(getOptions));
|
|
}
|
|
}
|