vue2-client 1.16.86 → 1.16.87

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 (40) hide show
  1. package/package.json +112 -112
  2. package/src/assets/img/paymentMethod/icon1.png +0 -0
  3. package/src/assets/img/paymentMethod/icon2.png +0 -0
  4. package/src/assets/img/paymentMethod/icon3.png +0 -0
  5. package/src/assets/img/paymentMethod/icon4.png +0 -0
  6. package/src/assets/img/paymentMethod/icon5.png +0 -0
  7. package/src/assets/img/paymentMethod/icon6.png +0 -0
  8. package/src/assets/svg/female.svg +1 -1
  9. package/src/assets/svg/male.svg +1 -1
  10. package/src/base-client/components/common/HIS/HButtons/HButtons.vue +412 -381
  11. package/src/base-client/components/common/HIS/HForm/HForm.vue +506 -492
  12. package/src/base-client/components/common/HIS/HFormGroup/index.js +3 -3
  13. package/src/base-client/components/common/HIS/HFormTable/HFormTable.vue +5 -0
  14. package/src/base-client/components/common/HIS/HTab/HTab.vue +443 -443
  15. package/src/base-client/components/common/XAddNativeForm/XAddNativeForm.vue +8 -0
  16. package/src/base-client/components/common/XCollapse/XCollapse.vue +833 -833
  17. package/src/base-client/components/common/XDatePicker/index.vue +16 -4
  18. package/src/base-client/components/common/XForm/XFormItem.vue +6 -0
  19. package/src/base-client/components/common/XFormTable/XFormTable.vue +6 -0
  20. package/src/base-client/components/common/XInput/XInput.vue +194 -194
  21. package/src/base-client/components/common/XReport/XReportHospitalizationDemo.vue +45 -0
  22. package/src/base-client/components/common/XTable/XTable.vue +1618 -1610
  23. package/src/base-client/components/common/XTimeline/XTimeline.vue +478 -478
  24. package/src/base-client/components/his/XCheckbox/XCheckbox.vue +194 -181
  25. package/src/base-client/components/his/XHisEditor/XHisEditor.vue +705 -705
  26. package/src/base-client/components/his/XIcon/XIcon.vue +73 -73
  27. package/src/base-client/components/his/XIcon/index.js +3 -3
  28. package/src/base-client/components/his/XIcon/index.md +177 -177
  29. package/src/base-client/components/his/XImportExcelButton/XImportExcelButton.vue +46 -2
  30. package/src/base-client/components/his/XList/XList.vue +829 -829
  31. package/src/base-client/components/his/XRadio/XRadio.vue +389 -389
  32. package/src/base-client/components/his/XSimpleTable/XSimpleTable.vue +159 -159
  33. package/src/base-client/components/his/XTimeSelect/XTimeSelect.vue +306 -306
  34. package/src/base-client/components/his/XTitle/XTitle.vue +274 -274
  35. package/src/base-client/components/his/XTreeRows/XTreeRows.vue +341 -341
  36. package/src/base-client/components/his/threeTestOrders/editor.vue +113 -113
  37. package/src/pages/userInfoDetailManage/ExceptionRecordQuery/index.vue +45 -45
  38. package/src-base-client/components/his/XCharge/XCharge.vue +0 -0
  39. package/src-base-client/components/common/HIS/HForm/HForm.vue +0 -347
  40. /package/src-base-client/components/{common/XCollapse/XCollapse.vue → his/XCharge/README.md} +0 -0
