@lambo-design/workflow-approve 1.0.0-beta.2 → 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 +97 -109
- package/src/portrait.vue +83 -332
- package/src/styles/css/index.less +221 -0
- package/src/workflow-diagram.vue +3 -45
package/src/portrait.vue
CHANGED
|
@@ -6,21 +6,21 @@
|
|
|
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
|
-
<Title v-if="!handleButtons || handleButtons.includes('
|
|
23
|
+
<Title v-if="!handleButtons || handleButtons.includes('auditOpinion') || handleButtons.includes('attachmentFile')">
|
|
24
24
|
<a style="color: #989898">
|
|
25
25
|
<Icon v-if="auditShow" type="ios-arrow-down"/>
|
|
26
26
|
<Icon v-if="!auditShow" type="ios-arrow-up"/>
|
|
@@ -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"
|
|
34
|
-
v-if="!handleButtons || handleButtons.includes('
|
|
33
|
+
<Form ref="auditOpinion" justify="center" :label-width="100" :model="form"
|
|
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>
|
|
@@ -151,12 +160,12 @@
|
|
|
151
160
|
<Button style="margin-left: 10px;" v-if="!handleButtons || handleButtons.includes('auditTo40')"
|
|
152
161
|
:disabled="disable" :loading="loading" @click="audit('40')">驳回到上一级
|
|
153
162
|
</Button>
|
|
154
|
-
<Button style="margin-left: 10px;" v-if="!handleButtons || handleButtons.includes('auditTo80')"
|
|
155
|
-
:disabled="disable" :loading="loading" @click="audit('80')">跳转指定节点
|
|
156
|
-
</Button>
|
|
157
163
|
<Button style="margin-left: 10px;" v-if="!handleButtons || handleButtons.includes('auditTo90')"
|
|
158
164
|
:disabled="disable" :loading="loading" @click="audit('90')">驳回指定节点
|
|
159
165
|
</Button>
|
|
166
|
+
<Button style="margin-left: 10px;" v-if="!handleButtons || handleButtons.includes('auditTo80')"
|
|
167
|
+
:disabled="disable" :loading="loading" @click="audit('80')">跳转指定节点
|
|
168
|
+
</Button>
|
|
160
169
|
<Button style="margin-left: 10px;" v-if="!handleButtons || handleButtons.includes('auditTo82')"
|
|
161
170
|
:disabled="disable" :loading="loading" @click="audit('82')">指定他人处理
|
|
162
171
|
</Button>
|
|
@@ -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.
|
|
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.
|
|
790
|
-
if (!self.handleButtons || self.handleButtons.includes('
|
|
791
|
-
|
|
687
|
+
if (self.form.auditOpinion == '' || self.form.auditOpinion == null) {
|
|
688
|
+
if (!self.handleButtons || self.handleButtons.includes('auditOpinion')) {
|
|
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.
|
|
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,10 +830,14 @@ 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
|
-
|
|
941
|
-
|
|
835
|
+
if (resp.data.data.length > 0){
|
|
836
|
+
self.allNode = resp.data.data
|
|
837
|
+
self.modal1 = true
|
|
838
|
+
}else {
|
|
839
|
+
self.$Message.warning('当前流程无前序节点')
|
|
840
|
+
}
|
|
942
841
|
} else {
|
|
943
842
|
self.$Message.error(resp.data.message)
|
|
944
843
|
}
|
|
@@ -950,21 +849,21 @@ export default {
|
|
|
950
849
|
processDefId: self.procId,
|
|
951
850
|
taskId: self.taskId,
|
|
952
851
|
}
|
|
953
|
-
ajax.get(
|
|
852
|
+
ajax.get(self.smartFlowServerContext + '/manage/processTodo/getNodesBehind', {params: params}).then(function (resp) {
|
|
954
853
|
if (resp.data.code === '200') {
|
|
955
|
-
|
|
956
|
-
|
|
854
|
+
if (resp.data.data.length > 0){
|
|
855
|
+
self.allNode = resp.data.data
|
|
856
|
+
self.modal1 = true
|
|
857
|
+
}else {
|
|
858
|
+
self.$Message.warning('当前流程无后续节点')
|
|
859
|
+
}
|
|
957
860
|
} else {
|
|
958
861
|
self.$Message.error(resp.data.message)
|
|
959
862
|
}
|
|
960
863
|
})
|
|
961
864
|
},
|
|
962
865
|
handleSelectedUser(userId) {
|
|
963
|
-
// 处理选中的用户ID,比如将其保存到数据中或执行其他逻辑
|
|
964
866
|
this.selectedUserId = userId;
|
|
965
|
-
// if (userId == null || userId == '') {
|
|
966
|
-
// this.$refs['radio6'].currentValue = false;
|
|
967
|
-
// }
|
|
968
867
|
},
|
|
969
868
|
|
|
970
869
|
//折叠动画效果
|
|
@@ -1010,7 +909,7 @@ export default {
|
|
|
1010
909
|
},
|
|
1011
910
|
watch: {
|
|
1012
911
|
auditOpinionText(label) {
|
|
1013
|
-
this.auditOpinion = label;
|
|
912
|
+
this.form.auditOpinion = label;
|
|
1014
913
|
},
|
|
1015
914
|
procId(val) {
|
|
1016
915
|
this.procId = val;
|
|
@@ -1021,159 +920,11 @@ export default {
|
|
|
1021
920
|
</script>
|
|
1022
921
|
|
|
1023
922
|
<style lang="less" scoped>
|
|
1024
|
-
.
|
|
1025
|
-
height: 100%;
|
|
1026
|
-
position: relative;
|
|
1027
|
-
overflow-y: auto;
|
|
1028
|
-
margin-bottom: -10px;
|
|
1029
|
-
}
|
|
1030
|
-
.lamboIndicatorCard::-webkit-scrollbar {
|
|
1031
|
-
width: 5px;
|
|
1032
|
-
height: 5px;
|
|
1033
|
-
}
|
|
1034
|
-
|
|
1035
|
-
.lamboIndicatorCard::-webkit-scrollbar-thumb {
|
|
1036
|
-
background: linear-gradient(to bottom right, #bbbbbb 0%, #bbbbbb 100%);
|
|
1037
|
-
border-radius: 5px;
|
|
1038
|
-
}
|
|
1039
|
-
.header-text {
|
|
1040
|
-
display: flex;
|
|
1041
|
-
font-size: 18px;
|
|
1042
|
-
font-weight: bold;
|
|
1043
|
-
color: black;
|
|
1044
|
-
}
|
|
1045
|
-
|
|
1046
|
-
.cont {
|
|
1047
|
-
display: flex;
|
|
1048
|
-
width: 100%;
|
|
1049
|
-
height: 100%;
|
|
1050
|
-
}
|
|
1051
|
-
|
|
1052
|
-
.contLeft {
|
|
1053
|
-
flex: 0 0 20%;
|
|
1054
|
-
margin-right: 5px
|
|
1055
|
-
}
|
|
1056
|
-
|
|
1057
|
-
.contRight {
|
|
1058
|
-
display: flex;
|
|
1059
|
-
flex: 0 0 80%;
|
|
1060
|
-
height: 100%;
|
|
1061
|
-
flex-direction: column;
|
|
1062
|
-
|
|
1063
|
-
}
|
|
1064
|
-
|
|
1065
|
-
.iframe {
|
|
1066
|
-
height: 70vh;
|
|
1067
|
-
width: 100%;
|
|
1068
|
-
border-style: none;
|
|
1069
|
-
}
|
|
1070
|
-
|
|
1071
|
-
.fontType {
|
|
1072
|
-
font-family: "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软雅黑", Arial, sans-serif;
|
|
1073
|
-
font-weight: bold;
|
|
1074
|
-
color: #657180;
|
|
1075
|
-
font-size: 14px
|
|
1076
|
-
}
|
|
1077
|
-
|
|
1078
|
-
.processHistory {
|
|
1079
|
-
height: 40vh;
|
|
1080
|
-
width: 100%;
|
|
1081
|
-
overflow-y: auto;
|
|
1082
|
-
}
|
|
1083
|
-
|
|
1084
|
-
.processHistory::-webkit-scrollbar {
|
|
1085
|
-
width: 5px;
|
|
1086
|
-
height: 5px;
|
|
1087
|
-
}
|
|
1088
|
-
|
|
1089
|
-
.processHistory::-webkit-scrollbar-thumb {
|
|
1090
|
-
background: linear-gradient(to bottom right, #bbbbbb 0%, #bbbbbb 100%);
|
|
1091
|
-
border-radius: 5px;
|
|
1092
|
-
}
|
|
1093
|
-
|
|
923
|
+
@import "./styles/css/index.less";
|
|
1094
924
|
/deep/ .ivu-table-row-highlight td {
|
|
1095
925
|
background-color: #50c1ff !important;
|
|
1096
926
|
color: #fff !important;
|
|
1097
927
|
}
|
|
1098
|
-
|
|
1099
|
-
.box {
|
|
1100
|
-
overflow: hidden;
|
|
1101
|
-
transition: height 0.3s ease;
|
|
1102
|
-
height: auto;
|
|
1103
|
-
width: auto;
|
|
1104
|
-
margin-left: -15px;
|
|
1105
|
-
}
|
|
1106
|
-
|
|
1107
|
-
.draw-enter-active, .draw-leave-active {
|
|
1108
|
-
|
|
1109
|
-
}
|
|
1110
|
-
|
|
1111
|
-
.draw-enter, .draw-leave-to {
|
|
1112
|
-
height: 0;
|
|
1113
|
-
}
|
|
1114
|
-
|
|
1115
|
-
.sticky {
|
|
1116
|
-
position: sticky;
|
|
1117
|
-
top: 0;
|
|
1118
|
-
z-index: 100;
|
|
1119
|
-
box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
|
|
1120
|
-
}
|
|
1121
|
-
|
|
1122
|
-
.attachNameStyle {
|
|
1123
|
-
margin-bottom: -5px;
|
|
1124
|
-
white-space: nowrap;
|
|
1125
|
-
display: inline-block;
|
|
1126
|
-
width: auto;
|
|
1127
|
-
font-size: 14px;
|
|
1128
|
-
color: #17233d;
|
|
1129
|
-
overflow: hidden;
|
|
1130
|
-
text-overflow: ellipsis;
|
|
1131
|
-
}
|
|
1132
|
-
|
|
1133
|
-
.leftImageLarge{
|
|
1134
|
-
height: 10%;
|
|
1135
|
-
width: 60px;
|
|
1136
|
-
margin-top: -20px;
|
|
1137
|
-
margin-left: 10px;
|
|
1138
|
-
}
|
|
1139
|
-
.leftImageSmall{
|
|
1140
|
-
height: 40px;
|
|
1141
|
-
width: 40px;
|
|
1142
|
-
margin-top: -10px;
|
|
1143
|
-
}
|
|
1144
|
-
.ivu-divider-horizontal{
|
|
1145
|
-
margin: 10px;
|
|
1146
|
-
}
|
|
1147
|
-
.arrow-button-container {
|
|
1148
|
-
position: absolute;
|
|
1149
|
-
z-index: 50;
|
|
1150
|
-
width: 12px;
|
|
1151
|
-
height: 50px;
|
|
1152
|
-
border-radius: 4px;
|
|
1153
|
-
border: none;
|
|
1154
|
-
background-color: #cccccc;
|
|
1155
|
-
color: white;
|
|
1156
|
-
display: inline-block;
|
|
1157
|
-
transition: 0.5s;
|
|
1158
|
-
top: 50%;
|
|
1159
|
-
transform: translateX(0)
|
|
1160
|
-
}
|
|
1161
|
-
.iconClass{
|
|
1162
|
-
margin-top: 18px;
|
|
1163
|
-
}
|
|
1164
|
-
.attachCard{
|
|
1165
|
-
border:solid;
|
|
1166
|
-
border-width: thin;
|
|
1167
|
-
border-color: #f1f1f1;
|
|
1168
|
-
width: auto;
|
|
1169
|
-
border-radius: 10px;
|
|
1170
|
-
margin: 10px 0 10px 10px
|
|
1171
|
-
}
|
|
1172
|
-
.attachAvatar{
|
|
1173
|
-
background-color: #ed4014;
|
|
1174
|
-
margin-right: 5px;
|
|
1175
|
-
zoom: 150%
|
|
1176
|
-
}
|
|
1177
928
|
/deep/ .ivu-card-body{
|
|
1178
929
|
padding: 10px;
|
|
1179
930
|
}
|