diff --git a/apps/vue/src/components/Table/src/BasicTable.vue b/apps/vue/src/components/Table/src/BasicTable.vue index d0b693de0..ef850c02b 100644 --- a/apps/vue/src/components/Table/src/BasicTable.vue +++ b/apps/vue/src/components/Table/src/BasicTable.vue @@ -82,6 +82,7 @@ import { useTableScrollTo } from './hooks/useScrollTo'; import { useCustomRow } from './hooks/useCustomRow'; import { useTableStyle } from './hooks/useTableStyle'; + import { useTableAlert } from './hooks/useTableAlert'; import { useTableHeader } from './hooks/useTableHeader'; import { useTableExpand } from './hooks/useTableExpand'; import { createTableContext } from './hooks/useTableContext'; @@ -247,9 +248,14 @@ // support useTable unref(getProps).onColumnsChange?.(data); }, + deSelect: () => { + clearSelectedRowKeys(); + }, }; - const { getHeaderProps } = useTableHeader(getProps, slots, handlers); + const { getAlertEnabled, getAlertMessage } = useTableAlert(getProps, getSelectRowKeys); + + const { getHeaderProps } = useTableHeader(getProps, slots, handlers, getAlertEnabled, getAlertMessage); const { getFooterProps } = useTableFooter( getProps, diff --git a/apps/vue/src/components/Table/src/components/AdvancedSearch.vue b/apps/vue/src/components/Table/src/components/AdvancedSearch.vue index 18a25ec6d..564472b1c 100644 --- a/apps/vue/src/components/Table/src/components/AdvancedSearch.vue +++ b/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> }, + 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); diff --git a/apps/vue/src/components/Table/src/components/TableAlert.vue b/apps/vue/src/components/Table/src/components/TableAlert.vue new file mode 100644 index 000000000..53ee929ab --- /dev/null +++ b/apps/vue/src/components/Table/src/components/TableAlert.vue @@ -0,0 +1,36 @@ + + + + + \ No newline at end of file diff --git a/apps/vue/src/components/Table/src/components/TableHeader.vue b/apps/vue/src/components/Table/src/components/TableHeader.vue index 189e913d9..d89152fd8 100644 --- a/apps/vue/src/components/Table/src/components/TableHeader.vue +++ b/apps/vue/src/components/Table/src/components/TableHeader.vue @@ -20,6 +20,9 @@ /> +
+ +