@bit-sun/business-component 2.2.36 → 2.2.37

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 (183) 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/CustomerMenu/MenuSetting/index.d.ts +1 -1
  9. package/dist/components/Business/BsLayouts/Components/CustomerMenu/index.d.ts +1 -1
  10. package/dist/components/Business/SearchSelect/index.d.ts +1 -1
  11. package/dist/components/Functional/SearchSelect/index.d.ts +1 -1
  12. package/dist/index.esm.js +667 -635
  13. package/dist/index.js +674 -642
  14. package/dist/utils/utils.d.ts +1 -1
  15. package/docs/index.md +21 -21
  16. package/lib/assets/drag.svg +17 -17
  17. package/lib/assets/exportFail.svg +37 -37
  18. package/lib/assets/exportProcessing.svg +28 -28
  19. package/lib/assets/exportSuccess.svg +34 -34
  20. package/lib/assets/label_icon_bottom.svg +25 -25
  21. package/lib/assets/upExport.svg +22 -22
  22. package/package.json +77 -77
  23. package/src/assets/32.svg +27 -27
  24. package/src/assets/addIcon.svg +17 -17
  25. package/src/assets/allfunc.svg +27 -27
  26. package/src/assets/arrowRight.svg +24 -24
  27. package/src/assets/btn-delete.svg +29 -29
  28. package/src/assets/btn-edit.svg +19 -19
  29. package/src/assets/btn-more.svg +17 -17
  30. package/src/assets/btn-submit.svg +19 -19
  31. package/src/assets/caidan.svg +11 -11
  32. package/src/assets/close.svg +26 -26
  33. package/src/assets/drag.svg +17 -17
  34. package/src/assets/exportFail.svg +37 -37
  35. package/src/assets/exportProcessing.svg +28 -28
  36. package/src/assets/exportSuccess.svg +34 -34
  37. package/src/assets/fixed-left-active.svg +11 -11
  38. package/src/assets/fixed-left.svg +15 -15
  39. package/src/assets/fixed-right-active.svg +11 -11
  40. package/src/assets/fixed-right.svg +15 -15
  41. package/src/assets/guanbi.svg +15 -15
  42. package/src/assets/icon-quanping.svg +15 -15
  43. package/src/assets/icon-shezhi.svg +17 -17
  44. package/src/assets/label_icon_bottom.svg +25 -25
  45. package/src/assets/list-no-img.svg +21 -21
  46. package/src/assets/morentouxiang-32.svg +23 -23
  47. package/src/assets/scanning.svg +24 -24
  48. package/src/assets/upExport.svg +22 -22
  49. package/src/components/Business/AddSelectBusiness/index.md +161 -161
  50. package/src/components/Business/AddSelectBusiness/index.tsx +861 -861
  51. package/src/components/Business/BsLayouts/Components/AllFunc/drawContent.tsx +111 -111
  52. package/src/components/Business/BsLayouts/Components/AllFunc/index.less +153 -153
  53. package/src/components/Business/BsLayouts/Components/AllFunc/index.tsx +70 -70
  54. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/index.less +90 -90
  55. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/index.tsx +37 -37
  56. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/leftTree.tsx +242 -242
  57. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/rightTree.tsx +384 -384
  58. package/src/components/Business/BsLayouts/Components/CustomerMenu/globalMenu/DrawContent.tsx +285 -285
  59. package/src/components/Business/BsLayouts/Components/CustomerMenu/globalMenu/customMenuHeader.tsx +74 -74
  60. package/src/components/Business/BsLayouts/Components/CustomerMenu/globalMenu/drawContent.less +170 -170
  61. package/src/components/Business/BsLayouts/Components/CustomerMenu/index.less +64 -64
  62. package/src/components/Business/BsLayouts/Components/CustomerMenu/index.tsx +153 -153
  63. package/src/components/Business/BsLayouts/Components/GlobalHeader/index.less +72 -72
  64. package/src/components/Business/BsLayouts/Components/GlobalHeader/index.tsx +157 -157
  65. package/src/components/Business/BsLayouts/Components/RightContent/LoginModal.tsx +85 -85
  66. package/src/components/Business/BsLayouts/Components/RightContent/home.less +218 -218
  67. package/src/components/Business/BsLayouts/Components/RightContent/index.tsx +155 -155
  68. package/src/components/Business/BsLayouts/Components/SearchFunc/index.less +160 -160
  69. package/src/components/Business/BsLayouts/Components/SearchFunc/index.tsx +75 -75
  70. package/src/components/Business/BsLayouts/index.less +79 -79
  71. package/src/components/Business/BsLayouts/index.tsx +1484 -1484
  72. package/src/components/Business/BsLayouts/service.ts +10 -10
  73. package/src/components/Business/BsLayouts/utils.tsx +203 -203
  74. package/src/components/Business/BsSulaQueryTable/SearchItemSetting.tsx +538 -538
  75. package/src/components/Business/BsSulaQueryTable/index.less +219 -219
  76. package/src/components/Business/BsSulaQueryTable/index.tsx +527 -527
  77. package/src/components/Business/BsSulaQueryTable/setting.tsx +802 -802
  78. package/src/components/Business/BsSulaQueryTable/utils.less +65 -65
  79. package/src/components/Business/BsSulaQueryTable/utils.tsx +688 -688
  80. package/src/components/Business/CommodityEntry/index.md +70 -70
  81. package/src/components/Business/CommodityEntry/index.tsx +80 -80
  82. package/src/components/Business/CommonAlert/index.tsx +23 -23
  83. package/src/components/Business/CommonGuideWrapper/index.less +111 -111
  84. package/src/components/Business/CommonGuideWrapper/index.md +39 -39
  85. package/src/components/Business/CommonGuideWrapper/index.tsx +83 -83
  86. package/src/components/Business/DetailPageWrapper/index.less +79 -79
  87. package/src/components/Business/DetailPageWrapper/index.tsx +313 -313
  88. package/src/components/Business/DetailPageWrapper/utils.tsx +100 -100
  89. package/src/components/Business/HomePageWrapper/index.less +33 -33
  90. package/src/components/Business/HomePageWrapper/index.md +45 -45
  91. package/src/components/Business/HomePageWrapper/index.tsx +162 -162
  92. package/src/components/Business/JsonQueryTable/components/FieldsModifyModal.tsx +824 -824
  93. package/src/components/Business/JsonQueryTable/components/FieldsSettingsTable.tsx +201 -201
  94. package/src/components/Business/JsonQueryTable/components/Formula.tsx +205 -205
  95. package/src/components/Business/JsonQueryTable/components/MaintainOptions.tsx +127 -127
  96. package/src/components/Business/JsonQueryTable/configButton/index.js +20 -20
  97. package/src/components/Business/JsonQueryTable/configTree/component/compactArrayView.js +25 -25
  98. package/src/components/Business/JsonQueryTable/configTree/component/compactObjectView.js +30 -30
  99. package/src/components/Business/JsonQueryTable/configTree/index.js +82 -82
  100. package/src/components/Business/JsonQueryTable/configTree/index.less +44 -44
  101. package/src/components/Business/JsonQueryTable/configTree/parser/highlight.js +57 -57
  102. package/src/components/Business/JsonQueryTable/configTree/parser/index.js +124 -124
  103. package/src/components/Business/JsonQueryTable/configTree/render/iconRender.js +29 -29
  104. package/src/components/Business/JsonQueryTable/configTree/render/nameRender.js +22 -22
  105. package/src/components/Business/JsonQueryTable/configTree/treeNode.js +116 -116
  106. package/src/components/Business/JsonQueryTable/drawer/index.tsx +12 -12
  107. package/src/components/Business/JsonQueryTable/function.ts +62 -62
  108. package/src/components/Business/JsonQueryTable/index.less +16 -16
  109. package/src/components/Business/JsonQueryTable/index.md +328 -328
  110. package/src/components/Business/JsonQueryTable/index.tsx +320 -320
  111. package/src/components/Business/JsonQueryTable/jsonEditor/index.js +346 -346
  112. package/src/components/Business/JsonQueryTable/jsonEditor/index.less +22 -22
  113. package/src/components/Business/JsonQueryTable/jsonEditor/lint/basicType.js +147 -147
  114. package/src/components/Business/JsonQueryTable/jsonEditor/lint/index.js +389 -389
  115. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/actions.js +118 -118
  116. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/dependency.js +22 -22
  117. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/index.js +21 -21
  118. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/request.js +65 -65
  119. package/src/components/Business/JsonQueryTable/static.ts +390 -390
  120. package/src/components/Business/SearchSelect/BusinessUtils.ts +1732 -1731
  121. package/src/components/Business/SearchSelect/common.ts +53 -53
  122. package/src/components/Business/SearchSelect/index.md +1319 -1319
  123. package/src/components/Business/SearchSelect/index.tsx +51 -51
  124. package/src/components/Business/SearchSelect/utils.ts +100 -100
  125. package/src/components/Business/StateFlow/index.less +130 -130
  126. package/src/components/Business/StateFlow/index.md +60 -60
  127. package/src/components/Business/StateFlow/index.tsx +29 -29
  128. package/src/components/Business/TreeSearchSelect/index.md +154 -154
  129. package/src/components/Business/TreeSearchSelect/index.tsx +34 -34
  130. package/src/components/Business/TreeSearchSelect/utils.ts +69 -69
  131. package/src/components/Business/columnSettingTable/columnSetting.tsx +764 -764
  132. package/src/components/Business/columnSettingTable/index.less +247 -247
  133. package/src/components/Business/columnSettingTable/index.md +357 -357
  134. package/src/components/Business/columnSettingTable/index.tsx +232 -232
  135. package/src/components/Business/columnSettingTable/sulaSettingTable.tsx +240 -240
  136. package/src/components/Business/columnSettingTable/utils.tsx +68 -68
  137. package/src/components/Business/moreTreeTable/index.less +99 -99
  138. package/src/components/Business/moreTreeTable/index.md +448 -448
  139. package/src/components/Business/moreTreeTable/index.tsx +365 -365
  140. package/src/components/Business/moreTreeTable/utils.ts +126 -126
  141. package/src/components/Functional/AddSelect/helps.ts +14 -14
  142. package/src/components/Functional/AddSelect/index.less +367 -367
  143. package/src/components/Functional/AddSelect/index.md +155 -155
  144. package/src/components/Functional/AddSelect/index.tsx +1279 -1279
  145. package/src/components/Functional/BillEntry/index.less +371 -371
  146. package/src/components/Functional/BillEntry/index.md +39 -39
  147. package/src/components/Functional/BillEntry/index.tsx +772 -772
  148. package/src/components/Functional/DataImport/index.less +63 -63
  149. package/src/components/Functional/DataImport/index.md +44 -44
  150. package/src/components/Functional/DataImport/index.tsx +695 -695
  151. package/src/components/Functional/DataValidation/index.less +63 -63
  152. package/src/components/Functional/DataValidation/index.md +39 -39
  153. package/src/components/Functional/DataValidation/index.tsx +687 -687
  154. package/src/components/Functional/ExportFunctions/ExportIcon/index.md +37 -37
  155. package/src/components/Functional/ExportFunctions/ExportIcon/index.tsx +59 -59
  156. package/src/components/Functional/QueryMutipleInput/index.less +37 -37
  157. package/src/components/Functional/QueryMutipleInput/index.md +33 -33
  158. package/src/components/Functional/QueryMutipleInput/index.tsx +128 -128
  159. package/src/components/Functional/SearchSelect/index.less +115 -115
  160. package/src/components/Functional/SearchSelect/index.md +141 -141
  161. package/src/components/Functional/SearchSelect/index.tsx +849 -849
  162. package/src/components/Functional/SearchSelect/utils.ts +3 -3
  163. package/src/components/Functional/TreeSearchSelect/index.md +47 -47
  164. package/src/components/Functional/TreeSearchSelect/index.tsx +162 -162
  165. package/src/index.ts +34 -34
  166. package/src/plugin/TableColumnSetting/index.less +247 -247
  167. package/src/plugin/TableColumnSetting/index.md +50 -50
  168. package/src/plugin/TableColumnSetting/index.tsx +724 -724
  169. package/src/plugin/TableColumnSetting/utils.ts +19 -19
  170. package/src/styles/bsDefault.less +1912 -1912
  171. package/src/utils/CheckOneUser/index.md +39 -39
  172. package/src/utils/CheckOneUser/index.ts +51 -51
  173. package/src/utils/LocalstorageUtils.ts +90 -90
  174. package/src/utils/TableUtils.tsx +18 -18
  175. package/src/utils/checkUtils.ts +39 -39
  176. package/src/utils/enumConfig.ts +11 -11
  177. package/src/utils/getFormMode.js +12 -12
  178. package/src/utils/index.ts +3 -3
  179. package/src/utils/requestUtils.ts +34 -34
  180. package/src/utils/serialize.js +7 -7
  181. package/src/utils/utils.ts +183 -183
  182. package/tsconfig.json +29 -29
  183. package/typings.d.ts +4 -4
