@bit-sun/business-component 2.4.27 → 2.4.29

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