修复BUG

This commit is contained in:
liu
2026-08-27 14:20:09 +08:00
parent 513cc568a9
commit 52dc6efadf
203 changed files with 576 additions and 1130 deletions
+17 -4
View File
@@ -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]);
+4
View File
@@ -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;
/** 分页显示 */