vue2-client 1.18.21 → 1.18.22

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 (26) hide show
  1. package/package.json +112 -112
  2. package/src/assets/svg/female.svg +1 -1
  3. package/src/assets/svg/male.svg +1 -1
  4. package/src/base-client/components/common/HIS/HButtons/HButtons.vue +491 -491
  5. package/src/base-client/components/common/HIS/HFormGroup/index.js +3 -3
  6. package/src/base-client/components/common/HIS/HTab/HTab.vue +443 -443
  7. package/src/base-client/components/common/XCollapse/XCollapse.vue +830 -830
  8. package/src/base-client/components/common/XTimeline/XTimeline.vue +477 -477
  9. package/src/base-client/components/his/XHisEditor/XHisEditor.vue +705 -705
  10. package/src/base-client/components/his/XList/XList.vue +938 -938
  11. package/src/base-client/components/his/XTimeSelect/XTimeSelect.vue +354 -354
  12. package/src/base-client/components/his/XTitle/XTitle.vue +314 -314
  13. package/src/base-client/components/his/XTreeRows/XTreeRows.vue +341 -341
  14. package/src/base-client/components/his/threeTestOrders/editor.vue +113 -113
  15. package/src/components/FileImageItem/FileItem.vue +320 -320
  16. package/src/components/FileImageItem/FileItemGroup.vue +297 -297
  17. package/src/pages/WorkflowDetail/WorkflowDetail.vue +404 -404
  18. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowHandle.vue +1815 -1815
  19. package/src/pages/WorkflowDetail/WorkflowPageDetail/worklog.vue +98 -98
  20. package/src/pages/userInfoDetailManage/ApplyRecordQuery/index.vue +64 -64
  21. package/src/pages/userInfoDetailManage/ExceptionRecordQuery/index.vue +45 -45
  22. package/src/pages/userInfoDetailManage/SafeCheckPaperV3RecordQuery/index.vue +64 -64
  23. package/src/pages/userInfoDetailManage/TelephoneV3RecordQuery/index.vue +64 -64
  24. package/src/pages/userInfoDetailManage/userInfoDetailQueryTabs.vue +155 -155
  25. package/src-base-client/components/common/HIS/HForm/HForm.vue +347 -0
  26. package/src-base-client/components/common/XCollapse/XCollapse.vue +0 -0
