zmdms-webui 1.7.4 → 1.7.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.
Files changed (172) hide show
  1. package/dist/es/dynamicsetting/dynamicDrawer.js +95 -34
  2. package/dist/es/dynamicsetting/dynamicSetting.js +2 -2
  3. package/dist/es/dynamicsetting/moreConfig.js +14 -3
  4. package/dist/es/dynamicsetting/useDynamic.js +3 -0
  5. package/dist/es/table/constant.js +6 -2
  6. package/dist/es/table/hooks.js +155 -3
  7. package/dist/es/table/table.js +20 -7
  8. package/dist/es/table/useColumns.js +17 -1
  9. package/dist/es/table/useDynamicListByColumns.js +5 -1
  10. package/dist/es/table/utils.js +227 -3
  11. package/package.json +1 -1
  12. package/dist/es/alert/alert.d.ts +0 -5
  13. package/dist/es/alert/index.css +0 -1
  14. package/dist/es/alert/index.d.ts +0 -5
  15. package/dist/es/alert/interface.d.ts +0 -14
  16. package/dist/es/applayout/appLayout.d.ts +0 -11
  17. package/dist/es/applayout/index.css +0 -1
  18. package/dist/es/applayout/index.d.ts +0 -5
  19. package/dist/es/applayoutheader/appLayoutHeader.d.ts +0 -14
  20. package/dist/es/applayoutheader/index.d.ts +0 -5
  21. package/dist/es/applayoutsider/appLayoutSider.d.ts +0 -57
  22. package/dist/es/applayoutsider/index.d.ts +0 -5
  23. package/dist/es/authloading/authLoading.d.ts +0 -5
  24. package/dist/es/authloading/index.css +0 -1
  25. package/dist/es/authloading/index.d.ts +0 -5
  26. package/dist/es/button/button.d.ts +0 -5
  27. package/dist/es/button/buttonDownload.d.ts +0 -25
  28. package/dist/es/button/buttonExport.d.ts +0 -15
  29. package/dist/es/button/buttonPreview.d.ts +0 -26
  30. package/dist/es/button/index.css +0 -1
  31. package/dist/es/button/index.d.ts +0 -5
  32. package/dist/es/button/interface.d.ts +0 -31
  33. package/dist/es/calendar/index.d.ts +0 -7
  34. package/dist/es/collapse/collapse.d.ts +0 -7
  35. package/dist/es/collapse/index.css +0 -1
  36. package/dist/es/collapse/index.d.ts +0 -5
  37. package/dist/es/collapse/interface.d.ts +0 -25
  38. package/dist/es/config/ZtxkContext.d.ts +0 -32
  39. package/dist/es/container/container.d.ts +0 -51
  40. package/dist/es/container/index.css +0 -1
  41. package/dist/es/container/index.d.ts +0 -5
  42. package/dist/es/datepicker/index.css +0 -1
  43. package/dist/es/datepicker/index.d.ts +0 -48
  44. package/dist/es/datepicker/interface.d.ts +0 -56
  45. package/dist/es/descriptions/descriptions.d.ts +0 -5
  46. package/dist/es/descriptions/index.css +0 -1
  47. package/dist/es/descriptions/index.d.ts +0 -5
  48. package/dist/es/descriptions/interface.d.ts +0 -12
  49. package/dist/es/detaillist/index.css +0 -1
  50. package/dist/es/detaillist/index.d.ts +0 -5
  51. package/dist/es/detaillist/item.d.ts +0 -35
  52. package/dist/es/detaillist/list.d.ts +0 -17
  53. package/dist/es/differences/differences.d.ts +0 -5
  54. package/dist/es/differences/index.css +0 -1
  55. package/dist/es/differences/index.d.ts +0 -5
  56. package/dist/es/differences/interface.d.ts +0 -17
  57. package/dist/es/dynamicsetting/dynamicSetting.d.ts +0 -6
  58. package/dist/es/dynamicsetting/index.css +0 -1
  59. package/dist/es/dynamicsetting/index.d.ts +0 -5
  60. package/dist/es/dynamicsetting/interface.d.ts +0 -36
  61. package/dist/es/electronsignatures/index.css +0 -1
  62. package/dist/es/electronsignatures/index.d.ts +0 -6
  63. package/dist/es/electronsignatures/interface.d.ts +0 -500
  64. package/dist/es/enhanceselect/enhance-select.d.ts +0 -6
  65. package/dist/es/enhanceselect/index.d.ts +0 -5
  66. package/dist/es/enhanceselect/interface.d.ts +0 -71
  67. package/dist/es/footer/footer.d.ts +0 -6
  68. package/dist/es/footer/index.css +0 -1
  69. package/dist/es/footer/index.d.ts +0 -5
  70. package/dist/es/footer/interface.d.ts +0 -34
  71. package/dist/es/form/form.d.ts +0 -18
  72. package/dist/es/form/index.css +0 -1
  73. package/dist/es/form/index.d.ts +0 -5
  74. package/dist/es/form/interface.d.ts +0 -91
  75. package/dist/es/formitem/formItem.d.ts +0 -115
  76. package/dist/es/formitem/index.css +0 -1
  77. package/dist/es/formitem/index.d.ts +0 -5
  78. package/dist/es/icon/icon-oss.d.ts +0 -6
  79. package/dist/es/icon/index.d.ts +0 -6
  80. package/dist/es/input/TextArea.d.ts +0 -13
  81. package/dist/es/input/index.css +0 -1
  82. package/dist/es/input/index.d.ts +0 -5
  83. package/dist/es/input/input.d.ts +0 -21
  84. package/dist/es/inputnumber/index.css +0 -1
  85. package/dist/es/inputnumber/index.d.ts +0 -5
  86. package/dist/es/inputnumber/inputNumber.d.ts +0 -24
  87. package/dist/es/inputnumber/interface.d.ts +0 -4
  88. package/dist/es/leftcontent/index.css +0 -1
  89. package/dist/es/leftcontent/index.d.ts +0 -5
  90. package/dist/es/leftcontent/leftContent.d.ts +0 -31
  91. package/dist/es/login/index.css +0 -1
  92. package/dist/es/login/index.d.ts +0 -37
  93. package/dist/es/microloading/index.css +0 -1
  94. package/dist/es/microloading/index.d.ts +0 -5
  95. package/dist/es/microloading/micro-loading.d.ts +0 -8
  96. package/dist/es/modal/index.css +0 -1
  97. package/dist/es/modal/index.d.ts +0 -5
  98. package/dist/es/modal/interface.d.ts +0 -91
  99. package/dist/es/modal/modal.d.ts +0 -5
  100. package/dist/es/notauthpage/index.css +0 -0
  101. package/dist/es/notauthpage/index.d.ts +0 -5
  102. package/dist/es/notauthpage/notAuthPage.d.ts +0 -8
  103. package/dist/es/notroutepage/index.css +0 -0
  104. package/dist/es/notroutepage/index.d.ts +0 -5
  105. package/dist/es/notroutepage/notRoutePage.d.ts +0 -8
  106. package/dist/es/operationbtn/index.d.ts +0 -5
  107. package/dist/es/operationbtn/interface.d.ts +0 -34
  108. package/dist/es/operationbtn/operationBtn.d.ts +0 -6
  109. package/dist/es/pagination/index.css +0 -1
  110. package/dist/es/pagination/index.d.ts +0 -5
  111. package/dist/es/pagination/pagination.d.ts +0 -8
  112. package/dist/es/placeholder/index.css +0 -1
  113. package/dist/es/placeholder/index.d.ts +0 -5
  114. package/dist/es/placeholder/interface.d.ts +0 -12
  115. package/dist/es/placeholder/placeholder.d.ts +0 -5
  116. package/dist/es/print/index.css +0 -1
  117. package/dist/es/print/index.d.ts +0 -5
  118. package/dist/es/print/interface.d.ts +0 -69
  119. package/dist/es/print/print-page.d.ts +0 -6
  120. package/dist/es/print/print.d.ts +0 -5
  121. package/dist/es/protectedroute/index.d.ts +0 -24
  122. package/dist/es/select/hooks.d.ts +0 -16
  123. package/dist/es/select/index.css +0 -1
  124. package/dist/es/select/index.d.ts +0 -5
  125. package/dist/es/select/interface.d.ts +0 -82
  126. package/dist/es/select/select-render.d.ts +0 -31
  127. package/dist/es/select/select.d.ts +0 -5
  128. package/dist/es/sortable/index.d.ts +0 -5
  129. package/dist/es/sortable/sortable-item.d.ts +0 -14
  130. package/dist/es/sortable/sortable.d.ts +0 -13
  131. package/dist/es/suspensecomponent/index.d.ts +0 -10
  132. package/dist/es/table/components/TitleDirectionColumn.d.ts +0 -11
  133. package/dist/es/table/index.css +0 -1
  134. package/dist/es/table/index.d.ts +0 -5
  135. package/dist/es/table/interface.d.ts +0 -503
  136. package/dist/es/table/table.d.ts +0 -11
  137. package/dist/es/tabs/index.css +0 -1
  138. package/dist/es/tabs/index.d.ts +0 -5
  139. package/dist/es/tabs/interface.d.ts +0 -52
  140. package/dist/es/tabs/tabs.d.ts +0 -5
  141. package/dist/es/tag/index.css +0 -1
  142. package/dist/es/tag/index.d.ts +0 -5
  143. package/dist/es/tag/interface.d.ts +0 -9
  144. package/dist/es/tag/tag.d.ts +0 -5
  145. package/dist/es/timepicker/index.d.ts +0 -19
  146. package/dist/es/title/index.css +0 -1
  147. package/dist/es/title/index.d.ts +0 -5
  148. package/dist/es/title/interface.d.ts +0 -35
  149. package/dist/es/title/title.d.ts +0 -5
  150. package/dist/es/tree/index.css +0 -1
  151. package/dist/es/tree/index.d.ts +0 -5
  152. package/dist/es/tree/interface.d.ts +0 -44
  153. package/dist/es/tree/tree.d.ts +0 -5
  154. package/dist/es/treeselect/index.css +0 -1
  155. package/dist/es/treeselect/index.d.ts +0 -5
  156. package/dist/es/treeselect/interface.d.ts +0 -32
  157. package/dist/es/treeselect/treeSelect.d.ts +0 -5
  158. package/dist/es/uploadlist/index.css +0 -1
  159. package/dist/es/uploadlist/index.d.ts +0 -5
  160. package/dist/es/uploadlist/interface.d.ts +0 -107
  161. package/dist/es/uploadlist/uploadList.d.ts +0 -5
  162. package/dist/es/watermark/index.css +0 -1
  163. package/dist/es/watermark/index.d.ts +0 -5
  164. package/dist/es/watermark/interface.d.ts +0 -23
  165. package/dist/es/watermark/watermark.d.ts +0 -5
  166. package/dist/es/zttransfer/index.css +0 -1
  167. package/dist/es/zttransfer/index.d.ts +0 -5
  168. package/dist/es/zttransfer/interface.d.ts +0 -38
  169. package/dist/es/zttransfer/zt-transfer.d.ts +0 -6
  170. package/dist/index.build.d.ts +0 -66
  171. package/dist/index.dark.css +0 -2
  172. package/dist/index.default.css +0 -2
