eoss-mobiles 0.2.76 → 0.2.78

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.
@@ -1,1602 +1,1602 @@
1
- <template>
2
- <div class="process-handle">
3
- <div
4
- v-if="handleFlow"
5
- style="display: flex;
6
- flex-direction: column;
7
- height: 100%;"
8
- >
9
- <div class="process-content">
10
- <!-- 当前节点 -->
11
- <div class="present-node">
12
- <div class="label">当前节点:</div>
13
- <div>{{ processObj.taskExamine.nodeName }}</div>
14
- </div>
15
- <!-- 意见 -->
16
- <Opinion
17
- :code="processObj.attachedCode"
18
- :ownId="pendingId"
19
- :esign="esign"
20
- :esignLineWidth="
21
- $attrs['esign-line-width'] || $attrs['esignLineWidth']
22
- "
23
- @onInputOpintion="onInputOpintion"
24
- :isOpinionRequired="isOpinionRequired"
25
- :disabled="isBanInputOpinion != 0"
26
- :baseUrl="baseUrl"
27
- :isForceDisplayDefaultOptionForPrefix="
28
- isForceDisplayDefaultOptionForPrefix
29
- "
30
- :placeholder="opinionHandleExplainText"
31
- :nodeDefaultSubmitOpinion="nodeDefaultSubmitOpinion"
32
- :nodeFixedOpinionSelectList="nodeFixedOpinionSelectList"
33
- :isHiddenOftenOpinion="isHiddenOftenOpinion == 1 ? false : true"
34
- ></Opinion>
35
- <!-- 审核内容 -->
36
- <div class="special-box input-box" v-if="typeCode != 'fenyue'">
37
- <!-- 加签 -->
38
- <div
39
- class="item"
40
- :class="{ itemRadio: form.isAddSign === '1' }"
41
- v-if="isCanAddSign"
42
- >
43
- <em-input
44
- name="radio"
45
- label="是否增加本环节办理人"
46
- :required="true"
47
- >
48
- <template slot="input">
49
- <em-radio-group
50
- v-model="form.isAddSign"
51
- :data="isAddSignList"
52
- direction="horizontal"
53
- />
54
- </template>
55
- </em-input>
56
- </div>
57
- <div
58
- class="item item-user"
59
- label="增加办理人"
60
- v-if="form.isAddSign === '1'"
61
- >
62
- <em-selector
63
- label="增加办理人"
64
- required
65
- multiple
66
- :isAllCheck="isAllCheck"
67
- :baseUrl="apiBaseUrl"
68
- :paddingTop="paddingTop"
69
- :objType="objType"
70
- v-model="addSignUserSelectList"
71
- @change="disposeAppUser($event, 'addSignUserSelectList')"
72
- />
73
- </div>
74
- <!-- 减签 -->
75
- <div
76
- class="item"
77
- :class="{ itemRadio: form.isRemoveSign === '1' }"
78
- v-if="isCanRemoveSign"
79
- >
80
- <em-input name="radio" label="是否减签" :required="true">
81
- <template slot="input">
82
- <em-radio-group
83
- v-model="form.isRemoveSign"
84
- :data="isAddSignList"
85
- direction="horizontal"
86
- />
87
- </template>
88
- </em-input>
89
- </div>
90
- <div v-if="isSpecial && typeCode != 'fenyue'">
91
- <div
92
- class="item item-user"
93
- label="减少办理人"
94
- v-if="form.isRemoveSign === '1'"
95
- >
96
- <em-selector
97
- label="减少办理人"
98
- :isAllCheck="isAllCheck"
99
- required
100
- :paddingTop="paddingTop"
101
- multiple
102
- :baseUrl="apiBaseUrl"
103
- :objType="objType"
104
- v-model="removeSignUserSelectList"
105
- @change="disposeAppUser($event, 'removeSignUserSelectList')"
106
- />
107
- </div>
108
- <!-- 下一步所有相关操作-->
109
- <div
110
- v-if="
111
- form.isRemoveSign !== '1' &&
112
- form.isAddSign !== '1' &&
113
- !isHiddenNextStepInfo
114
- "
115
- >
116
- <!-- <div
117
- @click="isNextBox = !isNextBox"
118
- v-if="!isReject"
119
- class="shrink-btn"
120
- >
121
- {{ isNextBox ? '收起下一步操作和节点' : '展开下一步操作和节点' }}
122
- </div> -->
123
- <div class="next-box" v-show="isNextBox || isReject">
124
- <!-- 下一步操作 -->
125
- <div
126
- class="item next-step"
127
- v-if="!isHiddenNextStepInfo && isChooseNextNode == 1"
128
- >
129
- <em-input
130
- value="下步操作"
131
- label="下步操作"
132
- required
133
- class="em-flow-next-steps"
134
- :disabled="true"
135
- label-position="top"
136
- >
137
- <template slot="input">
138
- <span
139
- class="em-flow-tag"
140
- :class="{ 'em-flow-tag-active': tagKey === item.key }"
141
- @click="changeNextOperate(item)"
142
- v-for="item in taskOperations"
143
- :key="item.key"
144
- >
145
- {{ item.value }}
146
- </span>
147
- </template>
148
- </em-input>
149
- <!-- <em-picker
150
- title="下步操作"
151
- label="下步操作"
152
- required
153
- show-toolbar
154
- v-model="form.nextOperateName"
155
- label-width="100%"
156
- :columns="taskOperations"
157
- value-key="key"
158
- label-key="value"
159
- @confirm="changeNextOperate"
160
- /> -->
161
- </div>
162
- <!-- 下步节点 -->
163
- <div
164
- class="item"
165
- v-if="
166
- nodeList && nodeList.length > 0 && !isReject && isShowNode
167
- "
168
- >
169
- <em-picker
170
- title="下步节点"
171
- label="下步节点"
172
- required
173
- show-toolbar
174
- v-model="form.nextNodeName"
175
- label-width="100%"
176
- :columns="nodeList"
177
- value-key="nodeId"
178
- label-key="nodeName"
179
- @confirm="onConfirmNextNode"
180
- />
181
- </div>
182
- </div>
183
- <!-- 处理方式提示文字 -->
184
- <div class="item" v-if="countersignaturetypeCode">
185
- <van-field
186
- v-model="countersignaturetypeText"
187
- label="处理方式"
188
- :disabled="true"
189
- />
190
- </div>
191
- <!-- 下一步办理人 -->
192
- <div class="item item-user" v-if="isNextUser">
193
- <em-selector
194
- :multiple="!isRadio"
195
- v-model="nextUserSelectList"
196
- :objType="objType"
197
- :isAllCheck="isAllCheck"
198
- required
199
- :paddingTop="paddingTop"
200
- :nextUserList="nextUserList"
201
- :baseUrl="apiBaseUrl"
202
- tabs="employee,persongroup"
203
- :disabled="
204
- !isCustomUser || isCurrentNodeForbiddenChangeCandidate == 1
205
- "
206
- :selectDisabled="isCurrentNodeForbiddenChangeCandidate == 1"
207
- placeholder="请选择下步办理人"
208
- :param="{
209
- pid: pid
210
- }"
211
- label="下步办理人"
212
- @change="disposeAppUser($event, 'nextUserSelectList')"
213
- />
214
- </div>
215
- <!-- 办理角色-->
216
- <div class="item" v-if="isDealRole">
217
- <em-input
218
- value="办理角色"
219
- label="办理角色"
220
- :disabled="true"
221
- placeholder="请选择"
222
- />
223
- </div>
224
- <!-- 办理对象-->
225
- <div class="item" v-if="isDealObject">
226
- <em-input
227
- value="办理对象"
228
- label="办理对象"
229
- :disabled="true"
230
- placeholder="请选择"
231
- />
232
- </div>
233
- <!-- 本单位-->
234
- <!-- v-if="isHideCurrentOrg" -->
235
- <div class="item" v-if="isHideCurrentOrg">
236
- <em-selector
237
- v-model="nextCurrentOrgObjSelect"
238
- multiple
239
- :isAllCheck="isAllCheck"
240
- :paddingTop="paddingTop"
241
- :objType="'enterprise'"
242
- :tabs="'department,myemployee'"
243
- :param="{
244
- pid: orgId
245
- }"
246
- :baseUrl="apiBaseUrl"
247
- :isOtherUnit="false"
248
- :label="currentOrgName ? currentOrgName : '本单位'"
249
- @change="disposeAppUnit($event, 'nextCurrentOrgObjSelect')"
250
- />
251
- </div>
252
- <!-- 外单位 -->
253
- <!-- v-if="isHideOtherOrg" -->
254
- <div class="item" v-if="isHideOtherOrg">
255
- <em-selector
256
- v-model="nextOtherOrgObjSelect"
257
- multiple
258
- :isAllCheck="isAllCheck"
259
- :paddingTop="paddingTop"
260
- :objType="'enterprise'"
261
- :param="{
262
- pid: 'root'
263
- }"
264
- :tabs="'enterprise'"
265
- :baseUrl="apiBaseUrl"
266
- :isOtherUnit="true"
267
- :label="otherOrgName ? otherOrgName : '外单位'"
268
- @change="disposeAppUnit($event, 'nextOtherOrgObjSelect')"
269
- />
270
- </div>
271
- <!-- 主办 -->
272
- <div class="item" v-if="isMainSubProcess && isNodeShowProcess">
273
- <!-- <van-field
274
- value="主办"
275
- label="主办"
276
- :disabled="true"
277
- placeholder="请选择"
278
- /> -->
279
- <em-picker
280
- v-model="form.mainSubId"
281
- label="主办"
282
- title="主办"
283
- placeholder="请选择主办"
284
- show-toolbar
285
- :disabled="subProcessColumns.length == 0"
286
- :columns="subProcessColumns"
287
- />
288
- </div>
289
- <!-- 办理说明 -->
290
- <div class="item" v-if="isHandleExplain">
291
- <van-field
292
- value="办理说明"
293
- label="办理说明"
294
- :disabled="true"
295
- placeholder="请选择"
296
- />
297
- </div>
298
- </div>
299
- <!-- 分阅 -->
300
- <div
301
- class="item"
302
- v-if="
303
- form.isRemoveSign !== '1' &&
304
- form.isAddSign !== '1' &&
305
- isTaskread
306
- "
307
- >
308
- <div class="item item-user">
309
- <em-selector
310
- v-model="nextReadUserSelectList"
311
- multiple
312
- :isAllCheck="isAllCheck"
313
- :objType="objType"
314
- :param="{
315
- pid: pid
316
- }"
317
- :paddingTop="paddingTop"
318
- :baseUrl="apiBaseUrl"
319
- tabs="employee,persongroup"
320
- label="分阅用户"
321
- @change="disposeAppUser($event, 'nextReadUserSelectList')"
322
- />
323
- </div>
324
- </div>
325
- <!-- 限时办理 -->
326
- <!-- v-if="isLimitedTimeHandling" -->
327
- <div class="item" v-if="isLimitedTimeHandling">
328
- <em-input name="radio" label="是否限时办理" :required="true">
329
- <template slot="input">
330
- <em-radio-group
331
- v-model="form.isLimitedTime"
332
- :data="isAddSignList"
333
- direction="horizontal"
334
- />
335
- </template>
336
- </em-input>
337
- </div>
338
- <div
339
- class="item item-limited-time"
340
- v-if="form.isLimitedTime === '1'"
341
- >
342
- <em-input name="radio" label="限时办理时间" :required="true">
343
- <template slot="input">
344
- <div class="item-limited-time-content">
345
- <div>
346
- <em-input
347
- placeholder="请输入天数"
348
- v-model="form.limitedTimeDay"
349
- type="digit"
350
- />
351
- </div>
352
- <div class="day-text">天</div>
353
- <div>
354
- <em-input
355
- :value="form.limitedTimeHour"
356
- clickable
357
- readonly
358
- placeholder="请选择小时"
359
- @click="openTimeList('limitedTimeHour')"
360
- />
361
- </div>
362
- <div class="day-text">时</div>
363
- </div>
364
- </template>
365
- </em-input>
366
- </div>
367
- <div
368
- class="item item-limited-time"
369
- v-if="form.isLimitedTime === '1'"
370
- >
371
- <em-input name="radio" label="提前通知时间" :required="true">
372
- <template slot="input">
373
- <div class="item-limited-time-content">
374
- <div>
375
- <em-input
376
- placeholder="请输入天数"
377
- v-model="form.advanceNoticeDay"
378
- type="digit"
379
- />
380
- </div>
381
- <div class="day-text">天</div>
382
- <div>
383
- <em-input
384
- :value="form.advanceNoticeHour"
385
- clickable
386
- placeholder="请选择小时"
387
- readonly
388
- @click="openTimeList('advanceNoticeHour')"
389
- />
390
- </div>
391
- <div class="day-text">时</div>
392
- </div>
393
- </template>
394
- </em-input>
395
- </div>
396
- <van-popup v-model="showTimeList" round position="bottom">
397
- <van-picker
398
- show-toolbar
399
- :columns="timeList"
400
- @cancel="showTimeList = false"
401
- @confirm="onConfirmTimeList"
402
- />
403
- </van-popup>
404
- <!-- 催办通知方式 -->
405
- <div class="item-msg item-msg1" v-if="isLimitedTimeHandling">
406
- <Message
407
- ref="message"
408
- :label="'催办通知方式'"
409
- :code="'notification_type'"
410
- :baseUrl="baseUrl"
411
- @onInputMsg="onInputMsgUrge"
412
- :required="true"
413
- ></Message>
414
- </div>
415
- <!-- 通知方式 -->
416
- <div class="item-msg item-msg2">
417
- <Message
418
- ref="message"
419
- :code="'notification_type'"
420
- :baseUrl="baseUrl"
421
- :defaultNotificationType="defaultNotificationType"
422
- :defaultNotificationMsg="form.notificationMsg"
423
- @onInputMsg="onInputMsg"
424
- ></Message>
425
- </div>
426
- </div>
427
- </div>
428
- </div>
429
- <div v-if="isSubmitButtonShowAgreeAndDisagree" class="btn-list">
430
- <div class="btn" @click="handleFlow = false">不同意</div>
431
- <div class="btn" @click="onSubmit()">同意</div>
432
- </div>
433
- <div v-else class="btn-list">
434
- <div class="btn" @click="navigateBack">取消</div>
435
- <div class="btn" @click="onSubmit()">确定</div>
436
- </div>
437
- </div>
438
- <Reject
439
- v-else
440
- :pendingId="pendingId"
441
- :before-submit="beforeSubmit"
442
- @close="handleFlow = true"
443
- />
444
- </div>
445
- </template>
446
-
447
- <script>
448
- import {
449
- getHandleInfoHtml,
450
- toStartTaskReadHtml,
451
- taskReadHtml,
452
- getNodeInfoHtml,
453
- taskHandleHtml,
454
- taskHandleHtmlImg
455
- } from '../../../../src/config/api.js';
456
- import request from '../../../../src/utils/http.js';
457
- import Opinion from './Opinion.vue';
458
- import Reject from './Reject.vue';
459
- import Message from './Message.vue';
460
- import FlowMix from '../flowMix';
461
- import $ from '../../../../src/utils/util';
462
- export default {
463
- name: 'Handle',
464
- inheritAttrs: false,
465
- components: {
466
- Opinion,
467
- Reject,
468
- Message
469
- },
470
- mixins: [FlowMix],
471
- props: {
472
- pendingId: String, //待办id
473
- identityIds: String, //用户id
474
- beforeSubmit: Function,
475
- orgId: String, //单位id
476
- depId: String, //部门id
477
- baseUrl: String,
478
- apiBaseUrl: String,
479
- typeCode: String,
480
- paddingTop: {
481
- type: [String, Number],
482
- default: 0
483
- },
484
- isAllCheck: {
485
- type: Boolean,
486
- default: false
487
- },
488
- esign: {
489
- type: Boolean,
490
- default: false
491
- },
492
- userId: {
493
- type: String,
494
- default: ''
495
- }
496
- },
497
- data() {
498
- return {
499
- nextNodeDefault: 0,
500
- showAppUnit: false, // 弹窗单位
501
- handleFlow: true,
502
- isReject: false,
503
- opinionHandleExplainText: undefined,
504
- isCurrentNodeForbiddenChangeCandidate: 0,
505
- nodeFixedOpinionSelectList: [],
506
- isChooseNextNode: 1, //是否展示下步操作
507
- pid: 'root', //树选中pid
508
- objType: 'enterprise', //树点击对象
509
- selectType: 'employee', // 树 选择类型
510
- isNextBox: true, // 是否展开隐藏下步操作
511
- isForceDisplayDefaultOptionForPrefix: false,
512
- isOtherUnit: true, //是否是外单位
513
- isShowNode: false,
514
- subProcessInfo: '',
515
- isNodeShowProcess: false, //是否展示主办
516
- isHiddenOftenOpinion: undefined, //是否隐藏常用意见
517
- isAddSignList: [{ name: '是', value: '1' }, { name: '否', value: '2' }],
518
- form: {
519
- opinion: undefined, // 审批意见
520
- isImageOpinion: 0,
521
- isAddSign: undefined, //是否加签
522
- addSignUserId: undefined, //加签人员id
523
- isRemoveSign: undefined, //是否减签
524
- removeSignUserId: undefined, //减签人员id
525
- nextOperate: undefined, // 下步操作
526
- nextOperateName: undefined, // 下步操作显示
527
- nextNodeId: undefined, // 下步节点,
528
- nextNodeName: undefined, // 下步节点显示
529
- isReturnSubmitter: undefined, //是否返回提交人
530
- isSubFlow: undefined, //是否子流程
531
- isUndertakeReply: undefined, //是否承办回复
532
- isTakeAdviceReply: undefined, //是否征求意见回复回复
533
- isUndertakeEnd: undefined, //是否承办办结
534
- isTakeAdviceEnd: undefined, //是否征求意见办结
535
- isReadDealReply: undefined, //是否阅办回复
536
- isReadDealEnd: undefined, //是否阅办办结
537
- caOpinion: undefined, //加密意见
538
- isReturnRejectNode: undefined, //是否提交驳回节点
539
- isSerialSubmit: undefined, //串行默认提交
540
- loginType: 2, //登录方式
541
- nodeOpinionTemplate: undefined, //意见模板
542
- businessSubCenterCode: undefined, //业务中心编码
543
- nextRoleId: undefined, // 下步办理角色id
544
- nextOrgId: undefined, //下步办理机构
545
- nextCurrentOrgObj: undefined, // 本单位对象
546
- nextCurrentOrgObjSerialId: undefined, //本单位办理对象序列id
547
- nextOtherOrgObj: undefined, //外单位对象
548
- nextOtherOrgObjSerialId: undefined, //外单位办理对象序列id
549
- mainSubId: undefined, //主办id
550
- nextReadUserId: undefined, //分阅用户
551
- handleExplain: undefined, //办理说明
552
- notificationMsg: undefined, //通知消息
553
- nextUserId: undefined, //下步办理人
554
- isLimitedTime: '2', //是否限时办理
555
- limitedTimeDay: undefined, //限时办理时间 天
556
- limitedTimeHour: undefined, //限时办理时间 时
557
- advanceNoticeDay: undefined, //限时办理 天
558
- advanceNoticeHour: undefined, //限时办理 时
559
- advanceNoticeType: [] //催办通知方式
560
- },
561
- isCanFenyue: '0',
562
- isChooseNextNode: 1,
563
- isOpinionRequired: 0, // 意见是否必填
564
- isBanInputOpinion: 0, //意见是否禁用
565
- showTimeList: false, //选择限时办理弹出层
566
- timeList: [], // 选择限时办理时间数组
567
- nextUserList: [], //下步办理人数组
568
- nextCurrentOrgObjSelect: [], // 选中本单位
569
- nextOtherOrgObjSelect: [], //选中外单位
570
- nextReadUserSelectList: [], //分阅选择数组
571
- addSignUserSelectList: [], //增加办理人选择数组
572
- removeSignUserSelectList: [], //减少办理人选择数组
573
- nextUserSelectList: [], //下步办理人选择数组
574
- showAppUser: false, // 办理人遮罩层
575
- showNextOperate: false, // 下一步操作遮罩层
576
- showNextNodeList: false, // 下一步流程节点遮罩层
577
- nodeList: [], // 流程节点列表
578
- selectList: [], // 当前选中办理人
579
- opinionList: [], // 意见列表
580
- processObj: { taskExamine: { nodeName: undefined } }, //流程信息
581
- peopleObj: {}, //办理人信息
582
- userInfo: {}, // 用户信息
583
- isCanAddSign: false, //是否显示加签
584
- isCanRemoveSign: false, //是否显示减签
585
- isSpecial: true, //判断审核内容是否显示(是否是正常的办理页面)
586
- taskOperations: [], //下一步操作
587
- countersignaturetypeCode: false, //用来判断处理方式是否显示
588
- countersignaturetypeText: undefined, // 处理方式
589
- isCustomPreset: true, // 是否允许预设节点
590
- isHideCurrentOrg: false, //是否隐藏本单位(承办)
591
- isHideOtherOrg: false, //是否隐藏外单位(承办)
592
- isHandleExplain: false, // 是否允许办理说明
593
- isTaskread: false, //是否分阅
594
- defaultNotificationType: undefined, ///默认选中通知类型
595
- selectUnitType: 'department', //单位树选择类型
596
- isHiddenNextStepInfo: false, //是否隐藏下一步节点信息和接收人信息
597
- presetEdit: true, //预设是否允许编辑
598
- isLimitedTimeHandling: false, //是否支持发起子流程限时办理
599
- userSelectionType: undefined, //处理人选择方式
600
- orgSelectionType: undefined, //办理机构选择方式
601
- notificationType: undefined, // 通知方式
602
- nodeType: undefined, // 节点类型(普通节点0,承办节点1,会签节点2,阅办节点3)
603
- deptRoleCode: undefined, //本单位角色
604
- orgRoleCode: undefined, //外单位角色
605
- appointNotUserIds: undefined, //业务指定非处理人
606
- handleRoleId: undefined, //办理角色(一般选择范围是部门/单位使用)
607
- nextRole: undefined, //下步节点默认角色
608
- filterCandinateIds: undefined, //节点过滤办理人
609
- selectorDefShowDeptId: undefined, //选择器默认展示部门
610
- isRadio: true, //下步办理人是否单选
611
- otherOrgName: undefined, //外单位名字
612
- currentOrgName: undefined, //本单位名字
613
- isMainSubProcess: false, // 判断是否子-主流程
614
- isNextUser: false, // 判断是否显示下步办理人
615
- isDealObject: false, //判断是否显示办理对象
616
- isDealRole: false, //判断是否显示办理角色
617
- nextUserflag: false,
618
- isSubmitButtonShowAgreeAndDisagree: 0, //是否展示同意和不同意按钮
619
- isCustomUserClick: false, //下步办理人选择是否可以点击
620
- timeListLable: undefined, //用来判断是哪里点开的时间遮罩层
621
- nodeDefaultSubmitOpinion: undefined, //默认提交意见
622
- isCustomUser: 0, //是否可选中办理人
623
- choiceOrgId: '',
624
- choiceDeptId: '',
625
- taskExamineInfo: {},
626
- nodeInfoMapInfo: {},
627
- file: '',
628
- isEndUserTask: '',
629
- tagKey: '',
630
- pOrgId: '',
631
- needRetrialAuth: false
632
- };
633
- },
634
- created() {
635
- // 获取用户信息
636
- // 生成时间数组
637
- this.timeList = new Array();
638
- for (let i = 0; i < 25; i++) {
639
- this.timeList.push(i);
640
- }
641
- this.$toast.loading({
642
- message: '加载中...',
643
- forbidClick: true,
644
- loadingType: 'spinner',
645
- overlay: true,
646
- duration: 0
647
- });
648
- // 获取审核详情后去获取节点信息和办理人信息。
649
- if (this.typeCode == 'fenyue') {
650
- this.getToStartTaskReadIndex();
651
- } else {
652
- Promise.all([this.getProcessObjNew()]).then(() => {
653
- if (this.form.nextNodeId) {
654
- this.getNodeObj(this.form.nextNodeId);
655
- } else {
656
- this.$toast.clear();
657
- }
658
- });
659
- }
660
- },
661
- computed: {
662
- subProcessColumns() {
663
- if (!this.isMainSubProcess || !this.isNodeShowProcess) return [];
664
- let data = [];
665
- let obj = { name: '[部门员工]-' };
666
- this.nextCurrentOrgObjSelect.map(x => {
667
- if (x.objType == 'employee') {
668
- obj.name = !obj.value
669
- ? obj.name + x.showname
670
- : obj.name + ',' + x.showname;
671
- obj.value = obj.value
672
- ? obj.value + ',' + x.showid
673
- : 'employee-' + x.showid;
674
- } else {
675
- data.push({
676
- name: '[部门]' + x.showname,
677
- value: 'department-' + x.showid
678
- });
679
- }
680
- });
681
- obj.value && data.push(obj);
682
- this.nextOtherOrgObjSelect.map(x => {
683
- data.push({
684
- name: '[企业]' + x.showname,
685
- value: 'enterprise-' + x.showid
686
- });
687
- });
688
- return data;
689
- }
690
- },
691
- methods: {
692
- //限时办理时间确认
693
- onConfirmTimeList(val) {
694
- this.form[this.timeListLable] = val;
695
- this.showTimeList = false;
696
- },
697
- // 通知消息回调
698
- onInputMsg(obj) {
699
- this.form.notificationType = obj.notificationType.join(',');
700
- this.form.notificationMsg = obj.notificationMsg;
701
- },
702
- // 催办通知消息回调
703
- onInputMsgUrge(obj) {
704
- this.form.advanceNoticeType = obj.notificationType.join(',');
705
- this.form.advanceNoticeMsg = obj.notificationMsg;
706
- },
707
- // 打来限时办理时间选择遮罩层
708
- openTimeList(label) {
709
- this.timeListLable = label;
710
- this.showTimeList = true;
711
- },
712
-
713
- // 导航栏左侧按钮
714
- navigateBack() {
715
- this.$parent.$emit('close');
716
- },
717
- subRead() {
718
- const {
719
- businessId,
720
- appId,
721
- processDefinitionId,
722
- pendingId
723
- } = this.taskExamineInfo;
724
- let params = {
725
- businessId,
726
- appId,
727
- processDefinitionId,
728
- pendingId,
729
- opinion: this.form.opinion,
730
- taskAction: 'complete',
731
- userId: this.userId || $.getStorage('userId')
732
- };
733
- let formData = new FormData();
734
- if (this.form.isImageOpinion == 1) {
735
- formData.append('file', this.file);
736
- }
737
- for (let key in params) {
738
- if (params[key] !== '' && params[key] !== undefined) {
739
- formData.append(key, params[key]);
740
- }
741
- }
742
- this.$toast.loading({
743
- message: '加载中...',
744
- forbidClick: true,
745
- loadingType: 'spinner',
746
- overlay: true,
747
- duration: 0
748
- });
749
- request({
750
- url: this.baseUrl ? this.baseUrl + taskReadHtml : taskReadHtml,
751
- headers: {
752
- Accept: 'application/json,text/plain'
753
- },
754
- type: 'post',
755
- params: formData,
756
- format: false
757
- })
758
- .then(res => {
759
- const { status, message } = res;
760
- this.$toast.clear();
761
- if (status === 'success') {
762
- this.$toast.success('提交成功');
763
- this.$parent.$emit('success');
764
- } else {
765
- this.$toast(message || '系统错误,请联系管理员!');
766
- this.$emit('error');
767
- }
768
- })
769
- .catch(err => {
770
- this.loading.close();
771
- if (err.message && err.message !== 'canceled') {
772
- this.$toast(err.message);
773
- }
774
- });
775
- },
776
- // 提交流程
777
- onSubmit() {
778
- if (this.typeCode == 'fenyue') return this.subRead();
779
- let idStr = '';
780
- this.nextUserSelectList.map((r, i) => {
781
- idStr =
782
- idStr +
783
- r.showid +
784
- (i === this.nextUserSelectList.length - 1 ? '' : ',');
785
- });
786
- this.form.nextUserId = idStr;
787
- if (
788
- (!this.form.opinion &&
789
- this.isOpinionRequired == 1 &&
790
- !this.nodeDefaultSubmitOpinion &&
791
- this.form.isImageOpinion == 0) ||
792
- (!this.file &&
793
- this.isOpinionRequired == 1 &&
794
- !this.nodeDefaultSubmitOpinion &&
795
- this.form.isImageOpinion == 1)
796
- ) {
797
- this.$toast('请选择输入审批意见');
798
- return;
799
- }
800
- if (
801
- this.isSpecial &&
802
- this.isNextUser &&
803
- !this.form.nextUserId &&
804
- idStr === '' &&
805
- this.form.isAddSign != '1' &&
806
- !this.isReject
807
- ) {
808
- this.$toast('请选择办理人');
809
- return;
810
- }
811
- if (this.form.isAddSign == '1' && !this.form.addSignUserId) {
812
- this.$toast('请选择办理人');
813
- return;
814
- }
815
- if (
816
- !this.form.nextNodeId &&
817
- this.nodeList &&
818
- this.nodeList.length > 0 &&
819
- this.isSpecial &&
820
- !this.isReject &&
821
- this.isShowNode
822
- ) {
823
- this.$toast('请选择流程节点');
824
- return;
825
- }
826
-
827
- let str = '';
828
- if (this.form.opinion) {
829
- str = this.form.opinion.replace(/\s+/g, '');
830
- }
831
- if ((!this.form.opinion || str === '') && this.nodeDefaultSubmitOpinion) {
832
- this.form.opinion = this.nodeDefaultSubmitOpinion;
833
- }
834
-
835
- if (this.form.isLimitedTime === '1' && this.form.limitedTimeDay) {
836
- this.$toast('请填写限时办理天数');
837
- return;
838
- }
839
- if (this.form.isLimitedTime === '1' && this.form.limitedTimeHour) {
840
- this.$toast('请选择限时办理时间');
841
- return;
842
- }
843
- if (this.form.isLimitedTime === '1' && this.form.advanceNoticeDay) {
844
- this.$toast('请填写提前通知天数');
845
- return;
846
- }
847
- if (this.form.isLimitedTime === '1' && this.form.advanceNoticeHour) {
848
- this.$toast('请选择提通知时间');
849
- return;
850
- }
851
- if (this.form.isLimitedTime === '1' && this.form.advanceNoticeType) {
852
- this.$toast('请选择催办通知方式');
853
- return;
854
- }
855
- if (
856
- this.isHideCurrentOrg &&
857
- !this.form.nextCurrentOrgObjJson &&
858
- this.form.isAddSign != '1'
859
- ) {
860
- this.$toast(`请选择${this.currentOrgName || '本单位'}`);
861
- return;
862
- }
863
- delete this.form.nextNodeName;
864
- delete this.form.nextOperateName;
865
- if (!this.isSpecial) {
866
- delete this.form.nextOperate;
867
- delete this.form.nextNodeId;
868
- }
869
- if (this.form.nextOperate == 9) {
870
- this.form.isReturnRejectNode = 1;
871
- this.form.processDefinitionId = this.processObj.taskExamine.processDefinitionId;
872
- }
873
- if (this.beforeSubmit) {
874
- this.beforeSubmit({ pendingId: this.pendingId, ...this.form });
875
- return;
876
- }
877
- if (this.isMainSubProcess && typeof this.form.mainSubId == 'object') {
878
- this.form.mainSubId = this.form.mainSubId.value;
879
- }
880
- this.$toast.loading({
881
- message: '加载中...',
882
- forbidClick: true,
883
- loadingType: 'spinner',
884
- overlay: true,
885
- duration: 0
886
- });
887
- const _that = this;
888
- const {
889
- isEndUserTask,
890
- choiceOrgId,
891
- choiceDeptId,
892
- pOrgId,
893
- taskExamineInfo,
894
- needRetrialAuth,
895
- nodeInfoMapInfo
896
- } = this;
897
- _that.form.isEndUserTask = isEndUserTask;
898
- _that.form.choiceOrgId = choiceOrgId;
899
- _that.form.choiceDeptId = choiceDeptId;
900
- _that.form.needRetrialAuth = needRetrialAuth;
901
- _that.form.pOrgId = pOrgId;
902
- _that.form.processType = taskExamineInfo.processType;
903
- _that.form.businessId = taskExamineInfo.businessId;
904
- _that.form.appId = taskExamineInfo.appId;
905
- _that.form.processDefinitionId = taskExamineInfo.processDefinitionId;
906
- _that.form.isSubFlow = taskExamineInfo.isSubFlow;
907
- _that.form.nodeId = taskExamineInfo.nodeId;
908
- _that.form.userId = _that.userId || $.getStorage('userId');
909
- _that.form.mobileKey = $.getStorage('deviceId') || '123';
910
- _that.form.nextNodeId =
911
- _that.form.nextOperate == 0 || _that.form.nextOperate == 1
912
- ? _that.form.nextNodeId || nodeInfoMapInfo.nodeExtAttr.defaultNextNode
913
- : '';
914
- let formData = new FormData();
915
- if (_that.form.isImageOpinion == 1) {
916
- formData.append('file', _that.file);
917
- }
918
- formData.append('pendingId', _that.pendingId);
919
- for (let key in _that.form) {
920
- if (_that.form[key] !== '' && _that.form[key] !== undefined) {
921
- formData.append(key, _that.form[key]);
922
- }
923
- }
924
- request({
925
- url: _that.baseUrl
926
- ? _that.baseUrl +
927
- (_that.form.isImageOpinion == 1
928
- ? taskHandleHtmlImg
929
- : taskHandleHtml)
930
- : _that.form.isImageOpinion == 1
931
- ? taskHandleHtmlImg
932
- : taskHandleHtml,
933
- type: 'post',
934
- params: formData,
935
- format: false
936
- }).then(res => {
937
- this.$toast.clear();
938
- if (res.status == 'success' || res.status == 'readDealBackProcessing') {
939
- if (res.status == 'readDealBackProcessing') {
940
- this.$toast(
941
- '由于阅办人数较多,任务后台执行中,稍后系统将为您推送阅办任务执行结果,请注意查收!'
942
- );
943
- setTimeout(() => {
944
- this.$toast.clear();
945
- this.$parent.$emit('success');
946
- }, 1500);
947
- } else {
948
- this.$toast('操作成功');
949
- this.$parent.$emit('success');
950
- }
951
- } else {
952
- this.$emit('error');
953
- this.$toast(res.message);
954
- }
955
- });
956
- },
957
- // 删除
958
- delteList(label, i) {
959
- if (label === 'nextUserSelectList') {
960
- let _this = this;
961
- let id = _this.nextUserSelectList[i].showid;
962
- this.nextUserList.find(i => {
963
- if (i.userId === id) {
964
- _this.$set(i, 'checked', false);
965
- }
966
- });
967
- this[label].splice(i, 1);
968
- } else {
969
- this[label].splice(i, 1);
970
- }
971
- },
972
- // 选择办理人
973
- onClickPeople(id) {
974
- this.showAppUser = true;
975
- this.selectList = this[id];
976
- this.$nextTick(function() {
977
- this.$refs.selectTree.getContent(id);
978
- });
979
- },
980
- // 选择单位
981
- onClickOrg(id) {
982
- this.isOtherUnit = id === 'nextCurrentOrgObjSelect' ? false : true;
983
- this.selectUnitType =
984
- id === 'nextCurrentOrgObjSelect' ? 'department,employee' : 'department';
985
- this.showAppUnit = true;
986
- this.$nextTick(function() {
987
- this.$refs.selectTreeUnit.getContent(id);
988
- });
989
- },
990
- // 切换下一步操作
991
- changeNextOperate(val, isDef) {
992
- if (!isDef && val.key === this.tagKey) return;
993
- this.tagKey = val.key;
994
- //恢复默认
995
- this.isNextUser = false;
996
- this.isShowNode = false;
997
- this.isMainSubProcess = false;
998
- this.isNodeShowProcess = false;
999
- this.form.nextNodeId = '';
1000
- this.form.isReturnSubmitter = 0;
1001
- this.form.isUndertakeReply = 0;
1002
- this.form.isTakeAdviceReply = 0;
1003
- this.form.isUndertakeEnd = 0;
1004
- this.form.isTakeAdviceEnd = 0;
1005
- this.form.isReadDealReply = 0;
1006
- this.form.isReadDealEnd = 0;
1007
- this.form.isReturnRejectNode = 0;
1008
- this.form.isSerialSubmit = 0;
1009
- if (val.key == 9) {
1010
- this.isReject = true;
1011
- } else if (val.key == 2) {
1012
- this.isReject = false;
1013
- } else {
1014
- this.isReject = false;
1015
- }
1016
- this.form.nextOperate = val.key;
1017
- this.form.nextOperateName = val.value;
1018
- this.nodeList = val.taskNodeList;
1019
- if (val.key == -1) {
1020
- this.form.isSerialSubmit = 1;
1021
- return;
1022
- } else if (val.key == 0) {
1023
- this.isNextUser = true;
1024
- this.isShowNode = true;
1025
- } else if (val.key == 1) {
1026
- this.isNextUser = true;
1027
- this.isShowNode = true;
1028
- } else if (val.key == 2) {
1029
- this.form.isReturnSubmitter = 1;
1030
- return;
1031
- } else if (val.key == 3) {
1032
- this.form.isUndertakeReply = 1;
1033
- return;
1034
- } else if (val.key == 4) {
1035
- this.form.isTakeAdviceReply = 1;
1036
- return;
1037
- } else if (val.key == 5) {
1038
- this.form.isUndertakeEnd = 1;
1039
- return;
1040
- } else if (val.key == 6) {
1041
- this.form.isTakeAdviceEnd = 1;
1042
- return;
1043
- } else if (val.key == 7) {
1044
- this.form.isReadDealReply = 1;
1045
- return;
1046
- } else if (val.key == 8) {
1047
- this.form.isReadDealEnd = 1;
1048
- return;
1049
- } else if (val.key == 9) {
1050
- this.form.isReturnRejectNode = 1;
1051
- return;
1052
- } else {
1053
- }
1054
-
1055
- if (this.nodeList) {
1056
- this.form.nextNodeId = this.nodeList[this.nextNodeDefault].nodeId;
1057
- this.form.nextNodeName = this.nodeList[this.nextNodeDefault].nodeName;
1058
- this.$toast.loading({
1059
- message: '加载中...',
1060
- forbidClick: true,
1061
- loadingType: 'spinner',
1062
- overlay: true,
1063
- duration: 0
1064
- });
1065
- if (isDef !== true) this.getNodeObj(this.form.nextNodeId);
1066
- }
1067
-
1068
- this.showNextOperate = false;
1069
- },
1070
-
1071
- // 确认流程节点操作
1072
- onConfirmNextNode(val) {
1073
- this.form.nextNodeId = val.nodeId;
1074
- this.form.nextNodeName = val.nodeName;
1075
- this.$toast.loading({
1076
- message: '加载中...',
1077
- forbidClick: true,
1078
- loadingType: 'spinner',
1079
- overlay: true,
1080
- duration: 0
1081
- });
1082
- this.getNodeObj(this.form.nextNodeId);
1083
- this.showNextNodeList = false;
1084
- },
1085
- // 意见回调
1086
- onInputOpintion(val) {
1087
- const { opinion, isImageOpinion, file } = val;
1088
- this.form.opinion = opinion;
1089
- this.form.isImageOpinion = isImageOpinion;
1090
- this.file = file;
1091
- },
1092
- // 办理人选择完回调
1093
- disposeAppUser(res, type) {
1094
- this[type] = res.list;
1095
- let label = '';
1096
- if (type) {
1097
- label = type.substring(0, type.lastIndexOf('SelectList'));
1098
- } else {
1099
- label = res.label.substring(0, res.label.lastIndexOf('SelectList'));
1100
- }
1101
-
1102
- let idStr = '';
1103
- if (res.list) {
1104
- res.list.map((r, i) => {
1105
- idStr = idStr + r.showid + (i === res.list.length - 1 ? '' : ',');
1106
- });
1107
- } else {
1108
- res.map((r, i) => {
1109
- idStr = idStr + r.showid + (i === res.length - 1 ? '' : ',');
1110
- });
1111
- }
1112
- this.form[label + 'Id'] = idStr;
1113
- },
1114
- // 单位选择完回调
1115
- disposeAppUnit(res, type) {
1116
- let label = type.substring(0, type.lastIndexOf('Select'));
1117
- let idStr = '';
1118
- let types = '';
1119
- let SerialId = [];
1120
- this.form[label + 'Name'] = '';
1121
- let obj = {};
1122
- res.list.map((r, i) => {
1123
- if (!types || types.indexOf(r.objType) == -1) {
1124
- idStr = !types
1125
- ? r.objType +
1126
- '-' +
1127
- r.showid +
1128
- (i === res.list.length - 1 ? '' : ',')
1129
- : idStr +
1130
- '|' +
1131
- r.objType +
1132
- '-' +
1133
- r.showid +
1134
- (i === res.list.length - 1 ? '' : ',');
1135
- types = types ? types + ',' + r.objType : r.objType;
1136
- } else {
1137
- idStr = idStr + r.showid + (i === res.list.length - 1 ? '' : ',');
1138
- }
1139
- SerialId.push(r.showid);
1140
- if (obj[r.objType]) {
1141
- obj[r.objType].push(r.showname);
1142
- } else {
1143
- obj[r.objType] = [r.showname];
1144
- }
1145
- });
1146
- this.form[label] = idStr;
1147
- for (let key in obj) {
1148
- if (
1149
- key === 'enterprise' &&
1150
- this.form[label + 'Name'].indexOf('[企业]') == -1
1151
- ) {
1152
- this.form[label + 'Name'] = this.form[label + 'Name']
1153
- ? this.form[label + 'Name'] + '|' + '[企业]-' + obj[key].join(',')
1154
- : '' + '[企业]-' + obj[key].join(',');
1155
- }
1156
- if (
1157
- key === 'department' &&
1158
- this.form[label + 'Name'].indexOf('[部门]') == -1
1159
- ) {
1160
- this.form[label + 'Name'] = this.form[label + 'Name']
1161
- ? this.form[label + 'Name'] + '|' + '[部门]-' + obj[key].join(',')
1162
- : '' + '[部门]-' + obj[key].join(',');
1163
- }
1164
- if (
1165
- key === 'employee' &&
1166
- this.form[label + 'Name'].indexOf('[部门员工]') == -1
1167
- ) {
1168
- this.form[label + 'Name'] = this.form[label + 'Name']
1169
- ? this.form[label + 'Name'] +
1170
- '|' +
1171
- '[部门员工]-' +
1172
- obj[key].join(',')
1173
- : '' + '[部门员工]-' + obj[key].join(',');
1174
- }
1175
- }
1176
- // this.form[label + 'Name'] = obj.enterprise?;
1177
- this.form[label + 'SerialId'] = SerialId.join(',');
1178
- this.form[label + 'Json'] = JSON.stringify(res.list);
1179
- },
1180
- // 获取发起流程信息
1181
- getProcessObjNew() {
1182
- let that = this;
1183
- return new Promise(function(resolve, reiect) {
1184
- request({
1185
- url: that.baseUrl
1186
- ? that.baseUrl + getHandleInfoHtml
1187
- : getHandleInfoHtml,
1188
- params: {
1189
- pendingId: that.pendingId,
1190
- userId: that.userId
1191
- }
1192
- }).then(res => {
1193
- if (res.status == 'success') {
1194
- const {
1195
- data: {
1196
- nodeInfoMap,
1197
- choiceOrgId,
1198
- choiceDeptId,
1199
- pOrgId,
1200
- taskExamine,
1201
- currentOrgName,
1202
- otherOrgName,
1203
- defaultNotificationMessage,
1204
- defaultNotificationType
1205
- }
1206
- } = res;
1207
- that.currentOrgName = currentOrgName;
1208
- that.otherOrgName = otherOrgName;
1209
- that.taskExamineInfo = taskExamine;
1210
- that.form.isReturnSubmitter = taskExamine.isReturnSubmitter;
1211
- that.form.isUndertakeReply = taskExamine.isUndertakeReply;
1212
- that.form.isTakeAdviceReply = taskExamine.isTakeAdviceReply;
1213
- that.form.isUndertakeEnd = taskExamine.isUndertakeEnd;
1214
- that.form.isTakeAdviceEnd = taskExamine.isTakeAdviceEnd;
1215
- that.form.isReadDealReply = taskExamine.isReadDealReply;
1216
- that.form.isReadDealEnd = taskExamine.isReadDealEnd;
1217
- that.form.isReturnRejectNode = taskExamine.isReturnRejectNode;
1218
- that.form.isSerialSubmit = taskExamine.isSerialSubmit;
1219
- that.form.notificationMsg = defaultNotificationMessage;
1220
- defaultNotificationType &&
1221
- (that.defaultNotificationType = defaultNotificationType.split(
1222
- ','
1223
- ));
1224
- that.nodeInfoMapInfo = nodeInfoMap;
1225
- // that.defaultNextNode = nodeInfoMap.nodeExtAttr.defaultNextNode;
1226
- that.opinionHandleExplainText =
1227
- nodeInfoMap.nodeExtAttr.opinionHandleExplainText;
1228
- that.isCanAddSign = res.data.isCanAddSign;
1229
- if (that.isCanAddSign) {
1230
- that.form.isAddSign = '2';
1231
- }
1232
- that.isCanRemoveSign = res.data.isCanRemoveSign;
1233
- if (that.isCanRemoveSign) {
1234
- that.form.isRemoveSign = '2';
1235
- }
1236
- that.isSpecial = res.data.isSpecial;
1237
- that.processObj = res.data;
1238
- that.taskOperations = res.data.taskOperations;
1239
- if (that.taskOperations && that.taskOperations.length > 0) {
1240
- let isSelected = false;
1241
- that.taskOperations.map(item => {
1242
- if (item.isSelected || that.taskOperations.length == 1) {
1243
- isSelected = true;
1244
- if (that.taskOperations.length == 1) {
1245
- that.form.nextOperate = that.taskOperations[0].key;
1246
- that.form.nextOperateName = that.taskOperations[0].value;
1247
- if (
1248
- !that.taskOperations[0].taskNodeList ||
1249
- that.taskOperations[0].taskNodeList.length === 0
1250
- ) {
1251
- that.form.nextNodeId = undefined;
1252
- that.form.nextNodeName = undefined;
1253
- } else {
1254
- that.nodeList = that.taskOperations[0].taskNodeList;
1255
- let info = [];
1256
- that.nodeList.map((x, y) => {
1257
- if (
1258
- x.nodeId === nodeInfoMap.nodeExtAttr.defaultNextNode
1259
- ) {
1260
- info.push(x);
1261
- that.nextNodeDefault = y;
1262
- }
1263
- });
1264
- if (info.length == 0 && that.nodeList.length != 0)
1265
- info = [that.nodeList[0]];
1266
- if (info.length > 0) {
1267
- that.form.nextNodeId = info[0].nodeId;
1268
- that.form.nextNodeName = info[0].nodeName;
1269
- }
1270
- // that.form.nextNodeId = that.nodeList[0].nodeId;
1271
- // that.form.nextNodeName = that.nodeList[0].nodeName;
1272
- }
1273
- } else {
1274
- that.form.nextOperate = item.key;
1275
- that.form.nextOperateName = item.value;
1276
- if (!item.taskNodeList || item.taskNodeList.length === 0) {
1277
- that.form.nextNodeId = undefined;
1278
- that.form.nextNodeName = undefined;
1279
- } else {
1280
- that.nodeList = item.taskNodeList;
1281
- let info = [];
1282
- that.nodeList.map((x, y) => {
1283
- if (
1284
- x.nodeId === nodeInfoMap.nodeExtAttr.defaultNextNode
1285
- ) {
1286
- info.push(x);
1287
- that.nextNodeDefault = y;
1288
- }
1289
- });
1290
- if (info.length == 0 && that.nodeList.length != 0)
1291
- info = [that.nodeList[0]];
1292
- if (info.length > 0) {
1293
- that.form.nextNodeId = info[0].nodeId;
1294
- that.form.nextNodeName = info[0].nodeName;
1295
- }
1296
- // that.form.nextNodeId = that.nodeList[0].nodeId;
1297
- // that.form.nextNodeName = that.nodeList[0].nodeName;
1298
- }
1299
- }
1300
- if (item.key == 9) {
1301
- that.isReject = true;
1302
- }
1303
- that.changeNextOperate(item, true);
1304
- }
1305
- });
1306
- if (!isSelected) {
1307
- that.form.nextOperate = that.taskOperations[0].key;
1308
- that.form.nextOperateName = that.taskOperations[0].value;
1309
- that.nodeList = that.taskOperations[0].taskNodeList || [];
1310
- if (that.nodeList && that.nodeList.length > 0) {
1311
- that.form.nextNodeId = that.nodeList[0].nodeId;
1312
- that.form.nextNodeName = that.nodeList[0].nodeName;
1313
- }
1314
- }
1315
- }
1316
- if (nodeInfoMap && JSON.stringify(nodeInfoMap) != '{}') {
1317
- that.needRetrialAuth = !!nodeInfoMap.nodeExtAttr
1318
- .isCurrentNodeSubmitNeedRetrialAuth;
1319
- if (nodeInfoMap.nodeExtAttr.nodeFixedOpinionSelectList) {
1320
- let notice = JSON.parse(
1321
- nodeInfoMap.nodeExtAttr.nodeFixedOpinionSelectList
1322
- );
1323
- notice.map(x => {
1324
- that.nodeFixedOpinionSelectList.push({ content: x });
1325
- });
1326
- }
1327
- that.isCurrentNodeForbiddenChangeCandidate =
1328
- nodeInfoMap.nodeExtAttr.isCurrentNodeForbiddenChangeCandidate;
1329
- that.isHiddenOftenOpinion =
1330
- nodeInfoMap.nodeExtAttr.isHiddenOftenOpinion;
1331
- that.nodeDefaultSubmitOpinion =
1332
- nodeInfoMap.nodeExtAttr.nodeDefaultSubmitOpinion;
1333
- that.isSubmitButtonShowAgreeAndDisagree =
1334
- nodeInfoMap.nodeExtAttr.isSubmitButtonShowAgreeAndDisagree;
1335
- that.isOpinionRequired =
1336
- nodeInfoMap.nodeExtAttr.isOpinionRequired;
1337
- // that.isChooseNextNode = nodeInfoMap.nodeExtAttr.isChooseNextNode;
1338
- that.isBanInputOpinion =
1339
- nodeInfoMap.nodeExtAttr.isBanInputOpinion;
1340
- that.isForceDisplayDefaultOptionForPrefix =
1341
- nodeInfoMap.nodeExtAttr.isForceDisplayDefaultOptionForPrefix ==
1342
- 1;
1343
- }
1344
- that.choiceOrgId = choiceOrgId;
1345
- that.choiceDeptId = choiceDeptId;
1346
- that.pOrgId = pOrgId;
1347
- that.isEndUserTask = res.data.isEndUserTask;
1348
- if (!that.isOpinionRequired) {
1349
- that.isOpinionRequired = 0;
1350
- }
1351
- if (!that.isBanInputOpinion) {
1352
- that.isBanInputOpinion = 0;
1353
- }
1354
- // that.countersignaturetypeText = res.data.taskExamine.nodeName
1355
- if (res.data.taskExamine) {
1356
- that.countersignaturetypeText = res.data.taskExamine.nodeName;
1357
- }
1358
- that.countersignaturetypeCode =
1359
- res.data.countersignaturetypeCode !== 0 &&
1360
- res.data.countersignaturetypeCode != undefined
1361
- ? true
1362
- : false;
1363
- that.isMainSubProcess = res.data.isMainSubProcess == 'true';
1364
- that.isCustomPreset = res.data.isCustomPreset;
1365
- // form.isRemoveSign !== '1' &&
1366
- // form.isAddSign !== '1' &&
1367
- // nodeList &&
1368
- // nodeList.length > 0 &&
1369
- // isHiddenNextStepInfo
1370
- resolve();
1371
- } else {
1372
- that.$toast(res.message);
1373
- setTimeout(() => {
1374
- that.navigateBack();
1375
- }, 1000);
1376
- reiect();
1377
- }
1378
- });
1379
- });
1380
- },
1381
- getToStartTaskReadIndex() {
1382
- request({
1383
- url: this.baseUrl
1384
- ? this.baseUrl + toStartTaskReadHtml
1385
- : toStartTaskReadHtml,
1386
- params: { pendingId: this.pendingId, userId: this.userId }
1387
- })
1388
- .then(res => {
1389
- const {
1390
- status,
1391
- message,
1392
- data: { isCanFenyue, taskExamine }
1393
- } = res;
1394
- if (status === 'success') {
1395
- this.taskExamineInfo = taskExamine;
1396
- this.isCanFenyue = isCanFenyue;
1397
- // if (this.nodeName) {
1398
- this.processObj.taskExamine.nodeName = '分阅';
1399
- // }
1400
- } else {
1401
- this.$toast(message || '系统错误,请联系管理员!');
1402
- }
1403
- this.$toast.clear();
1404
- })
1405
- .catch(err => {
1406
- this.$toast.clear();
1407
- if (err.message && err.message !== 'canceled') {
1408
- this.$toast(err.message);
1409
- }
1410
- });
1411
- },
1412
- // 获取节点信息(获取节点属性及办理人)
1413
- getNodeObj(res) {
1414
- const _that = this;
1415
- request({
1416
- url: _that.baseUrl ? _that.baseUrl + getNodeInfoHtml : getNodeInfoHtml,
1417
- params: {
1418
- processDefinitionId: this.processObj.taskExamine.processDefinitionId,
1419
- nextNodeId: res,
1420
- taskId: this.processObj.taskExamine.taskId,
1421
- pendingId: this.pendingId,
1422
- businessId: this.taskExamineInfo.businessId,
1423
- userId: _that.userId
1424
- }
1425
- }).then(res => {
1426
- this.$toast.clear();
1427
- if (res.status == 'success') {
1428
- this.appointNotUserIds = res.data.appointNotUserIds;
1429
- this.handleRoleId = res.data.handleRoleId;
1430
- this.nextRole = res.data.nextRole;
1431
- this.filterCandinateIds = res.data.nodeExtAttr.filterCandinateIds;
1432
- this.selectorDefShowDeptId =
1433
- res.data.nodeExtAttr.selectorDefShowDeptId;
1434
- this.userSelectionType = res.data.nodeExtAttr.userSelectionType;
1435
- // this.changePidObjtype();
1436
- this.orgSelectionType = res.data.nodeExtAttr.orgSelectionType;
1437
- this.notificationType = res.data.nodeExtAttr.notificationType;
1438
- this.nodeType = res.data.nodeExtAttr.nodeType;
1439
- this.deptRoleCode = res.data.nodeExtAttr.deptRoleCode;
1440
- this.orgRoleCode = res.data.nodeExtAttr.orgRoleCode;
1441
- this.isCustomUser = res.data.nodeExtAttr.isCustomUser;
1442
- this.presetEdit = res.data.nodeExtAttr.presetEdit;
1443
- this.isLimitedTimeHandling =
1444
- res.data.nodeExtAttr.isLimitedTimeHandling;
1445
- this.peopleObj = res.data.nodeExtAttr;
1446
- this.nextUserList = res.data.nextUserList.filter(
1447
- x => x.userId && x.username
1448
- );
1449
- let _this = this;
1450
- this.nextUserList.map(r => {
1451
- _this.$set(r, 'checked', false);
1452
- });
1453
-
1454
- this.isHandleExplain =
1455
- res.data.nodeExtAttr.isHandleExplain == 1 ? true : false; //判断是否隐藏办理说明
1456
- this.isCustomUserClick =
1457
- res.data.nodeExtAttr.isCustomUser == 1 ? true : false; // 判断办理人是否可点击显示弹框
1458
- this.isTaskread = res.data.nodeExtAttr.isTaskread == 1 ? true : false; // 判断是否显示分阅
1459
- this.countersignaturetypeCode =
1460
- res.data.countersignaturetypeCode !== 0 ? true : false; //判断是否隐藏处理方式
1461
- this.countersignaturetypeText = res.data.countersignaturetypeText;
1462
- //如果当前为承办节点/会签节点,则展示本单位外单位办理人选择
1463
- if (this.nodeType === 1 || this.nodeType === 2) {
1464
- this.isMainSubProcess === true
1465
- ? (this.isNodeShowProcess = true)
1466
- : (this.isNodeShowProcess = false);
1467
- this.isMainSubProcess === true
1468
- ? (this.isMainSubProcess = true)
1469
- : (this.isMainSubProcess = false);
1470
- this.isNextUser = false;
1471
- this.isHideCurrentOrg =
1472
- res.data.nodeExtAttr.isHideCurrentOrg == 1 ? false : true; //判断是否隐藏本单位
1473
- this.isHideOtherOrg =
1474
- res.data.nodeExtAttr.isHideOtherOrg == 1 ? false : true; //判断是否隐藏外单位
1475
- } else {
1476
- this.isHideCurrentOrg = false;
1477
- this.isHideOtherOrg = false;
1478
- this.isMainSubProcess = false;
1479
- this.isNodeShowProcess = false;
1480
- this.isNextUser = true;
1481
- // this.isMainSubProcess === true
1482
- // ? (this.isMainSubProcess = true)
1483
- // : (this.isMainSubProcess = false);
1484
- }
1485
- // userSelectionType 机构内单选人1,机构内多选人2,所有机构单选人3,所有部门多选人4,本部门单选人5,本部门多选人6,本单位单选部门7,本单位多选部门8,单选单位9,多选单位10,单选机构11,多选机构12,本部门角色13,本单位角色14
1486
- this.userSelectionType == 2 ||
1487
- this.userSelectionType == 4 ||
1488
- this.userSelectionType == 6 ||
1489
- this.userSelectionType == 8 ||
1490
- this.userSelectionType == 10 ||
1491
- this.userSelectionType == 11 ||
1492
- this.userSelectionType == 12
1493
- ? (this.isRadio = false)
1494
- : (this.isRadio = true); //判断办理人单选多选
1495
-
1496
- if (
1497
- this.userSelectionType == 7 ||
1498
- this.userSelectionType == 8 ||
1499
- this.userSelectionType == 9 ||
1500
- this.userSelectionType == 10 ||
1501
- this.userSelectionType == 11 ||
1502
- this.userSelectionType == 12
1503
- ) {
1504
- this.isDealObject = true;
1505
- this.isNextUser = false;
1506
- }
1507
- if (this.userSelectionType == 13 || this.userSelectionType == 14) {
1508
- this.isNextUser = false;
1509
- this.isDealObject = false;
1510
- this.isDealRole = true;
1511
- this.nextUserflag = true;
1512
- }
1513
- this.isHiddenNextStepInfo =
1514
- res.data.nodeExtAttr.isHiddenNextStepInfo == 1 && this.nextUserflag
1515
- ? true
1516
- : false; // 判断是否隐藏下一步节点信息和接收人信息
1517
- if (res.data.globalNodeType === 'endEvent') {
1518
- this.isNextUser = false;
1519
- this.form.nextUserId = '流程办结';
1520
- } else {
1521
- this.nodeType != 1 &&
1522
- this.nodeType != 2 &&
1523
- (this.isNextUser = true); //判断是否是流程办结 办结下步办理人不显示
1524
- }
1525
- this.changeDefPeople(
1526
- res.data.nodeExtAttr.isDefSelectedObj,
1527
- res.data.nodeExtAttr.isSelectedAllObj
1528
- );
1529
- this.changePidObjtype(
1530
- res.data.nodeExtAttr.userSelectionType,
1531
- this.choiceOrgId,
1532
- this.choiceDeptId,
1533
- this.pOrgId
1534
- );
1535
- } else {
1536
- this.$toast(res.message);
1537
- }
1538
- });
1539
- },
1540
- // 修改默认办理人
1541
- changeDefPeople(def, all) {
1542
- this.nextUserSelectList = [];
1543
- if ((def == 1 && all == 1) || (def == 0 && all == 1)) {
1544
- let ids = '';
1545
- this.nextUserList.map((r, i) => {
1546
- r.showid = r.userId;
1547
- r.showname = r.username;
1548
- this.$set(r, 'checked', true);
1549
- this.nextUserSelectList.push(r);
1550
- ids += r.userId + (i === this.nextUserList.length - 1 ? '' : ',');
1551
- });
1552
- this.form.nextUserId = ids;
1553
- } else if (
1554
- def == 1 &&
1555
- (!all || all == 0) &&
1556
- this.nextUserList.length > 0
1557
- ) {
1558
- this.nextUserList[0].showid = this.nextUserList[0].userId;
1559
- this.nextUserList[0].showname = this.nextUserList[0].username;
1560
- this.$set(this.nextUserList[0], 'checked', true);
1561
- this.nextUserSelectList.push(this.nextUserList[0]);
1562
- this.form.nextUserId = this.nextUserSelectList[0].userId;
1563
- }
1564
- },
1565
- // 根据返回的办理人类型来判断 选择人员树的范围
1566
- changePidObjtype(val, choiceOrgId, choiceDeptId, pOrgId) {
1567
- if (val === 1 || val === 2) {
1568
- this.pid = choiceOrgId || this.orgId;
1569
- this.objType = 'enterprise';
1570
- this.selectType = 'employee';
1571
- } else if (this.userSelectionType === 3 || this.userSelectionType === 4) {
1572
- this.pid = 'root';
1573
- this.objType = 'employee';
1574
- } else if (this.userSelectionType === 5 || this.userSelectionType === 6) {
1575
- this.pid = choiceDeptId || this.depId;
1576
- this.objType = 'department';
1577
- } else if (
1578
- this.userSelectionType === 11 ||
1579
- this.userSelectionType === 12
1580
- ) {
1581
- this.selectType = 'employee';
1582
- this.objType = 'enterprise';
1583
- } else if (this.userSelectionType === 13) {
1584
- this.pid = choiceDeptId || this.depId;
1585
- this.selectType = 'employee';
1586
- this.objType = 'department';
1587
- } else if (this.userSelectionType === 14) {
1588
- this.pid = pOrgId || this.orgId;
1589
- this.selectType = 'employee';
1590
- } else if (
1591
- this.userSelectionType === 15 ||
1592
- this.userSelectionType === 16
1593
- ) {
1594
- this.pid = pOrgId || this.orgId;
1595
- this.selectType = 'employee';
1596
- }
1597
- }
1598
- }
1599
- };
1600
- </script>
1601
-
1602
- <style></style>
1
+ <template>
2
+ <div class="process-handle">
3
+ <div
4
+ v-if="handleFlow"
5
+ style="display: flex;
6
+ flex-direction: column;
7
+ height: 100%;"
8
+ >
9
+ <div class="process-content">
10
+ <!-- 当前节点 -->
11
+ <div class="present-node">
12
+ <div class="label">当前节点:</div>
13
+ <div>{{ processObj.taskExamine.nodeName }}</div>
14
+ </div>
15
+ <!-- 意见 -->
16
+ <Opinion
17
+ :code="processObj.attachedCode"
18
+ :ownId="pendingId"
19
+ :esign="esign"
20
+ :esignLineWidth="
21
+ $attrs['esign-line-width'] || $attrs['esignLineWidth']
22
+ "
23
+ @onInputOpintion="onInputOpintion"
24
+ :isOpinionRequired="isOpinionRequired"
25
+ :disabled="isBanInputOpinion != 0"
26
+ :baseUrl="baseUrl"
27
+ :isForceDisplayDefaultOptionForPrefix="
28
+ isForceDisplayDefaultOptionForPrefix
29
+ "
30
+ :placeholder="opinionHandleExplainText"
31
+ :nodeDefaultSubmitOpinion="nodeDefaultSubmitOpinion"
32
+ :nodeFixedOpinionSelectList="nodeFixedOpinionSelectList"
33
+ :isHiddenOftenOpinion="isHiddenOftenOpinion == 1 ? false : true"
34
+ ></Opinion>
35
+ <!-- 审核内容 -->
36
+ <div class="special-box input-box" v-if="typeCode != 'fenyue'">
37
+ <!-- 加签 -->
38
+ <div
39
+ class="item"
40
+ :class="{ itemRadio: form.isAddSign === '1' }"
41
+ v-if="isCanAddSign"
42
+ >
43
+ <em-input
44
+ name="radio"
45
+ label="是否增加本环节办理人"
46
+ :required="true"
47
+ >
48
+ <template slot="input">
49
+ <em-radio-group
50
+ v-model="form.isAddSign"
51
+ :data="isAddSignList"
52
+ direction="horizontal"
53
+ />
54
+ </template>
55
+ </em-input>
56
+ </div>
57
+ <div
58
+ class="item item-user"
59
+ label="增加办理人"
60
+ v-if="form.isAddSign === '1'"
61
+ >
62
+ <em-selector
63
+ label="增加办理人"
64
+ required
65
+ multiple
66
+ :isAllCheck="isAllCheck"
67
+ :baseUrl="apiBaseUrl"
68
+ :paddingTop="paddingTop"
69
+ :objType="objType"
70
+ v-model="addSignUserSelectList"
71
+ @change="disposeAppUser($event, 'addSignUserSelectList')"
72
+ />
73
+ </div>
74
+ <!-- 减签 -->
75
+ <div
76
+ class="item"
77
+ :class="{ itemRadio: form.isRemoveSign === '1' }"
78
+ v-if="isCanRemoveSign"
79
+ >
80
+ <em-input name="radio" label="是否减签" :required="true">
81
+ <template slot="input">
82
+ <em-radio-group
83
+ v-model="form.isRemoveSign"
84
+ :data="isAddSignList"
85
+ direction="horizontal"
86
+ />
87
+ </template>
88
+ </em-input>
89
+ </div>
90
+ <div v-if="isSpecial && typeCode != 'fenyue'">
91
+ <div
92
+ class="item item-user"
93
+ label="减少办理人"
94
+ v-if="form.isRemoveSign === '1'"
95
+ >
96
+ <em-selector
97
+ label="减少办理人"
98
+ :isAllCheck="isAllCheck"
99
+ required
100
+ :paddingTop="paddingTop"
101
+ multiple
102
+ :baseUrl="apiBaseUrl"
103
+ :objType="objType"
104
+ v-model="removeSignUserSelectList"
105
+ @change="disposeAppUser($event, 'removeSignUserSelectList')"
106
+ />
107
+ </div>
108
+ <!-- 下一步所有相关操作-->
109
+ <div
110
+ v-if="
111
+ form.isRemoveSign !== '1' &&
112
+ form.isAddSign !== '1' &&
113
+ !isHiddenNextStepInfo
114
+ "
115
+ >
116
+ <!-- <div
117
+ @click="isNextBox = !isNextBox"
118
+ v-if="!isReject"
119
+ class="shrink-btn"
120
+ >
121
+ {{ isNextBox ? '收起下一步操作和节点' : '展开下一步操作和节点' }}
122
+ </div> -->
123
+ <div class="next-box" v-show="isNextBox || isReject">
124
+ <!-- 下一步操作 -->
125
+ <div
126
+ class="item next-step"
127
+ v-if="!isHiddenNextStepInfo && isChooseNextNode == 1"
128
+ >
129
+ <em-input
130
+ value="下步操作"
131
+ label="下步操作"
132
+ required
133
+ class="em-flow-next-steps"
134
+ :disabled="true"
135
+ label-position="top"
136
+ >
137
+ <template slot="input">
138
+ <span
139
+ class="em-flow-tag"
140
+ :class="{ 'em-flow-tag-active': tagKey === item.key }"
141
+ @click="changeNextOperate(item)"
142
+ v-for="item in taskOperations"
143
+ :key="item.key"
144
+ >
145
+ {{ item.value }}
146
+ </span>
147
+ </template>
148
+ </em-input>
149
+ <!-- <em-picker
150
+ title="下步操作"
151
+ label="下步操作"
152
+ required
153
+ show-toolbar
154
+ v-model="form.nextOperateName"
155
+ label-width="100%"
156
+ :columns="taskOperations"
157
+ value-key="key"
158
+ label-key="value"
159
+ @confirm="changeNextOperate"
160
+ /> -->
161
+ </div>
162
+ <!-- 下步节点 -->
163
+ <div
164
+ class="item"
165
+ v-if="
166
+ nodeList && nodeList.length > 0 && !isReject && isShowNode
167
+ "
168
+ >
169
+ <em-picker
170
+ title="下步节点"
171
+ label="下步节点"
172
+ required
173
+ show-toolbar
174
+ v-model="form.nextNodeName"
175
+ label-width="100%"
176
+ :columns="nodeList"
177
+ value-key="nodeId"
178
+ label-key="nodeName"
179
+ @confirm="onConfirmNextNode"
180
+ />
181
+ </div>
182
+ </div>
183
+ <!-- 处理方式提示文字 -->
184
+ <div class="item" v-if="countersignaturetypeCode">
185
+ <van-field
186
+ v-model="countersignaturetypeText"
187
+ label="处理方式"
188
+ :disabled="true"
189
+ />
190
+ </div>
191
+ <!-- 下一步办理人 -->
192
+ <div class="item item-user" v-if="isNextUser">
193
+ <em-selector
194
+ :multiple="!isRadio"
195
+ v-model="nextUserSelectList"
196
+ :objType="objType"
197
+ :isAllCheck="isAllCheck"
198
+ required
199
+ :paddingTop="paddingTop"
200
+ :nextUserList="nextUserList"
201
+ :baseUrl="apiBaseUrl"
202
+ tabs="employee,persongroup"
203
+ :disabled="
204
+ !isCustomUser || isCurrentNodeForbiddenChangeCandidate == 1
205
+ "
206
+ :selectDisabled="isCurrentNodeForbiddenChangeCandidate == 1"
207
+ placeholder="请选择下步办理人"
208
+ :param="{
209
+ pid: pid
210
+ }"
211
+ label="下步办理人"
212
+ @change="disposeAppUser($event, 'nextUserSelectList')"
213
+ />
214
+ </div>
215
+ <!-- 办理角色-->
216
+ <div class="item" v-if="isDealRole">
217
+ <em-input
218
+ value="办理角色"
219
+ label="办理角色"
220
+ :disabled="true"
221
+ placeholder="请选择"
222
+ />
223
+ </div>
224
+ <!-- 办理对象-->
225
+ <div class="item" v-if="isDealObject">
226
+ <em-input
227
+ value="办理对象"
228
+ label="办理对象"
229
+ :disabled="true"
230
+ placeholder="请选择"
231
+ />
232
+ </div>
233
+ <!-- 本单位-->
234
+ <!-- v-if="isHideCurrentOrg" -->
235
+ <div class="item" v-if="isHideCurrentOrg">
236
+ <em-selector
237
+ v-model="nextCurrentOrgObjSelect"
238
+ multiple
239
+ :isAllCheck="isAllCheck"
240
+ :paddingTop="paddingTop"
241
+ :objType="'enterprise'"
242
+ :tabs="'department,myemployee'"
243
+ :param="{
244
+ pid: orgId
245
+ }"
246
+ :baseUrl="apiBaseUrl"
247
+ :isOtherUnit="false"
248
+ :label="currentOrgName ? currentOrgName : '本单位'"
249
+ @change="disposeAppUnit($event, 'nextCurrentOrgObjSelect')"
250
+ />
251
+ </div>
252
+ <!-- 外单位 -->
253
+ <!-- v-if="isHideOtherOrg" -->
254
+ <div class="item" v-if="isHideOtherOrg">
255
+ <em-selector
256
+ v-model="nextOtherOrgObjSelect"
257
+ multiple
258
+ :isAllCheck="isAllCheck"
259
+ :paddingTop="paddingTop"
260
+ :objType="'enterprise'"
261
+ :param="{
262
+ pid: 'root'
263
+ }"
264
+ :tabs="'enterprise'"
265
+ :baseUrl="apiBaseUrl"
266
+ :isOtherUnit="true"
267
+ :label="otherOrgName ? otherOrgName : '外单位'"
268
+ @change="disposeAppUnit($event, 'nextOtherOrgObjSelect')"
269
+ />
270
+ </div>
271
+ <!-- 主办 -->
272
+ <div class="item" v-if="isMainSubProcess && isNodeShowProcess">
273
+ <!-- <van-field
274
+ value="主办"
275
+ label="主办"
276
+ :disabled="true"
277
+ placeholder="请选择"
278
+ /> -->
279
+ <em-picker
280
+ v-model="form.mainSubId"
281
+ label="主办"
282
+ title="主办"
283
+ placeholder="请选择主办"
284
+ show-toolbar
285
+ :disabled="subProcessColumns.length == 0"
286
+ :columns="subProcessColumns"
287
+ />
288
+ </div>
289
+ <!-- 办理说明 -->
290
+ <div class="item" v-if="isHandleExplain">
291
+ <van-field
292
+ value="办理说明"
293
+ label="办理说明"
294
+ :disabled="true"
295
+ placeholder="请选择"
296
+ />
297
+ </div>
298
+ </div>
299
+ <!-- 分阅 -->
300
+ <div
301
+ class="item"
302
+ v-if="
303
+ form.isRemoveSign !== '1' &&
304
+ form.isAddSign !== '1' &&
305
+ isTaskread
306
+ "
307
+ >
308
+ <div class="item item-user">
309
+ <em-selector
310
+ v-model="nextReadUserSelectList"
311
+ multiple
312
+ :isAllCheck="isAllCheck"
313
+ :objType="objType"
314
+ :param="{
315
+ pid: pid
316
+ }"
317
+ :paddingTop="paddingTop"
318
+ :baseUrl="apiBaseUrl"
319
+ tabs="employee,persongroup"
320
+ label="分阅用户"
321
+ @change="disposeAppUser($event, 'nextReadUserSelectList')"
322
+ />
323
+ </div>
324
+ </div>
325
+ <!-- 限时办理 -->
326
+ <!-- v-if="isLimitedTimeHandling" -->
327
+ <div class="item" v-if="isLimitedTimeHandling">
328
+ <em-input name="radio" label="是否限时办理" :required="true">
329
+ <template slot="input">
330
+ <em-radio-group
331
+ v-model="form.isLimitedTime"
332
+ :data="isAddSignList"
333
+ direction="horizontal"
334
+ />
335
+ </template>
336
+ </em-input>
337
+ </div>
338
+ <div
339
+ class="item item-limited-time"
340
+ v-if="form.isLimitedTime === '1'"
341
+ >
342
+ <em-input name="radio" label="限时办理时间" :required="true">
343
+ <template slot="input">
344
+ <div class="item-limited-time-content">
345
+ <div>
346
+ <em-input
347
+ placeholder="请输入天数"
348
+ v-model="form.limitedTimeDay"
349
+ type="digit"
350
+ />
351
+ </div>
352
+ <div class="day-text">天</div>
353
+ <div>
354
+ <em-input
355
+ :value="form.limitedTimeHour"
356
+ clickable
357
+ readonly
358
+ placeholder="请选择小时"
359
+ @click="openTimeList('limitedTimeHour')"
360
+ />
361
+ </div>
362
+ <div class="day-text">时</div>
363
+ </div>
364
+ </template>
365
+ </em-input>
366
+ </div>
367
+ <div
368
+ class="item item-limited-time"
369
+ v-if="form.isLimitedTime === '1'"
370
+ >
371
+ <em-input name="radio" label="提前通知时间" :required="true">
372
+ <template slot="input">
373
+ <div class="item-limited-time-content">
374
+ <div>
375
+ <em-input
376
+ placeholder="请输入天数"
377
+ v-model="form.advanceNoticeDay"
378
+ type="digit"
379
+ />
380
+ </div>
381
+ <div class="day-text">天</div>
382
+ <div>
383
+ <em-input
384
+ :value="form.advanceNoticeHour"
385
+ clickable
386
+ placeholder="请选择小时"
387
+ readonly
388
+ @click="openTimeList('advanceNoticeHour')"
389
+ />
390
+ </div>
391
+ <div class="day-text">时</div>
392
+ </div>
393
+ </template>
394
+ </em-input>
395
+ </div>
396
+ <van-popup v-model="showTimeList" round position="bottom">
397
+ <van-picker
398
+ show-toolbar
399
+ :columns="timeList"
400
+ @cancel="showTimeList = false"
401
+ @confirm="onConfirmTimeList"
402
+ />
403
+ </van-popup>
404
+ <!-- 催办通知方式 -->
405
+ <div class="item-msg item-msg1" v-if="isLimitedTimeHandling">
406
+ <Message
407
+ ref="message"
408
+ :label="'催办通知方式'"
409
+ :code="'notification_type'"
410
+ :baseUrl="baseUrl"
411
+ @onInputMsg="onInputMsgUrge"
412
+ :required="true"
413
+ ></Message>
414
+ </div>
415
+ <!-- 通知方式 -->
416
+ <div class="item-msg item-msg2">
417
+ <Message
418
+ ref="message"
419
+ :code="'notification_type'"
420
+ :baseUrl="baseUrl"
421
+ :defaultNotificationType="defaultNotificationType"
422
+ :defaultNotificationMsg="form.notificationMsg"
423
+ @onInputMsg="onInputMsg"
424
+ ></Message>
425
+ </div>
426
+ </div>
427
+ </div>
428
+ </div>
429
+ <div v-if="isSubmitButtonShowAgreeAndDisagree" class="btn-list">
430
+ <div class="btn" @click="handleFlow = false">不同意</div>
431
+ <div class="btn" @click="onSubmit()">同意</div>
432
+ </div>
433
+ <div v-else class="btn-list">
434
+ <div class="btn" @click="navigateBack">取消</div>
435
+ <div class="btn" @click="onSubmit()">确定</div>
436
+ </div>
437
+ </div>
438
+ <Reject
439
+ v-else
440
+ :pendingId="pendingId"
441
+ :before-submit="beforeSubmit"
442
+ @close="handleFlow = true"
443
+ />
444
+ </div>
445
+ </template>
446
+
447
+ <script>
448
+ import {
449
+ getHandleInfoHtml,
450
+ toStartTaskReadHtml,
451
+ taskReadHtml,
452
+ getNodeInfoHtml,
453
+ taskHandleHtml,
454
+ taskHandleHtmlImg
455
+ } from '../../../../src/config/api.js';
456
+ import request from '../../../../src/utils/http.js';
457
+ import Opinion from './Opinion.vue';
458
+ import Reject from './Reject.vue';
459
+ import Message from './Message.vue';
460
+ import FlowMix from '../flowMix';
461
+ import $ from '../../../../src/utils/util';
462
+ export default {
463
+ name: 'Handle',
464
+ inheritAttrs: false,
465
+ components: {
466
+ Opinion,
467
+ Reject,
468
+ Message
469
+ },
470
+ mixins: [FlowMix],
471
+ props: {
472
+ pendingId: String, //待办id
473
+ identityIds: String, //用户id
474
+ beforeSubmit: Function,
475
+ orgId: String, //单位id
476
+ depId: String, //部门id
477
+ baseUrl: String,
478
+ apiBaseUrl: String,
479
+ typeCode: String,
480
+ paddingTop: {
481
+ type: [String, Number],
482
+ default: 0
483
+ },
484
+ isAllCheck: {
485
+ type: Boolean,
486
+ default: false
487
+ },
488
+ esign: {
489
+ type: Boolean,
490
+ default: false
491
+ },
492
+ userId: {
493
+ type: String,
494
+ default: ''
495
+ }
496
+ },
497
+ data() {
498
+ return {
499
+ nextNodeDefault: 0,
500
+ showAppUnit: false, // 弹窗单位
501
+ handleFlow: true,
502
+ isReject: false,
503
+ opinionHandleExplainText: undefined,
504
+ isCurrentNodeForbiddenChangeCandidate: 0,
505
+ nodeFixedOpinionSelectList: [],
506
+ isChooseNextNode: 1, //是否展示下步操作
507
+ pid: 'root', //树选中pid
508
+ objType: 'enterprise', //树点击对象
509
+ selectType: 'employee', // 树 选择类型
510
+ isNextBox: true, // 是否展开隐藏下步操作
511
+ isForceDisplayDefaultOptionForPrefix: false,
512
+ isOtherUnit: true, //是否是外单位
513
+ isShowNode: false,
514
+ subProcessInfo: '',
515
+ isNodeShowProcess: false, //是否展示主办
516
+ isHiddenOftenOpinion: undefined, //是否隐藏常用意见
517
+ isAddSignList: [{ name: '是', value: '1' }, { name: '否', value: '2' }],
518
+ form: {
519
+ opinion: undefined, // 审批意见
520
+ isImageOpinion: 0,
521
+ isAddSign: undefined, //是否加签
522
+ addSignUserId: undefined, //加签人员id
523
+ isRemoveSign: undefined, //是否减签
524
+ removeSignUserId: undefined, //减签人员id
525
+ nextOperate: undefined, // 下步操作
526
+ nextOperateName: undefined, // 下步操作显示
527
+ nextNodeId: undefined, // 下步节点,
528
+ nextNodeName: undefined, // 下步节点显示
529
+ isReturnSubmitter: undefined, //是否返回提交人
530
+ isSubFlow: undefined, //是否子流程
531
+ isUndertakeReply: undefined, //是否承办回复
532
+ isTakeAdviceReply: undefined, //是否征求意见回复回复
533
+ isUndertakeEnd: undefined, //是否承办办结
534
+ isTakeAdviceEnd: undefined, //是否征求意见办结
535
+ isReadDealReply: undefined, //是否阅办回复
536
+ isReadDealEnd: undefined, //是否阅办办结
537
+ caOpinion: undefined, //加密意见
538
+ isReturnRejectNode: undefined, //是否提交驳回节点
539
+ isSerialSubmit: undefined, //串行默认提交
540
+ loginType: 2, //登录方式
541
+ nodeOpinionTemplate: undefined, //意见模板
542
+ businessSubCenterCode: undefined, //业务中心编码
543
+ nextRoleId: undefined, // 下步办理角色id
544
+ nextOrgId: undefined, //下步办理机构
545
+ nextCurrentOrgObj: undefined, // 本单位对象
546
+ nextCurrentOrgObjSerialId: undefined, //本单位办理对象序列id
547
+ nextOtherOrgObj: undefined, //外单位对象
548
+ nextOtherOrgObjSerialId: undefined, //外单位办理对象序列id
549
+ mainSubId: undefined, //主办id
550
+ nextReadUserId: undefined, //分阅用户
551
+ handleExplain: undefined, //办理说明
552
+ notificationMsg: undefined, //通知消息
553
+ nextUserId: undefined, //下步办理人
554
+ isLimitedTime: '2', //是否限时办理
555
+ limitedTimeDay: undefined, //限时办理时间 天
556
+ limitedTimeHour: undefined, //限时办理时间 时
557
+ advanceNoticeDay: undefined, //限时办理 天
558
+ advanceNoticeHour: undefined, //限时办理 时
559
+ advanceNoticeType: [] //催办通知方式
560
+ },
561
+ isCanFenyue: '0',
562
+ isChooseNextNode: 1,
563
+ isOpinionRequired: 0, // 意见是否必填
564
+ isBanInputOpinion: 0, //意见是否禁用
565
+ showTimeList: false, //选择限时办理弹出层
566
+ timeList: [], // 选择限时办理时间数组
567
+ nextUserList: [], //下步办理人数组
568
+ nextCurrentOrgObjSelect: [], // 选中本单位
569
+ nextOtherOrgObjSelect: [], //选中外单位
570
+ nextReadUserSelectList: [], //分阅选择数组
571
+ addSignUserSelectList: [], //增加办理人选择数组
572
+ removeSignUserSelectList: [], //减少办理人选择数组
573
+ nextUserSelectList: [], //下步办理人选择数组
574
+ showAppUser: false, // 办理人遮罩层
575
+ showNextOperate: false, // 下一步操作遮罩层
576
+ showNextNodeList: false, // 下一步流程节点遮罩层
577
+ nodeList: [], // 流程节点列表
578
+ selectList: [], // 当前选中办理人
579
+ opinionList: [], // 意见列表
580
+ processObj: { taskExamine: { nodeName: undefined } }, //流程信息
581
+ peopleObj: {}, //办理人信息
582
+ userInfo: {}, // 用户信息
583
+ isCanAddSign: false, //是否显示加签
584
+ isCanRemoveSign: false, //是否显示减签
585
+ isSpecial: true, //判断审核内容是否显示(是否是正常的办理页面)
586
+ taskOperations: [], //下一步操作
587
+ countersignaturetypeCode: false, //用来判断处理方式是否显示
588
+ countersignaturetypeText: undefined, // 处理方式
589
+ isCustomPreset: true, // 是否允许预设节点
590
+ isHideCurrentOrg: false, //是否隐藏本单位(承办)
591
+ isHideOtherOrg: false, //是否隐藏外单位(承办)
592
+ isHandleExplain: false, // 是否允许办理说明
593
+ isTaskread: false, //是否分阅
594
+ defaultNotificationType: undefined, ///默认选中通知类型
595
+ selectUnitType: 'department', //单位树选择类型
596
+ isHiddenNextStepInfo: false, //是否隐藏下一步节点信息和接收人信息
597
+ presetEdit: true, //预设是否允许编辑
598
+ isLimitedTimeHandling: false, //是否支持发起子流程限时办理
599
+ userSelectionType: undefined, //处理人选择方式
600
+ orgSelectionType: undefined, //办理机构选择方式
601
+ notificationType: undefined, // 通知方式
602
+ nodeType: undefined, // 节点类型(普通节点0,承办节点1,会签节点2,阅办节点3)
603
+ deptRoleCode: undefined, //本单位角色
604
+ orgRoleCode: undefined, //外单位角色
605
+ appointNotUserIds: undefined, //业务指定非处理人
606
+ handleRoleId: undefined, //办理角色(一般选择范围是部门/单位使用)
607
+ nextRole: undefined, //下步节点默认角色
608
+ filterCandinateIds: undefined, //节点过滤办理人
609
+ selectorDefShowDeptId: undefined, //选择器默认展示部门
610
+ isRadio: true, //下步办理人是否单选
611
+ otherOrgName: undefined, //外单位名字
612
+ currentOrgName: undefined, //本单位名字
613
+ isMainSubProcess: false, // 判断是否子-主流程
614
+ isNextUser: false, // 判断是否显示下步办理人
615
+ isDealObject: false, //判断是否显示办理对象
616
+ isDealRole: false, //判断是否显示办理角色
617
+ nextUserflag: false,
618
+ isSubmitButtonShowAgreeAndDisagree: 0, //是否展示同意和不同意按钮
619
+ isCustomUserClick: false, //下步办理人选择是否可以点击
620
+ timeListLable: undefined, //用来判断是哪里点开的时间遮罩层
621
+ nodeDefaultSubmitOpinion: undefined, //默认提交意见
622
+ isCustomUser: 0, //是否可选中办理人
623
+ choiceOrgId: '',
624
+ choiceDeptId: '',
625
+ taskExamineInfo: {},
626
+ nodeInfoMapInfo: {},
627
+ file: '',
628
+ isEndUserTask: '',
629
+ tagKey: '',
630
+ pOrgId: '',
631
+ needRetrialAuth: false
632
+ };
633
+ },
634
+ created() {
635
+ // 获取用户信息
636
+ // 生成时间数组
637
+ this.timeList = new Array();
638
+ for (let i = 0; i < 25; i++) {
639
+ this.timeList.push(i);
640
+ }
641
+ this.$toast.loading({
642
+ message: '加载中...',
643
+ forbidClick: true,
644
+ loadingType: 'spinner',
645
+ overlay: true,
646
+ duration: 0
647
+ });
648
+ // 获取审核详情后去获取节点信息和办理人信息。
649
+ if (this.typeCode == 'fenyue') {
650
+ this.getToStartTaskReadIndex();
651
+ } else {
652
+ Promise.all([this.getProcessObjNew()]).then(() => {
653
+ if (this.form.nextNodeId) {
654
+ this.getNodeObj(this.form.nextNodeId);
655
+ } else {
656
+ this.$toast.clear();
657
+ }
658
+ });
659
+ }
660
+ },
661
+ computed: {
662
+ subProcessColumns() {
663
+ if (!this.isMainSubProcess || !this.isNodeShowProcess) return [];
664
+ let data = [];
665
+ let obj = { name: '[部门员工]-' };
666
+ this.nextCurrentOrgObjSelect.map(x => {
667
+ if (x.objType == 'employee') {
668
+ obj.name = !obj.value
669
+ ? obj.name + x.showname
670
+ : obj.name + ',' + x.showname;
671
+ obj.value = obj.value
672
+ ? obj.value + ',' + x.showid
673
+ : 'employee-' + x.showid;
674
+ } else {
675
+ data.push({
676
+ name: '[部门]' + x.showname,
677
+ value: 'department-' + x.showid
678
+ });
679
+ }
680
+ });
681
+ obj.value && data.push(obj);
682
+ this.nextOtherOrgObjSelect.map(x => {
683
+ data.push({
684
+ name: '[企业]' + x.showname,
685
+ value: 'enterprise-' + x.showid
686
+ });
687
+ });
688
+ return data;
689
+ }
690
+ },
691
+ methods: {
692
+ //限时办理时间确认
693
+ onConfirmTimeList(val) {
694
+ this.form[this.timeListLable] = val;
695
+ this.showTimeList = false;
696
+ },
697
+ // 通知消息回调
698
+ onInputMsg(obj) {
699
+ this.form.notificationType = obj.notificationType.join(',');
700
+ this.form.notificationMsg = obj.notificationMsg;
701
+ },
702
+ // 催办通知消息回调
703
+ onInputMsgUrge(obj) {
704
+ this.form.advanceNoticeType = obj.notificationType.join(',');
705
+ this.form.advanceNoticeMsg = obj.notificationMsg;
706
+ },
707
+ // 打来限时办理时间选择遮罩层
708
+ openTimeList(label) {
709
+ this.timeListLable = label;
710
+ this.showTimeList = true;
711
+ },
712
+
713
+ // 导航栏左侧按钮
714
+ navigateBack() {
715
+ this.$parent.$emit('close');
716
+ },
717
+ subRead() {
718
+ const {
719
+ businessId,
720
+ appId,
721
+ processDefinitionId,
722
+ pendingId
723
+ } = this.taskExamineInfo;
724
+ let params = {
725
+ businessId,
726
+ appId,
727
+ processDefinitionId,
728
+ pendingId,
729
+ opinion: this.form.opinion,
730
+ taskAction: 'complete',
731
+ userId: this.userId || $.getStorage('userId')
732
+ };
733
+ let formData = new FormData();
734
+ if (this.form.isImageOpinion == 1) {
735
+ formData.append('file', this.file);
736
+ }
737
+ for (let key in params) {
738
+ if (params[key] !== '' && params[key] !== undefined) {
739
+ formData.append(key, params[key]);
740
+ }
741
+ }
742
+ this.$toast.loading({
743
+ message: '加载中...',
744
+ forbidClick: true,
745
+ loadingType: 'spinner',
746
+ overlay: true,
747
+ duration: 0
748
+ });
749
+ request({
750
+ url: this.baseUrl ? this.baseUrl + taskReadHtml : taskReadHtml,
751
+ headers: {
752
+ Accept: 'application/json,text/plain'
753
+ },
754
+ type: 'post',
755
+ params: formData,
756
+ format: false
757
+ })
758
+ .then(res => {
759
+ const { status, message } = res;
760
+ this.$toast.clear();
761
+ if (status === 'success') {
762
+ this.$toast.success('提交成功');
763
+ this.$parent.$emit('success');
764
+ } else {
765
+ this.$toast(message || '系统错误,请联系管理员!');
766
+ this.$emit('error');
767
+ }
768
+ })
769
+ .catch(err => {
770
+ this.loading.close();
771
+ if (err.message && err.message !== 'canceled') {
772
+ this.$toast(err.message);
773
+ }
774
+ });
775
+ },
776
+ // 提交流程
777
+ onSubmit() {
778
+ if (this.typeCode == 'fenyue') return this.subRead();
779
+ let idStr = '';
780
+ this.nextUserSelectList.map((r, i) => {
781
+ idStr =
782
+ idStr +
783
+ r.showid +
784
+ (i === this.nextUserSelectList.length - 1 ? '' : ',');
785
+ });
786
+ this.form.nextUserId = idStr;
787
+ if (
788
+ (!this.form.opinion &&
789
+ this.isOpinionRequired == 1 &&
790
+ !this.nodeDefaultSubmitOpinion &&
791
+ this.form.isImageOpinion == 0) ||
792
+ (!this.file &&
793
+ this.isOpinionRequired == 1 &&
794
+ !this.nodeDefaultSubmitOpinion &&
795
+ this.form.isImageOpinion == 1)
796
+ ) {
797
+ this.$toast('请选择输入审批意见');
798
+ return;
799
+ }
800
+ if (
801
+ this.isSpecial &&
802
+ this.isNextUser &&
803
+ !this.form.nextUserId &&
804
+ idStr === '' &&
805
+ this.form.isAddSign != '1' &&
806
+ !this.isReject
807
+ ) {
808
+ this.$toast('请选择办理人');
809
+ return;
810
+ }
811
+ if (this.form.isAddSign == '1' && !this.form.addSignUserId) {
812
+ this.$toast('请选择办理人');
813
+ return;
814
+ }
815
+ if (
816
+ !this.form.nextNodeId &&
817
+ this.nodeList &&
818
+ this.nodeList.length > 0 &&
819
+ this.isSpecial &&
820
+ !this.isReject &&
821
+ this.isShowNode
822
+ ) {
823
+ this.$toast('请选择流程节点');
824
+ return;
825
+ }
826
+
827
+ let str = '';
828
+ if (this.form.opinion) {
829
+ str = this.form.opinion.replace(/\s+/g, '');
830
+ }
831
+ if ((!this.form.opinion || str === '') && this.nodeDefaultSubmitOpinion) {
832
+ this.form.opinion = this.nodeDefaultSubmitOpinion;
833
+ }
834
+
835
+ if (this.form.isLimitedTime === '1' && this.form.limitedTimeDay) {
836
+ this.$toast('请填写限时办理天数');
837
+ return;
838
+ }
839
+ if (this.form.isLimitedTime === '1' && this.form.limitedTimeHour) {
840
+ this.$toast('请选择限时办理时间');
841
+ return;
842
+ }
843
+ if (this.form.isLimitedTime === '1' && this.form.advanceNoticeDay) {
844
+ this.$toast('请填写提前通知天数');
845
+ return;
846
+ }
847
+ if (this.form.isLimitedTime === '1' && this.form.advanceNoticeHour) {
848
+ this.$toast('请选择提通知时间');
849
+ return;
850
+ }
851
+ if (this.form.isLimitedTime === '1' && this.form.advanceNoticeType) {
852
+ this.$toast('请选择催办通知方式');
853
+ return;
854
+ }
855
+ if (
856
+ this.isHideCurrentOrg &&
857
+ !this.form.nextCurrentOrgObjJson &&
858
+ this.form.isAddSign != '1'
859
+ ) {
860
+ this.$toast(`请选择${this.currentOrgName || '本单位'}`);
861
+ return;
862
+ }
863
+ delete this.form.nextNodeName;
864
+ delete this.form.nextOperateName;
865
+ if (!this.isSpecial) {
866
+ delete this.form.nextOperate;
867
+ delete this.form.nextNodeId;
868
+ }
869
+ if (this.form.nextOperate == 9) {
870
+ this.form.isReturnRejectNode = 1;
871
+ this.form.processDefinitionId = this.processObj.taskExamine.processDefinitionId;
872
+ }
873
+ if (this.beforeSubmit) {
874
+ this.beforeSubmit({ pendingId: this.pendingId, ...this.form });
875
+ return;
876
+ }
877
+ if (this.isMainSubProcess && typeof this.form.mainSubId == 'object') {
878
+ this.form.mainSubId = this.form.mainSubId.value;
879
+ }
880
+ this.$toast.loading({
881
+ message: '加载中...',
882
+ forbidClick: true,
883
+ loadingType: 'spinner',
884
+ overlay: true,
885
+ duration: 0
886
+ });
887
+ const _that = this;
888
+ const {
889
+ isEndUserTask,
890
+ choiceOrgId,
891
+ choiceDeptId,
892
+ pOrgId,
893
+ taskExamineInfo,
894
+ needRetrialAuth,
895
+ nodeInfoMapInfo
896
+ } = this;
897
+ _that.form.isEndUserTask = isEndUserTask;
898
+ _that.form.choiceOrgId = choiceOrgId;
899
+ _that.form.choiceDeptId = choiceDeptId;
900
+ _that.form.needRetrialAuth = needRetrialAuth;
901
+ _that.form.pOrgId = pOrgId;
902
+ _that.form.processType = taskExamineInfo.processType;
903
+ _that.form.businessId = taskExamineInfo.businessId;
904
+ _that.form.appId = taskExamineInfo.appId;
905
+ _that.form.processDefinitionId = taskExamineInfo.processDefinitionId;
906
+ _that.form.isSubFlow = taskExamineInfo.isSubFlow;
907
+ _that.form.nodeId = taskExamineInfo.nodeId;
908
+ _that.form.userId = _that.userId || $.getStorage('userId');
909
+ _that.form.mobileKey = $.getStorage('deviceId') || '123';
910
+ _that.form.nextNodeId =
911
+ _that.form.nextOperate == 0 || _that.form.nextOperate == 1
912
+ ? _that.form.nextNodeId || nodeInfoMapInfo.nodeExtAttr.defaultNextNode
913
+ : '';
914
+ let formData = new FormData();
915
+ if (_that.form.isImageOpinion == 1) {
916
+ formData.append('file', _that.file);
917
+ }
918
+ formData.append('pendingId', _that.pendingId);
919
+ for (let key in _that.form) {
920
+ if (_that.form[key] !== '' && _that.form[key] !== undefined) {
921
+ formData.append(key, _that.form[key]);
922
+ }
923
+ }
924
+ request({
925
+ url: _that.baseUrl
926
+ ? _that.baseUrl +
927
+ (_that.form.isImageOpinion == 1
928
+ ? taskHandleHtmlImg
929
+ : taskHandleHtml)
930
+ : _that.form.isImageOpinion == 1
931
+ ? taskHandleHtmlImg
932
+ : taskHandleHtml,
933
+ type: 'post',
934
+ params: formData,
935
+ format: false
936
+ }).then(res => {
937
+ this.$toast.clear();
938
+ if (res.status == 'success' || res.status == 'readDealBackProcessing') {
939
+ if (res.status == 'readDealBackProcessing') {
940
+ this.$toast(
941
+ '由于阅办人数较多,任务后台执行中,稍后系统将为您推送阅办任务执行结果,请注意查收!'
942
+ );
943
+ setTimeout(() => {
944
+ this.$toast.clear();
945
+ this.$parent.$emit('success');
946
+ }, 1500);
947
+ } else {
948
+ this.$toast('操作成功');
949
+ this.$parent.$emit('success');
950
+ }
951
+ } else {
952
+ this.$emit('error');
953
+ this.$toast(res.message);
954
+ }
955
+ });
956
+ },
957
+ // 删除
958
+ delteList(label, i) {
959
+ if (label === 'nextUserSelectList') {
960
+ let _this = this;
961
+ let id = _this.nextUserSelectList[i].showid;
962
+ this.nextUserList.find(i => {
963
+ if (i.userId === id) {
964
+ _this.$set(i, 'checked', false);
965
+ }
966
+ });
967
+ this[label].splice(i, 1);
968
+ } else {
969
+ this[label].splice(i, 1);
970
+ }
971
+ },
972
+ // 选择办理人
973
+ onClickPeople(id) {
974
+ this.showAppUser = true;
975
+ this.selectList = this[id];
976
+ this.$nextTick(function() {
977
+ this.$refs.selectTree.getContent(id);
978
+ });
979
+ },
980
+ // 选择单位
981
+ onClickOrg(id) {
982
+ this.isOtherUnit = id === 'nextCurrentOrgObjSelect' ? false : true;
983
+ this.selectUnitType =
984
+ id === 'nextCurrentOrgObjSelect' ? 'department,employee' : 'department';
985
+ this.showAppUnit = true;
986
+ this.$nextTick(function() {
987
+ this.$refs.selectTreeUnit.getContent(id);
988
+ });
989
+ },
990
+ // 切换下一步操作
991
+ changeNextOperate(val, isDef) {
992
+ if (!isDef && val.key === this.tagKey) return;
993
+ this.tagKey = val.key;
994
+ //恢复默认
995
+ this.isNextUser = false;
996
+ this.isShowNode = false;
997
+ this.isMainSubProcess = false;
998
+ this.isNodeShowProcess = false;
999
+ this.form.nextNodeId = '';
1000
+ this.form.isReturnSubmitter = 0;
1001
+ this.form.isUndertakeReply = 0;
1002
+ this.form.isTakeAdviceReply = 0;
1003
+ this.form.isUndertakeEnd = 0;
1004
+ this.form.isTakeAdviceEnd = 0;
1005
+ this.form.isReadDealReply = 0;
1006
+ this.form.isReadDealEnd = 0;
1007
+ this.form.isReturnRejectNode = 0;
1008
+ this.form.isSerialSubmit = 0;
1009
+ if (val.key == 9) {
1010
+ this.isReject = true;
1011
+ } else if (val.key == 2) {
1012
+ this.isReject = false;
1013
+ } else {
1014
+ this.isReject = false;
1015
+ }
1016
+ this.form.nextOperate = val.key;
1017
+ this.form.nextOperateName = val.value;
1018
+ this.nodeList = val.taskNodeList;
1019
+ if (val.key == -1) {
1020
+ this.form.isSerialSubmit = 1;
1021
+ return;
1022
+ } else if (val.key == 0) {
1023
+ this.isNextUser = true;
1024
+ this.isShowNode = true;
1025
+ } else if (val.key == 1) {
1026
+ this.isNextUser = true;
1027
+ this.isShowNode = true;
1028
+ } else if (val.key == 2) {
1029
+ this.form.isReturnSubmitter = 1;
1030
+ return;
1031
+ } else if (val.key == 3) {
1032
+ this.form.isUndertakeReply = 1;
1033
+ return;
1034
+ } else if (val.key == 4) {
1035
+ this.form.isTakeAdviceReply = 1;
1036
+ return;
1037
+ } else if (val.key == 5) {
1038
+ this.form.isUndertakeEnd = 1;
1039
+ return;
1040
+ } else if (val.key == 6) {
1041
+ this.form.isTakeAdviceEnd = 1;
1042
+ return;
1043
+ } else if (val.key == 7) {
1044
+ this.form.isReadDealReply = 1;
1045
+ return;
1046
+ } else if (val.key == 8) {
1047
+ this.form.isReadDealEnd = 1;
1048
+ return;
1049
+ } else if (val.key == 9) {
1050
+ this.form.isReturnRejectNode = 1;
1051
+ return;
1052
+ } else {
1053
+ }
1054
+
1055
+ if (this.nodeList) {
1056
+ this.form.nextNodeId = this.nodeList[this.nextNodeDefault].nodeId;
1057
+ this.form.nextNodeName = this.nodeList[this.nextNodeDefault].nodeName;
1058
+ this.$toast.loading({
1059
+ message: '加载中...',
1060
+ forbidClick: true,
1061
+ loadingType: 'spinner',
1062
+ overlay: true,
1063
+ duration: 0
1064
+ });
1065
+ if (isDef !== true) this.getNodeObj(this.form.nextNodeId);
1066
+ }
1067
+
1068
+ this.showNextOperate = false;
1069
+ },
1070
+
1071
+ // 确认流程节点操作
1072
+ onConfirmNextNode(val) {
1073
+ this.form.nextNodeId = val.nodeId;
1074
+ this.form.nextNodeName = val.nodeName;
1075
+ this.$toast.loading({
1076
+ message: '加载中...',
1077
+ forbidClick: true,
1078
+ loadingType: 'spinner',
1079
+ overlay: true,
1080
+ duration: 0
1081
+ });
1082
+ this.getNodeObj(this.form.nextNodeId);
1083
+ this.showNextNodeList = false;
1084
+ },
1085
+ // 意见回调
1086
+ onInputOpintion(val) {
1087
+ const { opinion, isImageOpinion, file } = val;
1088
+ this.form.opinion = opinion;
1089
+ this.form.isImageOpinion = isImageOpinion;
1090
+ this.file = file;
1091
+ },
1092
+ // 办理人选择完回调
1093
+ disposeAppUser(res, type) {
1094
+ this[type] = res.list;
1095
+ let label = '';
1096
+ if (type) {
1097
+ label = type.substring(0, type.lastIndexOf('SelectList'));
1098
+ } else {
1099
+ label = res.label.substring(0, res.label.lastIndexOf('SelectList'));
1100
+ }
1101
+
1102
+ let idStr = '';
1103
+ if (res.list) {
1104
+ res.list.map((r, i) => {
1105
+ idStr = idStr + r.showid + (i === res.list.length - 1 ? '' : ',');
1106
+ });
1107
+ } else {
1108
+ res.map((r, i) => {
1109
+ idStr = idStr + r.showid + (i === res.length - 1 ? '' : ',');
1110
+ });
1111
+ }
1112
+ this.form[label + 'Id'] = idStr;
1113
+ },
1114
+ // 单位选择完回调
1115
+ disposeAppUnit(res, type) {
1116
+ let label = type.substring(0, type.lastIndexOf('Select'));
1117
+ let idStr = '';
1118
+ let types = '';
1119
+ let SerialId = [];
1120
+ this.form[label + 'Name'] = '';
1121
+ let obj = {};
1122
+ res.list.map((r, i) => {
1123
+ if (!types || types.indexOf(r.objType) == -1) {
1124
+ idStr = !types
1125
+ ? r.objType +
1126
+ '-' +
1127
+ r.showid +
1128
+ (i === res.list.length - 1 ? '' : ',')
1129
+ : idStr +
1130
+ '|' +
1131
+ r.objType +
1132
+ '-' +
1133
+ r.showid +
1134
+ (i === res.list.length - 1 ? '' : ',');
1135
+ types = types ? types + ',' + r.objType : r.objType;
1136
+ } else {
1137
+ idStr = idStr + r.showid + (i === res.list.length - 1 ? '' : ',');
1138
+ }
1139
+ SerialId.push(r.showid);
1140
+ if (obj[r.objType]) {
1141
+ obj[r.objType].push(r.showname);
1142
+ } else {
1143
+ obj[r.objType] = [r.showname];
1144
+ }
1145
+ });
1146
+ this.form[label] = idStr;
1147
+ for (let key in obj) {
1148
+ if (
1149
+ key === 'enterprise' &&
1150
+ this.form[label + 'Name'].indexOf('[企业]') == -1
1151
+ ) {
1152
+ this.form[label + 'Name'] = this.form[label + 'Name']
1153
+ ? this.form[label + 'Name'] + '|' + '[企业]-' + obj[key].join(',')
1154
+ : '' + '[企业]-' + obj[key].join(',');
1155
+ }
1156
+ if (
1157
+ key === 'department' &&
1158
+ this.form[label + 'Name'].indexOf('[部门]') == -1
1159
+ ) {
1160
+ this.form[label + 'Name'] = this.form[label + 'Name']
1161
+ ? this.form[label + 'Name'] + '|' + '[部门]-' + obj[key].join(',')
1162
+ : '' + '[部门]-' + obj[key].join(',');
1163
+ }
1164
+ if (
1165
+ key === 'employee' &&
1166
+ this.form[label + 'Name'].indexOf('[部门员工]') == -1
1167
+ ) {
1168
+ this.form[label + 'Name'] = this.form[label + 'Name']
1169
+ ? this.form[label + 'Name'] +
1170
+ '|' +
1171
+ '[部门员工]-' +
1172
+ obj[key].join(',')
1173
+ : '' + '[部门员工]-' + obj[key].join(',');
1174
+ }
1175
+ }
1176
+ // this.form[label + 'Name'] = obj.enterprise?;
1177
+ this.form[label + 'SerialId'] = SerialId.join(',');
1178
+ this.form[label + 'Json'] = JSON.stringify(res.list);
1179
+ },
1180
+ // 获取发起流程信息
1181
+ getProcessObjNew() {
1182
+ let that = this;
1183
+ return new Promise(function(resolve, reiect) {
1184
+ request({
1185
+ url: that.baseUrl
1186
+ ? that.baseUrl + getHandleInfoHtml
1187
+ : getHandleInfoHtml,
1188
+ params: {
1189
+ pendingId: that.pendingId,
1190
+ userId: that.userId
1191
+ }
1192
+ }).then(res => {
1193
+ if (res.status == 'success') {
1194
+ const {
1195
+ data: {
1196
+ nodeInfoMap,
1197
+ choiceOrgId,
1198
+ choiceDeptId,
1199
+ pOrgId,
1200
+ taskExamine,
1201
+ currentOrgName,
1202
+ otherOrgName,
1203
+ defaultNotificationMessage,
1204
+ defaultNotificationType
1205
+ }
1206
+ } = res;
1207
+ that.currentOrgName = currentOrgName;
1208
+ that.otherOrgName = otherOrgName;
1209
+ that.taskExamineInfo = taskExamine;
1210
+ that.form.isReturnSubmitter = taskExamine.isReturnSubmitter;
1211
+ that.form.isUndertakeReply = taskExamine.isUndertakeReply;
1212
+ that.form.isTakeAdviceReply = taskExamine.isTakeAdviceReply;
1213
+ that.form.isUndertakeEnd = taskExamine.isUndertakeEnd;
1214
+ that.form.isTakeAdviceEnd = taskExamine.isTakeAdviceEnd;
1215
+ that.form.isReadDealReply = taskExamine.isReadDealReply;
1216
+ that.form.isReadDealEnd = taskExamine.isReadDealEnd;
1217
+ that.form.isReturnRejectNode = taskExamine.isReturnRejectNode;
1218
+ that.form.isSerialSubmit = taskExamine.isSerialSubmit;
1219
+ that.form.notificationMsg = defaultNotificationMessage;
1220
+ defaultNotificationType &&
1221
+ (that.defaultNotificationType = defaultNotificationType.split(
1222
+ ','
1223
+ ));
1224
+ that.nodeInfoMapInfo = nodeInfoMap;
1225
+ // that.defaultNextNode = nodeInfoMap.nodeExtAttr.defaultNextNode;
1226
+ that.opinionHandleExplainText =
1227
+ nodeInfoMap.nodeExtAttr.opinionHandleExplainText;
1228
+ that.isCanAddSign = res.data.isCanAddSign;
1229
+ if (that.isCanAddSign) {
1230
+ that.form.isAddSign = '2';
1231
+ }
1232
+ that.isCanRemoveSign = res.data.isCanRemoveSign;
1233
+ if (that.isCanRemoveSign) {
1234
+ that.form.isRemoveSign = '2';
1235
+ }
1236
+ that.isSpecial = res.data.isSpecial;
1237
+ that.processObj = res.data;
1238
+ that.taskOperations = res.data.taskOperations;
1239
+ if (that.taskOperations && that.taskOperations.length > 0) {
1240
+ let isSelected = false;
1241
+ that.taskOperations.map(item => {
1242
+ if (item.isSelected || that.taskOperations.length == 1) {
1243
+ isSelected = true;
1244
+ if (that.taskOperations.length == 1) {
1245
+ that.form.nextOperate = that.taskOperations[0].key;
1246
+ that.form.nextOperateName = that.taskOperations[0].value;
1247
+ if (
1248
+ !that.taskOperations[0].taskNodeList ||
1249
+ that.taskOperations[0].taskNodeList.length === 0
1250
+ ) {
1251
+ that.form.nextNodeId = undefined;
1252
+ that.form.nextNodeName = undefined;
1253
+ } else {
1254
+ that.nodeList = that.taskOperations[0].taskNodeList;
1255
+ let info = [];
1256
+ that.nodeList.map((x, y) => {
1257
+ if (
1258
+ x.nodeId === nodeInfoMap.nodeExtAttr.defaultNextNode
1259
+ ) {
1260
+ info.push(x);
1261
+ that.nextNodeDefault = y;
1262
+ }
1263
+ });
1264
+ if (info.length == 0 && that.nodeList.length != 0)
1265
+ info = [that.nodeList[0]];
1266
+ if (info.length > 0) {
1267
+ that.form.nextNodeId = info[0].nodeId;
1268
+ that.form.nextNodeName = info[0].nodeName;
1269
+ }
1270
+ // that.form.nextNodeId = that.nodeList[0].nodeId;
1271
+ // that.form.nextNodeName = that.nodeList[0].nodeName;
1272
+ }
1273
+ } else {
1274
+ that.form.nextOperate = item.key;
1275
+ that.form.nextOperateName = item.value;
1276
+ if (!item.taskNodeList || item.taskNodeList.length === 0) {
1277
+ that.form.nextNodeId = undefined;
1278
+ that.form.nextNodeName = undefined;
1279
+ } else {
1280
+ that.nodeList = item.taskNodeList;
1281
+ let info = [];
1282
+ that.nodeList.map((x, y) => {
1283
+ if (
1284
+ x.nodeId === nodeInfoMap.nodeExtAttr.defaultNextNode
1285
+ ) {
1286
+ info.push(x);
1287
+ that.nextNodeDefault = y;
1288
+ }
1289
+ });
1290
+ if (info.length == 0 && that.nodeList.length != 0)
1291
+ info = [that.nodeList[0]];
1292
+ if (info.length > 0) {
1293
+ that.form.nextNodeId = info[0].nodeId;
1294
+ that.form.nextNodeName = info[0].nodeName;
1295
+ }
1296
+ // that.form.nextNodeId = that.nodeList[0].nodeId;
1297
+ // that.form.nextNodeName = that.nodeList[0].nodeName;
1298
+ }
1299
+ }
1300
+ if (item.key == 9) {
1301
+ that.isReject = true;
1302
+ }
1303
+ that.changeNextOperate(item, true);
1304
+ }
1305
+ });
1306
+ if (!isSelected) {
1307
+ that.form.nextOperate = that.taskOperations[0].key;
1308
+ that.form.nextOperateName = that.taskOperations[0].value;
1309
+ that.nodeList = that.taskOperations[0].taskNodeList || [];
1310
+ if (that.nodeList && that.nodeList.length > 0) {
1311
+ that.form.nextNodeId = that.nodeList[0].nodeId;
1312
+ that.form.nextNodeName = that.nodeList[0].nodeName;
1313
+ }
1314
+ }
1315
+ }
1316
+ if (nodeInfoMap && JSON.stringify(nodeInfoMap) != '{}') {
1317
+ that.needRetrialAuth = !!nodeInfoMap.nodeExtAttr
1318
+ .isCurrentNodeSubmitNeedRetrialAuth;
1319
+ if (nodeInfoMap.nodeExtAttr.nodeFixedOpinionSelectList) {
1320
+ let notice = JSON.parse(
1321
+ nodeInfoMap.nodeExtAttr.nodeFixedOpinionSelectList
1322
+ );
1323
+ notice.map(x => {
1324
+ that.nodeFixedOpinionSelectList.push({ content: x });
1325
+ });
1326
+ }
1327
+ that.isCurrentNodeForbiddenChangeCandidate =
1328
+ nodeInfoMap.nodeExtAttr.isCurrentNodeForbiddenChangeCandidate;
1329
+ that.isHiddenOftenOpinion =
1330
+ nodeInfoMap.nodeExtAttr.isHiddenOftenOpinion;
1331
+ that.nodeDefaultSubmitOpinion =
1332
+ nodeInfoMap.nodeExtAttr.nodeDefaultSubmitOpinion;
1333
+ that.isSubmitButtonShowAgreeAndDisagree =
1334
+ nodeInfoMap.nodeExtAttr.isSubmitButtonShowAgreeAndDisagree;
1335
+ that.isOpinionRequired =
1336
+ nodeInfoMap.nodeExtAttr.isOpinionRequired;
1337
+ // that.isChooseNextNode = nodeInfoMap.nodeExtAttr.isChooseNextNode;
1338
+ that.isBanInputOpinion =
1339
+ nodeInfoMap.nodeExtAttr.isBanInputOpinion;
1340
+ that.isForceDisplayDefaultOptionForPrefix =
1341
+ nodeInfoMap.nodeExtAttr.isForceDisplayDefaultOptionForPrefix ==
1342
+ 1;
1343
+ }
1344
+ that.choiceOrgId = choiceOrgId;
1345
+ that.choiceDeptId = choiceDeptId;
1346
+ that.pOrgId = pOrgId;
1347
+ that.isEndUserTask = res.data.isEndUserTask;
1348
+ if (!that.isOpinionRequired) {
1349
+ that.isOpinionRequired = 0;
1350
+ }
1351
+ if (!that.isBanInputOpinion) {
1352
+ that.isBanInputOpinion = 0;
1353
+ }
1354
+ // that.countersignaturetypeText = res.data.taskExamine.nodeName
1355
+ if (res.data.taskExamine) {
1356
+ that.countersignaturetypeText = res.data.taskExamine.nodeName;
1357
+ }
1358
+ that.countersignaturetypeCode =
1359
+ res.data.countersignaturetypeCode !== 0 &&
1360
+ res.data.countersignaturetypeCode != undefined
1361
+ ? true
1362
+ : false;
1363
+ that.isMainSubProcess = res.data.isMainSubProcess == 'true';
1364
+ that.isCustomPreset = res.data.isCustomPreset;
1365
+ // form.isRemoveSign !== '1' &&
1366
+ // form.isAddSign !== '1' &&
1367
+ // nodeList &&
1368
+ // nodeList.length > 0 &&
1369
+ // isHiddenNextStepInfo
1370
+ resolve();
1371
+ } else {
1372
+ that.$toast(res.message);
1373
+ setTimeout(() => {
1374
+ that.navigateBack();
1375
+ }, 1000);
1376
+ reiect();
1377
+ }
1378
+ });
1379
+ });
1380
+ },
1381
+ getToStartTaskReadIndex() {
1382
+ request({
1383
+ url: this.baseUrl
1384
+ ? this.baseUrl + toStartTaskReadHtml
1385
+ : toStartTaskReadHtml,
1386
+ params: { pendingId: this.pendingId, userId: this.userId }
1387
+ })
1388
+ .then(res => {
1389
+ const {
1390
+ status,
1391
+ message,
1392
+ data: { isCanFenyue, taskExamine }
1393
+ } = res;
1394
+ if (status === 'success') {
1395
+ this.taskExamineInfo = taskExamine;
1396
+ this.isCanFenyue = isCanFenyue;
1397
+ // if (this.nodeName) {
1398
+ this.processObj.taskExamine.nodeName = '分阅';
1399
+ // }
1400
+ } else {
1401
+ this.$toast(message || '系统错误,请联系管理员!');
1402
+ }
1403
+ this.$toast.clear();
1404
+ })
1405
+ .catch(err => {
1406
+ this.$toast.clear();
1407
+ if (err.message && err.message !== 'canceled') {
1408
+ this.$toast(err.message);
1409
+ }
1410
+ });
1411
+ },
1412
+ // 获取节点信息(获取节点属性及办理人)
1413
+ getNodeObj(res) {
1414
+ const _that = this;
1415
+ request({
1416
+ url: _that.baseUrl ? _that.baseUrl + getNodeInfoHtml : getNodeInfoHtml,
1417
+ params: {
1418
+ processDefinitionId: this.processObj.taskExamine.processDefinitionId,
1419
+ nextNodeId: res,
1420
+ taskId: this.processObj.taskExamine.taskId,
1421
+ pendingId: this.pendingId,
1422
+ businessId: this.taskExamineInfo.businessId,
1423
+ userId: _that.userId
1424
+ }
1425
+ }).then(res => {
1426
+ this.$toast.clear();
1427
+ if (res.status == 'success') {
1428
+ this.appointNotUserIds = res.data.appointNotUserIds;
1429
+ this.handleRoleId = res.data.handleRoleId;
1430
+ this.nextRole = res.data.nextRole;
1431
+ this.filterCandinateIds = res.data.nodeExtAttr.filterCandinateIds;
1432
+ this.selectorDefShowDeptId =
1433
+ res.data.nodeExtAttr.selectorDefShowDeptId;
1434
+ this.userSelectionType = res.data.nodeExtAttr.userSelectionType;
1435
+ // this.changePidObjtype();
1436
+ this.orgSelectionType = res.data.nodeExtAttr.orgSelectionType;
1437
+ this.notificationType = res.data.nodeExtAttr.notificationType;
1438
+ this.nodeType = res.data.nodeExtAttr.nodeType;
1439
+ this.deptRoleCode = res.data.nodeExtAttr.deptRoleCode;
1440
+ this.orgRoleCode = res.data.nodeExtAttr.orgRoleCode;
1441
+ this.isCustomUser = res.data.nodeExtAttr.isCustomUser;
1442
+ this.presetEdit = res.data.nodeExtAttr.presetEdit;
1443
+ this.isLimitedTimeHandling =
1444
+ res.data.nodeExtAttr.isLimitedTimeHandling;
1445
+ this.peopleObj = res.data.nodeExtAttr;
1446
+ this.nextUserList = res.data.nextUserList.filter(
1447
+ x => x.userId && x.username
1448
+ );
1449
+ let _this = this;
1450
+ this.nextUserList.map(r => {
1451
+ _this.$set(r, 'checked', false);
1452
+ });
1453
+
1454
+ this.isHandleExplain =
1455
+ res.data.nodeExtAttr.isHandleExplain == 1 ? true : false; //判断是否隐藏办理说明
1456
+ this.isCustomUserClick =
1457
+ res.data.nodeExtAttr.isCustomUser == 1 ? true : false; // 判断办理人是否可点击显示弹框
1458
+ this.isTaskread = res.data.nodeExtAttr.isTaskread == 1 ? true : false; // 判断是否显示分阅
1459
+ this.countersignaturetypeCode =
1460
+ res.data.countersignaturetypeCode !== 0 ? true : false; //判断是否隐藏处理方式
1461
+ this.countersignaturetypeText = res.data.countersignaturetypeText;
1462
+ //如果当前为承办节点/会签节点,则展示本单位外单位办理人选择
1463
+ if (this.nodeType === 1 || this.nodeType === 2) {
1464
+ this.isMainSubProcess === true
1465
+ ? (this.isNodeShowProcess = true)
1466
+ : (this.isNodeShowProcess = false);
1467
+ this.isMainSubProcess === true
1468
+ ? (this.isMainSubProcess = true)
1469
+ : (this.isMainSubProcess = false);
1470
+ this.isNextUser = false;
1471
+ this.isHideCurrentOrg =
1472
+ res.data.nodeExtAttr.isHideCurrentOrg == 1 ? false : true; //判断是否隐藏本单位
1473
+ this.isHideOtherOrg =
1474
+ res.data.nodeExtAttr.isHideOtherOrg == 1 ? false : true; //判断是否隐藏外单位
1475
+ } else {
1476
+ this.isHideCurrentOrg = false;
1477
+ this.isHideOtherOrg = false;
1478
+ this.isMainSubProcess = false;
1479
+ this.isNodeShowProcess = false;
1480
+ this.isNextUser = true;
1481
+ // this.isMainSubProcess === true
1482
+ // ? (this.isMainSubProcess = true)
1483
+ // : (this.isMainSubProcess = false);
1484
+ }
1485
+ // userSelectionType 机构内单选人1,机构内多选人2,所有机构单选人3,所有部门多选人4,本部门单选人5,本部门多选人6,本单位单选部门7,本单位多选部门8,单选单位9,多选单位10,单选机构11,多选机构12,本部门角色13,本单位角色14
1486
+ this.userSelectionType == 2 ||
1487
+ this.userSelectionType == 4 ||
1488
+ this.userSelectionType == 6 ||
1489
+ this.userSelectionType == 8 ||
1490
+ this.userSelectionType == 10 ||
1491
+ this.userSelectionType == 11 ||
1492
+ this.userSelectionType == 12
1493
+ ? (this.isRadio = false)
1494
+ : (this.isRadio = true); //判断办理人单选多选
1495
+
1496
+ if (
1497
+ this.userSelectionType == 7 ||
1498
+ this.userSelectionType == 8 ||
1499
+ this.userSelectionType == 9 ||
1500
+ this.userSelectionType == 10 ||
1501
+ this.userSelectionType == 11 ||
1502
+ this.userSelectionType == 12
1503
+ ) {
1504
+ this.isDealObject = true;
1505
+ this.isNextUser = false;
1506
+ }
1507
+ if (this.userSelectionType == 13 || this.userSelectionType == 14) {
1508
+ this.isNextUser = false;
1509
+ this.isDealObject = false;
1510
+ this.isDealRole = true;
1511
+ this.nextUserflag = true;
1512
+ }
1513
+ this.isHiddenNextStepInfo =
1514
+ res.data.nodeExtAttr.isHiddenNextStepInfo == 1 && this.nextUserflag
1515
+ ? true
1516
+ : false; // 判断是否隐藏下一步节点信息和接收人信息
1517
+ if (res.data.globalNodeType === 'endEvent') {
1518
+ this.isNextUser = false;
1519
+ this.form.nextUserId = '流程办结';
1520
+ } else {
1521
+ this.nodeType != 1 &&
1522
+ this.nodeType != 2 &&
1523
+ (this.isNextUser = true); //判断是否是流程办结 办结下步办理人不显示
1524
+ }
1525
+ this.changeDefPeople(
1526
+ res.data.nodeExtAttr.isDefSelectedObj,
1527
+ res.data.nodeExtAttr.isSelectedAllObj
1528
+ );
1529
+ this.changePidObjtype(
1530
+ res.data.nodeExtAttr.userSelectionType,
1531
+ this.choiceOrgId,
1532
+ this.choiceDeptId,
1533
+ this.pOrgId
1534
+ );
1535
+ } else {
1536
+ this.$toast(res.message);
1537
+ }
1538
+ });
1539
+ },
1540
+ // 修改默认办理人
1541
+ changeDefPeople(def, all) {
1542
+ this.nextUserSelectList = [];
1543
+ if ((def == 1 && all == 1) || (def == 0 && all == 1)) {
1544
+ let ids = '';
1545
+ this.nextUserList.map((r, i) => {
1546
+ r.showid = r.userId;
1547
+ r.showname = r.username;
1548
+ this.$set(r, 'checked', true);
1549
+ this.nextUserSelectList.push(r);
1550
+ ids += r.userId + (i === this.nextUserList.length - 1 ? '' : ',');
1551
+ });
1552
+ this.form.nextUserId = ids;
1553
+ } else if (
1554
+ def == 1 &&
1555
+ (!all || all == 0) &&
1556
+ this.nextUserList.length > 0
1557
+ ) {
1558
+ this.nextUserList[0].showid = this.nextUserList[0].userId;
1559
+ this.nextUserList[0].showname = this.nextUserList[0].username;
1560
+ this.$set(this.nextUserList[0], 'checked', true);
1561
+ this.nextUserSelectList.push(this.nextUserList[0]);
1562
+ this.form.nextUserId = this.nextUserSelectList[0].userId;
1563
+ }
1564
+ },
1565
+ // 根据返回的办理人类型来判断 选择人员树的范围
1566
+ changePidObjtype(val, choiceOrgId, choiceDeptId, pOrgId) {
1567
+ if (val === 1 || val === 2) {
1568
+ this.pid = choiceOrgId || this.orgId;
1569
+ this.objType = 'enterprise';
1570
+ this.selectType = 'employee';
1571
+ } else if (this.userSelectionType === 3 || this.userSelectionType === 4) {
1572
+ this.pid = 'root';
1573
+ this.objType = 'employee';
1574
+ } else if (this.userSelectionType === 5 || this.userSelectionType === 6) {
1575
+ this.pid = choiceDeptId || this.depId;
1576
+ this.objType = 'department';
1577
+ } else if (
1578
+ this.userSelectionType === 11 ||
1579
+ this.userSelectionType === 12
1580
+ ) {
1581
+ this.selectType = 'employee';
1582
+ this.objType = 'enterprise';
1583
+ } else if (this.userSelectionType === 13) {
1584
+ this.pid = choiceDeptId || this.depId;
1585
+ this.selectType = 'employee';
1586
+ this.objType = 'department';
1587
+ } else if (this.userSelectionType === 14) {
1588
+ this.pid = pOrgId || this.orgId;
1589
+ this.selectType = 'employee';
1590
+ } else if (
1591
+ this.userSelectionType === 15 ||
1592
+ this.userSelectionType === 16
1593
+ ) {
1594
+ this.pid = pOrgId || this.orgId;
1595
+ this.selectType = 'employee';
1596
+ }
1597
+ }
1598
+ }
1599
+ };
1600
+ </script>
1601
+
1602
+ <style></style>