kts-components-document-access-point 2.0.0 → 2.0.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 (22) hide show
  1. package/dist/DocumentsList/DocumentsListController/DocumentsListControllerState/index.d.ts +4 -0
  2. package/dist/index.esm.js +540 -476
  3. package/dist/index.js +592 -528
  4. package/package.json +4 -4
  5. package/src/DocumentWhiteList/control/actions/blacklist/index.ts +3 -0
  6. package/src/DocumentWhiteList/control/actions/checkclient/index.ts +4 -1
  7. package/src/DocumentWhiteList/control/actions/didilist/index.ts +3 -0
  8. package/src/DocumentWhiteList/control/actions/enableblacklist/index.ts +3 -0
  9. package/src/DocumentWhiteList/control/actions/enablelist/index.ts +3 -0
  10. package/src/DocumentWhiteList/control/actions/enablewhitelist/index.ts +3 -0
  11. package/src/DocumentWhiteList/control/actions/synclist/index.ts +3 -0
  12. package/src/DocumentWhiteList/control/actions/whitelist/index.ts +3 -0
  13. package/src/DocumentWhiteList/ui/pageheader/BlackHeader.tsx +87 -10
  14. package/src/DocumentWhiteList/ui/pageheader/WhiteHeader.tsx +89 -9
  15. package/src/DocumentsEdit/ui/EditRule/ui/RuleForm/fn/algorithmFormComponent/index.tsx +1 -1
  16. package/src/DocumentsList/DocumentsListController/DocumentsListControllerState/index.ts +4 -0
  17. package/src/DocumentsList/ui/PageHeader/SendHeader.tsx +107 -168
  18. package/src/DocumentsList/ui/PageHeader/index.tsx +150 -213
  19. package/src/DocumentsList/ui/RuleTable/index.tsx +7 -3
  20. package/dist/DocumentWhiteList/ui/UnifiedSearch/index.d.ts +0 -11
  21. package/src/DocumentWhiteList/ui/UnifiedSearch/index.scss +0 -119
  22. package/src/DocumentWhiteList/ui/UnifiedSearch/index.tsx +0 -146
@@ -1,21 +1,19 @@
1
1
  import React, { useRef, useState, useEffect, useMemo, useCallback } from 'react';
2
2
  import { Radio, Button, Dropdown, PageHeaderFoot } from 'kts-xui';
3
3
  import { Menu } from 'kts-components-antd-x4';
4
- import { KtsForm } from 'kts-components';
5
- import { LifeCycleTypes } from '@formily/antd';
4
+ import { Search as SearchXui, searchUnFormat, ISearchItemProps } from 'kts-xui';
5
+ import { Select as SearchSelect } from 'kts-xui';
6
+ import { Select, DatePicker, Radio as AntRadio, Checkbox } from 'antd';
6
7
  import Main from '../../';
7
8
  import ModalComfirm from '../ModalComfirm'
8
9
  import { DocumentsService } from "../../../";
9
10
  import _ from 'lodash';
10
11
  import { useHistory } from 'react-router-dom';
11
12
  import moment from 'moment';
12
- import { Search as SearchXui, searchFormat, searchUnFormat, ISearchItemProps } from 'kts-xui';
13
- import { Select as SearchSelect, DatePicker } from 'kts-xui';
14
- import { Select } from 'antd';
15
- const { SubMenu } = Menu;
16
- const { Option } = Select;
17
13
  const { RangePicker } = DatePicker;