@@ -1,4 +1,4 @@
1
- import { __spreadArray, __assign } from '../_virtual/_tslib.js';
1
+ import { __assign, __spreadArray } from '../_virtual/_tslib.js';
2
2
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
3
3
  import { memo, forwardRef, useImperativeHandle, useMemo, useCallback } from 'react';
4
4
  import { HTML5Backend } from '../node_modules/react-dnd-html5-backend/dist/index.js';
@@ -10,15 +10,25 @@ import MoreConfig from './moreConfig.js';
10
10
  import SettingOutlined from '../node_modules/@ant-design/icons/es/icons/SettingOutlined.js';
11
11
  import { DndProvider } from '../node_modules/react-dnd/dist/core/DndProvider.js';
12
12
  import ButtonCom from '../button/button.js';
13
- import { Drawer, Checkbox } from 'antd';
13
+ import { message, Drawer, Checkbox } from 'antd';
14
14
 
15
+ // 工具函数,排序分区
16
+ var sortDynamicListByType = function (list) {
17
+ var dimensionList = list.filter(function (item) { return item.isDimension; });
18
+ var fieldList = list.filter(function (item) { return !item.isDimension; });
19
+ var leftList = fieldList.filter(function (item) { return item.fixed === "left"; });
20
+ var middleList = fieldList.filter(function (item) { return !item.fixed; });
21
+ var rightList = fieldList.filter(function (item) { return item.fixed === "right"; });
22
+ return __spreadArray(__spreadArray(__spreadArray(__spreadArray([], dimensionList, true), leftList, true), middleList, true), rightList, true);
23
+ };
15
24
  // 这里操作的一直都是内部设置的list
16
25
  var DynamicDrawer = function (props, ref) {
17
- var list = props.list, dynamicKey = props.dynamicKey, parentDynamicKey = props.parentDynamicKey, _a = props.title, title = _a === void 0 ? "自定义配置" : _a, onCurrentListChange = props.onCurrentListChange, isMore = props.isMore, isFixed = props.isFixed;
26
+ var list = props.list, dynamicKey = props.dynamicKey, parentDynamicKey = props.parentDynamicKey, _a = props.title, title = _a === void 0 ? "自定义配置" : _a, onCurrentListChange = props.onCurrentListChange, isMore = props.isMore, isFixed = props.isFixed, isDimensionDynamic = props.isDimensionDynamic;
18
27
  // 根据外部传入的list 和本地存储信息 生成一个内部的currentDynamicList
19
28
  // 这个currentDynamicList 是可以是负责显示最终结果的
20
29
  // tempDynamicList 是操作时的临时变量 可能操作后不点击确认 直接点击取消 那么需要重置到之前的状态
21
30
  var _b = useDynamic(dynamicKey, parentDynamicKey, list), currentDynamicList = _b.currentDynamicList, setCurrentDynamicList = _b.setCurrentDynamicList, tempDynamicList = _b.tempDynamicList, setTempDynamicList = _b.setTempDynamicList;
31
+ console.log("tempDynamicList", tempDynamicList);
22
32
  var _c = useDrawer(currentDynamicList, setCurrentDynamicList, dynamicKey, parentDynamicKey, setTempDynamicList, list, onCurrentListChange), visible = _c.visible, setVisible = _c.setVisible, onClose = _c.onClose, onReset = _c.onReset, onSure = _c.onSure;
23
33
  // 像外部暴露方法
24
34
  useImperativeHandle(ref, function () {
@@ -38,8 +48,34 @@ var DynamicDrawer = function (props, ref) {
38
48
  });
39
49
  return _checkedValues;
40
50
  }, [tempDynamicList]);
51
+ // 根据isDimension分区
52
+ var _d = useMemo(function () {
53
+ var dimensionList = tempDynamicList.filter(function (item) { return item.isDimension; });
54
+ var fieldList = tempDynamicList.filter(function (item) { return !item.isDimension; });
55
+ return { dimensionList: dimensionList, fieldList: fieldList };
56
+ }, [tempDynamicList]), dimensionList = _d.dimensionList, fieldList = _d.fieldList;
57
+ // 排序优先级判断
58
+ var isDimensionPriority = useCallback(function (dragIndex, hoverIndex) {
59
+ // 从上到下还是从下到上拖动
60
+ var isUp = dragIndex < hoverIndex;
61
+ var startIndex = isUp ? dragIndex : hoverIndex;
62
+ var endIndex = isUp ? hoverIndex : dragIndex;
63
+ var oldItem = tempDynamicList[startIndex];
64
+ var dragItem = tempDynamicList[endIndex];
65
+ if ((oldItem === null || oldItem === void 0 ? void 0 : oldItem.dimensionPriority) !== undefined) {
66
+ if ((dragItem === null || dragItem === void 0 ? void 0 : dragItem.dimensionPriority) === undefined ||
67
+ (oldItem === null || oldItem === void 0 ? void 0 : oldItem.dimensionPriority) < (dragItem === null || dragItem === void 0 ? void 0 : dragItem.dimensionPriority)) {
68
+ message.warning("".concat(dragItem === null || dragItem === void 0 ? void 0 : dragItem.label, "\u4E0D\u80FD\u6392\u5E8F\u5230").concat(oldItem === null || oldItem === void 0 ? void 0 : oldItem.label).concat(isUp ? "前面" : "后面"));
69
+ return false;
70
+ }
71
+ }
72
+ return true;
73
+ }, [tempDynamicList]);
41
74
  // 拖拽
