@bit-sun/business-component 2.2.2 → 2.2.3

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 (176) 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/index.esm.js +4 -4
  9. package/dist/index.js +4 -4
  10. package/docs/index.md +21 -21
  11. package/lib/assets/drag.svg +17 -17
  12. package/lib/assets/exportFail.svg +37 -37
  13. package/lib/assets/exportProcessing.svg +28 -28
  14. package/lib/assets/exportSuccess.svg +34 -34
  15. package/lib/assets/label_icon_bottom.svg +25 -25
  16. package/lib/assets/upExport.svg +22 -22
  17. package/package.json +77 -77
  18. package/src/assets/32.svg +27 -27
  19. package/src/assets/addIcon.svg +17 -17
  20. package/src/assets/allfunc.svg +27 -27
  21. package/src/assets/arrowRight.svg +24 -24
  22. package/src/assets/btn-delete.svg +29 -29
  23. package/src/assets/btn-edit.svg +19 -19
  24. package/src/assets/btn-more.svg +17 -17
  25. package/src/assets/btn-submit.svg +19 -19
  26. package/src/assets/caidan.svg +11 -11
  27. package/src/assets/close.svg +26 -26
  28. package/src/assets/drag.svg +17 -17
  29. package/src/assets/exportFail.svg +37 -37
  30. package/src/assets/exportProcessing.svg +28 -28
  31. package/src/assets/exportSuccess.svg +34 -34
  32. package/src/assets/fixed-left-active.svg +11 -11
  33. package/src/assets/fixed-left.svg +15 -15
  34. package/src/assets/fixed-right-active.svg +11 -11
  35. package/src/assets/fixed-right.svg +15 -15
  36. package/src/assets/guanbi.svg +15 -15
  37. package/src/assets/icon-quanping.svg +15 -15
  38. package/src/assets/icon-shezhi.svg +17 -17
  39. package/src/assets/label_icon_bottom.svg +25 -25
  40. package/src/assets/list-no-img.svg +21 -21
  41. package/src/assets/morentouxiang-32.svg +23 -23
  42. package/src/assets/scanning.svg +24 -24
  43. package/src/assets/upExport.svg +22 -22
  44. package/src/components/Business/AddSelectBusiness/index.md +63 -63
  45. package/src/components/Business/AddSelectBusiness/index.tsx +344 -344
  46. package/src/components/Business/BsLayouts/Components/AllFunc/drawContent.tsx +111 -111
  47. package/src/components/Business/BsLayouts/Components/AllFunc/index.less +153 -153
  48. package/src/components/Business/BsLayouts/Components/AllFunc/index.tsx +70 -70
  49. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/index.less +90 -90
  50. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/index.tsx +37 -37
  51. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/leftTree.tsx +242 -242
  52. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/rightTree.tsx +384 -384
  53. package/src/components/Business/BsLayouts/Components/CustomerMenu/globalMenu/DrawContent.tsx +285 -285
  54. package/src/components/Business/BsLayouts/Components/CustomerMenu/globalMenu/customMenuHeader.tsx +74 -74
  55. package/src/components/Business/BsLayouts/Components/CustomerMenu/globalMenu/drawContent.less +170 -170
  56. package/src/components/Business/BsLayouts/Components/CustomerMenu/index.less +64 -64
  57. package/src/components/Business/BsLayouts/Components/CustomerMenu/index.tsx +153 -153
  58. package/src/components/Business/BsLayouts/Components/GlobalHeader/index.less +72 -72
  59. package/src/components/Business/BsLayouts/Components/GlobalHeader/index.tsx +157 -157
  60. package/src/components/Business/BsLayouts/Components/RightContent/LoginModal.tsx +85 -85
  61. package/src/components/Business/BsLayouts/Components/RightContent/home.less +218 -218
  62. package/src/components/Business/BsLayouts/Components/RightContent/index.tsx +156 -156
  63. package/src/components/Business/BsLayouts/Components/SearchFunc/index.less +160 -160
  64. package/src/components/Business/BsLayouts/Components/SearchFunc/index.tsx +75 -75
  65. package/src/components/Business/BsLayouts/index.less +79 -79
  66. package/src/components/Business/BsLayouts/index.tsx +1479 -1479
  67. package/src/components/Business/BsLayouts/service.ts +10 -10
  68. package/src/components/Business/BsLayouts/utils.tsx +230 -230
  69. package/src/components/Business/BsSulaQueryTable/index.less +219 -219
  70. package/src/components/Business/BsSulaQueryTable/index.tsx +480 -480
  71. package/src/components/Business/BsSulaQueryTable/setting.tsx +802 -802
  72. package/src/components/Business/BsSulaQueryTable/utils.less +65 -65
  73. package/src/components/Business/BsSulaQueryTable/utils.tsx +688 -688
  74. package/src/components/Business/CommodityEntry/index.md +70 -70
  75. package/src/components/Business/CommodityEntry/index.tsx +80 -80
  76. package/src/components/Business/CommonAlert/index.tsx +23 -23
  77. package/src/components/Business/CommonGuideWrapper/index.less +111 -111
  78. package/src/components/Business/CommonGuideWrapper/index.md +39 -39
  79. package/src/components/Business/CommonGuideWrapper/index.tsx +83 -83
  80. package/src/components/Business/DetailPageWrapper/index.less +79 -79
  81. package/src/components/Business/DetailPageWrapper/index.tsx +335 -335
  82. package/src/components/Business/DetailPageWrapper/utils.tsx +100 -100
  83. package/src/components/Business/HomePageWrapper/index.less +33 -33
  84. package/src/components/Business/HomePageWrapper/index.md +45 -45
  85. package/src/components/Business/HomePageWrapper/index.tsx +162 -162
  86. package/src/components/Business/JsonQueryTable/components/FieldsModifyModal.tsx +824 -824
  87. package/src/components/Business/JsonQueryTable/components/FieldsSettingsTable.tsx +201 -201
  88. package/src/components/Business/JsonQueryTable/components/Formula.tsx +205 -205
  89. package/src/components/Business/JsonQueryTable/components/MaintainOptions.tsx +127 -127
  90. package/src/components/Business/JsonQueryTable/configButton/index.js +20 -20
  91. package/src/components/Business/JsonQueryTable/configTree/component/compactArrayView.js +25 -25
  92. package/src/components/Business/JsonQueryTable/configTree/component/compactObjectView.js +30 -30
  93. package/src/components/Business/JsonQueryTable/configTree/index.js +82 -82
  94. package/src/components/Business/JsonQueryTable/configTree/index.less +44 -44
  95. package/src/components/Business/JsonQueryTable/configTree/parser/highlight.js +57 -57
  96. package/src/components/Business/JsonQueryTable/configTree/parser/index.js +124 -124
  97. package/src/components/Business/JsonQueryTable/configTree/render/iconRender.js +29 -29
  98. package/src/components/Business/JsonQueryTable/configTree/render/nameRender.js +22 -22
  99. package/src/components/Business/JsonQueryTable/configTree/treeNode.js +116 -116
  100. package/src/components/Business/JsonQueryTable/drawer/index.tsx +12 -12
  101. package/src/components/Business/JsonQueryTable/function.ts +62 -62
  102. package/src/components/Business/JsonQueryTable/index.less +16 -16
  103. package/src/components/Business/JsonQueryTable/index.md +328 -328
  104. package/src/components/Business/JsonQueryTable/index.tsx +320 -320
  105. package/src/components/Business/JsonQueryTable/jsonEditor/index.js +346 -346
  106. package/src/components/Business/JsonQueryTable/jsonEditor/index.less +22 -22
  107. package/src/components/Business/JsonQueryTable/jsonEditor/lint/basicType.js +147 -147
  108. package/src/components/Business/JsonQueryTable/jsonEditor/lint/index.js +389 -389
  109. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/actions.js +118 -118
  110. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/dependency.js +22 -22
  111. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/index.js +21 -21
  112. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/request.js +65 -65
  113. package/src/components/Business/JsonQueryTable/static.ts +356 -356
  114. package/src/components/Business/SearchSelect/BusinessUtils.ts +1586 -1586
  115. package/src/components/Business/SearchSelect/common.ts +53 -53
  116. package/src/components/Business/SearchSelect/index.md +1254 -1254
  117. package/src/components/Business/SearchSelect/index.tsx +51 -51
  118. package/src/components/Business/SearchSelect/utils.ts +100 -100
  119. package/src/components/Business/StateFlow/index.less +130 -130
  120. package/src/components/Business/StateFlow/index.md +60 -60
  121. package/src/components/Business/StateFlow/index.tsx +29 -29
  122. package/src/components/Business/TreeSearchSelect/index.md +126 -126
  123. package/src/components/Business/TreeSearchSelect/index.tsx +34 -34
  124. package/src/components/Business/TreeSearchSelect/utils.ts +60 -60
  125. package/src/components/Business/columnSettingTable/columnSetting.tsx +764 -764
  126. package/src/components/Business/columnSettingTable/index.less +247 -247
  127. package/src/components/Business/columnSettingTable/index.md +357 -357
  128. package/src/components/Business/columnSettingTable/index.tsx +232 -232
  129. package/src/components/Business/columnSettingTable/sulaSettingTable.tsx +240 -240
  130. package/src/components/Business/columnSettingTable/utils.tsx +68 -68
  131. package/src/components/Business/moreTreeTable/index.less +99 -99
  132. package/src/components/Business/moreTreeTable/index.md +508 -508
  133. package/src/components/Business/moreTreeTable/index.tsx +315 -315
  134. package/src/components/Business/moreTreeTable/utils.ts +126 -126
  135. package/src/components/Functional/AddSelect/index.less +367 -367
  136. package/src/components/Functional/AddSelect/index.md +155 -155
  137. package/src/components/Functional/AddSelect/index.tsx +1072 -1072
  138. package/src/components/Functional/BillEntry/index.less +371 -371
  139. package/src/components/Functional/BillEntry/index.md +39 -39
  140. package/src/components/Functional/BillEntry/index.tsx +766 -766
  141. package/src/components/Functional/DataImport/index.less +63 -63
  142. package/src/components/Functional/DataImport/index.md +44 -44
  143. package/src/components/Functional/DataImport/index.tsx +695 -695
  144. package/src/components/Functional/DataValidation/index.less +63 -63
  145. package/src/components/Functional/DataValidation/index.md +39 -39
  146. package/src/components/Functional/DataValidation/index.tsx +687 -687
  147. package/src/components/Functional/ExportFunctions/ExportIcon/index.md +37 -37
  148. package/src/components/Functional/ExportFunctions/ExportIcon/index.tsx +59 -59
  149. package/src/components/Functional/QueryMutipleInput/index.less +37 -37
  150. package/src/components/Functional/QueryMutipleInput/index.md +33 -33
  151. package/src/components/Functional/QueryMutipleInput/index.tsx +128 -128
  152. package/src/components/Functional/SearchSelect/index.less +115 -115
  153. package/src/components/Functional/SearchSelect/index.md +141 -141
  154. package/src/components/Functional/SearchSelect/index.tsx +813 -813
  155. package/src/components/Functional/SearchSelect/utils.ts +3 -3
  156. package/src/components/Functional/TreeSearchSelect/index.md +47 -47
  157. package/src/components/Functional/TreeSearchSelect/index.tsx +149 -149
  158. package/src/index.ts +34 -34
  159. package/src/plugin/TableColumnSetting/index.less +247 -247
  160. package/src/plugin/TableColumnSetting/index.md +50 -50
  161. package/src/plugin/TableColumnSetting/index.tsx +724 -724
  162. package/src/plugin/TableColumnSetting/utils.ts +19 -19
  163. package/src/styles/bsDefault.less +1906 -1906
  164. package/src/utils/CheckOneUser/index.md +39 -39
  165. package/src/utils/CheckOneUser/index.ts +51 -51
  166. package/src/utils/LocalstorageUtils.ts +33 -33
  167. package/src/utils/TableUtils.tsx +18 -18
  168. package/src/utils/checkUtils.ts +39 -39
  169. package/src/utils/enumConfig.ts +10 -10
  170. package/src/utils/getFormMode.js +12 -12
  171. package/src/utils/index.ts +2 -2
  172. package/src/utils/requestUtils.ts +33 -33
  173. package/src/utils/serialize.js +7 -7
  174. package/src/utils/utils.ts +183 -183
  175. package/tsconfig.json +29 -29
  176. package/typings.d.ts +4 -4
@@ -1,480 +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
- 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
- };
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
+ };