18
-
14
+ const { Group: RadioGroup } = AntRadio;
15
+ const { Group: CheckboxGroup } = Checkbox;
16
+ const { SubMenu } = Menu;
19
17
  export default () => {
20
18
  const history = useHistory();
21
19
  const controller = Main.useController();
@@ -24,17 +22,90 @@ export default () => {
24
22
  const selectedRowKey = controller.useMemo(s => s.selectedRowKey, [])
25
23
  const params = controller.useMemo(s => s.params, [])
26
24
  const visible = controller.useMemo(s => s.visible, []);
27
- const [profileEnum, setProfile] = useState([]);
25
+ const [profileEnum, setProfileEnum] = useState<any[]>([]);
28
26
  const ktsRef = useRef(null);
29
27
  const [didlist, setDidList] = useState([]);//我司对应DID
28
+ useEffect(() => {
29
+ (async () => {
30
+ const res = await DocumentsService.instance.service?.call({ url: '/participant/listBySubjectId', data: {}, type: 'get' }) as any;
31
+ if(!res){
32
+ return false;
33
+ }
34
+ if (res.res) {
35
+ setDidList(res.res);
36
+ }
37
+ })()
38
+ }, []);
39
+ useEffect(() => {
40
+ (async () => {
41
+ const res = await DocumentsService.instance.service?.call({ url: '/schema/config/getDefaultTypeList', data: {}, type: 'get' }) as any;
42
+ if(!res){
43
+ return false;
44
+ }
45
+ if (res.err) {
46
+ return false;
47
+ } else {
48
+ const list = res.res.map((item: any) => {
49
+ return { ...item, label: item.name, value: item.value }
50
+ })
51
+ setBill(list);
52
+ }
53
+ })()
54
+ }, []);
55
+ const onSearchFormSubmit = React.useCallback((value) => {
56
+ value = {
57
+ ...value,
58
+ typeList: value['typeList'] && [value['typeList']],
59
+ beginCreateTime: value['beginCreateTime'] && moment(value['beginCreateTime']).format('YYYY-MM-DD 00:00:00'),
60
+ endCreateTime: value['endCreateTime'] && moment(value['endCreateTime']).format('YYYY-MM-DD 23:59:59'),
61
+ beginSendTime: value['beginSendTime'] && moment(value['beginSendTime']).format('YYYY-MM-DD 00:00:00'),
62
+ endSendTime: value['endSendTime'] && moment(value['endSendTime']).format('YYYY-MM-DD 23:59:59'),
63
+ pageNum: 1,
64
+ pageSize: 10
65
+ }
66
+ controller.pipeline(async s => {
67
+ s.params = value;
68
+ })()
69
+ }, [controller])
30
70
 
71
+ // 处理单据大类变化
72
+ const handleTypeChange = useCallback((value: any) => {
73
+ const target: any = billEnum.find((item: any) => item.value === value);
74
+ const newProfileEnum = target?.profileList?.map((item: any) => ({
75
+ label: item.name,
76
+ value: item.value,
77
+ })) || [];
78
+ setProfileEnum(newProfileEnum);
79
+ form?.setFieldsValue({ profile: undefined });
80
+ }, [billEnum, controller]);
81
+
82
+ const switchType = React.useCallback((e) => {
83
+ controller.pipeline(async s => {
84
+ s.type = e.target.value;
85
+ s.params = { pageNum: 1, pageSize: 10 }
86
+ history.push({ pathname: '/rulelist', state: { type: e.target.value } })
87
+ })()
88
+ // 切换类型时也清空单据子类的值并重新创建表单
89
+ setProfileEnum([]);
90
+ }, [])
91
+ const handleCancel = React.useCallback(() => {
92
+ controller.pipeline(async s => {
93
+ s.visible = false;
94
+ })()
95
+ }, []);
96
+ const batchSend = React.useCallback(() => {
97
+ controller.pipeline(async s => {
98
+ s.visible = true;
99
+ })()
100
+ }, [controller]);
31
101
  // 动态生成 formItems
32
102
  const formItems: ISearchItemProps[] = useMemo(() => {
33
- const items: ISearchItemProps[] = [];
34
103
  const didEnum = didlist.map((item: any) => {
35
104
  return { label: item.remarkName + ':' + item.participantId, value: item.participantId };
36
105
  });
37
106
 
107
+ const items: ISearchItemProps[] = [];
108
+
38
109
  if (type === 1) {
39
110
  // 配置名称
40
111
  items.push({
@@ -48,28 +119,22 @@ export default () => {
48
119
  name: "type",
49
120
  label: "单据大类",
50
121
  children: (
51
- <SearchSelect className="underline" allowClear={true}>
52
- {billEnum.map((item: any) => (
53
- <Option key={item.value} value={item.value}>
54
- {item.label}
55
- </Option>
56
- ))}
57
- </SearchSelect>
122
+ <SearchSelect className={"underline"} allowClear onChange={handleTypeChange} options={billEnum} />
58
123
  ),
59
124
  });
60
125
 
61
126
  // 单据子类
62
127
  items.push({
63
- name: "profile",
64
- label: "单据子类",
128
+ name: 'profile',
129
+ label: '单据子类',
130
+ hidden: profileEnum.length === 0,
65
131
  children: (
66
- <SearchSelect className="underline" allowClear={true}>
67
- {profileEnum.map((item: any) => (
68
- <Option key={item.value} value={item.value}>
69
- {item.name}
70
- </Option>
71
- ))}
72
- </SearchSelect>
132
+ <SearchSelect
133
+ key={`profile-${params?.type || 'none'}`}
134
+ className={"underline"}
135
+ allowClear
136
+ options={profileEnum}
137
+ />
73
138
  ),
74
139
  });
75
140
 
@@ -78,10 +143,12 @@ export default () => {
78
143
  name: "attributionList",
79
144
  label: "收发角色",
80
145
  children: (
81
- <SearchSelect className="underline" allowClear={true} mode="multiple">
82
- <Option value={1}>发送方</Option>
83
- <Option value={2}>接收方</Option>
84
- </SearchSelect>
146
+ <CheckboxGroup
147
+ options={[
148
+ { label: "发送方", value: 1 },
149
+ { label: "接收方", value: 2 }
150
+ ]}
151
+ />
85
152
  ),
86
153
  });
87
154
 
@@ -89,28 +156,14 @@ export default () => {
89
156
  items.push({
90
157
  name: "createTime",
91
158
  label: "创建时间",
92
- children: (
93
- <RangePicker
94
- style={{ width: "100%" }}
95
- format="YYYY-MM-DD"
96
- placeholder={["开始时间", "结束时间"]}
97
- className="underline-datepicker"
98
- />
99
- ),
159
+ children: <RangePicker className={"underline-datepicker"} />,
100
160
  });
101
161
 
102
162
  // 更新时间
103
163
  items.push({
104
164
  name: "sendTime",
105
165
  label: "更新时间",
106
- children: (
107
- <RangePicker
108
- style={{ width: "100%" }}
109
- format="YYYY-MM-DD"
110
- placeholder={["开始时间", "结束时间"]}
111
- className="underline-datepicker"
112
- />
113
- ),
166
+ children: <RangePicker className={"underline-datepicker"} />,
114
167
  });
115
168
  } else if (type === 2) {
116
169
  // 配置名称
@@ -125,11 +178,15 @@ export default () => {
125
178
  name: "effectStatus",
126
179
  label: "使用标识",
127
180
  children: (
128
- <SearchSelect className="underline" allowClear={true}>
129
- <Option value={0}>已失效</Option>
130
- <Option value={1}>使用中</Option>
131
- </SearchSelect>
181
+ <RadioGroup>
182
+ <AntRadio value={0}>已失效</AntRadio>
183
+ <AntRadio value={1}>使用中</AntRadio>
184
+ </RadioGroup>
132
185
  ),
186
+ // options: [
187
+ // { label: '已失效', value: 0 },
188
+ // { label: '使用中', value: 1 },
189
+ // ],
133
190
  });
134
191
 
135
192
  // 我的收发角色
@@ -137,11 +194,15 @@ export default () => {
137
194
  name: "attribution",
138
195
  label: "我的收发角色",
139
196
  children: (
140
- <SearchSelect className="underline" allowClear={true}>
141
- <Option value={1}>发送方</Option>
142
- <Option value={2}>接收方</Option>
143
- </SearchSelect>
197
+ <RadioGroup>
198
+ <AntRadio value={1}>发送方</AntRadio>
199
+ <AntRadio value={2}>接收方</AntRadio>
200
+ </RadioGroup>
144
201
  ),
202
+ // options: [
203
+ // { label: '发送方', value: 1 },
204
+ // { label: '接收方', value: 2 },
205
+ // ],
145
206
  });
146
207
 
147
208
  // 我司对应DID
@@ -149,13 +210,7 @@ export default () => {
149
210
  name: "senderParticipantId",
150
211
  label: "我司对应DID",
151
212
  children: (
152
- <SearchSelect className="underline" allowClear={true}>
153
- {didEnum.map((item: any) => (
154
- <Option key={item.value} value={item.value}>
155
- {item.label}
156
- </Option>
157
- ))}
158
- </SearchSelect>
213
+ <SearchSelect className="underline" allowClear options={didEnum} />
159
214
  ),
160
215
  });
161
216
 
@@ -178,28 +233,21 @@ export default () => {
178
233
  name: "type",
179
234
  label: "单据大类",
180
235
  children: (
181
- <SearchSelect className="underline" allowClear={true}>
182
- {billEnum.map((item: any) => (
183
- <Option key={item.value} value={item.value}>
184
- {item.label}
185
- </Option>
186
- ))}
187
- </SearchSelect>
236
+ <SearchSelect className={"underline"} allowClear onChange={handleTypeChange} options={billEnum} />
188
237
  ),
189
238
  });
190
239
 
191
240
  // 单据子类
192
241
  items.push({
193
- name: "profile",
194
- label: "单据子类",
242
+ name: 'profile',
243
+ label: '单据子类',
244
+ hidden: profileEnum.length === 0,
195
245
  children: (
196
- <SearchSelect className="underline" allowClear={true}>
197
- {profileEnum.map((item: any) => (
198
- <Option key={item.value} value={item.value}>
199
- {item.name}
200
- </Option>
201
- ))}
202
- </SearchSelect>
246
+ <SearchSelect
247
+ className={"underline"}
248
+ allowClear
249
+ options={profileEnum}
250
+ />
203
251
  ),
204
252
  });
205
253
 
@@ -207,159 +255,40 @@ export default () => {
207
255
  items.push({
208
256
  name: "createTime",
209
257
  label: "发布时间",
210
- children: (
211
- <RangePicker
212
- style={{ width: "100%" }}
213
- format="YYYY-MM-DD"
214
- placeholder={["开始时间", "结束时间"]}
215
- className="underline-datepicker"
216
- />
217
- ),
258
+ children: <RangePicker className={"underline-datepicker"} />,
218
259
  });
219
260
  }
220
261
 
221
262
  return items;
222
- }, [billEnum, type, profileEnum, didlist]);
223
-
224
- useEffect(() => {
225
- (async () => {
226
- const res = await DocumentsService.instance.service?.call({ url: '/participant/listBySubjectId', data: {}, type: 'get' }) as any;
227
- if (res.res) {
228
- setDidList(res.res);
229
- }
230
- })()
231
- }, []);
232
-
233
- // 处理单据子类的动态更新
234
- useEffect(() => {
235
- const selectedType = (params as any).type;
236
- if (selectedType) {
237
- const target: any = billEnum.find((item: any) => item.value === selectedType);
238
- if (target && target.profileList) {
239
- const list = target.profileList.map((item: any) => {
240
- return {
241
- label: item.name,
242
- value: item.value
243
- }
244
- })
245
- setProfile(list);
246
- } else {
247
- setProfile([])
248
- }
249
- } else {
250
- setProfile([])
251
- }
252
- }, [billEnum, params]);
253
-
254
- useEffect(() => {
255
- (async () => {
256
- const res = await DocumentsService.instance.service?.call({ url: '/schema/config/getDefaultTypeList', data: {}, type: 'get' }) as any;
257
- if (res.err) {
258
- return false;
259
- } else {
260
- const list = res.res.map((item: any) => {
261
- return { ...item, label: item.name, value: item.value }
262
- })
263
- setBill(list);
264
- }
265
- })()
266
- }, []);
267
- const onSearchFormSubmit = React.useCallback((value) => {
268
- value = {
269
- ...value,
270
- typeList: value['typeList'] && [value['typeList']],
271
- beginCreateTime: value['beginCreateTime'] && moment(value['beginCreateTime']).format('YYYY-MM-DD 00:00:00'),
272
- endCreateTime: value['endCreateTime'] && moment(value['endCreateTime']).format('YYYY-MM-DD 23:59:59'),
273
- beginSendTime: value['beginSendTime'] && moment(value['beginSendTime']).format('YYYY-MM-DD 00:00:00'),
274
- endSendTime: value['endSendTime'] && moment(value['endSendTime']).format('YYYY-MM-DD 23:59:59'),
275
- pageNum: 1,
276
- pageSize: 10
277
- }
278
- controller.pipeline(async s => {
279
- s.params = value;
280
- })()
281
- }, [controller])
282
-
263
+ }, [billEnum, type, didlist, profileEnum]);
264
+ const onCreateType = useCallback((category, record?) => {
265
+ history.push({ pathname: `/rule`, search: `?type=config&profile=${record && record.value || ''}&billtype=${category}` })
266
+ }, [])
283
267
  // 创建搜索组件