42
75
  var onMoveItem = useCallback(function (dragIndex, hoverIndex) {
76
+ if (!isDimensionPriority(dragIndex, hoverIndex)) {
77
+ return;
78
+ }
43
79
  // 由于对于固定列,不能进行拖拽排序,所以需要找出所有包含固定列的属性出来
44
80
  setTempDynamicList(function (preDynamicList) {
45
81
  var dragCard = preDynamicList[dragIndex];
@@ -50,15 +86,15 @@ var DynamicDrawer = function (props, ref) {
50
86
  ],
51
87
  });
52
88
  // 处理左浮动 右浮动数据。需要重新排序
53
- var leftList = currentList.filter(function (item) { return item.fixed === "left"; });
54
- var middleList = currentList.filter(function (item) { return !item.fixed; });
55
- var rightList = currentList.filter(function (item) { return item.fixed === "right"; });
56
- return __spreadArray(__spreadArray(__spreadArray([], leftList, true), middleList, true), rightList, true);
89
+ return sortDynamicListByType(currentList);
57
90
  });
58
- }, [setTempDynamicList]);
91
+ }, [setTempDynamicList, isDimensionPriority]);
59
92
  // 子元素拖拽
60
93
  var onChildMoveItem = useCallback(function (pIndex, pKey) {
61
94
  return function (dragIndex, hoverIndex) {
95
+ if (!isDimensionPriority(dragIndex, hoverIndex)) {
96
+ return;
97
+ }
62
98
  // 由于对于固定列,不能进行拖拽排序,所以需要找出所有包含固定列的属性出来
63
99
  setTempDynamicList(function (preDynamicList) {
64
100
  var newDynamicList = preDynamicList.map(function (item) { return (__assign({}, item)); }) || [];
@@ -79,21 +115,42 @@ var DynamicDrawer = function (props, ref) {
79
115
  return __spreadArray(__spreadArray(__spreadArray([], leftList, true), middleList, true), rightList, true);
80
116
  });
81
117
  };
82
- }, [setTempDynamicList]);
118
+ }, [setTempDynamicList, isDimensionPriority]);
83
119
  // 确认
84
120
  var onSureHandle = function () {
85
121
  onSure && onSure(tempDynamicList);
86
122
  };
87
123
  var onCheckboxChange = function (checkedValues) {
88
- var newDynamicList = tempDynamicList.map(function (item) { return (__assign({}, item)); }) || [];
89
- newDynamicList.forEach(function (item) {
90
- if (!checkedValues.find(function (value) { return value === item.key; })) {
91
- item.checked = false;
92
- }
93
- else {
94
- item.checked = true;
95
- }
124
+ // 1. 构建互斥关系映射
125
+ var exclusiveMap = {};
126
+ tempDynamicList.forEach(function (item) {
127
+ var key = item.key;
128
+ var exclusiveKeys = (item.dimensionExclusive || "")
129
+ .split(",")
130
+ .map(function (k) { return k.trim(); })
131
+ .filter(Boolean);
132
+ exclusiveMap[key] = new Set(__spreadArray([key], exclusiveKeys, true));
96
133
  });
134
+ // 2. 检查本次勾选是否有互斥
135
+ var hasConflict = false;
136
+ for (var i = 0; i < checkedValues.length; i++) {
137
+ for (var j = i + 1; j < checkedValues.length; j++) {
138
+ var keyA = checkedValues[i];
139
+ var keyB = checkedValues[j];
140
+ if (exclusiveMap[keyA] && exclusiveMap[keyA].has(keyB)) {
141
+ hasConflict = true;
142
+ break;
143
+ }
144
+ }
145
+ if (hasConflict)
146
+ break;
147
+ }
148
+ if (hasConflict) {
149
+ message.warning("所选项存在互斥关系,不能同时勾选!");
150
+ return; // 拦截本次勾选
151
+ }
152
+ // 3. 正常更新
153
+ var newDynamicList = tempDynamicList.map(function (item) { return (__assign(__assign({}, item), { checked: checkedValues.includes(item.key) })); });
97
154
  setTempDynamicList(newDynamicList);
98
155
  };
99
156
  var onChildCheckboxChange = function (checkedValues, pIndex) {
@@ -112,7 +169,7 @@ var DynamicDrawer = function (props, ref) {
112
169
  }
113
170
  });
114
171
  newDynamicList[pIndex].children = changeCList;
115
- setTempDynamicList(newDynamicList);
172
+ setTempDynamicList(sortDynamicListByType(newDynamicList));
116
173
  };
117
174
  // 后期可能需要拓展功能
