vue2-client 1.22.21 → 1.22.23

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 (87) hide show
  1. package/.env.his +19 -19
  2. package/.idea/.name +1 -0
  3. package/.idea/MarsCodeWorkspaceAppSettings.xml +8 -0
  4. package/.idea/deployment.xml +14 -0
  5. package/.idea/gradle.xml +7 -0
  6. package/.idea/inspectionProfiles/Project_Default.xml +6 -0
  7. package/.idea/libraries/contour_plot.xml +9 -0
  8. package/.idea/material_theme_project_new.xml +18 -0
  9. package/.idea/misc.xml +87 -5
  10. package/package.json +1 -1
  11. package/src/base-client/components/common/HIS/HForm/HForm.vue +1186 -1186
  12. package/src/base-client/components/common/HIS/HTab/HTab.vue +790 -790
  13. package/src/base-client/components/common/XInspectionDetailDrawer/components/AiDeviceStatus.vue +25 -4
  14. package/src/base-client/components/common/XInspectionDetailDrawer/components/ImageAnnotationShow.vue +1371 -0
  15. package/src/base-client/components/common/XMarkdownViewer/demo.vue +102 -102
  16. package/src/base-client/components/his/XTransfer/index.md +327 -327
  17. package/.history/.eslintrc_20260521171150.js +0 -74
  18. package/.history/.eslintrc_20260521171213.js +0 -74
  19. package/.history/src/base-client/components/common/HIS/HAddNativeForm/HAddNativeForm_20260601154443.vue +0 -726
  20. package/.history/src/base-client/components/common/HIS/HAddNativeForm/HAddNativeForm_20260601154700.vue +0 -478
  21. package/.history/src/base-client/components/common/HIS/HButtons/HButtons_20260512175435.vue +0 -706
  22. package/.history/src/base-client/components/common/HIS/HButtons/HButtons_20260512175450.vue +0 -694
  23. package/.history/src/base-client/components/common/HIS/HButtons/HButtons_20260611152602.vue +0 -755
  24. package/.history/src/base-client/components/common/HIS/HForm/HForm_20260513145941.vue +0 -524
  25. package/.history/src/base-client/components/common/HIS/HForm/HForm_20260513153133.vue +0 -731
  26. package/.history/src/base-client/components/common/HIS/HForm/HForm_20260513160316.vue +0 -525
  27. package/.history/src/base-client/components/common/HIS/HForm/HForm_20260601144150.vue +0 -1046
  28. package/.history/src/base-client/components/common/HIS/HFormTable/HFormTable_20260310142713.vue +0 -512
  29. package/.history/src/base-client/components/common/HIS/HFormTable/HFormTable_20260310145118.vue +0 -511
  30. package/.history/src/base-client/components/common/HIS/HFormTable/HFormTable_20260311094834.vue +0 -696
  31. package/.history/src/base-client/components/common/HIS/HFormTable/HFormTable_20260320143028.vue +0 -693
  32. package/.history/src/base-client/components/common/HIS/HFormTable/HFormTable_20260409101450.vue +0 -677
  33. package/.history/src/base-client/components/common/HIS/HTab/HTab_20260625173703.vue +0 -767
  34. package/.history/src/base-client/components/common/HIS/HTab/HTab_20260626112425.vue +0 -803
  35. package/.history/src/base-client/components/common/XAddNativeForm/XAddNativeForm_20260513140637.vue +0 -1455
  36. package/.history/src/base-client/components/common/XAddNativeForm/XAddNativeForm_20260513140935.vue +0 -1441
  37. package/.history/src/base-client/components/common/XAddNativeForm/XAddNativeForm_20260513150818.vue +0 -1441
  38. package/.history/src/base-client/components/common/XAddNativeForm/XAddNativeForm_20260513153119.vue +0 -1442
  39. package/.history/src/base-client/components/common/XAddNativeForm/XAddNativeForm_20260513153126.vue +0 -1486
  40. package/.history/src/base-client/components/common/XForm/XFormItem_20260513140854.vue +0 -1607
  41. package/.history/src/base-client/components/common/XMarkdownViewer/XMarkdownViewer_20260519140403.vue +0 -643
  42. package/.history/src/base-client/components/common/XMarkdownViewer/XMarkdownViewer_20260519140829.vue +0 -628
  43. package/.history/src/base-client/components/common/XMarkdownViewer/demo_20260519142824.vue +0 -104
  44. package/.history/src/base-client/components/common/XMarkdownViewer/demo_20260519143155.vue +0 -102
  45. package/.history/src/base-client/components/common/XReportGrid/XReport_20260309171231.vue +0 -1241
  46. package/.history/src/base-client/components/common/XReportGrid/XReport_20260309171441.vue +0 -1223
  47. package/.history/src/base-client/components/his/HAi/HAi_20260612174826.vue +0 -472
  48. package/.history/src/base-client/components/his/HAi/HAi_20260612175839.vue +0 -538
  49. package/.history/src/base-client/components/his/HAi/HAi_20260615103331.vue +0 -650
  50. package/.history/src/base-client/components/his/HAi/HAi_20260618140214.vue +0 -1396
  51. package/.history/src/base-client/components/his/HAi/HAi_20260618140556.vue +0 -1396
  52. package/.history/src/base-client/components/his/XHDescriptions/XHDescriptions_20260424134504.vue +0 -1469
  53. package/.history/src/base-client/components/his/XSidebar/XSidebar_20260610171133.vue +0 -788
  54. package/.history/src/base-client/components/his/XSidebar/XSidebar_20260610171151.vue +0 -780
  55. package/.history/src/base-client/components/his/XTransfer/XTransfer_20260511170841.vue +0 -585
  56. package/.history/src/base-client/components/his/XTransfer/XTransfer_20260511171138.vue +0 -787
  57. package/.history/src/base-client/components/his/XTransfer/XTransfer_20260512141830.vue +0 -739
  58. package/.history/src/components/STable/index_20260409155138.js +0 -806
  59. package/.history/src/components/STable/index_20260409155218.js +0 -814
  60. package/.history/src/expression/core/Expression_20260305164427.js +0 -1371
  61. package/.history/src/expression/core/Expression_20260305170258.js +0 -1358
  62. package/.history/src/expression/core/Program_20260305111830.js +0 -944
  63. package/.history/src/expression/core/Program_20260305112041.js +0 -931
  64. package/.history/src/logic/LogicRunner_20260304154306.js +0 -170
  65. package/.history/src/logic/LogicRunner_20260304155553.js +0 -112
  66. package/.history/src/logic/LogicRunner_20260305105834.js +0 -112
  67. package/.history/src/logic/LogicRunner_20260305112718.js +0 -129
  68. package/.history/src/logic/LogicRunner_20260305182436.js +0 -133
  69. package/.history/src/logic/LogicRunner_20260306151301.js +0 -213
  70. package/.history/src/logic/LogicRunner_20260306152419.js +0 -213
  71. package/.history/src/logic/plugins/common/DateTools_20260305154159.js +0 -61
  72. package/.history/src/logic/plugins/common/DateTools_20260305154217.js +0 -44
  73. package/.history/src/logic/plugins/common/DateTools_20260305161014.js +0 -44
  74. package/.history/src/logic/plugins/common/HttpTools_20260305164352.js +0 -80
  75. package/.history/src/logic/plugins/common/HttpTools_20260305170258.js +0 -75
  76. package/.history/src/logic/plugins/common/HttpTools_20260305171634.js +0 -75
  77. package/.history/src/logic/plugins/common/HttpTools_20260306152419.js +0 -72
  78. package/.history/src/services/api/restTools_20260427142149.js +0 -245
  79. package/.history/src/services/api/restTools_20260427142853.js +0 -230
  80. package/.history/src/services/api/restTools_20260519135558.js +0 -230
  81. package/.history/src/services/api/restTools_20260519140825.js +0 -230
  82. package/.history/src/services/api/restTools_20260519151223.js +0 -230
  83. package/.history/src/utils/indexedDB_20260306150918.js +0 -593
  84. package/.history/src/utils/indexedDB_20260306151301.js +0 -586
  85. package/.idea/codeStyles/Project.xml +0 -62
  86. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  87. package/preview-input-box.html +0 -180
