@bit-sun/business-component 1.2.3 → 1.2.4-alpha.1

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 (169) hide show
  1. package/.fatherrc.ts +1 -0
  2. package/.umirc.ts +31 -16
  3. package/dist/components/Business/AddSelectBusiness/index.d.ts +1 -0
  4. package/dist/components/Business/BsLayouts/Components/AllFunc/drawContent.d.ts +4 -0
  5. package/dist/components/Business/BsLayouts/Components/AllFunc/index.d.ts +4 -0
  6. package/dist/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/index.d.ts +4 -0
  7. package/dist/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/leftTree.d.ts +17 -0
  8. package/dist/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/rightTree.d.ts +30 -0
  9. package/dist/components/Business/BsLayouts/Components/CustomerMenu/globalMenu/DrawContent.d.ts +3 -0
  10. package/dist/components/Business/BsLayouts/Components/CustomerMenu/globalMenu/customMenuHeader.d.ts +2 -0
  11. package/dist/components/Business/BsLayouts/Components/CustomerMenu/index.d.ts +4 -0
  12. package/dist/components/Business/BsLayouts/Components/GlobalHeader/index.d.ts +4 -0
  13. package/dist/components/Business/BsLayouts/Components/RightContent/LoginModal.d.ts +2 -0
  14. package/dist/components/Business/BsLayouts/Components/RightContent/index.d.ts +8 -0
  15. package/dist/components/Business/BsLayouts/Components/SearchFunc/index.d.ts +8 -0
  16. package/dist/components/Business/BsLayouts/index.d.ts +18 -0
  17. package/dist/components/Business/BsLayouts/service.d.ts +1 -0
  18. package/dist/components/Business/BsLayouts/utils.d.ts +13 -0
  19. package/dist/components/Business/BsSulaQueryTable/index.d.ts +2 -0
  20. package/dist/components/Business/BsSulaQueryTable/setting.d.ts +58 -0
  21. package/dist/components/Business/BsSulaQueryTable/utils.d.ts +98 -0
  22. package/dist/components/Business/CommonAlert/index.d.ts +3 -0
  23. package/dist/components/Business/CommonGuideWrapper/index.d.ts +6 -0
  24. package/dist/components/Business/DetailPageWrapper/index.d.ts +9 -0
  25. package/dist/components/Business/DetailPageWrapper/utils.d.ts +8 -0
  26. package/dist/components/Business/HomePageWrapper/index.d.ts +3 -0
  27. package/dist/components/Business/SearchSelect/BusinessUtils.d.ts +1 -1
  28. package/dist/components/Business/SearchSelect/common.d.ts +5 -1
  29. package/dist/components/Business/SearchSelect/index.d.ts +1 -1
  30. package/dist/components/Business/SearchSelect/utils.d.ts +2 -1
  31. package/dist/components/Business/StateFlow/index.d.ts +3 -0
  32. package/dist/components/Business/TreeSearchSelect/index.d.ts +3 -0
  33. package/dist/components/Business/TreeSearchSelect/utils.d.ts +2 -0
  34. package/dist/components/Business/columnSettingTable/columnSetting.d.ts +54 -0
  35. package/dist/components/Business/columnSettingTable/index.d.ts +16 -0
  36. package/dist/components/Business/columnSettingTable/sulaSettingTable.d.ts +17 -0
  37. package/dist/components/Business/columnSettingTable/utils.d.ts +8 -0
  38. package/dist/components/Functional/AddSelect/index.d.ts +3 -0
  39. package/dist/components/Functional/BillEntry/index.d.ts +4 -0
  40. package/dist/components/Functional/ExportFunctions/ExportIcon/index.d.ts +12 -0
  41. package/dist/components/Functional/SearchSelect/index.d.ts +2 -1
  42. package/dist/components/Functional/TreeSearchSelect/index.d.ts +2 -0
  43. package/dist/index.d.ts +15 -0
  44. package/dist/index.esm.js +19420 -4457
  45. package/dist/index.js +19451 -4471
  46. package/dist/utils/CheckOneUser/index.d.ts +1 -1
  47. package/dist/utils/enumConfig.d.ts +10 -0
  48. package/dist/utils/requestUtils.d.ts +1 -0
  49. package/dist/utils/utils.d.ts +3 -0
  50. package/lib/assets/arrow_top.png +0 -0
  51. package/lib/assets/drag.svg +17 -0
  52. package/lib/assets/exportFail.svg +38 -0
  53. package/lib/assets/exportProcessing.svg +29 -0
  54. package/lib/assets/exportSuccess.svg +35 -0
  55. package/lib/assets/exportlogo.png +0 -0
  56. package/lib/assets/label_icon_bottom.svg +26 -0
  57. package/lib/assets/upExport.svg +23 -0
  58. package/package.json +26 -5
  59. package/src/assets/32.svg +28 -0
  60. package/src/assets/addIcon.svg +18 -0
  61. package/src/assets/allfunc.svg +28 -0
  62. package/src/assets/arrowRight.svg +25 -0
  63. package/src/assets/arrow_top.png +0 -0
  64. package/src/assets/btn-delete.svg +30 -0
  65. package/src/assets/btn-edit.svg +20 -0
  66. package/src/assets/btn-more.svg +18 -0
  67. package/src/assets/btn-submit.svg +20 -0
  68. package/src/assets/caidan.svg +12 -0
  69. package/src/assets/close.svg +26 -0
  70. package/src/assets/closeicon.png +0 -0
  71. package/src/assets/drag.svg +17 -0
  72. package/src/assets/exportFail.svg +38 -0
  73. package/src/assets/exportProcessing.svg +29 -0
  74. package/src/assets/exportSuccess.svg +35 -0
  75. package/src/assets/exportlogo.png +0 -0
  76. package/src/assets/fixed-left-active.svg +12 -0
  77. package/src/assets/fixed-left.svg +16 -0
  78. package/src/assets/fixed-right-active.svg +12 -0
  79. package/src/assets/fixed-right.svg +16 -0
  80. package/src/assets/guanbi.svg +16 -0
  81. package/src/assets/icon-quanping.svg +16 -0
  82. package/src/assets/icon-shezhi.svg +18 -0
  83. package/src/assets/label_icon_bottom.svg +26 -0
  84. package/src/assets/list-no-img.svg +22 -0
  85. package/src/assets/morentouxiang-32.svg +24 -0
  86. package/src/assets/right.png +0 -0
  87. package/src/assets/scanning.svg +25 -0
  88. package/src/assets/upExport.svg +23 -0
  89. package/src/assets/xinglan-icon-out.png +0 -0
  90. package/src/components/Business/AddSelectBusiness/index.md +41 -0
  91. package/src/components/Business/AddSelectBusiness/index.tsx +290 -0
  92. package/src/components/Business/BsLayouts/Components/AllFunc/drawContent.tsx +112 -0
  93. package/src/components/Business/BsLayouts/Components/AllFunc/index.less +153 -0
  94. package/src/components/Business/BsLayouts/Components/AllFunc/index.tsx +70 -0
  95. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/index.less +90 -0
  96. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/index.tsx +38 -0
  97. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/leftTree.tsx +243 -0
  98. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/rightTree.tsx +385 -0
  99. package/src/components/Business/BsLayouts/Components/CustomerMenu/globalMenu/DrawContent.tsx +286 -0
  100. package/src/components/Business/BsLayouts/Components/CustomerMenu/globalMenu/customMenuHeader.tsx +75 -0
  101. package/src/components/Business/BsLayouts/Components/CustomerMenu/globalMenu/drawContent.less +171 -0
  102. package/src/components/Business/BsLayouts/Components/CustomerMenu/index.less +65 -0
  103. package/src/components/Business/BsLayouts/Components/CustomerMenu/index.tsx +154 -0
  104. package/src/components/Business/BsLayouts/Components/GlobalHeader/index.less +73 -0
  105. package/src/components/Business/BsLayouts/Components/GlobalHeader/index.tsx +158 -0
  106. package/src/components/Business/BsLayouts/Components/RightContent/LoginModal.tsx +85 -0
  107. package/src/components/Business/BsLayouts/Components/RightContent/home.less +218 -0
  108. package/src/components/Business/BsLayouts/Components/RightContent/index.tsx +156 -0
  109. package/src/components/Business/BsLayouts/Components/SearchFunc/index.less +161 -0
  110. package/src/components/Business/BsLayouts/Components/SearchFunc/index.tsx +76 -0
  111. package/src/components/Business/BsLayouts/index.less +80 -0
  112. package/src/components/Business/BsLayouts/index.tsx +1465 -0
  113. package/src/components/Business/BsLayouts/service.ts +11 -0
  114. package/src/components/Business/BsLayouts/utils.tsx +211 -0
  115. package/src/components/Business/BsSulaQueryTable/index.less +220 -0
  116. package/src/components/Business/BsSulaQueryTable/index.tsx +505 -0
  117. package/src/components/Business/BsSulaQueryTable/setting.tsx +799 -0
  118. package/src/components/Business/BsSulaQueryTable/utils.less +65 -0
  119. package/src/components/Business/BsSulaQueryTable/utils.tsx +688 -0
  120. package/src/components/Business/CommodityEntry/index.md +4 -3
  121. package/src/components/Business/CommodityEntry/index.tsx +7 -2
  122. package/src/components/Business/CommonAlert/index.less +0 -0
  123. package/src/components/Business/CommonAlert/index.tsx +23 -0
  124. package/src/components/Business/CommonGuideWrapper/index.less +112 -0
  125. package/src/components/Business/CommonGuideWrapper/index.md +39 -0
  126. package/src/components/Business/CommonGuideWrapper/index.tsx +84 -0
  127. package/src/components/Business/DetailPageWrapper/index.less +80 -0
  128. package/src/components/Business/DetailPageWrapper/index.tsx +335 -0
  129. package/src/components/Business/DetailPageWrapper/utils.tsx +101 -0
  130. package/src/components/Business/HomePageWrapper/index.less +33 -0
  131. package/src/components/Business/HomePageWrapper/index.md +45 -0
  132. package/src/components/Business/HomePageWrapper/index.tsx +162 -0
  133. package/src/components/Business/SearchSelect/BusinessUtils.ts +107 -14
  134. package/src/components/Business/SearchSelect/common.ts +20 -1
  135. package/src/components/Business/SearchSelect/index.md +60 -30
  136. package/src/components/Business/SearchSelect/index.tsx +21 -12
  137. package/src/components/Business/SearchSelect/utils.ts +30 -4
  138. package/src/components/Business/StateFlow/index.less +131 -0
  139. package/src/components/Business/StateFlow/index.md +60 -0
  140. package/src/components/Business/StateFlow/index.tsx +30 -0
  141. package/src/components/Business/TreeSearchSelect/index.md +126 -0
  142. package/src/components/Business/TreeSearchSelect/index.tsx +34 -0
  143. package/src/components/Business/TreeSearchSelect/utils.ts +60 -0
  144. package/src/components/Business/columnSettingTable/columnSetting.tsx +764 -0
  145. package/src/components/Business/columnSettingTable/index.less +247 -0
  146. package/src/components/Business/columnSettingTable/index.md +358 -0
  147. package/src/components/Business/columnSettingTable/index.tsx +233 -0
  148. package/src/components/Business/columnSettingTable/sulaSettingTable.tsx +241 -0
  149. package/src/components/Business/columnSettingTable/utils.tsx +69 -0
  150. package/src/components/Functional/AddSelect/index.less +367 -0
  151. package/src/components/Functional/AddSelect/index.md +122 -0
  152. package/src/components/Functional/AddSelect/index.tsx +962 -0
  153. package/src/components/Functional/BillEntry/index.less +371 -0
  154. package/src/components/Functional/BillEntry/index.md +39 -0
  155. package/src/components/Functional/BillEntry/index.tsx +613 -0
  156. package/src/components/Functional/DataImport/index.tsx +7 -2
  157. package/src/components/Functional/DataValidation/index.md +1 -0
  158. package/src/components/Functional/DataValidation/index.tsx +17 -2
  159. package/src/components/Functional/ExportFunctions/ExportIcon/index.md +37 -0
  160. package/src/components/Functional/ExportFunctions/ExportIcon/index.tsx +59 -0
  161. package/src/components/Functional/SearchSelect/index.tsx +218 -121
  162. package/src/components/Functional/TreeSearchSelect/index.md +47 -0
  163. package/src/components/Functional/TreeSearchSelect/index.tsx +149 -0
  164. package/src/index.ts +15 -6
  165. package/src/styles/bsDefault.less +1907 -0
  166. package/src/utils/enumConfig.ts +10 -0
  167. package/src/utils/requestUtils.ts +33 -0
  168. package/src/utils/utils.ts +52 -0
  169. package/typings.d.ts +3 -0
