@bit-sun/business-component 2.2.0 → 2.2.2

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 (188) hide show
  1. package/.editorconfig +16 -16
  2. package/.fatherrc.ts +5 -5
  3. package/.gitlab-ci.yml +179 -179
  4. package/.prettierignore +7 -7
  5. package/.prettierrc +11 -11
  6. package/.umirc.ts +74 -74
  7. package/README.md +27 -27
  8. package/dist/components/Business/BsLayouts/Components/AllFunc/drawContent.d.ts +1 -1
  9. package/dist/components/Business/BsLayouts/Components/AllFunc/index.d.ts +1 -1
  10. package/dist/components/Business/BsLayouts/Components/RightContent/index.d.ts +2 -2
  11. package/dist/components/Business/BsLayouts/Components/SearchFunc/index.d.ts +2 -2
  12. package/dist/components/Business/BsLayouts/index.d.ts +2 -2
  13. package/dist/components/Business/BsSulaQueryTable/utils.d.ts +2 -2
  14. package/dist/index.d.ts +1 -0
  15. package/dist/index.esm.js +7804 -9105
  16. package/dist/index.js +7803 -9103
  17. package/dist/plugin/TableColumnSetting/index.d.ts +64 -0
  18. package/dist/plugin/TableColumnSetting/utils.d.ts +1 -0
  19. package/dist/utils/LocalstorageUtils.d.ts +2 -0
  20. package/dist/utils/TableUtils.d.ts +2 -2
  21. package/dist/utils/utils.d.ts +1 -1
  22. package/docs/index.md +21 -21
  23. package/lib/assets/drag.svg +17 -17
  24. package/lib/assets/exportFail.svg +37 -37
  25. package/lib/assets/exportProcessing.svg +28 -28
  26. package/lib/assets/exportSuccess.svg +34 -34
  27. package/lib/assets/label_icon_bottom.svg +25 -25
  28. package/lib/assets/upExport.svg +22 -22
  29. package/package.json +77 -77
  30. package/src/assets/32.svg +27 -27
  31. package/src/assets/addIcon.svg +17 -17
  32. package/src/assets/allfunc.svg +27 -27
  33. package/src/assets/arrowRight.svg +24 -24
  34. package/src/assets/btn-delete.svg +29 -29
  35. package/src/assets/btn-edit.svg +19 -19
  36. package/src/assets/btn-more.svg +17 -17
  37. package/src/assets/btn-submit.svg +19 -19
  38. package/src/assets/caidan.svg +11 -11
  39. package/src/assets/close.svg +26 -26
  40. package/src/assets/drag.svg +17 -17
  41. package/src/assets/exportFail.svg +37 -37
  42. package/src/assets/exportProcessing.svg +28 -28
  43. package/src/assets/exportSuccess.svg +34 -34
  44. package/src/assets/fixed-left-active.svg +11 -11
  45. package/src/assets/fixed-left.svg +15 -15
  46. package/src/assets/fixed-right-active.svg +11 -11
  47. package/src/assets/fixed-right.svg +15 -15
  48. package/src/assets/guanbi.svg +15 -15
  49. package/src/assets/icon-quanping.svg +15 -15
  50. package/src/assets/icon-shezhi.svg +17 -17
  51. package/src/assets/label_icon_bottom.svg +25 -25
  52. package/src/assets/list-no-img.svg +21 -21
  53. package/src/assets/morentouxiang-32.svg +23 -23
  54. package/src/assets/scanning.svg +24 -24
  55. package/src/assets/upExport.svg +22 -22
  56. package/src/components/Business/AddSelectBusiness/index.md +63 -42
  57. package/src/components/Business/AddSelectBusiness/index.tsx +344 -341
  58. package/src/components/Business/BsLayouts/Components/AllFunc/drawContent.tsx +111 -111
  59. package/src/components/Business/BsLayouts/Components/AllFunc/index.less +153 -153
  60. package/src/components/Business/BsLayouts/Components/AllFunc/index.tsx +70 -70
  61. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/index.less +90 -90
  62. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/index.tsx +37 -37
  63. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/leftTree.tsx +242 -242
  64. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/rightTree.tsx +384 -384
  65. package/src/components/Business/BsLayouts/Components/CustomerMenu/globalMenu/DrawContent.tsx +285 -285
  66. package/src/components/Business/BsLayouts/Components/CustomerMenu/globalMenu/customMenuHeader.tsx +74 -74
  67. package/src/components/Business/BsLayouts/Components/CustomerMenu/globalMenu/drawContent.less +170 -170
  68. package/src/components/Business/BsLayouts/Components/CustomerMenu/index.less +64 -64
  69. package/src/components/Business/BsLayouts/Components/CustomerMenu/index.tsx +153 -153
  70. package/src/components/Business/BsLayouts/Components/GlobalHeader/index.less +72 -72
  71. package/src/components/Business/BsLayouts/Components/GlobalHeader/index.tsx +157 -157
  72. package/src/components/Business/BsLayouts/Components/RightContent/LoginModal.tsx +85 -85
  73. package/src/components/Business/BsLayouts/Components/RightContent/home.less +218 -218
  74. package/src/components/Business/BsLayouts/Components/RightContent/index.tsx +156 -156
  75. package/src/components/Business/BsLayouts/Components/SearchFunc/index.less +160 -160
  76. package/src/components/Business/BsLayouts/Components/SearchFunc/index.tsx +75 -75
  77. package/src/components/Business/BsLayouts/index.less +79 -79
  78. package/src/components/Business/BsLayouts/index.tsx +1479 -1479
  79. package/src/components/Business/BsLayouts/service.ts +10 -10
  80. package/src/components/Business/BsLayouts/utils.tsx +230 -230
  81. package/src/components/Business/BsSulaQueryTable/index.less +219 -219
  82. package/src/components/Business/BsSulaQueryTable/index.tsx +480 -476
  83. package/src/components/Business/BsSulaQueryTable/setting.tsx +802 -802
  84. package/src/components/Business/BsSulaQueryTable/utils.less +65 -65
  85. package/src/components/Business/BsSulaQueryTable/utils.tsx +688 -688
  86. package/src/components/Business/CommodityEntry/index.md +70 -70
  87. package/src/components/Business/CommodityEntry/index.tsx +80 -80
  88. package/src/components/Business/CommonAlert/index.tsx +23 -23
  89. package/src/components/Business/CommonGuideWrapper/index.less +111 -111
  90. package/src/components/Business/CommonGuideWrapper/index.md +39 -39
  91. package/src/components/Business/CommonGuideWrapper/index.tsx +83 -83
  92. package/src/components/Business/DetailPageWrapper/index.less +79 -79
  93. package/src/components/Business/DetailPageWrapper/index.tsx +335 -335
  94. package/src/components/Business/DetailPageWrapper/utils.tsx +100 -100
  95. package/src/components/Business/HomePageWrapper/index.less +33 -33
  96. package/src/components/Business/HomePageWrapper/index.md +45 -45
  97. package/src/components/Business/HomePageWrapper/index.tsx +162 -162
  98. package/src/components/Business/JsonQueryTable/components/FieldsModifyModal.tsx +824 -824
  99. package/src/components/Business/JsonQueryTable/components/FieldsSettingsTable.tsx +201 -201
  100. package/src/components/Business/JsonQueryTable/components/Formula.tsx +205 -205
  101. package/src/components/Business/JsonQueryTable/components/MaintainOptions.tsx +127 -127
  102. package/src/components/Business/JsonQueryTable/configButton/index.js +20 -20
  103. package/src/components/Business/JsonQueryTable/configTree/component/compactArrayView.js +25 -25
  104. package/src/components/Business/JsonQueryTable/configTree/component/compactObjectView.js +30 -30
  105. package/src/components/Business/JsonQueryTable/configTree/index.js +82 -82
  106. package/src/components/Business/JsonQueryTable/configTree/index.less +44 -44
  107. package/src/components/Business/JsonQueryTable/configTree/parser/highlight.js +57 -57
  108. package/src/components/Business/JsonQueryTable/configTree/parser/index.js +124 -124
  109. package/src/components/Business/JsonQueryTable/configTree/render/iconRender.js +29 -29
  110. package/src/components/Business/JsonQueryTable/configTree/render/nameRender.js +22 -22
  111. package/src/components/Business/JsonQueryTable/configTree/treeNode.js +116 -116
  112. package/src/components/Business/JsonQueryTable/drawer/index.tsx +12 -12
  113. package/src/components/Business/JsonQueryTable/function.ts +62 -62
  114. package/src/components/Business/JsonQueryTable/index.less +16 -16
  115. package/src/components/Business/JsonQueryTable/index.md +328 -328
  116. package/src/components/Business/JsonQueryTable/index.tsx +320 -320
  117. package/src/components/Business/JsonQueryTable/jsonEditor/index.js +346 -346
  118. package/src/components/Business/JsonQueryTable/jsonEditor/index.less +22 -22
  119. package/src/components/Business/JsonQueryTable/jsonEditor/lint/basicType.js +147 -147
  120. package/src/components/Business/JsonQueryTable/jsonEditor/lint/index.js +389 -389
  121. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/actions.js +118 -118
  122. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/dependency.js +22 -22
  123. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/index.js +21 -21
  124. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/request.js +65 -65
  125. package/src/components/Business/JsonQueryTable/static.ts +356 -356
  126. package/src/components/Business/SearchSelect/BusinessUtils.ts +1586 -1586
  127. package/src/components/Business/SearchSelect/common.ts +53 -53
  128. package/src/components/Business/SearchSelect/index.md +1254 -1254
  129. package/src/components/Business/SearchSelect/index.tsx +51 -51
  130. package/src/components/Business/SearchSelect/utils.ts +100 -100
  131. package/src/components/Business/StateFlow/index.less +130 -130
  132. package/src/components/Business/StateFlow/index.md +60 -60
  133. package/src/components/Business/StateFlow/index.tsx +29 -29
  134. package/src/components/Business/TreeSearchSelect/index.md +126 -126
  135. package/src/components/Business/TreeSearchSelect/index.tsx +34 -34
  136. package/src/components/Business/TreeSearchSelect/utils.ts +60 -60
  137. package/src/components/Business/columnSettingTable/columnSetting.tsx +764 -764
  138. package/src/components/Business/columnSettingTable/index.less +247 -247
  139. package/src/components/Business/columnSettingTable/index.md +357 -357
  140. package/src/components/Business/columnSettingTable/index.tsx +232 -232
  141. package/src/components/Business/columnSettingTable/sulaSettingTable.tsx +240 -240
  142. package/src/components/Business/columnSettingTable/utils.tsx +68 -68
  143. package/src/components/Business/moreTreeTable/index.less +99 -99
  144. package/src/components/Business/moreTreeTable/index.md +508 -508
  145. package/src/components/Business/moreTreeTable/index.tsx +315 -315
  146. package/src/components/Business/moreTreeTable/utils.ts +126 -126
  147. package/src/components/Functional/AddSelect/index.less +367 -367
  148. package/src/components/Functional/AddSelect/index.md +155 -154
  149. package/src/components/Functional/AddSelect/index.tsx +1072 -994
  150. package/src/components/Functional/BillEntry/index.less +371 -371
  151. package/src/components/Functional/BillEntry/index.md +39 -39
  152. package/src/components/Functional/BillEntry/index.tsx +766 -670
  153. package/src/components/Functional/DataImport/index.less +63 -63
  154. package/src/components/Functional/DataImport/index.md +44 -44
  155. package/src/components/Functional/DataImport/index.tsx +695 -695
  156. package/src/components/Functional/DataValidation/index.less +63 -63
  157. package/src/components/Functional/DataValidation/index.md +39 -39
  158. package/src/components/Functional/DataValidation/index.tsx +687 -687
  159. package/src/components/Functional/ExportFunctions/ExportIcon/index.md +37 -37
  160. package/src/components/Functional/ExportFunctions/ExportIcon/index.tsx +59 -59
  161. package/src/components/Functional/QueryMutipleInput/index.less +37 -37
  162. package/src/components/Functional/QueryMutipleInput/index.md +33 -33
  163. package/src/components/Functional/QueryMutipleInput/index.tsx +128 -128
  164. package/src/components/Functional/SearchSelect/index.less +115 -115
  165. package/src/components/Functional/SearchSelect/index.md +141 -141
  166. package/src/components/Functional/SearchSelect/index.tsx +813 -813
  167. package/src/components/Functional/SearchSelect/utils.ts +3 -3
  168. package/src/components/Functional/TreeSearchSelect/index.md +47 -47
  169. package/src/components/Functional/TreeSearchSelect/index.tsx +149 -149
  170. package/src/index.ts +34 -34
  171. package/src/plugin/TableColumnSetting/index.less +247 -0
  172. package/src/plugin/TableColumnSetting/index.md +50 -0
  173. package/src/plugin/TableColumnSetting/index.tsx +724 -0
  174. package/src/plugin/TableColumnSetting/utils.ts +19 -0
  175. package/src/styles/bsDefault.less +1906 -1906
  176. package/src/utils/CheckOneUser/index.md +39 -39
  177. package/src/utils/CheckOneUser/index.ts +51 -51
  178. package/src/utils/LocalstorageUtils.ts +33 -0
  179. package/src/utils/TableUtils.tsx +18 -18
  180. package/src/utils/checkUtils.ts +39 -39
  181. package/src/utils/enumConfig.ts +10 -10
  182. package/src/utils/getFormMode.js +12 -12
  183. package/src/utils/index.ts +2 -2
  184. package/src/utils/requestUtils.ts +33 -33
  185. package/src/utils/serialize.js +7 -7
  186. package/src/utils/utils.ts +183 -183
  187. package/tsconfig.json +29 -29
  188. package/typings.d.ts +4 -4