@@ -1,803 +0,0 @@
1
- <script setup>
2
- import XTab from '@vue2-client/base-client/components/common/XTab/XTab.vue'
3
- import { ref, computed, useAttrs, useSlots, onMounted } from 'vue'
4
- import { getConfigByName } from '@vue2-client/services/api/common'
5
-
6
- const props = defineProps({
7
- // 标签栏右侧附加区域的配置名(可选)。提供时将自动加载配置并渲染到 tabBar 右侧。
8
- tabBarExtraConfig: {
9
- type: String,
10
- default: undefined
11
- },
12
- // 控制标签间距,覆盖内部 XTab 的默认 10px;默认置 0 清除外边距
13
- tabBarGutter: {
14
- type: Number,
15
- default: 0
16
- }
17
- })
18
-
19
- // 兼容多种样式配置
20
- const attrs = useAttrs()
21
- const wrapperClassObject = computed(() => {
22
- const a = attrs
23
- const classes = {}
24
-
25
- // 通用布尔样式开关(以存在/空字符串/'true' 为真)
26
- // hasTopMargin: 标签增加顶部外边距,同时调整 ant-card-body 内边距
27
- // useStyle7: 细下划线指示器样式,透明背景,支持配合 useCycle 显示圆点
28
- // useCycle: 与 useStyle7 配合使用,在标签左侧显示蓝色圆点指示器
29
- // useStyle8: 等宽卡片式标签,带边框和圆角,激活项高亮并隐藏底部边框
30
- // out-tab: 去除标签栏所有外边距与内边距,实现紧凑贴边效果
31
- // no-underline: 隐藏底部边框与 ink-bar 下划线指示器
32
- // useStyle9: 圆角卡片标签,带边框,激活项填充品牌色,禁用切换动画
33
- // useStyle10: 无下划线 + 左侧蓝色圆点,透明背景,激活项高亮品牌色
34
- // useStyle11: 去除边框,选中显示蓝色下划线,字体 #313131 / #0057FE,标签宽度平均分配
35
- const booleanStyleKeys = [
36
- 'hasTopMargin', 'useStyle7', 'useCycle', 'useStyle8', 'out-tab', 'no-underline', 'useStyle9', 'useStyle10', 'useStyle11'
37
- ]
38
- for (const key of booleanStyleKeys) {
39
- const val = a[key]
40
- const truthy = val === true || val === '' || val === 'true'
41
- if (truthy) classes[`h-tab-${key}`] = true
42
- }
43
- return classes
44
- })
45
-
46
- // 创建对XTab组件的引用
47
- const xTabRef = ref()
48
-
49
- // 获取插槽(避免模板中直接使用 $slots 触发类型检查错误)
50
- const slots = useSlots()
51
- const slotNames = computed(() => {
52
- try {
53
- return Object.keys(slots || {})
54
- } catch (e) {
55
- return []
56
- }
57
- })
58
-
59
- // 右侧附加区域的动态配置
60
- const extraConfig = ref(null)
61
- const extraItems = computed(() => {
62
- const cfg = extraConfig.value
63
- return cfg && cfg.value ? cfg.value : []
64
- })
65
-
66
- // 本地异步组件映射(未全局注册时生效)
67
- const localMap = {
68
- 'x-input': () => import('@vue2-client/base-client/components/common/XInput/XInput.vue'),
69
- 'x-select': () => import('@vue2-client/base-client/components/his/XSelect/XSelect.vue'),
70
- 'x-radio': () => import('@vue2-client/base-client/components/his/XRadio/XRadio.vue'),
71
- 'x-buttons': () => import('@vue2-client/base-client/components/common/XButtons/XButtons.vue'),
72
- 'x-time-select': () => import('@vue2-client/base-client/components/his/XTimeSelect/XTimeSelect.vue'),
73
- 'h-buttons': () => import('@vue2-client/base-client/components/common/HIS/HButtons/HButtons.vue')
74
- }
75
-
76
- // 从 attrs 中读取 serverName 与 env(保持向后兼容)
77
- const serverName = computed(() => (attrs && attrs.serverName))
78
- const env = computed(() => (attrs && attrs.env) || 'prod')
79
-
80
- const loadExtraConfig = (configName) => {
81
- if (!configName) {
82
- extraConfig.value = null
83
- return
84
- }
85
- getConfigByName(configName, serverName.value, (res) => {
86
- extraConfig.value = res
87
- }, env.value === 'dev')
88
- }
89
-
90
- onMounted(() => {
91
- loadExtraConfig(props.tabBarExtraConfig)
92
- })
93
-
94
- // 暴露方法给父组件使用
95
- defineExpose({
96
- // 为了兼容性,保留getXTabInstance方法
97
- getXTabInstance: () => xTabRef.value,
98
- })
99
- </script>
100
-
101
- <template>
102
- <div
103
- class="h-tab-wrapper"
104
- :class="[wrapperClassObject, extraItems.length > 1 ? 'h-tab-extra-wrapper-multiple' : '']">
105
- <x-tab
106
- ref="xTabRef"
107
- :tabBarGutter="props.tabBarGutter"
108
- v-bind="$attrs"
109
- v-on="$listeners"
110
- >
111
- <template v-if="extraItems.length" #tabBarExtraContent>
112
- <!-- 父级可接管渲染;未提供则按配置兜底渲染 -->
113
- <slot name="tabBarExtraContent" :config="extraConfig" :items="extraItems">
114
- <div class="h-tab-extra-wrapper">
115
- <component
116
- v-for="(item, idx) in extraItems"
117
- :is="localMap[item.slotType] || item.slotType"
118
- :key="idx"
119
- :ref="item.slotRef || `extra_${idx}`"
120
- :serviceName="item.serviceName || serverName"
121
- :serverName="item.serviceName || serverName"
122
- :queryParamsName="item.slotConfig"
123
- :env="env"
124
- v-on="$listeners"
125
- v-bind="item.attrs"
126
- />
127
- </div>
128
- </slot>
129
- </template>
130
- <template v-for="name in slotNames" #[name]="slotData">
131
- <slot :name="name" v-bind="slotData" />
132
- </template>
133
- </x-tab>
134
- </div>
135
- </template>
136
-
137
- <style scoped lang="less">
138
- .h-tab-wrapper {
139
- width: 100%;
140
- overflow: visible !important;
141
-
142
- // 基础样式
143
- :deep(.ant-tabs-tab-next) {
144
- display: none;
145
- }
146
- :deep(.ant-tabs-nav-wrap) {
147
- margin-top: 18px;
148
- margin-bottom: 0;
149
- }
150
- :deep(.ant-tabs-nav) {
151
- // 去除导航容器默认左右内边距,避免收缩时左侧多出一截
152
- .ant-tabs-nav-container,
153
- .ant-tabs-nav-scroll {
154
- margin: 0px;
155
- }
156
-
157
- // 移除左右切换箭头带来的占位
158
- .ant-tabs-tab-prev,
159
- .ant-tabs-tab-next {
160
- display: none !important;
161
- width: 0 !important;
162
- }
163
- .ant-tabs-tab-next-icon {
164
- display: none;
165
- }
166
- .ant-tabs-tab {
167
- background-color: transparent;
168
- border-radius: 6px 6px 0 0;
169
- color: #5D5C5C;
170
- font-weight: bold;
171
- min-width: 134px;
172
- width: auto;
173
- font-size: 18px;
174
- line-height: 26px;
175
- font-family: "Source Han Sans";
176
- transition: all 0.3s;
177
- height: 32px;
178
- text-align: center;
179
- margin: 0 !important;
180
- padding: 0 12px !important;
181
- }
182
- .ant-tabs-tab-active {
183
- background-color: #0057FE;
184
- color: #ffffff;
185
- min-width: 134px;
186
- width: auto;
187
- line-height: 26px;
188
- height: 32px;
189
- text-align: center;
190
- margin: 0 !important;
191
- padding: 0 12px !important;
192
- }
193
- }
194
-
195
- :deep(.ant-tabs-bar) {
196
- border-bottom: 2px solid #0057FE;
197
- margin: 0px 0px;
198
- width: 100%;
199
- height: 50px;
200
- }
201
-
202
- // 滚动状态下的容器左右内边距清零,避免左侧多出一截
203
- :deep(.ant-tabs-nav-container-scrolling) {
204
- padding-left: 0 !important;
205
- padding-right: 0 !important;
206
- }
207
-
208
- :deep(.ant-tabs-tab-arrow-show) {
209
- display: none;
210
- }
211
-
212
- :deep(.ant-tabs-ink-bar) {
213
- background-color: transparent;
214
- bottom: 0px;
215
- display: none;
216
- height: 0;
217
- }
218
-
219
- :deep(.ant-tabs-tab-prev-icon-target) {
220
- display: none;
221
- }
222
-
223
- // 带顶部边距的样式
224
- &.h-tab-hasTopMargin {
225
- :deep(.ant-tabs-nav) {
226
- margin-top: 6px;
227
- }
228
-
229
- :deep(.ant-tabs-bar) {
230
- margin: 0 6px;
231
- }
232
-
233
- :deep(.ant-card-body) {
234
- padding: 6px 0;
235
-
236
- .ant-card-body {
237
- padding: 6px;
238
- }
239
- }
240
- }
241
-
242
- // 通用样式7:细下划线、透明背景、可配置宽度
243
- &.h-tab-useStyle7 {
244
- :deep(.ant-tabs-tab-next),
245
- :deep(.ant-tabs-tab-prev-icon-target),
246
- :deep(.ant-tabs-tab-next-icon) { display: none; }
247
-
248
- :deep(.ant-tabs-bar) {
249
- border-bottom: none !important;
250
- margin: 0 !important;
251
- }
252
-
253
- :deep(.ant-tabs-ink-bar) {
254
- display: none !important;
255
- }
256
-
257
- :deep(.ant-tabs-nav-wrap) {
258
- margin-top: 0 !important;
259
- margin-bottom: 0 !important;
260
- padding-left: 0 !important;
261
- padding-right: 0 !important;
262
- overflow: visible !important;
263
- height: auto !important;
264
- }
265
-
266
- :deep(.ant-tabs-nav-container) {
267
- padding-left: 0 !important;
268
- padding-right: 0 !important;
269
- margin: 0 !important;
270
- height: auto !important;
271
- }
272
-
273
- :deep(.ant-tabs-nav-scroll) {
274
- height: auto !important;
275
- }
276
-
277
- :deep(.ant-tabs-nav) {
278
- width: 100% !important;
279
- display: flex !important;
280
- flex-direction: row !important;
281
- flex-wrap: nowrap !important;
282
-
283
- .ant-tabs-nav-list {
284
- width: 100% !important;
285
- display: flex !important;
286
- flex-direction: row !important;
287
- flex-wrap: nowrap !important;
288
- gap: 0 !important;
289
- }
290
-
291
- .ant-tabs-tab {
292
- position: relative !important;
293
- background-color: transparent !important;
294
- border-radius: 0 !important;
295
- color: #313131 !important;
296
- font-weight: bold !important;
297
- min-width: var(--tab-min-width, 108px) !important;
298
- width: var(--tab-width, auto) !important;
299
- padding: 0 12px 12px !important;
300
- font-size: 16px !important;
301
- line-height: 38px !important;
302
- font-family: "Source Han Sans" !important;
303
- transition: all 0.3s !important;
304
- height: 38px !important;
305
- opacity: 1 !important;
306
- text-align: center !important;
307
- margin-right: 0 !important;
308
- letter-spacing: 0em !important;
309
- font-variation-settings: "opsz" auto !important;
310
- font-feature-settings: "kern" on !important;
311
- display: inline-flex !important;
312
- align-items: center !important;
313
- justify-content: center !important;
314
- box-sizing: border-box !important;
315
- }
316
- .ant-tabs-tab-active {
317
- background-color: transparent !important;
318
- color: #0057FE !important;
319
- font-weight: bold !important;
320
- width: var(--tab-width, auto) !important;
321
- padding: 0 12px 12px !important;
322
- line-height: 38px !important;
323
- height: 38px !important;
324
- opacity: 1 !important;
325
- text-align: center !important;
326
- letter-spacing: 0em !important;
327
- font-variation-settings: "opsz" auto !important;
328
- font-feature-settings: "kern" on !important;
329
- display: inline-flex !important;
330
- align-items: center !important;
331
- justify-content: center !important;
332
- box-sizing: border-box !important;
333
-
334
- &::after {
335
- content: "" !important;
336
- position: absolute !important;
337
- left: 0 !important;
338
- right: 0 !important;
339
- bottom: 0 !important;
340
- width: 100% !important;
341
- height: 2px !important;
342
- background-color: #0057FE !important;
343
- }
344
- }
345
- }
346
-
347
- // 可选:标签左侧圆点
348
- &.h-tab-useCycle {
349
- :deep(.ant-tabs-tab) {
350
- position: relative !important;
351
- padding-left: 16px !important;
352
- margin-right: 0 !important;
353
- height: 38px !important;
354
- display: inline-flex !important;
355
- align-items: center !important;
356
- opacity: 1;
357
- }
358
- :deep(.ant-tabs-tab::before) {
359
- content: "" !important;
360
- position: absolute !important;
361
- left: 4px !important;
362
- width: 8px !important;
363
- height: 8px !important;
364
- background: #3362DA !important;
365
- border-radius: 50% !important;
366
- opacity: 1 !important;
367
- display: block !important;
368
- z-index: 1 !important;
369
- top: auto !important;
370
- bottom: auto !important;
371
- transform: none !important;
372
- }
373
- :deep(.ant-tabs-tab-active::before) {
374
- background: #0057FE !important;
375
- }
376
- :deep(.ant-tabs-nav) {
377
- flex-wrap: nowrap !important;
378
- }
379
- }
380
- }
381
- // 用户词条使用样式
382
- &.h-tab-useStyle8 {
383
- :deep(.ant-tabs-tab-next),
384
- :deep(.ant-tabs-tab-prev-icon-target),
385
- :deep(.ant-tabs-tab-next-icon) {
386
- display: none;
387
- }
388
-
389
- :deep(.ant-tabs-nav-wrap) {
390
- margin-top: 0;
391
- }
392
-
393
- // Make the main Ant Design tabs container a flex column to arrange tab bar and content vertically
394
- :deep(.ant-tabs) {
395
- display: flex !important;
396
- flex-direction: column !important; // 确保选项卡栏在顶部,内容区域在下方
397
- height: auto !important; // 高度自适应
398
- }
399
-
400
- :deep(.ant-tabs-bar) {
401
- border-bottom: 1px solid #d9d9d9; // 底部边框
402
- border-right: none; // 移除右侧边框
403
- margin-right: 0 !important; // 移除重叠修复
404
- flex-shrink: 1 !important; // 允许收缩
405
- height: auto !important; // 高度自适应
406
- margin-bottom: 0px !important;
407
- }
408
-
409
- :deep(.ant-tabs-content) {
410
- flex: none !important; // 移除 flex: 1,允许内容区域自然流淌
411
- }
412
-
413
- :deep(.ant-tabs-nav) {
414
- .ant-tabs-nav-container,
415
- .ant-tabs-nav-wrap,
416
- .ant-tabs-nav-scroll,
417
- & > div:first-child {
418
- display: flex !important;
419
- flex-direction: row !important;
420
- flex-wrap: nowrap !important; // 确保不换行
421
- width: 100% !important; // 占据全部宽度
422
- height: auto !important;
423
- }
424
-
425
- height: auto !important; // 高度自适应内容
426
- width: 100% !important; // 确保容器占据全部宽度
427
-
428
- .ant-tabs-tab {
429
- flex: 1 !important; // 宽度等分布局
430
- margin-right: 0 !important;
431
- margin-bottom: 0 !important; // 移除底部间距
432
- border-top: 1px solid #d9d9d9;
433
- border-left: 1px solid #d9d9d9;
434
- border-bottom: 1px solid #d9d9d9; // 所有选项卡都有底部边框
435
- border-right: none; // 默认没有右边框
436
- &:last-child {
437
- border-right: 1px solid #d9d9d9; // 最后一个选项卡有右边框
438
- }
439
- border-radius: 0; // 默认无圆角,避免中间相邻处出现圆角
440
- background-color: #f5f5f5;
441
- color: #333333;
442
- font-weight: 500;
443
- font-size: 16px;
444
- height: 40px; // 固定高度
445
- width: auto !important; // 移除固定宽度,以便等分
446
- display: flex;
447
- justify-content: center;
448
- align-items: center;
449
- padding: 0;
450
- }
451
- // 首项:仅左侧圆角
452
- .ant-tabs-tab:first-child {
453
- border-top-left-radius: 10px;
454
- border-bottom-left-radius: 10px;
455
- }
456
- // 末项:仅右侧圆角
457
- .ant-tabs-tab:last-child {
458
- border-top-right-radius: 10px;
459
- border-bottom-right-radius: 10px;
460
- }
461
- .ant-tabs-tab-active {
462
- border-bottom: 1px solid transparent; // 激活时隐藏底部边框,与 ant-tabs-bar 的边框衔接
463
- background-color: #0057FE;
464
- color: #ffffff;
465
- font-weight: 600;
466
- }
467
- }
468
- :deep(.ant-tabs-ink-bar) {
469
- display: none; // 隐藏下划线
470
- }
471
- }
472
- &.h-tab-extra-wrapper-multiple {
473
- :deep(.h-tab-extra-wrapper){
474
- display: flex;
475
- justify-content: end;
476
- gap: 8px;
477
- }
478
- :deep(.x-radio-group){
479
- height: 32px;
480
- }
481
- :deep(.x-radio-item){
482
- height: 32px;
483
- display: flex;
484
- align-items: center;
485
- margin-bottom: 0px;
486
- }
487
- :deep(.ant-tabs-tab){
488
- height: 34px;
489
- }
490
- :deep(.ant-tabs-nav-container){
491
- padding-top: 2px;
492
- }
493
- :deep(.ant-tabs-extra-content){
494
- line-height: 0px !important;
495
- }
496
- }
497
-
498
- &.h-tab-out-tab {
499
- :deep(.ant-tabs-nav-wrap) {
500
- margin-top: 0px !important;
501
- margin-bottom: 0px !important;
502
- }
503
- :deep(.ant-tabs-nav) {
504
- margin-bottom: 0px !important;
505
- }
506
- :deep(.ant-tabs-nav-container) {
507
- padding-top: 0px !important;
508
- padding-bottom: 0px !important;
509
- }
510
-
511
- :deep(.ant-tabs-bar) {
512
- margin-top: 0px !important;
513
- margin-bottom: 0px !important;
514
- height: auto !important;
515
- min-height: 0px !important;
516
- }
517
-
518
- :deep(.ant-tabs-content) {
519
- margin-top: 0px !important;
520
- }
521
- }
522
-
523
- // 无下划线样式:隐藏底部指示器线条和边框
524
- &.h-tab-no-underline {
525
- :deep(.ant-tabs-bar) {
526
- border-bottom: none !important;
527
- }
528
- :deep(.ant-tabs-ink-bar) {
529
- display: none !important;
530
- }
531
- }
532
-
533
- // 样式9:圆角卡片式标签(带边框、居中文字、字体切换)
534
- &.h-tab-useStyle9 {
535
- :deep(.ant-tabs-tab-next),
536
- :deep(.ant-tabs-tab-prev-icon-target),
537
- :deep(.ant-tabs-tab-next-icon) { display: none; }
538
-
539
- // 保持 ant-tabs 为 column 布局
540
- :deep(.ant-tabs) {
541
- display: flex !important;
542
- flex-direction: column !important;
543
- height: auto !important;
544
- width: 100% !important;
545
- }
546
-
547
- // 移除 a-card 的默认样式影响
548
- :deep(.ant-card) {
549
- overflow: visible !important;
550
- width: 100% !important;
551
- }
552
- :deep(.ant-card-body) {
553
- padding: 0 !important;
554
- overflow: visible !important;
555
- }
556
-
557
- :deep(.ant-tabs-bar) {
558
- border-bottom: none !important;
559
- flex-shrink: 0 !important;
560
- height: auto !important;
561
- margin-bottom: 0 !important;
562
- width: 100% !important;
563
- overflow: visible !important;
564
- }
565
-
566
- :deep(.ant-tabs-content) {
567
- flex: 1 !important;
568
- height: auto !important;
569
- overflow: visible !important;
570
- }
571
-
572
- :deep(.ant-tabs-tabpane) {
573
- overflow: visible !important;
574
- display: block !important;
575
- }
576
-
577
- :deep(.ant-tabs-tabpane-active) {
578
- overflow: visible !important;
579
- }
580
-
581
- // 禁用切换动画,避免抖动
582
- :deep(.ant-tabs) {
583
- transition: none !important;
584
- }
585
- :deep(.ant-tabs-tabpane) {
586
- transition: none !important;
587
- }
588
-
589
- :deep(.ant-tabs-nav-wrap) {
590
- margin: 0 !important;
591
- padding: 0 !important;
592
- overflow: visible !important;
593
- position: relative !important;
594
- display: block !important;
595
- }
596
-
597
- :deep(.ant-tabs-nav-container) {
598
- padding: 0 !important;
599
- overflow: visible !important;
600
- display: block !important;
601
- }
602
-
603
- :deep(.ant-tabs-nav) {
604
- display: flex !important;
605
- flex-direction: row !important;
606
- flex-wrap: nowrap !important;
607
- width: auto !important;
608
- max-width: 100% !important;
609
- height: auto !important;
610
- margin: 0 !important;
611
- overflow: visible !important;
612
-
613
- .ant-tabs-tab {
614
- flex: none;
615
- width: auto;
616
- min-width: 100px;
617
- box-sizing: border-box;
618
- border: 1px solid #E5E9F0;
619
- border-radius: 6px;
620
- background: #FFFFFF;
621
- color: #333333;
622
- font-family: "Source Han Sans";
623
- font-size: 18px;
624
- font-weight: bold;
625
- line-height: 32px;
626
- height: 32px;
627
- text-align: center;
628
- margin: 0 !important;
629
- padding: 0 16px !important;
630
- overflow: hidden !important;
631
- }
632
- .ant-tabs-tab-active {
633
- background-color: #0057FE;
634
- color: #ffffff;
635
- font-weight: bold;
636
- border: 1px solid #0057FE;
637
- }
638
- }
639
-
640
- :deep(.ant-tabs-ink-bar) {
641
- display: none;
642
- }
643
- }
644
- // 样式10:无下划线、左侧绿色圆点、字体样式切换
645
- &.h-tab-useStyle10 {
646
- :deep(.ant-tabs-tab-next),
647
- :deep(.ant-tabs-tab-prev-icon-target),
648
- :deep(.ant-tabs-tab-next-icon) { display: none; }
649
-
650
- :deep(.ant-tabs-bar) {
651
- border-bottom: none !important;
652
- }
653
-
654
- :deep(.ant-tabs-ink-bar) {
655
- display: none !important;
656
- }
657
-
658
- :deep(.ant-tabs-nav-wrap) {
659
- margin-top: 0;
660
- padding-left: 0 !important;
661
- padding-right: 0 !important;
662
- }
663
-
664
- :deep(.ant-tabs-nav-container) {
665
- padding-left: 0 !important;
666
- padding-right: 0 !important;
667
- }
668
-
669
- :deep(.ant-tabs-nav) {
670
- display: flex;
671
- flex-wrap: wrap;
672
- gap: 8px;
673
- .ant-tabs-tab {
674
- position: relative;
675
- background-color: transparent;
676
- border-radius: 0;
677
- color: #313131;
678
- font-family: "Source Han Sans";
679
- font-size: 16px;
680
- font-weight: bold;
681
- line-height: normal;
682
- letter-spacing: 0em;
683
- font-feature-settings: "kern" on;
684
- font-variation-settings: "opsz" auto;
685
- width: auto;
686
- padding: 0 12px 6px;
687
- padding-left: 18px !important;
688
- transition: all 0.3s;
689
- height: 40px;
690
- text-align: center;
691
- margin-right: 0px !important;
692
- display: inline-flex !important;
693
- align-items: center;
694
- vertical-align: top;
695
- }
696
- .ant-tabs-tab::before {
697
- content: "" !important;
698
- position: absolute !important;
699
- left: 0 !important;
700
- top: 50% !important;
701
- transform: translateY(-50%) !important;
702
- width: 8px !important;
703
- height: 8px !important;
704
- background: #0057FE !important;
705
- border-radius: 50% !important;
706
- display: block !important;
707
- z-index: 1 !important;
708
- }
709
- .ant-tabs-tab-active {
710
- background-color: transparent;
711
- color: #0057FE;
712
- font-weight: bold;
713
- width: auto;
714
- padding: 0 12px 6px;
715
- padding-left: 18px !important;
716
- height: 40px;
717
- text-align: center;
718
- }
719
- .ant-tabs-tab-active::before {
720
- background: #0057FE !important;
721
- }
722
- }
723
- }
724
-
725
- // 样式11:去除边框、选中显示蓝色下划线,标签宽度平均分配
726
- &.h-tab-useStyle11 {
727
- :deep(.ant-tabs-tab-next),
728
- :deep(.ant-tabs-tab-prev-icon-target),
729
- :deep(.ant-tabs-tab-next-icon) { display: none; }
730
-
731
- :deep(.ant-tabs-bar) {
732
- border-bottom: none !important;
733
- height: 32px !important;
734
- line-height: 32px !important;
735
- }
736
-
737
- :deep(.ant-tabs-ink-bar) {
738
- display: block !important;
739
- background-color: #0057FE !important;
740
- bottom: 0px !important;
741
- height: 2px !important;
742
- margin-left: 0 !important;
743
- }
744
-
745
- :deep(.ant-tabs-nav-wrap) {
746
- margin-top: 0;
747
- padding-left: 0 !important;
748
- padding-right: 0 !important;
749
- width: 100% !important;
750
- }
751
-
752
- :deep(.ant-tabs-nav-container) {
753
- padding-left: 0 !important;
754
- padding-right: 0 !important;
755
- width: 100% !important;
756
- }
757
-
758
- :deep(.ant-tabs-nav-container-scrolling) {
759
- padding-left: 0 !important;
760
- padding-right: 0 !important;
761
- }
762
-
763
- :deep(.ant-tabs-nav) {
764
- width: 100% !important;
765
-
766
- .ant-tabs-nav-list {
767
- width: 100% !important;
768
- display: grid !important;
769
- grid-template-columns: repeat(auto-fit, minmax(0, 1fr));
770
- }
771
-
772
- .ant-tabs-tab {
773
- width: 50%;
774
- height: 32px;
775
- box-sizing: border-box !important;
776
- opacity: 1;
777
- font-family: "Source Han Sans";
778
- font-size: 16px;
779
- font-weight: bold;
780
- line-height: normal;
781
- text-align: center;
782
- letter-spacing: 0em;
783
- color: #313131;
784
- background-color: transparent;
785
- border: none;
786
- border-radius: 0;
787
- padding: 0 12px 6px;
788
- margin-right: 16px !important;
789
- display: inline-flex !important;
790
- align-items: center;
791
- justify-content: center;
792
- transition: all 0.3s;
793
- }
794
-
795
- .ant-tabs-tab-active {
796
- color: #0057FE;
797
- background-color: transparent;
798
- border: none;
799
- }
800
- }
801
- }
802
- }
803
- </style>