Browse Source

advanced conditions enhance scalability

pull/720/head
cKey 3 years ago
parent
commit
69562ab138
  1. 33
      apps/vue/src/components/Table/src/components/AdvancedSearch.vue
  2. 7
      apps/vue/src/components/Table/src/types/advancedSearch.ts

33
apps/vue/src/components/Table/src/components/AdvancedSearch.vue

@ -96,9 +96,16 @@
type: Boolean,
default: false,
},
allowDuplicateFieldSearch: {
type: Boolean,
default: true,
},
defineFieldApi: {
type: Function as PropType<() => Promise<any>>
},
defineFieldReplace: {
type: Function as PropType<(response: any) => DefineParamter[]>,
},
listField: {
type: String,
}
@ -202,14 +209,15 @@
]);
const getAvailableParams = computed(() => {
//
// const defineParams = unref(defineParamsRef);
// if (!defineParams.length) return[];
// return defineParams.filter(dp => !formMdel.paramters.some(fp => fp.field === dp.name));
// ,
const { allowDuplicateFieldSearch } = props;
if (allowDuplicateFieldSearch) {
// ,
return defineParamsRef.value;
}
//
const defineParams = unref(defineParamsRef);
return defineParams;
if (!defineParams.length) return[];
return defineParams.filter(dp => !formMdel.paramters.some(fp => fp.field === dp.name));
});
onMounted(fetch);
@ -217,13 +225,18 @@
const [registerModal, { closeModal }] = useModalInner();
function fetch() {
const { useAdvancedSearch, defineFieldApi, listField } = props;
const { useAdvancedSearch, defineFieldApi, defineFieldReplace, listField } = props;
if (!useAdvancedSearch) return;
if (!defineFieldApi || !isFunction(defineFieldApi)) return;
setLoading(true);
defineFieldApi().then((res) => {
const isArrayResult = Array.isArray(res);
const resultItems: DefineParamter[] = isArrayResult ? res : get(res, listField || 'items');
let resultItems: DefineParamter[] = [];
if (defineFieldReplace && isFunction(defineFieldReplace)) {
resultItems = defineFieldReplace(res);
} else {
const isArrayResult = Array.isArray(res);
resultItems = isArrayResult ? res : get(res, listField || 'items');
}
defineParamsRef.value = resultItems;
}).finally(() => {
setLoading(false);

7
apps/vue/src/components/Table/src/types/advancedSearch.ts

@ -2,8 +2,15 @@
export interface AdvanceSearchProps {
/** 使用高级查询 */
useAdvancedSearch?: boolean;
/** 允许字段重复搜索 */
allowDuplicateFieldSearch?: boolean;
/** 字段列表api */
defineFieldApi?: () => Promise<any>;
/**
*
* @remarks ,
*/
defineFieldReplace?: (response: any) => DefineParamter[];
/**
* api返回结果字段
* @remarks ,默认: items

Loading…
Cancel
Save