vue2-client 1.16.47 → 1.16.49

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/.history/src/base-client/components/common/XDataCard/XDataCard_20250926145434.vue +641 -0
  2. package/.history/src/base-client/components/common/XDataCard/XDataCard_20250926145453.vue +641 -0
  3. package/.history/src/base-client/components/common/XDataCard/XDataCard_20250926145610.vue +647 -0
  4. package/.history/src/base-client/components/common/XDataCard/XDataCard_20250926145629.vue +647 -0
  5. package/.history/src/base-client/components/common/XDataCard/XDataCard_20250926145901.vue +645 -0
  6. package/.history/src/base-client/components/common/XDataCard/XDataCard_20250926145907.vue +651 -0
  7. package/.history/src/base-client/components/common/XDataCard/XDataCard_20250926145920.vue +651 -0
  8. package/.history/src/base-client/components/common/XDataCard/XDataCard_20250926150047.vue +651 -0
  9. package/.history/src/base-client/components/common/XDataCard/XDataCard_20250926151820.vue +646 -0
  10. package/.history/src/base-client/components/common/XDataCard/XDataCard_20250926151827.vue +646 -0
  11. package/.history/src/base-client/components/common/XDataCard/XDataCard_20250926152115.vue +646 -0
  12. package/.history/src/base-client/components/common/XDataCard/XDataCard_20250926152212.vue +653 -0
  13. package/.history/src/base-client/components/common/XDataCard/XDataCard_20250926152215.vue +653 -0
  14. package/.history/src/base-client/components/common/XDataCard/XDataCard_20250926152337.vue +657 -0
  15. package/.history/src/base-client/components/common/XDataCard/XDataCard_20250926152341.vue +657 -0
  16. package/.history/src/base-client/components/common/XDataCard/XDataCard_20250926152826.vue +657 -0
  17. package/.history/src/base-client/components/common/XDataCard/XDataCard_20250926152828.vue +646 -0
  18. package/.history/src/base-client/components/common/XDataCard/XDataCard_20250926153121.vue +654 -0
  19. package/.history/src/base-client/components/common/XDataCard/XDataCard_20250926153242.vue +654 -0
  20. package/.history/src/base-client/components/common/XDataCard/XDataCard_20250926153318.vue +646 -0
  21. package/.history/src/base-client/components/common/XDataCard/XDataCard_20250926153415.vue +646 -0
  22. package/.history/src/base-client/components/common/XDataCard/XDataCard_20250926153435.vue +655 -0
  23. package/.history/src/base-client/components/common/XDataCard/XDataCard_20250926153606.vue +655 -0
  24. package/.history/src/base-client/components/common/XDataCard/XDataCard_20250926153653.vue +655 -0
  25. package/package.json +112 -112
  26. package/src/base-client/components/common/HIS/HButtons/HButtons.vue +47 -45
  27. package/src/base-client/components/common/HIS/HFormGroup/HFormGroup.vue +120 -120
  28. package/src/base-client/components/common/HIS/HFormGroup/index.js +3 -3
  29. package/src/base-client/components/common/HIS/HFormTable/HFormTable.vue +257 -256
  30. package/src/base-client/components/common/HIS/demo.vue +61 -61
  31. package/src/base-client/components/common/XCollapse/XCollapse.vue +461 -461
  32. package/src/base-client/components/common/XDataCard/XDataCard.vue +44 -18
  33. package/src/base-client/components/common/XDataCard/test.vue +367 -0
  34. package/src/base-client/components/common/XInput/XInput.vue +147 -147
  35. package/src/base-client/components/common/XReportGrid/XReportTrGroup.vue +824 -824
  36. package/src/base-client/components/common/XTable/XTable.vue +1610 -1610
  37. package/src/base-client/components/common/XTimeline/XTimeline.vue +454 -454
  38. package/src/base-client/components/his/XHDescriptions/XHDescriptions.vue +6 -1
  39. package/src/base-client/components/his/XHisEditor/XHisEditor.vue +705 -705
  40. package/src/base-client/components/his/threeTestOrders/editor.vue +113 -113
  41. package/src/pages/WorkflowDetail/WorkFlowDemo3.vue +225 -203
  42. package/src/pages/userInfoDetailManage/ExceptionRecordQuery/index.vue +45 -45
  43. package/src/router/async/router.map.js +129 -129
  44. package/src/services/api/common.js +2 -0
