@bit-sun/business-component 4.0.11 → 4.0.12-alpha.3

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 (44) hide show
  1. package/.umirc.ts +10 -6
  2. package/dist/components/Business/BsSulaQueryTable/SearchItemSetting.d.ts +2 -4
  3. package/dist/components/Business/BsSulaQueryTable/utils.d.ts +1 -0
  4. package/dist/components/Business/SearchSelect/BusinessUtils.d.ts +2 -1
  5. package/dist/components/Functional/SearchSelect/utils.d.ts +11 -0
  6. package/dist/index.esm.js +1910 -980
  7. package/dist/index.js +1909 -979
  8. package/package.json +2 -2
  9. package/src/assets/copyImg.svg +16 -0
  10. package/src/assets/zhankaitiaojian-icon.svg +18 -0
  11. package/src/components/Business/BsLayouts/index.tsx +17 -0
  12. package/src/components/Business/BsSulaQueryTable/SearchItemSetting.tsx +45 -17
  13. package/src/components/Business/BsSulaQueryTable/index.less +21 -38
  14. package/src/components/Business/BsSulaQueryTable/index.tsx +26 -16
  15. package/src/components/Business/BsSulaQueryTable/setting.tsx +5 -5
  16. package/src/components/Business/BsSulaQueryTable/utils.tsx +36 -15
  17. package/src/components/Business/DetailPageWrapper/index.less +11 -3
  18. package/src/components/Business/DetailPageWrapper/index.tsx +27 -2
  19. package/src/components/Business/HomePageWrapper/index.less +9 -0
  20. package/src/components/Business/HomePageWrapper/index.tsx +1 -1
  21. package/src/components/Business/SearchSelect/BusinessUtils.tsx +834 -179
  22. package/src/components/Business/SearchSelect/index.md +181 -0
  23. package/src/components/Business/SearchSelect/index.tsx +2 -1
  24. package/src/components/Business/SearchSelect/utils.ts +4 -1
  25. package/src/components/Business/StateFlow/index.less +140 -124
  26. package/src/components/Business/StateFlow/index.tsx +3 -3
  27. package/src/components/Business/columnSettingTable/columnSetting.tsx +6 -6
  28. package/src/components/Business/columnSettingTable/index.less +31 -69
  29. package/src/components/Business/columnSettingTable/index.tsx +36 -6
  30. package/src/components/Business/columnSettingTable/sulaSettingTable.tsx +36 -7
  31. package/src/components/Common/ParagraphCopier/index.tsx +2 -6
  32. package/src/components/Functional/QueryMutipleInput/index.less +51 -19
  33. package/src/components/Functional/QueryMutipleInput/index.tsx +28 -22
  34. package/src/components/Functional/SearchSelect/index.less +236 -73
  35. package/src/components/Functional/SearchSelect/index.tsx +400 -263
  36. package/src/components/Functional/SearchSelect/utils.ts +35 -0
  37. package/src/components/Functional/TreeSearchSelect/index.tsx +1 -1
  38. package/src/components/Solution/RuleComponent/index.js +4 -3
  39. package/src/components/Solution/RuleSetter/function.ts +2 -1
  40. package/src/plugin/TableColumnSetting/index.less +38 -70
  41. package/src/plugin/TableColumnSetting/index.tsx +5 -5
  42. package/src/styles/bsDefault.less +132 -136
  43. package/src/utils/TableUtils.tsx +1 -1
  44. package/src/utils/utils.ts +5 -2
@@ -1,11 +1,10 @@
1
- // 列自定义
2
1
  .sort_table_wrapper {
3
2
  .sort_table {
4
3
  display: flex;
5
4
 
6
5
  .sort_table_column_wrapper {
7
6
  width: 560px;
8
- margin-right: 10px;
7
+ margin-right: 8px;
9
8
  }
10
9
 
11
10
  .sort_table_content_wrapper {
@@ -17,12 +16,12 @@
17
16
  height: 20px;
18
17
  font-family: PingFangSC-Regular;
19
18
  font-weight: 400;
20
- font-size: 14px;
19
+ font-size: 12px;
21
20
  color: #000000;
22
21
  letter-spacing: 0;
23
22
 
24
23
  span {
25
- color: #848484;
24
+ color: #8E8E8E;
26
25
  }
27
26
  }
28
27
 
@@ -47,7 +46,7 @@
47
46
  text-align: center;
48
47
  font-family: PingFangSC-Regular;
49
48
  font-weight: 400;
50
- font-size: 14px;
49
+ font-size: 12px;
51
50
  color: #848484;
52
51
  }
53
52
  }
