zmdms-webui 0.0.4 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -12
- package/dist/es/_virtual/_tslib.js +39 -1
- package/dist/es/button/button.d.ts +5 -3
- package/dist/es/button/button.js +7 -18
- package/dist/es/detaillist/index.d.ts +5 -0
- package/dist/es/detaillist/index.js +5 -0
- package/dist/es/detaillist/item.d.ts +21 -0
- package/dist/es/detaillist/item.js +26 -0
- package/dist/es/detaillist/list.d.ts +15 -0
- package/dist/es/detaillist/list.js +19 -0
- package/dist/es/dynamicsetting/dynamicSetting.d.ts +2 -2
- package/dist/es/dynamicsetting/interface.d.ts +6 -1
- package/dist/es/dynamicsetting/useDynamic.js +2 -0
- package/dist/es/footer/footer.js +1 -1
- package/dist/es/forgetpassword/forgetPassword.js +2 -2
- package/dist/es/form/detaultDom.js +11 -0
- package/dist/es/form/form.d.ts +1 -0
- package/dist/es/form/form.js +8 -5
- package/dist/es/form/formItems.js +4 -2
- package/dist/es/form/hooks.js +8 -8
- package/dist/es/form/interface.d.ts +5 -4
- package/dist/es/formitem/formItem.js +26 -9
- package/dist/es/login/index.d.ts +1 -0
- package/dist/es/login/index.js +2 -2
- package/dist/es/modal/index.d.ts +5 -0
- package/dist/es/modal/index.js +5 -0
- package/dist/es/modal/interface.d.ts +16 -0
- package/dist/es/modal/modal.d.ts +5 -0
- package/dist/es/modal/modal.js +34 -0
- package/dist/es/node_modules/@ant-design/icons/es/icons/MinusOutlined.js +15 -0
- package/dist/es/node_modules/@ant-design/icons/es/icons/MinusSquareOutlined.js +15 -0
- package/dist/es/node_modules/@ant-design/icons/es/icons/PicRightOutlined.js +15 -0
- package/dist/es/node_modules/@ant-design/icons/es/icons/PlusOutlined.js +15 -0
- package/dist/es/node_modules/@ant-design/icons-svg/es/asn/MinusOutlined.js +5 -0
- package/dist/es/node_modules/@ant-design/icons-svg/es/asn/MinusSquareOutlined.js +5 -0
- package/dist/es/node_modules/@ant-design/icons-svg/es/asn/PicRightOutlined.js +5 -0
- package/dist/es/node_modules/@ant-design/icons-svg/es/asn/PlusOutlined.js +5 -0
- package/dist/es/table/components/ColumnAddDel.js +21 -0
- package/dist/es/table/components/ColumnDynamic.js +14 -0
- package/dist/es/table/components/CopyIcon.js +4 -2
- package/dist/es/table/components/EnhanceCell.js +17 -6
- package/dist/es/table/components/EnhanceRow.js +12 -2
- package/dist/es/table/components/hooks.js +18 -2
- package/dist/es/table/components/useDragRef.js +56 -0
- package/dist/es/table/constant.js +6 -2
- package/dist/es/table/hooks.js +154 -5
- package/dist/es/table/interface.d.ts +51 -4
- package/dist/es/table/table.js +122 -16
- package/dist/es/table/useColumns.js +47 -4
- package/dist/es/table/useDynamicListByColumns.js +1 -1
- package/dist/es/table/useInnerPagination.js +60 -0
- package/dist/es/table/useSummary.js +286 -0
- package/dist/es/table/useTableValidate.js +208 -0
- package/dist/es/table/utils.js +4 -3
- package/dist/index.build.d.ts +3 -1
- package/dist/index.dark.css +1 -1
- package/dist/index.default.css +1 -1
- package/dist/index.es.js +3 -1
- package/dist/index.umd.js +2 -2
- package/package.json +5 -2
package/dist/es/table/table.js
CHANGED
|
@@ -1,22 +1,24 @@
|
|
|
1
|
-
import { __rest, __assign } from '../_virtual/_tslib.js';
|
|
2
|
-
import {
|
|
3
|
-
import { memo, useRef, useEffect } from 'react';
|
|
1
|
+
import { __rest, __awaiter, __assign, __generator } from '../_virtual/_tslib.js';
|
|
2
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
3
|
+
import { memo, useRef, useEffect, useMemo, useImperativeHandle } from 'react';
|
|
4
4
|
import { Table as Table$1 } from 'antd';
|
|
5
|
-
import
|
|
5
|
+
import './components/CopyIcon.js';
|
|
6
|
+
import { BasicRow, MoveRow } from './components/EnhanceRow.js';
|
|
6
7
|
import EnhanceCell from './components/EnhanceCell.js';
|
|
8
|
+
import './components/ColumnDynamic.js';
|
|
9
|
+
import './components/ColumnAddDel.js';
|
|
7
10
|
import classNames from '../node_modules/classnames/index.js';
|
|
8
11
|
import { useColumns } from './useColumns.js';
|
|
9
12
|
import { useDynamicListByColumns } from './useDynamicListByColumns.js';
|
|
10
|
-
import
|
|
11
|
-
import {
|
|
13
|
+
import useSummary from './useSummary.js';
|
|
14
|
+
import useInnerPagination, { getInnerIndex } from './useInnerPagination.js';
|
|
15
|
+
import { TABLE_DYNAMIC_KEY, INNER_TABLE_PAGINATION_POSITION, INNER_TABLE_PAGINATION_PAGESIZEOPTIONS } from './constant.js';
|
|
16
|
+
import { useScuRfresh, useEditChange, useMoveRowChange, useAddAndDelChange } from './hooks.js';
|
|
17
|
+
import { HTML5Backend } from '../node_modules/react-dnd-html5-backend/dist/index.js';
|
|
18
|
+
import useTableValidate, { tableValidate } from './useTableValidate.js';
|
|
12
19
|
import DynamicSetting from '../dynamicsetting/dynamicSetting.js';
|
|
20
|
+
import { DndProvider } from '../node_modules/react-dnd/dist/core/DndProvider.js';
|
|
13
21
|
|
|
14
|
-
var components = {
|
|
15
|
-
body: {
|
|
16
|
-
row: EnhanceRow,
|
|
17
|
-
cell: EnhanceCell,
|
|
18
|
-
},
|
|
19
|
-
};
|
|
20
22
|
// TODO: 实现列拖拽切换位置、显隐功能
|
|
21
23
|
// TODO: 实现新增行、删除行功能 新增时 可以选择新增多少行 删除时 可以选择删除全部
|
|
22
24
|
// TODO: 实现必填标记
|
|
@@ -24,8 +26,8 @@ var components = {
|
|
|
24
26
|
// TODO: 实现可拖拽行
|
|
25
27
|
// TODO: 实现可编辑功能
|
|
26
28
|
var Table = function (props) {
|
|
27
|
-
|
|
28
|
-
var className = props.className, _a = props.bordered, bordered = _a === void 0 ? true : _a, _b = props.pagination, pagination = _b === void 0 ? false : _b, dynamicKey = props.dynamicKey, columns = props.columns, dataSource = props.dataSource, onTableChange = props.onTableChange, isEdit = props.isEdit
|
|
29
|
+
console.log("表格渲染");
|
|
30
|
+
var className = props.className, _a = props.bordered, bordered = _a === void 0 ? true : _a, _b = props.pagination, pagination = _b === void 0 ? false : _b, isFlex = props.isFlex; props.tablePreferences; var dynamicKey = props.dynamicKey, columns = props.columns, dataSource = props.dataSource, onTableChange = props.onTableChange, isEdit = props.isEdit, isMove = props.isMove, isAdd = props.isAdd, addMode = props.addMode, addCallback = props.addCallback, isDel = props.isDel, _c = props.isDelAll, isDelAll = _c === void 0 ? true : _c, isAddAndDelAuto = props.isAddAndDelAuto, summaryConfig = props.summaryConfig, _d = props.summaryFixed, summaryFixed = _d === void 0 ? true : _d, isInnerPagination = props.isInnerPagination, _e = props.innerPaginationPageSize, innerPaginationPageSize = _e === void 0 ? 30 : _e, _f = props.innerPaginationPosition, innerPaginationPosition = _f === void 0 ? INNER_TABLE_PAGINATION_POSITION : _f, _g = props.innerPaginationPageSizeOptions, innerPaginationPageSizeOptions = _g === void 0 ? INNER_TABLE_PAGINATION_PAGESIZEOPTIONS : _g, tableRefHandle = props.tableRefHandle, tableName = props.tableName, resetProps = __rest(props, ["className", "bordered", "pagination", "isFlex", "tablePreferences", "dynamicKey", "columns", "dataSource", "onTableChange", "isEdit", "isMove", "isAdd", "addMode", "addCallback", "isDel", "isDelAll", "isAddAndDelAuto", "summaryConfig", "summaryFixed", "isInnerPagination", "innerPaginationPageSize", "innerPaginationPosition", "innerPaginationPageSizeOptions", "tableRefHandle", "tableName"]);
|
|
29
31
|
var classes = classNames("ztxk-table", className);
|
|
30
32
|
// 将表格数据 在 Ref中 存储一份
|
|
31
33
|
var dataSourceRef = useRef();
|
|
@@ -33,17 +35,121 @@ var Table = function (props) {
|
|
|
33
35
|
dataSourceRef.current = dataSource;
|
|
34
36
|
}, [dataSource]);
|
|
35
37
|
// 得到动态列配置信息
|
|
36
|
-
var
|
|
38
|
+
var _h = useDynamicListByColumns(columns, dynamicKey), defaultDynamicList = _h.defaultDynamicList, onCurrentListChange = _h.onCurrentListChange, currentDynamicList = _h.currentDynamicList, dynamicSettingRef = _h.dynamicSettingRef;
|
|
39
|
+
// 针对SCU和增减行 做特殊处理
|
|
40
|
+
var _j = useScuRfresh(), refreshScuCell = _j.refreshScuCell, getRefreshScuCell = _j.getRefreshScuCell;
|
|
41
|
+
// 内部分页相关配置
|
|
42
|
+
var _k = useInnerPagination(isInnerPagination, innerPaginationPageSize, {
|
|
43
|
+
innerPaginationPosition: innerPaginationPosition,
|
|
44
|
+
innerPaginationPageSizeOptions: innerPaginationPageSizeOptions,
|
|
45
|
+
}), paginationConfig = _k.paginationConfig, currentPage = _k.currentPage, setCurrent = _k.setCurrent, pageSize = _k.pageSize;
|
|
37
46
|
// 内部表格编辑事件
|
|
38
47
|
var onEditableSave = useEditChange(dataSourceRef, onTableChange);
|
|
48
|
+
// 内部表格拖拽事件
|
|
49
|
+
var onRow = useMoveRowChange(dataSourceRef, onTableChange, {
|
|
50
|
+
isMove: isMove,
|
|
51
|
+
refreshScuCell: refreshScuCell,
|
|
52
|
+
currentPage: currentPage,
|
|
53
|
+
}).onRow;
|
|
54
|
+
// 内部表格新增删除事件
|
|
55
|
+
var onAddAndDel = useAddAndDelChange(dataSourceRef, onTableChange, {
|
|
56
|
+
rowKey: props.rowKey,
|
|
57
|
+
addMode: addMode,
|
|
58
|
+
addCallback: addCallback,
|
|
59
|
+
refreshScuCell: refreshScuCell,
|
|
60
|
+
isAddAndDelAuto: isAddAndDelAuto,
|
|
61
|
+
currentPage: currentPage,
|
|
62
|
+
});
|
|
39
63
|
// 处理列配置信息 得到新的列配置信息
|
|
40
64
|
var newColumns = useColumns(columns, {
|
|
65
|
+
dynamicKey: dynamicKey,
|
|
41
66
|
currentDynamicList: currentDynamicList,
|
|
42
67
|
dataSource: dataSource,
|
|
43
68
|
dataSourceRef: dataSourceRef,
|
|
44
69
|
onEditableSave: onEditableSave,
|
|
70
|
+
isEdit: isEdit,
|
|
71
|
+
isAdd: isAdd,
|
|
72
|
+
isDel: isDel,
|
|
73
|
+
dynamicSettingRef: dynamicSettingRef,
|
|
74
|
+
onAddAndDel: onAddAndDel,
|
|
75
|
+
getRefreshScuCell: getRefreshScuCell,
|
|
76
|
+
isDelAll: isDelAll,
|
|
77
|
+
currentPage: currentPage,
|
|
45
78
|
}).newColumns;
|
|
46
|
-
|
|
79
|
+
// 内部表格总结栏
|
|
80
|
+
var getSummaryHandle = useSummary(summaryConfig, newColumns, {
|
|
81
|
+
summaryFixed: summaryFixed,
|
|
82
|
+
rowSelection: props.rowSelection,
|
|
83
|
+
expandable: props.expandable,
|
|
84
|
+
isAdd: isAdd,
|
|
85
|
+
isDel: isDel,
|
|
86
|
+
});
|
|
87
|
+
// 表格验证
|
|
88
|
+
var _l = useTableValidate(), tableRef = _l.tableRef, getCurrentTable = _l.getCurrentTable, clearErrorClass = _l.clearErrorClass;
|
|
89
|
+
// 使用高级表格需要的一些配置
|
|
90
|
+
var componentsMemo = useMemo(function () {
|
|
91
|
+
var components = undefined;
|
|
92
|
+
// 如果编辑列
|
|
93
|
+
if (isEdit) {
|
|
94
|
+
components = {
|
|
95
|
+
body: {
|
|
96
|
+
row: BasicRow,
|
|
97
|
+
cell: EnhanceCell,
|
|
98
|
+
},
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
// 如果移动列
|
|
102
|
+
if (isMove) {
|
|
103
|
+
components = {
|
|
104
|
+
body: {
|
|
105
|
+
row: MoveRow,
|
|
106
|
+
cell: isEdit ? EnhanceCell : undefined,
|
|
107
|
+
},
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
return components;
|
|
111
|
+
}, [isEdit, isMove]);
|
|
112
|
+
// 暴露给外部一些方法
|
|
113
|
+
useImperativeHandle(tableRefHandle, function () {
|
|
114
|
+
return {
|
|
115
|
+
getRealyIndex: function (index) {
|
|
116
|
+
return getInnerIndex(currentPage, index);
|
|
117
|
+
},
|
|
118
|
+
getDynamicList: function () {
|
|
119
|
+
return currentDynamicList;
|
|
120
|
+
},
|
|
121
|
+
tableValidate: function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
122
|
+
return __generator(this, function (_a) {
|
|
123
|
+
switch (_a.label) {
|
|
124
|
+
case 0:
|
|
125
|
+
clearErrorClass();
|
|
126
|
+
return [4 /*yield*/, tableValidate(dataSource, newColumns, {
|
|
127
|
+
getCurrentTable: getCurrentTable,
|
|
128
|
+
rowSelection: props.rowSelection ? true : false,
|
|
129
|
+
expandable: props.expandable ? true : false,
|
|
130
|
+
tableName: tableName,
|
|
131
|
+
isInnerPagination: isInnerPagination,
|
|
132
|
+
setCurrent: setCurrent,
|
|
133
|
+
pageSize: pageSize,
|
|
134
|
+
})];
|
|
135
|
+
case 1:
|
|
136
|
+
_a.sent();
|
|
137
|
+
return [2 /*return*/];
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
}); },
|
|
141
|
+
clearErrorClass: clearErrorClass,
|
|
142
|
+
};
|
|
143
|
+
});
|
|
144
|
+
// 表格
|
|
145
|
+
var SingleTable = (jsx(Table$1, __assign({ className: classes, bordered: bordered, dataSource: dataSource, columns: newColumns, components: componentsMemo, onRow: onRow, summary: getSummaryHandle, pagination: isInnerPagination
|
|
146
|
+
? pagination
|
|
147
|
+
? pagination
|
|
148
|
+
: paginationConfig
|
|
149
|
+
: pagination }, resetProps)));
|
|
150
|
+
return (jsxs("div", __assign({ style: isFlex
|
|
151
|
+
? { position: "relative", overflow: "hidden", flex: 1 }
|
|
152
|
+
: { position: "relative", overflow: "hidden" }, ref: tableRef }, { children: [isMove ? (jsx(DndProvider, __assign({ backend: HTML5Backend, context: window }, { children: SingleTable }))) : (SingleTable), dynamicKey ? (jsx(DynamicSetting, { parentDynamicKey: TABLE_DYNAMIC_KEY, dynamicKey: dynamicKey, defaultList: defaultDynamicList, onCurrentListChange: onCurrentListChange, ref: dynamicSettingRef, hiddenOperationIcon: true })) : null] })));
|
|
47
153
|
};
|
|
48
154
|
var MemoTable = memo(Table);
|
|
49
155
|
MemoTable.displayName = "ZTXK_WEBUI_Table";
|
|
@@ -4,27 +4,28 @@ import { getTableColumns } from './utils.js';
|
|
|
4
4
|
import CopyIcon from './components/CopyIcon.js';
|
|
5
5
|
import '../node_modules/classnames/index.js';
|
|
6
6
|
import 'react';
|
|
7
|
+
import ColumnDynamic from './components/ColumnDynamic.js';
|
|
8
|
+
import ColumnAddDel, { ColumnDelAll } from './components/ColumnAddDel.js';
|
|
7
9
|
|
|
8
10
|
// 处理columns
|
|
9
11
|
// 根据传入的一些信息 重新生成新的columns配置
|
|
10
12
|
// 不适用column里面的dataIndex字段,使用key字段
|
|
11
13
|
function useColumns(columns, options) {
|
|
12
|
-
var currentDynamicList = options.currentDynamicList, dataSourceRef = options.dataSourceRef, onEditableSave = options.onEditableSave;
|
|
14
|
+
var dynamicKey = options.dynamicKey, currentDynamicList = options.currentDynamicList, dataSourceRef = options.dataSourceRef, onEditableSave = options.onEditableSave, isEdit = options.isEdit, isAdd = options.isAdd, isDel = options.isDel, dynamicSettingRef = options.dynamicSettingRef, onAddAndDel = options.onAddAndDel, getRefreshScuCell = options.getRefreshScuCell, isDelAll = options.isDelAll, currentPage = options.currentPage;
|
|
13
15
|
var newColumns = getTableColumns(columns, currentDynamicList);
|
|
14
16
|
// 循环遍历 neColumns 根据一些内容进行处理
|
|
15
17
|
var myNewColumns = [];
|
|
16
18
|
if (Array.isArray(newColumns)) {
|
|
17
19
|
newColumns.forEach(function (column) {
|
|
18
20
|
var _column = __assign({}, column);
|
|
19
|
-
var isCopy = _column.isCopy, editable = _column.editable, editableConfig = _column.editableConfig, title = _column.title, key = _column.key;
|
|
21
|
+
var isCopy = _column.isCopy, editable = _column.editable, editableConfig = _column.editableConfig, title = _column.title, key = _column.key, validate = _column.validate;
|
|
20
22
|
var _key = key ? key : _column === null || _column === void 0 ? void 0 : _column.dataIndex;
|
|
21
23
|
// 列头增加复制按钮
|
|
22
|
-
// TODO:dataSource 可以修改成Ref对象
|
|
23
24
|
if (isCopy) {
|
|
24
25
|
_column.title = (jsxs(Fragment, { children: [title, jsx(CopyIcon, { copyKey: isCopy === true ? key : isCopy, dataSourceRef: dataSourceRef })] }));
|
|
25
26
|
}
|
|
26
27
|
// 如果列添加可编辑配置
|
|
27
|
-
if (editable) {
|
|
28
|
+
if (editable && isEdit) {
|
|
28
29
|
_column.onCell = function (record, index) {
|
|
29
30
|
return ({
|
|
30
31
|
record: record,
|
|
@@ -34,11 +35,53 @@ function useColumns(columns, options) {
|
|
|
34
35
|
dataIndex: _key,
|
|
35
36
|
title: title,
|
|
36
37
|
onEditableSave: onEditableSave,
|
|
38
|
+
currentPage: currentPage,
|
|
39
|
+
isValidate: validate ? true : false,
|
|
37
40
|
});
|
|
38
41
|
};
|
|
39
42
|
}
|
|
43
|
+
// 处理配置了scu的相关逻辑
|
|
44
|
+
if (_column.shouldCellUpdate) {
|
|
45
|
+
var fn_1 = _column.shouldCellUpdate;
|
|
46
|
+
_column.shouldCellUpdate = function (record, preRecord) {
|
|
47
|
+
if (getRefreshScuCell && getRefreshScuCell()) {
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
return fn_1(record, preRecord);
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
// 添加render字段,
|
|
54
|
+
if (!_column.render) {
|
|
55
|
+
_column.render = function (text, record, index) {
|
|
56
|
+
if (typeof text === "object") {
|
|
57
|
+
return "— —";
|
|
58
|
+
}
|
|
59
|
+
return text == null || text === "" ? "— —" : text;
|
|
60
|
+
};
|
|
61
|
+
}
|
|
40
62
|
myNewColumns.push(_column);
|
|
41
63
|
});
|
|
64
|
+
// 如果配置了增减行
|
|
65
|
+
if (isAdd || isDel) {
|
|
66
|
+
var newColumn = {
|
|
67
|
+
title: function () { return (isDelAll ? jsx(ColumnDelAll, {}) : null); },
|
|
68
|
+
width: 52,
|
|
69
|
+
fixed: "left",
|
|
70
|
+
align: "center",
|
|
71
|
+
// 这里需要配置scu吗?TODO:
|
|
72
|
+
render: function (text, render, index) {
|
|
73
|
+
return (jsx(ColumnAddDel, { isAdd: isAdd, isDel: isDel, index: index, onAddAndDel: onAddAndDel }));
|
|
74
|
+
},
|
|
75
|
+
};
|
|
76
|
+
myNewColumns.unshift(newColumn);
|
|
77
|
+
}
|
|
78
|
+
// 如果配置了动态列配置
|
|
79
|
+
// 处理一些配置放置的位置
|
|
80
|
+
if (dynamicKey) {
|
|
81
|
+
myNewColumns[0].title = function () {
|
|
82
|
+
return isAdd || isDel ? (jsxs(Fragment, { children: [isDelAll ? jsx(ColumnDelAll, {}) : null, jsx(ColumnDynamic, { dynamicSettingRef: dynamicSettingRef })] })) : (jsx(ColumnDynamic, { dynamicSettingRef: dynamicSettingRef }));
|
|
83
|
+
};
|
|
84
|
+
}
|
|
42
85
|
}
|
|
43
86
|
return {
|
|
44
87
|
newColumns: myNewColumns,
|
|
@@ -24,7 +24,7 @@ function getDynamicList(dynamicKey, columns) {
|
|
|
24
24
|
}
|
|
25
25
|
function useDynamicListByColumns(columns, dynamicKey) {
|
|
26
26
|
// 动态列配置手动刷新基础配置
|
|
27
|
-
var dynamicSettingRef = useRef(
|
|
27
|
+
var dynamicSettingRef = useRef(null);
|
|
28
28
|
// 初始化list
|
|
29
29
|
var defaultDynamicList = useMemo(function () {
|
|
30
30
|
return getDynamicList(dynamicKey, columns);
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { useRef, useState, useEffect, useMemo } from 'react';
|
|
2
|
+
|
|
3
|
+
// 获取内部当前索引位置
|
|
4
|
+
function getInnerIndex(currentPage, index) {
|
|
5
|
+
// 得到当前修改索引相对于 整体数据源 的索引
|
|
6
|
+
var currentPageObj = currentPage === null || currentPage === void 0 ? void 0 : currentPage.current;
|
|
7
|
+
if (!currentPageObj) {
|
|
8
|
+
return index;
|
|
9
|
+
}
|
|
10
|
+
var innerIndex = currentPageObj.pageSize * (currentPageObj.page - 1) + (index ? index : 0);
|
|
11
|
+
return innerIndex;
|
|
12
|
+
}
|
|
13
|
+
function useInnerPagination(isInnerPagination, innerPaginationPageSize, options) {
|
|
14
|
+
var currentPage = useRef(null);
|
|
15
|
+
var _a = useState(1), current = _a[0], setCurrent = _a[1];
|
|
16
|
+
var _b = useState(innerPaginationPageSize), pageSize = _b[0], setPageSize = _b[1];
|
|
17
|
+
var innerPaginationPageSizeOptions = options.innerPaginationPageSizeOptions, innerPaginationPosition = options.innerPaginationPosition;
|
|
18
|
+
useEffect(function () {
|
|
19
|
+
if (isInnerPagination) {
|
|
20
|
+
currentPage.current = {
|
|
21
|
+
page: current,
|
|
22
|
+
pageSize: Number(pageSize),
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
}, [isInnerPagination, current, pageSize]);
|
|
26
|
+
useEffect(function () {
|
|
27
|
+
if (!isInnerPagination) {
|
|
28
|
+
currentPage.current = null;
|
|
29
|
+
}
|
|
30
|
+
}, [isInnerPagination]);
|
|
31
|
+
var paginationConfig = useMemo(function () { return ({
|
|
32
|
+
current: current,
|
|
33
|
+
pageSize: pageSize,
|
|
34
|
+
onChange: function (page, pageSize) {
|
|
35
|
+
if (isInnerPagination) {
|
|
36
|
+
setCurrent(page);
|
|
37
|
+
setPageSize(pageSize);
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
hideOnSinglePage: true,
|
|
41
|
+
position: innerPaginationPageSizeOptions,
|
|
42
|
+
defaultPageSize: pageSize,
|
|
43
|
+
pageSizeOptions: innerPaginationPosition,
|
|
44
|
+
}); }, [
|
|
45
|
+
isInnerPagination,
|
|
46
|
+
current,
|
|
47
|
+
pageSize,
|
|
48
|
+
innerPaginationPageSizeOptions,
|
|
49
|
+
innerPaginationPosition,
|
|
50
|
+
]);
|
|
51
|
+
return {
|
|
52
|
+
paginationConfig: paginationConfig,
|
|
53
|
+
currentPage: currentPage,
|
|
54
|
+
setCurrent: setCurrent,
|
|
55
|
+
pageSize: pageSize,
|
|
56
|
+
current: current,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export { useInnerPagination as default, getInnerIndex };
|
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
import { __assign } from '../_virtual/_tslib.js';
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { useCallback } from 'react';
|
|
4
|
+
import { Table } from 'antd';
|
|
5
|
+
|
|
6
|
+
function useSummary(summaryConfig, columns, options) {
|
|
7
|
+
var summaryFixed = options.summaryFixed, rowSelection = options.rowSelection, expandable = options.expandable, isAdd = options.isAdd, isDel = options.isDel;
|
|
8
|
+
// 是否存在选择项
|
|
9
|
+
var isRowSelection = rowSelection ? true : false;
|
|
10
|
+
// 是否存在可展开
|
|
11
|
+
var isExpandable = expandable ? true : false;
|
|
12
|
+
// 增减 体现再cloumns里面 所以需要额外处理
|
|
13
|
+
var isAddOrDel = isAdd || isDel ? true : false;
|
|
14
|
+
var fillNumber = Number(isRowSelection) + Number(isExpandable);
|
|
15
|
+
var summaryHandle = useCallback(function (pageData) {
|
|
16
|
+
var summaryData = getSummaryData(summaryConfig, pageData, {
|
|
17
|
+
fillNumber: fillNumber,
|
|
18
|
+
columns: columns,
|
|
19
|
+
});
|
|
20
|
+
return (jsx(Table.Summary, __assign({ fixed: summaryFixed }, { children: summaryData.map(function (summary) {
|
|
21
|
+
var title = summary.title, key = summary.key, titleIndex = summary.titleIndex, list = summary.list;
|
|
22
|
+
return (jsx(Table.Summary.Row, { children: Array.isArray(list) &&
|
|
23
|
+
list.map(function (item, index) {
|
|
24
|
+
// title的位置需要 算入 增减行中
|
|
25
|
+
if (titleIndex + Number(isAddOrDel) === index) {
|
|
26
|
+
return (jsx(Table.Summary.Cell, __assign({ index: index }, { children: title }), index));
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
return (jsx(Table.Summary.Cell, __assign({ index: index }, { children: jsx("div", { children: item }) }), index));
|
|
30
|
+
}
|
|
31
|
+
}) }, key));
|
|
32
|
+
}) })));
|
|
33
|
+
}, [summaryConfig, fillNumber, columns, summaryFixed, isAddOrDel]);
|
|
34
|
+
return summaryConfig ? summaryHandle : undefined;
|
|
35
|
+
}
|
|
36
|
+
function getSummaryData(summaryConfig, dataSource, options) {
|
|
37
|
+
var _summaryData = [];
|
|
38
|
+
var fillNumber = options.fillNumber, columns = options.columns;
|
|
39
|
+
if (Array.isArray(summaryConfig)) {
|
|
40
|
+
summaryConfig.forEach(function (summary) {
|
|
41
|
+
var type = summary.type, fields = summary.fields, title = summary.title;
|
|
42
|
+
switch (type) {
|
|
43
|
+
case "subtotal": // 小计
|
|
44
|
+
// 如果没有设置 统计字段 那么直接跳出循环
|
|
45
|
+
if (!Array.isArray(fields)) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
if (fields.length === 0) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
// 拿到统计数据
|
|
52
|
+
var subtotalObj_1 = getSubtotalObj(fields, dataSource);
|
|
53
|
+
var subtotalResult_1 = [];
|
|
54
|
+
var columnResult_1 = [];
|
|
55
|
+
columns === null || columns === void 0 ? void 0 : columns.forEach(function (col) {
|
|
56
|
+
if (col.children) {
|
|
57
|
+
col.children.forEach(function (col) {
|
|
58
|
+
subtotalResult_1.push(col.key || col.dataIndex
|
|
59
|
+
? subtotalObj_1[col.key || col.dataIndex]
|
|
60
|
+
: undefined);
|
|
61
|
+
columnResult_1.push({
|
|
62
|
+
key: col === null || col === void 0 ? void 0 : col.key,
|
|
63
|
+
dataIndex: col === null || col === void 0 ? void 0 : col.dataIndex,
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
subtotalResult_1.push(col.key || col.dataIndex
|
|
69
|
+
? subtotalObj_1[col.key || col.dataIndex]
|
|
70
|
+
: undefined);
|
|
71
|
+
columnResult_1.push({
|
|
72
|
+
key: col === null || col === void 0 ? void 0 : col.key,
|
|
73
|
+
dataIndex: col === null || col === void 0 ? void 0 : col.dataIndex,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
_summaryData.push({
|
|
78
|
+
title: title || "小计",
|
|
79
|
+
titleIndex: 0 + fillNumber,
|
|
80
|
+
key: "subtotal",
|
|
81
|
+
list: Array(fillNumber).fill(undefined).concat(subtotalResult_1),
|
|
82
|
+
columnList: Array(fillNumber).fill(undefined).concat(columnResult_1),
|
|
83
|
+
});
|
|
84
|
+
break;
|
|
85
|
+
case "total": // 总计
|
|
86
|
+
if (!Array.isArray(fields)) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
if (fields.length === 0) {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
var totalObj_1 = getTotalObj(fields);
|
|
93
|
+
var totalResult_1 = [];
|
|
94
|
+
var totalColumnResult_1 = [];
|
|
95
|
+
columns === null || columns === void 0 ? void 0 : columns.forEach(function (col) {
|
|
96
|
+
if (col.children) {
|
|
97
|
+
col.children.forEach(function (col) {
|
|
98
|
+
totalResult_1.push(col.key || col.dataIndex
|
|
99
|
+
? totalObj_1[col.key || col.dataIndex]
|
|
100
|
+
: undefined);
|
|
101
|
+
totalColumnResult_1.push({
|
|
102
|
+
key: col === null || col === void 0 ? void 0 : col.key,
|
|
103
|
+
dataIndex: col === null || col === void 0 ? void 0 : col.dataIndex,
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
totalResult_1.push(col.key || col.dataIndex
|
|
109
|
+
? totalObj_1[col.key || col.dataIndex]
|
|
110
|
+
: undefined);
|
|
111
|
+
totalColumnResult_1.push({
|
|
112
|
+
key: col === null || col === void 0 ? void 0 : col.key,
|
|
113
|
+
dataIndex: col === null || col === void 0 ? void 0 : col.dataIndex,
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
_summaryData.push({
|
|
118
|
+
title: title || "总计",
|
|
119
|
+
titleIndex: 0 + fillNumber,
|
|
120
|
+
key: "total",
|
|
121
|
+
list: Array(fillNumber).fill(undefined).concat(totalResult_1),
|
|
122
|
+
columnList: Array(fillNumber)
|
|
123
|
+
.fill(undefined)
|
|
124
|
+
.concat(totalColumnResult_1),
|
|
125
|
+
});
|
|
126
|
+
break;
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
return _summaryData;
|
|
131
|
+
}
|
|
132
|
+
// 为 getSubtotalObj 编写测试用例 TODO:
|
|
133
|
+
function getSubtotalObj(fields, dataSource) {
|
|
134
|
+
if (!Array.isArray(dataSource)) {
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
var summaryTotalObj = {};
|
|
138
|
+
dataSource.forEach(function (item, index) {
|
|
139
|
+
fields.forEach(function (field) {
|
|
140
|
+
if (typeof field === "string") {
|
|
141
|
+
var dataItem = Number(item === null || item === void 0 ? void 0 : item[field]);
|
|
142
|
+
dataItem = isNaN(dataItem) ? 0 : dataItem;
|
|
143
|
+
var summaryItem = (summaryTotalObj === null || summaryTotalObj === void 0 ? void 0 : summaryTotalObj[field]) || 0;
|
|
144
|
+
summaryTotalObj[field] = summaryItem
|
|
145
|
+
? // TODO: 这里是加法 后面对浮点数做处理
|
|
146
|
+
plus(summaryItem, dataItem)
|
|
147
|
+
: dataItem;
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
var key = field.key, showKey = field.showKey, toFixedNum_1 = field.toFixedNum, value = field.value, callback = field.callback;
|
|
151
|
+
var dataItem = Number(item === null || item === void 0 ? void 0 : item[key]);
|
|
152
|
+
dataItem = isNaN(dataItem) ? 0 : dataItem;
|
|
153
|
+
var summaryItem_1 = (summaryTotalObj === null || summaryTotalObj === void 0 ? void 0 : summaryTotalObj[key]) || 0;
|
|
154
|
+
if (value) {
|
|
155
|
+
if (Array.isArray(value)) {
|
|
156
|
+
summaryTotalObj[key] = value.map(function (v, index) {
|
|
157
|
+
// 如果传入两个键值 需要小计,那么取对应的值
|
|
158
|
+
var _toFixedNum = Array.isArray(toFixedNum_1)
|
|
159
|
+
? toFixedNum_1[index]
|
|
160
|
+
: toFixedNum_1;
|
|
161
|
+
var numV = Number(v);
|
|
162
|
+
if (!isNaN(numV) && typeof _toFixedNum === "number") {
|
|
163
|
+
return numV.toFixed(_toFixedNum);
|
|
164
|
+
}
|
|
165
|
+
return v;
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
var numValue = Number(value);
|
|
170
|
+
summaryTotalObj[key] =
|
|
171
|
+
typeof toFixedNum_1 === "number"
|
|
172
|
+
? isNaN(numValue)
|
|
173
|
+
? value
|
|
174
|
+
: numValue.toFixed(toFixedNum_1)
|
|
175
|
+
: value;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
if (showKey) {
|
|
180
|
+
if (typeof showKey === "string") {
|
|
181
|
+
var dataItem_1 = Number(item === null || item === void 0 ? void 0 : item[showKey]); // 从showKey中取值
|
|
182
|
+
dataItem_1 = isNaN(dataItem_1) ? 0 : dataItem_1;
|
|
183
|
+
if (summaryItem_1) {
|
|
184
|
+
summaryTotalObj[key] =
|
|
185
|
+
typeof toFixedNum_1 === "number"
|
|
186
|
+
? plus(summaryItem_1, dataItem_1).toFixed(toFixedNum_1)
|
|
187
|
+
: plus(summaryItem_1, dataItem_1);
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
summaryTotalObj[key] =
|
|
191
|
+
typeof toFixedNum_1 === "number"
|
|
192
|
+
? dataItem_1.toFixed(toFixedNum_1)
|
|
193
|
+
: dataItem_1;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
summaryTotalObj[key] = showKey.map(function (_showKey, index) {
|
|
198
|
+
var dataItem = Number(item === null || item === void 0 ? void 0 : item[_showKey]);
|
|
199
|
+
dataItem = isNaN(dataItem) ? 0 : dataItem;
|
|
200
|
+
// 如果传入两个键值 需要小计,那么取对应的值
|
|
201
|
+
var _toFixedNum = Array.isArray(toFixedNum_1)
|
|
202
|
+
? toFixedNum_1[index]
|
|
203
|
+
: toFixedNum_1;
|
|
204
|
+
if (summaryItem_1) {
|
|
205
|
+
var _summaryItem = Number(summaryItem_1[index]);
|
|
206
|
+
return typeof _toFixedNum === "number"
|
|
207
|
+
? plus(_summaryItem, dataItem).toFixed(_toFixedNum)
|
|
208
|
+
: plus(_summaryItem, dataItem);
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
return typeof _toFixedNum === "number"
|
|
212
|
+
? dataItem.toFixed(_toFixedNum)
|
|
213
|
+
: dataItem;
|
|
214
|
+
}
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
if (summaryItem_1) {
|
|
220
|
+
summaryTotalObj[key] =
|
|
221
|
+
typeof toFixedNum_1 === "number"
|
|
222
|
+
? plus(summaryItem_1, dataItem).toFixed(toFixedNum_1)
|
|
223
|
+
: plus(summaryItem_1, dataItem);
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
summaryTotalObj[key] =
|
|
227
|
+
typeof toFixedNum_1 === "number"
|
|
228
|
+
? dataItem.toFixed(toFixedNum_1)
|
|
229
|
+
: dataItem;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
// 如果数据还需要最终处理的话
|
|
234
|
+
if (callback && index === dataSource.length - 1) {
|
|
235
|
+
summaryTotalObj[key] = callback(summaryTotalObj[key]);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
});
|
|
239
|
+
});
|
|
240
|
+
return summaryTotalObj;
|
|
241
|
+
}
|
|
242
|
+
function getTotalObj(fields) {
|
|
243
|
+
var summaryTotalObj = {};
|
|
244
|
+
fields.forEach(function (field) {
|
|
245
|
+
if (typeof field === "object") {
|
|
246
|
+
var key = field.key, toFixedNum_2 = field.toFixedNum, value = field.value, callback = field.callback;
|
|
247
|
+
if (value != null) {
|
|
248
|
+
// 如果value是数组 那么也要输出数组
|
|
249
|
+
if (Array.isArray(value)) {
|
|
250
|
+
summaryTotalObj[key] = value.map(function (val, index) {
|
|
251
|
+
var dataItem = Number(val);
|
|
252
|
+
dataItem = isNaN(dataItem) ? 0 : dataItem;
|
|
253
|
+
// 如果传入两个键值 需要小计,那么取对应的值
|
|
254
|
+
var _toFixedNum = Array.isArray(toFixedNum_2)
|
|
255
|
+
? toFixedNum_2[index]
|
|
256
|
+
: toFixedNum_2;
|
|
257
|
+
return typeof _toFixedNum === "number"
|
|
258
|
+
? dataItem.toFixed(_toFixedNum)
|
|
259
|
+
: val;
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
else {
|
|
263
|
+
var dataItem = Number(value);
|
|
264
|
+
dataItem = isNaN(dataItem) ? 0 : dataItem;
|
|
265
|
+
summaryTotalObj[key] =
|
|
266
|
+
typeof toFixedNum_2 === "number"
|
|
267
|
+
? dataItem.toFixed(toFixedNum_2)
|
|
268
|
+
: value;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
else {
|
|
272
|
+
summaryTotalObj[key] = 0;
|
|
273
|
+
}
|
|
274
|
+
if (callback) {
|
|
275
|
+
summaryTotalObj[key] = callback(summaryTotalObj[key]);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
});
|
|
279
|
+
return summaryTotalObj;
|
|
280
|
+
}
|
|
281
|
+
// 暂时用这里的加法
|
|
282
|
+
function plus(a, b) {
|
|
283
|
+
return a + b;
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
export { useSummary as default };
|