284
- const { search, setSearchValues } = SearchXui.useCreate({
268
+ const { search, inventory, form } = SearchXui.useCreate({
285
269
  labelCol: 9,
286
270
  onSubmit: (e) => {
287
- const processedValues = {
288
- ...e,
289
- beginCreateTime: e.createTime && e.createTime[0] ? e.createTime[0].format('YYYY-MM-DD 00:00:00') : undefined,
290
- endCreateTime: e.createTime && e.createTime[1] ? e.createTime[1].format('YYYY-MM-DD 23:59:59') : undefined,
291
- beginSendTime: e.sendTime && e.sendTime[0] ? e.sendTime[0].format('YYYY-MM-DD 00:00:00') : undefined,
292
- endSendTime: e.sendTime && e.sendTime[1] ? e.sendTime[1].format('YYYY-MM-DD 23:59:59') : undefined,
293
- pageNum: 1,
294
- pageSize: 10
295
- };
296
- // 移除原始的日期字段
297
- delete processedValues.createTime;
298
- delete processedValues.sendTime;
299
- onSearchFormSubmit(processedValues);
271
+ onSearchFormSubmit(e);
300
272
  },
301
273
  values: React.useMemo(() => {
302
- // 转换搜索值格式
303
- const convertedValues = { ...params } as any;
304
- const paramsAny = params as any;
305
- if (paramsAny.beginCreateTime && paramsAny.endCreateTime) {
306
- convertedValues.createTime = [paramsAny.beginCreateTime, paramsAny.endCreateTime];
307
- }
308
- if (paramsAny.beginSendTime && paramsAny.endSendTime) {
309
- convertedValues.sendTime = [paramsAny.beginSendTime, paramsAny.endSendTime];
310
- }
311
- return searchUnFormat(convertedValues, formItems);
312
- }, [params, formItems]),
274
+ return searchUnFormat(params, formItems);
275
+ }, [params, formItems]),
313
276
  formItems,
314
277
  });