@@ -1,492 +1,506 @@
1
- <script setup lang="ts">
2
- import XAddNativeForm from '@vue2-client/base-client/components/common/XAddNativeForm/XAddNativeForm.vue'
3
- import { ref, computed, useAttrs } from 'vue'
4
-
5
- const xAddNativeFormRef = ref()
6
-
7
- const attrs = useAttrs()
8
- const wrapperClassObject = computed(() => {
9
- const a = attrs
10
- const classes = {}
11
-
12
- // 1) 多个布尔型样式开关(存在且为真则生效)
13
- const booleanStyleKeys = [
14
- 'query-conditions',
15
- 'padding-50',
16
- 'label-text-horizontal',
17
- 'label-text-justify',
18
- 'left-form',
19
- 'charge-form',
20
- 'aligned-form'
21
- ]
22
- for (const key of booleanStyleKeys) {
23
- const val = a[key]
24
- const truthy = val === true || val === '' || val === 'true'
25
- if (truthy) classes[`h-form-${key}`] = true
26
- }
27
- return classes
28
- })
29
-
30
- defineExpose({
31
- getXAddNativeFormInstance: () => xAddNativeFormRef.value,
32
- init: (params) => xAddNativeFormRef.value && xAddNativeFormRef.value.init && xAddNativeFormRef.value.init(params),
33
- asyncSubmit: () => xAddNativeFormRef.value && xAddNativeFormRef.value.asyncSubmit && xAddNativeFormRef.value.asyncSubmit(),
34
- validateForm: () => xAddNativeFormRef.value && xAddNativeFormRef.value.validateForm && xAddNativeFormRef.value.validateForm()
35
- })
36
-
37
- </script>
38
-
39
- <template>
40
- <div
41
- class="h-form-wrapper"
42
- :class="[
43
- wrapperClassObject
44
- ]"
45
- >
46
-
47
- <x-add-native-form
48
- ref="xAddNativeFormRef"
49
- v-bind="$attrs"
50
- v-on="$listeners"
51
- >
52
- <template v-for="(_, name) in $slots" #[name]="slotData">
53
- <slot :name="name" v-bind="slotData" />
54
- </template>
55
- </x-add-native-form>
56
- </div>
57
- </template>
58
-
59
- <style scoped lang="less">
60
- .h-form-wrapper {
61
- // 基础样式
62
- :deep(.ant-form-item) {
63
- margin-bottom: 4px;
64
- }
65
-
66
- // query-conditions 样式
67
- &.h-form-query-conditions {
68
- // ant-card-body 样式
69
- :deep(.ant-card-body) {
70
- padding: 0px;
71
- }
72
-
73
- // ant-row-flex 样式
74
- :deep(.ant-row-flex) {
75
- // x-form-col-wrapper 样式
76
- .x-form-col-wrapper {
77
- .ant-form-item {
78
- display: flex;
79
- width: 100%;
80
- margin-bottom: 4px;
81
- justify-content: space-between;
82
-
83
- .ant-form-item-label {
84
- padding-left: 4px;
85
- width: 100%;
86
- }
87
-
88
- .ant-form-item-control-wrapper {
89
- padding-left: -6px;
90
- }
91
- }
92
- }
93
-
94
- // ant-col-24 样式
95
- .ant-col-24 {
96
- padding: 0px 4px !important;
97
- }
98
- }
99
- }
100
-
101
- &.h-form-padding-50 {
102
- // ant-row-flex 样式
103
- :deep(.ant-row-flex) {
104
- padding-left: 50px;
105
- padding-right: 50px
106
- }
107
- }
108
-
109
- // charge-form 样式
110
- &.h-form-charge-form {
111
- margin-top: 2px !important;
112
- // 定义变量
113
- @font-common: {
114
- font-family: 'Source Han Sans', sans-serif;
115
- font-size: 16px;
116
- font-weight: normal;
117
- letter-spacing: 0em;
118
- font-variation-settings: "opsz" auto;
119
- font-feature-settings: "kern" on;
120
- };
121
-
122
- @color-primary: #313131;
123
- @color-placeholder: #999999;
124
-
125
- // 定义混合宏
126
- .input-base() {
127
- width: 100%;
128
- height: 30px;
129
- line-height: 30px;
130
- vertical-align: top;
131
- margin: 0;
132
- text-align: left;
133
- color: @color-primary;
134
- opacity: 1;
135
- @font-common();
136
- }
137
-
138
- .placeholder-base() {
139
- color: @color-placeholder;
140
- opacity: 1;
141
- @font-common();
142
- }
143
-
144
- .option-group-base() {
145
- height: 30px;
146
- line-height: 30px;
147
- display: flex;
148
- align-items: center;
149
-
150
- .ant-radio-wrapper,
151
- .ant-checkbox-wrapper {
152
- height: 30px;
153
- line-height: 30px;
154
- margin-right: 16px;
155
- }
156
- }
157
-
158
- :deep(.ant-form-item) {
159
- margin-bottom: 16px;
160
- margin-top: 0;
161
- padding: 0;
162
- display: flex;
163
- align-items: center;
164
-
165
- .ant-form-item-label {
166
- text-align: left;
167
- margin: 0 16px 0 0 !important;
168
- width: 64px;
169
- min-width: 64px;
170
- max-width: 64px;
171
- flex-shrink: 0;
172
-
173
- label {
174
- height: 23px;
175
- opacity: 1;
176
- line-height: 23px;
177
- color: @color-primary;
178
- margin: 0;
179
- padding: 0;
180
- white-space: nowrap;
181
- display: block;
182
- @font-common();
183
-
184
- // 移除冒号
185
- &::after {
186
- content: '';
187
- }
188
- }
189
- }
190
-
191
- .ant-form-item-control-wrapper {
192
- margin: 0;
193
- padding: 0;
194
- flex: 1;
195
- min-width: 0;
196
- display: flex;
197
- align-items: center;
198
-
199
- .ant-form-item-control {
200
- margin: 0;
201
- padding: 0;
202
- width: 100%;
203
- text-align: left;
204
- line-height: 30px !important;
205
-
206
- // 输入框样式统一
207
- .ant-input,
208
- .ant-input-affix-wrapper,
209
- .ant-select,
210
- .ant-input-number,
211
- .ant-picker,
212
- .ant-radio-group,
213
- .ant-checkbox-group {
214
- .input-base();
215
- }
216
-
217
- // 选择器样式
218
- .ant-select {
219
- .ant-select-selector {
220
- .input-base();
221
- height: 30px;
222
- line-height: 30px;
223
-
224
- .ant-select-selection-item {
225
- .input-base();
226
- line-height: 30px;
227
- }
228
-
229
- .ant-select-selection-placeholder {
230
- .placeholder-base();
231
- line-height: 30px;
232
- }
233
- }
234
- }
235
-
236
- // 日期选择器样式
237
- .ant-picker {
238
- height: 30px;
239
-
240
- .ant-picker-input {
241
- height: 30px;
242
- line-height: 30px;
243
- .input-base();
244
-
245
- input {
246
- .input-base();
247
- height: 30px;
248
- line-height: 30px;
249
- }
250
- }
251
- }
252
-
253
- // 数字输入框样式
254
- .ant-input-number {
255
- height: 30px;
256
-
257
- .ant-input-number-input {
258
- .input-base();
259
- height: 30px;
260
- line-height: 30px;
261
- }
262
- }
263
-
264
- // 单选框组样式
265
- .ant-radio-group {
266
- .option-group-base();
267
- }
268
-
269
- // 复选框组样式
270
- .ant-checkbox-group {
271
- .option-group-base();
272
- }
273
- }
274
- }
275
- }
276
-
277
- // 重置可能的容器边距
278
- :deep(.ant-row) {
279
- margin: 0;
280
- padding: 0;
281
-
282
- .ant-col {
283
- margin: 0;
284
- padding: 0;
285
- }
286
- }
287
-
288
- // 强制重置所有可能的表单项样式
289
- :deep(.ant-form-item) {
290
- margin: 0 0 16px 0 !important;
291
-
292
- // 重置可能的内部边距
293
- .ant-form-item-control-input,
294
- .ant-form-item-control-input-content {
295
- margin: 0 !important;
296
- padding: 0 !important;
297
- }
298
- }
299
- }
300
-
301
- // label-text-horizontal 样式 - 只控制label文字从左到右排列
302
- &.h-form-label-text-horizontal {
303
- :deep(.ant-form-item-label) {
304
- text-align: left;
305
- direction: ltr;
306
-
307
- // 标签文字水平排列
308
- .ant-form-item-label-text {
309
- display: inline-block;
310
- text-align: left;
311
- direction: ltr;
312
- unicode-bidi: normal;
313
- }
314
-
315
- // 必填标识水平排列
316
- .ant-form-item-required::before {
317
- margin-right: 4px;
318
- margin-left: 0;
319
- }
320
- }
321
- }
322
-
323
- // label-text-justify 样式 - 标签文字两端对齐分散占满 必填*可能会有问题
324
- &.h-form-label-text-justify {
325
- :deep(.ant-form-item-label) {
326
- padding-left: 0;
327
- padding-right: 8px;
328
- label {
329
- position: relative;
330
- display: block;
331
- width: 100%;
332
- white-space: nowrap;
333
- margin: 0;
334
- text-indent: 0;
335
- text-align: justify;
336
- text-align-last: justify;
337
- text-justify: inter-ideograph;
338
- box-sizing: border-box;
339
- padding-right: 12px; // 给绝对定位的冒号留出空间
340
- }
341
- // 将冒号绝对定位到最右侧,避免参与两端对齐计算
342
- label::after {
343
- position: absolute;
344
- right: 0;
345
- }
346
- }
347
- }
348
-
349
- // aligned-form 样式 - 实现标签左对齐、输入框垂直对齐的整齐布局
350
- &.h-form-aligned-form {
351
- :deep(.ant-form-item) {
352
- margin-bottom: 16px;
353
- display: flex;
354
- align-items: center;
355
- width: 100%;
356
-
357
- .ant-form-item-label {
358
- text-align: left;
359
- margin-right: 12px;
360
- flex-shrink: 0;
361
- min-width: 80px; // 确保标签有最小宽度,保持对齐
362
- max-width: 120px; // 限制最大宽度,避免过宽
363
-
364
- label {
365
- margin: 0;
366
- padding: 0;
367
- white-space: nowrap;
368
- display: block;
369
- text-align: left;
370
- line-height: 32px;
371
- height: 32px;
372
- color: rgba(0, 0, 0, 0.85);
373
- font-size: 14px;
374
-
375
- // 移除默认冒号
376
- &::after {
377
- content: '';
378
- }
379
- }
380
- }
381
-
382
- .ant-form-item-control-wrapper {
383
- flex: 1;
384
- min-width: 0;
385
- display: flex;
386
- align-items: center;
387
-
388
- .ant-form-item-control {
389
- width: 100%;
390
- margin: 0;
391
- padding: 0;
392
-
393
- // 统一输入框样式
394
- .ant-input,
395
- .ant-input-affix-wrapper,
396
- .ant-select,
397
- .ant-input-number,
398
- .ant-picker,
399
- .ant-radio-group,
400
- .ant-checkbox-group {
401
- width: 100%;
402
- height: 32px;
403
- line-height: 32px;
404
- vertical-align: top;
405
- margin: 0;
406
- text-align: left;
407
- }
408
-
409
- // 选择器样式
410
- .ant-select {
411
- .ant-select-selector {
412
- height: 32px;
413
- line-height: 32px;
414
-
415
- .ant-select-selection-item,
416
- .ant-select-selection-placeholder {
417
- line-height: 32px;
418
- height: 32px;
419
- }
420
- }
421
- }
422
-
423
- // 日期选择器样式
424
- .ant-picker {
425
- height: 32px;
426
-
427
- .ant-picker-input {
428
- height: 32px;
429
- line-height: 32px;
430
-
431
- input {
432
- height: 32px;
433
- line-height: 32px;
434
- }
435
- }
436
- }
437
-
438
- // 数字输入框样式
439
- .ant-input-number {
440
- height: 32px;
441
-
442
- .ant-input-number-input {
443
- height: 32px;
444
- line-height: 32px;
445
- }
446
- }
447
-
448
- // 单选框组和复选框组样式
449
- .ant-radio-group,
450
- .ant-checkbox-group {
451
- height: 32px;
452
- line-height: 32px;
453
- display: flex;
454
- align-items: center;
455
-
456
- .ant-radio-wrapper,
457
- .ant-checkbox-wrapper {
458
- height: 32px;
459
- line-height: 32px;
460
- margin-right: 16px;
461
- }
462
- }
463
- }
464
- }
465
- }
466
-
467
- // 确保行容器样式
468
- :deep(.ant-row) {
469
- margin: 0;
470
- padding: 0;
471
-
472
- .ant-col {
473
- margin: 0;
474
- padding: 0 8px; // 列与列之间的间距
475
- display: flex;
476
- flex-direction: column;
477
- }
478
- }
479
-
480
- // 重置可能的容器边距
481
- :deep(.ant-form-item) {
482
- margin: 0 0 16px 0 !important;
483
-
484
- .ant-form-item-control-input,
485
- .ant-form-item-control-input-content {
486
- margin: 0 !important;
487
- padding: 0 !important;
488
- }
489
- }
490
- }
491
- }
492
- </style>
1
+ <script setup lang="ts">
2
+ import XAddNativeForm from '@vue2-client/base-client/components/common/XAddNativeForm/XAddNativeForm.vue'
3
+ import { ref, computed, useAttrs } from 'vue'
4
+
5
+ const xAddNativeFormRef = ref()
6
+
7
+ const attrs = useAttrs()
8
+ const props = defineProps({
9
+ // 是否启用 horizontal 模式的自定义配置
10
+ enableHorizontalCustom: {
11
+ type: Boolean,
12
+ default: false
13
+ }
14
+ })
15
+ // 启动时间选择框弹出到body
16
+ const enablePopupToBody = computed(() => {
17
+ const a = attrs
18
+ return a.enablePopupToBody === 'true' || a.enablePopupToBody === true
19
+ })
20
+ const wrapperClassObject = computed(() => {
21
+ const a = attrs
22
+ const classes = {}
23
+
24
+ // 1) 多个布尔型样式开关(存在且为真则生效)
25
+ const booleanStyleKeys = [
26
+ 'query-conditions',
27
+ 'padding-50',
28
+ 'label-text-horizontal',
29
+ 'label-text-justify',
30
+ 'left-form',
31
+ 'charge-form',
32
+ 'aligned-form'
33
+ ]
34
+ for (const key of booleanStyleKeys) {
35
+ const val = a[key]
36
+ const truthy = val === true || val === '' || val === 'true'
37
+ if (truthy) classes[`h-form-${key}`] = true
38
+ }
39
+ return classes
40
+ })
41
+
42
+ defineExpose({
43
+ getXAddNativeFormInstance: () => xAddNativeFormRef.value,
44
+ init: (params) => xAddNativeFormRef.value && xAddNativeFormRef.value.init && xAddNativeFormRef.value.init(params),
45
+ asyncSubmit: () => xAddNativeFormRef.value && xAddNativeFormRef.value.asyncSubmit && xAddNativeFormRef.value.asyncSubmit(),
46
+ validateForm: () => xAddNativeFormRef.value && xAddNativeFormRef.value.validateForm && xAddNativeFormRef.value.validateForm()
47
+ })
48
+
49
+ </script>
50
+
51
+ <template>
52
+ <div
53
+ class="h-form-wrapper"
54
+ :class="[
55
+ wrapperClassObject
56
+ ]"
57
+ >
58
+
59
+ <x-add-native-form
60
+ ref="xAddNativeFormRef"
61
+ v-bind="$attrs"
62
+ :enable-popup-to-body="enablePopupToBody"
63
+ :enable-horizontal-custom="props.enableHorizontalCustom"
64
+ v-on="$listeners"
65
+ >
66
+ <template v-for="(_, name) in $slots" #[name]="slotData">
67
+ <slot :name="name" v-bind="slotData" />
68
+ </template>
69
+ </x-add-native-form>
70
+ </div>
71
+ </template>
72
+
73
+ <style scoped lang="less">
74
+ .h-form-wrapper {
75
+ // 基础样式
76
+ :deep(.ant-form-item) {
77
+ margin-bottom: 4px;
78
+ }
79
+
80
+ // query-conditions 样式
81
+ &.h-form-query-conditions {
82
+ // ant-card-body 样式
83
+ :deep(.ant-card-body) {
84
+ padding: 0px;
85
+ }
86
+
87
+ // ant-row-flex 样式
88
+ :deep(.ant-row-flex) {
89
+ // x-form-col-wrapper 样式
90
+ .x-form-col-wrapper {
91
+ .ant-form-item {
92
+ display: flex;
93
+ width: 100%;
94
+ margin-bottom: 4px;
95
+ justify-content: space-between;
96
+
97
+ .ant-form-item-label {
98
+ padding-left: 4px;
99
+ width: 100%;
100
+ }
101
+
102
+ .ant-form-item-control-wrapper {
103
+ padding-left: -6px;
104
+ }
105
+ }
106
+ }
107
+
108
+ // ant-col-24 样式
109
+ .ant-col-24 {
110
+ padding: 0px 4px !important;
111
+ }
112
+ }
113
+ }
114
+
115
+ &.h-form-padding-50 {
116
+ // ant-row-flex 样式
117
+ :deep(.ant-row-flex) {
118
+ padding-left: 50px;
119
+ padding-right: 50px
120
+ }
121
+ }
122
+
123
+ // charge-form 样式
124
+ &.h-form-charge-form {
125
+ margin-top: 2px !important;
126
+ // 定义变量
127
+ @font-common: {
128
+ font-family: 'Source Han Sans', sans-serif;
129
+ font-size: 16px;
130
+ font-weight: normal;
131
+ letter-spacing: 0em;
132
+ font-variation-settings: "opsz" auto;
133
+ font-feature-settings: "kern" on;
134
+ };
135
+
136
+ @color-primary: #313131;
137
+ @color-placeholder: #999999;
138
+
139
+ // 定义混合宏
140
+ .input-base() {
141
+ width: 100%;
142
+ height: 30px;
143
+ line-height: 30px;
144
+ vertical-align: top;
145
+ margin: 0;
146
+ text-align: left;
147
+ color: @color-primary;
148
+ opacity: 1;
149
+ @font-common();
150
+ }
151
+
152
+ .placeholder-base() {
153
+ color: @color-placeholder;
154
+ opacity: 1;
155
+ @font-common();
156
+ }
157
+
158
+ .option-group-base() {
159
+ height: 30px;
160
+ line-height: 30px;
161
+ display: flex;
162
+ align-items: center;
163
+
164
+ .ant-radio-wrapper,
165
+ .ant-checkbox-wrapper {
166
+ height: 30px;
167
+ line-height: 30px;
168
+ margin-right: 16px;
169
+ }
170
+ }
171
+
172
+ :deep(.ant-form-item) {
173
+ margin-bottom: 16px;
174
+ margin-top: 0;
175
+ padding: 0;
176
+ display: flex;
177
+ align-items: center;
178
+
179
+ .ant-form-item-label {
180
+ text-align: left;
181
+ margin: 0 16px 0 0 !important;
182
+ width: 64px;
183
+ min-width: 64px;
184
+ max-width: 64px;
185
+ flex-shrink: 0;
186
+
187
+ label {
188
+ height: 23px;
189
+ opacity: 1;
190
+ line-height: 23px;
191
+ color: @color-primary;
192
+ margin: 0;
193
+ padding: 0;
194
+ white-space: nowrap;
195
+ display: block;
196
+ @font-common();
197
+
198
+ // 移除冒号
199
+ &::after {
200
+ content: '';
201
+ }
202
+ }
203
+ }
204
+
205
+ .ant-form-item-control-wrapper {
206
+ margin: 0;
207
+ padding: 0;
208
+ flex: 1;
209
+ min-width: 0;
210
+ display: flex;
211
+ align-items: center;
212
+
213
+ .ant-form-item-control {
214
+ margin: 0;
215
+ padding: 0;
216
+ width: 100%;
217
+ text-align: left;
218
+ line-height: 30px !important;
219
+
220
+ // 输入框样式统一
221
+ .ant-input,
222
+ .ant-input-affix-wrapper,
223
+ .ant-select,
224
+ .ant-input-number,
225
+ .ant-picker,
226
+ .ant-radio-group,
227
+ .ant-checkbox-group {
228
+ .input-base();
229
+ }
230
+
231
+ // 选择器样式
232
+ .ant-select {
233
+ .ant-select-selector {
234
+ .input-base();
235
+ height: 30px;
236
+ line-height: 30px;
237
+
238
+ .ant-select-selection-item {
239
+ .input-base();
240
+ line-height: 30px;
241
+ }
242
+
243
+ .ant-select-selection-placeholder {
244
+ .placeholder-base();
245
+ line-height: 30px;
246
+ }
247
+ }
248
+ }
249
+
250
+ // 日期选择器样式
251
+ .ant-picker {
252
+ height: 30px;
253
+
254
+ .ant-picker-input {
255
+ height: 30px;
256
+ line-height: 30px;
257
+ .input-base();
258
+
259
+ input {
260
+ .input-base();
261
+ height: 30px;
262
+ line-height: 30px;
263
+ }
264
+ }
265
+ }
266
+
267
+ // 数字输入框样式
268
+ .ant-input-number {
269
+ height: 30px;
270
+
271
+ .ant-input-number-input {
272
+ .input-base();
273
+ height: 30px;
274
+ line-height: 30px;
275
+ }
276
+ }
277
+
278
+ // 单选框组样式
279
+ .ant-radio-group {
280
+ .option-group-base();
281
+ }
282
+
283
+ // 复选框组样式
284
+ .ant-checkbox-group {
285
+ .option-group-base();
286
+ }
287
+ }
288
+ }
289
+ }
290
+
291
+ // 重置可能的容器边距
292
+ :deep(.ant-row) {
293
+ margin: 0;
294
+ padding: 0;
295
+
296
+ .ant-col {
297
+ margin: 0;
298
+ padding: 0;
299
+ }
300
+ }
301
+
302
+ // 强制重置所有可能的表单项样式
303
+ :deep(.ant-form-item) {
304
+ margin: 0 0 16px 0 !important;
305
+
306
+ // 重置可能的内部边距
307
+ .ant-form-item-control-input,
308
+ .ant-form-item-control-input-content {
309
+ margin: 0 !important;
310
+ padding: 0 !important;
311
+ }
312
+ }
313
+ }
314
+
315
+ // label-text-horizontal 样式 - 只控制label文字从左到右排列
316
+ &.h-form-label-text-horizontal {
317
+ :deep(.ant-form-item-label) {
318
+ text-align: left;
319
+ direction: ltr;
320
+
321
+ // 标签文字水平排列
322
+ .ant-form-item-label-text {
323
+ display: inline-block;
324
+ text-align: left;
325
+ direction: ltr;
326
+ unicode-bidi: normal;
327
+ }
328
+
329
+ // 必填标识水平排列
330
+ .ant-form-item-required::before {
331
+ margin-right: 4px;
332
+ margin-left: 0;
333
+ }
334
+ }
335
+ }
336
+
337
+ // label-text-justify 样式 - 标签文字两端对齐分散占满 必填*可能会有问题
338
+ &.h-form-label-text-justify {
339
+ :deep(.ant-form-item-label) {
340
+ padding-left: 0;
341
+ padding-right: 8px;
342
+ label {
343
+ position: relative;
344
+ display: block;
345
+ width: 100%;
346
+ white-space: nowrap;
347
+ margin: 0;
348
+ text-indent: 0;
349
+ text-align: justify;
350
+ text-align-last: justify;
351
+ text-justify: inter-ideograph;
352
+ box-sizing: border-box;
353
+ padding-right: 12px; // 给绝对定位的冒号留出空间
354
+ }
355
+ // 将冒号绝对定位到最右侧,避免参与两端对齐计算
356
+ label::after {
357
+ position: absolute;
358
+ right: 0;
359
+ }
360
+ }
361
+ }
362
+
363
+ // aligned-form 样式 - 实现标签左对齐、输入框垂直对齐的整齐布局
364
+ &.h-form-aligned-form {
365
+ :deep(.ant-form-item) {
366
+ margin-bottom: 16px;
367
+ display: flex;
368
+ align-items: center;
369
+ width: 100%;
370
+
371
+ .ant-form-item-label {
372
+ text-align: left;
373
+ margin-right: 12px;
374
+ flex-shrink: 0;
375
+ min-width: 80px; // 确保标签有最小宽度,保持对齐
376
+ max-width: 120px; // 限制最大宽度,避免过宽
377
+
378
+ label {
379
+ margin: 0;
380
+ padding: 0;
381
+ white-space: nowrap;
382
+ display: block;
383
+ text-align: left;
384
+ line-height: 32px;
385
+ height: 32px;
386
+ color: rgba(0, 0, 0, 0.85);
387
+ font-size: 14px;
388
+
389
+ // 移除默认冒号
390
+ &::after {
391
+ content: '';
392
+ }
393
+ }
394
+ }
395
+
396
+ .ant-form-item-control-wrapper {
397
+ flex: 1;
398
+ min-width: 0;
399
+ display: flex;
400
+ align-items: center;
401
+
402
+ .ant-form-item-control {
403
+ width: 100%;
404
+ margin: 0;
405
+ padding: 0;
406
+
407
+ // 统一输入框样式
408
+ .ant-input,
409
+ .ant-input-affix-wrapper,
410
+ .ant-select,
411
+ .ant-input-number,
412
+ .ant-picker,
413
+ .ant-radio-group,
414
+ .ant-checkbox-group {
415
+ width: 100%;
416
+ height: 32px;
417
+ line-height: 32px;
418
+ vertical-align: top;
419
+ margin: 0;
420
+ text-align: left;
421
+ }
422
+
423
+ // 选择器样式
424
+ .ant-select {
425
+ .ant-select-selector {
426
+ height: 32px;
427
+ line-height: 32px;
428
+
429
+ .ant-select-selection-item,
430
+ .ant-select-selection-placeholder {
431
+ line-height: 32px;
432
+ height: 32px;
433
+ }
434
+ }
435
+ }
436
+
437
+ // 日期选择器样式
438
+ .ant-picker {
439
+ height: 32px;
440
+
441
+ .ant-picker-input {
442
+ height: 32px;
443
+ line-height: 32px;
444
+
445
+ input {
446
+ height: 32px;
447
+ line-height: 32px;
448
+ }
449
+ }
450
+ }
451
+
452
+ // 数字输入框样式
453
+ .ant-input-number {
454
+ height: 32px;
455
+
456
+ .ant-input-number-input {
457
+ height: 32px;
458
+ line-height: 32px;
459
+ }
460
+ }
461
+
462
+ // 单选框组和复选框组样式
463
+ .ant-radio-group,
464
+ .ant-checkbox-group {
465
+ height: 32px;
466
+ line-height: 32px;
467
+ display: flex;
468
+ align-items: center;
469
+
470
+ .ant-radio-wrapper,
471
+ .ant-checkbox-wrapper {
472
+ height: 32px;
473
+ line-height: 32px;
474
+ margin-right: 16px;
475
+ }
476
+ }
477
+ }
478
+ }
479
+ }
480
+
481
+ // 确保行容器样式
482
+ :deep(.ant-row) {
483
+ margin: 0;
484
+ padding: 0;
485
+
486
+ .ant-col {
487
+ margin: 0;
488
+ padding: 0 8px; // 列与列之间的间距
489
+ display: flex;
490
+ flex-direction: column;
491
+ }
492
+ }
493
+
494
+ // 重置可能的容器边距
495
+ :deep(.ant-form-item) {
496
+ margin: 0 0 16px 0 !important;
497
+
498
+ .ant-form-item-control-input,
499
+ .ant-form-item-control-input-content {
500
+ margin: 0 !important;
501
+ padding: 0 !important;
502
+ }
503
+ }
504
+ }
505
+ }
506
+ </style>