@bit-sun/business-component 4.0.11-alpha.9 → 4.0.12-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 (25) hide show
  1. package/dist/components/Business/BsSulaQueryTable/SearchItemSetting.d.ts +2 -4
  2. package/dist/components/Functional/SearchSelect/utils.d.ts +4 -0
  3. package/dist/index.esm.js +637 -424
  4. package/dist/index.js +638 -425
  5. package/package.json +2 -2
  6. package/src/components/Business/BsLayouts/index.tsx +17 -0
  7. package/src/components/Business/BsSulaQueryTable/SearchItemSetting.tsx +45 -17
  8. package/src/components/Business/BsSulaQueryTable/index.less +21 -38
  9. package/src/components/Business/BsSulaQueryTable/setting.tsx +5 -5
  10. package/src/components/Business/DetailPageWrapper/index.less +10 -1
  11. package/src/components/Business/DetailPageWrapper/index.tsx +27 -2
  12. package/src/components/Business/HomePageWrapper/index.less +9 -0
  13. package/src/components/Business/HomePageWrapper/index.tsx +1 -1
  14. package/src/components/Business/SearchSelect/BusinessUtils.tsx +66 -25
  15. package/src/components/Business/SearchSelect/index.md +6 -5
  16. package/src/components/Business/columnSettingTable/columnSetting.tsx +5 -5
  17. package/src/components/Business/columnSettingTable/index.less +33 -71
  18. package/src/components/Functional/QueryMutipleInput/index.tsx +2 -0
  19. package/src/components/Functional/SearchSelect/index.less +22 -5
  20. package/src/components/Functional/SearchSelect/index.tsx +146 -67
  21. package/src/components/Functional/SearchSelect/utils.ts +12 -1
  22. package/src/components/Functional/TreeSearchSelect/index.tsx +1 -1
  23. package/src/plugin/TableColumnSetting/index.less +38 -70
  24. package/src/plugin/TableColumnSetting/index.tsx +5 -5
  25. package/src/styles/bsDefault.less +130 -123
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bit-sun/business-component",
3
- "version": "4.0.11-alpha.9",
3
+ "version": "4.0.12-alpha.2",
4
4
  "scripts": {
5
5
  "start": "dumi dev",
6
6
  "docs:build": "dumi build",
@@ -28,7 +28,7 @@
28
28
  },
29
29
  "peerDependencies": {
30
30
  "antd": "^4.17.2",
31
- "bssula": "4.0.8-alpha.3",
31
+ "bssula": "4.0.12-alpha.6",
32
32
  "umi-plugin-bssula": "4.0.8-alpha.3",
33
33
  "umi": "^3.5.20",
34
34
  "@ant-design/pro-layout": "^6.5.0",
@@ -507,11 +507,24 @@ class BasicLayout extends React.PureComponent {
507
507
  query: route.query,
508
508
  match: match,
509
509
  key: currentKey,
510
+ state: route.state,
510
511
  tab: this.getPageTitle(route.pathname) + '',
511
512
  },
512
513
  ];
513
514
  newListenRouterKey = [...listenRouterKey, currentKey];
514
515
  }
516
+ } else {
517
+ // 更新已存储路由的query和state
518
+ newListenRouterState = newListenRouterState.map(item => {
519
+ if (item.key === currentKey) {
520
+ return {
521
+ ...item,
522
+ query: route.query,
523
+ state: route.state,
524
+ };
525
+ }
526
+ return item;
527
+ })
515
528
  }
516
529
 
517
530
  // -------------------处理页签关闭----------------------------
@@ -1507,6 +1520,7 @@ class BasicLayout extends React.PureComponent {
1507
1520
  getDictionaryTextByValue={this.getDictionaryTextByValue}
1508
1521
  timeFormat={this.timeFormat}
1509
1522
  transparentProps={transparentProps}
1523
+ activeKey={activeKey}
1510
1524
  />
1511
1525
  </TabPane>
1512
1526
  ))}
@@ -1559,6 +1573,9 @@ class WrapperComponent extends React.Component {
1559
1573
  if (window.__POWERED_BY_WUJIE__ && nextProps?.item?.key?.indexOf('edit-template-template') > -1) { // 适配wujie环境主应用下渲染打印编辑器
1560
1574
  return true
1561
1575
  }
1576
+ if (nextProps.activeKey === nextProps.item.key && JSON.stringify(nextProps.item) !== JSON.stringify(this.props.item)) {
1577
+ return true;
1578
+ }
1562
1579
  return false;
1563
1580
  }
