@bit-sun/business-component 4.0.12-alpha.9 → 4.0.13-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/dist/components/Business/BsSulaQueryTable/utils.d.ts +1 -1
  2. package/dist/components/Business/PropertyModal/index.d.ts +23 -0
  3. package/dist/components/Business/PropertyModal/mockData.d.ts +10 -0
  4. package/dist/components/Business/PropertyModal/propertyGroup.d.ts +4 -0
  5. package/dist/components/Business/columnSettingTable/components/TableSumComponent.d.ts +4 -0
  6. package/dist/components/Functional/QueryMutipleSelect/index.d.ts +5 -0
  7. package/dist/components/Functional/SearchSelect/utils.d.ts +16 -1
  8. package/dist/index.d.ts +2 -0
  9. package/dist/index.esm.js +1954 -984
  10. package/dist/index.js +1953 -981
  11. package/package.json +3 -3
  12. package/src/components/Business/BsSulaQueryTable/utils.tsx +5 -4
  13. package/src/components/Business/PropertyModal/index.less +58 -0
  14. package/src/components/Business/PropertyModal/index.md +33 -0
  15. package/src/components/Business/PropertyModal/index.tsx +271 -0
  16. package/src/components/Business/PropertyModal/mockData.ts +160 -0
  17. package/src/components/Business/PropertyModal/propertyGroup.tsx +205 -0
  18. package/src/components/Business/SearchSelect/BusinessUtils.tsx +55 -3
  19. package/src/components/Business/SearchSelect/index.md +3 -4
  20. package/src/components/Business/columnSettingTable/columnSetting.tsx +2 -1
  21. package/src/components/Business/columnSettingTable/components/TableSumComponent.tsx +25 -0
  22. package/src/components/Business/columnSettingTable/components/style.less +25 -0
  23. package/src/components/Business/columnSettingTable/index.tsx +3 -28
  24. package/src/components/Business/columnSettingTable/sulaSettingTable.tsx +2 -27
  25. package/src/components/Functional/DataValidation/index.tsx +1 -0
  26. package/src/components/Functional/QueryMutipleSelect/index.less +117 -0
  27. package/src/components/Functional/QueryMutipleSelect/index.md +41 -0
  28. package/src/components/Functional/QueryMutipleSelect/index.tsx +242 -0
  29. package/src/components/Functional/SearchSelect/index.less +33 -1
  30. package/src/components/Functional/SearchSelect/index.tsx +76 -269
  31. package/src/components/Functional/SearchSelect/utils.tsx +400 -0
  32. package/src/components/Solution/RuleComponent/ruleFiled.js +93 -93
  33. package/src/index.ts +2 -0
  34. package/src/components/Functional/SearchSelect/utils.ts +0 -38
