Browse Source

Merge pull request #717 from colinin/dynamic-query

listen for query conditions to change
pull/731/head
yx lin 3 years ago
committed by GitHub
parent
commit
0c299693a8
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 7
      apps/vue/src/components/Table/src/BasicTable.vue
  2. 28
      apps/vue/src/components/Table/src/components/AdvancedSearch.vue
  3. 5
      apps/vue/src/components/Table/src/hooks/useTableForm.ts

7
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"
/>
</div>
</template>
@ -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,

28
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) {

5
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,
};
}

Loading…
Cancel
Save