vue2-client 1.14.42 → 1.14.43
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/.env +1 -1
- package/package.json +1 -1
- package/src/base-client/components/common/XReport/XReport.vue +1 -1
- package/src/base-client/components/common/XTab/XTab.vue +22 -7
- package/src/base-client/components/common/XTable/XTable.vue +3 -1
- package/src/base-client/components/common/XUploadFilesView/index.vue +485 -0
- package/src/base-client/components/his/XShiftSchedule/XShiftSchedule.vue +9 -9
- 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 +151 -50
- package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowBaseInformation.vue +244 -131
- package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowHandle.vue +186 -137
- package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowTimeline.vue +3 -2
|
@@ -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>
|
|
@@ -8,19 +8,16 @@
|
|
|
8
8
|
<a-button plain type="primary" @click="showVitalSignsModal('update')" :loading="loading" :disabled="!editorReady">更新体温单</a-button>
|
|
9
9
|
</a-button-group>
|
|
10
10
|
<a-button-group style="margin: 0 20px;">
|
|
11
|
-
<a-button plain type="primary" @click="showVitalSignsModal('baby')" :loading="loading" :disabled="!editorReady">新生儿体温单</a-button>
|
|
12
|
-
</a-button-group>
|
|
13
|
-
<a-button-group style="margin: 0 20px;">
|
|
14
|
-
<a-button plain type="primary" @click="execCommand('preview')" :loading="loading" :disabled="!editorReady">打印预览</a-button>
|
|
15
11
|
<a-button plain type="primary" @click="execCommand('print')" :loading="loading" :disabled="!editorReady">打印</a-button>
|
|
16
12
|
</a-button-group>
|
|
17
13
|
<!-- 修改清空体温单按钮样式,使其更加醒目 -->
|
|
18
|
-
<a-button
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
14
|
+
<a-button
|
|
15
|
+
type="primary"
|
|
16
|
+
danger
|
|
17
|
+
@click="clearVitalSigns"
|
|
18
|
+
:loading="loading"
|
|
19
|
+
:disabled="!editorReady"
|
|
20
|
+
style="margin-left: 10px;">
|
|
24
21
|
<a-icon type="delete" /> 清空体温单
|
|
25
22
|
</a-button>
|
|
26
23
|
</a-row>
|
|
@@ -70,8 +67,7 @@ const emit = defineEmits(['submit'])
|
|
|
70
67
|
// 常量
|
|
71
68
|
const modalTitles = {
|
|
72
69
|
create: '创建体温单',
|
|
73
|
-
update: '更新体温单'
|
|
74
|
-
baby: '新生儿体温单'
|
|
70
|
+
update: '更新体温单'
|
|
75
71
|
}
|
|
76
72
|
|
|
77
73
|
// 显示弹窗
|
|
@@ -272,22 +268,16 @@ const handleSubmit = async (formData) => {
|
|
|
272
268
|
loading.value = true
|
|
273
269
|
generating.value = true // 开始生成,显示加载遮罩
|
|
274
270
|
try {
|
|
275
|
-
// 简化代码,直接在现有体温单上创建新的体温单(不再清空)
|
|
276
271
|
let result
|
|
277
272
|
try {
|
|
278
273
|
const iframe = editorComponent.value.$refs.editorIframe
|
|
279
274
|
if (iframe?.contentWindow) {
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
console.error('iframe执行错误:', e);
|
|
287
|
-
return null;
|
|
288
|
-
}
|
|
289
|
-
`
|
|
290
|
-
result = iframe.contentWindow.eval(script)
|
|
275
|
+
// 直接传递数据对象,避免使用eval
|
|
276
|
+
if (iframe.contentWindow.editor && typeof iframe.contentWindow.editor.createVitalSigns === 'function') {
|
|
277
|
+
result = iframe.contentWindow.editor.createVitalSigns(formData)
|
|
278
|
+
} else {
|
|
279
|
+
throw new Error('编辑器对象无效')
|
|
280
|
+
}
|
|
291
281
|
} else if (window.iframeEditor) {
|
|
292
282
|
result = window.iframeEditor.createVitalSigns(formData)
|
|
293
283
|
} else {
|
|
@@ -2,64 +2,97 @@
|
|
|
2
2
|
<!-- 抽屉 -->
|
|
3
3
|
<a-drawer
|
|
4
4
|
:visible="visible"
|
|
5
|
-
width="
|
|
5
|
+
width="95vw"
|
|
6
6
|
:placement="direction"
|
|
7
7
|
title="流程详情"
|
|
8
8
|
@close="onClose"
|
|
9
|
+
class="modern-workflow-drawer"
|
|
10
|
+
:bodyStyle="{ padding: '0', background: '#f5f7fa' }"
|
|
11
|
+
:headerStyle="{ borderBottom: '1px solid #eaedf2', padding: '16px 24px' }"
|
|
9
12
|
>
|
|
10
|
-
<div>
|
|
11
|
-
<!--
|
|
12
|
-
<
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
13
|
+
<div class="workflow-container">
|
|
14
|
+
<!-- 基础信息卡片 -->
|
|
15
|
+
<div class="info-section">
|
|
16
|
+
<workflow-base-information
|
|
17
|
+
v-if="details"
|
|
18
|
+
ref="baseInformation"
|
|
19
|
+
:workflow-id="workflowId"
|
|
20
|
+
:details="details"
|
|
21
|
+
:visible="visible"
|
|
22
|
+
class="base-info-card"
|
|
23
|
+
/>
|
|
24
|
+
</div>
|
|
25
|
+
|
|
26
|
+
<!-- 内容区域 -->
|
|
27
|
+
<div class="content-section" :style="{ minHeight: screenHeight * 0.7 + 'px' }">
|
|
28
|
+
<a-card class="content-card" :bordered="false">
|
|
29
|
+
<a-tabs
|
|
30
|
+
:activeKey="activeKey"
|
|
31
|
+
@change="changeTab"
|
|
32
|
+
class="modern-tabs"
|
|
33
|
+
:tabBarStyle="{ marginBottom: '5px', borderBottom: '1px solid #eaedf2' }"
|
|
34
|
+
>
|
|
35
|
+
<!-- 查看/编辑进度标签页 -->
|
|
36
|
+
<a-tab-pane key="1" tab="开始工作">
|
|
37
|
+
<template v-if="details">
|
|
38
|
+
<WorkFlowHandle
|
|
39
|
+
v-if="activeKey === '1' && details.f_state !== undefined && steps !== undefined"
|
|
40
|
+
ref="workflowHandle"
|
|
41
|
+
:workflow-id="workflowId"
|
|
42
|
+
:workflowState="details.f_state === 1"
|
|
43
|
+
:complete-time="details.f_complete_time"
|
|
44
|
+
:stepsForChild="steps"
|
|
45
|
+
:visible="visible"
|
|
46
|
+
:taskName="details.f_task_name"
|
|
47
|
+
:details="details"
|
|
48
|
+
@refresh="stepChanged"
|
|
49
|
+
@success="success"
|
|
50
|
+
@nextClick="nextClick"
|
|
51
|
+
class="handle-content"
|
|
52
|
+
/>
|
|
53
|
+
</template>
|
|
54
|
+
</a-tab-pane>
|
|
55
|
+
|
|
56
|
+
<!-- 任务流转记录标签页 -->
|
|
57
|
+
<a-tab-pane key="2" tab="流转记录">
|
|
58
|
+
<workflow-log
|
|
59
|
+
v-if="activeKey === '2'"
|
|
30
60
|
:workflow-id="workflowId"
|
|
31
|
-
|
|
32
|
-
:complete-time="details.f_complete_time"
|
|
33
|
-
:stepsForChild="steps"
|
|
34
|
-
:visible="visible"
|
|
35
|
-
:taskName="details.f_task_name"
|
|
36
|
-
:details="details"
|
|
37
|
-
@refresh="stepChanged"
|
|
38
|
-
@success="success"
|
|
39
|
-
@nextClick="nextClick"
|
|
61
|
+
class="log-content"
|
|
40
62
|
/>
|
|
41
63
|
</a-tab-pane>
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
</a-tab-pane>
|
|
64
|
+
|
|
65
|
+
<!-- 任务留言标签页 -->
|
|
45
66
|
<a-tab-pane key="4">
|
|
46
|
-
<span slot="tab">
|
|
67
|
+
<span slot="tab" class="message-tab">
|
|
47
68
|
<span>任务留言</span>
|
|
48
69
|
<a-badge
|
|
49
70
|
:count="messageList.length"
|
|
50
|
-
:offset="[
|
|
51
|
-
:
|
|
71
|
+
:offset="[8, -4]"
|
|
72
|
+
:numberStyle="{ backgroundColor: '#5B6B8F', fontSize: '12px', padding: '0 6px', height: '18px', lineHeight: '18px', borderRadius: '9px' }"
|
|
73
|
+
/>
|
|
52
74
|
</span>
|
|
53
|
-
<
|
|
54
|
-
<
|
|
75
|
+
<div class="message-content">
|
|
76
|
+
<template v-if="details">
|
|
55
77
|
<leave-message
|
|
56
|
-
:workflowId="
|
|
78
|
+
:workflowId="workflowId"
|
|
57
79
|
:projectName="details.f_task_name"
|
|
58
80
|
:data="messageList"
|
|
59
81
|
:loading="messageLoading"
|
|
60
|
-
@success="success"
|
|
61
|
-
|
|
62
|
-
|
|
82
|
+
@success="success"
|
|
83
|
+
class="leave-message-component"
|
|
84
|
+
/>
|
|
85
|
+
</template>
|
|
86
|
+
</div>
|
|
87
|
+
</a-tab-pane>
|
|
88
|
+
|
|
89
|
+
<!-- 查看附件标签页 -->
|
|
90
|
+
<a-tab-pane key="5" tab="查看附件">
|
|
91
|
+
<template v-if="details">
|
|
92
|
+
<XUploadFilesView
|
|
93
|
+
:currUserInfo="{ f_userinfo_id: 90613 }"
|
|
94
|
+
/>
|
|
95
|
+
</template>
|
|
63
96
|
</a-tab-pane>
|
|
64
97
|
</a-tabs>
|
|
65
98
|
</a-card>
|
|
@@ -77,6 +110,7 @@ import { postByServiceName } from '@vue2-client/services/api/restTools'
|
|
|
77
110
|
import { workFlowViewApi } from '@vue2-client/services/api/workFlow'
|
|
78
111
|
import WorkflowLog from './WorkflowPageDetail/WorkflowLog.vue'
|
|
79
112
|
import LeaveMessage from './WorkflowPageDetail/LeaveMessage'
|
|
113
|
+
import XUploadFilesView from '@vue2-client/base-client/components/common/XUploadFilesView/index.vue'
|
|
80
114
|
|
|
81
115
|
export default {
|
|
82
116
|
name: 'WorkflowDetail',
|
|
@@ -85,7 +119,8 @@ export default {
|
|
|
85
119
|
WorkFlowHandle,
|
|
86
120
|
XFormTable,
|
|
87
121
|
WorkflowLog,
|
|
88
|
-
LeaveMessage
|
|
122
|
+
LeaveMessage,
|
|
123
|
+
XUploadFilesView
|
|
89
124
|
},
|
|
90
125
|
data () {
|
|
91
126
|
return {
|
|
@@ -98,7 +133,7 @@ export default {
|
|
|
98
133
|
// 保存流程和留言信息
|
|
99
134
|
steps: undefined,
|
|
100
135
|
// 基础信息
|
|
101
|
-
details:
|
|
136
|
+
details: undefined,
|
|
102
137
|
// 是否已完成
|
|
103
138
|
allStepDown: false,
|
|
104
139
|
// 给XFormTable增加额外查询条件
|
|
@@ -113,7 +148,7 @@ export default {
|
|
|
113
148
|
messageList: [],
|
|
114
149
|
messageLoading: true,
|
|
115
150
|
workflowId: '',
|
|
116
|
-
direction: '',
|
|
151
|
+
direction: 'right',
|
|
117
152
|
visible: false
|
|
118
153
|
}
|
|
119
154
|
},
|
|
@@ -150,7 +185,7 @@ export default {
|
|
|
150
185
|
this.visible = false
|
|
151
186
|
this.activeKey = '1'
|
|
152
187
|
this.allStepDown = false
|
|
153
|
-
this.details =
|
|
188
|
+
this.details = undefined
|
|
154
189
|
this.fixedAddForm = {}
|
|
155
190
|
this.fixedQueryForm = {}
|
|
156
191
|
this.steps = undefined
|
|
@@ -180,7 +215,7 @@ export default {
|
|
|
180
215
|
this.fixedAddForm.a_f_workflow_id = this.workflowId
|
|
181
216
|
},
|
|
182
217
|
// 初始化两张固定表
|
|
183
|
-
async init ({ workflowId, direction, visible = true }) {
|
|
218
|
+
async init ({ workflowId, direction = 'right', visible = true }) {
|
|
184
219
|
this.workflowId = workflowId
|
|
185
220
|
this.direction = direction
|
|
186
221
|
this.visible = visible
|
|
@@ -204,6 +239,72 @@ export default {
|
|
|
204
239
|
</script>
|
|
205
240
|
|
|
206
241
|
<style lang="less" scoped>
|
|
242
|
+
.workflow-container {
|
|
243
|
+
height: 100%;
|
|
244
|
+
display: flex;
|
|
245
|
+
flex-direction: column;
|
|
246
|
+
|
|
247
|
+
.info-section {
|
|
248
|
+
padding: 16px 24px;
|
|
249
|
+
background-color: #fff;
|
|
250
|
+
border-bottom: 1px solid #eaedf2;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
.content-section {
|
|
254
|
+
flex: 1;
|
|
255
|
+
padding: 16px 24px;
|
|
256
|
+
|
|
257
|
+
.content-card {
|
|
258
|
+
border-radius: 8px;
|
|
259
|
+
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
|
|
260
|
+
height: 100%;
|
|
261
|
+
|
|
262
|
+
/deep/ .ant-card-body {
|
|
263
|
+
padding: 0px 24px 24px;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
.modern-tabs {
|
|
270
|
+
/deep/ .ant-tabs-nav {
|
|
271
|
+
margin-bottom: 0;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
/deep/ .ant-tabs-tab {
|
|
275
|
+
padding: 12px 0;
|
|
276
|
+
margin-right: 48px;
|
|
277
|
+
font-size: 15px;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
/deep/ .ant-tabs-tab-active {
|
|
281
|
+
font-weight: 500;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
/deep/ .ant-tabs-ink-bar {
|
|
285
|
+
height: 3px;
|
|
286
|
+
border-radius: 3px 3px 0 0;
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
.message-tab {
|
|
291
|
+
display: flex;
|
|
292
|
+
align-items: center;
|
|
293
|
+
gap: 6px;
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
.message-content {
|
|
297
|
+
max-width: 900px;
|
|
298
|
+
|
|
299
|
+
.leave-message-component {
|
|
300
|
+
width: 100%;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
.log-content {
|
|
305
|
+
margin-top: 16px;
|
|
306
|
+
}
|
|
307
|
+
|
|
207
308
|
/deep/ .step-label {
|
|
208
309
|
&:not(:first-child) {
|
|
209
310
|
margin-left: 16px;
|
|
@@ -220,15 +321,15 @@ export default {
|
|
|
220
321
|
margin-right: 8px;
|
|
221
322
|
|
|
222
323
|
&.blue {
|
|
223
|
-
border: 3px solid
|
|
324
|
+
border: 3px solid #5B6B8F;
|
|
224
325
|
}
|
|
225
326
|
|
|
226
327
|
&.green {
|
|
227
|
-
border: 3px solid
|
|
328
|
+
border: 3px solid #4CAF50;
|
|
228
329
|
}
|
|
229
330
|
|
|
230
331
|
&.gray {
|
|
231
|
-
border: 3px solid
|
|
332
|
+
border: 3px solid #cfd8e3;
|
|
232
333
|
}
|
|
233
334
|
}
|
|
234
335
|
}
|