@bit-sun/business-component 4.0.13-alpha.3 → 4.0.13-alpha.31

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 (37) hide show
  1. package/.umirc.ts +20 -9
  2. package/dist/components/Business/BsSulaQueryTable/utils.d.ts +1 -1
  3. package/dist/components/Business/DetailPageWrapper/index.d.ts +6 -0
  4. package/dist/components/Business/ItemPropertySelector/index.d.ts +3 -0
  5. package/dist/components/Functional/SearchSelect/utils.d.ts +4 -1
  6. package/dist/index.esm.js +1070 -626
  7. package/dist/index.js +1070 -626
  8. package/package.json +3 -2
  9. package/src/assets/btn-cancel.svg +3 -0
  10. package/src/assets/btn-copy.svg +3 -0
  11. package/src/assets/btn-delete.svg +2 -29
  12. package/src/assets/btn-edit.svg +2 -19
  13. package/src/assets/btn-hangUp.svg +3 -0
  14. package/src/assets/btn-print.svg +3 -0
  15. package/src/assets/btn-refresh.svg +3 -0
  16. package/src/assets/btn-unhook.svg +3 -0
  17. package/src/components/Business/BsSulaQueryTable/index.tsx +10 -10
  18. package/src/components/Business/BsSulaQueryTable/setting.tsx +3 -3
  19. package/src/components/Business/BsSulaQueryTable/utils.tsx +2 -1
  20. package/src/components/Business/CommodityEntry/index.tsx +11 -9
  21. package/src/components/Business/DetailPageWrapper/index.less +1 -1
  22. package/src/components/Business/DetailPageWrapper/index.tsx +24 -5
  23. package/src/components/Business/DetailPageWrapper/utils.tsx +7 -2
  24. package/src/components/Business/HomePageWrapper/index.less +1 -1
  25. package/src/components/Business/ItemPropertySelector/index.tsx +88 -0
  26. package/src/components/Business/SearchSelect/BusinessUtils.tsx +210 -12
  27. package/src/components/Business/SearchSelect/index.md +4 -4
  28. package/src/components/Business/SearchSelect/utils.ts +1 -1
  29. package/src/components/Functional/AddSelect/index.tsx +3 -3
  30. package/src/components/Functional/DataValidation/index.md +1 -0
  31. package/src/components/Functional/DataValidation/index.tsx +11 -4
  32. package/src/components/Functional/QueryMutipleSelect/index.md +2 -3
  33. package/src/components/Functional/QueryMutipleSelect/index.tsx +2 -1
  34. package/src/components/Functional/SearchSelect/index.less +16 -6
  35. package/src/components/Functional/SearchSelect/index.tsx +65 -50
  36. package/src/components/Functional/SearchSelect/utils.tsx +46 -6
  37. package/src/components/Solution/RuleComponent/index.js +59 -1
@@ -342,6 +342,7 @@ export function commonFun (type?: string, prefixUrl: any, parentProps?:any) {
342
342
  specialBracket: true,
343
343
  otherParams: {
344
344
  'ownOrgSign': getCurrentTargetBgId(),
345
+ 'ctl-count': true
345
346
  }, // 默认参数
346
347
  },
347
348
  }
@@ -360,15 +361,19 @@ export function commonFun (type?: string, prefixUrl: any, parentProps?:any) {
360
361
  mappingValueField: 'itemCode',
361
362
  sourceName: 'qp-itemCode-in',
362
363
  specialBracket: true,
364
+ otherParams: {
365
+ 'ownOrgSign': getCurrentTargetBgId(),
366
+ 'ctl-count': true
367
+ }, // 默认参数
363
368
  },
364
369
  }
365
370
  } },
