@lambo-design/workflow-approve 1.0.0-beta.3 → 1.0.0-beta.4
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 +2 -2
- package/src/components/history.vue +17 -147
- package/src/components/{attachment.vue → horizontal/attachment.vue} +0 -4
- package/src/components/horizontal/history.vue +4 -8
- package/src/components/opinion.vue +46 -133
- package/src/horizontal.vue +66 -87
- package/src/portrait.vue +65 -322
- package/src/styles/css/index.less +221 -0
- package/src/workflow-diagram.vue +1 -42
package/src/portrait.vue
CHANGED
|
@@ -6,18 +6,18 @@
|
|
|
6
6
|
<template slot="page-extend">
|
|
7
7
|
<Button type="primary" ghost @click="pageGoBack">返回</Button>
|
|
8
8
|
</template>
|
|
9
|
-
<div class="
|
|
9
|
+
<div class="portrait-lambo-indicator-card" :style="{float: 'left', width: isExpanded ? `calc(100% - ${portraitWidth+10}px)` : '99%'}">
|
|
10
10
|
<slot name="business-content">
|
|
11
11
|
</slot>
|
|
12
12
|
</div>
|
|
13
13
|
|
|
14
14
|
<a @click="isExpanded = !isExpanded" class="arrow-button-container" :style="{right: isExpanded ? portraitWidth+10 + 'px' : '10px'}">
|
|
15
|
-
<Icon class="
|
|
16
|
-
<Icon class="
|
|
15
|
+
<Icon class="icon-class" v-if="isExpanded" type="ios-arrow-forward"/>
|
|
16
|
+
<Icon class="icon-class" v-if="!isExpanded" type="ios-arrow-back"/>
|
|
17
17
|
</a>
|
|
18
18
|
<transition name="draw" @before-enter="beforeFlowInfoEnter" @enter="flowInfoEnter"
|
|
19
19
|
@before-leave="beforeFlowInfoLeave" @leave="flowInfoLeave">
|
|
20
|
-
<lamboIndicatorCard v-if="isExpanded" class="
|
|
20
|
+
<lamboIndicatorCard v-if="isExpanded" class="portrait-lambo-indicator-card" :style="{width: portraitWidth + 'px', float: 'right'}" :hasExtend="false">
|
|
21
21
|
<div slot="content-title">流程信息</div>
|
|
22
22
|
<a @click="auditShow = !auditShow">
|
|
23
23
|
<Title v-if="!handleButtons || handleButtons.includes('auditOpinion') || handleButtons.includes('attachmentFile')">
|
|
@@ -30,12 +30,12 @@
|
|
|
30
30
|
</a>
|
|
31
31
|
<transition name="draw" @before-enter="beforeEnter" @enter="enter" @before-leave="beforeLeave" @leave="leave">
|
|
32
32
|
<div class="box" v-show="auditShow">
|
|
33
|
-
<Form ref="auditOpinion" justify="center" :label-width="100"
|
|
33
|
+
<Form ref="auditOpinion" justify="center" :label-width="100" :model="form"
|
|
34
34
|
v-if="!handleButtons || handleButtons.includes('auditOpinion') || handleButtons.includes('attachmentFile')"
|
|
35
35
|
style="margin: 10px 0 0 10px;" :rules="ruleValidate">
|
|
36
36
|
<FormItem label="审批意见:" prop="auditOpinion" >
|
|
37
|
-
<AuditOpinion v-model="auditOpinion" :attachmentFile="handleButtons.includes('attachmentFile')" :attachmentdata="fileList"
|
|
38
|
-
:smart-flow-server-context="smartFlowServerContext"
|
|
37
|
+
<AuditOpinion v-model="form.auditOpinion" :attachmentFile="handleButtons.includes('attachmentFile')" :attachmentdata="fileList"
|
|
38
|
+
:smart-flow-server-context="smartFlowServerContext"></AuditOpinion>
|
|
39
39
|
</FormItem>
|
|
40
40
|
</Form>
|
|
41
41
|
</div>
|
|
@@ -51,10 +51,10 @@
|
|
|
51
51
|
</a>
|
|
52
52
|
<transition name="draw" @before-enter="beforeEnter" @enter="enter" @before-leave="beforeLeave" @leave="leave">
|
|
53
53
|
<div class="box" v-show="historyShow">
|
|
54
|
-
<Card class="
|
|
54
|
+
<Card class="process-history" dis-hover :bordered="false"
|
|
55
55
|
v-if="!handleButtons || handleButtons.includes('auditHistory')">
|
|
56
|
-
<processHistory :portrait-width="portraitWidth" :list="
|
|
57
|
-
:smart-flow-server-context="smartFlowServerContext"
|
|
56
|
+
<processHistory :portrait-width="portraitWidth" :list="processHistory"
|
|
57
|
+
:smart-flow-server-context="smartFlowServerContext"></processHistory>
|
|
58
58
|
</Card>
|
|
59
59
|
</div>
|
|
60
60
|
</transition>
|
|
@@ -71,29 +71,29 @@
|
|
|
71
71
|
<transition name="draw" @before-enter="beforeEnter" @enter="enter" @before-leave="beforeLeave" @leave="leave">
|
|
72
72
|
<div class="box" v-show="(!handleButtons || handleButtons.includes('attachmentFile')) && attachmentList.length > 0 && attachListShow">
|
|
73
73
|
<div v-for="(item, index) in attachmentList" :key="index">
|
|
74
|
-
<Card dis-hover class="
|
|
74
|
+
<Card dis-hover class="attach-card">
|
|
75
75
|
<List item-layout="vertical">
|
|
76
76
|
<ListItem style="margin-top: -8px">
|
|
77
77
|
<Row style="display: flex; align-items: center;">
|
|
78
78
|
<!-- 左边:图片 -->
|
|
79
79
|
<Col span="4" style="margin-top: -25px">
|
|
80
|
-
<avatar v-if="item.fileType === 'image'" icon="ios-image-outline" class="
|
|
80
|
+
<avatar v-if="item.fileType === 'image'" icon="ios-image-outline" class="attach-avatar" style="background-color: #005aff" :style="portraitWidth >= 600 ? 'margin-left: 10px' : ''"
|
|
81
81
|
:size="portraitWidth >= 600 ? 'middle' : 'small'"></avatar>
|
|
82
|
-
<avatar v-else-if="item.fileType === 'doc'" icon="ios-document-outline" class="
|
|
82
|
+
<avatar v-else-if="item.fileType === 'doc'" icon="ios-document-outline" class="attach-avatar" style="background-color: #005aff" :style="portraitWidth >= 600 ? 'margin-left: 10px' : ''"
|
|
83
83
|
:size="portraitWidth >= 600 ? 'middle' : 'small'">
|
|
84
84
|
</avatar>
|
|
85
|
-
<avatar v-else-if="item.fileType === 'xlsx'" icon="ios-document-outline" class="
|
|
85
|
+
<avatar v-else-if="item.fileType === 'xlsx'" icon="ios-document-outline" class="attach-avatar" style="background-color: #19be6b" :style="portraitWidth >= 600 ? 'margin-left: 10px' : ''"
|
|
86
86
|
:size="portraitWidth >= 600 ? 'middle' : 'small'"></avatar>
|
|
87
|
-
<avatar v-else-if="item.fileType === 'pdf'" icon="ios-document-outline" class="
|
|
87
|
+
<avatar v-else-if="item.fileType === 'pdf'" icon="ios-document-outline" class="attach-avatar" style="background-color: #ed4014" :style="portraitWidth >= 600 ? 'margin-left: 10px' : ''"
|
|
88
88
|
:size="portraitWidth >= 600 ? 'middle' : 'small'"></avatar>
|
|
89
|
-
<avatar v-else icon="ios-document-outline" class="
|
|
89
|
+
<avatar v-else icon="ios-document-outline" class="attach-avatar" :style="portraitWidth >= 600 ? 'margin-left: 10px' : ''"
|
|
90
90
|
:size="portraitWidth >= 600 ? 'middle' : 'small'"></avatar>
|
|
91
91
|
</Col>
|
|
92
92
|
<!-- 右边:附件信息 -->
|
|
93
93
|
<Col span="20">
|
|
94
94
|
<Row>
|
|
95
95
|
<tooltip>
|
|
96
|
-
<span class="
|
|
96
|
+
<span class="attach-name-style"> {{ item.attachName }}</span>
|
|
97
97
|
<div slot="content" style="white-space: normal"> {{ item.attachName }}</div>
|
|
98
98
|
</tooltip>
|
|
99
99
|
</Row>
|
|
@@ -121,6 +121,15 @@
|
|
|
121
121
|
</div>
|
|
122
122
|
</div>
|
|
123
123
|
</transition>
|
|
124
|
+
<Modal title="查看附件" v-model="modalVisible" fullscreen scrollable :mask="false">
|
|
125
|
+
<img :src="imageUrl" v-if="modalVisible" alt="" style="width: 100%">
|
|
126
|
+
<div slot="footer">
|
|
127
|
+
<Button type="primary" @click="modalVisible = false">关闭</Button>
|
|
128
|
+
</div>
|
|
129
|
+
</Modal>
|
|
130
|
+
<Modal title="查看附件" v-model="modalDocx" fullscreen scrollable :mask="false">
|
|
131
|
+
<div ref="file" ></div>
|
|
132
|
+
</Modal>
|
|
124
133
|
<Modal v-model="modal1" title="选择节点"
|
|
125
134
|
@on-cancel="cancel"
|
|
126
135
|
@on-ok="ok">
|
|
@@ -134,11 +143,11 @@
|
|
|
134
143
|
<assigneeBox ref="assigneeHelpBox" :executionCompleted="executionCompleted" @update-selected="handleSelectedUser"
|
|
135
144
|
:data="assigneeBoxData" :smart-flow-server-context="smartFlowServerContext" :upms-server-context="upmsServerContext"/>
|
|
136
145
|
<Modal v-model="modalBoxShow" width="1000" title="流程跟踪图">
|
|
137
|
-
<
|
|
146
|
+
<Workflow_Diagram ref="processTrace" :instanceId="process.instanceId" :applyId="process.applyId"
|
|
138
147
|
:procId="process.procId"
|
|
139
148
|
:tableData="process.tableData" :hisAudit="hisAudit"
|
|
140
149
|
:smart-flow-server-context="smartFlowServerContext">
|
|
141
|
-
</
|
|
150
|
+
</Workflow_Diagram>
|
|
142
151
|
</Modal>
|
|
143
152
|
</lamboIndicatorCard>
|
|
144
153
|
</transition>
|
|
@@ -177,7 +186,7 @@
|
|
|
177
186
|
<script>
|
|
178
187
|
import LamboPageContainer from '@lambo-design/page-container'
|
|
179
188
|
import LamboIndicatorCard from '@lambo-design/indicator-card'
|
|
180
|
-
import
|
|
189
|
+
import Workflow_Diagram from './workflow-diagram'
|
|
181
190
|
import ajax from "@lambo-design/shared/utils/ajax";
|
|
182
191
|
import { operateBtn } from '@lambo-design/shared/utils/assist';
|
|
183
192
|
import bus from '@lambo-design/shared/utils/bus';
|
|
@@ -185,8 +194,8 @@ import Title from "./components/title";
|
|
|
185
194
|
import processHistory from "./components/history";
|
|
186
195
|
import assigneeBox from "./components/assignee-box";
|
|
187
196
|
import LamboPagingTable from "@lambo-design/paging-table";
|
|
188
|
-
import axios from "axios";
|
|
189
197
|
import AuditOpinion from "./components/opinion";
|
|
198
|
+
import axios from "axios";
|
|
190
199
|
|
|
191
200
|
// 引入docx-preview插件
|
|
192
201
|
let docx = require('docx-preview');
|
|
@@ -197,7 +206,7 @@ export default {
|
|
|
197
206
|
width: {
|
|
198
207
|
type: Number,
|
|
199
208
|
required: false,
|
|
200
|
-
default:
|
|
209
|
+
default: 400
|
|
201
210
|
},
|
|
202
211
|
procId: {
|
|
203
212
|
type: String,
|
|
@@ -211,16 +220,6 @@ export default {
|
|
|
211
220
|
type: String,
|
|
212
221
|
required: true,
|
|
213
222
|
},
|
|
214
|
-
isShowSave: {
|
|
215
|
-
type: Boolean,
|
|
216
|
-
required: false,
|
|
217
|
-
default: false
|
|
218
|
-
},
|
|
219
|
-
isShowReturn: {
|
|
220
|
-
type: Boolean,
|
|
221
|
-
required: false,
|
|
222
|
-
default: false
|
|
223
|
-
},
|
|
224
223
|
//业务表单保存方法
|
|
225
224
|
businessFormSave: {
|
|
226
225
|
type: Function,
|
|
@@ -239,10 +238,6 @@ export default {
|
|
|
239
238
|
type: String,
|
|
240
239
|
default: '/api/smart-flow-server',
|
|
241
240
|
},
|
|
242
|
-
ossServerContext: {
|
|
243
|
-
type: String,
|
|
244
|
-
default: '/api/oss-server',
|
|
245
|
-
},
|
|
246
241
|
upmsServerContext: {
|
|
247
242
|
type: String,
|
|
248
243
|
default: '/api/upms-server',
|
|
@@ -251,7 +246,7 @@ export default {
|
|
|
251
246
|
components: {
|
|
252
247
|
Title,
|
|
253
248
|
LamboPageContainer,
|
|
254
|
-
|
|
249
|
+
Workflow_Diagram,
|
|
255
250
|
processHistory,
|
|
256
251
|
assigneeBox,
|
|
257
252
|
LamboPagingTable,
|
|
@@ -282,7 +277,9 @@ export default {
|
|
|
282
277
|
ruleValidate: {
|
|
283
278
|
auditOpinion: [{required: true, trigger: "blur", message: "审批意见不能为空"}]
|
|
284
279
|
},
|
|
285
|
-
|
|
280
|
+
form: {
|
|
281
|
+
auditOpinion: '',
|
|
282
|
+
},
|
|
286
283
|
loading: false,
|
|
287
284
|
disable: false,
|
|
288
285
|
instanceId: '',
|
|
@@ -313,7 +310,8 @@ export default {
|
|
|
313
310
|
'30': '同意',
|
|
314
311
|
'70': '驳回原点',
|
|
315
312
|
'40': '驳回上一节点',
|
|
316
|
-
'
|
|
313
|
+
'90': '驳回指定节点',
|
|
314
|
+
'80': '跳转指定节点',
|
|
317
315
|
'82': '转办',
|
|
318
316
|
'50': '人工终止'
|
|
319
317
|
},
|
|
@@ -422,106 +420,6 @@ export default {
|
|
|
422
420
|
return column
|
|
423
421
|
},
|
|
424
422
|
|
|
425
|
-
tableColumn() {
|
|
426
|
-
let column = [];
|
|
427
|
-
let self = this;
|
|
428
|
-
column.push({
|
|
429
|
-
title: '序号',
|
|
430
|
-
type: 'index',
|
|
431
|
-
width: 70,
|
|
432
|
-
align: 'center',
|
|
433
|
-
});
|
|
434
|
-
column.push({
|
|
435
|
-
title: '附件名称', key: 'fileName', minWidth: 150, align: 'center',
|
|
436
|
-
render(h, {row}) {
|
|
437
|
-
const index = row.fileName.lastIndexOf(".");
|
|
438
|
-
const fileName = row.fileName.substr(0, index)
|
|
439
|
-
return h("span", fileName)
|
|
440
|
-
|
|
441
|
-
}
|
|
442
|
-
});
|
|
443
|
-
column.push({
|
|
444
|
-
title: '附件类型', width: 100, align: 'center',
|
|
445
|
-
render: (h, {row}) => {
|
|
446
|
-
const index = row.fileName.lastIndexOf(".");
|
|
447
|
-
const fileType = row.fileName.substr(index + 1)
|
|
448
|
-
return h("span", fileType)
|
|
449
|
-
}
|
|
450
|
-
});
|
|
451
|
-
|
|
452
|
-
column.push({
|
|
453
|
-
title: "上传人姓名",
|
|
454
|
-
key: "uploadUserName",
|
|
455
|
-
width: 170,
|
|
456
|
-
align: "center",
|
|
457
|
-
});
|
|
458
|
-
|
|
459
|
-
column.push({
|
|
460
|
-
title: "节点名称",
|
|
461
|
-
key: "taskName",
|
|
462
|
-
width: 170,
|
|
463
|
-
align: "center",
|
|
464
|
-
});
|
|
465
|
-
|
|
466
|
-
column.push({
|
|
467
|
-
title: "上传时间",
|
|
468
|
-
key: "updTime",
|
|
469
|
-
width: 170,
|
|
470
|
-
align: "center",
|
|
471
|
-
render: (v, param) => {
|
|
472
|
-
if (param.row.updTime) {
|
|
473
|
-
let date = new Date(param.row.updTime)
|
|
474
|
-
let y = date.getFullYear() // 年
|
|
475
|
-
let MM = date.getMonth() + 1 // 月
|
|
476
|
-
MM = MM < 10 ? ('0' + MM) : MM
|
|
477
|
-
let d = date.getDate() // 日
|
|
478
|
-
d = d < 10 ? ('0' + d) : d
|
|
479
|
-
let h = date.getHours() // 时
|
|
480
|
-
h = h < 10 ? ('0' + h) : h
|
|
481
|
-
let m = date.getMinutes()// 分
|
|
482
|
-
m = m < 10 ? ('0' + m) : m
|
|
483
|
-
let s = date.getSeconds()// 秒
|
|
484
|
-
s = s < 10 ? ('0' + s) : s
|
|
485
|
-
let state = y + '-' + MM + '-' + d + ' ' + h + ':' + m + ':' + s;
|
|
486
|
-
return v("span", state);
|
|
487
|
-
}
|
|
488
|
-
return v("span", '')
|
|
489
|
-
}
|
|
490
|
-
});
|
|
491
|
-
|
|
492
|
-
column.push({
|
|
493
|
-
title: "操作", width: 160, align: 'center', tooltip: true,
|
|
494
|
-
render: (h, {row}) => {
|
|
495
|
-
const index = row.fileName.lastIndexOf(".");
|
|
496
|
-
const fileType = row.fileName.substr(index + 1).toLowerCase()
|
|
497
|
-
// const typeList=['jpg','pdf','gif','png','docx']
|
|
498
|
-
//由于pdf预览显示乱码 暂时不提供pdf预览功能
|
|
499
|
-
const typeList = ['jpg', 'gif', 'png', 'docx']
|
|
500
|
-
if (typeList.indexOf(fileType) !== -1) {
|
|
501
|
-
return h("div", [
|
|
502
|
-
operateBtn(this, h, row, "下载", () => {
|
|
503
|
-
this.getAttach(row);
|
|
504
|
-
}, "primary"),
|
|
505
|
-
operateBtn(this, h, row, "预览", () => {
|
|
506
|
-
this.preViewAttach(row);
|
|
507
|
-
}, "primary")
|
|
508
|
-
]);
|
|
509
|
-
} else {
|
|
510
|
-
return h("div", [
|
|
511
|
-
operateBtn(this, h, row, "下载", () => {
|
|
512
|
-
this.getAttach(row);
|
|
513
|
-
}, "primary")
|
|
514
|
-
]);
|
|
515
|
-
}
|
|
516
|
-
|
|
517
|
-
}
|
|
518
|
-
|
|
519
|
-
});
|
|
520
|
-
|
|
521
|
-
return column;
|
|
522
|
-
},
|
|
523
|
-
|
|
524
|
-
|
|
525
423
|
},
|
|
526
424
|
provide() {
|
|
527
425
|
return {
|
|
@@ -552,7 +450,7 @@ export default {
|
|
|
552
450
|
procId: this.procId,
|
|
553
451
|
applyId: this.applyId
|
|
554
452
|
}
|
|
555
|
-
ajax.get(
|
|
453
|
+
ajax.get(self.smartFlowServerContext + '/manage/processDone/getAttachmentList', {params: param}).then(function (resp) {
|
|
556
454
|
self.attachmentList = resp.data.data.rows
|
|
557
455
|
self.attachmentList.forEach(item => {
|
|
558
456
|
const index = item.fileName.lastIndexOf(".")
|
|
@@ -575,12 +473,12 @@ export default {
|
|
|
575
473
|
applyId: this.applyId,
|
|
576
474
|
taskNode:this.taskNode
|
|
577
475
|
}
|
|
578
|
-
ajax.get(
|
|
476
|
+
ajax.get(self.smartFlowServerContext + "/manage/processTodo/list", {params: param}).then(function (resp) {
|
|
579
477
|
if (resp.data.code === '200') {
|
|
580
478
|
self.taskId = resp.data.data.rows[0].taskId
|
|
581
479
|
self.instanceId = resp.data.data.rows[0].procInstanceId
|
|
582
480
|
} else {
|
|
583
|
-
|
|
481
|
+
self.$Message.error(resp.data.message)
|
|
584
482
|
}
|
|
585
483
|
}).catch((err) => {
|
|
586
484
|
console.log(err)
|
|
@@ -592,11 +490,11 @@ export default {
|
|
|
592
490
|
procId: this.procId,
|
|
593
491
|
taskNode: this.taskNode
|
|
594
492
|
}
|
|
595
|
-
ajax.post(
|
|
493
|
+
ajax.post(self.smartFlowServerContext + '/manage/approvalCenter/getNodeData', param).then(function (resp) {
|
|
596
494
|
if (resp.data.code === '200') {
|
|
597
495
|
self.handleButtons = resp.data.data[0].handleButtons
|
|
598
496
|
} else {
|
|
599
|
-
|
|
497
|
+
self.$Message.error(resp.data.message)
|
|
600
498
|
}
|
|
601
499
|
}).catch((err) => {
|
|
602
500
|
console.log(err)
|
|
@@ -617,7 +515,7 @@ export default {
|
|
|
617
515
|
const self = this;
|
|
618
516
|
if (self.auditResult == '82') {
|
|
619
517
|
self.assigneeBoxData = self.auditParams
|
|
620
|
-
|
|
518
|
+
self.$refs.assigneeHelpBox.toggleShowHelpBox();
|
|
621
519
|
} else if (self.auditResult == '80') {
|
|
622
520
|
self.getNodesBehind()
|
|
623
521
|
} else if (self.auditResult == '90') {
|
|
@@ -625,7 +523,7 @@ export default {
|
|
|
625
523
|
} else if (self.auditResult == '40') {
|
|
626
524
|
self.loading = true
|
|
627
525
|
self.disable = true
|
|
628
|
-
let url =
|
|
526
|
+
let url = self.smartFlowServerContext + '/manage/processTodo/getPreNode'
|
|
629
527
|
ajax.post(url, self.auditParams).then(function (resp) {
|
|
630
528
|
let result = resp.data
|
|
631
529
|
if (result.code == '30010') {
|
|
@@ -634,7 +532,7 @@ export default {
|
|
|
634
532
|
content: result.message,
|
|
635
533
|
onOk: () => {
|
|
636
534
|
self.auditParams.auditResult = '70'
|
|
637
|
-
let url =
|
|
535
|
+
let url = self.smartFlowServerContext + '/manage/processTodo/audit'
|
|
638
536
|
ajax.post(url, self.auditParams).then(function (resp) {
|
|
639
537
|
let result = resp.data
|
|
640
538
|
if (result.code == '200') {
|
|
@@ -661,7 +559,7 @@ export default {
|
|
|
661
559
|
} else {
|
|
662
560
|
self.loading = true
|
|
663
561
|
self.disable = true
|
|
664
|
-
let url =
|
|
562
|
+
let url = self.smartFlowServerContext + '/manage/processTodo/audit'
|
|
665
563
|
ajax.post(url, self.auditParams).then(function (resp) {
|
|
666
564
|
let result = resp.data
|
|
667
565
|
if (result.code == '200') {
|
|
@@ -686,7 +584,7 @@ export default {
|
|
|
686
584
|
} else {
|
|
687
585
|
self.loading = true
|
|
688
586
|
self.disable = true
|
|
689
|
-
let url =
|
|
587
|
+
let url = self.smartFlowServerContext + '/manage/processTodo/audit'
|
|
690
588
|
ajax.post(url, self.auditParams).then(function (resp) {
|
|
691
589
|
let result = resp.data
|
|
692
590
|
if (result.code == '200') {
|
|
@@ -728,22 +626,22 @@ export default {
|
|
|
728
626
|
self.submit()
|
|
729
627
|
},
|
|
730
628
|
getAttach(row) {
|
|
731
|
-
window.open(this.
|
|
629
|
+
window.open(this.smartFlowServerContext + "/manage/oss/file/get/" + row.fileId, "_blank");
|
|
732
630
|
},
|
|
733
631
|
preViewAttach(row) {
|
|
734
632
|
let reg = /\.(gif|jpg|jpeg|bmp|png|PNG)$/
|
|
735
633
|
let regs = /\.(pdf)$/
|
|
736
634
|
if (reg.test(row.fileName)) {
|
|
737
|
-
let url = this.
|
|
635
|
+
let url = this.smartFlowServerContext + "/manage/oss/file/get/" + row.fileId;
|
|
738
636
|
this.imgPreview(url);
|
|
739
637
|
} else if (regs.test(row.fileName)) {
|
|
740
|
-
window.open(this.
|
|
638
|
+
window.open(this.smartFlowServerContext + "/manage/oss/file/getFileStream?fileId=" + row.fileId, "_blank");
|
|
741
639
|
} else {
|
|
742
640
|
this.modalDocx = true
|
|
743
641
|
axios({
|
|
744
642
|
method: 'get',
|
|
745
643
|
responseType: 'blob', // 因为是流文件,所以要指定blob类型
|
|
746
|
-
url: this.
|
|
644
|
+
url: this.smartFlowServerContext + "/manage/oss/file/get/" + row.fileId// 一个word下载文件的接口
|
|
747
645
|
}).then(({data}) => {
|
|
748
646
|
docx.renderAsync(data, this.$refs.file, null, {
|
|
749
647
|
className: "docx", //默认和文档样式类的类名/前缀
|
|
@@ -775,7 +673,7 @@ export default {
|
|
|
775
673
|
procId: self.procId,
|
|
776
674
|
applyId: self.applyId,
|
|
777
675
|
taskId: self.taskId,
|
|
778
|
-
auditOpinion: self.auditOpinion,
|
|
676
|
+
auditOpinion: self.form.auditOpinion,
|
|
779
677
|
fileListStr: JSON.stringify(self.fileList),
|
|
780
678
|
auditResult: self.auditResult,
|
|
781
679
|
params: JSON.stringify(self.datas),
|
|
@@ -783,20 +681,19 @@ export default {
|
|
|
783
681
|
selectedUserId: self.selectedUserId,
|
|
784
682
|
}
|
|
785
683
|
if (self.auditResult == '' || self.auditResult == null) {
|
|
786
|
-
|
|
684
|
+
self.$Message.error("请选择审批结果!");
|
|
787
685
|
return;
|
|
788
686
|
}
|
|
789
|
-
if (self.auditOpinion == '' || self.auditOpinion == null) {
|
|
687
|
+
if (self.form.auditOpinion == '' || self.form.auditOpinion == null) {
|
|
790
688
|
if (!self.handleButtons || self.handleButtons.includes('auditOpinion')) {
|
|
791
|
-
|
|
689
|
+
self.$Message.error("请输入审批意见!")
|
|
792
690
|
return;
|
|
793
691
|
} else {
|
|
794
692
|
self.auditParams.auditOpinion = self.handleButtonsNames[self.auditResult];
|
|
795
693
|
}
|
|
796
694
|
}
|
|
797
695
|
|
|
798
|
-
|
|
799
|
-
|
|
696
|
+
self.businessFormSave ? self.businessFormSave(self.handleSaveResult) : self.handleSaveResult(true)
|
|
800
697
|
},
|
|
801
698
|
|
|
802
699
|
//打印流程图信息
|
|
@@ -808,7 +705,7 @@ export default {
|
|
|
808
705
|
procId: self.procId,
|
|
809
706
|
taskId: self.taskId,
|
|
810
707
|
}
|
|
811
|
-
ajax.get(
|
|
708
|
+
ajax.get(self.smartFlowServerContext + '/manage/processTodo/getPrintData', {params: params}).then(function (resp) {
|
|
812
709
|
let result = resp.data.data
|
|
813
710
|
if (resp.data.code === '200') {
|
|
814
711
|
let tableData = result
|
|
@@ -836,7 +733,7 @@ export default {
|
|
|
836
733
|
procId: self.procId,
|
|
837
734
|
taskId: self.taskId
|
|
838
735
|
}
|
|
839
|
-
ajax.get(
|
|
736
|
+
ajax.get(self.smartFlowServerContext + '/manage/processTodo/getHisAudit', {params: params}).then(function (resp) {
|
|
840
737
|
if (resp.data.code === '200') {
|
|
841
738
|
self.hisAudit = resp.data.data
|
|
842
739
|
let uniqueDataMap = {};
|
|
@@ -867,7 +764,7 @@ export default {
|
|
|
867
764
|
procId: self.procId,
|
|
868
765
|
taskId: self.taskId
|
|
869
766
|
}
|
|
870
|
-
ajax.get(
|
|
767
|
+
ajax.get(self.smartFlowServerContext + '/manage/processTodo/getProcessHis', {params: params}).then(function (resp) {
|
|
871
768
|
if (resp.data.code === '200') {
|
|
872
769
|
self.processHistory = resp.data.data
|
|
873
770
|
}
|
|
@@ -875,13 +772,11 @@ export default {
|
|
|
875
772
|
},
|
|
876
773
|
cancel() {
|
|
877
774
|
this.modal = false
|
|
878
|
-
// this.$refs['radio5'].currentValue = false;
|
|
879
775
|
this.auditResult = '';
|
|
880
776
|
},
|
|
881
777
|
ok() {
|
|
882
778
|
this.modal = false
|
|
883
779
|
if (this.targetTaskNode == '' || this.targetTaskNode == null) {
|
|
884
|
-
// this.$refs['radio5'].currentValue = false;
|
|
885
780
|
this.auditResult = '';
|
|
886
781
|
this.$Message.error("请选择审批节点!");
|
|
887
782
|
} else {
|
|
@@ -891,7 +786,7 @@ export default {
|
|
|
891
786
|
procId: self.procId,
|
|
892
787
|
applyId: self.applyId,
|
|
893
788
|
taskId: self.taskId,
|
|
894
|
-
auditOpinion: self.auditOpinion,
|
|
789
|
+
auditOpinion: self.form.auditOpinion,
|
|
895
790
|
fileListStr: JSON.stringify(self.fileList),
|
|
896
791
|
auditResult: self.auditResult,
|
|
897
792
|
params: JSON.stringify(self.datas),
|
|
@@ -901,7 +796,7 @@ export default {
|
|
|
901
796
|
self.loading = true
|
|
902
797
|
self.disable = true
|
|
903
798
|
|
|
904
|
-
let url =
|
|
799
|
+
let url = self.smartFlowServerContext + '/manage/processTodo/audit'
|
|
905
800
|
ajax.post(url, self.auditParams).then(function (resp) {
|
|
906
801
|
let result = resp.data
|
|
907
802
|
if (result.code === '200') {
|
|
@@ -935,7 +830,7 @@ export default {
|
|
|
935
830
|
processDefId: self.procId,
|
|
936
831
|
taskId: self.taskId,
|
|
937
832
|
}
|
|
938
|
-
ajax.get(
|
|
833
|
+
ajax.get(self.smartFlowServerContext + '/manage/processTodo/getAllPreNodes', {params: params}).then(function (resp) {
|
|
939
834
|
if (resp.data.code === '200') {
|
|
940
835
|
if (resp.data.data.length > 0){
|
|
941
836
|
self.allNode = resp.data.data
|
|
@@ -954,7 +849,7 @@ export default {
|
|
|
954
849
|
processDefId: self.procId,
|
|
955
850
|
taskId: self.taskId,
|
|
956
851
|
}
|
|
957
|
-
ajax.get(
|
|
852
|
+
ajax.get(self.smartFlowServerContext + '/manage/processTodo/getNodesBehind', {params: params}).then(function (resp) {
|
|
958
853
|
if (resp.data.code === '200') {
|
|
959
854
|
if (resp.data.data.length > 0){
|
|
960
855
|
self.allNode = resp.data.data
|
|
@@ -968,11 +863,7 @@ export default {
|
|
|
968
863
|
})
|
|
969
864
|
},
|
|
970
865
|
handleSelectedUser(userId) {
|
|
971
|
-
// 处理选中的用户ID,比如将其保存到数据中或执行其他逻辑
|
|
972
866
|
this.selectedUserId = userId;
|
|
973
|
-
// if (userId == null || userId == '') {
|
|
974
|
-
// this.$refs['radio6'].currentValue = false;
|
|
975
|
-
// }
|
|
976
867
|
},
|
|
977
868
|
|
|
978
869
|
//折叠动画效果
|
|
@@ -1018,7 +909,7 @@ export default {
|
|
|
1018
909
|
},
|
|
1019
910
|
watch: {
|
|
1020
911
|
auditOpinionText(label) {
|
|
1021
|
-
this.auditOpinion = label;
|
|
912
|
+
this.form.auditOpinion = label;
|
|
1022
913
|
},
|
|
1023
914
|
procId(val) {
|
|
1024
915
|
this.procId = val;
|
|
@@ -1029,159 +920,11 @@ export default {
|
|
|
1029
920
|
</script>
|
|
1030
921
|
|
|
1031
922
|
<style lang="less" scoped>
|
|
1032
|
-
.
|
|
1033
|
-
height: 100%;
|
|
1034
|
-
position: relative;
|
|
1035
|
-
overflow-y: auto;
|
|
1036
|
-
margin-bottom: -10px;
|
|
1037
|
-
}
|
|
1038
|
-
.lamboIndicatorCard::-webkit-scrollbar {
|
|
1039
|
-
width: 5px;
|
|
1040
|
-
height: 5px;
|
|
1041
|
-
}
|
|
1042
|
-
|
|
1043
|
-
.lamboIndicatorCard::-webkit-scrollbar-thumb {
|
|
1044
|
-
background: linear-gradient(to bottom right, #bbbbbb 0%, #bbbbbb 100%);
|
|
1045
|
-
border-radius: 5px;
|
|
1046
|
-
}
|
|
1047
|
-
.header-text {
|
|
1048
|
-
display: flex;
|
|
1049
|
-
font-size: 18px;
|
|
1050
|
-
font-weight: bold;
|
|
1051
|
-
color: black;
|
|
1052
|
-
}
|
|
1053
|
-
|
|
1054
|
-
.cont {
|
|
1055
|
-
display: flex;
|
|
1056
|
-
width: 100%;
|
|
1057
|
-
height: 100%;
|
|
1058
|
-
}
|
|
1059
|
-
|
|
1060
|
-
.contLeft {
|
|
1061
|
-
flex: 0 0 20%;
|
|
1062
|
-
margin-right: 5px
|
|
1063
|
-
}
|
|
1064
|
-
|
|
1065
|
-
.contRight {
|
|
1066
|
-
display: flex;
|
|
1067
|
-
flex: 0 0 80%;
|
|
1068
|
-
height: 100%;
|
|
1069
|
-
flex-direction: column;
|
|
1070
|
-
|
|
1071
|
-
}
|
|
1072
|
-
|
|
1073
|
-
.iframe {
|
|
1074
|
-
height: 70vh;
|
|
1075
|
-
width: 100%;
|
|
1076
|
-
border-style: none;
|
|
1077
|
-
}
|
|
1078
|
-
|
|
1079
|
-
.fontType {
|
|
1080
|
-
font-family: "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软雅黑", Arial, sans-serif;
|
|
1081
|
-
font-weight: bold;
|
|
1082
|
-
color: #657180;
|
|
1083
|
-
font-size: 14px
|
|
1084
|
-
}
|
|
1085
|
-
|
|
1086
|
-
.processHistory {
|
|
1087
|
-
height: 40vh;
|
|
1088
|
-
width: 100%;
|
|
1089
|
-
overflow-y: auto;
|
|
1090
|
-
}
|
|
1091
|
-
|
|
1092
|
-
.processHistory::-webkit-scrollbar {
|
|
1093
|
-
width: 5px;
|
|
1094
|
-
height: 5px;
|
|
1095
|
-
}
|
|
1096
|
-
|
|
1097
|
-
.processHistory::-webkit-scrollbar-thumb {
|
|
1098
|
-
background: linear-gradient(to bottom right, #bbbbbb 0%, #bbbbbb 100%);
|
|
1099
|
-
border-radius: 5px;
|
|
1100
|
-
}
|
|
1101
|
-
|
|
923
|
+
@import "./styles/css/index.less";
|
|
1102
924
|
/deep/ .ivu-table-row-highlight td {
|
|
1103
925
|
background-color: #50c1ff !important;
|
|
1104
926
|
color: #fff !important;
|
|
1105
927
|
}
|
|
1106
|
-
|
|
1107
|
-
.box {
|
|
1108
|
-
overflow: hidden;
|
|
1109
|
-
transition: height 0.3s ease;
|
|
1110
|
-
height: auto;
|
|
1111
|
-
width: auto;
|
|
1112
|
-
margin-left: -15px;
|
|
1113
|
-
}
|
|
1114
|
-
|
|
1115
|
-
.draw-enter-active, .draw-leave-active {
|
|
1116
|
-
|
|
1117
|
-
}
|
|
1118
|
-
|
|
1119
|
-
.draw-enter, .draw-leave-to {
|
|
1120
|
-
height: 0;
|
|
1121
|
-
}
|
|
1122
|
-
|
|
1123
|
-
.sticky {
|
|
1124
|
-
position: sticky;
|
|
1125
|
-
top: 0;
|
|
1126
|
-
z-index: 100;
|
|
1127
|
-
box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
|
|
1128
|
-
}
|
|
1129
|
-
|
|
1130
|
-
.attachNameStyle {
|
|
1131
|
-
margin-bottom: -5px;
|
|
1132
|
-
white-space: nowrap;
|
|
1133
|
-
display: inline-block;
|
|
1134
|
-
width: auto;
|
|
1135
|
-
font-size: 14px;
|
|
1136
|
-
color: #17233d;
|
|
1137
|
-
overflow: hidden;
|
|
1138
|
-
text-overflow: ellipsis;
|
|
1139
|
-
}
|
|
1140
|
-
|
|
1141
|
-
.leftImageLarge{
|
|
1142
|
-
height: 10%;
|
|
1143
|
-
width: 60px;
|
|
1144
|
-
margin-top: -20px;
|
|
1145
|
-
margin-left: 10px;
|
|
1146
|
-
}
|
|
1147
|
-
.leftImageSmall{
|
|
1148
|
-
height: 40px;
|
|
1149
|
-
width: 40px;
|
|
1150
|
-
margin-top: -10px;
|
|
1151
|
-
}
|
|
1152
|
-
.ivu-divider-horizontal{
|
|
1153
|
-
margin: 10px;
|
|
1154
|
-
}
|
|
1155
|
-
.arrow-button-container {
|
|
1156
|
-
position: absolute;
|
|
1157
|
-
z-index: 50;
|
|
1158
|
-
width: 12px;
|
|
1159
|
-
height: 50px;
|
|
1160
|
-
border-radius: 4px;
|
|
1161
|
-
border: none;
|
|
1162
|
-
background-color: #cccccc;
|
|
1163
|
-
color: white;
|
|
1164
|
-
display: inline-block;
|
|
1165
|
-
transition: 0.5s;
|
|
1166
|
-
top: 50%;
|
|
1167
|
-
transform: translateX(0)
|
|
1168
|
-
}
|
|
1169
|
-
.iconClass{
|
|
1170
|
-
margin-top: 18px;
|
|
1171
|
-
}
|
|
1172
|
-
.attachCard{
|
|
1173
|
-
border:solid;
|
|
1174
|
-
border-width: thin;
|
|
1175
|
-
border-color: #f1f1f1;
|
|
1176
|
-
width: auto;
|
|
1177
|
-
border-radius: 10px;
|
|
1178
|
-
margin: 10px 0 10px 10px
|
|
1179
|
-
}
|
|
1180
|
-
.attachAvatar{
|
|
1181
|
-
background-color: #ed4014;
|
|
1182
|
-
margin-right: 5px;
|
|
1183
|
-
zoom: 150%
|
|
1184
|
-
}
|
|
1185
928
|
/deep/ .ivu-card-body{
|
|
1186
929
|
padding: 10px;
|
|
1187
930
|
}
|