vue2-client 1.16.86 → 1.16.88
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.
- package/package.json +1 -1
- package/src/base-client/components/common/HIS/HButtons/HButtons.vue +64 -1
- package/src/base-client/components/common/HIS/HForm/HForm.vue +15 -146
- package/src/base-client/components/common/HIS/HFormTable/HFormTable.vue +5 -0
- package/src/base-client/components/common/XAddNativeForm/XAddNativeForm.vue +8 -0
- package/src/base-client/components/common/XDatePicker/index.vue +16 -4
- package/src/base-client/components/common/XForm/XFormItem.vue +6 -0
- package/src/base-client/components/common/XFormTable/XFormTable.vue +6 -0
- package/src/base-client/components/common/XInput/XInput.vue +15 -4
- package/src/base-client/components/common/XTable/XTable.vue +1618 -1610
- package/src/base-client/components/common/XTimeline/XTimeline.vue +0 -1
- package/src/base-client/components/his/XCheckbox/XCheckbox.vue +194 -181
- package/src/base-client/components/his/XImportExcelButton/XImportExcelButton.vue +46 -2
- package/src/base-client/components/his/XRadio/XRadio.vue +396 -316
- package/src/base-client/components/his/XTimeSelect/XTimeSelect.vue +80 -3
package/package.json
CHANGED
|
@@ -21,7 +21,11 @@ const wrapperClassObject = computed(() => {
|
|
|
21
21
|
|
|
22
22
|
// 通用布尔样式开关(以存在/空字符串/'true' 为真)
|
|
23
23
|
const booleanStyleKeys = [
|
|
24
|
-
'max-width200',
|
|
24
|
+
'max-width200',
|
|
25
|
+
'width173',
|
|
26
|
+
'button_refresh',
|
|
27
|
+
'border', 'no-style',
|
|
28
|
+
'one-button-style' // 一个按钮样式,占满整个宽度
|
|
25
29
|
]
|
|
26
30
|
for (const key of booleanStyleKeys) {
|
|
27
31
|
const val = a[key]
|
|
@@ -377,5 +381,64 @@ defineExpose({
|
|
|
377
381
|
width: 173px !important;
|
|
378
382
|
}
|
|
379
383
|
}
|
|
384
|
+
// 按钮无边框+无图标+无阴影
|
|
385
|
+
&.h-button-no-style{
|
|
386
|
+
:deep(.ant-btn) {
|
|
387
|
+
border: 0px;
|
|
388
|
+
.anticon{
|
|
389
|
+
display: none;
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
:deep(.ant-btn-primary){
|
|
393
|
+
text-shadow: none;
|
|
394
|
+
box-shadow: none;
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
// 按钮组边距
|
|
398
|
+
&.h-button-border{
|
|
399
|
+
border: 1px solid #E5E9F0;
|
|
400
|
+
border-radius: 6px;
|
|
401
|
+
}
|
|
402
|
+
// 按钮撑开整个容器
|
|
403
|
+
&.h-buttons-fill-container{
|
|
404
|
+
:deep(.x-buttons) {
|
|
405
|
+
width: 100%;
|
|
406
|
+
.ant-btn-group{
|
|
407
|
+
width: 100%;
|
|
408
|
+
.ant-btn{
|
|
409
|
+
width: 100%;
|
|
410
|
+
margin-right: 0px;
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
&.h-buttons-one-button-style {
|
|
416
|
+
margin: 0 !important;
|
|
417
|
+
padding: 0 !important;
|
|
418
|
+
:deep(.x-buttons) {
|
|
419
|
+
margin: 0 !important;
|
|
420
|
+
padding: 0 !important;
|
|
421
|
+
.ant-btn-group {
|
|
422
|
+
width: 100%;
|
|
423
|
+
height: 32px;
|
|
424
|
+
justify-content: space-between;
|
|
425
|
+
display: flex;
|
|
426
|
+
flex-wrap: nowrap;
|
|
427
|
+
.ant-btn {
|
|
428
|
+
width: 100%;
|
|
429
|
+
margin-right: 0px !important;
|
|
430
|
+
min-width: 100% !important;
|
|
431
|
+
border-radius: 6px; /* 边框圆角 */
|
|
432
|
+
font-size: 18px; /* 字体大小 */
|
|
433
|
+
line-height: 26px;
|
|
434
|
+
font-weight: bold;
|
|
435
|
+
letter-spacing: 0.5px; /* 增加字母间距 */
|
|
436
|
+
height: 32px; /* 高度 */
|
|
437
|
+
color: #FFFFFF; /* 字体颜色 */
|
|
438
|
+
background: #0057FE;/* 背景颜色 */
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
}
|
|
380
443
|
}
|
|
381
444
|
</style>
|
|
@@ -5,6 +5,18 @@ import { ref, computed, useAttrs } from 'vue'
|
|
|
5
5
|
const xAddNativeFormRef = ref()
|
|
6
6
|
|
|
7
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
|
+
})
|
|
8
20
|
const wrapperClassObject = computed(() => {
|
|
9
21
|
const a = attrs
|
|
10
22
|
const classes = {}
|
|
@@ -15,9 +27,7 @@ const wrapperClassObject = computed(() => {
|
|
|
15
27
|
'padding-50',
|
|
16
28
|
'label-text-horizontal',
|
|
17
29
|
'label-text-justify',
|
|
18
|
-
'
|
|
19
|
-
'charge-form',
|
|
20
|
-
'aligned-form'
|
|
30
|
+
'charge-form'
|
|
21
31
|
]
|
|
22
32
|
for (const key of booleanStyleKeys) {
|
|
23
33
|
const val = a[key]
|
|
@@ -47,6 +57,8 @@ defineExpose({
|
|
|
47
57
|
<x-add-native-form
|
|
48
58
|
ref="xAddNativeFormRef"
|
|
49
59
|
v-bind="$attrs"
|
|
60
|
+
:enable-popup-to-body="enablePopupToBody"
|
|
61
|
+
:enable-horizontal-custom="props.enableHorizontalCustom"
|
|
50
62
|
v-on="$listeners"
|
|
51
63
|
>
|
|
52
64
|
<template v-for="(_, name) in $slots" #[name]="slotData">
|
|
@@ -345,148 +357,5 @@ defineExpose({
|
|
|
345
357
|
}
|
|
346
358
|
}
|
|
347
359
|
}
|
|
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
360
|
}
|
|
492
361
|
</style>
|
|
@@ -164,6 +164,10 @@ const isCustomPagination = computed(() => {
|
|
|
164
164
|
const paginationAttr = (a && a.paginationStyle) || ''
|
|
165
165
|
return props.tableStyle === 'custom-pagination' || paginationAttr === 'custom-pagination'
|
|
166
166
|
})
|
|
167
|
+
// 是否隐藏顶部功能区
|
|
168
|
+
const isHiddenFunctionalArea = computed(() => {
|
|
169
|
+
return attrs.hiddenFunctionalArea === 'true' || attrs.hiddenFunctionalArea === true
|
|
170
|
+
})
|
|
167
171
|
</script>
|
|
168
172
|
|
|
169
173
|
<template>
|
|
@@ -178,6 +182,7 @@ const isCustomPagination = computed(() => {
|
|
|
178
182
|
ref="xFormTableRef"
|
|
179
183
|
v-bind="$attrs"
|
|
180
184
|
:customPagination="isCustomPagination"
|
|
185
|
+
:hiddenFunctionalArea="isHiddenFunctionalArea"
|
|
181
186
|
@expand="onExpandLog"
|
|
182
187
|
v-on="$listeners"
|
|
183
188
|
>
|
|
@@ -51,6 +51,7 @@
|
|
|
51
51
|
:rules="rules[`${item.formItem.name}${item.formItem.model}`]"
|
|
52
52
|
:get-data-params="getDataParams"
|
|
53
53
|
:env="env"
|
|
54
|
+
:enablePopupToBody="enablePopupToBody"
|
|
54
55
|
@x-form-item-emit-func="emitFunc"
|
|
55
56
|
@rowChoose="rowChoose"
|
|
56
57
|
:setForm="setForm"
|
|
@@ -94,6 +95,7 @@
|
|
|
94
95
|
:style="layout === 'inline' ? { marginTop:'5px' } : undefined"
|
|
95
96
|
:form="form"
|
|
96
97
|
:images="images"
|
|
98
|
+
:enablePopupToBody="enablePopupToBody"
|
|
97
99
|
:service-name="serviceName"
|
|
98
100
|
mode="新增/修改"
|
|
99
101
|
:layout="layout"
|
|
@@ -147,6 +149,7 @@
|
|
|
147
149
|
:disabled="itemDisabled(formItem)"
|
|
148
150
|
:readonly="readonly(formItem)"
|
|
149
151
|
:files="files"
|
|
152
|
+
:enablePopupToBody="enablePopupToBody"
|
|
150
153
|
v-bind="formItemLayoutGen"
|
|
151
154
|
:style="layout ==='inline'?{marginTop:'5px'}:undefined"
|
|
152
155
|
:form="form[groupItem.model]"
|
|
@@ -223,6 +226,11 @@ export default {
|
|
|
223
226
|
enableHorizontalCustom: {
|
|
224
227
|
type: Boolean,
|
|
225
228
|
default: false
|
|
229
|
+
},
|
|
230
|
+
// 是否启用时间弹出到最外层
|
|
231
|
+
enablePopupToBody: {
|
|
232
|
+
type: Boolean,
|
|
233
|
+
default: false
|
|
226
234
|
}
|
|
227
235
|
},
|
|
228
236
|
data () {
|
|
@@ -40,6 +40,11 @@ export default {
|
|
|
40
40
|
type: Boolean,
|
|
41
41
|
default: false,
|
|
42
42
|
},
|
|
43
|
+
// 是否启用时间弹出到最外层
|
|
44
|
+
enablePopupToBody: {
|
|
45
|
+
type: Boolean,
|
|
46
|
+
default: false
|
|
47
|
+
},
|
|
43
48
|
},
|
|
44
49
|
model: {
|
|
45
50
|
prop: 'value',
|
|
@@ -183,6 +188,9 @@ export default {
|
|
|
183
188
|
moment(value[1]).format(this.formatType),
|
|
184
189
|
]
|
|
185
190
|
},
|
|
191
|
+
getBodyContainer (triggerNode) {
|
|
192
|
+
return document.body
|
|
193
|
+
}
|
|
186
194
|
},
|
|
187
195
|
}
|
|
188
196
|
</script>
|
|
@@ -195,7 +203,8 @@ export default {
|
|
|
195
203
|
(attr?.queryType !== 'BETWEEN' || mode !== '查询')) ||
|
|
196
204
|
(['rangePicker'].includes(attr.type) && mode !== '查询')
|
|
197
205
|
"
|
|
198
|
-
:getCalendarContainer="(triggerNode) => triggerNode.parentNode"
|
|
206
|
+
:getCalendarContainer="enablePopupToBody? undefined :(triggerNode) => triggerNode.parentNode"
|
|
207
|
+
:getPopupContainer="enablePopupToBody? getBodyContainer : undefined"
|
|
199
208
|
v-model="localValue"
|
|
200
209
|
:disabled="disabled || readOnly"
|
|
201
210
|
style="width: 100%"
|
|
@@ -211,7 +220,8 @@ export default {
|
|
|
211
220
|
attr.type === 'monthPicker' ||
|
|
212
221
|
(attr.type === 'monthRangePicker' && mode !== '查询')
|
|
213
222
|
"
|
|
214
|
-
:getCalendarContainer="(triggerNode) => triggerNode.parentNode"
|
|
223
|
+
:getCalendarContainer="enablePopupToBody? undefined :(triggerNode) => triggerNode.parentNode"
|
|
224
|
+
:getPopupContainer="enablePopupToBody? getBodyContainer : undefined"
|
|
215
225
|
v-model="localValue"
|
|
216
226
|
:disabled="disabled || readOnly"
|
|
217
227
|
:show-time="true"
|
|
@@ -225,7 +235,8 @@ export default {
|
|
|
225
235
|
attr.type === 'yearPicker' ||
|
|
226
236
|
(attr.type === 'yearRangePicker' && mode !== '查询')
|
|
227
237
|
"
|
|
228
|
-
:getCalendarContainer="(triggerNode) => triggerNode.parentNode"
|
|
238
|
+
:getCalendarContainer="enablePopupToBody? undefined :(triggerNode) => triggerNode.parentNode"
|
|
239
|
+
:getPopupContainer="enablePopupToBody? getBodyContainer : undefined"
|
|
229
240
|
v-model="localValue"
|
|
230
241
|
:disabled="disabled || readOnly"
|
|
231
242
|
format="YYYY"
|
|
@@ -250,7 +261,8 @@ export default {
|
|
|
250
261
|
(attr.type === 'rangePicker' && mode === '查询') ||
|
|
251
262
|
['yearRangePicker', 'monthRangePicker'].includes(attr.type)
|
|
252
263
|
"
|
|
253
|
-
:getCalendarContainer="(triggerNode) => triggerNode.parentNode"
|
|
264
|
+
:getCalendarContainer="enablePopupToBody? undefined :(triggerNode) => triggerNode.parentNode"
|
|
265
|
+
:getPopupContainer="enablePopupToBody? getBodyContainer : undefined"
|
|
254
266
|
v-model="localValue"
|
|
255
267
|
:disabled="disabled"
|
|
256
268
|
:placeholder="placeholder"
|
|
@@ -381,6 +381,7 @@
|
|
|
381
381
|
<XFormDatePicker
|
|
382
382
|
:attr="attr"
|
|
383
383
|
:mode="mode"
|
|
384
|
+
:enablePopupToBody="enablePopupToBody"
|
|
384
385
|
:disabled="disabled"
|
|
385
386
|
:readOnly="readOnly"
|
|
386
387
|
:showLabel="showLabel"
|
|
@@ -815,6 +816,11 @@ export default {
|
|
|
815
816
|
return []
|
|
816
817
|
}
|
|
817
818
|
},
|
|
819
|
+
// 是否启用时间弹出到最外层
|
|
820
|
+
enablePopupToBody: {
|
|
821
|
+
type: Boolean,
|
|
822
|
+
default: false
|
|
823
|
+
},
|
|
818
824
|
serviceName: {
|
|
819
825
|
type: String,
|
|
820
826
|
default:
|
|
@@ -67,6 +67,7 @@
|
|
|
67
67
|
:pageMaxSize="realQueryConfig.queryPagesSize"
|
|
68
68
|
:externalSelectedRowKeys="externalSelectedRowKeys"
|
|
69
69
|
:customPagination="customPagination"
|
|
70
|
+
:hiddenFunctionalArea="hiddenFunctionalArea"
|
|
70
71
|
@add="add"
|
|
71
72
|
@move="move"
|
|
72
73
|
@edit="edit"
|
|
@@ -409,6 +410,11 @@ export default {
|
|
|
409
410
|
customPagination: {
|
|
410
411
|
type: Boolean,
|
|
411
412
|
default: false
|
|
413
|
+
},
|
|
414
|
+
// 是否隐藏顶部功能区域
|
|
415
|
+
hiddenFunctionalArea: {
|
|
416
|
+
type: Boolean,
|
|
417
|
+
default: false
|
|
412
418
|
}
|
|
413
419
|
},
|
|
414
420
|
watch: {
|
|
@@ -56,7 +56,8 @@ export default {
|
|
|
56
56
|
const classes = {}
|
|
57
57
|
const booleanStyleKeys = [
|
|
58
58
|
'medical-history',
|
|
59
|
-
'yizhu-input'
|
|
59
|
+
'yizhu-input',
|
|
60
|
+
'custom-placeholder'
|
|
60
61
|
]
|
|
61
62
|
booleanStyleKeys.forEach(key => {
|
|
62
63
|
const val = attrs[key]
|
|
@@ -161,7 +162,6 @@ export default {
|
|
|
161
162
|
font-weight: normal;
|
|
162
163
|
line-height: normal;
|
|
163
164
|
letter-spacing: 0em;
|
|
164
|
-
font-variation-settings: "opsz" auto;
|
|
165
165
|
font-feature-settings: "kern" on;
|
|
166
166
|
color: #A7A7A7;
|
|
167
167
|
}
|
|
@@ -172,7 +172,6 @@ export default {
|
|
|
172
172
|
background: #FFFFFF;
|
|
173
173
|
box-sizing: border-box;
|
|
174
174
|
border: 1px solid #E5E9F0;
|
|
175
|
-
|
|
176
175
|
margin: 2px 0px;
|
|
177
176
|
:deep(.ant-input) {
|
|
178
177
|
border-radius: 6px;
|
|
@@ -184,7 +183,19 @@ export default {
|
|
|
184
183
|
font-size: 14px;
|
|
185
184
|
padding: 5px 76px 3px 8px;
|
|
186
185
|
font-weight: normal;
|
|
187
|
-
line-height:
|
|
186
|
+
line-height: normal;
|
|
187
|
+
letter-spacing: 0em;
|
|
188
|
+
color: #A7A7A7;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
&.xinput-custom-placeholder {
|
|
192
|
+
:deep(.ant-input::placeholder) {
|
|
193
|
+
height: 23px;
|
|
194
|
+
opacity: 1;
|
|
195
|
+
font-family: Source Han Sans;
|
|
196
|
+
font-size: 16px;
|
|
197
|
+
font-weight: normal;
|
|
198
|
+
line-height: normal;
|
|
188
199
|
letter-spacing: 0em;
|
|
189
200
|
color: #A7A7A7;
|
|
190
201
|
}
|