366
- { name: 'qp-eancode-in', label: '商品条码', field: {
367
- type: 'multipleQueryInput',
368
- props: {
369
- ...(requestConfigProp?.itemEancodeValueRequestConfig || {}),
370
- },
371
- }},
371
+ // { name: 'qp-eancode-in', label: '商品条码', field: {
372
+ // type: 'multipleQueryInput',
373
+ // props: {
374
+ // ...(requestConfigProp?.itemEancodeValueRequestConfig || {}),
375
+ // },
376
+ // }},
372
377
  { name: 'qp-brandId-in', type: 'select', label: '品牌', field: {
373
378
  type: 'select',
374
379
  props: {
@@ -416,8 +421,8 @@ export function commonFun (type?: string, prefixUrl: any, parentProps?:any) {
416
421
  currentPage: 1,
417
422
  }),
418
423
  ]).then((x: any)=>{
419
- formatSource(x,0, 4, tableSearchForm,['id','name'])
420
- formatTreeDataSource(x,1, 5, tableSearchForm)
424
+ formatSource(x,0, 3, tableSearchForm,['id','name'])
425
+ formatTreeDataSource(x,1, 4, tableSearchForm)
421
426
  })
422
427
  modalTableProps = {
423
428
  modalTableTitle: '选择SKU',
@@ -489,6 +494,142 @@ export function commonFun (type?: string, prefixUrl: any, parentProps?:any) {
489
494
 
490
495
  // 商品选择器spu
491
496
  if(type === 'spuCommodity') {
497
+ selectProps = {
498
+ placeholder: '输入商品(SPU)编码或名称',
499
+ renderTableColumns: [
500
+ {
501
+ title: '商品编码(SPU)',
502
+ dataIndex: 'itemCode',
503
+ },
504
+ {
505
+ title: '商品名称(SPU)',
506
+ dataIndex: 'name',
507
+ },
508
+ ],
509
+ ...selectConfigProps,
510
+ }
511
+ requestConfig = {
512
+ url: `${prefixUrl.selectPrefix}/item`,
513
+ filter: 'qp-itemCode,name-orGroup,like', // 过滤参数
514
+ mappingTextField: 'name',
515
+ mappingValueField: 'itemCode',
516
+ otherParams: {
517
+ 'qp-approveStatus-eq': 1, // 审核状态(0.待审批;1.审批通过;2.驳回;3.审批未通过)
518
+ sorter: 'desc-id',
519
+ ...(requestConfigProp?.addOtherParams || {}),
520
+ }, // 默认参数
521
+ sourceName: 'itemCode',
522
+ ...requestConfigProp,
523
+ }
524
+ tableSearchForm = [
525
+ { name: 'qp-itemCode-like', label: '商品编码(SPU)' },
526
+ { name: 'qp-name-like', label: '商品名称(SPU)' },
527
+ { name: 'qp-brandId-in', type: 'select', label: '品牌', field: {
528
+ type: 'select',
529
+ props: {
530
+ mode: 'multiple',
531
+ notFoundContent: '暂无数据',
532
+ allowClear: true,
533
+ showSearch: true,
534
+ showArrow: true,
535
+ maxTagCount: 1,
536
+ optionFilterProp: 'children',
537
+ filterOption: (input: string, option: { props: { children: string } }) =>
538
+ option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0,
539
+ },
540
+ } },
541
+ { name: 'qp-categoryId-in', type: 'treeSelect', label: '类目', field: {
542
+ type: 'treeSelect',
543
+ props: {
544
+ treeData: [],
545
+ treeCheckable: true,
546
+ showSearch: true,
547
+ allowClear: true,
548
+ showArrow: true,
549
+ treeNodeFilterProp: 'title',
550
+ treeDefaultExpandAll: true,
551
+ maxTagCount: 1,
552
+ placeholder: '请选择',
553
+ style: {
554
+ width: '100%',
555
+ },
556
+ dropdownStyle: { maxHeight: 400, maxWidth: 100, overflow: 'auto' }
557
+ },
558
+ } },
559
+ { name: 'qp-classId-in', type: 'select', label: '品类', field: {
560
+ type: 'select',
561
+ props: {
562
+ mode: 'multiple',
563
+ notFoundContent: '暂无数据',
564
+ allowClear: true,
565
+ showSearch: true,
566
+ showArrow: true,
567
+ maxTagCount: 1,
568
+ optionFilterProp: 'children',
569
+ filterOption: (input: string, option: { props: { children: string } }) =>
570
+ option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0,
571
+ },
572
+ } },
573
+ ]
574
+ Promise.all([
575
+ loadSelectSource(`${prefixUrl.formSelectFix}/brand/queryBrandList`, {
576
+ pageSize: 5000,
577
+ currentPage: 1,
578
+ 'ctl-withAuth': true
579
+ }),
580
+ loadSelectSource(`${prefixUrl.formSelectFix}/category/queryCategoryTree`, {
581
+ pageSize: 5000,
582
+ currentPage: 1,
583
+ }),
584
+ loadSelectSource(`${prefixUrl.formSelectFix}/class/withProperty`, {
585
+ pageSize: 5000,
586
+ currentPage: 1,
587
+ }),
588
+ ]).then((x: any)=>{
589
+ formatSource(x,0, 2, tableSearchForm,['id','name']);
590
+ formatTreeDataSource(x,1, 3, tableSearchForm);
591
+ formatSource(x,2, 4, tableSearchForm,['id','name']);
592
+ })
593
+ modalTableProps = {
594
+ modalTableTitle: '选择商品(SPU) ',
595
+ tableSearchForm,
596
+ tableColumns: [
597
+ {
598
+ title: '序号',
599
+ dataIndex: 'keyIndex',
600
+ defaultSort: 0,
601
+ },
602
+ {
603
+ title: '商品编码(SPU)',
604
+ dataIndex: 'itemCode',
605
+ defaultSort: 1,
606
+ },
607
+ {
608
+ title: '商品名称(SPU) ',
609
+ dataIndex: 'name',
610
+ defaultSort: 2,
611
+ },
612
+ {
613
+ title: '品牌',
614
+ dataIndex: 'brandName',
615
+ defaultSort: 3,
616
+ },
617
+ {
618
+ title: '类目',
619
+ dataIndex: 'categoryText',
620
+ defaultSort: 4,
621
+ },
622
+ {
623
+ title: '品类',
624
+ dataIndex: 'className',
625
+ },
626
+ ],
627
+ ...modalTableBusProps
628
+ }
629
+ }
630
+
631
+ // 新库存商品选择器spu
632
+ if(type === 'spuCommodityWithProperty') {
492
633
  selectProps = {
493
634
  placeholder: '输入spu编码或名称',
494
635
  renderTableColumns: [
@@ -504,12 +645,13 @@ export function commonFun (type?: string, prefixUrl: any, parentProps?:any) {
504
645
  ...selectConfigProps,
505
646
  }
506
647
  requestConfig = {
507
- url: `${prefixUrl.selectPrefix}/item`,
648
+ url: `/stock/item/doItemPageAll`,
649
+ method: 'POST',
508
650
  filter: 'qp-itemCode,name-orGroup,like', // 过滤参数
509
651
  mappingTextField: 'name',
510
652
  mappingValueField: 'itemCode',
511
653
  otherParams: {
512
- 'qp-approveStatus-eq': 1, // 审核状态(0.待审批;1.审批通过;2.驳回;3.审批未通过)
654
+ // 'qp-approveStatus-eq': 1, // 审核状态(0.待审批;1.审批通过;2.驳回;3.审批未通过)
513
655
  sorter: 'desc-id',
514
656
  ...(requestConfigProp?.addOtherParams || {}),
515
657
  }, // 默认参数
@@ -565,6 +707,61 @@ export function commonFun (type?: string, prefixUrl: any, parentProps?:any) {
565
707
  option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0,
566
708
  },
567
709
  } },
710
+ {
711
+ name: 'qp-year-in',
712
+ label: '年份',
713
+ field: {
714
+ type: 'itemPropertySelector',
715
+ props: {
716
+ propertyCode: 'SX0000114',
717
+ mode: 'multiple',
718
+ }
719
+ }
720
+ },
721
+ {
722
+ name: 'qp-season-in',
723
+ label: '季节',
724
+ field: {
725
+ type: 'itemPropertySelector',
726
+ props: {
727
+ propertyCode: 'SX0000070',
728
+ mode: 'multiple',
729
+ }
730
+ }
731
+ },
732
+ {
733
+ name: 'qp-zzdlbm-in',
734
+ label: '大类',
735
+ field: {
736
+ type: 'itemPropertySelector',
737
+ props: {
738
+ propertyCode: 'SX0000071',
739
+ mode: 'multiple',
740
+ }
741
+ }
742
+ },
743
+ {
744
+ name: 'qp-zzzlbm-in',
745
+ label: '中类',
746
+ field: {
747
+ type: 'itemPropertySelector',
748
+ props: {
749
+ propertyCode: 'SX0000072',
750
+ mode: 'multiple',
751
+ }
752
+ }
753
+ },
754
+ {
755
+ name: 'qp-zzxlbm-in',
756
+ label: '小类',
757
+ field: {
758
+ type: 'itemPropertySelector',
759
+ props: {
760
+ propertyCode: 'SX0000110',
761
+ mode: 'multiple',
762
+ }
763
+ }
764
+ },
568
765
  ]
569
766
  Promise.all([
570
767
  loadSelectSource(`${prefixUrl.formSelectFix}/brand/queryBrandList`, {
@@ -619,6 +816,7 @@ export function commonFun (type?: string, prefixUrl: any, parentProps?:any) {
619
816
  dataIndex: 'className',
620
817
  },
621
818
  ],
819
+ noEmptySearchField: true,
622
820
  ...modalTableBusProps
623
821
  }
624
822
  }
@@ -1618,8 +1816,8 @@ export function commonFun (type?: string, prefixUrl: any, parentProps?:any) {
1618
1816
  ...requestConfigProp,
1619
1817
  }
1620
1818
  tableSearchForm = [
1621
- { name: 'qp-name-like', label: '商店名称' },
1622
- { name: 'qp-code-like', label: '商店编码' },
1819
+ { name: 'qp-name-like', label: '商店名称', type: 'multipleQueryInput' },
1820
+ { name: 'qp-code-like', label: '商店编码', type: 'multipleQueryInput' },
1623
1821
  { name: 'qp-type-in', type: 'select', label: '商店类型', initialSource: shopFile2Type },
1624
1822
  { name: 'qp-status-in', type: 'select', label: '商店状态', initialSource: shopFile2Status },
1625
1823
  { name: 'qp-orgCode-in', type: 'select', label: '所属销售组织', field: {
@@ -54,7 +54,7 @@ export default () => {
54
54
  setValue(value)
55
55
  },
56
56
  selectBusinessType: 'supplier',
57
- disabled: true,
57
+ // disabled: true,
58
58
  };
59
59
 
60
60
  const props2 = {
@@ -150,7 +150,7 @@ export default () => {
150
150
  // },
151
151
  // prefixUrl: { selectPrefix: '/bop/api', formSelectFix: '/bop/api' },
152
152
  selectProps,
153
- selectBusinessType: 'skuCommodity',
153
+ selectBusinessType: 'shopFile2',
154
154
  };
155
155
 
156
156
  const onTabChange = (key) => {
@@ -297,7 +297,7 @@ import {BusinessSearchSelect} from '../../../index.ts';
297
297
  const { TabPane } = Tabs;
298
298
  export default () => {
299
299
  const selectProps = {
300
- // mode: 'multiple',
300
+ mode: 'multiple',
301
301
  // maxTagCount: 1,
302
302
  // disabled: true
303
303
  }
@@ -317,7 +317,7 @@ export default () => {
317
317
  },
318
318
  // prefixUrl: { selectPrefix: '/bop/api', formSelectFix: '/bop/api' },
319
319
  selectProps,
320
- selectBusinessType: 'spuCommodity',
320
+ selectBusinessType: 'spuCommodityWithProperty',
321
321
  };
322
322
 
323
323
  const onTabChange = (key) => {
@@ -79,7 +79,7 @@ const handleDefaultPrefixUrl = (type: string) => {
79
79
  case 'supplier2': case 'customer2': case 'shopFile2': case 'platCompany': case 'market-channel':
80
80
  result = '/channel-manage';
81
81
  break;
82
- case 'skuCommodity': case 'skuPropertyValue': case 'spuCommodity': case 'skcCommodity': case 'brand':
82
+ case 'skuCommodity': case 'skuPropertyValue': case 'spuCommodity': case 'skcCommodity': case 'brand': case 'spuCommodityWithProperty':
83
83
  result = '/items';
84
84
  break;
85
85
  case 'physicalWarehouse': case 'realWarehouse': case 'virtualWarehouse': case 'channelWarehouse': case 'ownerWarehouse':
@@ -89,7 +89,7 @@ const AddSelect = (props: any) => {
89
89
  isAllowRepeatedSelect = false,
90
90
  clearTitle
91
91
  } = props;
92
- const { url, otherParams, isMap, mappingValueField = 'code' } = requestConfig || {};
92
+ const { url, sourceKey, otherParams, isMap, mappingValueField = 'code' } = requestConfig || {};
93
93
  const realButtonProps = {type: "primary", ...buttonProps};
94
94
  const selectRowKey = isAllowRepeatedSelect ? 'uuid' : mappingValueField
95
95
 
@@ -537,7 +537,7 @@ const AddSelect = (props: any) => {
537
537
  };
538
538
  });
539
539
  } else {
540
- const keys = res.list ? 'list' : 'items';
540
+ const keys = sourceKey ? sourceKey :res.list ? 'list' : 'items';
541
541
  source = res
542
542
  ? res[keys]
543
543
  ? res[keys].map((item: any) => {
@@ -940,7 +940,7 @@ const AddSelect = (props: any) => {
940
940
  </div>
941
941
  {isModalVisible && (
942
942
  <Modal
943
- width='1200px'
943
+ width={`calc(100% - 320px)`}
944
944
  style={{ top: 20 }}
945
945
  bodyStyle={{ padding: '0px' }}
946
946
  visible={isModalVisible}
@@ -43,6 +43,7 @@ export default () => {
43
43
  onRef={(ref) => {
44
44
  dataValidationRef = ref;
45
45
  }}
46
+ getTemplate={() => {}}
46
47
  />
47
48
  </div>
48
49
  );
@@ -653,7 +653,7 @@ class DataValidation extends React.Component {
653
653
 
654
654
  render() {
655
655
  const { errorListCheck } = this.state;
656
- const { title, notValid, notExcelImport, excelImportConfig } = this.props;
656
+ const { title, notValid, notExcelImport, excelImportConfig, getTemplate } = this.props;
657
657
  const { size, accept, suffixRule } = excelImportConfig || {}
658
658
 
659
659
  let totalSummary = this.getCount();
@@ -745,9 +745,16 @@ class DataValidation extends React.Component {
745
745
  </Space>
746
746
  <Space>
747
747
  {!notExcelImport && (
748
- <Upload {...uploadProps}>
749
- <Button>导入</Button>
750
- </Upload>
748
+ <>
749
+ {
750
+ getTemplate && (
751
+ <Button onClick={getTemplate}>下载模板</Button>
752
+ )
753
+ }
754
+ <Upload {...uploadProps}>
755
+ <Button>导入</Button>
756
+ </Upload>
757
+ </>
751
758
  )}
752
759
  <Dropdown
753
760
  trigger={['click']}
@@ -9,7 +9,7 @@ title: 批量搜索查询组件
9
9
  order: 2
10
10
  ---
11
11
 
12
- ## QueryMutipleInput
12
+ ## QueryMutipleSearchSelect
13
13
 
14
14
  Demo:
15
15
 
@@ -20,8 +20,7 @@ import { QueryMutipleSearchSelect } from '../../../index';
20
20
  export default () => {
21
21
  const requestConfig = {
22
22
  url: '/items/item/listNoPage/Simple',
23
- filter: 'qp-name-like', // qp-itemCode-like
24
- // filter: 'qp-skuCode,name-orGroup,like',
23
+ filter: 'qp-itemCode,name-orGroup,like',
25
24
  mappingTextField: 'name',
26
25
  mappingValueField: 'itemCode',
27
26
  sourceName: 'qp-itemCode-in'
@@ -91,6 +91,7 @@ const QueryMutipleSearchSelect = ({ onValueChange, requestConfig={}, selectProps
91
91
  const getData = (params: any = {}, callback?: any) => {
92
92
  if (!requestConfig) return;
93
93
  if (!url) return;
94
+ if(!searchValue?.length) return; // 空值默认不查询
94
95
 
95
96
  setFetching(true)
96
97
 
@@ -167,7 +168,7 @@ const QueryMutipleSearchSelect = ({ onValueChange, requestConfig={}, selectProps
167
168
  <Spin size="small" className='searchSelectSpin' />
168
169
  ) : (
169
170
  <div style={{ textAlign: 'center' }}>
170
- <div>{searchValue?'无匹配结果,请更换其他内容再试':`请录入内容模糊查询`}</div>
171
+ <div>{searchValue?'无匹配结果,请更换其他内容再试': (selectProps?.notFoundText||`请录入编码/名称模糊查询`)}</div>
171
172
  </div>
172
173
  )
173
174
  }
@@ -73,11 +73,6 @@
73
73
  &_dropdown_table {
74
74
  // padding: 4px 10px 6px;
75
75
 
76
- // 下拉table 复选框为单选时候隐藏
77
- .ant-table-cell .ant-table-selection-column .ant-radio,table tr td.ant-table-selection-column .ant-radio-wrapper {
78
- display: none;
79
- }
80
-
81
76
  // 下拉table 表头表体样式
82
77
  .ant-table.ant-table-bordered > .ant-table-container > .ant-table-header > table {
83
78
  font-family: MiSans-Regular;
@@ -103,7 +98,18 @@
103
98
  .ant-table.ant-table-bordered > .ant-table-container {
104
99
  .ant-table-body > table > tbody > tr > td.ant-table-selection-column,
105
100
  .ant-table-header > table > thead > tr > th.ant-table-selection-column {
106
- display: none;
101
+ visibility: hidden; // 不使用 display: none; 是因为此设置不占位,会导致表格scroll.x: 'max-content' 计算不准确
102
+ padding: 0;
103
+ margin: 0;
104
+ width: 0;
105
+ height: 0;
106
+ min-width: 0;
107
+ min-height: 0;
108
+ border: none;
109
+
110
+ .ant-radio-wrapper {
111
+ display: none;
112
+ }
107
113
  }
108
114
  }
109
115
  }
@@ -243,6 +249,10 @@
243
249
  &_wrapLeft1, &_wrapLeft2, &_wrapRight{
244
250
  background: #fff;
245
251
  width: calc(50% - 5px);
252
+ // 解决全选按钮位置偏左问题
253
+ .ant-table.ant-table-bordered > .ant-table-container > .ant-table-header > table .ant-table-thead .ant-table-selection .ant-checkbox-wrapper {
254
+ justify-content: center;
255
+ }
246
256
  }
247
257
  &_wrapLeft1 {
248
258
  width: 100%;