1564
1581
  render() {
@@ -204,7 +204,6 @@ class SearchItemTable extends React.Component {
204
204
  title: '搜索字段名称',
205
205
  dataIndex: 'label',
206
206
  className: 'drag-visible',
207
- width: 100,
208
207
  },
209
208
  {
210
209
  title: '删除',
@@ -212,15 +211,16 @@ class SearchItemTable extends React.Component {
212
211
  render: (text, record) => {
213
212
  return (
214
213
  <span
214
+ style={{paddingLeft: '46px'}}
215
215
  onClick={() => {
216
216
  this.setState({
217
217
  sortDataSource: this.state.sortDataSource.filter((item) => {
218
- return item.label !== record.label;
218
+ return item.name !== record.name;
219
219
  }),
220
220
  isDefaultValue: false,
221
221
  dataSource: [
222
222
  ...this.state.dataSource.map((item) => {
223
- if (item.label === record.label) {
223
+ if (item.name === record.name) {
224
224
  return {
225
225
  ...item,
226
226
  hidden: true,
@@ -265,6 +265,7 @@ class SearchItemTable extends React.Component {
265
265
  console.log(e);
266
266
  this.setState({
267
267
  visible: false,
268
+ searchDataSource: '',
268
269
  });
269
270
  };
270
271
 
@@ -326,17 +327,17 @@ class SearchItemTable extends React.Component {
326
327
  return <SortableItem index={index} {...restProps} />;
327
328
  };
328
329
 
329
- onChange = (e: CheckboxChangeEvent, label) => {
330
+ onChange = (e: CheckboxChangeEvent, name) => {
330
331
  const { sortDataSource, dataSource } = this.state;
331
332
  if (!e.target.checked) {
332
333
  this.setState({
333
334
  sortDataSource: sortDataSource.filter((item) => {
334
- return item.label !== label;
335
+ return item.name !== name;
335
336
  }),
336
337
  isDefaultValue: false,
337
338
  dataSource: [
338
339
  ...dataSource.map((item) => {
339
- if (item.label === label) {
340
+ if (item.name === name) {
340
341
  return {
341
342
  ...item,
342
343
  hidden: true,
@@ -350,7 +351,7 @@ class SearchItemTable extends React.Component {
350
351
  let newSortData = [
351
352
  ...sortDataSource,
352
353
  ...dataSource
353
- .filter((item) => item.label === label)
354
+ .filter((item) => item.name === name)
354
355
  .map((source) => {
355
356
  return {
356
357
  ...source,
@@ -363,7 +364,7 @@ class SearchItemTable extends React.Component {
363
364
  isDefaultValue: false,
364
365
  dataSource: [
365
366
  ...dataSource.map((item) => {
366
- if (item.label === label) {
367
+ if (item.name === name) {
367
368
  return {
368
369
  ...item,
369
370
  hidden: false,
@@ -396,14 +397,41 @@ class SearchItemTable extends React.Component {
396
397
  });
397
398
  };
398
399
 
400
+ // 处理非标准 特殊搜索项 名称回显
401
+ showSearchItemLabel = (item: object) => {
402
+ //搜索项 存在 label默认返回
403
+ if(item.label){
404
+ return item.label;
405
+ } else {
406
+ switch(item.field.type){
407
+ //多值录入搜索组件 默认使用下拉框第一个选项
408
+ case 'bs-multiInput':
409
+ const { options = [] } = item?.field?.props;
410
+ return options[0]?.text;
411
+ default:
412
+ return '';
413
+ }
414
+ }
415
+ }
416
+
417
+
399
418
  render() {
400
419
  const {
401
- dataSource = [],
420
+ dataSource: originDataSource = [],
402
421
  searchDataSource,
403
- sortDataSource,
422
+ sortDataSource: originSortDataSource = [],
404
423
  visible,
405
424
  onSearchSort,
406
425
  } = this.state;
426
+ const dataSource = originDataSource.map((item: any) => ({
427
+ ...item,
428
+ label: this.showSearchItemLabel(item),
429
+ }));
430
+ const sortDataSource = originSortDataSource.map((item: any) => ({
431
+ ...item,
432
+ label: this.showSearchItemLabel(item),
433
+ }));
434
+
407
435
  let newSearchSource = dataSource.filter(
408
436
  (item) => item?.label?.indexOf(searchDataSource||'') > -1,
409
437
  );
@@ -411,7 +439,7 @@ class SearchItemTable extends React.Component {
411
439
  <div className={'sort_table_wrapper'}>
412
440
  {visible && (
413
441
  <Modal
414
- title="设置搜索项内容"
442
+ title="筛选条件设置"
415
443
  wrapClassName={'sort_table_wrapper'}
416
444
  width={820}
417
445
  visible={visible}
@@ -439,15 +467,15 @@ class SearchItemTable extends React.Component {
439
467
  <div className={'sort_table'}>
440
468
  <div className={'sort_table_column_wrapper'}>
441
469
  <span className={'sort_table_column_count'}>
442
- 可选字段 <span>(共{dataSource.length}个)</span>
470
+ <span>勾选你想使用的筛选条件</span>
443
471
  </span>
444
472
  <div className={'sort_table_column'}>
445
473
  <Input
446
474
  prefix={<SearchOutlined className="site-form-item-icon" />}
447
- placeholder="搜索"
475
+ placeholder="输入筛选条件名称搜索"
448
476
  allowClear
449
477
  onChange={this.onSearch}
450
- style={{ width: 540 }}
478
+ style={{ width: 525 }}
451
479
  />
452
480
  <div>
453
481
  {!searchDataSource && (
@@ -487,7 +515,7 @@ class SearchItemTable extends React.Component {
487
515
  <Checkbox
488
516
  checked={!item.hidden}
489
517
  onChange={(e) => {
490
- this.onChange(e, item.label);
518
+ this.onChange(e, item.name);
491
519
  }}
492
520
  >
493
521
  {item.label}
@@ -499,7 +527,7 @@ class SearchItemTable extends React.Component {
499
527
  <Checkbox
500
528
  checked={!item.hidden}
501
529
  onChange={(e) => {
502
- this.onChange(e, item.label);
530
+ this.onChange(e, item.name);
503
531
  }}
504
532
  >
505
533
  {item.label}
@@ -520,7 +548,7 @@ class SearchItemTable extends React.Component {
520
548
  </div>
521
549
  <div className={'sort_table_content_wrapper'}>
522
550
  <span className={'sort_table_content_count'}>
523
- 已选字段 <span>(共{sortDataSource.length}个)</span>
551
+ <span>已选择的搜索条件排序</span>
524
552
  </span>
525
553
  <div className={'sort_table_content'}>
526
554
  <span style={{ paddingLeft: '10px' }}>
@@ -4,7 +4,7 @@
4
4
 
5
5
  .sort_table_column_wrapper {
6
6
  width: 560px;
7
- margin-right: 10px;
7
+ margin-right: 8px;
8
8
  }
9
9
 
10
10
  .sort_table_content_wrapper {
@@ -16,12 +16,12 @@
16
16
  height: 20px;
17
17
  font-family: PingFangSC-Regular;
18
18
  font-weight: 400;
19
- font-size: 14px;
19
+ font-size: 12px;
20
20
  color: #000000;
21
21
  letter-spacing: 0;
22
22
 
23
23
  span {
24
- color: #848484;
24
+ color: #8E8E8E;
25
25
  }
26
26
  }
27
27
 
@@ -46,7 +46,7 @@
46
46
  text-align: center;
47
47
  font-family: PingFangSC-Regular;
48
48
  font-weight: 400;
49
- font-size: 14px;
49
+ font-size: 12px;
50
50
  color: #848484;
51
51
  }
52
52
  }
@@ -57,13 +57,15 @@
57
57
  height: 20px;
58
58
  font-family: PingFangSC-Regular;
59
59
  font-weight: 400;
60
- font-size: 14px;
60
+ font-size: 12px;
61
61
  color: #848484;
62
62
  letter-spacing: 0;
63
63
  }
64
64
 
65
65
  .ant-checkbox-wrapper {
66
66
  width: 144px;
67
+ height: 16px;
68
+ line-height: 16px;
67
69
  margin-top: 16px;
68
70
  }
69
71
 
@@ -73,6 +75,7 @@
73
75
  }
74
76
 
75
77
  .sort_table_content {
78
+ height: 430px;
76
79
  margin-top: 10px;
77
80
  padding-top: 10px;
78
81
  padding-bottom: 10px;
@@ -90,28 +93,11 @@
90
93
  }
91
94
  }
92
95
  }
93
- div.ant-modal-header {
94
- width: 820px;
95
- height: 64px;
96
- background: #ffffff;
97
- padding: 20px;
98
- border: 0px;
99
-
100
- div.ant-modal-title {
101
- height: 24px;
102
- font-family: PingFangSC-Medium;
103
- font-weight: 500;
104
- font-size: 18px;
105
- color: #000000;
106
- letter-spacing: 0;
107
- line-height: 24px;
108
- }
109
- }
96
+
110
97
 
111
98
  .ant-modal-body {
112
- padding: 0 20px !important;
99
+ padding: 10px 16px;
113
100
  }
114
-
115
101
  .ant-modal-close-x {
116
102
  height: 24px;
117
103
  font-family: PingFangSC-Medium;
@@ -127,7 +113,7 @@
127
113
  }
128
114
 
129
115
  input {
130
- height: 32px;
116
+ height: 22px;
131
117
  padding: 6px 4px;
132
118
  border-radius: 5px;
133
119
  }
@@ -135,28 +121,25 @@
135
121
  .ant-input-prefix {
136
122
  width: 24px;
137
123
  height: 24px;
138
- margin: 4px;
124
+ margin: 0 4px;
139
125
  // border: 1px dashed #d9d9d9;
140
126
  display: flex;
141
127
  justify-content: center;
142
128
  }
143
129
 
144
130
  .ant-modal-footer {
145
- height: 70px;
146
- border: 0;
147
- padding: 20px;
131
+ padding: 8px 16px;
148
132
  display: flex;
149
133
  justify-content: space-between;
150
134
 
151
135
  .ant-btn {
152
136
  width: 80px;
153
- height: 34px;
154
- border-radius: 5px;
137
+ height: 28px;
155
138
 
156
139
  span {
157
140
  font-family: PingFangSC-Medium;
158
141
  font-weight: 600;
159
- font-size: 14px;
142
+ font-size: 12px;
160
143
  letter-spacing: 0;
161
144
  text-align: center;
162
145
  line-height: 20px;
@@ -179,13 +162,13 @@
179
162
  padding-bottom: 50px;
180
163
 
181
164
  tr {
182
- height: 36px;
165
+ height: 30px;
183
166
  td {
184
167
  width: 24px !important;
185
- height: 36px !important;
168
+ height: 30px !important;
186
169
  font-family: PingFangSC-Regular;
187
170
  font-weight: 400;
188
- font-size: 14px;
171
+ font-size: 12px;
189
172
  color: #000000;
190
173
  letter-spacing: 0;
191
174
 
@@ -197,8 +180,8 @@
197
180
  overflow: hidden;
198
181
  text-overflow: ellipsis;
199
182
  white-space: nowrap;
200
- height: 36px !important;
201
- line-height: 36px !important;
183
+ height: 30px !important;
184
+ line-height: 30px !important;
202
185
  }
203
186
 
204
187
  img {
@@ -214,7 +197,7 @@
214
197
  &:last-child {
215
198
  padding-left: 0px !important;
216
199
  padding-right: 3px !important;
217
- width: 34px !important;
200
+ width: 30px !important;
218
201
 
219
202
  img {
220
203
  // border: 1px dashed #d9d9d9;
@@ -711,9 +711,9 @@ class SortableTable extends React.Component {
711
711
  <div className={'sort_table_wrapper'}>
712
712
  {visible && (
713
713
  <Modal
714
- title="设置表头内容"
714
+ title="筛选条件设置"
715
715
  wrapClassName={'sort_table_wrapper'}
716
- width={820}
716
+ width={810}
717
717
  visible={visible}
718
718
  onOk={this.handleOk}
719
719
  onCancel={this.handleCancel}
@@ -748,7 +748,7 @@ class SortableTable extends React.Component {
748
748
  <div className={'sort_table'}>
749
749
  <div className={'sort_table_column_wrapper'}>
750
750
  <span className={'sort_table_column_count'}>
751
- 可选字段 <span>(共{dataSource.length}个)</span>
751
+ <span>勾选你想使用的筛选条件</span>
752
752
  </span>
753
753
  <div className={'sort_table_column'}>
754
754
  <Input
@@ -756,7 +756,7 @@ class SortableTable extends React.Component {
756
756
  placeholder="搜索"
757
757
  allowClear
758
758
  onChange={this.onSearch}
759
- style={{ width: 540 }}
759
+ style={{ width: 525, height: 24 }}
760
760
  />
761
761
  <div>
762
762
  {!searchDataSource && (
@@ -882,7 +882,7 @@ class SortableTable extends React.Component {
882
882
  </div>
883
883
  <div className={'sort_table_content_wrapper'}>
884
884
  <span className={'sort_table_content_count'}>
885
- 已选字段 <span>(共{sortDataSource.length}个)</span>
885
+ <span>已选择的搜索条件排序</span>
886
886
  </span>
887
887
  <div className={'sort_table_content'}>
888
888
  <span style={{ paddingLeft: '10px' }}>
@@ -1,3 +1,12 @@
1
+ .bs_detail_page_head_wrapper{
2
+ height: 32px;
3
+ position: sticky;
4
+ background: #fff;
5
+ width: 100%;
6
+ top: 0px;
7
+ z-index: 10;
8
+ }
9
+
1
10
  .detail_page_head {
2
11
  height: 32px;
3
12
  z-index: 5;
@@ -23,7 +32,7 @@
23
32
  color: #282828;
24
33
  }
25
34
 
26
- li .bread_name:hover {
35
+ li .bread_name_pre:hover {
27
36
  color: #000000d9;
28
37
  }
29
38
  }
@@ -107,6 +107,27 @@ const DetailWrapper = React.memo(
107
107
  breadcrumbArrs.pop();
108
108
  breadcrumbArrs.push(title);
109
109
  }
110
+
111
+ // 处理详情页上层列表页面路径
112
+ var pattern = /^(\/.*)\/(action|create|edit|view)(\/.*)*$/
113
+ const result = pathname.match(pattern)
114
+
115
+ if(result?.length && result[1]) {
116
+ const parentRoute = matchParamsPath(
117
+ `${basePath}${result[1]}`,
118
+ breadcrumbNameMap,
119
+ );
120
+
121
+ if(!parentRoute) return;
122
+
123
+ if(breadcrumbArrs.length >= 2) {
124
+ breadcrumbArrs.splice(-1, 0, {
125
+ title: parentRoute.name,
126
+ path: result[1]
127
+ })
128
+ }
129
+ }
130
+
110
131
  setBreadCrumbArr([...breadcrumbArrs]);
111
132
 
112
133
  const pageName = formatMessage({
@@ -221,7 +242,7 @@ const DetailWrapper = React.memo(
221
242
  };
222
243
 
223
244
  return (
224
- <div ref={wrapperContainerRef}>
245
+ <div ref={wrapperContainerRef} className='bs_detail_page_head_wrapper'>
225
246
  <div
226
247
  className={'detail_page_head'}
227
248
  style={{
@@ -245,7 +266,11 @@ const DetailWrapper = React.memo(
245
266
  key={item}
246
267
  >
247
268
  <span className={`${index === breadcrumbArr.length - 1 ? 'bread_name_last' : ''} bread_name`} >
248
- {item}
269
+ {typeof item == 'object' ? <span className='bread_name_pre' onClick={()=> {
270
+ history.push({
271
+ pathname: item.path
272
+ })
273
+ }}>{item.title}</span> : item}
249
274
  </span>
250
275
  </Breadcrumb.Item>
251
276
  })}
@@ -1,3 +1,12 @@
1
+ .bs_home_page_head_wrapper{
2
+ height: 32px;
3
+ position: sticky;
4
+ background: #fff;
5
+ width: 100%;
6
+ top: 0px;
7
+ z-index: 10;
8
+ }
9
+
1
10
  .home_page_head {
2
11
  display: flex;
3
12
  justify-content: space-between;
@@ -84,7 +84,7 @@ const HeaderWrapper = React.memo(
84
84
  useEffect(() => {}, [pathname]);
85
85
 
86
86
  return (
87
- <div>
87
+ <div className='bs_home_page_head_wrapper'>
88
88
  <div className={'home_page_head'}>
89
89
  <div className='home_page_title_wrapper'>
90
90
  {/* <div className={'home_page_title'}>{pageTitle}</div> */}