vue2-client 1.14.42 → 1.14.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/XReport/XReport.vue +1 -1
- package/src/base-client/components/common/XReportGrid/XReportTrGroup.vue +4 -3
- package/src/base-client/components/his/XCharge/XCharge.vue +226 -0
- package/src/base-client/components/his/XList/XList.vue +0 -3
- package/src/base-client/components/his/XShiftSchedule/XShiftSchedule.vue +9 -9
- package/src/base-client/components/his/XTitle/XTitle.vue +1 -5
- package/src/base-client/components/his/threeTestOrders/textBox.vue +50 -102
- package/src/base-client/components/his/threeTestOrders/threeTestOrders.vue +14 -24
- package/src/pages/WorkflowDetail/WorkFlowDemo.vue +1 -1
- package/src/pages/WorkflowDetail/WorkflowDetail.vue +122 -37
- package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowBaseInformation.vue +244 -116
- package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowHandle.vue +2 -2
- package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowTimeline.vue +2 -1
package/package.json
CHANGED
|
@@ -808,7 +808,7 @@ export default {
|
|
|
808
808
|
this.config = res
|
|
809
809
|
if (this.config.designMode === 'json') {
|
|
810
810
|
if (this.configData !== undefined) {
|
|
811
|
-
this.config.data = Object.assign({},this.config.data, this.configData)
|
|
811
|
+
this.config.data = Object.assign({}, this.config.data, this.configData)
|
|
812
812
|
}
|
|
813
813
|
this.jsonConfigInit()
|
|
814
814
|
} else {
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
</template>
|
|
26
26
|
<template v-else-if="cell.type === 'slot'">
|
|
27
27
|
<template
|
|
28
|
-
v-if="['x-form-table','x-add-native-form','x-tree-pro', 'x-his-editor', 'x-tab', 'x-form-group', 'x-report', 'x-buttons', 'x-label-select', 'x-conversation', 'x-check-list', 'x-cardSet', 'x-collapse','x-h-descriptions', 'x-sidebar', 'x-list','x-input','x-time-line', 'x-radio','x-calendar', 'x-time-select' ,'x-checkbox', 'x-title', 'x-select', 'x-tree-rows', 'x-three-test-orders', 'x-shift-schedule'].includes(cell.slotType)">
|
|
28
|
+
v-if="['x-form-table','x-add-native-form','x-tree-pro', 'x-his-editor', 'x-tab', 'x-form-group', 'x-report', 'x-buttons', 'x-label-select', 'x-conversation', 'x-check-list', 'x-cardSet', 'x-collapse','x-h-descriptions', 'x-sidebar', 'x-list','x-input','x-time-line', 'x-radio','x-calendar', 'x-time-select' ,'x-checkbox', 'x-title', 'x-select', 'x-tree-rows', 'x-three-test-orders', 'x-shift-schedule','x-charge'].includes(cell.slotType)">
|
|
29
29
|
<component
|
|
30
30
|
:is="getComponentName(cell.slotConfig, cell.serviceName, cell.slotType)"
|
|
31
31
|
:key="cellIndex"
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
</template>
|
|
64
64
|
<template v-else-if="cell.type === 'slot'">
|
|
65
65
|
<template
|
|
66
|
-
v-if="['x-form-table','x-add-native-form','x-tree-pro', 'x-his-editor', 'x-tab', 'x-form-group', 'x-report', 'x-buttons', 'x-label-select', 'x-conversation', 'x-check-list', 'x-cardSet', 'x-collapse', 'x-h-descriptions', 'x-sidebar', 'x-list','x-input','x-time-line', 'x-radio','x-calendar', 'x-time-select','x-checkbox', 'x-title', 'x-select', 'x-tree-rows', 'x-three-test-orders', 'x-shift-schedule'].includes(cell.slotType)">
|
|
66
|
+
v-if="['x-form-table','x-add-native-form','x-tree-pro', 'x-his-editor', 'x-tab', 'x-form-group', 'x-report', 'x-buttons', 'x-label-select', 'x-conversation', 'x-check-list', 'x-cardSet', 'x-collapse', 'x-h-descriptions', 'x-sidebar', 'x-list','x-input','x-time-line', 'x-radio','x-calendar', 'x-time-select','x-checkbox', 'x-title', 'x-select', 'x-tree-rows', 'x-three-test-orders', 'x-shift-schedule','x-charge'].includes(cell.slotType)">
|
|
67
67
|
<component
|
|
68
68
|
:is="getComponentName(cell.slotConfig, cell.serviceName, cell.slotType)"
|
|
69
69
|
:key="cellIndex"
|
|
@@ -125,7 +125,8 @@ export default {
|
|
|
125
125
|
XSelect: () => import('@vue2-client/base-client/components/his/XSelect/XSelect.vue'),
|
|
126
126
|
XTreeRows: () => import('@vue2-client/base-client/components/his/XTreeRows/XTreeRows.vue'),
|
|
127
127
|
XThreeTestOrders: () => import('@vue2-client/base-client/components/his/threeTestOrders/threeTestOrders.vue'),
|
|
128
|
-
XShiftSchedule: () => import('@vue2-client/base-client/components/his/XShiftSchedule/XShiftSchedule.vue')
|
|
128
|
+
XShiftSchedule: () => import('@vue2-client/base-client/components/his/XShiftSchedule/XShiftSchedule.vue'),
|
|
129
|
+
XCharge: () => import('@vue2-client/base-client/components/his/XCharge/XCharge.vue')
|
|
129
130
|
},
|
|
130
131
|
props: {
|
|
131
132
|
// 每一行的配置
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="xcharge-wrapper">
|
|
3
|
+
<!-- 顶部金额信息区(表单行风格,宽度固定,每行4个) -->
|
|
4
|
+
<a-row :gutter="0" class="amount-info">
|
|
5
|
+
<a-col v-for="item in config.amountFields" :key="item.field" :span="6" class="form-row">
|
|
6
|
+
<label class="form-label">{{ item.label }}</label>
|
|
7
|
+
<a-input
|
|
8
|
+
:value="data[item.field]"
|
|
9
|
+
disabled
|
|
10
|
+
class="form-input"
|
|
11
|
+
/>
|
|
12
|
+
</a-col>
|
|
13
|
+
</a-row>
|
|
14
|
+
|
|
15
|
+
<a-divider/>
|
|
16
|
+
|
|
17
|
+
<!-- 支付方式选择区 -->
|
|
18
|
+
<div class="payment-methods">
|
|
19
|
+
<a-button
|
|
20
|
+
v-for="method in config.paymentMethods"
|
|
21
|
+
:key="method.key"
|
|
22
|
+
:class="['payment-btn', { active: selectedMethod === method.key }]"
|
|
23
|
+
@click="selectMethod(method.key)"
|
|
24
|
+
>
|
|
25
|
+
<div>
|
|
26
|
+
<div class="pay-label">{{ method.label }}</div>
|
|
27
|
+
</div>
|
|
28
|
+
</a-button>
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
<a-divider/>
|
|
32
|
+
|
|
33
|
+
<!-- 底部金额和操作区(表单行风格,宽度固定) -->
|
|
34
|
+
<a-row :gutter="0" class="bottom-info">
|
|
35
|
+
<a-col v-for="item in config.bottomFields" :key="item.field" :span="8" class="form-row">
|
|
36
|
+
<label class="form-label">{{ item.label }}</label>
|
|
37
|
+
<a-input
|
|
38
|
+
v-model="data[item.field]"
|
|
39
|
+
:disabled="item.disabled"
|
|
40
|
+
class="form-input"
|
|
41
|
+
/>
|
|
42
|
+
</a-col>
|
|
43
|
+
</a-row>
|
|
44
|
+
<a-row class="actions-row" justify="center">
|
|
45
|
+
<a-button
|
|
46
|
+
v-for="btn in config.actionButtons"
|
|
47
|
+
:key="btn.key"
|
|
48
|
+
@click="handleAction(btn.key)"
|
|
49
|
+
:icon="btn.icon"
|
|
50
|
+
style="margin: 0 8px"
|
|
51
|
+
>
|
|
52
|
+
{{ btn.label }}
|
|
53
|
+
</a-button>
|
|
54
|
+
</a-row>
|
|
55
|
+
</div>
|
|
56
|
+
</template>
|
|
57
|
+
|
|
58
|
+
<script>
|
|
59
|
+
import { getConfigByName, runLogic } from '@/services/api/common'
|
|
60
|
+
|
|
61
|
+
export default {
|
|
62
|
+
name: 'XCharge',
|
|
63
|
+
props: {
|
|
64
|
+
configName: {
|
|
65
|
+
type: String,
|
|
66
|
+
default: '收费组件Config'
|
|
67
|
+
},
|
|
68
|
+
parameter: {
|
|
69
|
+
type: Object,
|
|
70
|
+
default: () => ({})
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
data () {
|
|
74
|
+
return {
|
|
75
|
+
config: {
|
|
76
|
+
amountFields: [],
|
|
77
|
+
paymentMethods: [],
|
|
78
|
+
bottomFields: [],
|
|
79
|
+
actionButtons: []
|
|
80
|
+
},
|
|
81
|
+
data: {},
|
|
82
|
+
selectedMethod: '',
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
created () {
|
|
86
|
+
this.getConfig(this.configName, {})
|
|
87
|
+
},
|
|
88
|
+
methods: {
|
|
89
|
+
getConfig (configName, param) {
|
|
90
|
+
getConfigByName(configName, 'af-his', res => {
|
|
91
|
+
this.config = res
|
|
92
|
+
this.selectedMethod = res.paymentMethods?.[0]?.key || ''
|
|
93
|
+
// 初始化数据
|
|
94
|
+
runLogic(res.dataSourceConfig, param, 'af-his').then(resData => {
|
|
95
|
+
this.data = { ...resData }
|
|
96
|
+
})
|
|
97
|
+
})
|
|
98
|
+
},
|
|
99
|
+
refreshList (param) {
|
|
100
|
+
this.getConfig(this.configName, param)
|
|
101
|
+
},
|
|
102
|
+
handleAction (key) {
|
|
103
|
+
console.warn('选择的的方法 ====》' + key)
|
|
104
|
+
console.warn('页面数据 ====》' + JSON.stringify(this.data))
|
|
105
|
+
console.warn('选择的支付方式 ====》' + this.selectedMethod)
|
|
106
|
+
this.$emit('action', { key, data: this.data, method: this.selectedMethod })
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
watch: {
|
|
110
|
+
configName (val) {
|
|
111
|
+
this.getConfig()
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
</script>
|
|
116
|
+
|
|
117
|
+
<style scoped>
|
|
118
|
+
.xcharge-wrapper {
|
|
119
|
+
background: #fff;
|
|
120
|
+
padding: 24px;
|
|
121
|
+
border-radius: 8px;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
.amount-info {
|
|
125
|
+
margin-bottom: 20px;
|
|
126
|
+
display: flex;
|
|
127
|
+
flex-wrap: wrap;
|
|
128
|
+
row-gap: 16px;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
.form-row {
|
|
132
|
+
display: flex;
|
|
133
|
+
align-items: center;
|
|
134
|
+
margin-bottom: 30px;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
.form-label {
|
|
138
|
+
width: 100px;
|
|
139
|
+
font-size: 18px;
|
|
140
|
+
color: #333;
|
|
141
|
+
font-weight: bold;
|
|
142
|
+
text-align: left;
|
|
143
|
+
letter-spacing: 1px;
|
|
144
|
+
flex-shrink: 0;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
.form-input {
|
|
148
|
+
width: 180px;
|
|
149
|
+
height: 40px;
|
|
150
|
+
font-size: 18px;
|
|
151
|
+
border-radius: 8px;
|
|
152
|
+
border: 1.5px solid #dcdfe6;
|
|
153
|
+
background: #fff;
|
|
154
|
+
color: #333;
|
|
155
|
+
padding-left: 12px;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
.form-input[disabled] {
|
|
159
|
+
color: #999;
|
|
160
|
+
background: #f5f5f5;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
.payment-methods {
|
|
164
|
+
display: flex;
|
|
165
|
+
justify-content: space-around;
|
|
166
|
+
margin: 32px 0;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
.payment-btn {
|
|
170
|
+
width: 180px;
|
|
171
|
+
height: 120px;
|
|
172
|
+
margin: 0 16px;
|
|
173
|
+
display: flex;
|
|
174
|
+
align-items: center;
|
|
175
|
+
justify-content: center;
|
|
176
|
+
background: #f7f8fa;
|
|
177
|
+
border: 1.5px solid #e4e7ed;
|
|
178
|
+
color: #333;
|
|
179
|
+
font-weight: bold;
|
|
180
|
+
font-size: 24px;
|
|
181
|
+
transition: all 0.2s;
|
|
182
|
+
box-shadow: none;
|
|
183
|
+
border-radius: 12px;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
.payment-btn.active {
|
|
187
|
+
background: #409eff;
|
|
188
|
+
border-color: #409eff;
|
|
189
|
+
color: #fff;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
.pay-label {
|
|
193
|
+
font-size: 24px;
|
|
194
|
+
font-weight: bold;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
.pay-shortcut {
|
|
198
|
+
font-size: 16px;
|
|
199
|
+
color: #888;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
.bottom-info {
|
|
203
|
+
margin-top: 24px;
|
|
204
|
+
display: flex;
|
|
205
|
+
flex-wrap: wrap;
|
|
206
|
+
row-gap: 16px;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
.actions-row {
|
|
210
|
+
margin-top: 32px;
|
|
211
|
+
display: flex;
|
|
212
|
+
justify-content: center;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
.actions-row .ant-btn {
|
|
216
|
+
margin: 0 8px;
|
|
217
|
+
background: #444;
|
|
218
|
+
color: #fff;
|
|
219
|
+
border-radius: 6px;
|
|
220
|
+
border: none;
|
|
221
|
+
font-size: 16px;
|
|
222
|
+
font-weight: 500;
|
|
223
|
+
height: 38px;
|
|
224
|
+
min-width: 90px;
|
|
225
|
+
}
|
|
226
|
+
</style>
|
|
@@ -58,9 +58,6 @@ export default {
|
|
|
58
58
|
this.getData(this.queryParamsName, this.fixedQueryForm)
|
|
59
59
|
},
|
|
60
60
|
methods: {
|
|
61
|
-
click11 (val) {
|
|
62
|
-
Object.assign(this.fixedQueryForm, { condition: val })
|
|
63
|
-
},
|
|
64
61
|
async getData (config, param) {
|
|
65
62
|
const that = this
|
|
66
63
|
getConfigByName(config, 'af-his', res => {
|
|
@@ -5,44 +5,44 @@
|
|
|
5
5
|
:rowSelection="rowSelection"
|
|
6
6
|
:scroll="{ y: '75vh' }">
|
|
7
7
|
<span slot="time" class="time-title">
|
|
8
|
-
<span v-for="(item, index) in configData.timePeriod" :key=index>{{item}}</span>
|
|
8
|
+
<span v-for="(item, index) in configData.timePeriod" :key="index">{{ item }}</span>
|
|
9
9
|
</span>
|
|
10
10
|
<template slot="Monday" slot-scope="text, record">
|
|
11
11
|
<div class="time-title">
|
|
12
|
-
<a-button v-for="(item, index) in record.Monday" :key="index" @click="handleShiftChange('Monday', index, record)">{{item === 1 || item === '1' ? '坐诊' : '休息'}}</a-button>
|
|
12
|
+
<a-button v-for="(item, index) in record.Monday" :key="index" @click="handleShiftChange('Monday', index, record)">{{ item === 1 || item === '1' ? '坐诊' : '休息' }}</a-button>
|
|
13
13
|
</div>
|
|
14
14
|
</template>
|
|
15
15
|
<template slot="Tuesday" slot-scope="text, record">
|
|
16
16
|
<div class="time-title">
|
|
17
|
-
<a-button v-for="(item, index) in record.Tuesday" :key="index" @click="handleShiftChange('Tuesday', index, record)">{{item === 1 || item === '1' ? '坐诊' : '休息'}}</a-button>
|
|
17
|
+
<a-button v-for="(item, index) in record.Tuesday" :key="index" @click="handleShiftChange('Tuesday', index, record)">{{ item === 1 || item === '1' ? '坐诊' : '休息' }}</a-button>
|
|
18
18
|
</div>
|
|
19
19
|
</template>
|
|
20
20
|
<template slot="Wednesday" slot-scope="text, record">
|
|
21
21
|
<div class="time-title">
|
|
22
|
-
<a-button v-for="(item, index) in record.Wednesday" :key="index" @click="handleShiftChange('Wednesday', index, record)">{{item === 1 || item === '1' ? '坐诊' : '休息'}}</a-button>
|
|
22
|
+
<a-button v-for="(item, index) in record.Wednesday" :key="index" @click="handleShiftChange('Wednesday', index, record)">{{ item === 1 || item === '1' ? '坐诊' : '休息' }}</a-button>
|
|
23
23
|
</div>
|
|
24
24
|
</template>
|
|
25
25
|
<template slot="Thursday" slot-scope="text, record">
|
|
26
26
|
<div class="time-title">
|
|
27
|
-
<a-button v-for="(item, index) in record.Thursday" :key="index" @click="handleShiftChange('Thursday', index, record)">{{item === 1 || item === '1' ? '坐诊' : '休息'}}</a-button>
|
|
27
|
+
<a-button v-for="(item, index) in record.Thursday" :key="index" @click="handleShiftChange('Thursday', index, record)">{{ item === 1 || item === '1' ? '坐诊' : '休息' }}</a-button>
|
|
28
28
|
</div>
|
|
29
29
|
</template>
|
|
30
30
|
<template slot="Friday" slot-scope="text, record">
|
|
31
31
|
<div class="time-title">
|
|
32
|
-
<a-button v-for="(item, index) in record.Friday" :key="index" @click="handleShiftChange('Friday', index, record)">{{item === 1 || item === '1' ? '坐诊' : '休息'}}</a-button>
|
|
32
|
+
<a-button v-for="(item, index) in record.Friday" :key="index" @click="handleShiftChange('Friday', index, record)">{{ item === 1 || item === '1' ? '坐诊' : '休息' }}</a-button>
|
|
33
33
|
</div>
|
|
34
34
|
</template>
|
|
35
35
|
<template slot="Saturday" slot-scope="text, record">
|
|
36
36
|
<div class="time-title">
|
|
37
|
-
<a-button v-for="(item, index) in record.Saturday" :key="index" @click="handleShiftChange('Saturday', index, record)">{{item === 1 || item === '1' ? '坐诊' : '休息'}}</a-button>
|
|
37
|
+
<a-button v-for="(item, index) in record.Saturday" :key="index" @click="handleShiftChange('Saturday', index, record)">{{ item === 1 || item === '1' ? '坐诊' : '休息' }}</a-button>
|
|
38
38
|
</div>
|
|
39
39
|
</template>
|
|
40
40
|
<template slot="Sunday" slot-scope="text, record">
|
|
41
41
|
<div class="time-title">
|
|
42
|
-
<a-button v-for="(item, index) in record.Sunday" :key="index" @click="handleShiftChange('Sunday', index, record)">{{item === 1 || item === '1' ? '坐诊' : '休息'}}</a-button>
|
|
42
|
+
<a-button v-for="(item, index) in record.Sunday" :key="index" @click="handleShiftChange('Sunday', index, record)">{{ item === 1 || item === '1' ? '坐诊' : '休息' }}</a-button>
|
|
43
43
|
</div>
|
|
44
44
|
</template>
|
|
45
|
-
<template slot="sk_limit"
|
|
45
|
+
<template slot="sk_limit" slot-scope="text, record">
|
|
46
46
|
<a-input-number id="inputNumber" v-model="record.sk_limit" :min="configData.sk_limitMin" :max="configData.sk_limitMax" />
|
|
47
47
|
</template>
|
|
48
48
|
</a-table>
|
|
@@ -59,7 +59,7 @@ const handleClick = () => {
|
|
|
59
59
|
const parseConfig = (data) => {
|
|
60
60
|
if (!data) return
|
|
61
61
|
|
|
62
|
-
const parts = data.includes('-') ? data.split('-') : [data]
|
|
62
|
+
const parts = data.includes('-') ? data.split('-') : data === 'line' ? ['', 'title', 'line'] : [data]
|
|
63
63
|
|
|
64
64
|
// 基本设置 - 标签和类型
|
|
65
65
|
config.value.label = parts[0] || ''
|
|
@@ -76,16 +76,12 @@ const parseConfig = (data) => {
|
|
|
76
76
|
config.value.line = parts[2] || ''
|
|
77
77
|
config.value.color = parts[3] || ''
|
|
78
78
|
config.value.lineLength = parts[4] || ''
|
|
79
|
-
config.value.clickName = '' // 标题类型不需要点击事件
|
|
80
79
|
} else if (config.value.type === 'button') {
|
|
81
80
|
// 按钮类型格式: aa-button-cc
|
|
82
81
|
// parts[0]: 标签
|
|
83
82
|
// parts[1]: button
|
|
84
83
|
// parts[2]: 点击事件名称
|
|
85
84
|
config.value.clickName = parts[2] || ''
|
|
86
|
-
config.value.line = ''
|
|
87
|
-
config.value.color = ''
|
|
88
|
-
config.value.lineLength = ''
|
|
89
85
|
}
|
|
90
86
|
}
|
|
91
87
|
|
|
@@ -13,7 +13,7 @@ const props = defineProps({
|
|
|
13
13
|
modalType: {
|
|
14
14
|
type: String,
|
|
15
15
|
default: 'create',
|
|
16
|
-
validator: (value) => ['create', 'update'
|
|
16
|
+
validator: (value) => ['create', 'update'].includes(value)
|
|
17
17
|
},
|
|
18
18
|
editorReady: {
|
|
19
19
|
type: Boolean,
|
|
@@ -27,8 +27,7 @@ const emit = defineEmits(['update:visible', 'submit', 'cancel'])
|
|
|
27
27
|
// 常量
|
|
28
28
|
const modalTitles = {
|
|
29
29
|
create: '创建体温单',
|
|
30
|
-
update: '更新体温单'
|
|
31
|
-
baby: '新生儿体温单'
|
|
30
|
+
update: '更新体温单'
|
|
32
31
|
}
|
|
33
32
|
|
|
34
33
|
// 响应式状态
|
|
@@ -118,9 +117,9 @@ const resetForm = () => {
|
|
|
118
117
|
formData.heart = ''
|
|
119
118
|
formData.tempType = ''
|
|
120
119
|
formData.temperature = ''
|
|
121
|
-
formData.
|
|
122
|
-
formData.
|
|
123
|
-
formData.
|
|
120
|
+
formData.pulse = ''
|
|
121
|
+
formData.breathing = ''
|
|
122
|
+
formData.bloodPressure = ''
|
|
124
123
|
formData.labels = ''
|
|
125
124
|
formData.data1 = ''
|
|
126
125
|
formData.data2 = ''
|
|
@@ -222,7 +221,6 @@ const closeModal = () => {
|
|
|
222
221
|
|
|
223
222
|
// 验证表单
|
|
224
223
|
const validateForm = () => {
|
|
225
|
-
const isBaby = props.modalType === 'baby'
|
|
226
224
|
const errors = {}
|
|
227
225
|
let hasError = false
|
|
228
226
|
// 通用字段验证
|
|
@@ -247,23 +245,15 @@ const validateForm = () => {
|
|
|
247
245
|
{ key: 'data5', label: '小便次数' }
|
|
248
246
|
]
|
|
249
247
|
// 成人特有字段
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
)
|
|
260
|
-
} else {
|
|
261
|
-
// 婴儿特有字段
|
|
262
|
-
requiredFields.push(
|
|
263
|
-
{ key: 'weight', label: '体重' },
|
|
264
|
-
{ key: 'physicalcool', label: '物理降温' }
|
|
265
|
-
)
|
|
266
|
-
}
|
|
248
|
+
requiredFields.push(
|
|
249
|
+
{ key: 'diag', label: '诊断' },
|
|
250
|
+
{ key: 'operateDate', label: '手术日期' },
|
|
251
|
+
{ key: 'sphygmus', label: '脉搏' },
|
|
252
|
+
{ key: 'data6', label: '身高' },
|
|
253
|
+
{ key: 'data7', label: '体重' },
|
|
254
|
+
{ key: 'data8', label: '过敏药' },
|
|
255
|
+
{ key: 'data9', label: '其他数据' }
|
|
256
|
+
)
|
|
267
257
|
// 检查每个必填字段
|
|
268
258
|
requiredFields.forEach(field => {
|
|
269
259
|
// 首先检查字段是否存在
|
|
@@ -290,9 +280,8 @@ const validateForm = () => {
|
|
|
290
280
|
|
|
291
281
|
// 获取表单数据
|
|
292
282
|
const getFormData = () => {
|
|
293
|
-
const isBaby = props.modalType === 'baby'
|
|
294
283
|
const commonData = {
|
|
295
|
-
id: formData.id ||
|
|
284
|
+
id: formData.id || `VS${Date.now()}`,
|
|
296
285
|
name: formData.name,
|
|
297
286
|
inDate: formData.inDate,
|
|
298
287
|
dept: formData.dept,
|
|
@@ -310,26 +299,18 @@ const getFormData = () => {
|
|
|
310
299
|
data3: formData.data3,
|
|
311
300
|
data4: formData.data4,
|
|
312
301
|
data5: formData.data5,
|
|
313
|
-
pain: formData.pain
|
|
314
|
-
}
|
|
315
|
-
if (isBaby) {
|
|
316
|
-
return {
|
|
317
|
-
...commonData,
|
|
318
|
-
type: 'baby',
|
|
319
|
-
sex: formData.sex,
|
|
320
|
-
weight: formData.weight,
|
|
321
|
-
physicalcool: formData.physicalcool
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
return {
|
|
325
|
-
...commonData,
|
|
326
|
-
diag: formData.diag,
|
|
327
|
-
operateDate: formData.operateDate,
|
|
328
|
-
sphygmus: formData.sphygmus,
|
|
329
302
|
data6: formData.data6,
|
|
330
303
|
data7: formData.data7,
|
|
331
304
|
data8: formData.data8,
|
|
332
|
-
data9: formData.data9
|
|
305
|
+
data9: formData.data9,
|
|
306
|
+
pain: formData.pain,
|
|
307
|
+
diag: formData.diag,
|
|
308
|
+
operateDate: formData.operateDate,
|
|
309
|
+
sphygmus: formData.sphygmus
|
|
310
|
+
}
|
|
311
|
+
return {
|
|
312
|
+
...commonData,
|
|
313
|
+
type: 'normal'
|
|
333
314
|
}
|
|
334
315
|
}
|
|
335
316
|
|
|
@@ -368,7 +349,7 @@ const submitForm = async () => {
|
|
|
368
349
|
<a-form :label-col="{ span: 6 }" :wrapper-col="{ span: 18 }">
|
|
369
350
|
<!-- 通用基础信息字段 -->
|
|
370
351
|
<a-form-item label="ID" :validateStatus="formErrors.id ? 'error' : ''" :help="formErrors.id">
|
|
371
|
-
<a-input v-model="formData.id" :placeholder="`请输入ID
|
|
352
|
+
<a-input v-model="formData.id" :placeholder="`请输入ID,如:AD20230001`" />
|
|
372
353
|
</a-form-item>
|
|
373
354
|
<a-form-item label="姓名" :validateStatus="formErrors.name ? 'error' : ''" :help="formErrors.name">
|
|
374
355
|
<a-input v-model="formData.name" placeholder="请输入姓名,如:张三" />
|
|
@@ -376,24 +357,12 @@ const submitForm = async () => {
|
|
|
376
357
|
<a-form-item label="入院日期" :validateStatus="formErrors.inDate ? 'error' : ''" :help="formErrors.inDate">
|
|
377
358
|
<a-input v-model="formData.inDate" placeholder="请输入日期,如:2023-08-01" />
|
|
378
359
|
</a-form-item>
|
|
379
|
-
<!-- 新生儿特有字段 -->
|
|
380
|
-
<template v-if="modalType === 'baby'">
|
|
381
|
-
<a-form-item label="性别">
|
|
382
|
-
<a-radio-group v-model="formData.sex">
|
|
383
|
-
<a-radio value="男">男</a-radio>
|
|
384
|
-
<a-radio value="女">女</a-radio>
|
|
385
|
-
</a-radio-group>
|
|
386
|
-
</a-form-item>
|
|
387
|
-
</template>
|
|
388
|
-
<!-- 成人特有字段 -->
|
|
389
|
-
<template v-else>
|
|
390
360
|
<a-form-item label="诊断" :validateStatus="formErrors.diag ? 'error' : ''" :help="formErrors.diag">
|
|
391
361
|
<a-input v-model="formData.diag" placeholder="请输入诊断,如:新型冠状病毒肺炎" />
|
|
392
362
|
</a-form-item>
|
|
393
|
-
</template>
|
|
394
363
|
<!-- 通用字段 -->
|
|
395
364
|
<a-form-item label="科室" :validateStatus="formErrors.dept ? 'error' : ''" :help="formErrors.dept">
|
|
396
|
-
<a-input v-model="formData.dept" :placeholder="
|
|
365
|
+
<a-input v-model="formData.dept" :placeholder="`请输入科室,如:呼吸内科`" />
|
|
397
366
|
</a-form-item>
|
|
398
367
|
<a-form-item label="床位" :validateStatus="formErrors.bed ? 'error' : ''" :help="formErrors.bed">
|
|
399
368
|
<a-input v-model="formData.bed" placeholder="请输入床位,如:801" />
|
|
@@ -404,30 +373,19 @@ const submitForm = async () => {
|
|
|
404
373
|
<a-form-item label="开始日期" :validateStatus="formErrors.begin ? 'error' : ''" :help="formErrors.begin">
|
|
405
374
|
<a-input v-model="formData.begin" placeholder="请输入日期,如:2023-08-01" />
|
|
406
375
|
</a-form-item>
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
<a-input v-model="formData.operateDate" placeholder="请输入日期,如:2023-08-03" />
|
|
411
|
-
</a-form-item>
|
|
412
|
-
</template>
|
|
376
|
+
<a-form-item label="手术日期" :validateStatus="formErrors.operateDate ? 'error' : ''" :help="formErrors.operateDate">
|
|
377
|
+
<a-input v-model="formData.operateDate" placeholder="请输入日期,如:2023-08-03" />
|
|
378
|
+
</a-form-item>
|
|
413
379
|
<!-- 备注字段 -->
|
|
414
380
|
<a-form-item label="备注" :validateStatus="formErrors.notes ? 'error' : ''" :help="formErrors.notes">
|
|
415
381
|
<a-input v-model="formData.notes" :placeholder="`请输入备注,如:${modalType === 'baby' ? '出生-十时二十分' : '入院-十时二十分,,转入ICU,,,,,,,手术'}`" />
|
|
416
382
|
<div class="input-tip">格式:多个值用逗号分隔,对应不同日期</div>
|
|
417
383
|
</a-form-item>
|
|
418
384
|
<!-- 根据表单类型显示不同的数据字段 -->
|
|
419
|
-
<
|
|
420
|
-
<a-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
</a-form-item>
|
|
424
|
-
</template>
|
|
425
|
-
<template v-else>
|
|
426
|
-
<a-form-item label="体重" :validateStatus="formErrors.weight ? 'error' : ''" :help="formErrors.weight">
|
|
427
|
-
<a-input v-model="formData.weight" placeholder="体重数据,多个值用逗号分隔,如:3200,,,,3300,,,,3400" />
|
|
428
|
-
<div class="input-tip">格式:多个值用逗号分隔,每组数据对应一天</div>
|
|
429
|
-
</a-form-item>
|
|
430
|
-
</template>
|
|
385
|
+
<a-form-item label="脉搏" :validateStatus="formErrors.sphygmus ? 'error' : ''" :help="formErrors.sphygmus">
|
|
386
|
+
<a-input v-model="formData.sphygmus" placeholder="脉搏数据,如:112,110,109,103,108,85" />
|
|
387
|
+
<div class="input-tip">格式:多个值用逗号分隔</div>
|
|
388
|
+
</a-form-item>
|
|
431
389
|
<!-- 生命体征数据字段 -->
|
|
432
390
|
<a-form-item label="心率" :validateStatus="formErrors.heart ? 'error' : ''" :help="formErrors.heart">
|
|
433
391
|
<a-input v-model="formData.heart" placeholder="心率数据,多个值用逗号分隔,如:112,120,118,111" />
|
|
@@ -438,16 +396,9 @@ const submitForm = async () => {
|
|
|
438
396
|
<div class="input-tip">格式:多个值用逗号分隔,0-3表示不同类型</div>
|
|
439
397
|
</a-form-item>
|
|
440
398
|
<a-form-item label="体温" :validateStatus="formErrors.temperature ? 'error' : ''" :help="formErrors.temperature">
|
|
441
|
-
<a-input v-model="formData.temperature" :placeholder="
|
|
399
|
+
<a-input v-model="formData.temperature" :placeholder="`体温数据,如:38.7,38.9,38.5,39.1,38.5,38.5|37.1`" />
|
|
442
400
|
<div class="input-tip">格式:多个值用逗号分隔<template v-if="modalType !== 'baby'">,|表示新一行数据</template></div>
|
|
443
401
|
</a-form-item>
|
|
444
|
-
<!-- 新生儿特有字段 -->
|
|
445
|
-
<template v-if="modalType === 'baby'">
|
|
446
|
-
<a-form-item label="物理降温" :validateStatus="formErrors.physicalcool ? 'error' : ''" :help="formErrors.physicalcool">
|
|
447
|
-
<a-input v-model="formData.physicalcool" placeholder="物理降温数据,如:,,,37.6,,,,,,,,37.5" />
|
|
448
|
-
<div class="input-tip">格式:多个值用逗号分隔,空值用逗号表示</div>
|
|
449
|
-
</a-form-item>
|
|
450
|
-
</template>
|
|
451
402
|
<!-- 通用数据字段 -->
|
|
452
403
|
<a-form-item label="呼吸" :validateStatus="formErrors.breath ? 'error' : ''" :help="formErrors.breath">
|
|
453
404
|
<a-input v-model="formData.breath" placeholder="呼吸数据,如:30,30,R,,35,35" />
|
|
@@ -478,25 +429,22 @@ const submitForm = async () => {
|
|
|
478
429
|
<a-input v-model="formData.data5" placeholder="小便次数数据,如:2,4,5,3,3,3,2,,2" />
|
|
479
430
|
<div class="input-tip">格式:多个值用逗号分隔</div>
|
|
480
431
|
</a-form-item>
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
<
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
<
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
<
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
<
|
|
496
|
-
|
|
497
|
-
<div class="input-tip">格式:多个值用逗号分隔</div>
|
|
498
|
-
</a-form-item>
|
|
499
|
-
</template>
|
|
432
|
+
<a-form-item label="身高" :validateStatus="formErrors.data6 ? 'error' : ''" :help="formErrors.data6">
|
|
433
|
+
<a-input v-model="formData.data6" placeholder="身高数据,如:167cm,,,,,,,,,164cm" />
|
|
434
|
+
<div class="input-tip">格式:多个值用逗号分隔</div>
|
|
435
|
+
</a-form-item>
|
|
436
|
+
<a-form-item label="体重" :validateStatus="formErrors.data7 ? 'error' : ''" :help="formErrors.data7">
|
|
437
|
+
<a-input v-model="formData.data7" placeholder="体重数据,如:95kg,,,,,90kg" />
|
|
438
|
+
<div class="input-tip">格式:多个值用逗号分隔</div>
|
|
439
|
+
</a-form-item>
|
|
440
|
+
<a-form-item label="过敏药" :validateStatus="formErrors.data8 ? 'error' : ''" :help="formErrors.data8">
|
|
441
|
+
<a-input v-model="formData.data8" placeholder="过敏药数据,如:青霉素," />
|
|
442
|
+
<div class="input-tip">格式:多个值用逗号分隔</div>
|
|
443
|
+
</a-form-item>
|
|
444
|
+
<a-form-item label="其他数据" :validateStatus="formErrors.data9 ? 'error' : ''" :help="formErrors.data9">
|
|
445
|
+
<a-input v-model="formData.data9" placeholder="其他数据,如:测试," />
|
|
446
|
+
<div class="input-tip">格式:多个值用逗号分隔</div>
|
|
447
|
+
</a-form-item>
|
|
500
448
|
<!-- 按钮 -->
|
|
501
449
|
<a-form-item :wrapper-col="{ span: 18, offset: 6 }">
|
|
502
450
|
<a-button type="primary" @click="submitForm" :loading="submitLoading" style="margin-right: 10px">确定</a-button>
|