修复BUG
This commit is contained in:
@@ -17,6 +17,7 @@ import type {XinTableProps, XinTableInstance, RequestParams, FormMode} from "./t
|
||||
import SearchForm from "./SearchForm";
|
||||
import XinForm, {type XinFormRef} from "@/components/XinForm";
|
||||
import {type ReactNode, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState} from "react";
|
||||
import dayjs from "dayjs";
|
||||
import type {FormColumn} from "@/components/XinFormField/FieldRender/typings";
|
||||
import {Delete, List, Create, Update} from "@/api/common/table.ts";
|
||||
import {isArray, isEmpty, omit} from "lodash";
|
||||
@@ -60,6 +61,7 @@ export default function XinTable<T extends Record<string, any> = any>(props: Xin
|
||||
editShow = true,
|
||||
deleteShow = true,
|
||||
searchShow = true,
|
||||
searchDefaultOpen = false,
|
||||
operateShow = true,
|
||||
paginationShow = true,
|
||||
keywordSearchShow = true,
|
||||
@@ -89,7 +91,7 @@ export default function XinTable<T extends Record<string, any> = any>(props: Xin
|
||||
|
||||
const [searchRef] = Form.useForm<T>();
|
||||
const [columnsChecked, setColumnsChecked] = useState<any[]>([]);
|
||||
const [searchRender, setSearchRender] = useState<boolean>(false);
|
||||
const [searchRender, setSearchRender] = useState<boolean>(searchDefaultOpen);
|
||||
|
||||
// 表单模式状态
|
||||
const [formMode, setFormMode] = useState<FormMode>('create');
|
||||
@@ -219,9 +221,17 @@ export default function XinTable<T extends Record<string, any> = any>(props: Xin
|
||||
/** 搜索表单提交 */
|
||||
const handleSearch = async () => {
|
||||
const searchValues: T = searchRef.getFieldsValue();
|
||||
const dateSearch: any = {}
|
||||
// 移除 空值
|
||||
Object.keys(searchValues).forEach((key) => {
|
||||
if (searchValues[key] === '' || searchValues[key] === undefined) {
|
||||
const value = searchValues[key];
|
||||
if (value === '' || value === undefined || value === null) {
|
||||
delete searchValues[key];
|
||||
} else if (dayjs.isDayjs(value)) {
|
||||
dateSearch[key] = value.format('YYYY-MM-DD');
|
||||
delete searchValues[key];
|
||||
} else if (isArray(value) && value.length > 0 && value.every((item) => dayjs.isDayjs(item))) {
|
||||
dateSearch[key] = value.map((item) => item.format('YYYY-MM-DD'));
|
||||
delete searchValues[key];
|
||||
}
|
||||
});
|
||||
@@ -229,6 +239,7 @@ export default function XinTable<T extends Record<string, any> = any>(props: Xin
|
||||
page: 1,
|
||||
...requestParams,
|
||||
...searchValues,
|
||||
...dateSearch,
|
||||
});
|
||||
};
|
||||
|
||||
@@ -256,9 +267,11 @@ export default function XinTable<T extends Record<string, any> = any>(props: Xin
|
||||
.map(column => omit(column, ['hideInTable', 'hideInForm', 'hideInSearch', 'search']));
|
||||
}, [columns]);
|
||||
|
||||
/** 初始化列设置树数据 */
|
||||
/** 初始化列设置树数据(defaultHiddenInTable 的列默认不勾选,可在列设置中手动开启) */
|
||||
useEffect(() => {
|
||||
const dataIndexList = defaultTableColumns.map(item => item.dataIndex!);
|
||||
const dataIndexList = defaultTableColumns
|
||||
.filter(item => !item.defaultHiddenInTable)
|
||||
.map(item => item.dataIndex!);
|
||||
setColumnsChecked(dataIndexList);
|
||||
}, [defaultTableColumns]);
|
||||
|
||||
|
||||
@@ -22,6 +22,8 @@ export type XinTableColumn<T = any> = Omit<TableColumnType<T>, 'dataIndex'> & {
|
||||
hideInSearch?: boolean;
|
||||
hideInForm?: boolean;
|
||||
hideInTable?: boolean;
|
||||
/** 列设置中默认不勾选(表格默认隐藏,用户可在列设置中手动开启) */
|
||||
defaultHiddenInTable?: boolean;
|
||||
hideInUpdate?: boolean;
|
||||
hideInCreate?: boolean;
|
||||
search?: FormColumn<T>;
|
||||
@@ -127,6 +129,8 @@ export interface XinTableProps<T = any> extends Omit<TableProps<T>, 'columns' |
|
||||
deleteShow?: boolean | ((record: T) => boolean);
|
||||
/** 搜索栏显示 */
|
||||
searchShow?: boolean;
|
||||
/** 搜索栏默认展开 */
|
||||
searchDefaultOpen?: boolean;
|
||||
/** 表格操作列显示 */
|
||||
operateShow?: boolean;
|
||||
/** 分页显示 */
|
||||
|
||||
Reference in New Issue
Block a user