315
278
 
316
- useEffect(() => {
317
- const convertedValues = { ...params } as any;
318
- const paramsAny = params as any;
319
- if (paramsAny.beginCreateTime && paramsAny.endCreateTime) {
320
- convertedValues.createTime = [paramsAny.beginCreateTime, paramsAny.endCreateTime];
321
- }
322
- if (paramsAny.beginSendTime && paramsAny.endSendTime) {
323
- convertedValues.sendTime = [paramsAny.beginSendTime, paramsAny.endSendTime];
324
- }
325
- setSearchValues(searchUnFormat(convertedValues, formItems));
326
- }, [formItems, params, setSearchValues]);
327
-
328
- const switchType = React.useCallback((e) => {
329
- controller.pipeline(async s => {
330
- s.type = e.target.value;
331
- s.params = { pageNum: 1, pageSize: 10 }
332
- history.push({ pathname: '/rulelist', state: { type: e.target.value } })
333
- })()
334
- }, [])
335
- const handleCancel = React.useCallback(() => {
336
- controller.pipeline(async s => {
337
- s.visible = false;
338
- })()
339
- }, []);
340
- const batchSend = React.useCallback(() => {
341
- controller.pipeline(async s => {
342
- s.visible = true;
343
- })()
344
- }, [controller]);
345
- const onCreateType = useCallback((category, record?) => {
346
- history.push({ pathname: `/rule`, search: `?type=config&profile=${record && record.value || ''}&billtype=${category}` })
347
- }, [])
348
279
  const topExpand = useCallback(() => {
349
280
  return (
350
- <div style={{ display: 'flex' }}>
351
- <div style={{ marginRight: 10 }}>
352
- <Radio.Group value={type} onChange={switchType}>
353
- <Radio.Button value={1} style={{whiteSpace:'nowrap'}}>单据校验规则配置</Radio.Button>
354
- <Radio.Button value={2} style={{whiteSpace:'nowrap'}}>发布记录</Radio.Button>
355
- </Radio.Group>
356
- </div>
357
- <div style={{ flex: 1 }}>
358
- {search}
281
+ <div style={{ width: "100%" }}>
282
+ <div className={'unifiedSearch'}>
283
+ <div style={{ display: "flex", alignItems: "flex-start", gap: "16px", padding: '10px 0px' }}>
284
+ <div style={{ flex: 1 }}>{search}</div>
285
+ </div>
286
+ {/* 搜索条件标签 */}
287
+ {inventory}
359
288
  </div>
360
289
  </div>
361
290
  );
362
- }, [type, search]);
291
+ }, [type, search, inventory]);
363
292
  const menu = useMemo(() => {
364
293
  return (
365
294
  <Menu>
@@ -394,6 +323,13 @@ export default () => {
394
323
  </Menu>);
395
324
  }, [billEnum]);
396
325
  return (
326
+ <>
327
+ <div style={{padding:"16px 20px", borderBottom: "1px solid rgb(240, 240, 240)" }}>
328
+ <Radio.Group value={type} onChange={switchType}>
329
+ <Radio.Button value={1} style={{whiteSpace:'nowrap'}}>单据校验规则配置</Radio.Button>
330
+ <Radio.Button value={2} style={{whiteSpace:'nowrap'}}>发布记录</Radio.Button>
331
+ </Radio.Group>
332
+ </div>
397
333
  <div style={{ flex: 'none', position: 'relative', zIndex: 1 }}>
398
334
  <PageHeaderFoot
399
335
  expandLeft={topExpand()}
@@ -409,5 +345,6 @@ export default () => {
409
345
  visible && <ModalComfirm handleCancel={handleCancel} list={selectedRowKey} />
410
346
  }
411
347
  </div>
348
+ </>
412
349
  );
413
350
  };