@@ -0,0 +1,645 @@
1
+ <template>
2
+ <div>
3
+ <div v-if="render" class="XCard">
4
+ <template v-for="(card, itemIndex) in data">
5
+ <a-card
6
+ :key="'card' + itemIndex"
7
+ class="data-card"
8
+ :class="{ 'card-clicked': card.isClicked }"
9
+ :headStyle="{ backgroundColor: '#f9f9f9' }"
10
+ >
11
+ <div
12
+ v-if="config && card[config.ribbon]"
13
+ class="ribbon"
14
+ :style="{ backgroundColor: getRibbonColor(card[config.ribbonColor]) }">
15
+ {{ card[config.ribbon] }}
16
+ </div>
17
+ <!-- 自定义标题 -->
18
+ <template #title>
19
+ <div class="custom-title" @click="cardClick(card, 'cardclick', itemIndex)">
20
+ <a-tooltip placement="top">
21
+ <template #title>{{ card[config.id] }}</template>
22
+ <div class="title-id" v-if="card[config.id]">{{ card[config.id] }}</div>
23
+ </a-tooltip>
24
+ <div class="title-basic">
25
+ <div class="title-main">
26
+ <span class="title-name">{{ card[config.title] }}</span>
27
+ <span class="title-info">{{ card[config.title2] }}</span>
28
+ <span class="title-title3">{{ card[config.title3] }}</span>
29
+ </div>
30
+ <div class="additional-info" v-if="card[config.subtitle2] || card[config.subtitle3] || card[config.subtitle4]">
31
+ <a-tooltip placement="top" v-if="card[config.subtitle2]">
32
+ <template #title>{{ card[config.subtitle2] }}</template>
33
+ <span class="subtitle2">{{ card[config.subtitle2] }}</span>
34
+ </a-tooltip>
35
+ <a-tooltip placement="top" v-if="card[config.subtitle3]">
36
+ <template #title>{{ card[config.subtitle3] }}</template>
37
+ <span class="subtitle3">{{ card[config.subtitle3] }}</span>
38
+ </a-tooltip>
39
+ <span class="subtitle4" v-if="card[config.subtitle4]">{{ card[config.subtitle4] }}</span>
40
+ </div>
41
+ </div>
42
+ </div>
43
+ </template>
44
+ <!-- 主体 -->
45
+ <div class="body" v-if="card[config.text] || (config.content && config.content.length > 0)">
46
+ <div class="body-text" v-if="card[config.text]">
47
+ <a-tooltip :title="card[config.text]">
48
+ <span class="text-ellipsis">{{ card[config.text] }}</span>
49
+ </a-tooltip>
50
+ </div>
51
+ <template v-for="(item, bodyIndex) in config.content" v-if="bodyIndex < 6">
52
+ <div :key="'body' + bodyIndex" class="body-item">
53
+ <span class="body-item-label">{{ item.label }}:</span>
54
+ <template v-if="item.type === 'progress'">
55
+ <div class="progress">
56
+ <div class="progress-bar">
57
+ <div class="progress-done" :style="'width:' + card[item.key] * 100 + '%;backgroundColor: ' + determineRatioColor(card[item.key] * 100)"></div>
58
+ </div>
59
+ </div>
60
+ <a-progress :percent="card[item.key]" :stroke-color="{ '0%': '#108ee9', '100%': '#87d068' }" strokeWidth="10" :style="{ width: '95%' }" />
61
+ </template>
62
+ <template v-else-if="item.type === 'custom' && tableColumns">
63
+ <!-- 根据 tableColumns 显示自定义内容 -->
64
+ <span v-for="column in tableColumns" v-if="column.dataIndex === item.key" :key="column.dataIndex">
65
+ <template v-if="column.slotType === 'badge'">
66
+ <x-badge
67
+ :service-name="serviceName"
68
+ :env="env"
69
+ :dataCard="true"
70
+ :badge-key="column.slotKeyMap"
71
+ :value="card[item.key]" />
72
+ </template>
73
+ <template v-else>
74
+ <slot :name="column.slots.customRender">{{ card[item.key] }}</slot>
75
+ </template>
76
+ </span>
77
+ </template>
78
+ <template v-else>
79
+ <span class="body-item-value" style="float: right;">{{ card[item.key] }}</span>
80
+ </template>
81
+ </div>
82
+ <a-divider
83
+ v-if="bodyIndex !== config.content.length - 1"
84
+ dashed
85
+ :key="'body' + bodyIndex + 'after'"
86
+ class="body-split" />
87
+ </template>
88
+ </div>
89
+ <!-- 下方按钮 -->
90
+ <template #actions>
91
+ <div class="custom-actions" v-if="config && config.footer && config.footer.length > 0">
92
+ <template v-for="(item, footerIndex) in config.footer">
93
+ <div :key="'footer_' + footerIndex" class="footer-item" @click="clickFooter(card, item.emit, itemIndex)">
94
+ <a-icon :type="item.icon" class="footer-icon" />
95
+ <span>{{ item.label }}</span>
96
+ </div>
97
+ <a-divider
98
+ v-if="footerIndex !== config.footer.length - 1"
99
+ :key="'footer_' + footerIndex + 'after'"
100
+ type="vertical"
101
+ class="footer-item-split" />
102
+ </template>
103
+ </div>
104
+ </template>
105
+ </a-card>
106
+ </template>
107
+ </div>
108
+ <div v-else>
109
+ <a-skeleton />
110
+ </div>
111
+ <div v-if="this.showPagination">
112
+ <a-divider />
113
+ <a-pagination
114
+ v-model="pageNum"
115
+ style="float: right"
116
+ :total="total"
117
+ show-less-items
118
+ :page-size="pageSize"
119
+ :page-size-options="pageSizeOptions"
120
+ show-size-changer
121
+ @change="pageNumChange"
122
+ :showTotal="paginationShowTotal"
123
+ @showSizeChange="pageSizeChange">
124
+ </a-pagination>
125
+ </div>
126
+ </div>
127
+ </template>
128
+
129
+ <script>
130
+ import XBadge from '@vue2-client/base-client/components/common/XBadge'
131
+
132
+ export default {
133
+ name: 'XDataCard',
134
+ components: {
135
+ XBadge,
136
+ },
137
+ props: {
138
+ // 卡片数据更新方法
139
+ cardData: {
140
+ type: Function,
141
+ default: undefined
142
+ },
143
+ // 卡片的配置
144
+ cardConfig: {
145
+ type: Object,
146
+ default: undefined
147
+ },
148
+ showPagination: {
149
+ type: Boolean,
150
+ default: false
151
+ },
152
+ // 临时
153
+ testData: {
154
+ type: Array,
155
+ default: undefined
156
+ },
157
+ tableColumns: {
158
+ type: Array,
159
+ default: undefined
160
+ },
161
+ // 服务名称
162
+ serviceName: undefined,
163
+ // 当前环境
164
+ env: {
165
+ type: String,
166
+ default: 'prod'
167
+ },
168
+ // pageSize参数
169
+ prePageSize: {
170
+ type: Number,
171
+ default: undefined
172
+ },
173
+ // 初始是否加载数据
174
+ createdQuery: {
175
+ type: Boolean,
176
+ default: false
177
+ }
178
+ },
179
+ inject: ['getConfigByName'],
180
+ data () {
181
+ return {
182
+ // 配置
183
+ config: {},
184
+ // 数据
185
+ data: {},
186
+ // 当前页码
187
+ pageNum: 1,
188
+ // 控制渲染
189
+ render: true,
190
+ // 分页大小
191
+ pageSize: 10,
192
+ // 分页大小选项
193
+ pageSizeOptions: ['4', '6', '8', '10'],
194
+ // 数据总数
195
+ total: 0,
196
+ activeCardIndex: null, // 新增:记录当前激活的卡片索引
197
+ // 混入插槽组件的数据
198
+ mixinData: {},
199
+ }
200
+ },
201
+ created () {
202
+ // 根据参数初始化数据值
203
+ if (this.prePageSize) {
204
+ this.pageSize = this.prePageSize
205
+ }
206
+ },
207
+ mounted () {
208
+ console.log('cardData------', this.cardData)
209
+ console.log('cardConfig-----', this.cardConfig)
210
+ console.log('showPagination-----', this.showPagination)
211
+ console.log('testData----', this.testData)
212
+ console.log('tableColumns------', this.tableColumns)
213
+ console.log('data-----', this.data)
214
+ // 配置初始化
215
+ if (this.cardConfig) {
216
+ this.config = this.cardConfig
217
+ } else {
218
+ this.config = {
219
+ id: '未获取到配置',
220
+ title: '未获取到配置',
221
+ title2: '未获取到配置',
222
+ title3: '未获取到配置',
223
+ subtitle2: '未获取到配置',
224
+ subtitle3: '未获取到配置',
225
+ subtitle4: '未获取到配置',
226
+ text: '未获取到配置',
227
+ ribbon: '未获取到配置',
228
+ ribbonColor: '未获取到配置',
229
+ content: [
230
+ {
231
+ label: '未获取到配置',
232
+ key: 'one'
233
+ },
234
+ {
235
+ label: '未获取到配置',
236
+ key: 'two'
237
+ },
238
+ {
239
+ label: '未获取到配置',
240
+ key: 'three'
241
+ },
242
+ {
243
+ label: '未获取到配置',
244
+ key: 'four'
245
+ },
246
+ {
247
+ label: '未获取到配置',
248
+ key: 'five'
249
+ },
250
+ {
251
+ label: '未获取到配置',
252
+ key: 'six',
253
+ type: 'progress'
254
+ }
255
+ ],
256
+ footer: [
257
+ {
258
+ icon: 'edit',
259
+ label: '未获取到配置',
260
+ emit: 'planEdit'
261
+ },
262
+ {
263
+ icon: 'user',
264
+ label: '未获取到配置',
265
+ emit: 'user'
266
+ }
267
+ ]
268
+ }
269
+ console.warn(this.config)
270
+ }
271
+
272
+ // 数据初始化
273
+ if (this.cardData) {
274
+ // if (this.createdQuery) {
275
+ // this.loadData()
276
+ // }
277
+ } else {
278
+ this.data = {
279
+ one: '未获取到配置',
280
+ two: '未获取到配置',
281
+ three: '未获取到配置',
282
+ four: '未获取到配置',
283
+ five: '未获取到配置',
284
+ six: 70,
285
+ }
286
+ }
287
+ // 测试数据初始化
288
+ if (this.testData) {
289
+ this.data = this.testData
290
+ }
291
+ },
292
+ methods: {
293
+ // 根据比例计算出颜色
294
+ determineRatioColor (ratio, isNum = false) {
295
+ let result
296
+ // 如果是数字,并且比例大于79,则将数字显示为黑色
297
+ if (isNum && ratio > 79) {
298
+ return 'rgb(0,0,0)'
299
+ }
300
+ if (ratio >= 90) {
301
+ result = 'rgb( 1,245, 38 )'
302
+ } else if (ratio >= 75) {
303
+ result = 'rgb( 139,245, 0)'
304
+ } else if (ratio >= 40) {
305
+ result = 'rgb(245,163, 0)'
306
+ } else if (ratio >= 20) {
307
+ result = 'rgb(244, 96, 0)'
308
+ } else {
309
+ result = 'rgb(255, 0, 0)'
310
+ }
311
+ return result
312
+ },
313
+ async cardClick (card, itemIndex) {
314
+ try {
315
+ // 等待 beforeSwitch 完全执行完成
316
+ const result = await this.beforeSwitch(card, 'beforeSwitch', itemIndex)
317
+ // 如果返回 undefined 说明没有监听器,或者返回 true 说明检查通过
318
+ if (result === undefined || result === true) {
319
+ await this.clickFooter(card, 'cardclick', itemIndex)
320
+ }
321
+ } catch (error) {
322
+ }
323
+ },
324
+ // 点击按钮
325
+ async clickFooter (data, eventName, index) {
326
+ if (eventName === 'cardclick') {
327
+ // 清除所有卡片的点击状态
328
+ if (this.data && Array.isArray(this.data)) {
329
+ this.data.forEach(item => {
330
+ if (item.isClicked) {
331
+ this.$set(item, 'isClicked', false)
332
+ }
333
+ })
334
+ }
335
+ // 设置当前卡片的点击状态
336
+ this.$set(data, 'isClicked', true)
337
+ }
338
+ this.$emit('cardEmit', data, eventName)
339
+ },
340
+ async beforeSwitch (data, eventName, index) {
341
+ return new Promise((resolve) => {
342
+ // 检查是否有其他卡片已经被点击
343
+ const hasClickedCard = this.data.some(item => item.isClicked)
344
+ // 如果没有任何卡片被点击过,直接通过
345
+ if (!hasClickedCard) {
346
+ resolve(true)
347
+ return
348
+ }
349
+ // 检查是否有监听器
350
+ const hasListeners = this._events?.cardEmit?.length > 0
351
+
352
+ // 如果没有监听器,返回 undefined 表示继续执行
353
+ if (!hasListeners) {
354
+ resolve(undefined)
355
+ return
356
+ }
357
+ // 如果有监听器,执行事件检查
358
+ try {
359
+ this.$emit('cardEmit', data, eventName)
360
+ resolve(true)
361
+ } catch (error) {
362
+ resolve(false)
363
+ }
364
+ })
365
+ },
366
+ // 获取数据
367
+ loadData () {
368
+ this.render = false
369
+ const parameter = Object.assign({
370
+ querySummary: false, // 分页查询的情况不重新获取汇总数据
371
+ pageNo: this.pageNum,
372
+ pageSize: this.pageSize
373
+ }
374
+ )
375
+ this.cardData(parameter).then(res => {
376
+ this.data = res.data
377
+ this.total = res.totalCount
378
+ this.render = true
379
+ })
380
+ },
381
+ // 页码改变
382
+ pageNumChange (page, pageSize) {
383
+ this.pageNum = page
384
+ this.pageSize = pageSize
385
+ this.loadData()
386
+ },
387
+ // 分页大小改变
388
+ pageSizeChange (current, pageSize) {
389
+ this.pageSize = pageSize
390
+ this.loadData()
391
+ },
392
+ // 刷新
393
+ refresh () {
394
+ this.loadData()
395
+ },
396
+ // 分页前展示当前项和总数
397
+ paginationShowTotal () {
398
+ return `${(this.pageNum - 1) * this.pageSize + 1 } - ${ this.pageNum * this.pageSize } | 共 ${ this.total } 项`
399
+ },
400
+ getRibbonColor (color) {
401
+ switch (color) {
402
+ case 'red':
403
+ return '#ff4d4f'
404
+ case 'blue':
405
+ return '#1890ff'
406
+ case 'yellow':
407
+ return '#fadb14'
408
+ default:
409
+ return '#ff4d4f' // 默认红色
410
+ }
411
+ }
412
+ }
413
+ }
414
+ </script>
415
+
416
+ <style lang="less" scoped>
417
+ .hide-page-numbers /deep/ .ant-pagination-item,
418
+ .hide-page-numbers /deep/ .ant-pagination-jump-next {
419
+ display: none !important; /* 隐藏数字页码和多页跳转 */
420
+ }
421
+ .hide-page-numbers /deep/ .ant-pagination-prev,
422
+ .hide-page-numbers /deep/ .ant-pagination-next {
423
+ display: inline-block !important; /* 保留左右跳转按钮 */
424
+ }
425
+
426
+ .XCard {
427
+ display: flex;
428
+ flex-wrap: wrap;
429
+ justify-content: flex-start;
430
+ overflow-y: auto;
431
+ overflow-x: hidden;
432
+ max-height: 85vh;
433
+ .data-card {
434
+ width: 100%;
435
+ max-width: 300px;
436
+ border: 2px solid rgb(244,244,244);
437
+ border-radius: 5px;
438
+ margin: 2px;
439
+ overflow: hidden;
440
+
441
+ ::v-deep .ant-card-body {
442
+ padding: 15px !important; // 使用 !important 确保样式覆盖
443
+ }
444
+
445
+ .header {
446
+ width: 100%;
447
+ background-color: rgb(244,244,244);
448
+ padding: 5px 15px;
449
+
450
+ span {
451
+ font-weight: bold;
452
+ font-size: 1.1em;
453
+ }
454
+ }
455
+
456
+ .body {
457
+ .body-text{
458
+ width: 500px;
459
+ font-weight: bold;
460
+ font-size: 1.1em;
461
+ .text-ellipsis{
462
+ display: inline-block;
463
+ max-width: 260px; /* 控制文本的最大宽度 */
464
+ white-space: nowrap;
465
+ overflow: hidden;
466
+ text-overflow: ellipsis;
467
+ }
468
+ }
469
+
470
+ .body-item {
471
+ padding: 3px 5px;
472
+ }
473
+
474
+ .body-split {
475
+ margin: 1px 0;
476
+ }
477
+
478
+ .body-item-label {
479
+ color: rgba(117, 117, 117, 0.8);
480
+ font-size: 0.95em;
481
+ }
482
+
483
+ .body-item-value {
484
+ color: black;
485
+ }
486
+
487
+ .progress {
488
+ display: inline-block;
489
+ width: 60%;
490
+ height: 60%;
491
+ float: right;
492
+ padding-right: 1.5%;
493
+ margin-top: 0.5%;
494
+
495
+ .progress-bar {
496
+ width: 100%;
497
+ height: 90%;
498
+ display: inline-block;
499
+ border-radius: 10%;
500
+ background-color: rgba(212,217,218, 0.6);
501
+
502
+ .progress-done {
503
+ float: left;
504
+ display: inline-block;
505
+ height: 100%;
506
+ border-radius: 10%;
507
+ }
508
+ }
509
+ }
510
+ .progress-num {
511
+ position: relative;
512
+ top: -83%;
513
+ left: -3%;
514
+ text-align: end;
515
+ font-size: 0.9em;
516
+ color: black;
517
+ }
518
+ }
519
+
520
+ &.card-clicked {
521
+ :deep(.ant-card-head) {
522
+ background-color: #e6f7ff;
523
+ transition: background-color 0.3s ease;
524
+ }
525
+ }
526
+ }
527
+
528
+ .custom-title {
529
+ display: flex;
530
+ align-items: center;
531
+ gap: 12px;
532
+
533
+ &:hover {
534
+ cursor: pointer;
535
+ }
536
+
537
+ .title-id {
538
+ flex-shrink: 0;
539
+ width: 65px;
540
+ color: #1890ff;
541
+ font-size: 16px;
542
+ font-weight: bold;
543
+ padding: 4px 8px;
544
+ border: 1px solid #1890ff;
545
+ border-radius: 4px;
546
+ line-height: 1.4;
547
+ text-align: center;
548
+ white-space: nowrap;
549
+ overflow: hidden;
550
+ text-overflow: ellipsis;
551
+ }
552
+
553
+ .title-basic {
554
+ display: flex;
555
+ flex-direction: column;
556
+ flex-grow: 1;
557
+
558
+ .subtitle2, .subtitle3 {
559
+ display: inline-block;
560
+ max-width: 50px; /* 固定宽度 */
561
+ white-space: nowrap;
562
+ overflow: hidden;
563
+ text-overflow: ellipsis;
564
+ }
565
+
566
+ .title-main {
567
+ display: flex;
568
+ align-items: center;
569
+ gap: 8px;
570
+ .title-info {
571
+ margin-left: 6px;
572
+ color: #808080;
573
+ }
574
+ .title-name {
575
+ font-weight: bold;
576
+ }
577
+ .title-title3 {
578
+ color: #808080;
579
+ }
580
+ }
581
+
582
+ .additional-info {
583
+ display: flex;
584
+ gap: 8px;
585
+ font-size: 13px;
586
+ color: #808080;
587
+ .subtitle4 {
588
+ color: rgba(0, 0, 255, 0.8);
589
+ }
590
+ }
591
+ }
592
+ }
593
+
594
+ .ribbon {
595
+ position: absolute;
596
+ top: 16px;
597
+ right: -6px;
598
+ background-color: #ff4d4f;
599
+ color: white;
600
+ padding: 5px 25px;
601
+ font-size: 12px;
602
+ transform: rotate(45deg) translateX(30%);
603
+ transform-origin: top right;
604
+ z-index: 1;
605
+ }
606
+
607
+ .custom-actions {
608
+ .footer-icon {
609
+ margin-right: 5px;
610
+ }
611
+
612
+ .footer-item-split {
613
+ color: rgba(220, 220, 220, 0.59);
614
+ }
615
+
616
+ .footer-item {
617
+ color: rgba(117, 117, 117, 0.8);
618
+ font-size: 1em;
619
+ white-space: nowrap;
620
+ display: inline-flex;
621
+ align-items: center;
622
+ justify-content: center;
623
+ }
624
+
625
+ .footer-item:hover {
626
+ color: rgb( 24,144,255 );
627
+ cursor: pointer;
628
+ }
629
+ :deep(.ant-divider-vertical) {
630
+ height: 24px;
631
+ border-left: 1px solid rgba(220, 220, 220, 0.59);
632
+ top: 0;
633
+ margin: 0 16px;
634
+ }
635
+ }
636
+ }
637
+
638
+ .ellipsis {
639
+ display: inline-block;
640
+ max-width: 60px;
641
+ white-space: nowrap;
642
+ overflow: hidden;
643
+ text-overflow: ellipsis;
644
+ }
645
+ </style>