@@ -58,22 +57,25 @@
58
57
  height: 20px;
59
58
  font-family: PingFangSC-Regular;
60
59
  font-weight: 400;
61
- font-size: 14px;
60
+ font-size: 12px;
62
61
  color: #848484;
63
62
  letter-spacing: 0;
64
63
  }
65
64
 
66
65
  .ant-checkbox-wrapper {
67
66
  width: 144px;
67
+ height: 16px;
68
+ line-height: 16px;
68
69
  margin-top: 16px;
69
70
  }
70
71
 
71
- .ant-checkbox-wrapper+.ant-checkbox-wrapper {
72
+ .ant-checkbox-wrapper + .ant-checkbox-wrapper {
72
73
  margin-left: 0px;
73
74
  }
74
75
  }
75
76
 
76
77
  .sort_table_content {
78
+ height: 430px;
77
79
  margin-top: 10px;
78
80
  padding-top: 10px;
79
81
  padding-bottom: 10px;
@@ -83,7 +85,6 @@
83
85
  .ant-table-wrapper {
84
86
  padding: 0px !important;
85
87
  }
86
-
87
88
  .sort_table_title {
88
89
  height: 32px;
89
90
  line-height: 32px;
@@ -92,29 +93,11 @@
92
93
  }
93
94
  }
94
95
  }
95
-
96
- div.ant-modal-header {
97
- width: 820px;
98
- height: 64px;
99
- background: #ffffff;
100
- padding: 20px;
101
- border: 0px;
102
-
103
- div.ant-modal-title {
104
- height: 24px;
105
- font-family: PingFangSC-Medium;
106
- font-weight: 500;
107
- font-size: 18px;
108
- color: #000000;
109
- letter-spacing: 0;
110
- line-height: 24px;
111
- }
112
- }
96
+
113
97
 
114
98
  .ant-modal-body {
115
- padding: 0 20px !important;
99
+ padding: 10px 16px;
116
100
  }
117
-
118
101
  .ant-modal-close-x {
119
102
  height: 24px;
120
103
  font-family: PingFangSC-Medium;
@@ -130,7 +113,7 @@
130
113
  }
131
114
 
132
115
  input {
133
- height: 32px;
116
+ height: 22px;
134
117
  padding: 6px 4px;
135
118
  border-radius: 5px;
136
119
  }
@@ -138,34 +121,33 @@
138
121
  .ant-input-prefix {
139
122
  width: 24px;
140
123
  height: 24px;
141
- margin: 4px;
124
+ margin: 0 4px;
142
125
  // border: 1px dashed #d9d9d9;
143
126
  display: flex;
144
127
  justify-content: center;
145
128
  }
146
129
 
147
130
  .ant-modal-footer {
148
- height: 70px;
149
- border: 0;
150
- padding: 20px;
151
-
131
+ padding: 8px 16px;
132
+ display: flex;
133
+ justify-content: space-between;
134
+
152
135
  .ant-btn {
153
136
  width: 80px;
154
- height: 34px;
155
- border-radius: 5px;
137
+ height: 28px;
156
138
 
157
139
  span {
158
140
  font-family: PingFangSC-Medium;
159
141
  font-weight: 600;
160
- font-size: 14px;
142
+ font-size: 12px;
161
143
  letter-spacing: 0;
162
144
  text-align: center;
163
145
  line-height: 20px;
164
146
  }
165
147
 
166
- &:first-child {
167
- margin-right: 524px;
168
- }
148
+ // &:first-child {
149
+ // margin-right: 524px;
150
+ // }
169
151
  }
170
152
  }
171
153
 
@@ -180,14 +162,13 @@
180
162
  padding-bottom: 50px;
181
163
 