@@ -0,0 +1,233 @@
1
+ import React, { useState } from 'react';
2
+ import { Table, Tooltip, Typography } from 'antd';
3
+ import { Resizable } from 'react-resizable';
4
+ import ColumnSetting from './columnSetting';
5
+ import { getItemDefaultWidth, handleTextOverflow } from './utils';
6
+ import { noEmptyArray } from './utils';
7
+ import ENUM from '@/utils/enumConfig';
8
+ const { Text } = Typography;
9
+ export default class ColumnSettingTable extends React.Component {
10
+ state: any;
11
+ constructor(props: any) {
12
+ super(props);
13
+ this.state = {
14
+ showColumns: [],
15
+ }
16
+ }
17
+
18
+ componentDidMount() {
19
+ const { columns }: any = this.props;
20
+ this.setInitialShowColumn(columns || [])
21
+ }
22
+
23
+ componentWillReceiveProps(nextProps: any) {
24
+ // if (JSON.stringify(this.props.columns) !== JSON.stringify(nextProps.columns)) {
25
+ // }
26
+ this.setInitialShowColumn(nextProps.columns || [])
27
+ }
28
+
29
+ setInitialShowColumn = (columns: any[]) => {
30
+ // 获取当前列表定义数据
31
+ let columnConfig = this.getConfigFromlocalstorage();
32
+ let showColumns = columnConfig.length ? columnConfig.map((item: any) => {
33
+ let inner = columns.filter(innerItem => (
34
+ innerItem.dataIndex && innerItem.dataIndex === item.dataIndex
35
+ ) || (innerItem.key && innerItem.key === item.key))[0];
36
+ return {
37
+ ...inner,
38
+ ...item,
39
+ }
40
+ }).filter((item: any) => !item.hidden)
41
+ :
42
+ (columns || []).filter((item: any) => !item.hidden);
43
+ this.setState({
44
+ showColumns,
45
+ })
46
+
47
+ }
48
+
49
+ setShowColumns = (newColumns: Array<any>) => {
50
+ this.setState({
51
+ showColumns: [...newColumns]
52
+ })
53
+ }
54
+
55
+ getConfigFromlocalstorage = () => {
56
+ const { tableCode }: any = this.props;
57
+ if (!tableCode) return [];
58
+ let config = localStorage.getItem(ENUM.BROWSER_CACHE.COLUMN_CONDITION) || '[]';
59
+ let configArray = JSON.parse(config);
60
+ let configSetting = configArray.filter(
61
+ (item:any) => item.code === tableCode,
62
+ );
63
+
64
+ if (configSetting.length) {
65
+ return JSON.parse(configSetting[0].detail || '[]');
66
+ }
67
+ return [];
68
+ };
69
+
70
+ getTableSummaryInfo = () => {
71
+ const { summary = undefined, rowSelection }: any = this.props;
72
+ const { showColumns }: any = this.state;
73
+ let summaryRow = rowSelection ? [{}, ...showColumns] : [...showColumns];
74
+ let summaryInitial = summary().cont;
75
+ let summaryDom: any = <Table.Summary fixed>
76
+ <Table.Summary.Row>
77
+ {
78
+ [...summaryRow].map((item: any, index: number) => {
79
+ return (
80
+ <Table.Summary.Cell index={rowSelection ? index : index - 1}>
81
+ <Text type="danger">
82
+ {
83
+ summaryInitial.filter((inner: any) => inner.key === item.dataIndex || inner.key === item.key).length ?
84
+ `${item.title}: ${summaryInitial.filter((inner: any) => inner.key === item.dataIndex || inner.key === item.key)[0].value}` : ''
85
+
86
+ }
87
+ </Text>
88
+ </Table.Summary.Cell>
89
+ )
90
+ })
91
+ }
92
+ </Table.Summary.Row >
93
+ </Table.Summary>
94
+ return () => summaryDom
95
+ };
96
+
97
+ handledynamicColumns = (col: any[]) => {
98
+ let { dynamicColumns, modeType }: any = this.props;
99
+ col = col.map((item: any) => {
100
+ let target = dynamicColumns.find((d: any) => item.dataIndex === d.key || item.key === d.key)
101
+ if (modeType === 'view' && target) {
102
+ item.render = target?.render;
103
+ }
104
+ return { ...item };
105
+ })
106
+ return [...col]
107
+ };
108
+
109
+ handleResize = (index: any) => (_: any, { size }: any) => {
110
+ let newColumns = this.state.showColumns.map((col: any) => ({ ...col }));
111
+ const handleIndex = (arr: any, indexArr: any) => {
112
+ let i = indexArr.shift();
113
+ if (indexArr.length > 0) {
114
+ handleIndex(arr[i].children, indexArr);
115
+ } else {
116
+ arr[i] = {
117
+ ...arr[i],
118
+ width: size.width,
119
+ };
120
+ if (arr[i].textOverflow) {
121
+ arr[i].render = ({ text }: any) => handleTextOverflow(text, size.width);
122
+ };
123
+ }
124
+ };
125
+ handleIndex(newColumns, [...index]);
126
+ this.setState({
127
+ showColumns: [...newColumns]
128
+ })
129
+ };
130
+
131
+ ResizeableTitle = (props: any) => {
132
+ const { onResize, width, ...restProps } = props;
133
+
134
+ if (!width) {
135
+ return <th {...restProps} />;
136
+ }
137
+ return (
138
+ <Resizable
139
+ width={width}
140
+ height={0}
141
+ onResize={onResize}
142
+ draggableOpts={{ enableUserSelectHack: false }}
143
+ >
144
+ <th {...restProps} />
145
+ </Resizable>
146
+ );
147
+ }
148
+
149
+ getTableScrollXWidth = (cols: any[]) => {
150
+ if (cols.every((item: any) => item.width)) {
151
+ return cols.reduce((cur: any, obj: any) => cur += obj.width, 0)
152
+ } else {
153
+ return 'max-content'
154
+ }
155
+ };
156
+
157
+ render() {
158
+ const { columns, tableCode, summary = undefined, dynamicColumns = [], scroll={}, ...restProps }: any = this.props;
159
+ let otherTableInfo = {
160
+ ...restProps,
161
+ };
162
+ let showSummary = null;
163
+ if (this.state.showColumns.length) {
164
+ if (summary && summary().diy) {
165
+ showSummary = this.getTableSummaryInfo();
166
+ } else {
167
+ showSummary = summary;
168
+ }
169
+ };
170
+
171
+ const handleColumns = (arr: any, indexArr: any[]) => {
172
+ arr.forEach((item: any, index: any) => {
173
+ let indexArrInside = [...indexArr, index].filter((i: any) => i || i === 0)
174
+ if (noEmptyArray(item.children)) {
175
+ handleColumns(item.children, indexArrInside);
176
+ } else {
177
+ item.width = item.width || getItemDefaultWidth(item);
178
+ item.onHeaderCell = (column: any) => ({
179
+ ...item,
180
+ width:
181
+ typeof column.width === 'number'
182
+ ? column.width
183
+ : parseInt(column.width.replace('px', '')),
184
+ onResize: this.handleResize(indexArrInside),
185
+ });
186
+ }
187
+ })
188
+ };
189
+ let showCol = this.state.showColumns.map((item: any) => {
190
+ return ({ ...item })
191
+ })
192
+ handleColumns(showCol, []);
193
+ if (dynamicColumns.length) {
194
+ showCol = this.handledynamicColumns(showCol);
195
+ }
196
+
197
+ otherTableInfo = {
198
+ ...otherTableInfo,
199
+ scroll: {
200
+ y: 400,
201
+ ...scroll,
202
+ x: restProps.overScrollX || this.getTableScrollXWidth(showCol)
203
+ },
204
+ summary: showSummary,
205
+ }
206
+ return (
207
+ <div>
208
+ <div style={{ overflow: 'hidden', padding: '0 8px 10px 0' }}>
209
+ <span style={{ float: 'right' }} className="ant-dropdown-link">
210
+ <ColumnSetting
211
+ setShowColumns={this.setShowColumns}
212
+ showColumns={this.state.showColumns}
213
+ datasource={columns || []}
214
+ tableCode={tableCode}
215
+ />
216
+ </span>
217
+ </div>
218
+ <Table
219
+ columns={showCol}
220
+ components={{
221
+ header: {
222
+ cell: this.ResizeableTitle,
223
+ },
224
+ }}
225
+ {
226
+ ...otherTableInfo
227
+ }
228
+ />
229
+ </div >
230
+ )
231
+ }
232
+
233
+ }
@@ -0,0 +1,241 @@
1
+ import React, { useState } from 'react';
2
+ import { Table as SulaTable, request } from 'bssula';
3
+ import { Resizable } from 'react-resizable';
4
+ import ColumnSetting from './columnSetting';
5
+ import { getItemDefaultWidth, handleTextOverflow } from './utils';
6
+ import { noEmptyArray } from './utils';
7
+ import {
8
+ Table,
9
+ Typography,
10
+ } from 'antd';
11
+ import ENUM from '@/utils/enumConfig';
12
+ const { Text } = Typography;
13
+ export default class ColumnSettingSulaTable extends React.Component {
14
+ sulaTableRef: React.RefObject<unknown>;
15
+ state: any;
16
+ constructor(props: any) {
17
+ super(props);
18
+ this.state = {
19
+ showColumns: [],
20
+ }
21
+ this.sulaTableRef = React.createRef();
22
+ }
23
+
24
+ componentDidMount() {
25
+ const { columns }: any = this.props;
26
+ this.setInitialShowColumn(columns || [])
27
+ }
28
+
29
+ componentWillReceiveProps(nextProps: any) {
30
+ // if (JSON.stringify(this.props.columns) !== JSON.stringify(nextProps.columns)) {
31
+ // }
32
+ this.setInitialShowColumn(nextProps.columns || [])
33
+ }
34
+
35
+ setInitialShowColumn = (columns: any[]) => {
36
+ // 获取当前列表定义数据
37
+ let columnConfig = this.getConfigFromlocalstorage();
38
+ let showColumns = columnConfig.length ? columnConfig.map((item:any) => {
39
+ let inner = columns.filter(innerItem => (
40
+ innerItem.dataIndex && innerItem.dataIndex === item.dataIndex
41
+ ) || (innerItem.key && innerItem.key === item.key))[0];
42
+ return {
43
+ ...inner,
44
+ ...item,
45
+ }
46
+ }).filter((item: any) => !item.hidden)
47
+ :
48
+ (columns || []).filter((item: any) => !item.hidden);
49
+ this.setState({
50
+ showColumns,
51
+ })
52
+
53
+ }
54
+
55
+ setShowColumns = (newColumns: Array<any>) => {
56
+ this.setState({
57
+ showColumns: [...newColumns]
58
+ })
59
+ }
60
+
61
+ getConfigFromlocalstorage = () => {
62
+ const { tableCode }:any = this.props;
63
+ if (!tableCode) return [];
64
+ let config = localStorage.getItem(ENUM.BROWSER_CACHE.COLUMN_CONDITION) || '[]';
65
+ let configArray = JSON.parse(config);
66
+ let configSetting = configArray.filter(
67
+ (item: any) => item.code === tableCode,
68
+ );
69
+
70
+ if (configSetting.length) {
71
+ return JSON.parse(configSetting[0].detail || '[]');
72
+ }
73
+ return [];
74
+ };
75
+
76
+ getTableSummaryInfo = () => {
77
+ const { summary = undefined, rowSelection }: any = this.props;
78
+ const { showColumns }: any = this.state;
79
+ let summaryRow = rowSelection ? [{}, ...showColumns] : [...showColumns];
80
+ let summaryInitial = summary().cont;
81
+ let summaryDom: any = <Table.Summary fixed>
82
+ <Table.Summary.Row>
83
+ {
84
+ [...summaryRow].map((item: any, index: number) => {
85
+ return (
86
+ <Table.Summary.Cell index={rowSelection ? index : index - 1}>
87
+ <Text type="danger">
88
+ {
89
+ summaryInitial.filter((inner: any) => inner.key === item.dataIndex || inner.key === item.key).length ?
90
+ `${item.title}: ${summaryInitial.filter((inner: any) => inner.key === item.dataIndex || inner.key === item.key)[0].value}` : ''
91
+
92
+ }
93
+ </Text>
94
+ </Table.Summary.Cell>
95
+ )
96
+ })
97
+ }
98
+ </Table.Summary.Row >
99
+ </Table.Summary>
100
+ return () => summaryDom
101
+ };
102
+
103
+ handledynamicColumns = (col: any[]) => {
104
+ let { dynamicColumns, modeType }: any = this.props;
105
+ col = col.map((item: any) => {
106
+ let target = dynamicColumns.find((d: any) => item.dataIndex === d.key || item.key === d.key)
107
+ if (modeType === 'view' && target) {
108
+ item.render = target?.render;
109
+ }
110
+ return { ...item };
111
+ })
112
+ return [...col]
113
+ };
114
+
115
+ handleResize = (index: any) => (_: any, { size }: any) => {
116
+ let newColumns = this.state.showColumns.map((col: any) => ({ ...col }));
117
+ const handleIndex = (arr: any, indexArr: any) => {
118
+ let i = indexArr.shift();
119
+ if (indexArr.length > 0) {
120
+ handleIndex(arr[i].children, indexArr);
121
+ } else {
122
+ arr[i] = {
123
+ ...arr[i],
124
+ width: size.width,
125
+ };
126
+ if (arr[i].textOverflow) {
127
+ arr[i].render = ({ text }: any) => handleTextOverflow(text, size.width);
128
+ };
129
+ }
130
+ };
131
+ handleIndex(newColumns, [...index]);
132
+ this.setState({
133
+ showColumns: [...newColumns]
134
+ })
135
+ };
136
+
137
+ ResizeableTitle = (props: any) => {
138
+ const { onResize, width, ...restProps } = props;
139
+
140
+ if (!width) {
141
+ return <th {...restProps} />;
142
+ }
143
+ return (
144
+ <Resizable
145
+ width={width}
146
+ height={0}
147
+ onResize={onResize}
148
+ draggableOpts={{ enableUserSelectHack: false }}
149
+ >
150
+ <th {...restProps} />
151
+ </Resizable>
152
+ );
153
+ }
154
+
155
+ getTableScrollXWidth = (cols: any[]) => {
156
+ if (cols.every((item: any) => item.width)) {
157
+ return cols.reduce((cur: any, obj: any) => cur += obj.width, 0)
158
+ } else {
159
+ return 'max-content'
160
+ }
161
+ };
162
+
163
+ render() {
164
+ const { style=null, columns, tableCode, summary = undefined, dynamicColumns = [], scroll={}, ...restProps }: any = this.props;
165
+ let otherTableInfo = {
166
+ ...restProps,
167
+ };
168
+ let showSummary = null;
169
+ if (this.state.showColumns.length) {
170
+ if (summary && summary().diy) {
171
+ showSummary = this.getTableSummaryInfo();
172
+ } else {
173
+ showSummary = summary;
174
+ }
175
+ };
176
+
177
+ const handleColumns = (arr: any, indexArr: any[]) => {
178
+ arr.forEach((item: any, index: any) => {
179
+ let indexArrInside = [...indexArr, index].filter((i: any) => i || i === 0)
180
+ if (noEmptyArray(item.children)) {
181
+ handleColumns(item.children, indexArrInside);
182
+ } else {
183
+ item.width = item.width || getItemDefaultWidth(item);
184
+ item.onHeaderCell = (column: any) => ({
185
+ ...item,
186
+ width:
187
+ typeof column.width === 'number'
188
+ ? column.width
189
+ : parseInt(column.width.replace('px', '')),
190
+ onResize: this.handleResize(indexArrInside),
191
+ });
192
+ }
193
+ })
194
+ };
195
+ let showCol = this.state.showColumns.map((item: any) => {
196
+ return ({ ...item })
197
+ })
198
+ handleColumns(showCol, []);
199
+ if (dynamicColumns.length) {
200
+ showCol = this.handledynamicColumns(showCol);
201
+ }
202
+
203
+ otherTableInfo = {
204
+ ...otherTableInfo,
205
+ scroll: {
206
+ y: 400,
207
+ ...scroll,
208
+ x: restProps.overScrollX || this.getTableScrollXWidth(showCol)
209
+ },
210
+ summary: showSummary,
211
+ }
212
+ return (
213
+ <div>
214
+ <div style={{ overflow: 'hidden', padding: '0 8px 10px 0' }}>
215
+ <span style={{ float: 'right' }} className="ant-dropdown-link">
216
+ <ColumnSetting
217
+ setShowColumns={this.setShowColumns}
218
+ showColumns={this.state.showColumns}
219
+ datasource={columns || []}
220
+ tableCode={tableCode}
221
+ />
222
+ </span>
223
+ </div>
224
+ <SulaTable
225
+ ref={this.sulaTableRef}
226
+ style={style}
227
+ columns={showCol}
228
+ components={{
229
+ header: {
230
+ cell: this.ResizeableTitle,
231
+ },
232
+ }}
233
+ {
234
+ ...otherTableInfo
235
+ }
236
+ />
237
+ </div >
238
+ )
239
+ }
240
+
241
+ }
@@ -0,0 +1,69 @@
1
+ import React from 'react';
2
+ import {
3
+ Tooltip,
4
+ } from 'antd';
5
+ /**
6
+ * 非空数组
7
+ * @param arr 要判断的数据
8
+ * @returns boolean
9
+ */
10
+ export const noEmptyArray = (arr: any[]) =>
11
+ Array.isArray(arr) && arr.length > 0;
12
+
13
+ //设置queryTable默认列宽
14
+ export const getItemDefaultWidth = (item: any) => {
15
+ let defaultWidth = 200;
16
+ let lowerCaseKey = (item.key || item.dataIndex).toLowerCase();
17
+ switch (true) {
18
+ case item?.title === '操作' || lowerCaseKey === 'operate':
19
+ defaultWidth = 60;
20
+ break;
21
+ case lowerCaseKey.indexOf('number') > -1:
22
+ case lowerCaseKey.indexOf('quantity') > -1:
23
+ case lowerCaseKey.indexOf('amount') > -1:
24
+ defaultWidth = 90;
25
+ break;
26
+ case (lowerCaseKey.indexOf('no') > -1):
27
+ defaultWidth = 200;
28
+ break;
29
+ case lowerCaseKey.indexOf('code') > -1:
30
+ defaultWidth = 170;
31
+ break;
32
+ case lowerCaseKey.indexOf('time') > -1:
33
+ defaultWidth = 130;
34
+ break;
35
+ case lowerCaseKey.indexOf('status') > -1:
36
+ defaultWidth = 100;
37
+ break;
38
+ case lowerCaseKey.indexOf('user') > -1:
39
+ defaultWidth = 130;
40
+ break;
41
+ default:
42
+ break;
43
+ }
44
+ return defaultWidth;
45
+ };
46
+
47
+ // 带有toptile 清提示 ...
48
+ export const handleTextOverflow = (
49
+ text: string | undefined,
50
+ width: number = 130,
51
+ ) => {
52
+ return (
53
+ <Tooltip title={text || '- -'}>
54
+ <span
55
+ style={{
56
+ width: width ? width + 'px' : '130px',
57
+ display: 'inline-block',
58
+ textOverflow: 'ellipsis',
59
+ overflow: 'hidden',
60
+ whiteSpace: 'nowrap',
61
+ position: 'relative',
62
+ top: '5px',
63
+ }}
64
+ >
65
+ {text || '- -'}
66
+ </span>
67
+ </Tooltip>
68
+ );
69
+ };