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

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

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

Loading…
Cancel
Save