@@ -0,0 +1,205 @@
1
+ import React, { useEffect, useState } from "react";
2
+ import { Checkbox } from 'antd';
3
+ import { CaretUpOutlined, CaretDownOutlined } from '@ant-design/icons';
4
+ import './index.less';
5
+ import { set } from "lodash";
6
+
7
+ interface PropertyItem {
8
+ name: string;
9
+ value: string;
10
+ isChecked: boolean;
11
+ isCommonUse: boolean;
12
+ }
13
+
14
+ interface propertyInfoProps {
15
+ propertyName: string;
16
+ propertyCode: string;
17
+ detailList: Array<PropertyItem>;
18
+ }
19
+
20
+ const PropertyGroup = (props: any) => {
21
+
22
+ const {
23
+ propertyData,
24
+ handleProperyItemChange,
25
+ modalVisilbe,
26
+ itemValue,
27
+ } = props;
28
+ const [commonUseProperty, setCommonUseProperty] = useState<Array<PropertyItem> | any>([]); // 常用属性值
29
+ const [notCommonUseProperty, setNotCommonUseProperty] = useState<Array<PropertyItem> | any>([]); // 非常用属性值
30
+ const [indeterminate, setIndeterminate] = useState(false);
31
+ const [showNotCommon, setShowNotCommon] = useState(false);
32
+
33
+ useEffect(() => {
34
+ const proItemValue = (itemValue.propertyList || []).find((item: any) => item.propertyCode === propertyData.propertyCode);
35
+ const checkedList = proItemValue?.detailList || [];
36
+
37
+ const proDetailList = JSON.parse(JSON.stringify( propertyData?.detailList || []));
38
+ proDetailList.forEach((item: any) => {
39
+ if (checkedList.some((checkItem: any) => checkItem.value === item.value)){
40
+ item.isChecked = true;
41
+ }
42
+ });
43
+ const commonUseProperty = (proDetailList).filter((item: any) => item.isCommonUse);
44
+
45
+ const notCommonUseProperty = (proDetailList).filter((item: any) => !item.isCommonUse);
46
+ if (checkedList.some((item: any) => !item.isCommonUse)) {
47
+ setShowNotCommon(true)
48
+ }
49
+ setCommonUseProperty(commonUseProperty);
50
+ setNotCommonUseProperty(notCommonUseProperty);
51
+ }, [modalVisilbe])
52
+
53
+ const parseDataToParent = (comUse: any[], notComUse: any[]) => {
54
+ let choosedPropertyList = (comUse|| []).filter(item => item.isChecked);
55
+ if (showNotCommon) {
56
+ choosedPropertyList = [...choosedPropertyList, ...((notComUse|| []).filter(item => item.isChecked))]
57
+ }
58
+ handleProperyItemChange({
59
+ propertyCode: propertyData?.propertyCode,
60
+ propertyName: propertyData?.propertyName,
61
+ propertyId: propertyData?.propertyId,
62
+ isCommonUse: propertyData?.isCommonUse,
63
+ detailList: choosedPropertyList
64
+ });
65
+ }
66
+
67
+
68
+ const handleChangeAll = (e: any) => {
69
+ if (showNotCommon) {
70
+ notCommonUseProperty.map((item: any) => item.isChecked = e.target.checked);
71
+ setNotCommonUseProperty([...notCommonUseProperty])
72
+ }
73
+ commonUseProperty.map((item: any) => item.isChecked = e.target.checked);
74
+ parseDataToParent(commonUseProperty, notCommonUseProperty)
75
+ setCommonUseProperty([...commonUseProperty])
76
+ setIndeterminate(false)
77
+ }
78
+
79
+ const handleIndeterminate = (commonUseProperty: any[], notCommonUseProperty: any[]) => {
80
+ let checkList = [...commonUseProperty];
81
+ if (showNotCommon) {
82
+ checkList = [...checkList, ...notCommonUseProperty]
83
+ }
84
+ const indeterminate = !!checkList.filter(item => item.isChecked).length && checkList.filter(item => item.isChecked).length !== checkList.length;
85
+ setIndeterminate(indeterminate);
86
+ }
87
+
88
+ const handleItemChecked = (e: any, item: any, type: number) => {
89
+ if (type === 1) { // 常用属性
90
+ (commonUseProperty || []).forEach((info: any) => {
91
+ if (info.value === item.value) {
92
+ info.isChecked = e.target.checked;
93
+ }
94
+ })
95
+ handleIndeterminate(commonUseProperty, notCommonUseProperty)
96
+ parseDataToParent(commonUseProperty, notCommonUseProperty)
97
+ setCommonUseProperty([...commonUseProperty])
98
+ }
99
+
100
+ if (type === 2) { // 非常用属性
101
+ (notCommonUseProperty || []).forEach((info: any) => {
102
+ if (info.value === item.value) {
103
+ info.isChecked = e.target.checked;
104
+ }
105
+ })
106
+ handleIndeterminate(commonUseProperty, notCommonUseProperty)
107
+ parseDataToParent(commonUseProperty, notCommonUseProperty)
108
+ setNotCommonUseProperty([...notCommonUseProperty])
109
+ }
110
+ }
111
+
112
+ const checkAllChecked = () => {
113
+ const checkData = showNotCommon ? [...commonUseProperty, ...notCommonUseProperty] : [...commonUseProperty];
114
+ return checkData.length && checkData.every(item => item.isChecked) ? true : false;
115
+ }
116
+
117
+
118
+ return (
119
+ <div className={'propertyGroup_container'}>
120
+ <div className={'propertyGroup_container_left'}>
121
+ <Checkbox
122
+ checked={checkAllChecked()}
123
+ indeterminate={indeterminate}
124
+ onChange={handleChangeAll}
125
+ >
126
+ <div title={propertyData.name} className="propertyGroup_checkbox_container">{propertyData.propertyName}</div>
127
+ </Checkbox>
128
+ </div>
129
+ <div className={'propertyGroup_container_right'}>
130
+ {
131
+ (commonUseProperty || []).map((item: any) => (
132
+ <Checkbox
133
+ checked={item.isChecked}
134
+ key={item.value}
135
+ onChange={(e) => {
136
+ handleItemChecked(e, item, 1)
137
+ }}
138
+ >
139
+ <div title={item.name} className="propertyGroup_checkbox_container">
140
+ {item.name}
141
+ </div>
142
+ </Checkbox>
143
+ ))
144
+
145
+ }
146
+ {
147
+ showNotCommon && (notCommonUseProperty || []).map((item: any) => (
148
+ <Checkbox
149
+ checked={item.isChecked}
150
+ key={item.value}
151
+ onChange={(e) => {
152
+ handleItemChecked(e, item, 2)
153
+ }}
154
+ >
155
+ <div title={item.name} className="propertyGroup_checkbox_container">
156
+ {item.name}
157
+ </div>
158
+ </Checkbox>
159
+ ))
160
+
161
+ }
162
+ {
163
+ !!notCommonUseProperty.length && (
164
+ <div
165
+ style={{
166
+ width: '50px',
167
+ cursor: 'pointer',
168
+ color: '#005cff',
169
+ fontSize: '10px',
170
+ display: 'flex',
171
+ alignItems: 'center',
172
+ }}
173
+ onClick={() => {
174
+ setShowNotCommon(!showNotCommon);
175
+ handleIndeterminate(commonUseProperty, notCommonUseProperty)
176
+ }}
177
+ >
178
+ {
179
+ showNotCommon && (
180
+ <>
181
+ <CaretUpOutlined />
182
+ 收起
183
+ </>
184
+ )
185
+ }
186
+ {
187
+ !showNotCommon && (
188
+ <>
189
+ <CaretDownOutlined />
190
+ 展开
191
+ </>
192
+ )
193
+ }
194
+ </div>
195
+ )
196
+ }
197
+ </div>
198
+ </div>
199
+ );
200
+ };
201
+
202
+ export default React.memo(PropertyGroup, (props, nextProps) => {
203
+ if (props.modalVisilbe !== nextProps.modalVisilbe) return false;
204
+ return true;
205
+ });
@@ -15,6 +15,7 @@ export function commonFun (type?: string, prefixUrl: any, parentProps?:any) {
15
15
 
16
16
  // 默认type === 'supplier' 供应商选择器
17
17
  let requestConfig = {
18
+ init: true,
18
19
  url: `${prefixUrl.selectPrefix}/supplier`,
19
20
  filter: 'qp-name,code-orGroup,like', // 过滤参数
20
21
  otherParams: {
@@ -295,7 +296,8 @@ export function commonFun (type?: string, prefixUrl: any, parentProps?:any) {
295
296
  // 商品选择器sku
296
297
  if(type === 'skuCommodity') {
297
298
  requestConfig = {
298
- url: `${prefixUrl.selectPrefix}/sku/doPageBySelect/v3`,
299
+ url: `${prefixUrl.selectPrefix}/sku/doPageBySelect/v4`,
300
+ method: 'post',
299
301
  filter: 'skuCodeAndSkuName', // 过滤参数
300
302
  searchStartLength: 4,
301
303
  mappingTextField: 'name',
@@ -324,9 +326,43 @@ export function commonFun (type?: string, prefixUrl: any, parentProps?:any) {
324
326
  ...selectConfigProps,
325
327
  }
326
328
  tableSearchForm = [
327
- { name: 'qp-skuCode-in', label: 'SKU编码',type:'multipleQueryInput' },
329
+ { name: 'qp-skuCode-in', label: 'SKU编码', field: {
330
+ type:'multipleQuerySearchSelect',
331
+ props: {
332
+ selectProps: {
333
+ mode: "multiple",
334
+ placeholder: '请输入SKU编码查询'
335
+ },
336
+ requestConfig: {
337
+ url: '/items/sku//listNoPage/Simple',
338
+ filter: 'qp-skuCode,name-orGroup,like',
339
+ mappingTextField: 'name',
340
+ mappingValueField: 'skuCode',
341
+ sourceName: 'qp-skuCode-in',
342
+ specialBracket: true,
343
+ otherParams: {
344
+ 'ownOrgSign': getCurrentTargetBgId(),
345
+ }, // 默认参数
346
+ },
347
+ }
348
+ } },
328
349
  { name: 'qp-skuName-like', label: 'SKU名称' },
329
- { name: 'qp-itemCode-like', label: '外部SPU编码' },
350
+ { name: 'qp-itemCode-in', label: 'SPU编码', field: {
351
+ type:'multipleQuerySearchSelect',
352
+ props: {
353
+ selectProps: {
354
+ placeholder: '请输入SPU编码查询'
355
+ },
356
+ requestConfig: {
357
+ url: '/items/item/listNoPage/Simple',
358
+ filter: 'qp-itemCode,name-orGroup,like',
359
+ mappingTextField: 'name',
360
+ mappingValueField: 'itemCode',
361
+ sourceName: 'qp-itemCode-in',
362
+ specialBracket: true,
363
+ },
364
+ }
365
+ } },
330
366
  { name: 'qp-eancode-in', label: '商品条码', field: {
331
367
  type: 'multipleQueryInput',
332
368
  props: {
@@ -365,6 +401,9 @@ export function commonFun (type?: string, prefixUrl: any, parentProps?:any) {
365
401
  dropdownStyle: { maxHeight: 400, maxWidth: 100, overflow: 'auto' }
366
402
  },
367
403
  } },
404
+ { name: 'UNIQUE_SPEC', label: '属性', field: {
405
+ type: 'proppertySelector',
406
+ } },
368
407
  ]
369
408
  Promise.all([
370
409
  loadSelectSource(`${prefixUrl.formSelectFix}/brand/queryBrandList`, {
@@ -784,6 +823,7 @@ export function commonFun (type?: string, prefixUrl: any, parentProps?:any) {
784
823
  ...selectConfigProps,
785
824
  }
786
825
  requestConfig = {
826
+ init: true,
787
827
  url: `${prefixUrl.selectPrefix}/skuPropertyValue/list`,
788
828
  filter: 'qp-value-like', // 过滤参数
789
829
  mappingTextField: 'value',
@@ -1694,6 +1734,7 @@ export function commonFun (type?: string, prefixUrl: any, parentProps?:any) {
1694
1734
  ...selectConfigProps,
1695
1735
  }
1696
1736
  requestConfig = {
1737
+ init: true,
1697
1738
  url: `${prefixUrl.selectPrefix}/inventoryOrg`,
1698
1739
  filter: 'qp-name,code-orGroup,like', // 过滤参数
1699
1740
  mappingTextField: 'name',
@@ -1726,6 +1767,7 @@ export function commonFun (type?: string, prefixUrl: any, parentProps?:any) {
1726
1767
  ...selectConfigProps,
1727
1768
  }
1728
1769
  requestConfig = {
1770
+ init: true,
1729
1771
  url: `${prefixUrl.selectPrefix}/company`,
1730
1772
  filter: 'qp-name,code-orGroup,like', // 过滤参数
1731
1773
  mappingTextField: 'name',
@@ -1758,6 +1800,7 @@ export function commonFun (type?: string, prefixUrl: any, parentProps?:any) {
1758
1800
  ...selectConfigProps,
1759
1801
  }
1760
1802
  requestConfig = {
1803
+ init: true,
1761
1804
  url: `${prefixUrl.selectPrefix}/platCompany`,
1762
1805
  filter: 'qp-name,socialCreditCode-orGroup,like', // 过滤参数
1763
1806
  mappingTextField: 'name',
@@ -1790,6 +1833,7 @@ export function commonFun (type?: string, prefixUrl: any, parentProps?:any) {
1790
1833
  ...selectConfigProps,
1791
1834
  }
1792
1835
  requestConfig = {
1836
+ init: true,
1793
1837
  url: `${prefixUrl.selectPrefix}/employee/v2`,
1794
1838
  filter: 'qp-employeeNumber,name-orGroup,like', // 过滤参数
1795
1839
  mappingTextField: 'name',
@@ -1887,6 +1931,7 @@ export function commonFun (type?: string, prefixUrl: any, parentProps?:any) {
1887
1931
  ...selectConfigProps,
1888
1932
  }
1889
1933
  requestConfig = {
1934
+ init: true,
1890
1935
  url: `${prefixUrl.selectPrefix}/employee/pageList/v2`,
1891
1936
  filter: 'qp-username,name-orGroup,like', // 过滤参数
1892
1937
  mappingTextField: 'name',
@@ -2008,6 +2053,7 @@ export function commonFun (type?: string, prefixUrl: any, parentProps?:any) {
2008
2053
  const isLogisCompanyCodeSingleSearch = requestConfigProp?.fixedparameter?.some((i: any) => i == 'qp-logisCompanyCode-eq');
2009
2054
  const logisCompanyCodeSingleSearchName = isLogisCompanyCodeSingleSearch ? 'qp-logisCompanyCode-eq' : 'qp-logisCompanyCode-in';
2010
2055
  requestConfig = {
2056
+ init: true,
2011
2057
  url: `${prefixUrl.selectPrefix}/deliveryMode`,
2012
2058
  filter: 'qp-name,code-orGroup,like', // 过滤参数
2013
2059
  mappingTextField: 'name',
@@ -2135,6 +2181,7 @@ export function commonFun (type?: string, prefixUrl: any, parentProps?:any) {
2135
2181
  ...selectConfigProps,
2136
2182
  }
2137
2183
  requestConfig = {
2184
+ init: true,
2138
2185
  url: `${prefixUrl.selectPrefix}/ruleTemplate`,
2139
2186
  filter: 'qp-name,code-orGroup,like', // 过滤参数
2140
2187
  mappingTextField: 'name',
@@ -2210,6 +2257,7 @@ export function commonFun (type?: string, prefixUrl: any, parentProps?:any) {
2210
2257
  ...selectConfigProps,
2211
2258
  }
2212
2259
  requestConfig = {
2260
+ init: true,
2213
2261
  url: `${prefixUrl.selectPrefix}/role`,
2214
2262
  filter: 'qp-name,code-orGroup,like', // 过滤参数
2215
2263
  mappingTextField: 'name',
@@ -2308,6 +2356,7 @@ export function commonFun (type?: string, prefixUrl: any, parentProps?:any) {
2308
2356
  ...selectConfigProps,
2309
2357
  }
2310
2358
  requestConfig = {
2359
+ init: true,
2311
2360
  url: `${prefixUrl.selectPrefix}/channelInfo`,
2312
2361
  filter: 'qp-name,code-orGroup,like', // 过滤参数
2313
2362
  mappingTextField: 'name',
@@ -2398,6 +2447,7 @@ export function commonFun (type?: string, prefixUrl: any, parentProps?:any) {
2398
2447
  ...selectConfigProps,
2399
2448
  }
2400
2449
  requestConfig = {
2450
+ init: true,
2401
2451
  url: `${prefixUrl.selectPrefix}/orgViewNode/common/pageList`,
2402
2452
  filter: 'qp-name-like', // 过滤参数
2403
2453
  mappingTextField: 'name',
@@ -2531,6 +2581,7 @@ export function commonFun (type?: string, prefixUrl: any, parentProps?:any) {
2531
2581
  ...selectConfigProps,
2532
2582
  }
2533
2583
  requestConfig = {
2584
+ init: true,
2534
2585
  url: `${prefixUrl.selectPrefix}/person`,
2535
2586
  filter: 'qp-code,name-orGroup,like', // 过滤参数
2536
2587
  mappingTextField: 'name',
@@ -2687,6 +2738,7 @@ export function commonFun (type?: string, prefixUrl: any, parentProps?:any) {
2687
2738
  ...selectConfigProps,
2688
2739
  }
2689
2740
  requestConfig = {
2741
+ init: true,
2690
2742
  url: `${prefixUrl.selectPrefix}/priceType`,
2691
2743
  filter: 'qp-code,name-orGroup,like', // 过滤参数
2692
2744
  mappingTextField: 'name',
@@ -426,7 +426,7 @@ export default () => {
426
426
 
427
427
  useEffect(() => {
428
428
  if(tabKey === 'multiple') {
429
- setValue(['1540295745870573570', '1540173160826613762'])
429
+ setValue([])
430
430
  }
431
431
  },[tabKey])
432
432
 
@@ -448,7 +448,7 @@ export default () => {
448
448
  // },
449
449
  // prefixUrl: { selectPrefix: '/bop/api', formSelectFix: '/bop/api' },
450
450
  selectProps,
451
- // labelInValue: true,
451
+ labelInValue: true,
452
452
  selectBusinessType: 'physicalWarehouse',
453
453
  };
454
454
 
@@ -520,7 +520,7 @@ export default () => {
520
520
  // needStatusSearch: true
521
521
  // },
522
522
  selectProps,
523
- selectBusinessType: 'realWarehouse',
523
+ selectBusinessType: 'brand',
524
524
  };
525
525
 
526
526
  const onTabChange = (key) => {
@@ -1707,7 +1707,6 @@ export default () => {
1707
1707
  }
1708
1708
  const selectPropsMultiple = {
1709
1709
  mode: 'multiple',
1710
- maxTagCount: 1,
1711
1710
  }
1712
1711
 
1713
1712
  const [ tabKey, setTabKey ] = useState('single')
@@ -20,6 +20,7 @@ import request from '@/utils/request';
20
20
  import './index.less';
21
21
  import ENUM from '@/utils/enumConfig';
22
22
  import { handleRequestUrl, judgeIsRequestSuccess } from '@/utils/requestUtils';
23
+ import { renderToString } from '../BsSulaQueryTable/utils';
23
24
 
24
25
  interface SortTableProps {
25
26
  [propName: string]: any;
@@ -644,7 +645,7 @@ class SortableTable extends React.Component<SortTableProps> {
644
645
  }: any = this.state;
645
646
 
646
647
  let seatchDataSource = dataSource.filter(
647
- (item: any) => item?.title?.indexOf(searchDataSource || '') > -1,
648
+ (item: any) => renderToString(item?.title)?.indexOf(searchDataSource || '') > -1,
648
649
  );
649
650
 
650
651
  return (
@@ -0,0 +1,25 @@
1
+ import React, { Fragment } from "react";
2
+ import { Typography } from 'antd';
3
+ import './style.less';
4
+
5
+ //表格底部 金额总计
6
+ export default ({
7
+ summary
8
+ }: any) => {
9
+ const { Text } = Typography;
10
+
11
+ return (
12
+ <Fragment>
13
+ <div className="table_sum_wrapper">
14
+ <div className='table-bssula-summary'>
15
+ {summary.map((item: any) => (
16
+ <Text type='danger'>
17
+ {item.label}: <span className='table-bssula-summary-count'>{item.count || 0}</span>
18
+ </Text>
19
+ ))}
20
+ </div>
21
+ </div>
22
+ <div className="sum_right_line"></div>
23
+ </Fragment>
24
+ )
25
+ }
@@ -0,0 +1,25 @@
1
+
2
+ .table_sum_wrapper{
3
+ position: absolute;
4
+ overflow: hidden;
5
+ width: 80%;
6
+ height: 26px;
7
+ bottom: 0;
8
+ .table-bssula-summary{
9
+ height: 40px;
10
+ right: 0;
11
+ bottom: -20px;
12
+ white-space: nowrap;
13
+ overflow-x: auto;
14
+ }
15
+ }
16
+ .sum_right_line {
17
+ position: absolute;
18
+ right: 20%;
19
+ bottom: 0;
20
+ width: 16px;
21
+ height: 26px;
22
+ opacity: 0.32;
23
+ transform: scaleX(-1);
24
+ background-image: linear-gradient(270deg, #ffffff00 0%, #A4A4A4 100%);
25
+ }
@@ -6,6 +6,7 @@ import { getItemDefaultWidth, getShowColumns, handleTextOverflow } from './utils
6
6
  import { noEmptyArray } from './utils';
7
7
  import ENUM from '@/utils/enumConfig';
8
8
  import { handleAntdColumnsSpecialParams } from '@/utils/utils';
9
+ import TableSumComponent from './components/TableSumComponent';
9
10
  const { Text } = Typography;
10
11
  export default class ColumnSettingTable extends React.Component {
11
12
  state: any;
@@ -230,34 +231,8 @@ export default class ColumnSettingTable extends React.Component {
230
231
  }
231
232
  />
232
233
  {Array.isArray(summary) && (
233
- <>
234
- <div
235
- className='table-bssula-summary'
236
- style={{
237
- right: '20%',
238
- bottom: 0,
239
- whiteSpace: 'nowrap',
240
- overflowX: 'auto',
241
- }}
242
- >
243
- {summary.map(item => (
244
- <Text type='danger'>
245
- {item.label}: <span className='table-bssula-summary-count'>{item.count || 0}</span>
246
- </Text>
247
- ))}
248
- </div>
249
- <div style={{
250
- width: '16px',
251
- height: '26px',
252
- opacity: 0.32,
253
- transform: 'scaleX(-1)',
254
- backgroundImage:'linear-gradient(270deg, #ffffff00 0%, #A4A4A4 100%)',
255
- right: '20%',
256
- position: 'absolute',
257
- bottom: 0,
258
- }}></div>
259
- </>
260
- )}
234
+ <TableSumComponent summary={summary} />
235
+ )}
261
236
  </div >
262
237
  )
263
238
  }
@@ -10,6 +10,7 @@ import {
10
10
  } from 'antd';
11
11
  import ENUM from '@/utils/enumConfig';
12
12
  import { handleBssulaColumnsSpecialParams, parseWidth, uuid } from '@/utils/utils';
13
+ import TableSumComponent from './components/TableSumComponent';
13
14
  const { Text } = Typography;
14
15
 
15
16
  export default class ColumnSettingSulaTable extends React.Component {
@@ -330,33 +331,7 @@ export default class ColumnSettingSulaTable extends React.Component {
330
331
  }
331
332
  />
332
333
  {Array.isArray(summary) && (
333
- <>
334
- <div
335
- className='table-bssula-summary'
336
- style={{
337
- right: '20%',
338
- bottom: 0,
339
- whiteSpace: 'nowrap',
340
- overflowX: 'auto',
341
- }}
342
- >
343
- {summary.map(item => (
344
- <Text type='danger'>
345
- {item.label}: <span className='table-bssula-summary-count'>{item.count || 0}</span>
346
- </Text>
347
- ))}
348
- </div>
349
- <div style={{
350
- width: '16px',
351
- height: '26px',
352
- opacity: 0.32,
353
- transform: 'scaleX(-1)',
354
- backgroundImage:'linear-gradient(270deg, #ffffff00 0%, #A4A4A4 100%)',
355
- right: '20%',
356
- position: 'absolute',
357
- bottom: 0,
358
- }}></div>
359
- </>
334
+ <TableSumComponent summary={summary} />
360
335
  )}
361
336
  </div >
362
337
  )
@@ -741,6 +741,7 @@ class DataValidation extends React.Component {
741
741
  >
742
742
  <ExclamationCircleOutlined />
743
743
  </Tooltip>
744
+ <div style={{color: 'red'}}>(鼠标移入感叹号图标查看导入使用说明)</div>
744
745
  </Space>
745
746
  <Space>
746
747
  {!notExcelImport && (