118
175
  var onMoreChange = function (key, result) {
@@ -120,22 +177,22 @@ var DynamicDrawer = function (props, ref) {
120
177
  var currentIndex = newDynamicList.findIndex(function (item) { return key === item.key; });
121
178
  var currentItem = newDynamicList[currentIndex];
122
179
  // 如果什么都没改
123
- if (currentItem.fixed === result.fixed) {
180
+ if (currentItem.fixed === result.fixed &&
181
+ currentItem.isDimensionSum === result.isDimensionSum) {
124
182
  return;
125
183
  }
126
184
  // 可固定的列 只能是首尾的列
127
185
  currentItem.fixed = result.fixed;
128
- var leftList = newDynamicList.filter(function (item) { return item.fixed === "left"; });
129
- var middleList = newDynamicList.filter(function (item) { return !item.fixed; });
130
- var rightList = newDynamicList.filter(function (item) { return item.fixed === "right"; });
131
- setTempDynamicList(__spreadArray(__spreadArray(__spreadArray([], leftList, true), middleList, true), rightList, true));
186
+ currentItem.isDimensionSum = result.isDimensionSum;
187
+ setTempDynamicList(sortDynamicListByType(newDynamicList));
132
188
  };
133
- /**底部按钮 */
134
- var renderFooter = function () { return (jsxs(Fragment, { children: [jsx(ButtonCom, __assign({ type: "default", onClick: onClose }, { children: "\u53D6\u6D88" })), jsx(ButtonCom, __assign({ type: "default", onClick: onReset }, { children: "\u91CD\u7F6E" })), jsx(ButtonCom, __assign({ type: "primary", onClick: onSureHandle }, { children: "\u786E\u5B9A" }))] })); };
135
- return (jsx(Drawer, __assign({ className: "dynamic-drawer", title: jsxs("div", { children: [jsx(SettingOutlined, { style: { fontSize: 16 } }), jsxs("span", __assign({ className: "search-drawer--title-text" }, { children: [title, jsx("span", { children: "\uFF08\u62D6\u62FD\u6392\u5E8F\uFF09" })] }))] }), width: 300, placement: "right", open: visible, closable: false, maskClosable: false, footer: renderFooter() }, { children: jsx(Checkbox.Group, __assign({ value: checkedValues, onChange: onCheckboxChange }, { children: jsx(DndProvider, __assign({ backend: HTML5Backend, context: window }, { children: tempDynamicList.map(function (item, index) {
136
- var key = item.key, disabled = item.disabled, label = item.label, fixed = item.fixed, children = item.children;
137
- // 得到当前选项下的子元素选中项
138
- // TODO: 这里可以继续用递归的模式创造无限下层
189
+ // 渲染区块
190
+ var renderSection = function (list, indexOffset, title) {
191
+ if (indexOffset === void 0) { indexOffset = 0; }
192
+ if (!list.length)
193
+ return null;
194
+ return (jsxs("div", { children: [title && jsx("div", __assign({ className: "dynamic-drawer-section-title" }, { children: title })), list.map(function (item, index) {
195
+ var key = item.key, disabled = item.disabled, label = item.label, fixed = item.fixed, children = item.children, isDimensionSum = item.isDimensionSum, isDimension = item.isDimension;
139
196
  var childrenCheckedValues = [];
140
197
  if (Array.isArray(children)) {
141
198
  children.forEach(function (item) {
@@ -144,15 +201,19 @@ var DynamicDrawer = function (props, ref) {
144
201
  }
145
202
  });
146
203
  }
147
- return (jsxs(Sortable, __assign({ type: "search-drawer", index: index, onMoveItem: onMoveItem }, { children: [jsxs("div", __assign({ className: "zt-sortable--item" }, { children: [jsx(Checkbox, __assign({ value: key, disabled: disabled }, { children: label || key })), isMore && (!children || children.length === 0) && (jsx(MoreConfig, { fixed: fixed || "", onChange: function (result) {
204
+ return (jsxs(Sortable, __assign({ type: "search-drawer", index: indexOffset + index, onMoveItem: onMoveItem }, { children: [jsxs("div", __assign({ className: "zt-sortable--item dynamic-drawer-card" }, { children: [jsx(Checkbox, __assign({ value: key, disabled: disabled }, { children: label || key })), isMore && (!children || children.length === 0) && (jsx(MoreConfig, { fixed: fixed || "", isDimensionSum: isDimensionSum, onChange: function (result) {
148
205
  onMoreChange(key, result);
149
- }, isFixed: isFixed }))] })), Array.isArray(children) && children.length > 0 ? (jsx("div", __assign({ className: "zt-sortable--children" }, { children: jsx(Checkbox.Group, __assign({ value: childrenCheckedValues, onChange: function (checkedValues) {
150
- onChildCheckboxChange(checkedValues, index);
206
+ }, isSum: isDimension, isFixed: isFixed }))] })), Array.isArray(children) && children.length > 0 ? (jsx("div", __assign({ className: "zt-sortable--children dynamic-drawer-children", style: { marginLeft: 32, marginBottom: 8 } }, { children: jsx(Checkbox.Group, __assign({ value: childrenCheckedValues, onChange: function (checkedValues) {
207
+ onChildCheckboxChange(checkedValues, tempDynamicList.indexOf(item));
151
208
  } }, { children: children.map(function (cItem, cIndex) {
152
209
  var cKey = cItem.key, cLabel = cItem.label, cDisabled = cItem.disabled;
153
- return (jsx(Sortable, __assign({ type: "search-drawer-".concat(key), index: cIndex, onMoveItem: onChildMoveItem(index, key) }, { children: jsx(Checkbox, __assign({ value: cKey, disabled: cDisabled }, { children: cLabel || cKey })) }), cKey));
210
+ return (jsx(Sortable, __assign({ type: "search-drawer-".concat(key), index: cIndex, onMoveItem: onChildMoveItem(tempDynamicList.indexOf(item), key) }, { children: jsx("div", __assign({ className: "dynamic-drawer-card dynamic-drawer-child-card" }, { children: jsx(Checkbox, __assign({ value: cKey, disabled: cDisabled }, { children: cLabel || cKey })) })) }), cKey));
154
211
  }) })) }))) : null] }), key));
155
- }) })) })) })));
212
+ })] }));
213
+ };
214
+ /**底部按钮 */
215
+ var renderFooter = function () { return (jsxs(Fragment, { children: [jsx(ButtonCom, __assign({ type: "default", onClick: onClose }, { children: "\u53D6\u6D88" })), jsx(ButtonCom, __assign({ type: "default", onClick: onReset }, { children: "\u91CD\u7F6E" })), jsx(ButtonCom, __assign({ type: "primary", onClick: onSureHandle }, { children: "\u786E\u5B9A" }))] })); };
216
+ return (jsx(Drawer, __assign({ className: "dynamic-drawer", title: jsxs("div", { children: [jsx(SettingOutlined, { style: { fontSize: 16 } }), jsxs("span", __assign({ className: "search-drawer--title-text" }, { children: [title, jsx("span", { children: "\uFF08\u62D6\u62FD\u6392\u5E8F\uFF09" })] }))] }), width: 300, placement: "right", open: visible, closable: false, maskClosable: false, footer: renderFooter() }, { children: jsx(Checkbox.Group, __assign({ value: checkedValues, onChange: onCheckboxChange }, { children: jsxs(DndProvider, __assign({ backend: HTML5Backend, context: window }, { children: [isDimensionDynamic && renderSection(dimensionList, 0, "维度配置"), renderSection(fieldList, dimensionList.length, isDimensionDynamic ? "字段配置" : undefined)] })) })) })));
156
217
  };
157
218
  DynamicDrawer.displayName = "ZTXK_WEBUI_DynamicDrawer";
158
219
  var DynamicDrawer$1 = memo(forwardRef(DynamicDrawer));
@@ -11,7 +11,7 @@ import SettingOutlined from '../node_modules/@ant-design/icons/es/icons/SettingO
11
11
  // 内部根据这个list初始值,生成一个内部的currentDynamicList 作为操作 显示的数据
12
12
  // 当内部的currentDynamicList 发生改变的时候 触发currentDynamicListChange事件 通知外部,数据发生改变了
13
13
  var DynamicSetting = function (props, ref) {
14
- var dynamicKey = props.dynamicKey, parentDynamicKey = props.parentDynamicKey, defaultList = props.defaultList, children = props.children, title = props.title, onCurrentListChange = props.onCurrentListChange, hiddenOperationIcon = props.hiddenOperationIcon, isMore = props.isMore, isFixed = props.isFixed;
14
+ var dynamicKey = props.dynamicKey, parentDynamicKey = props.parentDynamicKey, defaultList = props.defaultList, children = props.children, title = props.title, onCurrentListChange = props.onCurrentListChange, hiddenOperationIcon = props.hiddenOperationIcon, isMore = props.isMore, isFixed = props.isFixed, isDimensionDynamic = props.isDimensionDynamic;
15
15
  // 内部初始list
16
16
  var _a = useState(defaultList), list = _a[0], setList = _a[1];
17
17
  var drawerRef = useRef({});
@@ -40,7 +40,7 @@ var DynamicSetting = function (props, ref) {
40
40
  },
41
41
  };
42
42
  });
43
- return Array.isArray(list) && list.length > 0 ? (jsxs("div", __assign({ className: "ztxk-dynamic-setting" }, { children: [hiddenOperationIcon ? null : (jsx("div", __assign({ onClick: function () { var _a; return (_a = drawerRef.current) === null || _a === void 0 ? void 0 : _a.setVisible(true); } }, { children: children ? (children) : (jsx(SettingOutlined, { style: { fontSize: 18, color: "#768696" } })) }))), jsx(DynamicDrawer, { list: list, dynamicKey: dynamicKey, parentDynamicKey: parentDynamicKey, ref: drawerRef, title: title, onCurrentListChange: onCurrentListChange, isFixed: isFixed, isMore: isMore })] }))) : null;
43
+ return Array.isArray(list) && list.length > 0 ? (jsxs("div", __assign({ className: "ztxk-dynamic-setting" }, { children: [hiddenOperationIcon ? null : (jsx("div", __assign({ onClick: function () { var _a; return (_a = drawerRef.current) === null || _a === void 0 ? void 0 : _a.setVisible(true); } }, { children: children ? (children) : (jsx(SettingOutlined, { style: { fontSize: 18, color: "#768696" } })) }))), jsx(DynamicDrawer, { list: list, dynamicKey: dynamicKey, parentDynamicKey: parentDynamicKey, ref: drawerRef, title: title, onCurrentListChange: onCurrentListChange, isFixed: isFixed, isMore: isMore, isDimensionDynamic: isDimensionDynamic })] }))) : null;
44
44
  };
45
45
  DynamicSetting.displayName = "ZTXK_WEBUI_DynamicSetting";
46
46
  var DynamicSetting$1 = memo(forwardRef(DynamicSetting));
@@ -3,16 +3,20 @@ import { jsxs, jsx } from 'react/jsx-runtime';
3
3
  import { memo, useState } from 'react';
4
4
  import { useLatest } from 'ahooks';
5
5
  import MenuOutlined from '../node_modules/@ant-design/icons/es/icons/MenuOutlined.js';
6
- import { Radio, Dropdown } from 'antd';
6
+ import { Radio, Switch, Dropdown } from 'antd';
7
7
 
8
8
  var MoreConfig = function (_a) {
9
- var fixed = _a.fixed, onChange = _a.onChange, isFixed = _a.isFixed;
9
+ var fixed = _a.fixed, onChange = _a.onChange, isFixed = _a.isFixed, isSum = _a.isSum, isDimensionSum = _a.isDimensionSum;
10
+ var onChangeLastestRef = useLatest(onChange);
10
11
  var _b = useState(false), open = _b[0], setOpen = _b[1];
11
12
  var _c = useState(fixed), fixedValue = _c[0], setFixedValue = _c[1];
12
- var onChangeLastestRef = useLatest(onChange);
13
13
  var onFixedChange = function (e) {
14
14
  setFixedValue(e.target.value);
15
15
  };
16
+ var _d = useState(isDimensionSum || false), sumChecked = _d[0], setSumChecked = _d[1];
17
+ var onSumChange = function (checked) {
18
+ setSumChecked(checked);
19
+ };
16
20
  var fixedItem = {
17
21
  label: (jsxs("div", { children: ["\u56FA\u5B9A\uFF1A", jsxs(Radio.Group, __assign({ name: "dynamic-fixed", value: fixedValue, onChange: onFixedChange, optionType: "button", buttonStyle: "solid" }, { children: [jsx(Radio, __assign({ value: "left" }, { children: "\u5DE6" })), jsx(Radio, __assign({ value: "right" }, { children: "\u53F3" })), jsx(Radio, __assign({ value: "" }, { children: "\u65E0" }))] }))] })),
18
22
  key: "0",
@@ -21,12 +25,19 @@ var MoreConfig = function (_a) {
21
25
  if (isFixed) {
22
26
  items.push(fixedItem);
23
27
  }
28
+ if (isSum) {
29
+ items.push({
30
+ label: (jsxs("div", { children: ["\u5408\u8BA1\uFF1A", jsx(Switch, { checked: sumChecked, onChange: onSumChange })] })),
31
+ key: "1",
32
+ });
33
+ }
24
34
  return (jsx(Dropdown, __assign({ menu: { items: items }, trigger: ["click"], open: open, onOpenChange: function (open) {
25
35
  setOpen(open);
26
36
  if (!open) {
27
37
  onChangeLastestRef.current &&
28
38
  onChangeLastestRef.current({
29
39
  fixed: fixedValue,
40
+ isDimensionSum: sumChecked,
30
41
  });
31
42
  }
32
43
  }, placement: "bottomLeft", arrow: true, overlayClassName: "ztxk-dynamic--more--drop" }, { children: jsx(MenuOutlined, { className: "ztxk-dynamic--more" }) })));
@@ -15,6 +15,9 @@ function recursionDynamicItems(list, currentDynamicList) {
15
15
  currentData.label = result.label;
16
16
  currentData.isFind = true; // 代表当前这个字段被找到
17
17
  currentData.disabled = result.disabled;
18
+ currentData.isDimension = result.isDimension;
19
+ currentData.dimensionPriority = result.dimensionPriority;
20
+ currentData.dimensionExclusive = result.dimensionExclusive;
18
21
  // 判断是否是多级表头,这里的逻辑处理是为了兼容
19
22
  // 后面改造成多级表头的情况
20
23
  if (item.children) {
@@ -4,6 +4,10 @@ var INNER_TABLE_PAGINATION_POSITION = ["bottomLeft"];
4
4
  var INNER_TABLE_PAGINATION_PAGESIZEOPTIONS = ["10", "20", "30", "40"];
5
5
  var ERROR_TD_CLASSNAME = "error-td";
6
6
  var ASCEND = "ascend"; // 升序
7
- var DESCEND = "descend"; // 降序
7
+ var DESCEND = "descend"; // 降序
8
+ // 合并后数据标识
9
+ var MERGE_KEY = "__row_id";
10
+ var MERGE_ROW_SPANS = "__row_spans";
11
+ var MERGE_INDEX = "__row_index";
8
12
 
9
- export { ASCEND, DESCEND, ERROR_TD_CLASSNAME, INNER_TABLE_PAGINATION_PAGESIZEOPTIONS, INNER_TABLE_PAGINATION_POSITION, TABLE_DRAG_ROW_TYPE, TABLE_DYNAMIC_KEY };
13
+ export { ASCEND, DESCEND, ERROR_TD_CLASSNAME, INNER_TABLE_PAGINATION_PAGESIZEOPTIONS, INNER_TABLE_PAGINATION_POSITION, MERGE_INDEX, MERGE_KEY, MERGE_ROW_SPANS, TABLE_DRAG_ROW_TYPE, TABLE_DYNAMIC_KEY };
@@ -1,7 +1,9 @@
1
- import { __assign } from '../_virtual/_tslib.js';
2
- import { useCallback, useRef, useState, useEffect } from 'react';
1
+ import { __assign, __spreadArray } from '../_virtual/_tslib.js';
2
+ import { useCallback, useRef, useState, useEffect, useMemo } from 'react';
3
3
  import update from '../node_modules/immutability-helper/index.js';
4
4
  import { getInnerIndex } from './useInnerPagination.js';
5
+ import { flattenRecordsOptimized } from './utils.js';
6
+ import { MERGE_INDEX, MERGE_ROW_SPANS } from './constant.js';
5
7
 
6
8
  /**
7
9
  * @param dataSourceRef 数据引用
@@ -326,6 +328,156 @@ function useCalcScrollY(isAutoScrollY, subHeight, id) {
326
328
  }
327
329
  }, [isAutoScrollY, subHeight, id]);
328
330
  return tableHeight;
331
+ }
332
+ /**
333
+ * 获取合并key值
334
+ */
335
+ var useMergeKeys = function (columns, isAutoMerge) {
336
+ var mergeKeys = useMemo(function () {
337
+ if (isAutoMerge) {
338
+ return columns
339
+ .filter(function (item) { return item.isMerge && item.key !== MERGE_INDEX; })
340
+ .map(function (item) { return item.key; });
341
+ }
342
+ return undefined;
343
+ }, [isAutoMerge, columns]);
344
+ return mergeKeys;
345
+ };
346
+ /**
347
+ * 自动合并的一些处理
348
+ */
349
+ function useAutoMerge(dataSource, columns, _a) {
350
+ var mode = _a.mode, isAutoMerge = _a.isAutoMerge;
351
+ // 计算需要合并的字段key集合
352
+ var mergeKeys = useMergeKeys(columns, isAutoMerge);
353
+ var firstMergeKey = mergeKeys === null || mergeKeys === void 0 ? void 0 : mergeKeys[0];
354
+ // 需要合计的字段
355
+ var summaryKeys = useMemo(function () {
356
+ return columns.filter(function (item) { return item.isSummary; }).map(function (item) { return item.key; });
357
+ }, [columns]);
358
+ // 开启维度合并的维度字段
359
+ var dimensionSummaryKeys = useMemo(function () {
360
+ return columns
361
+ .filter(function (item) { return item.isDimensionSum; })
362
+ .map(function (item) { return item.key; });
363
+ }, [columns]);
364
+ var newDataSource = useMemo(function () {
365
+ if (!isAutoMerge)
366
+ return dataSource;
367
+ else {
368
+ // 多字段合并
369
+ if (!mergeKeys)
370
+ return dataSource;
371
+ else {
372
+ var newDataSource_2 = flattenRecordsOptimized(__spreadArray([], (dataSource || []), true), mergeKeys, dimensionSummaryKeys, summaryKeys);
373
+ return newDataSource_2;
374
+ }
375
+ }
376
+ }, [dataSource, isAutoMerge, mergeKeys, dimensionSummaryKeys, summaryKeys]);
377
+ var newColumns = useMemo(function () {
378
+ var _columns = columns;
379
+ if (mode === "index") {
380
+ // 自动添加序号列,支持合并不参与自定义配置
381
+ _columns = __spreadArray([
382
+ {
383
+ title: "序号",
384
+ width: 60,
385
+ key: "index",
386
+ fixed: "left",
387
+ align: "center",
388
+ isMerge: isAutoMerge,
389
+ isFilter: false,
390
+ render: function (value, record, index) {
391
+ if (isAutoMerge) {
392
+ return record[MERGE_INDEX] + 1;
393
+ }
394
+ return "".concat(index + 1);
395
+ },
396
+ }
397
+ ], _columns, true);
398
+ }
399
+ // 递归处理多级表头,自动补充render/合并/编辑等逻辑
400
+ var newColumns = _columns.map(function (item) {
401
+ return getColumnItem(item);
402
+ });
403
+ return newColumns;
404
+ // 处理单个列配置
405
+ function getItem(item) {
406
+ // 合并单元格处理
407
+ if (isAutoMerge && item.isMerge) {
408
+ item.onCell = function (record) {
409
+ var _a;
410
+ var key = item.key;
411
+ if (item.key === MERGE_INDEX) {
412
+ key = firstMergeKey;
413
+ }
414
+ return {
415
+ rowSpan: (_a = record === null || record === void 0 ? void 0 : record[MERGE_ROW_SPANS]) === null || _a === void 0 ? void 0 : _a[key],
416
+ };
417
+ };
418
+ }
419
+ return item;
420
+ }
421
+ // 递归处理多级表头
422
+ function getColumnItem(item) {
423
+ if (item.children) {
424
+ return __assign(__assign({}, item), { children: item.children.map(function (item) {
425
+ return getItem(item);
426
+ }) });
427
+ }
428
+ else {
429
+ return getItem(item);
430
+ }
431
+ }
432
+ }, [columns, mode, isAutoMerge, firstMergeKey]);
433
+ return [newDataSource, newColumns];
434
+ }
435
+ /**
436
+ * 处理合并后的加减和选择框
437
+ */
438
+ function useMergeAddAndDel(_a) {
439
+ var addAndDelProps = _a.addAndDelProps, rowSelection = _a.rowSelection, columns = _a.columns, isAutoMerge = _a.isAutoMerge;
440
+ // 计算需要合并的字段key集合
441
+ var mergeKeys = useMergeKeys(columns, isAutoMerge);
442
+ var firstMergeKey = mergeKeys === null || mergeKeys === void 0 ? void 0 : mergeKeys[0];
443
+ /**
444
+ * 选中行配置优化
445
+ * - 合并行时,自动处理rowSpan,保证勾选框只显示在合并单元格的首行
446
+ * - 兼容原生rowSelection所有配置
447
+ */
448
+ var newRowSelection = useMemo(function () {
449
+ if (isAutoMerge && rowSelection) {
450
+ return __assign(__assign({}, rowSelection), {
451
+ // 关键:合并行时,勾选框只显示在rowSpan>0的单元格
452
+ renderCell: function (_v, record, _i, originNode) {
453
+ var _a;
454
+ return {
455
+ props: {
456
+ rowSpan: (_a = record === null || record === void 0 ? void 0 : record[MERGE_ROW_SPANS]) === null || _a === void 0 ? void 0 : _a[firstMergeKey],
457
+ },
458
+ children: originNode,
459
+ };
460
+ } });
461
+ }
462
+ return rowSelection;
463
+ }, [rowSelection, isAutoMerge, firstMergeKey]);
464
+ /**
465
+ * 增删行按钮配置优化
466
+ * - 合并行时,按钮只显示在rowSpan>0的单元格
467
+ */
468
+ var newAddAndDelProps = useMemo(function () {
469
+ if (isAutoMerge) {
470
+ return __assign(__assign({}, addAndDelProps), { onCell: function (record) {
471
+ var _a;
472
+ console.log(record, firstMergeKey, "record");
473
+ return {
474
+ rowSpan: (_a = record === null || record === void 0 ? void 0 : record[MERGE_ROW_SPANS]) === null || _a === void 0 ? void 0 : _a[firstMergeKey],
475
+ };
476
+ } });
477
+ }
478
+ return addAndDelProps;
479
+ }, [addAndDelProps, isAutoMerge, firstMergeKey]);
480
+ return [newRowSelection, newAddAndDelProps];
329
481
  }
330
482
 
331
- export { useAddAndDelChange, useCalcScrollY, useCustomSort, useEditChange, useMoveRowChange, useScuRfresh };
483
+ export { useAddAndDelChange, useAutoMerge, useCalcScrollY, useCustomSort, useEditChange, useMergeAddAndDel, useMoveRowChange, useScuRfresh };
@@ -17,7 +17,7 @@ import { useColumns } from './useColumns.js';
17
17
  import { useDynamicListByColumns } from './useDynamicListByColumns.js';
18
18
  import useSummary from './useSummary.js';
19
19
  import useInnerPagination, { getInnerIndex } from './useInnerPagination.js';
20
- import { useScuRfresh, useCustomSort, useCalcScrollY, useEditChange, useMoveRowChange, useAddAndDelChange } from './hooks.js';
20
+ import { useScuRfresh, useCustomSort, useCalcScrollY, useEditChange, useMoveRowChange, useAddAndDelChange, useMergeAddAndDel, useAutoMerge } from './hooks.js';
21
21
  import { HTML5Backend } from '../node_modules/react-dnd-html5-backend/dist/index.js';
22
22
  import { VList, scrollTo } from '../node_modules/virtuallist-antd/dist/index.es.js';
23
23
  import useTableValidate, { tableValidate } from './useTableValidate.js';
@@ -38,7 +38,7 @@ import { DndProvider } from '../node_modules/react-dnd/dist/core/DndProvider.js'
38
38
  // completed: 实现从execl复制到表格中的功能
39
39
  var Table = function (props) {
40
40
  // console.log("表格渲染");
41
- 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, dynamicVersion = props.dynamicVersion, isRemeberFilter = props.isRemeberFilter, _c = props.isOrderUpdateData, isOrderUpdateData = _c === void 0 ? true : _c, hiddenDynamicIcon = props.hiddenDynamicIcon, _columns = props.columns, dataSource = props.dataSource, onTableChange = props.onTableChange, isEdit = props.isEdit, isMove = props.isMove, isAdd = props.isAdd, hiddenAddBtnHandle = props.hiddenAddBtnHandle, _d = props.isTheadTitleAdd, isTheadTitleAdd = _d === void 0 ? true : _d, addMode = props.addMode, addCallback = props.addCallback, isDel = props.isDel, delPopTitle = props.delPopTitle, hiddenDelBtnHandle = props.hiddenDelBtnHandle, _e = props.isDelAll, isDelAll = _e === void 0 ? true : _e, isAddAndDelAuto = props.isAddAndDelAuto, summaryConfig = props.summaryConfig, _f = props.summaryFixed, summaryFixed = _f === void 0 ? true : _f, isInnerPagination = props.isInnerPagination, _g = props.innerPaginationPageSize, innerPaginationPageSize = _g === void 0 ? 30 : _g, _h = props.innerPaginationPosition, innerPaginationPosition = _h === void 0 ? INNER_TABLE_PAGINATION_POSITION : _h, _j = props.innerPaginationPageSizeOptions, innerPaginationPageSizeOptions = _j === void 0 ? INNER_TABLE_PAGINATION_PAGESIZEOPTIONS : _j, innerPaginationConfig = props.innerPaginationConfig, tableRefHandle = props.tableRefHandle, tableName = props.tableName, serviceOrder = props.serviceOrder, differences = props.differences, virtualKey = props.virtualKey, _k = props.isResizableColumn, isResizableColumn = _k === void 0 ? true : _k, _l = props.isResizableTitleEllipsis, isResizableTitleEllipsis = _l === void 0 ? true : _l, _m = props.isRealTimeValidate, isRealTimeValidate = _m === void 0 ? true : _m, isMarginTop = props.isMarginTop, isMarginBottom = props.isMarginBottom, scroll = props.scroll, addAndDelProps = props.addAndDelProps, _o = props.autoScrollYMarginBottom, autoScrollYMarginBottom = _o === void 0 ? 65 : _o, _p = props.isAutoScrollY, isAutoScrollY = _p === void 0 ? false : _p, tableId = props.tableId, extraOnRow = props.onRow, fixedRowsCount = props.fixedRowsCount, fixedRowsConfig = props.fixedRowsConfig, headerAlign = props.headerAlign, resetProps = __rest(props, ["className", "bordered", "pagination", "isFlex", "tablePreferences", "dynamicKey", "dynamicVersion", "isRemeberFilter", "isOrderUpdateData", "hiddenDynamicIcon", "columns", "dataSource", "onTableChange", "isEdit", "isMove", "isAdd", "hiddenAddBtnHandle", "isTheadTitleAdd", "addMode", "addCallback", "isDel", "delPopTitle", "hiddenDelBtnHandle", "isDelAll", "isAddAndDelAuto", "summaryConfig", "summaryFixed", "isInnerPagination", "innerPaginationPageSize", "innerPaginationPosition", "innerPaginationPageSizeOptions", "innerPaginationConfig", "tableRefHandle", "tableName", "serviceOrder", "differences", "virtualKey", "isResizableColumn", "isResizableTitleEllipsis", "isRealTimeValidate", "isMarginTop", "isMarginBottom", "scroll", "addAndDelProps", "autoScrollYMarginBottom", "isAutoScrollY", "tableId", "onRow", "fixedRowsCount", "fixedRowsConfig", "headerAlign"]);
41
+ 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, dynamicVersion = props.dynamicVersion, isRemeberFilter = props.isRemeberFilter, _c = props.isOrderUpdateData, isOrderUpdateData = _c === void 0 ? true : _c, hiddenDynamicIcon = props.hiddenDynamicIcon, _columns = props.columns, dataSource = props.dataSource, onTableChange = props.onTableChange, isEdit = props.isEdit, isMove = props.isMove, isAdd = props.isAdd, hiddenAddBtnHandle = props.hiddenAddBtnHandle, _d = props.isTheadTitleAdd, isTheadTitleAdd = _d === void 0 ? true : _d, addMode = props.addMode, addCallback = props.addCallback, isDel = props.isDel, delPopTitle = props.delPopTitle, hiddenDelBtnHandle = props.hiddenDelBtnHandle, _e = props.isDelAll, isDelAll = _e === void 0 ? true : _e, isAddAndDelAuto = props.isAddAndDelAuto, summaryConfig = props.summaryConfig, _f = props.summaryFixed, summaryFixed = _f === void 0 ? true : _f, isInnerPagination = props.isInnerPagination, _g = props.innerPaginationPageSize, innerPaginationPageSize = _g === void 0 ? 30 : _g, _h = props.innerPaginationPosition, innerPaginationPosition = _h === void 0 ? INNER_TABLE_PAGINATION_POSITION : _h, _j = props.innerPaginationPageSizeOptions, innerPaginationPageSizeOptions = _j === void 0 ? INNER_TABLE_PAGINATION_PAGESIZEOPTIONS : _j, innerPaginationConfig = props.innerPaginationConfig, tableRefHandle = props.tableRefHandle, tableName = props.tableName, serviceOrder = props.serviceOrder, differences = props.differences, virtualKey = props.virtualKey, _k = props.isResizableColumn, isResizableColumn = _k === void 0 ? true : _k, _l = props.isResizableTitleEllipsis, isResizableTitleEllipsis = _l === void 0 ? true : _l, _m = props.isRealTimeValidate, isRealTimeValidate = _m === void 0 ? true : _m, isMarginTop = props.isMarginTop, isMarginBottom = props.isMarginBottom, scroll = props.scroll, addAndDelProps = props.addAndDelProps, _o = props.autoScrollYMarginBottom, autoScrollYMarginBottom = _o === void 0 ? 65 : _o, _p = props.isAutoScrollY, isAutoScrollY = _p === void 0 ? false : _p, tableId = props.tableId, extraOnRow = props.onRow, fixedRowsCount = props.fixedRowsCount, fixedRowsConfig = props.fixedRowsConfig, headerAlign = props.headerAlign, isDimensionDynamic = props.isDimensionDynamic, isAutoMerge = props.isAutoMerge, mode = props.mode, rowSelection = props.rowSelection, resetProps = __rest(props, ["className", "bordered", "pagination", "isFlex", "tablePreferences", "dynamicKey", "dynamicVersion", "isRemeberFilter", "isOrderUpdateData", "hiddenDynamicIcon", "columns", "dataSource", "onTableChange", "isEdit", "isMove", "isAdd", "hiddenAddBtnHandle", "isTheadTitleAdd", "addMode", "addCallback", "isDel", "delPopTitle", "hiddenDelBtnHandle", "isDelAll", "isAddAndDelAuto", "summaryConfig", "summaryFixed", "isInnerPagination", "innerPaginationPageSize", "innerPaginationPosition", "innerPaginationPageSizeOptions", "innerPaginationConfig", "tableRefHandle", "tableName", "serviceOrder", "differences", "virtualKey", "isResizableColumn", "isResizableTitleEllipsis", "isRealTimeValidate", "isMarginTop", "isMarginBottom", "scroll", "addAndDelProps", "autoScrollYMarginBottom", "isAutoScrollY", "tableId", "onRow", "fixedRowsCount", "fixedRowsConfig", "headerAlign", "isDimensionDynamic", "isAutoMerge", "mode", "rowSelection"]);
42
42
  var classes = classNames("ztxk-table", className, {
43
43
  "ztxk-table--flex": isFlex,
44
44
  });
@@ -114,8 +114,15 @@ var Table = function (props) {
114
114
  currentPage: currentPage,
115
115
  filterConfigRef: filterConfigRef,
116
116
  });
117
+ // 处理自动合并的加减和选择框
118
+ var _u = useMergeAddAndDel({
119
+ rowSelection: rowSelection,
120
+ addAndDelProps: addAndDelProps,
121
+ columns: columns,
122
+ isAutoMerge: isAutoMerge,
123
+ }), newRowSelection = _u[0], newAddAndDelProps = _u[1];
117
124
  // 处理列配置信息 得到新的列配置信息
118
- var newColumns = useColumns(columns, {
125
+ var _newColumns = useColumns(columns, {
119
126
  // 动态列配置相关信息
120
127
  dynamicKey: dynamicKey,
121
128
  isRemeberFilter: isRemeberFilter,
@@ -151,9 +158,15 @@ var Table = function (props) {
151
158
  hiddenAddBtnHandleRef: hiddenAddBtnHandleRef,
152
159
  rowKey: props.rowKey,
153
160
  filterConfigRef: filterConfigRef,
154
- addAndDelProps: addAndDelProps,
161
+ addAndDelProps: newAddAndDelProps,
155
162
  headerAlign: headerAlign,
163
+ mode: mode,
164
+ isAutoMerge: isAutoMerge,
156
165
  }).newColumns;
166
+ // 处理表格合并和维度
167
+ var _v = useAutoMerge(currentTableDataSource, _newColumns, {
168
+ isAutoMerge: isAutoMerge,
169
+ }), newDataSource = _v[0], newColumns = _v[1];
157
170
  // 内部表格总结栏
158
171
  var getSummaryHandle = useSummary(summaryConfig, newColumns, {
159
172
  summaryFixed: summaryFixed,
@@ -163,7 +176,7 @@ var Table = function (props) {
163
176
  isDel: isDel,
164
177
  });
165
178
  // 表格验证
166
- var _u = useTableValidate(), tableRef = _u.tableRef, getCurrentTable = _u.getCurrentTable, clearErrorClass = _u.clearErrorClass;
179
+ var _w = useTableValidate(), tableRef = _w.tableRef, getCurrentTable = _w.getCurrentTable, clearErrorClass = _w.clearErrorClass;
167
180
  // 虚拟滚动选项
168
181
  var vComponents = useMemo(function () {
169
182
  if (virtualKey) {
@@ -289,7 +302,7 @@ var Table = function (props) {
289
302
  };
290
303
  });
291
304
  // 表格
292
- var SingleTable = (jsx(Table$1, __assign({ className: classes, bordered: bordered, dataSource: currentTableDataSource, columns: newColumns, components: componentsMemo, onRow: onRow, summary: getSummaryHandle, pagination: isInnerPagination
305
+ var SingleTable = (jsx(Table$1, __assign({ className: classes, bordered: bordered, dataSource: newDataSource, columns: newColumns, components: componentsMemo, onRow: onRow, summary: getSummaryHandle, rowSelection: newRowSelection, pagination: isInnerPagination
293
306
  ? pagination
294
307
  ? pagination
295
308
  : paginationConfig
@@ -309,7 +322,7 @@ var Table = function (props) {
309
322
  overflow: "hidden",
310
323
  marginTop: isMarginTop ? 10 : 0,
311
324
  marginBottom: isMarginBottom ? 10 : 0,
312
- }, ref: tableRef, id: tableId }, { 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, isMore: true, isFixed: true })) : null] })));
325
+ }, ref: tableRef, id: tableId }, { 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, isMore: true, isFixed: true, isDimensionDynamic: isDimensionDynamic })) : null] })));
313
326
  };
314
327
  var MemoTable = memo(Table);
315
328
  MemoTable.displayName = "ZTXK_WEBUI_Table";
@@ -3,6 +3,7 @@ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
3
3
  import { useRef } from 'react';
4
4
  import { getTableColumns, parsePasteData, getFilterRecords, startColumnInsertTableData } from './utils.js';
5
5
  import '../node_modules/classnames/index.js';
6
+ import { MERGE_INDEX } from './constant.js';
6
7
  import 'ahooks';
7
8
  import './components/EnhanceHeaderCell.js';
8
9
  import ColumnDynamic from './components/ColumnDynamic.js';
@@ -21,7 +22,7 @@ import ModalComponent from '../modal/modal.js';
21
22
  function useColumns(columns, options) {
22
23
  var _this = this;
23
24
  var _a, _b;
24
- var dynamicKey = options.dynamicKey, isRemeberFilter = options.isRemeberFilter, hiddenDynamicIcon = options.hiddenDynamicIcon, currentDynamicList = options.currentDynamicList, dataSource = options.dataSource, dataSourceRef = options.dataSourceRef, onEditableSave = options.onEditableSave, isEdit = options.isEdit, isAdd = options.isAdd, isTheadTitleAdd = options.isTheadTitleAdd, isDel = options.isDel, delPopTitle = options.delPopTitle, dynamicSettingRef = options.dynamicSettingRef, onCurrentListChange = options.onCurrentListChange, onAddAndDel = options.onAddAndDel, getRefreshScuCell = options.getRefreshScuCell, isDelAll = options.isDelAll, currentPage = options.currentPage, onTableChange = options.onTableChange, order = options.order, setOrder = options.setOrder, customSortHandle = options.customSortHandle, isResizableColumn = options.isResizableColumn, isResizableTitleEllipsis = options.isResizableTitleEllipsis, isRealTimeValidate = options.isRealTimeValidate, hiddenDelBtnHandleRef = options.hiddenDelBtnHandleRef, hiddenAddBtnHandleRef = options.hiddenAddBtnHandleRef, rowKey = options.rowKey, filterConfigRef = options.filterConfigRef, addAndDelProps = options.addAndDelProps, headerAlign = options.headerAlign;
25
+ var dynamicKey = options.dynamicKey, isRemeberFilter = options.isRemeberFilter, hiddenDynamicIcon = options.hiddenDynamicIcon, currentDynamicList = options.currentDynamicList, dataSource = options.dataSource, dataSourceRef = options.dataSourceRef, onEditableSave = options.onEditableSave, isEdit = options.isEdit, isAdd = options.isAdd, isTheadTitleAdd = options.isTheadTitleAdd, isDel = options.isDel, delPopTitle = options.delPopTitle, dynamicSettingRef = options.dynamicSettingRef, onCurrentListChange = options.onCurrentListChange, onAddAndDel = options.onAddAndDel, getRefreshScuCell = options.getRefreshScuCell, isDelAll = options.isDelAll, currentPage = options.currentPage, onTableChange = options.onTableChange, order = options.order, setOrder = options.setOrder, customSortHandle = options.customSortHandle, isResizableColumn = options.isResizableColumn, isResizableTitleEllipsis = options.isResizableTitleEllipsis, isRealTimeValidate = options.isRealTimeValidate, hiddenDelBtnHandleRef = options.hiddenDelBtnHandleRef, hiddenAddBtnHandleRef = options.hiddenAddBtnHandleRef, rowKey = options.rowKey, filterConfigRef = options.filterConfigRef, addAndDelProps = options.addAndDelProps, headerAlign = options.headerAlign, mode = options.mode, isAutoMerge = options.isAutoMerge;
25
26
  var newColumns = getTableColumns(columns, currentDynamicList).columns;
26
27
  // 表头过滤的一些配置(获取表头过滤的input的输入框的引用)
27
28
  var searchValueInputRef = useRef(null);
@@ -382,6 +383,21 @@ function useColumns(columns, options) {
382
383
  } }, addAndDelProps);
383
384
  myNewColumns.unshift(newColumn);
384
385
  }
386
+ if (mode === "index") {
387
+ myNewColumns.unshift({
388
+ title: "序号",
389
+ width: 60,
390
+ key: MERGE_INDEX,
391
+ fixed: "left",
392
+ align: "center",
393
+ isFilter: false,
394
+ isMerge: isAutoMerge,
395
+ render: function (value, record, index) {
396
+ var v = record[MERGE_INDEX] !== undefined ? record[MERGE_INDEX] : index;
397
+ return "".concat(v + 1);
398
+ },
399
+ });
400
+ }
385
401
  // 如果配置了动态列配置
386
402
  // 处理一些配置放置的位置
387
403
  if (dynamicKey && !hiddenDynamicIcon) {
@@ -5,7 +5,7 @@ import isEqual from 'lodash/isEqual';
5
5
 
6
6
  // 处理列信息
7
7
  function parseColumn(column, index, indexs) {
8
- var _a = column, key = _a.key, dataIndex = _a.dataIndex, title = _a.title, dynamicTitle = _a.dynamicTitle, dynamicDisabled = _a.dynamicDisabled, defaultUnChecked = _a.defaultUnChecked, width = _a.width, fixed = _a.fixed;
8
+ var _a = column, key = _a.key, dataIndex = _a.dataIndex, title = _a.title, dynamicTitle = _a.dynamicTitle, dynamicDisabled = _a.dynamicDisabled, defaultUnChecked = _a.defaultUnChecked, width = _a.width, fixed = _a.fixed, isDimension = _a.isDimension, dimensionPriority = _a.dimensionPriority, dimensionExclusive = _a.dimensionExclusive, isDimensionSum = _a.isDimensionSum;
9
9
  // 动态列配置 title必须为一个字符串
10
10
  if (title && !dynamicTitle && typeof title !== "string") {
11
11
  console.error("\u4F60\u4F20\u5165\u7684title\u4E0D\u662F\u4E00\u4E2A\u5B57\u7B26\u4E32,\u5E76\u4E14\u4F60\u6CA1\u6709\u4F20\u5165dynamicTitle\u7684\u914D\u7F6E\u3002\n \u95EE\u9898\u53EF\u80FD\u51FA\u73B0\u518D:".concat(key || dataIndex, " \u5217\u3002\u8BF7\u4F20\u5165\u4E00\u4E2AdynamicTitle \u4F5C\u4E3A\u52A8\u6001\u5217\u914D\u7F6E\u7684title\u503C"));
@@ -28,6 +28,10 @@ function parseColumn(column, index, indexs) {
28
28
  indexs: indexs,
29
29
  width: width,
30
30
  fixed: fixed,
31
+ isDimension: isDimension,
32
+ dimensionPriority: dimensionPriority,
33
+ dimensionExclusive: dimensionExclusive,
34
+ isDimensionSum: isDimensionSum,
31
35
  };
32
36
  column.key = myKey;
33
37
  return item;