182
164
  tr {
183
- height: 36px;
184
-
165
+ height: 30px;
185
166
  td {
186
167
  width: 24px !important;
187
- height: 36px !important;
168
+ height: 30px !important;
188
169
  font-family: PingFangSC-Regular;
189
170
  font-weight: 400;
190
- font-size: 14px;
171
+ font-size: 12px;
191
172
  color: #000000;
192
173
  letter-spacing: 0;
193
174
 
@@ -199,8 +180,8 @@
199
180
  overflow: hidden;
200
181
  text-overflow: ellipsis;
201
182
  white-space: nowrap;
202
- height: 36px !important;
203
- line-height: 36px !important;
183
+ height: 30px !important;
184
+ line-height: 30px !important;
204
185
  }
205
186
 
206
187
  img {
@@ -216,7 +197,7 @@
216
197
  &:last-child {
217
198
  padding-left: 0px !important;
218
199
  padding-right: 3px !important;
219
- width: 34px !important;
200
+ width: 30px !important;
220
201
 
221
202
  img {
222
203
  // border: 1px dashed #d9d9d9;
@@ -227,27 +208,8 @@
227
208
  }
228
209
  }
229
210
  }
230
- }
231
-
232
- .global_tab_nav_style {
233
- top: 2px !important;
234
- }
235
-
236
- .row-dragging {
237
- background: #fafafa;
238
- border: 1px solid #ccc;
239
- z-index: 10000;
240
- }
241
-
242
- .row-dragging td {
243
- padding: 7px 16px;
244
- display: none;
245
-
246
- }
247
- .row-dragging td:first-child {
248
- display: inline-block;
249
- }
250
211
 
251
- .row-dragging .drag-visible {
252
- visibility: visible;
212
+ .ant-dropdown-link {
213
+ cursor: pointer;
214
+ }
253
215
  }
@@ -159,7 +159,7 @@ export default class ColumnSettingTable extends React.Component {
159
159
  ...restProps,
160
160
  };
161
161
  let showSummary = null;
