vue2-client 1.16.43 → 1.16.45
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/Upload/Upload.vue +1 -0
- package/src/base-client/components/common/XCollapse/XCollapse.vue +112 -8
- package/src/base-client/components/his/XHDescriptions/XHDescriptions.vue +139 -1
- package/src/pages/WorkflowDetail/WorkFlowDemo3.vue +225 -203
- package/src/router/async/router.map.js +1 -4
- package/src/assets/img/paymentMethod/icon1.png +0 -0
- package/src/assets/img/paymentMethod/icon2.png +0 -0
- package/src/assets/img/paymentMethod/icon3.png +0 -0
- package/src/assets/img/paymentMethod/icon4.png +0 -0
- package/src/assets/img/paymentMethod/icon5.png +0 -0
- package/src/assets/img/paymentMethod/icon6.png +0 -0
- package/src/base-client/components/common/XReport/XReportHospitalizationDemo.vue +0 -45
- package/src/base-client/components/his/XCharge/testConfig.js +0 -149
package/package.json
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
<template>
|
2
|
-
<div>
|
2
|
+
<div class="x-collapse-wrapper" :class="wrapperClassObject">
|
3
3
|
<a-collapse
|
4
4
|
:activeKey="activeKey"
|
5
5
|
@change="handleChange"
|
@@ -36,10 +36,20 @@
|
|
36
36
|
<span>{{ item.value }}</span>
|
37
37
|
</span>
|
38
38
|
</template>
|
39
|
-
<!-- 当有 title3
|
39
|
+
<!-- 当有 title3 数据时显示时间项(与 title2 一致:支持数组/单项) -->
|
40
|
+
<template v-if="panel.title3 && Array.isArray(panel.title3) && panel.title3.length">
|
41
|
+
<span
|
42
|
+
v-for="(item, t3Index) in panel.title3"
|
43
|
+
:key="t3Index"
|
44
|
+
:class="['time-item', { 'time-first': t3Index === 0 }]"
|
45
|
+
:style="config.title3Style">
|
46
|
+
<span v-if="item.showTitle">{{ item.key }}:</span>
|
47
|
+
<span>{{ item.value }}</span>
|
48
|
+
</span>
|
49
|
+
</template>
|
40
50
|
<span
|
41
|
-
v-if="panel.title3"
|
42
|
-
class="time-item"
|
51
|
+
v-else-if="panel.title3"
|
52
|
+
class="time-item time-first"
|
43
53
|
:style="config.title3Style">
|
44
54
|
{{ panel.title3 }}
|
45
55
|
</span>
|
@@ -77,6 +87,8 @@
|
|
77
87
|
:countVisible="false"
|
78
88
|
:env="env"
|
79
89
|
:style="config.componentStyle || ''"
|
90
|
+
v-bind="panel.attrs || {}"
|
91
|
+
:class="panel.className"
|
80
92
|
:ipanelIndex="panelIndex"
|
81
93
|
@deleteData="deleteData"
|
82
94
|
@add="add"
|
@@ -151,6 +163,24 @@ export default {
|
|
151
163
|
this.getData(this.queryParamsName, this.parameter)
|
152
164
|
},
|
153
165
|
beforeDestroy () {},
|
166
|
+
computed: {
|
167
|
+
// 基于 $attrs 的样式类开关(与 XHDescriptions.vue 思路一致)
|
168
|
+
wrapperClassObject () {
|
169
|
+
const attrs = this.$attrs || {}
|
170
|
+
const classes = {}
|
171
|
+
const booleanStyleKeys = [
|
172
|
+
'style1'
|
173
|
+
]
|
174
|
+
booleanStyleKeys.forEach(key => {
|
175
|
+
const val = attrs[key]
|
176
|
+
const truthy = val === true || val === '' || val === 'true'
|
177
|
+
if (truthy) classes[`xcollapse-${key}`] = true
|
178
|
+
})
|
179
|
+
const size = attrs.size
|
180
|
+
if (size && typeof size === 'string') classes[`xcollapse-size-${size}`] = true
|
181
|
+
return classes
|
182
|
+
}
|
183
|
+
},
|
154
184
|
methods: {
|
155
185
|
handleMounted (instance) {
|
156
186
|
this.sonInstances.push(instance)
|
@@ -200,12 +230,13 @@ export default {
|
|
200
230
|
console.warn(this.config)
|
201
231
|
runLogic(res.mainLogic, parameter, 'af-his').then(result => {
|
202
232
|
this.config.showData = result
|
233
|
+
console.log('result', result)
|
203
234
|
// 更具timeType更改时间类型
|
204
235
|
if (this.config.timeType && this.config.timeType === '.') {
|
205
236
|
this.config.showData.forEach(panel => {
|
206
|
-
if (panel.title3) {
|
207
|
-
|
208
|
-
}
|
237
|
+
// if (panel.title3) {
|
238
|
+
// panel.title3 = this.convertToCustomFormat(panel.title3)
|
239
|
+
// }
|
209
240
|
})
|
210
241
|
this.$forceUpdate()
|
211
242
|
}
|
@@ -256,7 +287,7 @@ export default {
|
|
256
287
|
}
|
257
288
|
</script>
|
258
289
|
|
259
|
-
<style scoped>
|
290
|
+
<style scoped lang="less">
|
260
291
|
.header-content {
|
261
292
|
display: flex;
|
262
293
|
align-items: center;
|
@@ -353,4 +384,77 @@ export default {
|
|
353
384
|
text-align: center;
|
354
385
|
margin: 20px 0;
|
355
386
|
}
|
387
|
+
|
388
|
+
// 基于根容器类进行样式整合:x-collapse-wrapper.xcollapse-style1
|
389
|
+
.x-collapse-wrapper {
|
390
|
+
&.xcollapse-style1 {
|
391
|
+
.header-content {
|
392
|
+
gap: 6px; // 圆点与title1更紧凑的基础间距
|
393
|
+
}
|
394
|
+
.blue-circle-icon {
|
395
|
+
margin-right: 0px !important; // 图标与标题更紧凑
|
396
|
+
}
|
397
|
+
.header-text {
|
398
|
+
font-family: "Source Han Sans";
|
399
|
+
font-size: 18px;
|
400
|
+
font-weight: 700;
|
401
|
+
line-height: normal;
|
402
|
+
letter-spacing: 0em;
|
403
|
+
color: #313131;
|
404
|
+
// 额外拉开与 title2 的距离(在小gap基础上单独增大)
|
405
|
+
margin-right: 25px !important;
|
406
|
+
}
|
407
|
+
|
408
|
+
.info-item {
|
409
|
+
font-family: "Source Han Sans";
|
410
|
+
font-size: 18px;
|
411
|
+
font-weight: 700;
|
412
|
+
line-height: normal;
|
413
|
+
text-align: right;
|
414
|
+
color: #313131;
|
415
|
+
letter-spacing: 0em
|
416
|
+
}
|
417
|
+
|
418
|
+
.time-item {
|
419
|
+
font-family: "Source Han Sans";
|
420
|
+
font-size: 18px;
|
421
|
+
font-weight: 400;
|
422
|
+
line-height: normal;
|
423
|
+
text-align: right;
|
424
|
+
color: #313131;
|
425
|
+
letter-spacing: 0em;
|
426
|
+
}
|
427
|
+
|
428
|
+
// 让每个面板成为独立卡片:去掉 antd 默认的分隔线,增加间距与圆角
|
429
|
+
:deep(.ant-collapse) {
|
430
|
+
background: transparent;
|
431
|
+
border: 0;
|
432
|
+
}
|
433
|
+
|
434
|
+
:deep(.ant-collapse > .ant-collapse-item) {
|
435
|
+
width: 550px;
|
436
|
+
height: 410px;
|
437
|
+
margin: 16px 0; // 面板之间留白
|
438
|
+
border-radius: 6px; // 分离的圆角
|
439
|
+
overflow: hidden; // 保持圆角
|
440
|
+
background: #FFFFFF; // 独立白底
|
441
|
+
box-sizing: border-box;
|
442
|
+
border: 1px solid #E5E9F0; // 每个面板自身边框
|
443
|
+
}
|
444
|
+
|
445
|
+
:deep(.ant-collapse > .ant-collapse-item:first-child) { margin-top: 0; }
|
446
|
+
:deep(.ant-collapse > .ant-collapse-item:last-child) { margin-bottom: 0; }
|
447
|
+
|
448
|
+
:deep(.ant-collapse-content > .ant-collapse-content-box) { background: #FFFFFF; }
|
449
|
+
|
450
|
+
// 表头:恢复合适的上下内边距,去掉顶部额外空白
|
451
|
+
:deep(.ant-collapse-header) {
|
452
|
+
background: #FFFFFF;
|
453
|
+
padding: 12px 16px; // 恢复上下内边距
|
454
|
+
align-items: center;
|
455
|
+
color: #262626;
|
456
|
+
border-bottom: none !important; // 移除标题处下边线,避免与外边框连为一体
|
457
|
+
}
|
458
|
+
}
|
459
|
+
}
|
356
460
|
</style>
|
@@ -153,7 +153,9 @@ export default {
|
|
153
153
|
const classes = {}
|
154
154
|
|
155
155
|
const booleanStyleKeys = [
|
156
|
-
'description',
|
156
|
+
'description',
|
157
|
+
'no-padding',
|
158
|
+
'medical-history'
|
157
159
|
]
|
158
160
|
booleanStyleKeys.forEach(key => {
|
159
161
|
const val = attrs[key]
|
@@ -455,6 +457,7 @@ export default {
|
|
455
457
|
border-bottom: 1px dashed rgba(0, 0, 0, 0.15);
|
456
458
|
}
|
457
459
|
/* 加边框 */
|
460
|
+
/* 加边框 */
|
458
461
|
.xhdesc-description {
|
459
462
|
padding: 4px 4px 4px 4px;
|
460
463
|
|
@@ -479,4 +482,139 @@ export default {
|
|
479
482
|
.xhdesc-no-padding {
|
480
483
|
padding: 0px;
|
481
484
|
}
|
485
|
+
/* 医疗病史样式开关:通过 wrapperClassObject 添加类 xhdesc-medical-history */
|
486
|
+
.patient-info-descriptions.xhdesc-medical-history {
|
487
|
+
/* 移除右侧空白(本模式不需要详情按钮预留空间) */
|
488
|
+
.descriptions-container {
|
489
|
+
padding-right: 0;
|
490
|
+
padding-left: 12px;
|
491
|
+
}
|
492
|
+
|
493
|
+
/* 保持原有的自适应布局样式 */
|
494
|
+
.flex-descriptions {
|
495
|
+
gap: 4px 16px;
|
496
|
+
}
|
497
|
+
|
498
|
+
.description-item {
|
499
|
+
padding: 2px 4px;
|
500
|
+
width: 100%;
|
501
|
+
align-items: flex-start;
|
502
|
+
display: flex;
|
503
|
+
flex-direction: column;
|
504
|
+
}
|
505
|
+
|
506
|
+
/* 只修改布局,保持原有字体样式 */
|
507
|
+
.label-wrapper {
|
508
|
+
font-family: "Source Han Sans";
|
509
|
+
font-size: 18px;
|
510
|
+
font-weight: 600;
|
511
|
+
line-height: 24px;
|
512
|
+
text-align: justify;
|
513
|
+
letter-spacing: 0em;
|
514
|
+
white-space: nowrap;
|
515
|
+
margin-right: 8px;
|
516
|
+
margin-bottom: 0;
|
517
|
+
display: inline;
|
518
|
+
}
|
519
|
+
|
520
|
+
.content-wrapper {
|
521
|
+
font-family: "Source Han Sans";
|
522
|
+
font-size: 18px;
|
523
|
+
font-weight: 400;
|
524
|
+
line-height: 24px;
|
525
|
+
letter-spacing: 0em;
|
526
|
+
margin-left: 0;
|
527
|
+
max-width: none;
|
528
|
+
overflow: visible;
|
529
|
+
text-overflow: initial;
|
530
|
+
white-space: normal;
|
531
|
+
word-break: break-word;
|
532
|
+
display: inline;
|
533
|
+
}
|
534
|
+
|
535
|
+
/* 修复Ant Design描述列表的布局,保持字体样式 */
|
536
|
+
:deep(.ant-descriptions-item) {
|
537
|
+
display: block !important;
|
538
|
+
white-space: nowrap;
|
539
|
+
width: 100% !important;
|
540
|
+
margin-bottom: 8px;
|
541
|
+
margin-right: 0;
|
542
|
+
}
|
543
|
+
|
544
|
+
:deep(.ant-descriptions-item-container) {
|
545
|
+
display: inline !important;
|
546
|
+
white-space: nowrap;
|
547
|
+
width: auto !important;
|
548
|
+
align-items: start !important;
|
549
|
+
}
|
550
|
+
|
551
|
+
:deep(.ant-descriptions-item-label) {
|
552
|
+
display: inline !important;
|
553
|
+
white-space: nowrap !important;
|
554
|
+
min-width: auto !important;
|
555
|
+
padding-right: 1px !important;
|
556
|
+
/* 保持原有字体样式 */
|
557
|
+
font-family: "Source Han Sans" !important;
|
558
|
+
font-size: 18px !important;
|
559
|
+
font-weight: 600 !important;
|
560
|
+
line-height: 24px !important;
|
561
|
+
text-align: justify !important;
|
562
|
+
letter-spacing: 0em !important;
|
563
|
+
}
|
564
|
+
|
565
|
+
:deep(.ant-descriptions-item-content) {
|
566
|
+
display: inline !important;
|
567
|
+
white-space: normal !important;
|
568
|
+
word-break: break-word !important;
|
569
|
+
margin-left: 0 !important;
|
570
|
+
overflow: visible !important;
|
571
|
+
/* 保持原有字体样式 */
|
572
|
+
font-family: "Source Han Sans" !important;
|
573
|
+
font-size: 18px !important;
|
574
|
+
font-weight: 400 !important;
|
575
|
+
line-height: 24px !important;
|
576
|
+
letter-spacing: 0em !important;
|
577
|
+
}
|
578
|
+
|
579
|
+
:deep(.ant-descriptions-item-colon) {
|
580
|
+
margin-right: 2px !important;
|
581
|
+
display: inline !important;
|
582
|
+
}
|
583
|
+
|
584
|
+
/* 确保内部元素正确对齐 */
|
585
|
+
:deep(.ant-descriptions-item-label .label-wrapper) {
|
586
|
+
display: inline !important;
|
587
|
+
white-space: nowrap !important;
|
588
|
+
width: auto !important;
|
589
|
+
gap: 0 !important;
|
590
|
+
margin: 0 !important;
|
591
|
+
padding: 0 !important;
|
592
|
+
line-height: 24px !important;
|
593
|
+
}
|
594
|
+
|
595
|
+
:deep(.ant-descriptions-row) {
|
596
|
+
display: block !important;
|
597
|
+
white-space: nowrap;
|
598
|
+
width: 100%;
|
599
|
+
}
|
600
|
+
|
601
|
+
/* 移除所有可能冲突的布局属性 */
|
602
|
+
:deep(.ant-descriptions-item),
|
603
|
+
:deep(.ant-descriptions-item-container) {
|
604
|
+
float: none !important;
|
605
|
+
flex: none !important;
|
606
|
+
flex-direction: row !important;
|
607
|
+
align-items: flex-start !important;
|
608
|
+
}
|
609
|
+
|
610
|
+
/* 确保表格布局正确 */
|
611
|
+
:deep(.ant-descriptions-view) {
|
612
|
+
white-space: nowrap;
|
613
|
+
table-layout: auto !important;
|
614
|
+
}
|
615
|
+
|
616
|
+
:deep(.ant-descriptions-table) {
|
617
|
+
table-layout: auto !important;
|
618
|
+
}
|
619
|
+
}
|
482
620
|
</style>
|
@@ -1,203 +1,225 @@
|
|
1
|
-
<template>
|
2
|
-
<div id="beingProcessed">
|
3
|
-
<x-form-table
|
4
|
-
title="我的工单"
|
5
|
-
ref="xFormTable"
|
6
|
-
:queryParamsName="queryParamsName"
|
7
|
-
:fixed-query-form="{
|
8
|
-
users_f_handler_id: currUser.id,
|
9
|
-
}"
|
10
|
-
@action="toDetail">
|
11
|
-
<template #leftButton>
|
12
|
-
<a-button @click="addApply">
|
13
|
-
<a-icon type="plus"/>
|
14
|
-
发起报建
|
15
|
-
</a-button>
|
16
|
-
</template>
|
17
|
-
</x-form-table>
|
18
|
-
<a-modal
|
19
|
-
v-model="applyAddFlag"
|
20
|
-
:footer="null"
|
21
|
-
:dialog-style="{ top: '5rem' }"
|
22
|
-
:z-index="1001"
|
23
|
-
title="发起报建"
|
24
|
-
:destroyOnClose="true">
|
25
|
-
<x-add-native-form ref="xForm" @onSubmit="applySubmit"/>
|
26
|
-
</a-modal>
|
27
|
-
<WorkflowDetail
|
28
|
-
ref="workFlow"
|
29
|
-
@success="success"
|
30
|
-
@nextClick="nextClick"
|
31
|
-
@x-form-item-emit-func="handleFormItemEvent"
|
32
|
-
>
|
33
|
-
</WorkflowDetail>
|
34
|
-
<!-- 地址选择器 -->
|
35
|
-
<address-select ref="addressSelect" @setAddress="setForm"></address-select>
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
},
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
this.$refs.
|
151
|
-
},
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
}
|
166
|
-
|
167
|
-
},
|
168
|
-
//
|
169
|
-
|
170
|
-
this.$refs.
|
171
|
-
},
|
172
|
-
//
|
173
|
-
|
174
|
-
this.$refs.
|
175
|
-
},
|
176
|
-
//
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
},
|
188
|
-
//
|
189
|
-
|
190
|
-
this.$refs.
|
191
|
-
},
|
192
|
-
//
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
1
|
+
<template>
|
2
|
+
<div id="beingProcessed">
|
3
|
+
<x-form-table
|
4
|
+
title="我的工单"
|
5
|
+
ref="xFormTable"
|
6
|
+
:queryParamsName="queryParamsName"
|
7
|
+
:fixed-query-form="{
|
8
|
+
users_f_handler_id: currUser.id,
|
9
|
+
}"
|
10
|
+
@action="toDetail">
|
11
|
+
<template #leftButton>
|
12
|
+
<a-button @click="addApply">
|
13
|
+
<a-icon type="plus"/>
|
14
|
+
发起报建
|
15
|
+
</a-button>
|
16
|
+
</template>
|
17
|
+
</x-form-table>
|
18
|
+
<a-modal
|
19
|
+
v-model="applyAddFlag"
|
20
|
+
:footer="null"
|
21
|
+
:dialog-style="{ top: '5rem' }"
|
22
|
+
:z-index="1001"
|
23
|
+
title="发起报建"
|
24
|
+
:destroyOnClose="true">
|
25
|
+
<x-add-native-form ref="xForm" @onSubmit="applySubmit"/>
|
26
|
+
</a-modal>
|
27
|
+
<WorkflowDetail
|
28
|
+
ref="workFlow"
|
29
|
+
@success="success"
|
30
|
+
@nextClick="nextClick"
|
31
|
+
@x-form-item-emit-func="handleFormItemEvent"
|
32
|
+
>
|
33
|
+
</WorkflowDetail>
|
34
|
+
<!-- 地址选择器 -->
|
35
|
+
<address-select ref="addressSelect" @setAddress="setForm"></address-select>
|
36
|
+
<!-- 协议新增功能 -->
|
37
|
+
<add-contract
|
38
|
+
ref="addContract"
|
39
|
+
table="报建流程"
|
40
|
+
@upFormData="upFormData"
|
41
|
+
></add-contract>
|
42
|
+
<!-- 协议作废功能 -->
|
43
|
+
<cancel-contract ref="cancelContract"></cancel-contract>
|
44
|
+
<!-- 增值收费新增 -->
|
45
|
+
<add-charge ref="addCharge"></add-charge>
|
46
|
+
<!-- 新增/编辑 用户信息 -->
|
47
|
+
<add-user ref="addUser"></add-user>
|
48
|
+
<!-- 新增 收费信息 -->
|
49
|
+
<add-apply-charge ref="addApplyCharge"></add-apply-charge>
|
50
|
+
<!-- 增值收费撤销 -->
|
51
|
+
<cancel ref="cancel"></cancel>
|
52
|
+
<!-- 增值收费批量撤销 -->
|
53
|
+
<batch-refund ref="batchRefund"></batch-refund>
|
54
|
+
</div>
|
55
|
+
</template>
|
56
|
+
|
57
|
+
<script>
|
58
|
+
import WorkflowDetail from '@vue2-client/pages/WorkflowDetail/WorkflowDetail.vue'
|
59
|
+
import XFormTable from '@vue2-client/base-client/components/common/XFormTable/XFormTable'
|
60
|
+
import XAddNativeForm from '@vue2-client/base-client/components/common/XAddNativeForm/XAddNativeForm.vue'
|
61
|
+
import { getConfigByName, runLogic } from '@vue2-client/services/api/common'
|
62
|
+
import { mapState } from 'vuex'
|
63
|
+
import AddressSelect from '@vue2-client/pages/addressSelect/index.vue'
|
64
|
+
import XFormGroup from '@vue2-client/base-client/components/common/XFormGroup'
|
65
|
+
|
66
|
+
export default {
|
67
|
+
name: 'Apply',
|
68
|
+
components: {
|
69
|
+
XFormTable,
|
70
|
+
XAddNativeForm,
|
71
|
+
WorkflowDetail,
|
72
|
+
AddressSelect,
|
73
|
+
XFormGroup,
|
74
|
+
},
|
75
|
+
// 透传给子组件的方法(目前XFormTable接了)
|
76
|
+
provide () {
|
77
|
+
return {
|
78
|
+
generalFunction: {
|
79
|
+
setCancel: this.setCancel,
|
80
|
+
chargeAdd: this.chargeAdd,
|
81
|
+
addUser: this.addUser,
|
82
|
+
editUser: this.editUser,
|
83
|
+
addContract: this.addContract,
|
84
|
+
addcharge: this.addcharge,
|
85
|
+
updateFormData: this.updateFormData,
|
86
|
+
chargeCancel: this.chargeCancel,
|
87
|
+
chargeBatchRefund: this.chargeBatchRefund,
|
88
|
+
updateContractFormData: this.updateContractFormData,
|
89
|
+
}
|
90
|
+
}
|
91
|
+
},
|
92
|
+
data () {
|
93
|
+
return {
|
94
|
+
// 查询配置文件名
|
95
|
+
queryParamsName: 'ApplyProcessCRUD',
|
96
|
+
// 发起报建弹框控制
|
97
|
+
applyAddFlag: false,
|
98
|
+
// 提交加载动画
|
99
|
+
confirmLoading: false,
|
100
|
+
refreshFn: null,
|
101
|
+
chargeVisible: false
|
102
|
+
}
|
103
|
+
},
|
104
|
+
computed: {
|
105
|
+
...mapState('account', { currUser: 'user' }),
|
106
|
+
},
|
107
|
+
methods: {
|
108
|
+
addApply () {
|
109
|
+
console.log('打开了吗')
|
110
|
+
this.applyAddFlag = true
|
111
|
+
this.$nextTick(
|
112
|
+
() => {
|
113
|
+
getConfigByName('addApplyForm', 'af-apply', (res) => {
|
114
|
+
this.$refs.xForm.init({
|
115
|
+
businessType: '新增',
|
116
|
+
title: '发起报建',
|
117
|
+
...res
|
118
|
+
})
|
119
|
+
})
|
120
|
+
}
|
121
|
+
)
|
122
|
+
},
|
123
|
+
applySubmit (formData) {
|
124
|
+
runLogic('addApply', formData).then(
|
125
|
+
res => {
|
126
|
+
this.$message.success('发起报建成功')
|
127
|
+
this.$refs.xFormTable.refreshTable(true)
|
128
|
+
this.applyAddFlag = false
|
129
|
+
}
|
130
|
+
).catch(() => {
|
131
|
+
this.applyAddFlag = false
|
132
|
+
})
|
133
|
+
},
|
134
|
+
success () {
|
135
|
+
console.log('完工')
|
136
|
+
},
|
137
|
+
toDetail (record, id) {
|
138
|
+
this.$refs.workFlow.init({
|
139
|
+
workflowId: record.ab_f_workflow_id,
|
140
|
+
stepId: record.ws_f_step_id
|
141
|
+
})
|
142
|
+
},
|
143
|
+
handleFormItemEvent (func, data, value) {
|
144
|
+
console.log('打印一下:', func, data, value)
|
145
|
+
if (func === 'selectAddress') {
|
146
|
+
this.$refs.addressSelect.setFormShow()
|
147
|
+
}
|
148
|
+
},
|
149
|
+
setForm (record) {
|
150
|
+
this.$refs.workFlow.setFormValue({ address: record.f_address, address_id: record.f_address_id })
|
151
|
+
},
|
152
|
+
nextClick ({ form, formStep, workflowId }) {
|
153
|
+
console.log('success', form, formStep, workflowId)
|
154
|
+
// const data = {
|
155
|
+
// workflowId,
|
156
|
+
// form,
|
157
|
+
// formStep
|
158
|
+
// }
|
159
|
+
// runLogic('applySubmitAfter', data, 'af-apply').then(
|
160
|
+
// res => {
|
161
|
+
// if (res) {
|
162
|
+
// // this.$message.success('提交成功!')
|
163
|
+
// this.$refs.xFormTable.refreshTable(true)
|
164
|
+
// }
|
165
|
+
// }
|
166
|
+
// )
|
167
|
+
},
|
168
|
+
// 协议作废
|
169
|
+
setCancel (record, refreshFn) {
|
170
|
+
this.$refs.cancelContract.setCancel(record, refreshFn)
|
171
|
+
},
|
172
|
+
// 增值收费新增
|
173
|
+
chargeAdd (refreshFn) {
|
174
|
+
this.$refs.addCharge.chargeAdd(this.$refs.workFlow.workflowId, refreshFn)
|
175
|
+
},
|
176
|
+
// 协议新增
|
177
|
+
addContract (refreshFn) {
|
178
|
+
this.$refs.addContract.addContract(this.$refs.workFlow.workflowId, refreshFn)
|
179
|
+
},
|
180
|
+
// 新增用户
|
181
|
+
addUser (refreshFn) {
|
182
|
+
if (this.$refs.workFlow.$refs.baseInformation.details.f_workflow_define_name != '团购报建流程') {
|
183
|
+
this.$message.success('只有团购报建流程才可以新增用户信息!')
|
184
|
+
return
|
185
|
+
}
|
186
|
+
this.$refs.addUser.addUser(this.$refs.workFlow.workflowId, refreshFn)
|
187
|
+
},
|
188
|
+
// 编辑用户
|
189
|
+
editUser (record, refreshFn, showForm) {
|
190
|
+
this.$refs.addUser.editUser(record, refreshFn, showForm)
|
191
|
+
},
|
192
|
+
// 新增收费
|
193
|
+
addcharge (refreshFn) {
|
194
|
+
this.$refs.addApplyCharge.addcharge(this.$refs.workFlow.workflowId, refreshFn)
|
195
|
+
},
|
196
|
+
// 报装缴费页面初始化
|
197
|
+
updateFormData (workflowId) {
|
198
|
+
runLogic('getApplyBusinessrecode', { f_workflow_id: workflowId }, 'af-apply').then((res) => {
|
199
|
+
this.$refs.workFlow.$refs.workflowHandle.$refs.xAddForm.setForm(res)
|
200
|
+
})
|
201
|
+
},
|
202
|
+
// 合同签订页面初始化
|
203
|
+
updateContractFormData (param) {
|
204
|
+
this.$refs.workFlow.$refs.workflowHandle.$refs.xAddForm.setForm(param)
|
205
|
+
},
|
206
|
+
// 补充协议回更表单数据
|
207
|
+
upFormData (record) {
|
208
|
+
this.$refs.workFlow.$refs.workflowHandle.$refs.xAddForm.setForm(record)
|
209
|
+
},
|
210
|
+
// 增值收费单个数据的撤销功能
|
211
|
+
chargeCancel (record, refreshFn) {
|
212
|
+
this.$refs.cancel.chargeCancel(record, refreshFn)
|
213
|
+
},
|
214
|
+
// 批量撤销(退费)
|
215
|
+
chargeBatchRefund (selectedRowKeys, selectedRows, refreshFn) {
|
216
|
+
if (selectedRowKeys.length === 0 || selectedRows.length === 0) {
|
217
|
+
this.$message.warn('请选择要退费的记录', 5)
|
218
|
+
return
|
219
|
+
}
|
220
|
+
const workflowId = this.$refs.workFlow.workflowId
|
221
|
+
this.$refs.batchRefund.selectRow(selectedRowKeys, selectedRows, refreshFn, workflowId)
|
222
|
+
}
|
223
|
+
}
|
224
|
+
}
|
225
|
+
</script>
|
@@ -60,15 +60,12 @@ path: 'example',
|
|
60
60
|
// component: () => import('@vue2-client/base-client/components/common/XAddNativeForm/demo.vue'),
|
61
61
|
// component: () => import('@vue2-client/base-client/components/common/XFormGroup/demo.vue'),
|
62
62
|
// component: () => import('@vue2-client/base-client/components/common/XReport/XReportDemo.vue'),
|
63
|
-
|
64
|
-
// component: () => import('@vue2-client/base-client/components/common/XFormTable/demo.vue'),
|
63
|
+
component: () => import('@vue2-client/base-client/components/common/HIS/demo.vue'),
|
65
64
|
// component: () => import('@vue2-client/base-client/components/common/XDatePicker/demo.vue'),
|
66
65
|
// component: () => import('@vue2-client/base-client/components/common/XTab/XTabDemo.vue'),
|
67
66
|
// component: () => import('@vue2-client/base-client/components/common/XRate/demo.vue'),
|
68
|
-
component: () => import('@vue2-client/base-client/components/common/XReport/XReportHospitalizationDemo.vue'),
|
69
67
|
// component: () => import('@vue2-client/base-client/components/common/XForm/demo.vue'),
|
70
68
|
// component: () => import('@vue2-client/base-client/components/his/XTimeSelect/XTimeSelectDemo.vue'),
|
71
|
-
// component: () => import('@vue2-client/base-client/components/his/XCharge/XChargeDemo.vue'),
|
72
69
|
// component: () => import('@vue2-client/base-client/components/his/XImportExcelButton/XFrontImportExcelDemo.vue'),
|
73
70
|
// component: () => import('@vue2-client/pages/WorkflowDetail/WorkFlowDemo.vue'),
|
74
71
|
// component: () => import('@vue2-client/pages/WorkflowDetail/WorkFlowDemo.vue'),
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -1,45 +0,0 @@
|
|
1
|
-
<template>
|
2
|
-
<div id="xreport-hosp-demo">
|
3
|
-
<a-space style="margin-bottom: 12px;">
|
4
|
-
<a-button type="primary" @click="doInit">手动初始化</a-button>
|
5
|
-
</a-space>
|
6
|
-
<XReport
|
7
|
-
ref="reportRef"
|
8
|
-
:edit-mode="true"
|
9
|
-
:show-save-button="true"
|
10
|
-
:show-img-in-cell="false"
|
11
|
-
:use-oss-for-img="false"
|
12
|
-
server-name="af-his"
|
13
|
-
@updateImg="onUpdateImg"/>
|
14
|
-
</div>
|
15
|
-
</template>
|
16
|
-
|
17
|
-
<script setup>
|
18
|
-
import { ref } from 'vue'
|
19
|
-
import XReport from '@vue2-client/base-client/components/common/XReport'
|
20
|
-
|
21
|
-
const reportRef = ref(null)
|
22
|
-
|
23
|
-
const payload = {
|
24
|
-
arr: [
|
25
|
-
{ BQ: '病房区', RY: 0, CY: 0, CW: 0, SW: 0, SS: 0, ZC: 0, ZR: 0, ZY: 0 },
|
26
|
-
{ BQ: '感染科', RY: 0, CY: 0, CW: 0, SW: 0, SS: 0, ZC: 0, ZR: 0, ZY: 0 },
|
27
|
-
{ BQ: '骨科病区', RY: 0, CY: 0, CW: 0, SW: 0, SS: 0, ZC: 0, ZR: 0, ZY: 0 },
|
28
|
-
{ BQ: '呼吸科病区', RY: 0, CY: 0, CW: 0, SW: 0, SS: 0, ZC: 0, ZR: 0, ZY: 0 },
|
29
|
-
{ BQ: '急症科病区', RY: 0, CY: 0, CW: 0, SW: 0, SS: 0, ZC: 0, ZR: 0, ZY: 0 },
|
30
|
-
{ BQ: '内科二病区', RY: 0, CY: 0, CW: 0, SW: 0, SS: 0, ZC: 0, ZR: 0, ZY: 0 }
|
31
|
-
]
|
32
|
-
}
|
33
|
-
|
34
|
-
const doInit = async () => {
|
35
|
-
if (!reportRef.value || !reportRef.value.init) return
|
36
|
-
await reportRef.value.init({
|
37
|
-
configName: 'hospitalizationStatsReport',
|
38
|
-
configData: payload
|
39
|
-
})
|
40
|
-
}
|
41
|
-
|
42
|
-
const onUpdateImg = data => {
|
43
|
-
console.warn('updateImg:', data)
|
44
|
-
}
|
45
|
-
</script>
|
@@ -1,149 +0,0 @@
|
|
1
|
-
// 测试配置 - 用于演示混合支付功能
|
2
|
-
export const testChargeConfig = {
|
3
|
-
"amountFields": [
|
4
|
-
{
|
5
|
-
"field": 'f_amount',
|
6
|
-
"disabled": false,
|
7
|
-
"label": '费用总额'
|
8
|
-
},
|
9
|
-
{
|
10
|
-
"field": 'f_insurance_amount',
|
11
|
-
"disabled": true,
|
12
|
-
"label": '医保支付'
|
13
|
-
},
|
14
|
-
{
|
15
|
-
"field": 'f_self_amount',
|
16
|
-
"disabled": true,
|
17
|
-
"label": '自费金额'
|
18
|
-
},
|
19
|
-
{
|
20
|
-
"field": 'out_of_pocket_amount',
|
21
|
-
"disabled": true,
|
22
|
-
"label": '自付金额'
|
23
|
-
},
|
24
|
-
{
|
25
|
-
"field": 'biscount_amount',
|
26
|
-
"disabled": true,
|
27
|
-
"label": '折扣金额'
|
28
|
-
},
|
29
|
-
{
|
30
|
-
"field": 'billing_amount',
|
31
|
-
"disabled": true,
|
32
|
-
"label": '记账金额'
|
33
|
-
}
|
34
|
-
],
|
35
|
-
"paymentMethods": [
|
36
|
-
{
|
37
|
-
"key": '医保卡',
|
38
|
-
"label": '医保卡'
|
39
|
-
},
|
40
|
-
{
|
41
|
-
"key": '微信/支付宝',
|
42
|
-
"label": '微信/支付宝'
|
43
|
-
},
|
44
|
-
{
|
45
|
-
"key": '银行卡',
|
46
|
-
"label": '银行卡'
|
47
|
-
},
|
48
|
-
{
|
49
|
-
"key": '现金',
|
50
|
-
"label": '现金'
|
51
|
-
}
|
52
|
-
],
|
53
|
-
"bottomFields": [
|
54
|
-
{
|
55
|
-
"field": 'f_balance',
|
56
|
-
"label": '账户余额',
|
57
|
-
"disabled": false
|
58
|
-
},
|
59
|
-
{
|
60
|
-
"field": 'received',
|
61
|
-
"label": '实收',
|
62
|
-
"disabled": false
|
63
|
-
},
|
64
|
-
{
|
65
|
-
"field": 'change',
|
66
|
-
"label": '找零',
|
67
|
-
"disabled": false
|
68
|
-
}
|
69
|
-
],
|
70
|
-
"actionButtons": [
|
71
|
-
{
|
72
|
-
"key": 'charge',
|
73
|
-
"label": '收费',
|
74
|
-
"icon": 'check'
|
75
|
-
},
|
76
|
-
{
|
77
|
-
"key": 'refund',
|
78
|
-
"label": '退费',
|
79
|
-
"icon": 'undo'
|
80
|
-
},
|
81
|
-
{
|
82
|
-
"key": 'print',
|
83
|
-
"label": '打印',
|
84
|
-
"icon": 'printer'
|
85
|
-
}
|
86
|
-
],
|
87
|
-
"enableMixedPayment": true, // 启用混合支付
|
88
|
-
// 可配置事件名,参考 fronImport 风格
|
89
|
-
"eventNames": {
|
90
|
-
"method": 'method',
|
91
|
-
"methods": 'methods',
|
92
|
-
"totalPaymentAmount": 'totalPaymentAmount',
|
93
|
-
"action": 'action'
|
94
|
-
},
|
95
|
-
"dataSourceConfig": 'testChargeLogic'
|
96
|
-
}
|
97
|
-
|
98
|
-
// 单选模式测试配置
|
99
|
-
export const testSingleChargeConfig = {
|
100
|
-
"amountFields": [
|
101
|
-
{
|
102
|
-
"field": 'f_amount',
|
103
|
-
"disabled": false,
|
104
|
-
"label": '费用总额'
|
105
|
-
},
|
106
|
-
{
|
107
|
-
"field": 'f_insurance_amount',
|
108
|
-
"disabled": true,
|
109
|
-
"label": '医保支付'
|
110
|
-
}
|
111
|
-
],
|
112
|
-
"paymentMethods": [
|
113
|
-
{
|
114
|
-
"key": '医保卡',
|
115
|
-
"label": '医保卡'
|
116
|
-
},
|
117
|
-
{
|
118
|
-
"key": '现金',
|
119
|
-
"label": '现金'
|
120
|
-
}
|
121
|
-
],
|
122
|
-
"bottomFields": [
|
123
|
-
{
|
124
|
-
"field": 'received',
|
125
|
-
"label": '实收',
|
126
|
-
"disabled": false
|
127
|
-
},
|
128
|
-
{
|
129
|
-
"field": 'change',
|
130
|
-
"label": '找零',
|
131
|
-
"disabled": false
|
132
|
-
}
|
133
|
-
],
|
134
|
-
"actionButtons": [
|
135
|
-
{
|
136
|
-
"key": 'charge',
|
137
|
-
"label": '收费',
|
138
|
-
"icon": 'check'
|
139
|
-
}
|
140
|
-
],
|
141
|
-
"enableMixedPayment": false, // 禁用混合支付(单选模式)
|
142
|
-
"eventNames": {
|
143
|
-
"method": 'method',
|
144
|
-
"methods": 'methods',
|
145
|
-
"totalPaymentAmount": 'totalPaymentAmount',
|
146
|
-
"action": 'action'
|
147
|
-
},
|
148
|
-
"dataSourceConfig": 'testChargeLogic'
|
149
|
-
}
|