From da0f00edabe963d2622b47af470da797cddfb4c3 Mon Sep 17 00:00:00 2001 From: cKey <35512826+colinin@users.noreply.github.com> Date: Mon, 10 Oct 2022 10:36:42 +0800 Subject: [PATCH] listen for query conditions to change --- .../src/components/Table/src/BasicTable.vue | 7 +++-- .../Table/src/components/AdvancedSearch.vue | 28 +++++++++++++------ .../Table/src/hooks/useTableForm.ts | 5 ++++ 3 files changed, 29 insertions(+), 11 deletions(-) diff --git a/apps/vue/src/components/Table/src/BasicTable.vue b/apps/vue/src/components/Table/src/BasicTable.vue index c425d7d27..d0b693de0 100644 --- a/apps/vue/src/components/Table/src/BasicTable.vue +++ b/apps/vue/src/components/Table/src/BasicTable.vue @@ -51,7 +51,8 @@ ref="advancedSearchRef" @register="registerAdSearchModal" v-bind="getAdvancedSearchProps" - @search="handleAdvanceSearchChange" + @change="handleAdvanceSearchChange" + @search="handleAdvanceSearchInfoChange" /> @@ -263,7 +264,8 @@ replaceFormSlotKey, getFormSlotKeys, handleSearchInfoChange, - handleAdvanceSearchChange + handleAdvanceSearchChange, + handleAdvanceSearchInfoChange } = useTableForm(getProps, slots, fetch, getLoading, formActions.setFieldsValue); @@ -385,6 +387,7 @@ handleSearchInfoChange, registerAdSearchModal, handleAdvanceSearchChange, + handleAdvanceSearchInfoChange, handleSearchInfoReset, handleAdvanceSearch, getEmptyDataIsShowTable, diff --git a/apps/vue/src/components/Table/src/components/AdvancedSearch.vue b/apps/vue/src/components/Table/src/components/AdvancedSearch.vue index eeffdc913..bb7ee19e8 100644 --- a/apps/vue/src/components/Table/src/components/AdvancedSearch.vue +++ b/apps/vue/src/components/Table/src/components/AdvancedSearch.vue @@ -86,11 +86,11 @@ import { CodeEditorX, MODE } from '/@/components/CodeEditor'; import { BasicModal, useModalInner } from '/@/components/Modal'; import { useI18n } from '/@/hooks/web/useI18n'; - import { DefineParamter, DynamicLogic, DynamicComparison, DynamicQueryable } from '../types/advancedSearch'; + import { DefineParamter, DynamicLogic, DynamicComparison, DynamicQueryable, DynamicParamter } from '../types/advancedSearch'; import { isFunction } from '/@/utils/is'; import { get } from 'lodash-es'; - const emits = defineEmits(['register', 'search']); + const emits = defineEmits(['register', 'search', 'change']); const props = defineProps({ useAdvancedSearch: { type: Boolean, @@ -234,19 +234,24 @@ const availableParams = unref(getAvailableParams); if (availableParams.length > 0) { const bindParamter = availableParams[availableParams.length - 1]; - formMdel.paramters.push({ + const newParamter: DynamicParamter = { field: bindParamter.name, logic: DynamicLogic.And, comparison: DynamicComparison.Equal, javaScriptType: bindParamter.javaScriptType, value: undefined, - }); + }; + if (bindParamter.javaScriptType === 'boolean') { + newParamter.value = false; + } + formMdel.paramters.push(newParamter); } } function handleDelField(paramter) { const index = formMdel.paramters.findIndex(p => p.field === paramter.field); formMdel.paramters.splice(index, 1); + emits('change', getSearchInput()); } function handleFieldChange(field, record) { @@ -263,16 +268,21 @@ } function handleSubmit() { - const searchInput = { - // 过滤未定义值 - paramters: formMdel.paramters.filter(p => p.value !== undefined) - }; - emits('search', searchInput); + emits('search', getSearchInput()); closeModal(); } function resetFields() { formMdel.paramters = []; + emits('change', getSearchInput()); + } + + function getSearchInput() { + const searchInput = { + // 过滤未定义值 + paramters: formMdel.paramters.filter(p => p.value !== undefined) + }; + return searchInput; } function setLoading(loading: boolean) { diff --git a/apps/vue/src/components/Table/src/hooks/useTableForm.ts b/apps/vue/src/components/Table/src/hooks/useTableForm.ts index 697621f48..04eb864fe 100644 --- a/apps/vue/src/components/Table/src/hooks/useTableForm.ts +++ b/apps/vue/src/components/Table/src/hooks/useTableForm.ts @@ -65,6 +65,10 @@ export function useTableForm( function handleAdvanceSearchChange(queryable: DynamicQueryable) { setFieldsValue({ queryable: queryable }); + } + + function handleAdvanceSearchInfoChange(queryable: DynamicQueryable) { + setFieldsValue({ queryable: queryable }); setTimeout(() => { fetch({ page: 1 }); }, 300); @@ -77,5 +81,6 @@ export function useTableForm( getAdvancedSearchProps, handleSearchInfoChange, handleAdvanceSearchChange, + handleAdvanceSearchInfoChange, }; }