@@ -1,491 +1,491 @@
1
- <script setup lang="ts">
2
- import XButtons from '@vue2-client/base-client/components/common/XButtons/XButtons.vue'
3
- import { ref, computed, useAttrs } from 'vue'
4
-
5
- defineProps({
6
- // HButtons特有的属性
7
- buttonStyle: {
8
- type: String,
9
- default: 'button24'
10
- }
11
- })
12
-
13
- // 内部 XButtons 实例引用
14
- const xButtonsRef = ref()
15
-
16
- // 兼容多种样式配置
17
- const attrs = useAttrs()
18
- const wrapperClassObject = computed(() => {
19
- const a = attrs
20
- const classes = {}
21
-
22
- // 通用布尔样式开关(以存在/空字符串/'true' 为真)
23
- const booleanStyleKeys = [
24
- 'max-width200',
25
- 'width173',
26
- 'button_refresh',
27
- 'border', 'no-style',
28
- 'fill-container',
29
- 'no-boder-style',
30
- 'one-button-style' // 一个按钮样式,占满整个宽度
31
- ]
32
- for (const key of booleanStyleKeys) {
33
- const val = a[key]
34
- const truthy = val === true || val === '' || val === 'true'
35
- if (truthy) classes[`h-buttons-${key}`] = true
36
- }
37
- return classes
38
- })
39
-
40
- // 暴露方法:获取内部 XButtons 实例
41
- defineExpose({
42
- getXButtonsInstance: function () { return xButtonsRef.value }
43
- })
44
- </script>
45
-
46
- <template>
47
- <div
48
- class="h-buttons-wrapper"
49
- :class="[
50
- `h-buttons-${buttonStyle}`,
51
- wrapperClassObject
52
- ]"
53
- >
54
- <x-buttons
55
- ref="xButtonsRef"
56
- v-bind="$attrs"
57
- v-on="$listeners"
58
- >
59
- <template v-for="(_, name) in $slots" #[name]="slotData">
60
- <slot :name="name" v-bind="slotData" />
61
- </template>
62
- </x-buttons>
63
- </div>
64
- </template>
65
-
66
- <style scoped lang="less">
67
- .h-buttons-wrapper {
68
- // 基础样式
69
- :deep(.ant-btn-group) {
70
- .ant-btn {
71
- border-radius: 6px;
72
- background-color: #FFFFFF;
73
- border: 1px solid #9499A0;
74
- color: #313131;
75
- font-weight: normal;
76
- letter-spacing: 0em;
77
- width: 110px;
78
- font-size: 16px;
79
- font-family: "Source Han Sans";
80
- line-height: normal;
81
- margin-right: 25px;
82
- height: 32px;
83
- }
84
- }
85
- // button24样式
86
- &.h-buttons-button24 {
87
- :deep(.ant-btn-group) {
88
- .ant-btn {
89
- border: 1px solid #CDCDCD;
90
- color: #5D5C5C;
91
- // top: -100px;
92
- width: fit-content;
93
- min-width: 110px;
94
- }
95
- }
96
- }
97
- // button23样式
98
- &.h-buttons-button23 {
99
- :deep(.ant-btn-group) {
100
- .ant-btn {
101
- border: none;
102
- padding: 0 !important;
103
- color: #FFFFFF;
104
- border-radius: 50%;
105
- background-color: #1890FF;
106
- margin-left: 10px;
107
- top: -88px;
108
- width: 30px;
109
- height: 30px;
110
- }
111
- }
112
- }
113
- // +号样式(共享基础样式)
114
- &.h-buttons-table-height-button23,
115
- &.h-buttons-table-height-button23-no-transform {
116
- :deep(.ant-btn-group) {
117
- display: inline-flex;
118
- align-items: center;
119
- height: 100%;
120
-
121
- .ant-btn {
122
- display: inline-flex;
123
- align-items: center;
124
- justify-content: center;
125
- border: none;
126
- padding: 0 !important;
127
- color: #FFFFFF;
128
- border-radius: 50%;
129
- background-color: #1890FF;
130
- margin-left: 10px;
131
- width: 30px;
132
- height: 30px;
133
- }
134
- }
135
- }
136
- // 仅在有分页的场景上移
137
- &.h-buttons-table-height-button23 {
138
- :deep(.ant-btn-group) {
139
- .ant-btn { transform: translateY(-100%); }
140
- }
141
- }
142
- // 居中+悬停高亮的新样式
143
- &.h-buttons-plus-center {
144
- :deep(.ant-btn-group) {
145
- display: flex;
146
- align-items: center;
147
- justify-content: center;
148
- gap: 16px;
149
-
150
- .ant-btn {
151
- display: inline-flex;
152
- align-items: center;
153
- justify-content: center;
154
- border: 1px solid #CDCDCD;
155
- color: #5D5C5C;
156
- min-width: 110px;
157
- transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease;
158
-
159
- &:hover {
160
- background-color: #0057FE;
161
- border-color: #0057FE;
162
- color: #FFFFFF;
163
- }
164
- /* 支持通过 data-type 改变悬停颜色 */
165
- &[data-type='success']:hover {
166
- background-color: #34C76E;
167
- border-color: #34C76E;
168
- color: #FFFFFF;
169
- }
170
- }
171
- }
172
- }
173
- // 按钮布局样式公共部分
174
- &.h-buttons-button-left,
175
- &.h-buttons-button-center,
176
- &.h-buttons-button-right,
177
- &.h-buttons-button-space-between {
178
- :deep(.ant-btn-group) {
179
- width: 100%;
180
- display: flex;
181
- flex-wrap: nowrap;
182
- .ant-btn {
183
- border: 1px solid #CDCDCD;
184
- color: #5D5C5C;
185
- white-space: nowrap;
186
- overflow: hidden;
187
- margin-right: 0px;
188
- text-overflow: ellipsis;
189
- }
190
- }
191
- }
192
- &.h-buttons-max-width200 {
193
- :deep(.ant-btn) {
194
- max-width: 200px !important;
195
- }
196
- }
197
- // button-left样式 - 按钮从左到右排列
198
- &.h-buttons-button-left {
199
- :deep(.ant-btn-group) {
200
- justify-content: flex-start;
201
- gap: 12px;
202
- }
203
- }
204
- // button-center样式 - 按钮居中排列
205
- &.h-buttons-button-center {
206
- :deep(.ant-btn-group) {
207
- justify-content: center;
208
- gap: 12px;
209
- }
210
- }
211
- // button-right样式 - 按钮从右到左排列
212
- &.h-buttons-button-right {
213
- :deep(.ant-btn-group) {
214
- justify-content: flex-end;
215
- gap: 12px;
216
- }
217
- }
218
- // button-space-between样式 - 按钮两端对齐(两个按钮时分布在两端)
219
- &.h-buttons-button-space-between {
220
- :deep(.ant-btn-group) {
221
- justify-content: space-between;
222
- }
223
- }
224
-
225
- // button-icon-tiles样式 - 左侧彩色图标块 + 右侧文字
226
- &.h-buttons-button-icon-tiles {
227
- :deep(.ant-btn-group) {
228
- width: 100%;
229
- display: flex;
230
- flex-wrap: wrap; // 允许自动换行
231
- justify-content: flex-start; // 左对齐
232
- gap: 0; // 取消统一间距
233
-
234
- .ant-btn {
235
- position: relative;
236
- display: inline-flex;
237
- align-items: center;
238
- gap: 10px; // 控制图标与文字间距
239
- border: 1px solid #E6E8EB;
240
- font-size: 14px;
241
- height: 44px;
242
- padding: 0 10px 0 10px;
243
- border-radius: 8px;
244
- min-width: 116px;
245
- box-shadow: 0 2px 0 rgba(0,0,0,0.02);
246
- margin-right: 12px; // 用margin控制横向间距,末尾一排自然换行
247
- }
248
-
249
- .ant-btn .anticon {
250
- width: 26px;
251
- height: 26px;
252
- display: inline-flex;
253
- align-items: center;
254
- justify-content: center;
255
- border-radius: 6px;
256
- color: #fff;
257
- font-size: 14px;
258
- flex: 0 0 26px; // 固定正方形,防止随文本挤压变形
259
- box-sizing: border-box;
260
- }
261
-
262
- /* 默认蓝色,支持通过 data-type 改变色块(success/warning/error/default)*/
263
- .ant-btn .anticon { background: #3FA7FF; }
264
- .ant-btn[data-type='success'] .anticon { background: #34C76E; }
265
- .ant-btn[data-type='warning'] .anticon { background: #FFA940; }
266
- .ant-btn[data-type='error'] .anticon { background: #FF7875; }
267
- .ant-btn[disabled] .anticon { background: #BFBFBF; }
268
-
269
- /* 图标与文字间距在有图标时更自然 */
270
- .ant-btn > .anticon + span { margin-left: 10px; }
271
- }
272
- }
273
- // 水印图标与按钮容器布局调整
274
- &.h-buttons-button-watermark-icon {
275
- :deep(.watermark-icon) { transform: translate(-50%, -54%) !important; }
276
- :deep(.x-button) { display: flex !important; }
277
- :deep(.ant-btn-group) {
278
- margin: 0 auto;
279
- display: block;
280
- }
281
- }
282
- &.h-buttons-0padding-button {
283
- padding: 0px 4px;
284
- }
285
- // button25样式 用于会诊申请侧边栏按钮样式
286
- &.h-buttons-button25 {
287
- :deep(.x-buttons) {
288
- .ant-btn-group {
289
- width: 173px;
290
- justify-content: space-between;
291
-
292
- .ant-btn {
293
- width: 173px;
294
- }
295
- }
296
- }
297
- }
298
- &.h-buttons-button_refresh {
299
- margin-top: 10px;
300
- }
301
- // 居中样式 用于门诊收费左侧按钮样式(三个按钮居中样式)
302
- &.h-buttons-out-button {
303
- :deep(.x-buttons) {
304
- margin-top: 2px !important;
305
- margin-bottom: 10px !important;
306
- display: flex;
307
- justify-content: center;
308
- .ant-btn-group {
309
- display: flex;
310
- flex-wrap: nowrap;
311
- gap: 12px;
312
- .ant-btn {
313
- width: 110px;
314
- height: 32px;
315
- border-radius: 6px;
316
- opacity: 1;
317
- background: #FFFFFF;
318
- box-sizing: border-box;
319
- border: 1px solid #9499A0;
320
- margin-right: 0px;
321
- /* 允许正常文本渲染,避免省略号导致的“变成点了” */
322
- font-family: "Source Han Sans";
323
- font-size: 16px;
324
- font-weight: normal;
325
- line-height: normal;
326
- color: #313131;
327
- }
328
- /* 还原子元素默认高度,避免文字被压缩成点 */
329
- }
330
- }
331
- }
332
- // button15样式 - 垂直排列的深色按钮组
333
- &.h-buttons-button15 {
334
- :deep(.x-buttons) {
335
- margin-top: -22px;
336
- .ant-btn-group {
337
- flex-direction: column; /* 按钮垂直排列 */
338
- display: flex; /* 启用flex布局 */
339
- gap: 6px; /* 按钮间距 */
340
- .ant-btn {
341
- border: none; /* 移除边框 */
342
- color: #FFFFFF; /* 字体颜色 */
343
- background-color: #5D5C5C; /* 背景色 */
344
- box-sizing: border-box; /* 盒模型 */
345
- left: 12px; /* 左偏移 */
346
- width: 280px; /* 宽度 */
347
- }
348
- }
349
- }
350
- }
351
- // button2样式
352
- &.h-buttons-button2 {
353
- :deep(.x-buttons) {
354
- margin: -20px 6px -20px 6px;
355
- .ant-btn-group {
356
- width: 100%;
357
- justify-content: space-between;
358
- display: flex; /* 确保flex布局 */
359
- flex-wrap: nowrap; /* 防止换行 */
360
- .ant-btn {
361
- border-radius: 6px; /* 边框圆角 */
362
- border: none; /* 移除边框 */
363
- flex: 0 0 46%; /* flex-grow: 0, flex-shrink: 0, flex-basis: 46% */
364
- min-width: 0; /* 覆盖可能的默认最小宽度 */
365
- font-size: 16px; /* 字体大小 */
366
- height: 32px; /* 高度 */
367
- color: #FFFFFF; /* 字体颜色 */
368
- background-color: #1890FF; /* 背景颜色 */
369
- }
370
- }
371
- }
372
- }
373
- // 与表单项内联使用时的垂直居中对齐样式
374
- &.h-buttons-form-inline {
375
- :deep(.ant-btn-group){
376
- height: 45px;
377
- display: flex;
378
- align-items: center;
379
- }
380
- }
381
- &.h-buttons-width173 {
382
- :deep(.ant-btn) {
383
- width: 173px !important;
384
- }
385
- }
386
- // 按钮无边框+无图标+无阴影
387
- &.h-button-no-style{
388
- :deep(.ant-btn) {
389
- border: 0px;
390
- .anticon{
391
- display: none;
392
- }
393
- }
394
- :deep(.ant-btn-primary){
395
- text-shadow: none;
396
- box-shadow: none;
397
- }
398
- }
399
- // 按钮组边距
400
- &.h-button-border{
401
- border: 1px solid #E5E9F0;
402
- border-radius: 6px;
403
- }
404
- // 按钮撑开整个容器
405
- &.h-buttons-fill-container{
406
- :deep(.x-buttons) {
407
- width: 100%;
408
- .ant-btn-group{
409
- width: 100%;
410
- .ant-btn{
411
- width: 100%;
412
- margin-right: 0px;
413
- }
414
- }
415
- }
416
- }
417
- &.h-buttons-one-button-style {
418
- margin: 0 !important;
419
- padding: 0 !important;
420
- :deep(.x-buttons) {
421
- margin: 0 !important;
422
- padding: 0 !important;
423
- .ant-btn-group {
424
- width: 100%;
425
- height: 32px;
426
- justify-content: space-between;
427
- display: flex;
428
- flex-wrap: nowrap;
429
- .ant-btn {
430
- width: 100%;
431
- margin-right: 0px !important;
432
- min-width: 100% !important;
433
- border-radius: 6px; /* 边框圆角 */
434
- font-size: 18px; /* 字体大小 */
435
- line-height: 26px;
436
- font-weight: bold;
437
- letter-spacing: 14px;
438
- height: 32px; /* 高度 */
439
- color: #FFFFFF; /* 字体颜色 */
440
- background: #0057FE;/* 背景颜色 */
441
- }
442
- }
443
- }
444
- }
445
- // no-boder-style样式 - 无边框样式
446
- &.h-buttons-no-boder-style {
447
- :deep(.ant-btn-group) {
448
- margin-left: -20px;
449
- .ant-btn {
450
- border: none !important;
451
- background: transparent !important;
452
- height: 23px;
453
- opacity: 1;
454
- font-family: "Source Han Sans";
455
- font-size: 16px;
456
- font-weight: normal;
457
- line-height: normal;
458
- letter-spacing: 0em;
459
- color: #313131;
460
- padding: 0;
461
- box-shadow: none;
462
- margin-right: 0;
463
- margin-left: 0;
464
-
465
- // 图标样式
466
- .anticon {
467
- height: 16px;
468
- width: 16px;
469
- opacity: 1;
470
- background: transparent;
471
- display: inline-flex;
472
- align-items: center;
473
- justify-content: center;
474
- color: #94979E;
475
- margin-right: 4px;
476
- }
477
-
478
- &:hover {
479
- background: transparent !important;
480
- color: #313131;
481
- }
482
-
483
- &:focus {
484
- background: transparent !important;
485
- color: #313131;
486
- }
487
- }
488
- }
489
- }
490
- }
491
- </style>
1
+ <script setup lang="ts">
2
+ import XButtons from '@vue2-client/base-client/components/common/XButtons/XButtons.vue'
3
+ import { ref, computed, useAttrs } from 'vue'
4
+
5
+ defineProps({
6
+ // HButtons特有的属性
7
+ buttonStyle: {
8
+ type: String,
9
+ default: 'button24'
10
+ }
11
+ })
12
+
13
+ // 内部 XButtons 实例引用
14
+ const xButtonsRef = ref()
15
+
16
+ // 兼容多种样式配置
17
+ const attrs = useAttrs()
18
+ const wrapperClassObject = computed(() => {
19
+ const a = attrs
20
+ const classes = {}
21
+
22
+ // 通用布尔样式开关(以存在/空字符串/'true' 为真)
23
+ const booleanStyleKeys = [
24
+ 'max-width200',
25
+ 'width173',
26
+ 'button_refresh',
27
+ 'border', 'no-style',
28
+ 'fill-container',
29
+ 'no-boder-style',
30
+ 'one-button-style' // 一个按钮样式,占满整个宽度
31
+ ]
32
+ for (const key of booleanStyleKeys) {
33
+ const val = a[key]
34
+ const truthy = val === true || val === '' || val === 'true'
35
+ if (truthy) classes[`h-buttons-${key}`] = true
36
+ }
37
+ return classes
38
+ })
39
+
40
+ // 暴露方法:获取内部 XButtons 实例
41
+ defineExpose({
42
+ getXButtonsInstance: function () { return xButtonsRef.value }
43
+ })
44
+ </script>
45
+
46
+ <template>
47
+ <div
48
+ class="h-buttons-wrapper"
49
+ :class="[
50
+ `h-buttons-${buttonStyle}`,
51
+ wrapperClassObject
52
+ ]"
53
+ >
54
+ <x-buttons
55
+ ref="xButtonsRef"
56
+ v-bind="$attrs"
57
+ v-on="$listeners"
58
+ >
59
+ <template v-for="(_, name) in $slots" #[name]="slotData">
60
+ <slot :name="name" v-bind="slotData" />
61
+ </template>
62
+ </x-buttons>
63
+ </div>
64
+ </template>
65
+
66
+ <style scoped lang="less">
67
+ .h-buttons-wrapper {
68
+ // 基础样式
69
+ :deep(.ant-btn-group) {
70
+ .ant-btn {
71
+ border-radius: 6px;
72
+ background-color: #FFFFFF;
73
+ border: 1px solid #9499A0;
74
+ color: #313131;
75
+ font-weight: normal;
76
+ letter-spacing: 0em;
77
+ width: 110px;
78
+ font-size: 16px;
79
+ font-family: "Source Han Sans";
80
+ line-height: normal;
81
+ margin-right: 25px;
82
+ height: 32px;
83
+ }
84
+ }
85
+ // button24样式
86
+ &.h-buttons-button24 {
87
+ :deep(.ant-btn-group) {
88
+ .ant-btn {
89
+ border: 1px solid #CDCDCD;
90
+ color: #5D5C5C;
91
+ // top: -100px;
92
+ width: fit-content;
93
+ min-width: 110px;
94
+ }
95
+ }
96
+ }
97
+ // button23样式
98
+ &.h-buttons-button23 {
99
+ :deep(.ant-btn-group) {
100
+ .ant-btn {
101
+ border: none;
102
+ padding: 0 !important;
103
+ color: #FFFFFF;
104
+ border-radius: 50%;
105
+ background-color: #1890FF;
106
+ margin-left: 10px;
107
+ top: -88px;
108
+ width: 30px;
109
+ height: 30px;
110
+ }
111
+ }
112
+ }
113
+ // +号样式(共享基础样式)
114
+ &.h-buttons-table-height-button23,
115
+ &.h-buttons-table-height-button23-no-transform {
116
+ :deep(.ant-btn-group) {
117
+ display: inline-flex;
118
+ align-items: center;
119
+ height: 100%;
120
+
121
+ .ant-btn {
122
+ display: inline-flex;
123
+ align-items: center;
124
+ justify-content: center;
125
+ border: none;
126
+ padding: 0 !important;
127
+ color: #FFFFFF;
128
+ border-radius: 50%;
129
+ background-color: #1890FF;
130
+ margin-left: 10px;
131
+ width: 30px;
132
+ height: 30px;
133
+ }
134
+ }
135
+ }
136
+ // 仅在有分页的场景上移
137
+ &.h-buttons-table-height-button23 {
138
+ :deep(.ant-btn-group) {
139
+ .ant-btn { transform: translateY(-100%); }
140
+ }
141
+ }
142
+ // 居中+悬停高亮的新样式
143
+ &.h-buttons-plus-center {
144
+ :deep(.ant-btn-group) {
145
+ display: flex;
146
+ align-items: center;
147
+ justify-content: center;
148
+ gap: 16px;
149
+
150
+ .ant-btn {
151
+ display: inline-flex;
152
+ align-items: center;
153
+ justify-content: center;
154
+ border: 1px solid #CDCDCD;
155
+ color: #5D5C5C;
156
+ min-width: 110px;
157
+ transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease;
158
+
159
+ &:hover {
160
+ background-color: #0057FE;
161
+ border-color: #0057FE;
162
+ color: #FFFFFF;
163
+ }
164
+ /* 支持通过 data-type 改变悬停颜色 */
165
+ &[data-type='success']:hover {
166
+ background-color: #34C76E;
167
+ border-color: #34C76E;
168
+ color: #FFFFFF;
169
+ }
170
+ }
171
+ }
172
+ }
173
+ // 按钮布局样式公共部分
174
+ &.h-buttons-button-left,
175
+ &.h-buttons-button-center,
176
+ &.h-buttons-button-right,
177
+ &.h-buttons-button-space-between {
178
+ :deep(.ant-btn-group) {
179
+ width: 100%;
180
+ display: flex;
181
+ flex-wrap: nowrap;
182
+ .ant-btn {
183
+ border: 1px solid #CDCDCD;
184
+ color: #5D5C5C;
185
+ white-space: nowrap;
186
+ overflow: hidden;
187
+ margin-right: 0px;
188
+ text-overflow: ellipsis;
189
+ }
190
+ }
191
+ }
192
+ &.h-buttons-max-width200 {
193
+ :deep(.ant-btn) {
194
+ max-width: 200px !important;
195
+ }
196
+ }
197
+ // button-left样式 - 按钮从左到右排列
198
+ &.h-buttons-button-left {
199
+ :deep(.ant-btn-group) {
200
+ justify-content: flex-start;
201
+ gap: 12px;
202
+ }
203
+ }
204
+ // button-center样式 - 按钮居中排列
205
+ &.h-buttons-button-center {
206
+ :deep(.ant-btn-group) {
207
+ justify-content: center;
208
+ gap: 12px;
209
+ }
210
+ }
211
+ // button-right样式 - 按钮从右到左排列
212
+ &.h-buttons-button-right {
213
+ :deep(.ant-btn-group) {
214
+ justify-content: flex-end;
215
+ gap: 12px;
216
+ }
217
+ }
218
+ // button-space-between样式 - 按钮两端对齐(两个按钮时分布在两端)
219
+ &.h-buttons-button-space-between {
220
+ :deep(.ant-btn-group) {
221
+ justify-content: space-between;
222
+ }
223
+ }
224
+
225
+ // button-icon-tiles样式 - 左侧彩色图标块 + 右侧文字
226
+ &.h-buttons-button-icon-tiles {
227
+ :deep(.ant-btn-group) {
228
+ width: 100%;
229
+ display: flex;
230
+ flex-wrap: wrap; // 允许自动换行
231
+ justify-content: flex-start; // 左对齐
232
+ gap: 0; // 取消统一间距
233
+
234
+ .ant-btn {
235
+ position: relative;
236
+ display: inline-flex;
237
+ align-items: center;
238
+ gap: 10px; // 控制图标与文字间距
239
+ border: 1px solid #E6E8EB;
240
+ font-size: 14px;
241
+ height: 44px;
242
+ padding: 0 10px 0 10px;
243
+ border-radius: 8px;
244
+ min-width: 116px;
245
+ box-shadow: 0 2px 0 rgba(0,0,0,0.02);
246
+ margin-right: 12px; // 用margin控制横向间距,末尾一排自然换行
247
+ }
248
+
249
+ .ant-btn .anticon {
250
+ width: 26px;
251
+ height: 26px;
252
+ display: inline-flex;
253
+ align-items: center;
254
+ justify-content: center;
255
+ border-radius: 6px;
256
+ color: #fff;
257
+ font-size: 14px;
258
+ flex: 0 0 26px; // 固定正方形,防止随文本挤压变形
259
+ box-sizing: border-box;
260
+ }
261
+
262
+ /* 默认蓝色,支持通过 data-type 改变色块(success/warning/error/default)*/
263
+ .ant-btn .anticon { background: #3FA7FF; }
264
+ .ant-btn[data-type='success'] .anticon { background: #34C76E; }
265
+ .ant-btn[data-type='warning'] .anticon { background: #FFA940; }
266
+ .ant-btn[data-type='error'] .anticon { background: #FF7875; }
267
+ .ant-btn[disabled] .anticon { background: #BFBFBF; }
268
+
269
+ /* 图标与文字间距在有图标时更自然 */
270
+ .ant-btn > .anticon + span { margin-left: 10px; }
271
+ }
272
+ }
273
+ // 水印图标与按钮容器布局调整
274
+ &.h-buttons-button-watermark-icon {
275
+ :deep(.watermark-icon) { transform: translate(-50%, -54%) !important; }
276
+ :deep(.x-button) { display: flex !important; }
277
+ :deep(.ant-btn-group) {
278
+ margin: 0 auto;
279
+ display: block;
280
+ }
281
+ }
282
+ &.h-buttons-0padding-button {
283
+ padding: 0px 4px;
284
+ }
285
+ // button25样式 用于会诊申请侧边栏按钮样式
286
+ &.h-buttons-button25 {
287
+ :deep(.x-buttons) {
288
+ .ant-btn-group {
289
+ width: 173px;
290
+ justify-content: space-between;
291
+
292
+ .ant-btn {
293
+ width: 173px;
294
+ }
295
+ }
296
+ }
297
+ }
298
+ &.h-buttons-button_refresh {
299
+ margin-top: 10px;
300
+ }
301
+ // 居中样式 用于门诊收费左侧按钮样式(三个按钮居中样式)
302
+ &.h-buttons-out-button {
303
+ :deep(.x-buttons) {
304
+ margin-top: 2px !important;
305
+ margin-bottom: 10px !important;
306
+ display: flex;
307
+ justify-content: center;
308
+ .ant-btn-group {
309
+ display: flex;
310
+ flex-wrap: nowrap;
311
+ gap: 12px;
312
+ .ant-btn {
313
+ width: 110px;
314
+ height: 32px;
315
+ border-radius: 6px;
316
+ opacity: 1;
317
+ background: #FFFFFF;
318
+ box-sizing: border-box;
319
+ border: 1px solid #9499A0;
320
+ margin-right: 0px;
321
+ /* 允许正常文本渲染,避免省略号导致的“变成点了” */
322
+ font-family: "Source Han Sans";
323
+ font-size: 16px;
324
+ font-weight: normal;
325
+ line-height: normal;
326
+ color: #313131;
327
+ }
328
+ /* 还原子元素默认高度,避免文字被压缩成点 */
329
+ }
330
+ }
331
+ }
332
+ // button15样式 - 垂直排列的深色按钮组
333
+ &.h-buttons-button15 {
334
+ :deep(.x-buttons) {
335
+ margin-top: -22px;
336
+ .ant-btn-group {
337
+ flex-direction: column; /* 按钮垂直排列 */
338
+ display: flex; /* 启用flex布局 */
339
+ gap: 6px; /* 按钮间距 */
340
+ .ant-btn {
341
+ border: none; /* 移除边框 */
342
+ color: #FFFFFF; /* 字体颜色 */
343
+ background-color: #0057FE; /* 背景色 */
344
+ box-sizing: border-box; /* 盒模型 */
345
+ left: 12px; /* 左偏移 */
346
+ width: 280px; /* 宽度 */
347
+ }
348
+ }
349
+ }
350
+ }
351
+ // button2样式
352
+ &.h-buttons-button2 {
353
+ :deep(.x-buttons) {
354
+ margin: -20px 6px -20px 6px;
355
+ .ant-btn-group {
356
+ width: 100%;
357
+ justify-content: space-between;
358
+ display: flex; /* 确保flex布局 */
359
+ flex-wrap: nowrap; /* 防止换行 */
360
+ .ant-btn {
361
+ border-radius: 6px; /* 边框圆角 */
362
+ border: none; /* 移除边框 */
363
+ flex: 0 0 46%; /* flex-grow: 0, flex-shrink: 0, flex-basis: 46% */
364
+ min-width: 0; /* 覆盖可能的默认最小宽度 */
365
+ font-size: 16px; /* 字体大小 */
366
+ height: 32px; /* 高度 */
367
+ color: #FFFFFF; /* 字体颜色 */
368
+ background-color: #1890FF; /* 背景颜色 */
369
+ }
370
+ }
371
+ }
372
+ }
373
+ // 与表单项内联使用时的垂直居中对齐样式
374
+ &.h-buttons-form-inline {
375
+ :deep(.ant-btn-group){
376
+ height: 45px;
377
+ display: flex;
378
+ align-items: center;
379
+ }
380
+ }
381
+ &.h-buttons-width173 {
382
+ :deep(.ant-btn) {
383
+ width: 173px !important;
384
+ }
385
+ }
386
+ // 按钮无边框+无图标+无阴影
387
+ &.h-button-no-style{
388
+ :deep(.ant-btn) {
389
+ border: 0px;
390
+ .anticon{
391
+ display: none;
392
+ }
393
+ }
394
+ :deep(.ant-btn-primary){
395
+ text-shadow: none;
396
+ box-shadow: none;
397
+ }
398
+ }
399
+ // 按钮组边距
400
+ &.h-button-border{
401
+ border: 1px solid #E5E9F0;
402
+ border-radius: 6px;
403
+ }
404
+ // 按钮撑开整个容器
405
+ &.h-buttons-fill-container{
406
+ :deep(.x-buttons) {
407
+ width: 100%;
408
+ .ant-btn-group{
409
+ width: 100%;
410
+ .ant-btn{
411
+ width: 100%;
412
+ margin-right: 0px;
413
+ }
414
+ }
415
+ }
416
+ }
417
+ &.h-buttons-one-button-style {
418
+ margin: 0 !important;
419
+ padding: 0 !important;
420
+ :deep(.x-buttons) {
421
+ margin: 0 !important;
422
+ padding: 0 !important;
423
+ .ant-btn-group {
424
+ width: 100%;
425
+ height: 32px;
426
+ justify-content: space-between;
427
+ display: flex;
428
+ flex-wrap: nowrap;
429
+ .ant-btn {
430
+ width: 100%;
431
+ margin-right: 0px !important;
432
+ min-width: 100% !important;
433
+ border-radius: 6px; /* 边框圆角 */
434
+ font-size: 18px; /* 字体大小 */
435
+ line-height: 26px;
436
+ font-weight: bold;
437
+ letter-spacing: 14px;
438
+ height: 32px; /* 高度 */
439
+ color: #FFFFFF; /* 字体颜色 */
440
+ background: #0057FE;/* 背景颜色 */
441
+ }
442
+ }
443
+ }
444
+ }
445
+ // no-boder-style样式 - 无边框样式
446
+ &.h-buttons-no-boder-style {
447
+ :deep(.ant-btn-group) {
448
+ margin-left: -20px;
449
+ .ant-btn {
450
+ border: none !important;
451
+ background: transparent !important;
452
+ height: 23px;
453
+ opacity: 1;
454
+ font-family: "Source Han Sans";
455
+ font-size: 16px;
456
+ font-weight: normal;
457
+ line-height: normal;
458
+ letter-spacing: 0em;
459
+ color: #313131;
460
+ padding: 0;
461
+ box-shadow: none;
462
+ margin-right: 0;
463
+ margin-left: 0;
464
+
465
+ // 图标样式
466
+ .anticon {
467
+ height: 16px;
468
+ width: 16px;
469
+ opacity: 1;
470
+ background: transparent;
471
+ display: inline-flex;
472
+ align-items: center;
473
+ justify-content: center;
474
+ color: #94979E;
475
+ margin-right: 4px;
476
+ }
477
+
478
+ &:hover {
479
+ background: transparent !important;
480
+ color: #313131;
481
+ }
482
+
483
+ &:focus {
484
+ background: transparent !important;
485
+ color: #313131;
486
+ }
487
+ }
488
+ }
489
+ }
490
+ }
491
+ </style>