@@ -1,476 +1,480 @@
1
- // @ts-nocheck
2
- import React, { useState, useEffect, useRef, useMemo } from 'react';
3
- import { useLocation } from 'umi';
4
- import { QueryTable } from 'bssula';
5
- import {
6
- userColumns,
7
- getItemDefaultWidth,
8
- authFn,
9
- queryParams,
10
- } from './utils';
11
- import { Menu, Tooltip, } from 'antd';
12
- import SortableTable from './setting';
13
- import { Resizable } from 'react-resizable';
14
- import quanping from '../../../assets/icon-quanping.svg';
15
- import scanning from '../../../assets/scanning.svg';
16
- import { debounce } from 'lodash';
17
- import ExportIcon from '@/components/Functional/ExportFunctions/ExportIcon';
18
- import ENUM from '@/utils/enumConfig';
19
- import { handleBssulaColumnsSpecialParams } from '@/utils/utils';
20
-
21
- const MemoQueryTable = React.memo(QueryTable);
22
-
23
- const ResizeableTitle = (props) => {
24
- const { onResize, width, ...restProps } = props;
25
-
26
- if (!width) {
27
- return <th {...restProps} />;
28
- }
29
- return (
30
- <Resizable
31
- width={width}
32
- height={0}
33
- onResize={onResize}
34
- draggableOpts={{ enableUserSelectHack: false }}
35
- >
36
- <th {...restProps} />
37
- </Resizable>
38
- );
39
- };
40
-
41
- export default (props: any) => {
42
- const refs = useRef(null);
43
- const [pagePath, setPagePath] = useState('');
44
- // 获取 table columns中所有的 key 防止有的地方是 dataindex
45
- const [checkedList, setCheckedList] = useState(
46
- props.columns.filter((col: any) => !col.hidden).map((d: any) => Array.isArray(d.key || d.dataIndex) ? JSON.stringify(d.key || d.dataIndex) : (d.key || d.dataIndex)),
47
- );
48
- const { pathname } = useLocation();
49
- const [id]: any = useState(
50
- Number(Math.random().toString().substr(2, 0) + Date.now()).toString(36),
51
- );
52
- const [isFullScreen, setIsFnllScreen]: any = useState(false);
53
- // @ts-nocheck
54
- const [value, setValue]: any = useState(props);
55
- const [showColumn, setShowColumns] = useState([]);
56
-
57
- const { isPage = true, pagination, tableCode } = props;
58
-
59
- const [height, setHeight]: any = useState('100vh');
60
- const sortTableRef = useRef(null);
61
-
62
- const bsTableCode = tableCode || window.location.hash; //设置列字段的唯一标识
63
- // 获取table高度
64
- const getTableHeight = () => {
65
- const cancelHeight = window.top == window ? 303 : 223;
66
- const isFullScreen: any =
67
- document.fullScreen ||
68
- document.webkitIsFullScreen ||
69
- document.mozFullScreen;
70
- const h =
71
- document.body.clientHeight -
72
- (document.querySelector('.table-bssula-summary')?.clientHeight || 0) -
73
- (document.querySelector('.ant-form ant-form-horizontal')?.clientHeight ||
74
- 0) -
75
- (isFullScreen
76
- ? 0
77
- : document.querySelector('.ant-pro-page-container-warp')
78
- ?.clientHeight || 0) -
79
- cancelHeight +
80
- 'px';
81
- setHeight(h);
82
- setValue({ ...value });
83
- };
84
-
85
- //监测是否按下esc键
86
- function checkFull() {
87
- let globalDocument = window?.parent?.document || document;
88
- var isFull =
89
- globalDocument.fullscreenElement ||
90
- globalDocument.mozFullScreenElement ||
91
- globalDocument.webkitFullscreenElement;
92
- if (isFull == undefined) isFull = false;
93
- return isFull;
94
- }
95
-
96
- const getConfigFromlocalstorage = () => {
97
- let config = localStorage.getItem(ENUM.BROWSER_CACHE.COLUMN_CONDITION) || '[]';
98
- let configArray = JSON.parse(config);
99
- let configSetting = configArray.filter(
100
- (item) => item.code === bsTableCode,
101
- );
102
-
103
- if (configSetting.length && configSetting[0].detail) {
104
- return JSON.parse(configSetting[0].detail);
105
- }
106
- return [];
107
- };
108
-
109
- const setInitialTableInfo = () => {
110
- const resourceCodeArray = {};
111
- if (props.actionsRender && props.actionsRender.length) {
112
- props.actionsRender.forEach((item: any) => {
113
- if (item.code) {
114
- if (resourceCodeArray[item.code]) {
115
- resourceCodeArray[item.code + 1] = item;
116
- } else {
117
- resourceCodeArray[item.code] = item;
118
- }
119
- }
120
- });
121
- }
122
- if (props.columns && props.columns.length) {
123
- props.columns.forEach((d: any) => {
124
- if (d.isPermissionColumn && d.render && d.render.length) {
125
- d.render.forEach((inneritem: any) => {
126
- if (inneritem.code) {
127
- if (resourceCodeArray[inneritem.code]) {
128
- resourceCodeArray[inneritem.code + 1] = inneritem;
129
- } else {
130
- resourceCodeArray[inneritem.code] = inneritem;
131
- }
132
- }
133
- });
134
- }
135
- handleBssulaColumnsSpecialParams(d);
136
- });
137
- setCommonRenderFn(props.columns);
138
- const authButton = localStorage.getItem(ENUM.BROWSER_CACHE.MAIN_AUTH_CODES)
139
- ? JSON.parse(localStorage.getItem(ENUM.BROWSER_CACHE.MAIN_AUTH_CODES) as string)
140
- : [];
141
- Object.keys(resourceCodeArray).forEach((item: any) => {
142
- let Item = item;
143
- if (Number(item.slice(-1)) >= 1) {
144
- Item = item.substr(0, item.length - 1);
145
- }
146
- if (!authButton.filter((itemInner: any) => Item === itemInner).length) {
147
- resourceCodeArray[item].visible = false;
148
- }
149
- });
150
-
151
- }
152
- setValue({
153
- ...value,
154
- columns: [...props.columns],
155
- });
156
- const { columns } = props;
157
- let columnConfig = getConfigFromlocalstorage();
158
- let showColumns = columnConfig.length ? columnConfig.map((item) => {
159
- let inner = columns.filter(
160
- (inneritem) => {
161
- let innerKey = Array.isArray(inneritem.key || inneritem.dataIndex) ? JSON.stringify(inneritem.key || inneritem.dataIndex) : (inneritem.key || inneritem.dataIndex);
162
- let itemKey = Array.isArray(item.key || item.dataIndex) ? JSON.stringify(item.key || item.dataIndex) : (item.key || item.dataIndex);
163
- return innerKey && innerKey === itemKey;
164
- }
165
- )[0];
166
-
167
- return {
168
- ...inner,
169
- ...item,
170
- };
171
- }) : columns.filter(
172
- (column) => {
173
- let columnKey = Array.isArray(column.key || column.dataIndex) ? JSON.stringify(column.key || column.dataIndex) : (column.key || column.dataIndex);
174
- return column.notRegularCheckList || checkedList.indexOf(columnKey) > -1;
175
- }
176
- )
177
-
178
- showColumns.forEach((item, index) => {
179
- item.width = item.width || getItemDefaultWidth(item);
180
- item.onHeaderCell = (column) => ({
181
- ...item,
182
- width:
183
- typeof column.width === 'number'
184
- ? column.width
185
- : parseInt(column.width.replace('px', '')),
186
- onResize: handleResize(index),
187
- });
188
- });
189
- setShowColumns([...showColumns]);
190
- }
191
-
192
- //组件初始挂载
193
- useEffect(() => {
194
- getTableHeight();
195
- setInitialTableInfo();
196
- window.addEventListener('resize', (e) => {
197
- watchWinResize();
198
- });
199
-
200
- setPagePath(pathname); // 做处理,记录当前页面渲染的初始pathname,用于进行判断当前列表页面数据是否需要重新渲染
201
- }, []);
202
-
203
- useEffect(() => {
204
- if (props?.columns && value?.columns) {
205
- let newKeys = props.columns.map((d: any) => Array.isArray(d.key || d.dataIndex) ? JSON.stringify(d.key || d.dataIndex) : (d.key || d.dataIndex));
206
- let oldKeys = value.columns.map((d: any) => Array.isArray(d.key || d.dataIndex) ? JSON.stringify(d.key || d.dataIndex) : (d.key || d.dataIndex));
207
- JSON.stringify(newKeys) !== JSON.stringify(oldKeys) && setInitialTableInfo();
208
- }
209
- }, [props?.columns])
210
-
211
- useEffect(() => {
212
- setInitialTableInfo();
213
- }, [props?.refreshColumns]);
214
-
215
-
216
- const watchWinResize = debounce(() => {
217
- getTableHeight();
218
- if (!checkFull()) {
219
- // addTabsNavStyle(true);
220
- // 全屏下按键esc后要执行的动作
221
- // isFullScreen 为true 此时为全屏状态 false 为非全屏状态
222
- if (!isFullScreen) {
223
- // 按下esc键退出全屏
224
- setIsFnllScreen(false);
225
- } else {
226
- setIsFnllScreen(false);
227
- }
228
- }
229
- }, 10);
230
-
231
- const setCommonRenderFn = (columns: any[]) => {
232
- columns.forEach((column) => {
233
- if (column.showDetailUserInfo) {
234
- column.render = ({ text }: any) => userColumns({ name: text });
235
- }
236
- });
237
- };
238
-
239
- // 处理 table 基本参数
240
- const setTableProps = () => {
241
- let tableProps = value.tableProps || {};
242
- tableProps = {
243
- ...tableProps,
244
- size: value.size || 'middle',
245
- defaultPageSize: 20,
246
- pageSize: 20,
247
- initialPaging: {
248
- pagination: pagination
249
- ? false
250
- : {
251
- defaultPageSize: 20,
252
- pageSize: 20,
253
- showTotal: (total: any) => `共 ${total} 条`,
254
- showQuickJumper: true,
255
- hideOnSinglePage: value.hideOnSinglePage || false,
256
- },
257
- },
258
- initialSelectedRowKeys: value.initialSelectedRowKeys || [],
259
- expandable: value.expandable,
260
- scroll: { x: props.overScrollX || 'max-content', y: height },
261
- bordered: value.bordered || false,
262
- sticky: true,
263
- rowClassName: (record: object | null | undefined, index: number) =>
264
- index % 2 === 0 ? 'table_base' : 'table_odd',
265
- ...value.tableProps,
266
- components: {
267
- header: {
268
- cell: ResizeableTitle,
269
- },
270
- },
271
- };
272
-
273
- // @ts-ignore
274
- if (tableProps?.initialPaging?.pagination) {
275
- // @ts-ignore
276
- tableProps.initialPaging.pagination.showSizeChanger = true;
277
- }
278
- return tableProps;
279
- };
280
-
281
-
282
- const ShowFullScreen = () => {
283
- const { itemPath } = props;
284
- if (window.top != window) {
285
- window.parent.postMessage(
286
- {
287
- type: 'screenChange',
288
- id: itemPath,
289
- },
290
- '*',
291
- );
292
- setIsFnllScreen(!isFullScreen);
293
- } else {
294
- const isFullScreen: any =
295
- document.fullScreen ||
296
- document.webkitIsFullScreen ||
297
- document.mozFullScreen;
298
- let contentEle: any = document.querySelector(`body`);
299
- // addTabsNavStyle(isFullScreen);
300
- if (contentEle && !isFullScreen) {
301
- let fullScreenEle =
302
- contentEle.requestFullscreen ||
303
- contentEle.mozRequestFullScreen ||
304
- contentEle.webkitRequestFullScreen ||
305
- contentEle.msRequestFullscreen;
306
- if (fullScreenEle) {
307
- fullScreenEle.call(contentEle);
308
- setIsFnllScreen(true);
309
- // getTableHeight(true);
310
- return;
311
- }
312
- }
313
- if (document && isFullScreen) {
314
- let exitFullScreen =
315
- document.exitFullscreen ||
316
- document.mozCancelFullScreen ||
317
- document.webkitCancelFullScreen ||
318
- document.msExitFullscreen;
319
- if (exitFullScreen) {
320
- exitFullScreen.call(document);
321
- setIsFnllScreen(false);
322
- // getTableHeight();
323
- return;
324
- }
325
- }
326
- }
327
- };
328
-
329
- const handleTimeValue = () => {
330
- let actionsRender = value.actionsRender || [];
331
- actionsRender = [
332
- ...actionsRender,
333
- {
334
- type: 'text',
335
- props: {
336
- children: (
337
- <>
338
- <Tooltip title="列设置">
339
- <span className="ant-dropdown-link">
340
- <SortableTable
341
- ref={sortTableRef}
342
- setShowColumns={setShowColumns}
343
- showColumn={showColumn}
344
- datasource={value?.columns || []}
345
- bsTableCode={bsTableCode}
346
- />
347
- </span>
348
- </Tooltip>
349
- </>
350
- ),
351
- },
352
- },
353
- {
354
- type: 'text',
355
- props: {
356
- children: (
357
- <a>
358
- {isFullScreen ? (
359
- <Tooltip title="取消全屏">
360
- <img
361
- onClick={() => {
362
- ShowFullScreen();
363
- }}
364
- width={32}
365
- src={scanning}
366
- />
367
- </Tooltip>
368
- ) : (
369
- <Tooltip title="全屏">
370
- <img
371
- onClick={() => {
372
- ShowFullScreen();
373
- }}
374
- width={32}
375
- src={quanping}
376
- />
377
- </Tooltip>
378
- )}
379
- </a>
380
- ),
381
- },
382
- },
383
- {
384
- type: 'text',
385
- props: {
386
- children:
387
- value?.exportConfig && authFn(value?.exportConfig?.code) ? (
388
- <ExportIcon
389
- request={{
390
- url: `/oms-ops/excel/exportAsync/${value?.exportConfig?.type}`,
391
- params: value?.exportConfig?.params || queryParams,
392
- }}
393
- tableRef={props.forwardedRef || refs}
394
- />
395
- ) : (
396
- <span />
397
- ),
398
- },
399
- },
400
- ];
401
- if (value.rowSelection) {
402
- value.rowSelection.columnWidth = 50;
403
- }
404
- return {
405
- ...value,
406
- actionsRender,
407
- };
408
- };
409
-
410
- const handleResize =
411
- (index) =>
412
- (e, { size }) => {
413
- setShowColumns((columns: any) => {
414
- let newColumns = [...columns];
415
- newColumns[index] = {
416
- ...newColumns[index],
417
- width: size.width,
418
- };
419
- return [...newColumns];
420
- });
421
- };
422
-
423
- const setVisibleColumn = (columnTitle: string) => {
424
- sortTableRef?.current?.handleTableHeadHidden?.(columnTitle);
425
- };
426
-
427
- const config = {
428
- visibleFieldsCount: 3,
429
- tableWrapperStyle: {
430
- padding: '10px',
431
- background: '#f3f3f3',
432
- },
433
- setVisibleColumn: setVisibleColumn,
434
- itemLayout: {
435
- span: 8, // 栅格占位格数
436
- labelCol: {
437
- // label标签布局;可设置 span、offset
438
- span: 8,
439
- },
440
- wrapperCol: {
441
- // value布局, 方式同labelCol(horizontal状态下配置)
442
- span: 16,
443
- },
444
- },
445
- rowSelection: false, // 默认无多选
446
- ...handleTimeValue(),
447
- tableProps: setTableProps(),
448
- columns: [...showColumn],
449
- ref: props.forwardedRef || refs,
450
- isFullScreen,
451
- };
452
-
453
- useEffect(() => {
454
- if (!localStorage.getItem('isTabChange')) {
455
- if (pagePath === pathname) {
456
- // @ts-ignore
457
- config.ref?.current?.tableRef?.current?.refreshTable();
458
- }
459
- } else {
460
- setTimeout(() => {
461
- // 处理页面刷新两面
462
- localStorage.removeItem('isTabChange');
463
- }, 0);
464
- }
465
- }, [pathname]);
466
-
467
- const memoConfig = useMemo(
468
- () => ({
469
- ...config,
470
- summary: props.summary,
471
- statusMapping: props.statusMapping,
472
- }),
473
- [value, checkedList, showColumn, props.statusMapping],
474
- );
475
- return <MemoQueryTable {...memoConfig} />;
476
- };
1
+ // @ts-nocheck
2
+ import React, { useState, useEffect, useRef, useMemo } from 'react';
3
+ import { useLocation } from 'umi';
4
+ import { QueryTable } from 'bssula';
5
+ import {
6
+ userColumns,
7
+ getItemDefaultWidth,
8
+ authFn,
9
+ queryParams,
10
+ } from './utils';
11
+ import { Menu, Tooltip, } from 'antd';
12
+ import SortableTable from './setting';
13
+ import { Resizable } from 'react-resizable';
14
+ import quanping from '../../../assets/icon-quanping.svg';
15
+ import scanning from '../../../assets/scanning.svg';
16
+ import { debounce } from 'lodash';
17
+ import ExportIcon from '@/components/Functional/ExportFunctions/ExportIcon';
18
+ import ENUM from '@/utils/enumConfig';
19
+ import { handleBssulaColumnsSpecialParams } from '@/utils/utils';
20
+
21
+ const MemoQueryTable = React.memo(QueryTable);
22
+
23
+ const ResizeableTitle = (props) => {
24
+ const { onResize, width, ...restProps } = props;
25
+
26
+ if (!width) {
27
+ return <th {...restProps} />;
28
+ }
29
+ return (
30
+ <Resizable
31
+ width={width}
32
+ height={0}
33
+ onResize={onResize}
34
+ draggableOpts={{ enableUserSelectHack: false }}
35
+ >
36
+ <th {...restProps} />
37
+ </Resizable>
38
+ );
39
+ };
40
+
41
+ export default (props: any) => {
42
+ const refs = useRef(null);
43
+ const [pagePath, setPagePath] = useState('');
44
+ // 获取 table columns中所有的 key 防止有的地方是 dataindex
45
+ const [checkedList, setCheckedList] = useState(
46
+ props.columns.filter((col: any) => !col.hidden).map((d: any) => Array.isArray(d.key || d.dataIndex) ? JSON.stringify(d.key || d.dataIndex) : (d.key || d.dataIndex)),
47
+ );
48
+ const { pathname } = useLocation();
49
+ const [id]: any = useState(
50
+ Number(Math.random().toString().substr(2, 0) + Date.now()).toString(36),
51
+ );
52
+ const [isFullScreen, setIsFnllScreen]: any = useState(false);
53
+ // @ts-nocheck
54
+ const [value, setValue]: any = useState(props);
55
+ const [showColumn, setShowColumns] = useState([]);
56
+
57
+ const { isPage = true, pagination, tableCode } = props;
58
+
59
+ const [height, setHeight]: any = useState('100vh');
60
+ const sortTableRef = useRef(null);
61
+
62
+ const bsTableCode = tableCode || window.location.hash; //设置列字段的唯一标识
63
+ // 获取table高度
64
+ const getTableHeight = () => {
65
+ const cancelHeight = window.top == window ? 303 : 223;
66
+ const isFullScreen: any =
67
+ document.fullScreen ||
68
+ document.webkitIsFullScreen ||
69
+ document.mozFullScreen;
70
+ const h =
71
+ document.body.clientHeight -
72
+ (document.querySelector('.table-bssula-summary')?.clientHeight || 0) -
73
+ (document.querySelector('.ant-form ant-form-horizontal')?.clientHeight ||
74
+ 0) -
75
+ (isFullScreen
76
+ ? 0
77
+ : document.querySelector('.ant-pro-page-container-warp')
78
+ ?.clientHeight || 0) -
79
+ cancelHeight +
80
+ 'px';
81
+ setHeight(h);
82
+ setValue({ ...value });
83
+ };
84
+
85
+ //监测是否按下esc键
86
+ function checkFull() {
87
+ let globalDocument = window?.parent?.document || document;
88
+ var isFull =
89
+ globalDocument.fullscreenElement ||
90
+ globalDocument.mozFullScreenElement ||
91
+ globalDocument.webkitFullscreenElement;
92
+ if (isFull == undefined) isFull = false;
93
+ return isFull;
94
+ }
95
+
96
+ const getConfigFromlocalstorage = () => {
97
+ let config = localStorage.getItem(ENUM.BROWSER_CACHE.COLUMN_CONDITION) || '[]';
98
+ let configArray = JSON.parse(config);
99
+ let configSetting = configArray.filter(
100
+ (item) => item.code === bsTableCode,
101
+ );
102
+
103
+ if (configSetting.length && configSetting[0].detail) {
104
+ return JSON.parse(configSetting[0].detail);
105
+ }
106
+ return [];
107
+ };
108
+
109
+ const setInitialTableInfo = () => {
110
+ const resourceCodeArray = {};
111
+ if (props.actionsRender && props.actionsRender.length) {
112
+ props.actionsRender.forEach((item: any) => {
113
+ if (item.code) {
114
+ if (resourceCodeArray[item.code]) {
115
+ resourceCodeArray[item.code + 1] = item;
116
+ } else {
117
+ resourceCodeArray[item.code] = item;
118
+ }
119
+ }
120
+ });
121
+ }
122
+ if (props.columns && props.columns.length) {
123
+ props.columns.forEach((d: any) => {
124
+ if (d.isPermissionColumn && d.render && d.render.length) {
125
+ d.render.forEach((inneritem: any) => {
126
+ if (inneritem.code) {
127
+ if (resourceCodeArray[inneritem.code]) {
128
+ resourceCodeArray[inneritem.code + 1] = inneritem;
129
+ } else {
130
+ resourceCodeArray[inneritem.code] = inneritem;
131
+ }
132
+ }
133
+ });
134
+ }
135
+ handleBssulaColumnsSpecialParams(d);
136
+ });
137
+ setCommonRenderFn(props.columns);
138
+ const authButton = localStorage.getItem(ENUM.BROWSER_CACHE.MAIN_AUTH_CODES)
139
+ ? JSON.parse(localStorage.getItem(ENUM.BROWSER_CACHE.MAIN_AUTH_CODES) as string)
140
+ : [];
141
+ Object.keys(resourceCodeArray).forEach((item: any) => {
142
+ let Item = item;
143
+ if (Number(item.slice(-1)) >= 1) {
144
+ Item = item.substr(0, item.length - 1);
145
+ }
146
+ if (!authButton.filter((itemInner: any) => Item === itemInner).length) {
147
+ resourceCodeArray[item].visible = false;
148
+ }
149
+ });
150
+
151
+ }
152
+ setValue({
153
+ ...value,
154
+ columns: [...props.columns],
155
+ });
156
+ const { columns } = props;
157
+ let columnConfig = getConfigFromlocalstorage();
158
+ let showColumns = columnConfig.length ? columnConfig.map((item) => {
159
+ let inner = columns.filter(
160
+ (inneritem) => {
161
+ let innerKey = Array.isArray(inneritem.key || inneritem.dataIndex) ? JSON.stringify(inneritem.key || inneritem.dataIndex) : (inneritem.key || inneritem.dataIndex);
162
+ let itemKey = Array.isArray(item.key || item.dataIndex) ? JSON.stringify(item.key || item.dataIndex) : (item.key || item.dataIndex);
163
+ return innerKey && innerKey === itemKey;
164
+ }
165
+ )[0];
166
+
167
+ return {
168
+ ...inner,
169
+ ...item,
170
+ };
171
+ }) : columns.filter(
172
+ (column) => {
173
+ let columnKey = Array.isArray(column.key || column.dataIndex) ? JSON.stringify(column.key || column.dataIndex) : (column.key || column.dataIndex);
174
+ return column.notRegularCheckList || checkedList.indexOf(columnKey) > -1;
175
+ }
176
+ )
177
+
178
+ showColumns.forEach((item, index) => {
179
+ item.width = item.width || getItemDefaultWidth(item);
180
+ handleBssulaColumnsSpecialParams(item);
181
+ item.onHeaderCell = (column) => ({
182
+ ...item,
183
+ width:
184
+ typeof column.width === 'number'
185
+ ? column.width
186
+ : parseInt(column.width.replace('px', '')),
187
+ onResize: handleResize(index),
188
+ });
189
+ });
190
+ setShowColumns([...showColumns]);
191
+ }
192
+
193
+ //组件初始挂载
194
+ useEffect(() => {
195
+ getTableHeight();
196
+ setInitialTableInfo();
197
+ window.addEventListener('resize', (e) => {
198
+ watchWinResize();
199
+ });
200
+
201
+ setPagePath(pathname); // 做处理,记录当前页面渲染的初始pathname,用于进行判断当前列表页面数据是否需要重新渲染
202
+ }, []);
203
+
204
+ useEffect(() => {
205
+ if (props?.columns && value?.columns) {
206
+ let newKeys = props.columns.map((d: any) => Array.isArray(d.key || d.dataIndex) ? JSON.stringify(d.key || d.dataIndex) : (d.key || d.dataIndex));
207
+ let oldKeys = value.columns.map((d: any) => Array.isArray(d.key || d.dataIndex) ? JSON.stringify(d.key || d.dataIndex) : (d.key || d.dataIndex));
208
+ JSON.stringify(newKeys) !== JSON.stringify(oldKeys) && setInitialTableInfo();
209
+ }
210
+ }, [props?.columns])
211
+
212
+ useEffect(() => {
213
+ setInitialTableInfo();
214
+ }, [props?.refreshColumns]);
215
+
216
+
217
+ const watchWinResize = debounce(() => {
218
+ getTableHeight();
219
+ if (!checkFull()) {
220
+ // addTabsNavStyle(true);
221
+ // 全屏下按键esc后要执行的动作
222
+ // isFullScreen 为true 此时为全屏状态 false 为非全屏状态
223
+ if (!isFullScreen) {
224
+ // 按下esc键退出全屏
225
+ setIsFnllScreen(false);
226
+ } else {
227
+ setIsFnllScreen(false);
228
+ }
229
+ }
230
+ }, 10);
231
+
232
+ const setCommonRenderFn = (columns: any[]) => {
233
+ columns.forEach((column) => {
234
+ if (column.showDetailUserInfo) {
235
+ column.render = ({ text }: any) => userColumns({ name: text });
236
+ }
237
+ });
238
+ };
239
+
240
+ // 处理 table 基本参数
241
+ const setTableProps = () => {
242
+ let tableProps = value.tableProps || {};
243
+ tableProps = {
244
+ ...tableProps,
245
+ size: value.size || 'middle',
246
+ defaultPageSize: 20,
247
+ pageSize: 20,
248
+ initialPaging: {
249
+ pagination: pagination
250
+ ? false
251
+ : {
252
+ defaultPageSize: 20,
253
+ pageSize: 20,
254
+ showTotal: (total: any) => `共 ${total} 条`,
255
+ showQuickJumper: true,
256
+ hideOnSinglePage: value.hideOnSinglePage || false,
257
+ },
258
+ },
259
+ initialSelectedRowKeys: value.initialSelectedRowKeys || [],
260
+ expandable: value.expandable,
261
+ scroll: { x: props.overScrollX || 'max-content', y: height },
262
+ bordered: value.bordered || false,
263
+ sticky: true,
264
+ rowClassName: (record: object | null | undefined, index: number) =>
265
+ index % 2 === 0 ? 'table_base' : 'table_odd',
266
+ ...value.tableProps,
267
+ components: {
268
+ header: {
269
+ cell: ResizeableTitle,
270
+ },
271
+ },
272
+ };
273
+
274
+ // @ts-ignore
275
+ if (tableProps?.initialPaging?.pagination) {
276
+ // @ts-ignore
277
+ tableProps.initialPaging.pagination.showSizeChanger = true;
278
+ }
279
+ return tableProps;
280
+ };
281
+
282
+
283
+ const ShowFullScreen = () => {
284
+ const { itemPath } = props;
285
+ if (window.top != window) {
286
+ window.parent.postMessage(
287
+ {
288
+ type: 'screenChange',
289
+ id: itemPath,
290
+ },
291
+ '*',
292
+ );
293
+ setIsFnllScreen(!isFullScreen);
294
+ } else {
295
+ const isFullScreen: any =
296
+ document.fullScreen ||
297
+ document.webkitIsFullScreen ||
298
+ document.mozFullScreen;
299
+ let contentEle: any = document.querySelector(`body`);
300
+ // addTabsNavStyle(isFullScreen);
301
+ if (contentEle && !isFullScreen) {
302
+ let fullScreenEle =
303
+ contentEle.requestFullscreen ||
304
+ contentEle.mozRequestFullScreen ||
305
+ contentEle.webkitRequestFullScreen ||
306
+ contentEle.msRequestFullscreen;
307
+ if (fullScreenEle) {
308
+ fullScreenEle.call(contentEle);
309
+ setIsFnllScreen(true);
310
+ // getTableHeight(true);
311
+ return;
312
+ }
313
+ }
314
+ if (document && isFullScreen) {
315
+ let exitFullScreen =
316
+ document.exitFullscreen ||
317
+ document.mozCancelFullScreen ||
318
+ document.webkitCancelFullScreen ||
319
+ document.msExitFullscreen;
320
+ if (exitFullScreen) {
321
+ exitFullScreen.call(document);
322
+ setIsFnllScreen(false);
323
+ // getTableHeight();
324
+ return;
325
+ }
326
+ }
327
+ }
328
+ };
329
+
330
+ const handleTimeValue = () => {
331
+ let actionsRender = value.actionsRender || [];
332
+ actionsRender = [
333
+ ...actionsRender,
334
+ {
335
+ type: 'text',
336
+ props: {
337
+ children: (
338
+ <>
339
+ <Tooltip title="列设置">
340
+ <span className="ant-dropdown-link">
341
+ <SortableTable
342
+ ref={sortTableRef}
343
+ setShowColumns={setShowColumns}
344
+ showColumn={showColumn}
345
+ datasource={value?.columns || []}
346
+ bsTableCode={bsTableCode}
347
+ />
348
+ </span>
349
+ </Tooltip>
350
+ </>
351
+ ),
352
+ },
353
+ },
354
+ {
355
+ type: 'text',
356
+ props: {
357
+ children: (
358
+ <a>
359
+ {isFullScreen ? (
360
+ <Tooltip title="取消全屏">
361
+ <img
362
+ onClick={() => {
363
+ ShowFullScreen();
364
+ }}
365
+ width={32}
366
+ src={scanning}
367
+ />
368
+ </Tooltip>
369
+ ) : (
370
+ <Tooltip title="全屏">
371
+ <img
372
+ onClick={() => {
373
+ ShowFullScreen();
374
+ }}
375
+ width={32}
376
+ src={quanping}
377
+ />
378
+ </Tooltip>
379
+ )}
380
+ </a>
381
+ ),
382
+ },
383
+ },
384
+ {
385
+ type: 'text',
386
+ props: {
387
+ children:
388
+ value?.exportConfig && authFn(value?.exportConfig?.code) ? (
389
+ <ExportIcon
390
+ request={{
391
+ url: `/oms-ops/excel/exportAsync/${value?.exportConfig?.type}`,
392
+ params: value?.exportConfig?.params || queryParams,
393
+ }}
394
+ tableRef={props.forwardedRef || refs}
395
+ />
396
+ ) : (
397
+ <span />
398
+ ),
399
+ },
400
+ },
401
+ ];
402
+ if (value.rowSelection) {
403
+ value.rowSelection.columnWidth = 50;
404
+ }
405
+ return {
406
+ ...value,
407
+ actionsRender,
408
+ };
409
+ };
410
+
411
+ const handleResize =
412
+ (index) =>
413
+ (e, { size }) => {
414
+ setShowColumns((columns: any) => {
415
+ let newColumns = [...columns];
416
+ newColumns[index] = {
417
+ ...newColumns[index],
418
+ width: size.width,
419
+ };
420
+ newColumns.forEach((d: any) => {
421
+ handleBssulaColumnsSpecialParams(d);
422
+ })
423
+ return [...newColumns];
424
+ });
425
+ };
426
+
427
+ const setVisibleColumn = (columnTitle: string) => {
428
+ sortTableRef?.current?.handleTableHeadHidden?.(columnTitle);
429
+ };
430
+
431
+ const config = {
432
+ visibleFieldsCount: 3,
433
+ tableWrapperStyle: {
434
+ padding: '10px',
435
+ background: '#f3f3f3',
436
+ },
437
+ setVisibleColumn: setVisibleColumn,
438
+ itemLayout: {
439
+ span: 8, // 栅格占位格数
440
+ labelCol: {
441
+ // label标签布局;可设置 span、offset
442
+ span: 8,
443
+ },
444
+ wrapperCol: {
445
+ // value布局, 方式同labelCol(horizontal状态下配置)
446
+ span: 16,
447
+ },
448
+ },
449
+ rowSelection: false, // 默认无多选
450
+ ...handleTimeValue(),
451
+ tableProps: setTableProps(),
452
+ columns: [...showColumn],
453
+ ref: props.forwardedRef || refs,
454
+ isFullScreen,
455
+ };
456
+
457
+ useEffect(() => {
458
+ if (!localStorage.getItem('isTabChange')) {
459
+ if (pagePath === pathname) {
460
+ // @ts-ignore
461
+ config.ref?.current?.tableRef?.current?.refreshTable();
462
+ }
463
+ } else {
464
+ setTimeout(() => {
465
+ // 处理页面刷新两面
466
+ localStorage.removeItem('isTabChange');
467
+ }, 0);
468
+ }
469
+ }, [pathname]);
470
+
471
+ const memoConfig = useMemo(
472
+ () => ({
473
+ ...config,
474
+ summary: props.summary,
475
+ statusMapping: props.statusMapping,
476
+ }),
477
+ [value, checkedList, showColumn, props.statusMapping],
478
+ );
479
+ return <MemoQueryTable {...memoConfig} />;
480
+ };