162
- if (this.state.showColumns.length) {
162
+ if (this.state.showColumns.length && !Array.isArray(summary)) {
163
163
  if (summary && summary().diy) {
164
164
  showSummary = this.getTableSummaryInfo();
165
165
  } else {
@@ -201,12 +201,13 @@ export default class ColumnSettingTable extends React.Component {
201
201
  ...scroll,
202
202
  x: restProps.overScrollX || this.getTableScrollXWidth(showCol)
203
203
  },
204
- summary: showSummary,
204
+ ...(
205
+ showSummary ? { summary: showSummary } : {}
206
+ )
205
207
  }
206
208
  return (
207
- <div>
208
- <div style={{ overflow: 'hidden', padding: '0 8px 10px 0' }}>
209
- <span style={{ float: 'right' }} className="ant-dropdown-link">
209
+ <div style={{ position: 'relative' }}>
210
+ <span style={{ position: 'absolute', zIndex: '10', right: '8px', top: '1px' }} className="ant-dropdown-link">
210
211
  <ColumnSetting
211
212
  setShowColumns={this.setShowColumns}
212
213
  showColumns={this.state.showColumns}
@@ -216,9 +217,9 @@ export default class ColumnSettingTable extends React.Component {
216
217
  appRequestConfig={appRequestConfig}
217
218
  />
218
219
  </span>
219
- </div>
220
220
  <Table
221
221
  columns={showCol}
222
+ border={true}
222
223
  components={{
223
224
  header: {
224
225
  cell: this.ResizeableTitle,
@@ -228,6 +229,35 @@ export default class ColumnSettingTable extends React.Component {
228
229
  ...otherTableInfo
229
230
  }
230
231
  />
232
+ {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
+ )}
231
261
  </div >
232
262
  )
233
263
  }
@@ -156,7 +156,7 @@ export default class ColumnSettingSulaTable extends React.Component {
156
156
  ...restProps,
157
157
  };
158
158
  let showSummary = null;
159
- if (this.state.showColumns.length) {
159
+ if (this.state.showColumns.length && !Array.isArray(summary)) {
160
160
  if (summary && summary().diy) {
161
161
  showSummary = this.getTableSummaryInfo();
162
162
  } else {
@@ -197,12 +197,13 @@ export default class ColumnSettingSulaTable extends React.Component {
197
197
  ...scroll,
198
198
  x: restProps.overScrollX || this.getTableScrollXWidth(showCol)
199
199
  },
200
- summary: showSummary,
200
+ ...(
201
+ showSummary ? { summary: showSummary } : {}
202
+ )
201
203
  }
202
204
  return (
203
- <div>
204
- <div style={{ overflow: 'hidden', padding: '0 8px 10px 0' }}>
205
- <span style={{ float: 'right' }} className="ant-dropdown-link">
205
+ <div style={{ position: 'relative' }}>
206
+ <span style={{ position: 'absolute', zIndex: '10', right: '8px', top: '10px' }} className="ant-dropdown-link">
206
207
  <ColumnSetting
207
208
  setShowColumns={this.setShowColumns}
208
209
  showColumns={this.state.showColumns}
@@ -211,10 +212,9 @@ export default class ColumnSettingSulaTable extends React.Component {
211
212
  appRequestConfig={appRequestConfig}
212
213
  />
213
214
  </span>
214
- </div>
215
215
  <SulaTable
216
216
  ref={this.sulaTableRef}
217
- style={style}
217
+ border={true}
218
218
  columns={showCol}
219
219
  components={{
220
220
  header: {
@@ -225,6 +225,35 @@ export default class ColumnSettingSulaTable extends React.Component {
225
225
  ...otherTableInfo
226
226
  }
227
227
  />
228
+ {Array.isArray(summary) && (
229
+ <>
230
+ <div
231
+ className='table-bssula-summary'
232
+ style={{
233
+ right: '20%',
234
+ bottom: 0,
235
+ whiteSpace: 'nowrap',
236
+ overflowX: 'auto',
237
+ }}
238
+ >
239
+ {summary.map(item => (
240
+ <Text type='danger'>
241
+ {item.label}: <span className='table-bssula-summary-count'>{item.count || 0}</span>
242
+ </Text>
243
+ ))}
244
+ </div>
245
+ <div style={{
246
+ width: '16px',
247
+ height: '26px',
248
+ opacity: 0.32,
249
+ transform: 'scaleX(-1)',
250
+ backgroundImage:'linear-gradient(270deg, #ffffff00 0%, #A4A4A4 100%)',
251
+ right: '20%',
252
+ position: 'absolute',
253
+ bottom: 0,
254
+ }}></div>
255
+ </>
256
+ )}
228
257
  </div >
229
258
  )
230
259
  }
@@ -1,10 +1,6 @@
1
1
  import React, { useState } from 'react';
2
2
  import { Typography } from 'antd';
3
- import { createFromIconfontCN } from '@ant-design/icons';
4
-
5
- const IconFont = createFromIconfontCN({
6
- scriptUrl: '//at.alicdn.com/t/c/font_4645959_8nhs21v6bnp.js',
7
- });
3
+ import copyImg from '../../../assets/copyImg.svg';
8
4
 
9
5
  const { Paragraph } = Typography;
10
6
 
@@ -34,7 +30,7 @@ const ParagraphCopier = (props: ParagraphCopierProps) => {
34
30
  // 拷贝选项,包含图标和提示信息
35
31
  const copyableOptions = {
36
32
  text: text,
37
- icon: <IconFont type="icon-qyhtfuzhi" style={{ fontSize: '14px' }} />,
33
+ icon: <img src={copyImg} />,
38
34
  tooltips: ['点击复制', '复制成功'],
39
35
  };
40
36
 
@@ -1,3 +1,6 @@
1
+ @border-color: #d9d9d9;
2
+ @primary-color-hover: #005cff;
3
+
1
4
  .query_input {
2
5
  &_show {
3
6
  display: flex;
@@ -5,33 +8,62 @@
5
8
 
6
9
  &_expand_button {
7
10
  position: relative;
11
+ right: -11px;
8
12
  width: 30px;
9
- color: #ffffff;
13
+ border-left: 1px solid @border-color;
14
+ height: 24px;
10
15
  cursor: pointer;
11
-
12
- span {
13
- position: absolute;
14
- height: 20px;
15
- line-height: 14px;
16
- left: 50%;
17
- top: 50%;
18
- transform: translate(-50%, -50%);
19
- }
16
+ font-size: 12px;
17
+ text-align: center;
18
+ line-height: normal;
19
+ }
20
+ &_expand_button:hover {
21
+ background-color: @primary-color-hover;
22
+ color: #fff;
20
23
  }
21
24
 
22
25
  &_wrapper {
23
- display: flex;
24
-
25
- &_left {
26
- width: 100px;
27
- }
28
-
29
- &_right {
30
- color: #9e9e9e;
26
+ &_top {
27
+ color: #8E8E8E;
31
28
  }
32
29
  }
33
30
 
34
31
  &_textArea {
35
- margin-top: 15px;
32
+ margin-top: 10px;
33
+ .ant-input {
34
+ height: 300px;
35
+ background: #FAFAFA;
36
+ border: 0.8px solid #E0E0E0;
37
+ resize: none;
38
+ border-radius: 0;
39
+ }
36
40
  }
37
41
  }
42
+
43
+ .multiInput_modal{
44
+ .ant-modal-header{
45
+ height: 32px;
46
+ padding: 0 16px;
47
+ font-size: 12px;
48
+ }
49
+ .ant-modal-title{
50
+ line-height: 32px;
51
+ }
52
+ .ant-modal-close-x{
53
+ width: 32px;
54
+ height: 32px;
55
+ line-height: 32px;
56
+ }
57
+ .ant-modal-footer{
58
+ padding-right: 8px;
59
+ height: 44px;
60
+ .ant-btn + .ant-btn:not(.ant-dropdown-trigger) {
61
+ margin-left: 6px;
62
+ }
63
+ .ant-btn {
64
+ width: 56px;
65
+ height: 28px;
66
+ font-weight: 500;
67
+ }
68
+ }
69
+ }
@@ -8,7 +8,7 @@
8
8
  // @ts-nocheck
9
9
  import React, { useState, useEffect } from 'react';
10
10
  import { useDebounceFn } from 'ahooks';
11
- import { Input, Button, Modal } from 'antd';
11
+ import { Input, Button, Modal, ConfigProvider } from 'antd';
12
12
  import './index.less';
13
13
 
14
14
  const QueryMutipleInput = ({ onValueChange,onPressEnter }) => {
@@ -31,6 +31,8 @@ const QueryMutipleInput = ({ onValueChange,onPressEnter }) => {
31
31
 
32
32
  const showModal = () => {
33
33
  setIsModalVisible(true);
34
+ //弹窗打开时 默认搜索内容换行显示
35
+ setPopValue(data => data.replace(/,/g, '\n'));
34
36
  };
35
37
 
36
38
  const handleOk = () => {
@@ -72,11 +74,11 @@ const QueryMutipleInput = ({ onValueChange,onPressEnter }) => {
72
74
  formaData(e.clipboardData.getData('text'));
73
75
  e.preventDefault();
74
76
  }}
75
- style={{ width: 'calc(100% - 30px)' }}
77
+ style={{ width: 'calc(100%)' }}
78
+ suffix={<div className="query_input_expand_button" onClick={showModal}>...</div>}
76
79
  placeholder="请输入(查询多个值请用 ; 或 , 分割)"
77
80
  onPressEnter={()=>onPressEnter?.()}
78
81
  />
79
- <Button style={{width: '30px', padding: '2px', height: 'auto'}} onClick={showModal} type="primary">...</Button>
80
82
  </div>
81
83
  <Modal
82
84
  width={600}
@@ -84,29 +86,33 @@ const QueryMutipleInput = ({ onValueChange,onPressEnter }) => {
84
86
  visible={isModalVisible}
85
87
  onOk={handleOk}
86
88
  onCancel={handleCancel}
89
+ className='multiInput_modal'
90
+ bodyStyle={{
91
+ padding: '10px 16px'
92
+ }}
87
93
  footer={[
88
- <Button key="back" onClick={handleCancel}>
89
- 取消
90
- </Button>,
91
- <Button key="submit" type="primary" onClick={handleOk}>
92
- 录入
93
- </Button>,
94
+ <ConfigProvider autoInsertSpaceInButton = { false }>
95
+ <Button key="back" onClick={handleCancel} autoI>
96
+ 取消
97
+ </Button>
98
+ </ConfigProvider>,
99
+ <ConfigProvider autoInsertSpaceInButton = { false }>
100
+ <Button key="submit" type="primary" onClick={handleOk}>
101
+ 录入
102
+ </Button>
103
+ </ConfigProvider>,
94
104
  ]}
95
105
  >
96
106
  <div className={'query_input_wrapper'}>
97
- <div className={'query_input_wrapper_left'}>录入区:</div>
98
- <div className={'query_input_wrapper_right'}>
99
- <div>
100
- 如需同时使用多个值进行查询,请使用逗号、分号、空格或换行进行值的分隔,中英文格式的符号均支持
101
- </div>
102
- <div className={'query_input_textArea'}>
103
- <Input.TextArea
104
- value={popvalue}
105
- onChange={onChange}
106
- rows={6}
107
- showCount
108
- />
109
- </div>
107
+ <div className={'query_input_wrapper_top'}>如需同时使用多个值进行查询,请使用逗号,分号、空格或换行进行值的分割,中英文格式的符号均支持</div>
108
+ <div className={'query_input_textArea'}>
109
+ <Input.TextArea
110
+ placeholder='在此录入...'
111
+ value={popvalue}
112
+ onChange={onChange}
113
+ rows={12}
114
+ showCount={false}
115
+ />
110
116
  </div>
111
117
  </div>
112
118
  </Modal>