@@ -22,7 +22,9 @@ export default function validaterule(props: any) {
22
22
  const res = await DocumentsService.instance.service?.call({
23
23
  url: '/schema/config/queryConfigSchemaPage', data: params, type: 'post'
24
24
  }) as any;
25
-
25
+ if(!res){
26
+ return false;
27
+ }
26
28
  if (res.err) {
27
29
  return false;
28
30
  }
@@ -33,9 +35,11 @@ export default function validaterule(props: any) {
33
35
  })()
34
36
  }, [params]);
35
37
  useEffect(() => {
36
- (async () => {
37
-
38
+ (async () => {
38
39
  const res = await DocumentsService.instance.service?.call({ url: '/schema/config/getDefaultTypeList', data: {}, type: 'get' }) as any;
40
+ if(!res){
41
+ return false;
42
+ }
39
43
  if (res.err) {
40
44
  return false;
41
45
  } else {
@@ -1,11 +0,0 @@
1
- import * as React from "react";
2
- interface UnifiedSearchProps {
3
- searchFormSubmit: (values: any) => void;
4
- searchValues: any;
5
- right?: any;
6
- onRefresh?: () => void;
7
- didlist?: any[];
8
- labelCol?: number;
9
- }
10
- export default function UnifiedSearch(props: UnifiedSearchProps): React.JSX.Element;
11
- export {};
@@ -1,119 +0,0 @@
1
- // UnifiedSearch 组件样式 - 控件只有下边框
2
- .unifiedSearch {
3
- :global(.ktsAntX-xui-page-header-foot){
4
- box-shadow: none !important;
5
- }
6
- :global(.ktsAntX-xui-page-header-foot::after) {
7
- box-shadow: none !important;
8
- }
9
- :global(.ktsAntX-xui-page-header-foot .ktsAntX-xui-page-header-operate) {
10
- border: none !important;
11
- }
12
- :global(.ktsAntX-xui-page-header-operate){
13
- padding: 0px !important;
14
- }
15
- }
16
-
17
- // 按钮容器样式
18
- .btnBox {
19
- display: flex;
20
- flex-direction: row;
21
- align-items: flex-start;
22
- justify-content: flex-end;
23
- flex: 1;
24
- margin-top: 13px;
25
- .btn {
26
- height:30px;
27
- line-height: 30px;
28
- background-color:rgba(0,116,255,1);
29
- border-radius:15px;
30
- border:1px solid rgba(0,116,255,1);
31
- font-size:12px;
32
- color: #FFFFFF;
33
- padding: 0px 28px;
34
- cursor: pointer;
35
- margin-left: 10px;
36
- word-break: keep-all;
37
- }
38
- .moreBtn {
39
- height:30px;
40
- line-height: 30px;
41
- background-color: #ffffff;
42
- border-radius:15px;
43
- border:1px solid #0074FF;
44
- font-size:12px;
45
- color: #0074FF;
46
- padding: 0px 28px;
47
- cursor: pointer;
48
- margin-left: 10px;
49
- word-break: keep-all;
50
- }
51
- .moreBtn:hover {
52
- background-color: rgba(0, 116, 255, 0.2);
53
- }
54
- .refreshBtn {
55
- padding: 0 18px;
56
- justify-content: center;
57
- align-items: center;
58
- display: inline-flex;
59
- .refreshIcon {
60
- height: 18px;
61
- width: 18px;
62
- }
63
- }
64
- }
65
-
66
- // 全局样式 - 所有输入框只显示下边框
67
- :global(.underline-datepicker) {
68
- :global(.ant-input){
69
- border: none !important;
70
- border-bottom: 1px solid #d9d9d9 !important;
71
- }
72
- }
73
- :global(.underline){
74
- :global(.ktsAntX-select-selector){
75
- border: none !important;
76
- border-bottom: 1px solid #d9d9d9 !important;
77
- }
78
- }
79
- // kts-xui 组件全局样式覆盖 - 只显示下边框
80
- :global(.ktsAntX-xui-input .ant-input) {
81
- border: none !important;
82
- border-bottom: 1px solid #d9d9d9 !important;
83
- border-radius: 0 !important;
84
- box-shadow: none !important;
85
- background: transparent !important;
86
- outline: none !important;
87
- }
88
-
89
- :global(.ktsAntX-xui-input .ant-input:focus),
90
- :global(.ktsAntX-xui-input .ant-input:hover) {
91
- border-bottom: 1px solid #40a9ff !important;
92
- box-shadow: none !important;
93
- }
94
-
95
- :global(.ktsAntX-xui-input .ant-input:focus) {
96
- border-bottom: 1px solid #1890ff !important;
97
- }
98
-
99
- :global(.ktsAntX-xui-select .ant-select-selector) {
100
- border: none !important;
101
- border-bottom: 1px solid #d9d9d9 !important;
102
- border-radius: 0 !important;
103
- box-shadow: none !important;
104
- background: transparent !important;
105
- outline: none !important;
106
- }
107
-
108
- :global(.ktsAntX-xui-select .ant-select-selector:hover) {
109
- border-bottom: 1px solid #40a9ff !important;
110
- }
111
-
112
- :global(.ktsAntX-xui-select.ant-select-focused .ant-select-selector) {
113
- border-bottom: 1px solid #1890ff !important;
114
- box-shadow: none !important;
115
- }
116
-
117
- :global(.ktsAntX-xui-select .ant-select-arrow) {
118
- color: #666;
119
- }