@@ -1,314 +1,314 @@
1
- // @ts-nocheck
2
- import {
3
- ArrowLeftOutlined,
4
- } from '@ant-design/icons';
5
- import { Anchor, Tooltip, Button, Menu, Dropdown, Breadcrumb } from 'antd';
6
- import React, { useEffect, useState, useMemo } from 'react';
7
- import { history } from 'umi';
8
- import { getMainCrumbNameMap, doDetailPageAction, judgeIsEmpty } from './utils';
9
- import { memoizeOneFormatter, go2BackAndClose } from '@/utils/utils';
10
- import './index.less';
11
- import quanping from '../../../assets/icon-quanping.svg';
12
- import scanning from '../../../assets/scanning.svg';
13
- import editIcon from '../../../assets/btn-edit.svg';
14
- import submitIcon from '../../../assets/btn-submit.svg';
15
- import deleteIcon from '../../../assets/btn-delete.svg';
16
- import moreIcon from '../../../assets/btn-more.svg';
17
- import { useLocation, formatMessage } from 'umi';
18
- import CommonAlert from '../CommonAlert';
19
- import ENUM from '@/utils/enumConfig';
20
-
21
- interface actionItem {
22
- type?: string;
23
- name: string;
24
- icon?: string;
25
- visible?: boolean | string;
26
- disabled?: boolean;
27
- code?: string; //权限过滤todo
28
- action: object;
29
- }
30
-
31
- export const iconMap = {
32
- edit: <img src={editIcon} />,
33
- delete: <img src={deleteIcon} />,
34
- submit: <img src={submitIcon} />,
35
- more: <img src={moreIcon} />,
36
- };
37
-
38
- export default (props: any) => {
39
- const { pathname } = useLocation();
40
- const [id]: any = useState(pathname + 'id');
41
- const { children, ...restProps } = props;
42
-
43
- return (
44
- <div id={id} className={'detail_page_wrapper'}>
45
- <DetailWrapper
46
- pathname={pathname}
47
- {
48
- ...restProps
49
- }
50
- />
51
- {children}
52
- </div>
53
- );
54
- };
55
-
56
- const DetailWrapper = React.memo(
57
- ({
58
- pathname,
59
- actionList=[],
60
- routes=[],
61
- itemPath,
62
- alertProps,
63
- donotNeedShowScreenIcon=false,
64
- title,
65
- pathToRegexp,
66
- }: any) => {
67
- const [isFullScreen, setIsFnllScreen]: any = useState(false);
68
- const [breadcrumbArr, setBreadCrumbArr]: any = useState([]);
69
-
70
- const basePath = window.top == window ? '' : `/${itemPath}`;
71
-
72
- const menuRoutes =
73
- window.top == window
74
- ? routes.find((item) => item.path === '/')?.routes || []
75
- : JSON.parse(localStorage.getItem(ENUM.BROWSER_CACHE.LIMIT_MENU_DATA) || '[]');
76
-
77
- const breadcrumbNameMap = getMainCrumbNameMap(
78
- memoizeOneFormatter(menuRoutes, ''),
79
- );
80
- const matchParamsPath = (pathname: string, breadcrumbNameMap: object) => {
81
- const pathKey: any = Object.keys(breadcrumbNameMap).find((key) =>
82
- pathToRegexp ? pathToRegexp(key).test(pathname) : false
83
- );
84
- return pathKey ? breadcrumbNameMap[pathKey] : undefined;
85
- };
86
-
87
- const getPageTitle = (pathname: string) => {
88
- const currRouterData = matchParamsPath(
89
- `${basePath}${pathname}`,
90
- breadcrumbNameMap,
91
- );
92
-
93
- if (!currRouterData) {
94
- return '';
95
- }
96
-
97
- let breadcrumbArrs = currRouterData.nameMap || [];
98
- if (title && breadcrumbArrs.length) {
99
- breadcrumbArrs.pop();
100
- breadcrumbArrs.push(title)
101
- }
102
- setBreadCrumbArr([...breadcrumbArrs])
103
-
104
- const pageName = formatMessage({
105
- id: currRouterData.locale || currRouterData.name,
106
- defaultMessage: currRouterData.name,
107
- });
108
-
109
- return title ? title : window.top === window ? pageName : `${currRouterData.name}`;
110
- };
111
-
112
- const pageTitle = useMemo(() => getPageTitle(pathname), [pathname, title]);
113
-
114
- useEffect(() => {}, []);
115
-
116
- const ShowFullScreen = () => {
117
- const isFullScreen: any =
118
- window.top.document.fullScreen ||
119
- window.top.document.webkitIsFullScreen ||
120
- window.top.document.mozFullScreen;
121
- let contentEle: any = window.top.document.querySelector(`body`);
122
- // addTabsNavStyle(isFullScreen);
123
- if (contentEle && !isFullScreen) {
124
- let fullScreenEle =
125
- contentEle.requestFullscreen ||
126
- contentEle.mozRequestFullScreen ||
127
- contentEle.webkitRequestFullScreen ||
128
- contentEle.msRequestFullscreen;
129
- if (fullScreenEle) {
130
- fullScreenEle.call(contentEle);
131
- setIsFnllScreen(true);
132
- return;
133
- }
134
- }
135
- if (window.top.document && isFullScreen) {
136
- let exitFullScreen =
137
- window.top.document.exitFullscreen ||
138
- window.top.document.mozCancelFullScreen ||
139
- window.top.document.webkitCancelFullScreen ||
140
- window.top.document.msExitFullscreen;
141
- if (exitFullScreen) {
142
- exitFullScreen.call(window.top.document);
143
- setIsFnllScreen(false);
144
- return;
145
- }
146
- }
147
- };
148
-
149
- const renderPageActionList = (actionLists: Array<actionItem>) => {
150
- const authButton = localStorage.getItem(ENUM.BROWSER_CACHE.MAIN_AUTH_CODES)
151
- ? JSON.parse(localStorage.getItem(ENUM.BROWSER_CACHE.MAIN_AUTH_CODES) as string)
152
- : [];
153
- let visibleActions = actionLists.filter(
154
- (action) =>
155
- ((action.visible && action.visible !== 'false') || judgeIsEmpty(action.visible)) &&
156
- (judgeIsEmpty(action.code) || authButton.filter(item => item === action.code)),
157
- );
158
-
159
- const renderButton = (item: actionItem, type?: any) => {
160
- return (
161
- <Button
162
- type={type || 'primary'}
163
- icon={item.icon ? iconMap[item.icon] : ''}
164
- danger={item.name === '删除' ? true : false}
165
- disabled={item.disabled}
166
- onClick={() => {
167
- if (typeof item.action === 'function') {
168
- item.action();
169
- } else {
170
- doDetailPageAction(item.action);
171
- }
172
- }}
173
- >
174
- {item.name}
175
- </Button>
176
- );
177
- };
178
-
179
- if (visibleActions.length <= 3) {
180
- return visibleActions.map((item) => {
181
- return renderButton(item);
182
- });
183
- }
184
-
185
- let moreOperate = visibleActions.splice(3);
186
- const menu = (
187
- <Menu>
188
- {moreOperate.map((item: any, index: number) => (
189
- <Menu.Item className="more-btn-action" key={index}>
190
- {renderButton(item, 'link')}
191
- </Menu.Item>
192
- ))}
193
- </Menu>
194
- );
195
- //按钮操作3个显示更多
196
- return (
197
- <div className="detail_btn_wrapper">
198
- {visibleActions.map((item: any, index: number) => {
199
- return renderButton(item);
200
- })}
201
- <Dropdown style={{ padding: '0px' }} overlay={menu}>
202
- <Button type="primary">
203
- <span style={{ margin: '0px' }}>更多</span>
204
- <img src={moreIcon} />
205
- </Button>
206
- </Dropdown>
207
- </div>
208
- );
209
- };
210
-
211
- return (
212
- <Anchor
213
- key={`${pathname}_anchor`}
214
- offsetTop={window.top == window ? 78 : 0}
215
- >
216
- <div>
217
- <div className={'detail_page_head'}>
218
- <div
219
- className={'back_home_img_content'}
220
- onClick={() => {
221
- go2BackAndClose();
222
- // history.goBack();
223
- }}
224
- >
225
- <ArrowLeftOutlined />
226
- </div>
227
- <div className={'detail_page_title_box'}>
228
- <div className={'detail_page_title'}>{pageTitle}</div>
229
- <Breadcrumb>
230
- {breadcrumbArr.map((item) => (
231
- <Breadcrumb.Item
232
- key={item}
233
- onClick={() => {
234
- // if (
235
- // item.path &&
236
- // !item.children &&
237
- // !pathToRegexp(item.path).test(`${basePath}${pathname}`)
238
- // ) {
239
- // history.push({
240
- // pathname: item.path.replace(basePath, ''),
241
- // });
242
- // }
243
- }}
244
- >
245
- <span
246
- style={{
247
- // color:
248
- // item.path &&
249
- // pathToRegexp(item.path).test(`${basePath}${pathname}`)
250
- // ? '#000000d9'
251
- // : '',
252
- }}
253
- className="bread_name"
254
- >
255
- {item}
256
- </span>
257
- </Breadcrumb.Item>
258
- ))}
259
- </Breadcrumb>
260
- </div>
261
- <div
262
- className={'detail_page_btns'}
263
- style={{ marginRight: '20px', display: 'flex', gap: '8px' }}
264
- >
265
- {renderPageActionList(actionList)}
266
- {
267
- !donotNeedShowScreenIcon ? ( <a>
268
- {isFullScreen ? (
269
- <Tooltip title="取消全屏">
270
- <img
271
- onClick={() => {
272
- ShowFullScreen();
273
- }}
274
- width={32}
275
- src={scanning}
276
- />
277
- </Tooltip>
278
- ) : (
279
- <Tooltip title="全屏">
280
- <img
281
- onClick={() => {
282
- ShowFullScreen();
283
- }}
284
- width={32}
285
- src={quanping}
286
- />
287
- </Tooltip>
288
- )}
289
- </a>) : null
290
- }
291
- </div>
292
- </div>
293
- {
294
- alertProps && (
295
- <CommonAlert
296
- {
297
- ...alertProps
298
- }
299
- />
300
- )
301
- }
302
- </div>
303
- </Anchor>
304
- );
305
- },
306
- (prevProps, nextProps) => {
307
- if (
308
- (JSON.stringify(prevProps.actionList) != JSON.stringify(nextProps.actionList)) || prevProps.title !== nextProps.title
309
- ) {
310
- return false;
311
- }
312
- return true;
313
- },
1
+ // @ts-nocheck
2
+ import {
3
+ ArrowLeftOutlined,
4
+ } from '@ant-design/icons';
5
+ import { Anchor, Tooltip, Button, Menu, Dropdown, Breadcrumb } from 'antd';
6
+ import React, { useEffect, useState, useMemo } from 'react';
7
+ import { history } from 'umi';
8
+ import { getMainCrumbNameMap, doDetailPageAction, judgeIsEmpty } from './utils';
9
+ import { memoizeOneFormatter, go2BackAndClose } from '@/utils/utils';
10
+ import './index.less';
11
+ import quanping from '../../../assets/icon-quanping.svg';
12
+ import scanning from '../../../assets/scanning.svg';
13
+ import editIcon from '../../../assets/btn-edit.svg';
14
+ import submitIcon from '../../../assets/btn-submit.svg';
15
+ import deleteIcon from '../../../assets/btn-delete.svg';
16
+ import moreIcon from '../../../assets/btn-more.svg';
17
+ import { useLocation, formatMessage } from 'umi';
18
+ import CommonAlert from '../CommonAlert';
19
+ import ENUM from '@/utils/enumConfig';
20
+
21
+ interface actionItem {
22
+ type?: string;
23
+ name: string;
24
+ icon?: string;
25
+ visible?: boolean | string;
26
+ disabled?: boolean;
27
+ code?: string; //权限过滤todo
28
+ action: object;
29
+ }
30
+
31
+ export const iconMap = {
32
+ edit: <img src={editIcon} />,
33
+ delete: <img src={deleteIcon} />,
34
+ submit: <img src={submitIcon} />,
35
+ more: <img src={moreIcon} />,
36
+ };
37
+
38
+ export default (props: any) => {
39
+ const { pathname } = useLocation();
40
+ const [id]: any = useState(pathname + 'id');
41
+ const { children, ...restProps } = props;
42
+
43
+ return (
44
+ <div id={id} className={'detail_page_wrapper'}>
45
+ <DetailWrapper
46
+ pathname={pathname}
47
+ {
48
+ ...restProps
49
+ }
50
+ />
51
+ {children}
52
+ </div>
53
+ );
54
+ };
55
+
56
+ const DetailWrapper = React.memo(
57
+ ({
58
+ pathname,
59
+ actionList=[],
60
+ routes=[],
61
+ itemPath,
62
+ alertProps,
63
+ donotNeedShowScreenIcon=false,
64
+ title,
65
+ pathToRegexp,
66
+ }: any) => {
67
+ const [isFullScreen, setIsFnllScreen]: any = useState(false);
68
+ const [breadcrumbArr, setBreadCrumbArr]: any = useState([]);
69
+
70
+ const basePath = window.top == window ? '' : `/${itemPath}`;
71
+
72
+ const menuRoutes =
73
+ window.top == window
74
+ ? routes.find((item) => item.path === '/')?.routes || []
75
+ : JSON.parse(localStorage.getItem(ENUM.BROWSER_CACHE.LIMIT_MENU_DATA) || '[]');
76
+
77
+ const breadcrumbNameMap = getMainCrumbNameMap(
78
+ memoizeOneFormatter(menuRoutes, ''),
79
+ );
80
+ const matchParamsPath = (pathname: string, breadcrumbNameMap: object) => {
81
+ const pathKey: any = Object.keys(breadcrumbNameMap).find((key) =>
82
+ pathToRegexp ? pathToRegexp(key).test(pathname) : false
83
+ );
84
+ return pathKey ? breadcrumbNameMap[pathKey] : undefined;
85
+ };
86
+
87
+ const getPageTitle = (pathname: string) => {
88
+ const currRouterData = matchParamsPath(
89
+ `${basePath}${pathname}`,
90
+ breadcrumbNameMap,
91
+ );
92
+
93
+ if (!currRouterData) {
94
+ return '';
95
+ }
96
+
97
+ let breadcrumbArrs = currRouterData.nameMap || [];
98
+ if (title && breadcrumbArrs.length) {
99
+ breadcrumbArrs.pop();
100
+ breadcrumbArrs.push(title)
101
+ }
102
+ setBreadCrumbArr([...breadcrumbArrs])
103
+
104
+ const pageName = formatMessage({
105
+ id: currRouterData.locale || currRouterData.name,
106
+ defaultMessage: currRouterData.name,
107
+ });
108
+
109
+ return title ? title : window.top === window ? pageName : `${currRouterData.name}`;
110
+ };
111
+
112
+ const pageTitle = useMemo(() => getPageTitle(pathname), [pathname, title]);
113
+
114
+ useEffect(() => {}, []);
115
+
116
+ const ShowFullScreen = () => {
117
+ const isFullScreen: any =
118
+ window.top.document.fullScreen ||
119
+ window.top.document.webkitIsFullScreen ||
120
+ window.top.document.mozFullScreen;
121
+ let contentEle: any = window.top.document.querySelector(`body`);
122
+ // addTabsNavStyle(isFullScreen);
123
+ if (contentEle && !isFullScreen) {
124
+ let fullScreenEle =
125
+ contentEle.requestFullscreen ||
126
+ contentEle.mozRequestFullScreen ||
127
+ contentEle.webkitRequestFullScreen ||
128
+ contentEle.msRequestFullscreen;
129
+ if (fullScreenEle) {
130
+ fullScreenEle.call(contentEle);
131
+ setIsFnllScreen(true);
132
+ return;
133
+ }
134
+ }
135
+ if (window.top.document && isFullScreen) {
136
+ let exitFullScreen =
137
+ window.top.document.exitFullscreen ||
138
+ window.top.document.mozCancelFullScreen ||
139
+ window.top.document.webkitCancelFullScreen ||
140
+ window.top.document.msExitFullscreen;
141
+ if (exitFullScreen) {
142
+ exitFullScreen.call(window.top.document);
143
+ setIsFnllScreen(false);
144
+ return;
145
+ }
146
+ }
147
+ };
148
+
149
+ const renderPageActionList = (actionLists: Array<actionItem>) => {
150
+ const authButton = localStorage.getItem(ENUM.BROWSER_CACHE.MAIN_AUTH_CODES)
151
+ ? JSON.parse(localStorage.getItem(ENUM.BROWSER_CACHE.MAIN_AUTH_CODES) as string)
152
+ : [];
153
+ let visibleActions = actionLists.filter(
154
+ (action) =>
155
+ ((action.visible && action.visible !== 'false') || judgeIsEmpty(action.visible)) &&
156
+ (judgeIsEmpty(action.code) || authButton.filter(item => item === action.code)),
157
+ );
158
+
159
+ const renderButton = (item: actionItem, type?: any) => {
160
+ return (
161
+ <Button
162
+ type={type || 'primary'}
163
+ icon={item.icon ? iconMap[item.icon] : ''}
164
+ danger={item.name === '删除' ? true : false}
165
+ disabled={item.disabled}
166
+ onClick={() => {
167
+ if (typeof item.action === 'function') {
168
+ item.action();
169
+ } else {
170
+ doDetailPageAction(item.action);
171
+ }
172
+ }}
173
+ >
174
+ {item.name}
175
+ </Button>
176
+ );
177
+ };
178
+
179
+ if (visibleActions.length <= 3) {
180
+ return visibleActions.map((item) => {
181
+ return renderButton(item);
182
+ });
183
+ }
184
+
185
+ let moreOperate = visibleActions.splice(3);
186
+ const menu = (
187
+ <Menu>
188
+ {moreOperate.map((item: any, index: number) => (
189
+ <Menu.Item className="more-btn-action" key={index}>
190
+ {renderButton(item, 'link')}
191
+ </Menu.Item>
192
+ ))}
193
+ </Menu>
194
+ );
195
+ //按钮操作3个显示更多
196
+ return (
197
+ <div className="detail_btn_wrapper">
198
+ {visibleActions.map((item: any, index: number) => {
199
+ return renderButton(item);
200
+ })}
201
+ <Dropdown style={{ padding: '0px' }} overlay={menu}>
202
+ <Button type="primary">
203
+ <span style={{ margin: '0px' }}>更多</span>
204
+ <img src={moreIcon} />
205
+ </Button>
206
+ </Dropdown>
207
+ </div>
208
+ );
209
+ };
210
+
211
+ return (
212
+ <Anchor
213
+ key={`${pathname}_anchor`}
214
+ offsetTop={window.top == window ? 78 : 0}
215
+ >
216
+ <div>
217
+ <div className={'detail_page_head'}>
218
+ <div
219
+ className={'back_home_img_content'}
220
+ onClick={() => {
221
+ go2BackAndClose();
222
+ // history.goBack();
223
+ }}
224
+ >
225
+ <ArrowLeftOutlined />
226
+ </div>
227
+ <div className={'detail_page_title_box'}>
228
+ <div className={'detail_page_title'}>{pageTitle}</div>
229
+ <Breadcrumb>
230
+ {breadcrumbArr.map((item) => (
231
+ <Breadcrumb.Item
232
+ key={item}
233
+ onClick={() => {
234
+ // if (
235
+ // item.path &&
236
+ // !item.children &&
237
+ // !pathToRegexp(item.path).test(`${basePath}${pathname}`)
238
+ // ) {
239
+ // history.push({
240
+ // pathname: item.path.replace(basePath, ''),
241
+ // });
242
+ // }
243
+ }}
244
+ >
245
+ <span
246
+ style={{
247
+ // color:
248
+ // item.path &&
249
+ // pathToRegexp(item.path).test(`${basePath}${pathname}`)
250
+ // ? '#000000d9'
251
+ // : '',
252
+ }}
253
+ className="bread_name"
254
+ >
255
+ {item}
256
+ </span>
257
+ </Breadcrumb.Item>
258
+ ))}
259
+ </Breadcrumb>
260
+ </div>
261
+ <div
262
+ className={'detail_page_btns'}
263
+ style={{ marginRight: '20px', display: 'flex', gap: '8px' }}
264
+ >
265
+ {renderPageActionList(actionList)}
266
+ {
267
+ !donotNeedShowScreenIcon ? ( <a>
268
+ {isFullScreen ? (
269
+ <Tooltip title="取消全屏">
270
+ <img
271
+ onClick={() => {
272
+ ShowFullScreen();
273
+ }}
274
+ width={32}
275
+ src={scanning}
276
+ />
277
+ </Tooltip>
278
+ ) : (
279
+ <Tooltip title="全屏">
280
+ <img
281
+ onClick={() => {
282
+ ShowFullScreen();
283
+ }}
284
+ width={32}
285
+ src={quanping}
286
+ />
287
+ </Tooltip>
288
+ )}
289
+ </a>) : null
290
+ }
291
+ </div>
292
+ </div>
293
+ {
294
+ alertProps && (
295
+ <CommonAlert
296
+ {
297
+ ...alertProps
298
+ }
299
+ />
300
+ )
301
+ }
302
+ </div>
303
+ </Anchor>
304
+ );
305
+ },
306
+ (prevProps, nextProps) => {
307
+ if (
308
+ (JSON.stringify(prevProps.actionList) != JSON.stringify(nextProps.actionList)) || prevProps.title !== nextProps.title
309
+ ) {
310
+ return false;
311
+ }
312
+ return true;
313
+ },
314
314
  );