vue2-client 1.16.35 → 1.16.37

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.
@@ -1,365 +1,366 @@
1
- <script setup lang="ts">
2
- import XButtons from '@vue2-client/base-client/components/common/XButtons/XButtons.vue'
3
- import { ref } 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
- // 暴露方法:获取内部 XButtons 实例
17
- defineExpose({
18
- getXButtonsInstance: function () { return xButtonsRef.value }
19
- })
20
- </script>
21
-
22
- <template>
23
- <div
24
- class="h-buttons-wrapper"
25
- :class="[
26
- `h-buttons-${buttonStyle}`
27
- ]"
28
- >
29
- <x-buttons
30
- ref="xButtonsRef"
31
- v-bind="$attrs"
32
- v-on="$listeners"
33
- >
34
- <template v-for="(_, name) in $slots" #[name]="slotData">
35
- <slot :name="name" v-bind="slotData" />
36
- </template>
37
- </x-buttons>
38
- </div>
39
- </template>
40
-
41
- <style scoped lang="less">
42
- .h-buttons-wrapper {
43
- // 基础样式
44
- :deep(.ant-btn-group) {
45
- .ant-btn {
46
- border-radius: 6px;
47
- background-color: #FFFFFF;
48
- border: 1px solid #9499A0;
49
- color: #313131;
50
- font-weight: normal;
51
- letter-spacing: 0em;
52
- width: 110px;
53
- font-size: 16px;
54
- font-family: "Source Han Sans";
55
- line-height: normal;
56
- margin-right: 25px;
57
- height: 32px;
58
- }
59
- }
60
- // button24样式
61
- &.h-buttons-button24 {
62
- :deep(.ant-btn-group) {
63
- .ant-btn {
64
- border: 1px solid #CDCDCD;
65
- color: #5D5C5C;
66
- // top: -100px;
67
- width: fit-content;
68
- min-width: 110px;
69
- }
70
- }
71
- }
72
- // button23样式
73
- &.h-buttons-button23 {
74
- :deep(.ant-btn-group) {
75
- .ant-btn {
76
- border: none;
77
- padding: 0 !important;
78
- color: #FFFFFF;
79
- border-radius: 50%;
80
- background-color: #1890FF;
81
- margin-left: 10px;
82
- top: -88px;
83
- width: 30px;
84
- height: 30px;
85
- }
86
- }
87
- }
88
- // +号样式
89
- &.h-buttons-table-height-button23 {
90
- :deep(.ant-btn-group) {
91
- display: inline-flex;
92
- align-items: center;
93
- height: 100%;
94
-
95
- .ant-btn {
96
- display: inline-flex;
97
- align-items: center;
98
- justify-content: center;
99
- border: none;
100
- padding: 0 !important;
101
- color: #FFFFFF;
102
- border-radius: 50%;
103
- background-color: #1890FF;
104
- margin-left: 10px;
105
- width: 30px;
106
- height: 30px;
107
- /* 自适应上移:按按钮自身高度百分比位移 */
108
- transform: translateY(-100%);
109
- }
110
- }
111
- }
112
- // 居中+悬停高亮的新样式
113
- &.h-buttons-plus-center {
114
- :deep(.ant-btn-group) {
115
- display: flex;
116
- align-items: center;
117
- justify-content: center;
118
- gap: 16px;
119
-
120
- .ant-btn {
121
- display: inline-flex;
122
- align-items: center;
123
- justify-content: center;
124
- border: 1px solid #CDCDCD;
125
- color: #5D5C5C;
126
- min-width: 110px;
127
- transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease;
128
-
129
- &:hover {
130
- background-color: #0057FE;
131
- border-color: #0057FE;
132
- color: #FFFFFF;
133
- }
134
- /* 支持通过 data-type 改变悬停颜色 */
135
- &[data-type='success']:hover {
136
- background-color: #34C76E;
137
- border-color: #34C76E;
138
- color: #FFFFFF;
139
- }
140
- }
141
- }
142
- }
143
- // button-left样式 - 按钮从左到右排列
144
- &.h-buttons-button-left {
145
- :deep(.ant-btn-group) {
146
- width: 100%;
147
- display: flex;
148
- flex-wrap: nowrap;
149
- justify-content: flex-start;
150
- gap: 12px;
151
- .ant-btn {
152
- border: 1px solid #CDCDCD;
153
- color: #5D5C5C;
154
- flex: 0 0 auto;
155
- min-width: 124px;
156
- width: auto;
157
- white-space: nowrap;
158
- overflow: hidden;
159
- margin-right: 0px;
160
- text-overflow: ellipsis;
161
- }
162
- }
163
- }
164
- // button-center样式 - 按钮居中排列
165
- &.h-buttons-button-center {
166
- :deep(.ant-btn-group) {
167
- width: 100%;
168
- display: flex;
169
- flex-wrap: nowrap;
170
- justify-content: center;
171
- gap: 12px;
172
- .ant-btn {
173
- border: 1px solid #CDCDCD;
174
- color: #5D5C5C;
175
- flex: 0 0 auto;
176
- min-width: 124px;
177
- width: auto;
178
- white-space: nowrap;
179
- overflow: hidden;
180
- margin-right: 0px;
181
- text-overflow: ellipsis;
182
- }
183
- }
184
- }
185
- // button-right样式 - 按钮从右到左排列
186
- &.h-buttons-button-right {
187
- :deep(.ant-btn-group) {
188
- width: 100%;
189
- display: flex;
190
- flex-wrap: nowrap;
191
- justify-content: flex-end;
192
- gap: 12px;
193
- .ant-btn {
194
- border: 1px solid #CDCDCD;
195
- color: #5D5C5C;
196
- flex: 0 0 auto;
197
- width: auto;
198
- min-width: 124px;
199
- white-space: nowrap;
200
- overflow: hidden;
201
- margin-right: 0px;
202
- text-overflow: ellipsis;
203
- }
204
- }
205
- }
206
- // button-space-between样式 - 按钮两端对齐(两个按钮时分布在两端)
207
- &.h-buttons-button-space-between {
208
- :deep(.ant-btn-group) {
209
- width: 100%;
210
- display: flex;
211
- flex-wrap: nowrap;
212
- justify-content: space-between;
213
- .ant-btn {
214
- border: 1px solid #CDCDCD;
215
- color: #5D5C5C;
216
- width: auto;
217
- flex: 0 0 auto;
218
- min-width: 124px;
219
- white-space: nowrap;
220
- overflow: hidden;
221
- margin-right: 0px;
222
- text-overflow: ellipsis;
223
- }
224
- }
225
- }
226
- // button-icon-tiles样式 - 左侧彩色图标块 + 右侧文字
227
- &.h-buttons-button-icon-tiles {
228
- :deep(.ant-btn-group) {
229
- width: 100%;
230
- display: flex;
231
- flex-wrap: wrap; // 允许自动换行
232
- justify-content: flex-start; // 左对齐
233
- gap: 0; // 取消统一间距
234
-
235
- .ant-btn {
236
- position: relative;
237
- display: inline-flex;
238
- align-items: center;
239
- gap: 10px; // 控制图标与文字间距
240
- border: 1px solid #E6E8EB;
241
- font-size: 14px;
242
- height: 44px;
243
- padding: 0 10px 0 10px;
244
- border-radius: 8px;
245
- min-width: 116px;
246
- box-shadow: 0 2px 0 rgba(0,0,0,0.02);
247
- margin-right: 12px; // 用margin控制横向间距,末尾一排自然换行
248
- }
249
-
250
- .ant-btn .anticon {
251
- width: 26px;
252
- height: 26px;
253
- display: inline-flex;
254
- align-items: center;
255
- justify-content: center;
256
- border-radius: 6px;
257
- color: #fff;
258
- font-size: 14px;
259
- flex: 0 0 26px; // 固定正方形,防止随文本挤压变形
260
- box-sizing: border-box;
261
- }
262
-
263
- /* 默认蓝色,支持通过 data-type 改变色块(success/warning/error/default)*/
264
- .ant-btn .anticon { background: #3FA7FF; }
265
- .ant-btn[data-type='success'] .anticon { background: #34C76E; }
266
- .ant-btn[data-type='warning'] .anticon { background: #FFA940; }
267
- .ant-btn[data-type='error'] .anticon { background: #FF7875; }
268
- .ant-btn[disabled] .anticon { background: #BFBFBF; }
269
-
270
- /* 图标与文字间距在有图标时更自然 */
271
- .ant-btn > .anticon + span { margin-left: 10px; }
272
- }
273
- }
274
- // 水印图标与按钮容器布局调整
275
- &.h-buttons-button-watermark-icon {
276
- :deep(.watermark-icon) { transform: translate(-50%, -54%) !important; }
277
- :deep(.x-button) { display: flex !important; }
278
- :deep(.ant-btn-group) {
279
- margin: 0 auto;
280
- display: block;
281
- }
282
- }
283
- &.h-buttons-0padding-button {
284
- padding: 0px 4px;
285
- }
286
- // button25样式 用于会诊申请侧边栏按钮样式
287
- &.h-buttons-button25 {
288
- :deep(.x-buttons) {
289
- margin: -20px 3px -20px 3px;
290
-
291
- .ant-btn-group {
292
- width: 173px;
293
- justify-content: space-between;
294
-
295
- .ant-btn {
296
- width: 173px;
297
- }
298
- }
299
- }
300
- }
301
- // 居中样式 用于门诊收费左侧按钮样式(三个按钮居中样式)
302
- &.h-buttons-out-button {
303
- :deep(.x-buttons) {
304
- margin-top: -1vw;
305
- display: flex;
306
- justify-content: center;
307
- .ant-btn-group {
308
- display: flex;
309
- flex-wrap: nowrap;
310
- gap: 12px;
311
- .ant-btn {
312
- box-sizing: border-box;
313
- margin-right: 0px;
314
- width: auto;
315
- min-width: 130px;
316
- white-space: nowrap;
317
- overflow: hidden;
318
- text-overflow: ellipsis;
319
- }
320
- }
321
- }
322
- }
323
- // button15样式 - 垂直排列的深色按钮组
324
- &.h-buttons-button15 {
325
- :deep(.x-buttons) {
326
- margin-top: -22px;
327
- .ant-btn-group {
328
- flex-direction: column; /* 按钮垂直排列 */
329
- display: flex; /* 启用flex布局 */
330
- gap: 6px; /* 按钮间距 */
331
- .ant-btn {
332
- border: none; /* 移除边框 */
333
- color: #FFFFFF; /* 字体颜色 */
334
- background-color: #5D5C5C; /* 背景色 */
335
- box-sizing: border-box; /* 盒模型 */
336
- left: 12px; /* 左偏移 */
337
- width: 280px; /* 宽度 */
338
- }
339
- }
340
- }
341
- }
342
- // button2样式
343
- &.h-buttons-button2 {
344
- :deep(.x-buttons) {
345
- margin: -20px 6px -20px 6px;
346
- .ant-btn-group {
347
- width: 100%;
348
- justify-content: space-between;
349
- display: flex; /* 确保flex布局 */
350
- flex-wrap: nowrap; /* 防止换行 */
351
- .ant-btn {
352
- border-radius: 6px; /* 边框圆角 */
353
- border: none; /* 移除边框 */
354
- flex: 0 0 46%; /* flex-grow: 0, flex-shrink: 0, flex-basis: 46% */
355
- min-width: 0; /* 覆盖可能的默认最小宽度 */
356
- font-size: 16px; /* 字体大小 */
357
- height: 32px; /* 高度 */
358
- color: #FFFFFF; /* 字体颜色 */
359
- background-color: #1890FF; /* 背景颜色 */
360
- }
361
- }
362
- }
363
- }
364
- }
365
- </style>
1
+ <script setup lang="ts">
2
+ import XButtons from '@vue2-client/base-client/components/common/XButtons/XButtons.vue'
3
+ import { ref } 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
+ // 暴露方法:获取内部 XButtons 实例
17
+ defineExpose({
18
+ getXButtonsInstance: function () { return xButtonsRef.value }
19
+ })
20
+ </script>
21
+
22
+ <template>
23
+ <div
24
+ class="h-buttons-wrapper"
25
+ :class="[
26
+ `h-buttons-${buttonStyle}`
27
+ ]"
28
+ >
29
+ <x-buttons
30
+ ref="xButtonsRef"
31
+ v-bind="$attrs"
32
+ v-on="$listeners"
33
+ >
34
+ <template v-for="(_, name) in $slots" #[name]="slotData">
35
+ <slot :name="name" v-bind="slotData" />
36
+ </template>
37
+ </x-buttons>
38
+ </div>
39
+ </template>
40
+
41
+ <style scoped lang="less">
42
+ .h-buttons-wrapper {
43
+ // 基础样式
44
+ :deep(.ant-btn-group) {
45
+ .ant-btn {
46
+ border-radius: 6px;
47
+ background-color: #FFFFFF;
48
+ border: 1px solid #9499A0;
49
+ color: #313131;
50
+ font-weight: normal;
51
+ letter-spacing: 0em;
52
+ width: 110px;
53
+ font-size: 16px;
54
+ font-family: "Source Han Sans";
55
+ line-height: normal;
56
+ margin-right: 25px;
57
+ height: 32px;
58
+ }
59
+ }
60
+ // button24样式
61
+ &.h-buttons-button24 {
62
+ :deep(.ant-btn-group) {
63
+ .ant-btn {
64
+ border: 1px solid #CDCDCD;
65
+ color: #5D5C5C;
66
+ // top: -100px;
67
+ width: fit-content;
68
+ min-width: 110px;
69
+ }
70
+ }
71
+ }
72
+ // button23样式
73
+ &.h-buttons-button23 {
74
+ :deep(.ant-btn-group) {
75
+ .ant-btn {
76
+ border: none;
77
+ padding: 0 !important;
78
+ color: #FFFFFF;
79
+ border-radius: 50%;
80
+ background-color: #1890FF;
81
+ margin-left: 10px;
82
+ top: -88px;
83
+ width: 30px;
84
+ height: 30px;
85
+ }
86
+ }
87
+ }
88
+ // +号样式
89
+ &.h-buttons-table-height-button23 {
90
+ :deep(.ant-btn-group) {
91
+ display: inline-flex;
92
+ align-items: center;
93
+ height: 100%;
94
+
95
+ .ant-btn {
96
+ display: inline-flex;
97
+ align-items: center;
98
+ justify-content: center;
99
+ border: none;
100
+ padding: 0 !important;
101
+ color: #FFFFFF;
102
+ border-radius: 50%;
103
+ background-color: #1890FF;
104
+ margin-left: 10px;
105
+ width: 30px;
106
+ height: 30px;
107
+ /* 自适应上移:按按钮自身高度百分比位移 */
108
+ transform: translateY(-100%);
109
+ }
110
+ }
111
+ }
112
+ // 居中+悬停高亮的新样式
113
+ &.h-buttons-plus-center {
114
+ :deep(.ant-btn-group) {
115
+ display: flex;
116
+ align-items: center;
117
+ justify-content: center;
118
+ gap: 16px;
119
+
120
+ .ant-btn {
121
+ display: inline-flex;
122
+ align-items: center;
123
+ justify-content: center;
124
+ border: 1px solid #CDCDCD;
125
+ color: #5D5C5C;
126
+ min-width: 110px;
127
+ transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease;
128
+
129
+ &:hover {
130
+ background-color: #0057FE;
131
+ border-color: #0057FE;
132
+ color: #FFFFFF;
133
+ }
134
+ /* 支持通过 data-type 改变悬停颜色 */
135
+ &[data-type='success']:hover {
136
+ background-color: #34C76E;
137
+ border-color: #34C76E;
138
+ color: #FFFFFF;
139
+ }
140
+ }
141
+ }
142
+ }
143
+ // button-left样式 - 按钮从左到右排列
144
+ &.h-buttons-button-left {
145
+ :deep(.ant-btn-group) {
146
+ width: 100%;
147
+ display: flex;
148
+ flex-wrap: nowrap;
149
+ justify-content: flex-start;
150
+ gap: 12px;
151
+ .ant-btn {
152
+ border: 1px solid #CDCDCD;
153
+ color: #5D5C5C;
154
+ flex: 0 0 auto;
155
+ min-width: 124px;
156
+ width: auto;
157
+ white-space: nowrap;
158
+ overflow: hidden;
159
+ margin-right: 0px;
160
+ text-overflow: ellipsis;
161
+ }
162
+ }
163
+ }
164
+ // button-center样式 - 按钮居中排列
165
+ &.h-buttons-button-center {
166
+ :deep(.ant-btn-group) {
167
+ width: 100%;
168
+ display: flex;
169
+ flex-wrap: nowrap;
170
+ justify-content: center;
171
+ gap: 12px;
172
+ .ant-btn {
173
+ border: 1px solid #CDCDCD;
174
+ color: #5D5C5C;
175
+ flex: 0 0 auto;
176
+ min-width: 124px;
177
+ width: auto;
178
+ white-space: nowrap;
179
+ overflow: hidden;
180
+ margin-right: 0px;
181
+ text-overflow: ellipsis;
182
+ }
183
+ }
184
+ }
185
+ // button-right样式 - 按钮从右到左排列
186
+ &.h-buttons-button-right {
187
+ :deep(.ant-btn-group) {
188
+ width: 100%;
189
+ display: flex;
190
+ flex-wrap: nowrap;
191
+ justify-content: flex-end;
192
+ gap: 12px;
193
+ .ant-btn {
194
+ border: 1px solid #CDCDCD;
195
+ color: #5D5C5C;
196
+ flex: 0 0 auto;
197
+ width: auto;
198
+ min-width: 124px;
199
+ white-space: nowrap;
200
+ overflow: hidden;
201
+ margin-right: 0px;
202
+ text-overflow: ellipsis;
203
+ }
204
+ }
205
+ }
206
+ // button-space-between样式 - 按钮两端对齐(两个按钮时分布在两端)
207
+ &.h-buttons-button-space-between {
208
+ :deep(.ant-btn-group) {
209
+ width: 100%;
210
+ display: flex;
211
+ flex-wrap: nowrap;
212
+ justify-content: space-between;
213
+ .ant-btn {
214
+ border: 1px solid #CDCDCD;
215
+ color: #5D5C5C;
216
+ width: auto;
217
+ flex: 1 1 auto;
218
+ max-width: 180px;
219
+ min-width: 124px;
220
+ white-space: nowrap;
221
+ overflow: hidden;
222
+ margin-right: 0px;
223
+ text-overflow: ellipsis;
224
+ }
225
+ }
226
+ }
227
+ // button-icon-tiles样式 - 左侧彩色图标块 + 右侧文字
228
+ &.h-buttons-button-icon-tiles {
229
+ :deep(.ant-btn-group) {
230
+ width: 100%;
231
+ display: flex;
232
+ flex-wrap: wrap; // 允许自动换行
233
+ justify-content: flex-start; // 左对齐
234
+ gap: 0; // 取消统一间距
235
+
236
+ .ant-btn {
237
+ position: relative;
238
+ display: inline-flex;
239
+ align-items: center;
240
+ gap: 10px; // 控制图标与文字间距
241
+ border: 1px solid #E6E8EB;
242
+ font-size: 14px;
243
+ height: 44px;
244
+ padding: 0 10px 0 10px;
245
+ border-radius: 8px;
246
+ min-width: 116px;
247
+ box-shadow: 0 2px 0 rgba(0,0,0,0.02);
248
+ margin-right: 12px; // 用margin控制横向间距,末尾一排自然换行
249
+ }
250
+
251
+ .ant-btn .anticon {
252
+ width: 26px;
253
+ height: 26px;
254
+ display: inline-flex;
255
+ align-items: center;
256
+ justify-content: center;
257
+ border-radius: 6px;
258
+ color: #fff;
259
+ font-size: 14px;
260
+ flex: 0 0 26px; // 固定正方形,防止随文本挤压变形
261
+ box-sizing: border-box;
262
+ }
263
+
264
+ /* 默认蓝色,支持通过 data-type 改变色块(success/warning/error/default)*/
265
+ .ant-btn .anticon { background: #3FA7FF; }
266
+ .ant-btn[data-type='success'] .anticon { background: #34C76E; }
267
+ .ant-btn[data-type='warning'] .anticon { background: #FFA940; }
268
+ .ant-btn[data-type='error'] .anticon { background: #FF7875; }
269
+ .ant-btn[disabled] .anticon { background: #BFBFBF; }
270
+
271
+ /* 图标与文字间距在有图标时更自然 */
272
+ .ant-btn > .anticon + span { margin-left: 10px; }
273
+ }
274
+ }
275
+ // 水印图标与按钮容器布局调整
276
+ &.h-buttons-button-watermark-icon {
277
+ :deep(.watermark-icon) { transform: translate(-50%, -54%) !important; }
278
+ :deep(.x-button) { display: flex !important; }
279
+ :deep(.ant-btn-group) {
280
+ margin: 0 auto;
281
+ display: block;
282
+ }
283
+ }
284
+ &.h-buttons-0padding-button {
285
+ padding: 0px 4px;
286
+ }
287
+ // button25样式 用于会诊申请侧边栏按钮样式
288
+ &.h-buttons-button25 {
289
+ :deep(.x-buttons) {
290
+ margin: -20px 3px -20px 3px;
291
+
292
+ .ant-btn-group {
293
+ width: 173px;
294
+ justify-content: space-between;
295
+
296
+ .ant-btn {
297
+ width: 173px;
298
+ }
299
+ }
300
+ }
301
+ }
302
+ // 居中样式 用于门诊收费左侧按钮样式(三个按钮居中样式)
303
+ &.h-buttons-out-button {
304
+ :deep(.x-buttons) {
305
+ margin-top: -1vw;
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
+ box-sizing: border-box;
314
+ margin-right: 0px;
315
+ width: auto;
316
+ min-width: 130px;
317
+ white-space: nowrap;
318
+ overflow: hidden;
319
+ text-overflow: ellipsis;
320
+ }
321
+ }
322
+ }
323
+ }
324
+ // button15样式 - 垂直排列的深色按钮组
325
+ &.h-buttons-button15 {
326
+ :deep(.x-buttons) {
327
+ margin-top: -22px;
328
+ .ant-btn-group {
329
+ flex-direction: column; /* 按钮垂直排列 */
330
+ display: flex; /* 启用flex布局 */
331
+ gap: 6px; /* 按钮间距 */
332
+ .ant-btn {
333
+ border: none; /* 移除边框 */
334
+ color: #FFFFFF; /* 字体颜色 */
335
+ background-color: #5D5C5C; /* 背景色 */
336
+ box-sizing: border-box; /* 盒模型 */
337
+ left: 12px; /* 左偏移 */
338
+ width: 280px; /* 宽度 */
339
+ }
340
+ }
341
+ }
342
+ }
343
+ // button2样式
344
+ &.h-buttons-button2 {
345
+ :deep(.x-buttons) {
346
+ margin: -20px 6px -20px 6px;
347
+ .ant-btn-group {
348
+ width: 100%;
349
+ justify-content: space-between;
350
+ display: flex; /* 确保flex布局 */
351
+ flex-wrap: nowrap; /* 防止换行 */
352
+ .ant-btn {
353
+ border-radius: 6px; /* 边框圆角 */
354
+ border: none; /* 移除边框 */
355
+ flex: 0 0 46%; /* flex-grow: 0, flex-shrink: 0, flex-basis: 46% */
356
+ min-width: 0; /* 覆盖可能的默认最小宽度 */
357
+ font-size: 16px; /* 字体大小 */
358
+ height: 32px; /* 高度 */
359
+ color: #FFFFFF; /* 字体颜色 */
360
+ background-color: #1890FF; /* 背景颜色 */
361
+ }
362
+ }
363
+ }
364
+ }
365
+ }
366
+ </style>