eoss-ui 0.8.34 → 0.8.35

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,2337 +1,2346 @@
1
- <template>
2
- <div class="es-flow-list">
3
- <div
4
- class="es-flow-list-item"
5
- v-for="(item, index) in content"
6
- :key="index"
7
- v-show="
8
- (item.type == 'splitReading' &&
9
- splitReadingData &&
10
- splitReadingData.length > 0) ||
11
- (item.type == 'preset' &&
12
- presetData &&
13
- presetData.length > 0 &&
14
- currentUserHasPresetInfoAuth) ||
15
- (item.type != 'splitReading' && item.type != 'preset')
16
- "
17
- >
18
- <div
19
- class="es-flow-list-box"
20
- :ref="item.type"
21
- :style="`position:${height == 'auto' ? 'unset' : 'absolute'}`"
22
- >
23
- <es-data-table
24
- v-if="show"
25
- :class="{ 'es-flow-group-data-table': item.type !== 'sign' }"
26
- :display="display"
27
- @cell-click="handleCellClick"
28
- :full="height !== 'auto'"
29
- v-bind="item"
30
- :data="
31
- showDoresult
32
- ? returnData(item.type).filter(
33
- (x) => x.doresult || x.handleInfo || x.pendstate != 2
34
- )
35
- : returnData(item.type)
36
- "
37
- @btn-click="handleBtnClick"
38
- @selection-change="handleSelectionChange"
39
- ></es-data-table>
40
- </div>
41
- </div>
42
- <es-dialog
43
- append-to-body
44
- :close-on-click-modal="false"
45
- title="查看附件"
46
- :visible.sync="showFileList"
47
- v-if="showFileList"
48
- >
49
- <FileList
50
- :ownId="wfpendingid"
51
- :code="flowTableInfo.adjunctCode"
52
- :deleted="false"
53
- :disabled="true"
54
- @cancel="showFileList = false"
55
- />
56
- </es-dialog>
57
- <es-dialog
58
- append-to-body
59
- class="es-flow-list-dialog"
60
- :close-on-click-modal="false"
61
- title="流程历史批量删除"
62
- :visible.sync="showBatchDelete"
63
- v-if="showBatchDelete"
64
- >
65
- <div style="height: 100%" v-loading="batchDeleteLoading">
66
- <es-data-table
67
- v-if="showBatchDelete"
68
- checkbox
69
- :data="batchdeleteTableList"
70
- :thead="batchdeleteThead"
71
- numbers
72
- full
73
- @selection-change="handleSelectionChange($event,'batchDelete')"
74
- style="width: 100%"
75
- />
76
- <div class="batch-delete-footer">
77
- <el-input class="batch-delete-footer-input" v-model="batchdeletereason" placeholder="请输入批量删除的原因"></el-input>
78
- <es-button type="primary" @click="handleBatchDelete">批量删除</es-button>
79
- <es-button type="primary" @click="showBatchDelete = false">取消</es-button>
80
- </div>
81
- </div>
82
- </es-dialog>
83
- <es-dialog
84
- append-to-body
85
- class="es-flow-list-dialog"
86
- :close-on-click-modal="false"
87
- title="查看删除记录"
88
- :visible.sync="showDelete"
89
- v-if="showDelete"
90
- >
91
- <div style="height: 100%" v-loading="deleteLoading">
92
- <es-data-table
93
- v-if="showDelete"
94
- :data="deleteTableList"
95
- :thead="deleteThead"
96
- @btn-click="handleBtnShowClick"
97
- @page-size-change="handleSizeChange($event, 'delete')"
98
- @page-current-change="handleCurrentChange($event, 'delete')"
99
- numbers
100
- full
101
- style="width: 100%"
102
- @sort-change="sortChange($event, 'delete')"
103
- :page="pageInfo"
104
- />
105
- </div>
106
- </es-dialog>
107
- <es-dialog
108
- append-to-body
109
- class="es-flow-list-dialog"
110
- :close-on-click-modal="false"
111
- title="查看重设记录"
112
- :visible.sync="showReset"
113
- v-if="showReset"
114
- >
115
- <div style="height: 100%" v-loading="resetLoading">
116
- <es-data-table
117
- v-if="showReset"
118
- :data="resetTableList"
119
- :thead="resetThead"
120
- @page-size-change="handleSizeChange($event, 'reset')"
121
- @page-current-change="handleCurrentChange($event, 'reset')"
122
- numbers
123
- full
124
- style="width: 100%"
125
- @sort-change="sortChange($event, 'reset')"
126
- :page="pageInfo"
127
- />
128
- </div>
129
- </es-dialog>
130
- <es-dialog
131
- append-to-body
132
- :close-on-click-modal="false"
133
- title="查看催办记录"
134
- :visible.sync="showPress"
135
- v-if="showPress"
136
- >
137
- <div style="height: 100%" v-loading="pressLoading">
138
- <es-data-table
139
- v-if="show"
140
- :data="pressTableList"
141
- :thead="pressThead"
142
- @page-size-change="handleSizeChange($event, 'press')"
143
- @page-current-change="handleCurrentChange($event, 'press')"
144
- stripe
145
- full
146
- style="width: 100%"
147
- @sort-change="sortChange($event, 'press')"
148
- :page="pageInfo"
149
- />
150
- </div>
151
- </es-dialog>
152
- <es-dialog
153
- append-to-body
154
- :close-on-click-modal="false"
155
- :title="modalType == 'del' ? '删除' : '修改意见'"
156
- :visible.sync="showDel"
157
- height="auto"
158
- class="del-flow"
159
- v-if="showDel"
160
- >
161
- <es-form
162
- v-loading="delLoading"
163
- :model="formData"
164
- :contents="formItemList"
165
- @submit="handleFormSubmit"
166
- >
167
- </es-form>
168
- </es-dialog>
169
- </div>
170
- </template>
171
-
172
- <script>
173
- import {
174
- findCodeValues,
175
- deletePresetInfo,
176
- pendedhistoryListJson,
177
- toPresetInfoListIndex,
178
- pressListJson,
179
- pendedhistoryListWithCircularReadJson,
180
- deleteFlow,
181
- taskReadWithDraw,
182
- fyListJson,
183
- circularReadWithdraw,
184
- resetJson,
185
- deletedListJson,
186
- restoredHistory,
187
- batchDelete,
188
- modifyFlow
189
- } from 'eoss-ui/src/config/api';
190
- import FileList from '../../flow/src/component/FileList.vue';
191
- import util from 'eoss-ui/src/utils/util';
192
- export default {
193
- name: 'EsFlowList',
194
- components: {
195
- [FileList.name]: FileList
196
- },
197
- props: {
198
- businessId: {
199
- type: String,
200
- default: ''
201
- },
202
- getListCount: {
203
- type: Function,
204
- default: () => {}
205
- },
206
- flowViewType: {
207
- type: [Number, String],
208
- default: 0
209
- },
210
- hide: {
211
- type: String,
212
- default: ''
213
- },
214
- hideBtn: {
215
- type: Boolean,
216
- default: false
217
- },
218
- params: {
219
- type: Object,
220
- default: () => {
221
- return {};
222
- }
223
- },
224
- toolbar: {
225
- type: Array,
226
- default: () => []
227
- },
228
- headFields: {
229
- type: Array,
230
- default: () => []
231
- },
232
- contents: {
233
- type: Array,
234
- default() {
235
- return ['flow', 'splitReading', 'preset'];
236
- }
237
- },
238
- numbers: {
239
- type: Boolean,
240
- default: false
241
- },
242
- height: {
243
- type: String,
244
- default: ''
245
- },
246
- showDoresult: {
247
- type: Boolean,
248
- default: false
249
- },
250
- theadWidth: {
251
- type: Object,
252
- default: () => {
253
- return {};
254
- }
255
- },
256
- type: {
257
- type: String,
258
- default: ''
259
- },
260
- display: Boolean
261
- },
262
- inheritAttrs: false,
263
- data() {
264
- return {
265
- pressLoading: false,
266
- pressTableList: [],
267
- circularData: [],
268
- selectList: [],
269
- batchDeleteSelectList:[],
270
- flowHeight: '',
271
- presetHeight: '',
272
- signHeight: '',
273
- splitReadingHeight: '',
274
- circularHeight: '',
275
- untreatedReadHeight: '',
276
- processedReadHeight: '',
277
- untreatedReadData: [],
278
- processedReadData: [],
279
- hasCircularReadWithdrawAuthority: false,
280
- currentPage: 1,
281
- pageSize: 20,
282
- flowListCount: {},
283
- currentUserHasPresetInfoAuth: false,
284
- pressThead: [
285
- {
286
- title: '催办节点',
287
- align: 'center',
288
- sortable: true,
289
- field: 'urge_item'
290
- },
291
- {
292
- title: '催办人名称',
293
- sortable: true,
294
- align: 'center',
295
- field: 'urge_man_name'
296
- },
297
- {
298
- title: '催办时间',
299
- sortable: true,
300
- align: 'center',
301
- field: 'urge_time'
302
- },
303
- {
304
- title: '被催办人名称',
305
- align: 'center',
306
- sortable: true,
307
- field: 'urged_man_name'
308
- }
309
- ],
310
- wfpendingid: '',
311
- showFileList: false,
312
- flowData: [],
313
- splitReadingData: [],
314
- presetData: [],
315
- signData: [],
316
- loading: '', //加载中
317
- preset_type: [], //预设类型
318
- showPress: false, //查看催办记录弹窗
319
- showDelete: false, //删除记录弹窗
320
- showBatchDelete: false,
321
- deleteLoading: false,
322
- batchDeleteLoading: false,
323
- deleteTableList: [],
324
- batchdeleteTableList: [],
325
- batchdeletereason:'',
326
- batchdeleteThead: [
327
- {
328
- title: '步骤',
329
- align: 'center',
330
- // sortable: true,
331
- showOverflowTooltip: true,
332
- field: 'itemname'
333
- },
334
- {
335
- title: '办理人',
336
- align: 'center',
337
- showOverflowTooltip: true,
338
- width: 120,
339
- // sortable: true,
340
- field: 'userName'
341
- },
342
- {
343
- label: '状态',
344
- field: 'pendstate',
345
- key: 'zt',
346
- align: 'center',
347
- showOverflowTooltip: true,
348
- width: this.theadWidth.pendstate || 80,
349
- render: (h, params) => {
350
- return h('span', {
351
- style: {
352
- color:
353
- params.row.pendstate == 0 || params.row.pendstate == 3
354
- ? 'red'
355
- : params.row.pendstate == 1
356
- ? 'green'
357
- : params.row.pendstate == -1
358
- ? 'orange'
359
- : 'deepskyblue'
360
- },
361
- domProps: { innerHTML: params.row.querykeywords }
362
- });
363
- }
364
- },
365
- {
366
- title: '办理意见',
367
- align: 'center',
368
- showOverflowTooltip: true,
369
- // sortable: true,
370
- field: 'doresult'
371
- },
372
- {
373
- title: '办理时间',
374
- align: 'center',
375
- showOverflowTooltip: true,
376
- // sortable: true,
377
- field: 'doetime',
378
- render: (h, params) => {
379
- return h(
380
- 'span',
381
- {},
382
- params.row.doetime
383
- ? util.formatDate(params.row.doetime, 'yyyy-MM-dd HH:mm')
384
- : ''
385
- );
386
- }
387
- }
388
- ],
389
- deleteThead: [
390
- {
391
- title: '步骤',
392
- align: 'center',
393
- // sortable: true,
394
- showOverflowTooltip: true,
395
- field: 'itemname'
396
- },
397
- {
398
- title: '办理人',
399
- align: 'center',
400
- showOverflowTooltip: true,
401
- width: 120,
402
- // sortable: true,
403
- field: 'userName'
404
- },
405
- {
406
- title: '办理意见',
407
- align: 'center',
408
- showOverflowTooltip: true,
409
- width: 240,
410
- // sortable: true,
411
- field: 'doresult'
412
- },
413
- {
414
- title: '办理时间',
415
- align: 'center',
416
- width: 150,
417
- showOverflowTooltip: true,
418
- // sortable: true,
419
- field: 'doetime'
420
- },
421
- {
422
- title: '删除人',
423
- showOverflowTooltip: true,
424
- width: 120,
425
- align: 'center',
426
- // sortable: true,
427
- field: 'querykeywords'
428
- },
429
- {
430
- title: '删除原因',
431
- align: 'center',
432
- width: 240,
433
- showOverflowTooltip: true,
434
- // sortable: true,
435
- field: 'upstepInfo'
436
- },
437
- {
438
- title: '删除时间',
439
- align: 'center',
440
- width: 150,
441
- showOverflowTooltip: true,
442
- // sortable: true,
443
- field: 'statechangetime'
444
- },
445
- {
446
- title: '操作',
447
- type: 'handle',
448
- events: [
449
- {
450
- text: '恢复'
451
- }
452
- ]
453
- }
454
- ],
455
- showReset: false, //重设记录弹窗
456
- resetLoading: false,
457
- resetTableList: [],
458
- resetThead: [
459
- {
460
- title: '重设人登录名',
461
- align: 'center',
462
- // sortable: true,
463
- showOverflowTooltip: true,
464
- field: 'reset_person_login_name'
465
- },
466
- {
467
- title: '重设人姓名',
468
- align: 'center',
469
- showOverflowTooltip: true,
470
- // sortable: true,
471
- field: 'reset_person_name'
472
- },
473
- {
474
- title: '重设前节点',
475
- align: 'center',
476
- showOverflowTooltip: true,
477
- // sortable: true,
478
- field: 'reset_bf_item'
479
- },
480
- {
481
- title: '重设前执行人',
482
- align: 'center',
483
- showOverflowTooltip: true,
484
- // sortable: true,
485
- field: 'reset_bf_user'
486
- },
487
- {
488
- title: '重设后节点',
489
- showOverflowTooltip: true,
490
- align: 'center',
491
- // sortable: true,
492
- field: 'reset_af_item'
493
- },
494
- {
495
- title: '重设后执行人',
496
- align: 'center',
497
- showOverflowTooltip: true,
498
- // sortable: true,
499
- field: 'reset_af_user'
500
- },
501
- {
502
- title: '重设时间',
503
- align: 'center',
504
- showOverflowTooltip: true,
505
- // sortable: true,
506
- field: 'reset_time'
507
- },
508
- {
509
- title: '操作IP',
510
- align: 'center',
511
- showOverflowTooltip: true,
512
- // sortable: true,
513
- field: 'reset_ip'
514
- }
515
- ],
516
- modify: false,
517
- formData: { reason: '' },
518
-
519
- delLoading: false,
520
- showDel: false,
521
- attachmentPaperClipCssStyle: '',
522
- is_edit: [], //是否可编辑
523
- flowTableInfo: {
524
- adjunctCode: '',
525
- hasAgent: '1' //是否展示代办人 1:展示 0:不展示
526
- },
527
- show: false,
528
- taskReadName: '', //非流程列表名称
529
- options: [
530
- { label: '时间排序', value: '1' },
531
- { label: '部门排序', value: '2' }
532
- // { label: '树形排序', value: '3' }
533
- ],
534
- isShort: 0, //是否隐藏筛选
535
- viewType: '1', //排序方式
536
- flowTableList: [], //流程列表
537
- fyTableList: [], //分阅列表
538
- showSuggest: 'all', //筛选显示数据
539
- presetInfoListHiddenColumns: '', //隐藏表格展示数据
540
- canDelete: false, //是否展示操作按钮
541
- canBatchDelete: false, //是否可以批量删除
542
- isSuperRole: false, //是否管理员
543
- isShowReset: false, //是否显示重设记录
544
- historyId: '',
545
- sidx: '',
546
- sord: 'asc',
547
- modalType: '',
548
- total: 0
549
- };
550
- },
551
- watch: {
552
- flowViewType: {
553
- handler(val) {
554
- if (val) {
555
- this.loading = util.loading(this.$loading, '加载中...');
556
- this.getFlowList(val);
557
- }
558
- },
559
- deep: true,
560
- immediate: true
561
- }
562
- },
563
-
564
- computed: {
565
- formItemList() {
566
- return [
567
- {
568
- name: 'reason',
569
- label: this.modalType == 'del' ? '删除原因' : '办理意见',
570
- type: 'textarea',
571
- placeholder: `请输入${
572
- this.modalType == 'del' ? '删除原因' : '办理意见'
573
- }`,
574
- rules: {
575
- required: this.modalType == 'del',
576
- message: '请输入删除原因',
577
- trigger: 'blur'
578
- },
579
- value: '',
580
- rows: 5
581
- },
582
- {
583
- type: 'submit',
584
- skin: 'lay-form-btns',
585
- contents: [
586
- {
587
- type: 'primary',
588
- plain: true,
589
- text: '保存',
590
- event: 'confirm'
591
- }
592
- ]
593
- }
594
- ];
595
- },
596
- toolbars() {
597
- return {
598
- flow: [
599
- {
600
- type: 'text',
601
- contents: '流程列表'
602
- },
603
- {
604
- type: 'search',
605
- contents: [
606
- {
607
- name: 'showSuggest',
608
- type: 'radio',
609
- changeSearch: true,
610
- data: [
611
- {
612
- value: 'all',
613
- name: '显示全部',
614
- checked: true
615
- },
616
- { value: 'have', name: '显示已填意见' }
617
- ],
618
- events: {
619
- change: (key, value) => {
620
- this.handleChange(key, value);
621
- }
622
- }
623
- },
624
-
625
- {
626
- type: 'select',
627
- placeholder: '请选择',
628
- name: 'viewType',
629
- width: '140px',
630
- changeSearch: true,
631
- events: {
632
- change: (key, value) => {
633
- this.handleChange(key, value);
634
- }
635
- },
636
- data: [
637
- {
638
- value: 1,
639
- selected: true,
640
- name: '时间排序'
641
- },
642
- {
643
- value: 2,
644
- name: '部门排序'
645
- }
646
- // {
647
- // value: 3,
648
- // name: '树形排序'
649
- // }
650
- ]
651
- }
652
- ]
653
- },
654
- {
655
- type: 'button',
656
- name: 'btn',
657
- width: '140px',
658
- contents: [
659
- {
660
- text: '删除记录',
661
- type: 'primary',
662
- hide: !this.canDelete && !this.isSuperRole,
663
- event: (res) => {
664
- // click: (key, value) => {
665
- this.showDelete = true;
666
- this.currentPage = 1;
667
- this.pageSize = 20;
668
- this.getDeletList();
669
- // }
670
- }
671
- },
672
- {
673
- text: '批量删除',
674
- type: 'primary',
675
- hide: !this.canBatchDelete && !this.isSuperRole,
676
- event: (res) => {
677
- // click: (key, value) => {
678
- this.showBatchDelete = true;
679
- this.batchdeleteTableList = this.flowData.filter((x) => x.pendstate == 2);
680
- // }
681
- }
682
- },
683
- {
684
- text: '重设记录',
685
- type: 'primary',
686
- hide: !this.isShowReset,
687
- event: (res) => {
688
- // click: (key, value) => {
689
- this.showReset = true;
690
- this.currentPage = 1;
691
- this.pageSize = 20;
692
- this.getResetList();
693
- // }
694
- }
695
- }
696
- ]
697
- }
698
- ],
699
- preset: [
700
- {
701
- type: 'text',
702
- contents: '预设列表'
703
- }
704
- ],
705
- sign: [
706
- {
707
- type: 'button',
708
- contents: [
709
- {
710
- text: '生成处理签',
711
- type: 'primary'
712
- }
713
- ]
714
- }
715
- ],
716
- splitReading: [
717
- {
718
- type: 'text',
719
- contents:
720
- (this.taskReadName ? this.taskReadName : '非流程') + '列表'
721
- }
722
- ],
723
- circular: [
724
- {
725
- type: 'text',
726
- contents: '传阅列表'
727
- }
728
- ],
729
- untreatedRead: [
730
- {
731
- type: 'text',
732
- contents: '未处理分阅列表'
733
- },
734
- {
735
- type: 'button',
736
- contents: [
737
- {
738
- text: '撤销分阅',
739
- fun: 'recallRead'
740
- }
741
- ]
742
- }
743
- ],
744
- processedRead: [
745
- {
746
- type: 'text',
747
- contents: '已处理分阅列表'
748
- }
749
- ]
750
- // Reading situation
751
- };
752
- },
753
- pageInfo() {
754
- return {
755
- pageNum: this.currentPage,
756
- pageSize: this.pageSize,
757
- totalCount: this.total
758
- };
759
- },
760
- theads() {
761
- const _that = this;
762
- let newThead = {
763
- flow: [
764
- {
765
- label: '经办部门',
766
- field: 'deptid',
767
- align: 'center',
768
- key: 'jbbm',
769
- showOverflowTooltip: true,
770
- width: this.theadWidth.deptid || 150,
771
- render: (h, params) => {
772
- return h(
773
- 'span',
774
- {},
775
- params.row.doDeptName
776
- ? params.row.doDeptName
777
- : params.row.deptName
778
- );
779
- }
780
- },
781
- {
782
- label: '步骤',
783
- field: 'itemname',
784
- align: 'center',
785
- key: 'bz',
786
- showOverflowTooltip: true,
787
- width: this.theadWidth.itemname || 110
788
- },
789
- {
790
- label: '办理人',
791
- field: 'userName',
792
- align: 'center',
793
- key: 'blr',
794
- showOverflowTooltip: true,
795
- width: this.theadWidth.userName || 110
796
- },
797
- {
798
- label: '办理人部门',
799
- field: 'deptName',
800
- align: 'center',
801
- showOverflowTooltip: true,
802
- key: 'blrbm',
803
- width: this.theadWidth.deptName || 110
804
- },
805
- {
806
- label: '状态',
807
- field: 'pendstate',
808
- key: 'zt',
809
- align: 'center',
810
- showOverflowTooltip: true,
811
- width: this.theadWidth.pendstate || 80,
812
- render: (h, params) => {
813
- return h('span', {
814
- style: {
815
- color:
816
- params.row.pendstate == 0 || params.row.pendstate == 3
817
- ? 'red'
818
- : params.row.pendstate == 1
819
- ? 'green'
820
- : params.row.pendstate == -1
821
- ? 'orange'
822
- : 'deepskyblue'
823
- },
824
- domProps: { innerHTML: params.row.querykeywords }
825
- });
826
- }
827
- },
828
- {
829
- label: '办理意见',
830
- field: 'doresult',
831
- align: 'center',
832
- width: this.theadWidth.doresult,
833
- showOverflowTooltip: true,
834
- key: 'blyj',
835
- render: (h, params) => {
836
- if (
837
- params.row.doresult &&
838
- (params.row.doresult.startsWith('http') ||
839
- params.row.doresult.startsWith('https'))
840
- ) {
841
- return h('img', {
842
- attrs: { src: params.row.doresult },
843
- style: { width: '100px', height: '100px' }
844
- });
845
- } else {
846
- return h('span', {}, [
847
- params.row.doresult
848
- ? params.row.doresult + (params.row.handleInfo ? '&' : '')
849
- : '',
850
- h(
851
- 'span',
852
- { style: { color: '#A5A5A5', marginLeft: '2px' } },
853
- params.row.handleInfo || ''
854
- )
855
- ]);
856
- }
857
- }
858
- },
859
- {
860
- label: '验签',
861
- field: 'authTypeStr',
862
- align: 'center',
863
- key: 'yq',
864
- showOverflowTooltip: true,
865
- width: this.theadWidth.authTypeStr || 70,
866
- render: (h, params) => {
867
- return h(
868
- 'span',
869
- { style: { color: 'deepskyblue' } },
870
- params.row.authTypeStr
871
- );
872
- }
873
- },
874
- {
875
- label: '附件',
876
- key: 'fj',
877
- field: 'hasAdjunct',
878
- align: 'center',
879
- showOverflowTooltip: true,
880
- width: this.theadWidth.hasAdjunct || 70,
881
- render: (h, params) => {
882
- if (params.row.hasAdjunct) {
883
- return h('span', {
884
- style: _that.attachmentPaperClipCssStyle
885
- ? _that.attachmentPaperClipCssStyle
886
- : { color: 'red', fontSize: '20px' },
887
- class: 'iconfont es-icon-fujian'
888
- });
889
- } else {
890
- return h('span', {}, '');
891
- }
892
- }
893
- },
894
- {
895
- label: '时间',
896
- field: 'doetime',
897
- align: 'center',
898
- key: 'sj',
899
- showOverflowTooltip: true,
900
- width: this.theadWidth.doetime || 150,
901
- render: (h, params) => {
902
- return h(
903
- 'span',
904
- {},
905
- params.row.doetime
906
- ? util.formatDate(params.row.doetime, 'yyyy-MM-dd HH:mm')
907
- : ''
908
- );
909
- }
910
- },
911
- {
912
- label: '代办人',
913
- field: 'douserid',
914
- align: 'center',
915
- key: 'dbr',
916
- showOverflowTooltip: true,
917
- width: this.theadWidth.douserid || 80,
918
- hide: _that.flowTableInfo.hasAgent != '1'
919
- },
920
- {
921
- label: '催办',
922
- field: 'pressTimes',
923
- align: 'center',
924
- key: 'cb',
925
- showOverflowTooltip: true,
926
- width: this.theadWidth.pressTimes || 150,
927
- render: (h, params) => {
928
- return h(
929
- 'span',
930
- { style: 'color:deepskyblue;cursor: pointer;' },
931
- params.row.pressTimes != 0 ? params.row.pressTimes : ''
932
- );
933
- }
934
- },
935
- {
936
- title: '操作',
937
- type: 'handle',
938
- width: this.modify ? '130' : '100',
939
- template: '',
940
- hide: this.hideBtn || (!this.canDelete && !this.modify),
941
- events: [
942
- {
943
- text: '删除',
944
- rules: (rows) => {
945
- return rows.canDelete || this.canDelete;
946
- }
947
- },
948
- {
949
- text: '修改',
950
- rules: (rows) => {
951
- return this.modify && rows.pendstate == 2;
952
- }
953
- }
954
- ]
955
- }
956
- ],
957
- preset: this.thead,
958
- splitReading: [
959
- {
960
- label: '经办部门',
961
- field: 'deptid',
962
- key: 'jbbm',
963
- align: 'center',
964
- showOverflowTooltip: true,
965
- width: this.theadWidth.deptid || 150
966
- },
967
- {
968
- label: '步骤',
969
- field: 'itemname',
970
- align: 'center',
971
- key: 'bz',
972
- showOverflowTooltip: true,
973
- width: this.theadWidth.itemname || 110
974
- },
975
- {
976
- label: '办理人',
977
- field: 'userName',
978
- align: 'center',
979
- key: 'blr',
980
- showOverflowTooltip: true,
981
- width: this.theadWidth.userName || 110
982
- },
983
- {
984
- label: '状态',
985
- field: 'pendstate',
986
- align: 'center',
987
- key: 'zt',
988
- showOverflowTooltip: true,
989
- width: this.theadWidth.pendstate || 80,
990
- render: (h, params) => {
991
- return h('span', {
992
- style: {
993
- color:
994
- params.row.pendstate == 0 || params.row.pendstate == 3
995
- ? 'red'
996
- : params.row.pendstate == 1
997
- ? 'green'
998
- : params.row.pendstate == -1
999
- ? 'orange'
1000
- : 'deepskyblue'
1001
- },
1002
- domProps: { innerHTML: params.row.querykeywords }
1003
- });
1004
- }
1005
- },
1006
- {
1007
- label: '办理意见',
1008
- field: 'doresult',
1009
- align: 'center',
1010
- key: 'blyj',
1011
- width: this.theadWidth.doresult,
1012
- showOverflowTooltip: true,
1013
- render: (h, params) => {
1014
- if (
1015
- params.row.doresult &&
1016
- (params.row.doresult.startsWith('http') ||
1017
- params.row.doresult.startsWith('https'))
1018
- ) {
1019
- return h('img', {
1020
- attrs: { src: params.row.doresult },
1021
- style: { width: '100px', height: '100px' }
1022
- });
1023
- } else {
1024
- return h('span', {}, [
1025
- params.row.doresult
1026
- ? params.row.doresult + (params.row.handleInfo ? '&' : '')
1027
- : '',
1028
- h(
1029
- 'span',
1030
- { style: { color: '#A5A5A5', marginLeft: '2px' } },
1031
- params.row.handleInfo || ''
1032
- )
1033
- ]);
1034
- }
1035
- }
1036
- },
1037
- {
1038
- label: '验签',
1039
- field: 'authTypeStr',
1040
- align: 'center',
1041
- key: 'yq',
1042
- showOverflowTooltip: true,
1043
- width: this.theadWidth.authTypeStr || 70,
1044
- render: (h, params) => {
1045
- return h(
1046
- 'span',
1047
- { style: { color: 'deepskyblue' } },
1048
- params.row.authTypeStr
1049
- );
1050
- }
1051
- },
1052
- {
1053
- label: '附件',
1054
- field: 'hasAdjunct',
1055
- align: 'center',
1056
- key: 'fj',
1057
- showOverflowTooltip: true,
1058
- width: this.theadWidth.hasAdjunct || 70,
1059
- render: (h, params) => {
1060
- if (params.row.hasAdjunct) {
1061
- return h('span', {
1062
- style: _that.attachmentPaperClipCssStyle
1063
- ? _that.attachmentPaperClipCssStyle
1064
- : { color: 'red', fontSize: '20px' },
1065
- class: 'iconfont es-icon-fujian'
1066
- });
1067
- } else {
1068
- return h('span', {}, '');
1069
- }
1070
- }
1071
- },
1072
- {
1073
- label: '时间',
1074
- field: 'doetime',
1075
- align: 'center',
1076
- key: 'sj',
1077
- showOverflowTooltip: true,
1078
- width: this.theadWidth.doetime || 150,
1079
- render: (h, params) => {
1080
- return h(
1081
- 'span',
1082
- {},
1083
- params.row.doetime
1084
- ? util.formatDate(params.row.doetime, 'yyyy-MM-dd HH:mm')
1085
- : ''
1086
- );
1087
- }
1088
- },
1089
- {
1090
- label: '代办人',
1091
- field: 'douserid',
1092
- align: 'center',
1093
- key: 'dbr',
1094
- showOverflowTooltip: true,
1095
- width: this.theadWidth.douserid || 80,
1096
- hide: _that.flowTableInfo.hasAgent != '1'
1097
- },
1098
- {
1099
- label: '催办',
1100
- field: 'pressTimes',
1101
- align: 'center',
1102
- key: 'cb',
1103
- showOverflowTooltip: true,
1104
- width: this.theadWidth.pressTimes || 150,
1105
- render: (h, params) => {
1106
- return h(
1107
- 'span',
1108
- { style: 'color:deepskyblue;cursor: pointer;' },
1109
- params.row.pressTimes != 0 ? params.row.pressTimes : ''
1110
- );
1111
- }
1112
- },
1113
- {
1114
- title: '操作',
1115
- type: 'handle',
1116
- width: '100',
1117
- template: '',
1118
- hide: this.hideBtn || (!this.canDelete && !this.modify),
1119
- events: [
1120
- {
1121
- text: '删除',
1122
- rules: (rows) => {
1123
- return rows.canDelete || this.canDelete;
1124
- }
1125
- }
1126
- ]
1127
- }
1128
- ],
1129
- circular: [
1130
- {
1131
- label: '发起人',
1132
- field: 'circularReadInitiatorName',
1133
- align: 'center',
1134
- key: 'fqr',
1135
- showOverflowTooltip: true,
1136
- width: this.theadWidth.circularReadInitiatorName || 150
1137
- },
1138
- {
1139
- label: '传阅部门',
1140
- field: 'circularReadOrgName',
1141
- align: 'center',
1142
- key: 'cybm',
1143
- showOverflowTooltip: true,
1144
- width: this.theadWidth.circularReadOrgName || 110
1145
- },
1146
- {
1147
- label: '传阅人',
1148
- field: 'userName',
1149
- align: 'center',
1150
- key: 'cyr',
1151
- showOverflowTooltip: true,
1152
- width: this.theadWidth.userName || 110
1153
- },
1154
- {
1155
- label: '步骤',
1156
- field: 'itemname',
1157
- align: 'center',
1158
- showOverflowTooltip: true,
1159
- key: 'bz',
1160
- width: this.theadWidth.itemname || 110
1161
- },
1162
- {
1163
- label: '状态',
1164
- field: 'pendstate',
1165
- key: 'zt',
1166
- align: 'center',
1167
- showOverflowTooltip: true,
1168
- width: this.theadWidth.pendstate || 140,
1169
- render: (h, params) => {
1170
- return h('span', {
1171
- style: {
1172
- color:
1173
- params.row.pendstate == 0 || params.row.pendstate == 3
1174
- ? 'red'
1175
- : params.row.pendstate == 1
1176
- ? 'green'
1177
- : params.row.pendstate == -1
1178
- ? 'orange'
1179
- : 'deepskyblue',
1180
- cursor: this.hasCircularReadWithdrawAuthority
1181
- ? 'pointer'
1182
- : 'unset'
1183
- },
1184
- domProps: {
1185
- innerHTML:
1186
- params.row.querykeywords +
1187
- (this.hasCircularReadWithdrawAuthority
1188
- ? `<span style="color:#7AB0D5">(撤回)</span>`
1189
- : '')
1190
- }
1191
- });
1192
- }
1193
- },
1194
- {
1195
- label: '送达时间',
1196
- field: 'createtime',
1197
- align: 'center',
1198
- key: 'sdsj',
1199
- showOverflowTooltip: true,
1200
- width: this.theadWidth.createtime || 170
1201
- },
1202
- {
1203
- label: '办理时间',
1204
- field: 'doetime',
1205
- align: 'center',
1206
- key: 'blsj',
1207
- showOverflowTooltip: true,
1208
- width: this.theadWidth.doetime || 150
1209
- },
1210
-
1211
- {
1212
- label: '附件',
1213
- key: 'fj',
1214
- field: 'hasAdjunct',
1215
- align: 'center',
1216
- showOverflowTooltip: true,
1217
- width: this.theadWidth.hasAdjunct || 70,
1218
- render: (h, params) => {
1219
- if (params.row.hasAdjunct) {
1220
- return h('span', {
1221
- style: _that.attachmentPaperClipCssStyle
1222
- ? _that.attachmentPaperClipCssStyle
1223
- : { color: 'red', fontSize: '20px' },
1224
- class: 'iconfont es-icon-fujian'
1225
- });
1226
- } else {
1227
- return h('span', {}, '');
1228
- }
1229
- }
1230
- },
1231
- {
1232
- label: '提醒',
1233
- field: 'pressTimes',
1234
- align: 'center',
1235
- key: 'tx',
1236
- showOverflowTooltip: true,
1237
- width: this.theadWidth.pressTimes || 150,
1238
- render: (h, params) => {
1239
- return h(
1240
- 'span',
1241
- { style: 'color:deepskyblue;cursor: pointer;' },
1242
- params.row.pressTimes
1243
- );
1244
- }
1245
- },
1246
- {
1247
- label: '阅结意见 & 说明',
1248
- field: 'doresult',
1249
- align: 'center',
1250
- width: this.theadWidth.doresult,
1251
- showOverflowTooltip: true,
1252
- key: 'blyj',
1253
- render: (h, params) => {
1254
- if (
1255
- params.row.doresult &&
1256
- (params.row.doresult.startsWith('http') ||
1257
- params.row.doresult.startsWith('https'))
1258
- ) {
1259
- return h('img', {
1260
- attrs: { src: params.row.doresult },
1261
- style: { width: '100px', height: '100px' }
1262
- });
1263
- } else {
1264
- return h('span', {}, [
1265
- params.row.doresult
1266
- ? params.row.doresult + (params.row.handleInfo ? '&' : '')
1267
- : '',
1268
- h(
1269
- 'span',
1270
- { style: { color: '#A5A5A5', marginLeft: '2px' } },
1271
- params.row.handleInfo || ''
1272
- )
1273
- ]);
1274
- }
1275
- }
1276
- }
1277
- ],
1278
- untreatedRead: [
1279
- {
1280
- label: '步骤',
1281
- field: 'itemid',
1282
- align: 'center',
1283
- key: 'bz',
1284
- showOverflowTooltip: true,
1285
- width: this.theadWidth.itemid || 110
1286
- },
1287
- {
1288
- label: '办理人',
1289
- field: 'userName',
1290
- align: 'center',
1291
- key: 'blr',
1292
- showOverflowTooltip: true,
1293
- width: this.theadWidth.userName
1294
- },
1295
- {
1296
- label: '办理状态',
1297
- field: 'pendstate',
1298
- key: 'blzt',
1299
- align: 'center',
1300
- showOverflowTooltip: true,
1301
- width: this.theadWidth.pendstate || 110,
1302
- render: (h, params) => {
1303
- return h('span', {
1304
- style: {
1305
- color:
1306
- params.row.pendstate == 0 || params.row.pendstate == 3
1307
- ? 'red'
1308
- : params.row.pendstate == 1
1309
- ? 'green'
1310
- : 'deepskyblue'
1311
- },
1312
- domProps: { innerHTML: params.row.querykeywords }
1313
- });
1314
- }
1315
- },
1316
- {
1317
- label: '创建时间',
1318
- field: 'createtime',
1319
- align: 'center',
1320
- key: 'cjsj',
1321
- showOverflowTooltip: true,
1322
- width: this.theadWidth.createtime || 150,
1323
- render: (h, params) => {
1324
- return h(
1325
- 'span',
1326
- {},
1327
- params.row.doetime
1328
- ? util.formatDate(params.row.createtime, 'yyyy-MM-dd HH:mm')
1329
- : ''
1330
- );
1331
- }
1332
- }
1333
- ],
1334
- processedRead: [
1335
- {
1336
- label: '步骤',
1337
- field: 'itemid',
1338
- align: 'center',
1339
- key: 'bz',
1340
- showOverflowTooltip: true,
1341
- width: this.theadWidth.itemid || 110
1342
- },
1343
- {
1344
- label: '办理人',
1345
- field: 'userName',
1346
- align: 'center',
1347
- key: 'blr',
1348
- showOverflowTooltip: true,
1349
- width: this.theadWidth.userName
1350
- },
1351
- {
1352
- label: '办理状态',
1353
- field: 'pendstate',
1354
- key: 'blzt',
1355
- align: 'center',
1356
- showOverflowTooltip: true,
1357
- width: this.theadWidth.pendstate || 110,
1358
- render: (h, params) => {
1359
- return h('span', {
1360
- style: {
1361
- color:
1362
- params.row.pendstate == 0 || params.row.pendstate == 3
1363
- ? 'red'
1364
- : params.row.pendstate == 1
1365
- ? 'green'
1366
- : 'deepskyblue'
1367
- },
1368
- domProps: { innerHTML: params.row.querykeywords }
1369
- });
1370
- }
1371
- },
1372
- {
1373
- label: '办理时间',
1374
- field: 'doetime',
1375
- align: 'center',
1376
- key: 'blsj',
1377
- showOverflowTooltip: true,
1378
- width: this.theadWidth.doetime || 150,
1379
- render: (h, params) => {
1380
- return h(
1381
- 'span',
1382
- {},
1383
- params.row.doetime
1384
- ? util.formatDate(params.row.doetime, 'yyyy-MM-dd HH:mm')
1385
- : ''
1386
- );
1387
- }
1388
- },
1389
- {
1390
- label: '代办人',
1391
- field: 'douserid',
1392
- align: 'center',
1393
- key: 'dbr',
1394
- showOverflowTooltip: true,
1395
- width: this.theadWidth.douserid
1396
- },
1397
- {
1398
- label: '意见',
1399
- field: 'doresult',
1400
- align: 'center',
1401
- key: 'yj',
1402
- showOverflowTooltip: true,
1403
- width: this.theadWidth.doresult
1404
- }
1405
- ]
1406
- };
1407
- if (this.numbers) {
1408
- for (let key in newThead) {
1409
- newThead[key].unshift({
1410
- label: '序号',
1411
- field: 'sort',
1412
- align: 'center',
1413
- key: 'xh',
1414
- showOverflowTooltip: true,
1415
- width: 50
1416
- });
1417
- }
1418
- }
1419
- return newThead;
1420
- },
1421
- content() {
1422
- const _that = this;
1423
- let newContents = JSON.parse(JSON.stringify(this.contents));
1424
- if (this.contents.indexOf('circular') != -1) {
1425
- newContents = newContents.filter((item) => item != 'splitReading');
1426
- }
1427
- if (newContents.indexOf('readingSituation') != -1) {
1428
- newContents = ['untreatedRead', 'processedRead'];
1429
- }
1430
- let contents = newContents.map((item) => {
1431
- if (typeof item === 'string') {
1432
- let data = [];
1433
- if (_that.headFields.length > 0) {
1434
- _that.headFields.map((headFiled) => {
1435
- if (headFiled.showDefault) {
1436
- _that.theads[item].map((theadItem) => {
1437
- if (theadItem.field === headFiled.field) {
1438
- data.push({ ...theadItem, ...headFiled });
1439
- }
1440
- });
1441
- } else {
1442
- data.push(headFiled);
1443
- }
1444
- });
1445
- _that.theads[item].map((x) => {
1446
- if (x.type == 'handle') {
1447
- data.push(x);
1448
- }
1449
- });
1450
- }
1451
- return {
1452
- type: item,
1453
- checkbox: newContents.indexOf('untreatedRead') != -1,
1454
- toolbar: this.toolbars[item],
1455
- thead: data.length > 0 ? data : this.theads[item],
1456
- showFormBtn: false
1457
- };
1458
- } else {
1459
- if (!Object.prototype.hasOwnProperty.call(item, 'toolbar')) {
1460
- let toolbars = this.toolbars[item.type];
1461
- return { ...item, toolbars };
1462
- }
1463
- if (!Object.prototype.hasOwnProperty.call(item, 'thead')) {
1464
- let thead = this.theads[item.type];
1465
- return { ...item, thead };
1466
- }
1467
- return item;
1468
- }
1469
- });
1470
- return contents;
1471
- },
1472
- newToolbar() {
1473
- if (this.toolbar && this.toolbar.length > 0) {
1474
- return this.toolbar;
1475
- } else {
1476
- return [];
1477
- }
1478
- },
1479
- thead() {
1480
- let table = [
1481
- {
1482
- title: '步骤',
1483
- align: 'center',
1484
- width: this.theadWidth.nodeName || '100',
1485
- field: 'nodeName'
1486
- },
1487
- {
1488
- title: '预设办理人',
1489
- width: this.theadWidth.presetUserName || '120',
1490
- align: 'center',
1491
- field: 'presetUserName'
1492
- },
1493
- {
1494
- title: '是否可编辑',
1495
- key: 'sfkbj',
1496
- align: 'center',
1497
- width: this.theadWidth.isEdit || '100',
1498
- render: (h, params) => {
1499
- return h('span', this.getCodeValue(params.row.isEdit, 'is_edit'));
1500
- },
1501
- field: 'isEdit'
1502
- },
1503
- {
1504
- key: 'zt',
1505
- title: '状态',
1506
- width: this.theadWidth.statusName || '80',
1507
- align: 'center',
1508
- field: 'statusName'
1509
- },
1510
- {
1511
- title: '预设类型',
1512
- key: 'yslx',
1513
- width: this.theadWidth.presetType || '120',
1514
- align: 'center',
1515
- render: (h, params) => {
1516
- return h(
1517
- 'span',
1518
- this.getCodeValue(params.row.presetType, 'preset_type')
1519
- );
1520
- },
1521
- field: 'presetType'
1522
- },
1523
- {
1524
- title: '流程名称',
1525
- key: 'lcmc',
1526
- width: this.theadWidth.processDefName,
1527
- align: 'center',
1528
- field: 'processDefName'
1529
- },
1530
- {
1531
- title: '上一步骤',
1532
- key: 'sybz',
1533
- align: 'center',
1534
- width: this.theadWidth.lastNodeName,
1535
- field: 'lastNodeName'
1536
- },
1537
- {
1538
- title: '创建步骤',
1539
- key: 'cjbz',
1540
- align: 'center',
1541
- width: this.theadWidth.operationNodeName,
1542
- field: 'operationNodeName'
1543
- },
1544
- {
1545
- title: '创建人',
1546
- key: 'cjr',
1547
- width: this.theadWidth.creatorName || '120',
1548
- align: 'center',
1549
- field: 'creatorName'
1550
- },
1551
- {
1552
- title: '创建时间',
1553
- width: this.theadWidth.createTime || '150',
1554
- key: 'cjsj',
1555
- align: 'center',
1556
- render: (h, params) => {
1557
- return h(
1558
- 'span',
1559
- util.formatDate(params.row.createTime, 'yyyy-MM-dd HH:mm')
1560
- );
1561
- },
1562
- field: 'createTime'
1563
- },
1564
- {
1565
- title: '操作区域',
1566
- type: 'handle',
1567
- align: 'center',
1568
- width: '120',
1569
- events: [
1570
- {
1571
- text: '置为失效'
1572
- }
1573
- ]
1574
- }
1575
- ];
1576
- if (
1577
- this.presetInfoListHiddenColumns != undefined &&
1578
- this.presetInfoListHiddenColumns != ''
1579
- ) {
1580
- table = table.filter(
1581
- (items) => this.presetInfoListHiddenColumns.indexOf(items.key) == -1
1582
- );
1583
- }
1584
- if (!this.canDelete) table.splice(table.length - 1, 1);
1585
- return table;
1586
- }
1587
- },
1588
- async mounted() {
1589
- this.loading = util.loading(this.$loading, '加载中...');
1590
- if (this.contents.indexOf('readingSituation') != -1) {
1591
- await this.getFyListJson(1);
1592
- await this.getFyListJson(2);
1593
- this.getListCount(this.flowListCount);
1594
- this.show = true;
1595
- } else {
1596
- this.getFlowList();
1597
- }
1598
- this.getSysInfo('preset_type');
1599
- this.getSysInfo('is_edit');
1600
- this.getListInfo();
1601
- },
1602
-
1603
- methods: {
1604
- /**
1605
- * handleBatchDelete
1606
- * @desc:批量删除
1607
- * @author liufan
1608
- * @date 2025年12月31日
1609
- **/
1610
- handleBatchDelete(){
1611
- if(this.batchDeleteSelectList.length == 0){
1612
- this.$message.error('请选择需要删除的流程历史数据!');
1613
- return;
1614
- }
1615
- if(!this.batchdeletereason){
1616
- this.$message.error('请输入批量删除的原因!');
1617
- return;
1618
- }
1619
- let ids = this.batchDeleteSelectList.map(item => item.id).join(',');
1620
- let params = {
1621
- url:batchDelete,
1622
- method: 'POST',
1623
- data: { ids,reason:this.batchdeletereason }
1624
- };
1625
- this.$confirm('您确定要批量删除勾选上的流程历史数据吗?', {
1626
- confirmButtonText: '确定',
1627
- cancelButtonText: '取消',
1628
- type: 'warning'
1629
- })
1630
- .then(() => {
1631
- this.loading = util.loading(this.$loading, '批量删除中...');
1632
- util
1633
- .ajax(params)
1634
- .then((res) => {
1635
- this.loading.close();
1636
- if (res.rCode == 0 || res.status == 'success') {
1637
- this.flowData = this.flowData.filter(item => ids.indexOf(item.id) == -1);
1638
- this.batchdeleteTableList = this.flowData.filter((x) => x.pendstate == 2)
1639
- this.batchdeletereason='';
1640
- this.show = false
1641
- setTimeout(() => {
1642
- this.show = true;
1643
- }, 0);
1644
- this.$message({
1645
- message: '删除成功',
1646
- type: 'success'
1647
- });
1648
- }else{
1649
- this.$message.error(res.message);
1650
- }
1651
- })
1652
- .catch((err) => {
1653
- this.loading.close();
1654
- if (err.message && err.message !== 'canceled') {
1655
- this.$message.error(err.message);
1656
- }
1657
- }); }).catch(() => {});
1658
-
1659
-
1660
- },
1661
- handleBtnShowClick(val) {
1662
- const { handle, row } = val;
1663
- if (handle.text == '恢复') {
1664
- let params = {
1665
- url: restoredHistory,
1666
- params: {
1667
- id: row.id
1668
- }
1669
- };
1670
- this.$confirm('您确定要恢复这条办理历史吗?', {
1671
- confirmButtonText: '确定',
1672
- cancelButtonText: '取消',
1673
- type: 'warning'
1674
- })
1675
- .then(() => {
1676
- this.loading = util.loading(this.$loading, '恢复中...');
1677
- util.ajax(params).then((res) => {
1678
- this.loading.close();
1679
- if (res.rCode == 0 || res.status == 'success') {
1680
- this.getDeletList();
1681
- this.getFlowList();
1682
- this.$message({
1683
- message: '恢复成功',
1684
- type: 'success'
1685
- });
1686
- }
1687
- });
1688
- // _that.subMit(res.results,type)
1689
- })
1690
- .catch(() => {});
1691
- }
1692
- },
1693
- recallReadFun() {
1694
- const _that = this;
1695
- let pendingIds = _that.selectList.map((x) => x.id).join(',');
1696
- let params = {
1697
- url: taskReadWithDraw,
1698
- params: {
1699
- pendingIds
1700
- }
1701
- };
1702
- _that.loading = util.loading(_that.$loading, '撤销中...');
1703
- util.ajax(params).then(async (res) => {
1704
- _that.loading.close();
1705
- if (res.rCode == 0 || res.status == 'success') {
1706
- _that.$message.success('撤销成功!');
1707
- await _that.getFyListJson(1);
1708
- _that.getListCount(_that.flowListCount);
1709
- } else {
1710
- _that.$message.error(res.message);
1711
- }
1712
- });
1713
- },
1714
- recallRead() {
1715
- if (this.selectList.length == 0)
1716
- return this.$message.warning('请选择需要撤销的分阅');
1717
- this.$confirm('是否确认撤销选中的分阅?', '提示', {
1718
- confirmButtonText: '确定',
1719
- cancelButtonText: '取消',
1720
- type: 'warning'
1721
- }).then(() => {
1722
- this.recallReadFun();
1723
- });
1724
- },
1725
- handleSelectionChange(val,type) {
1726
- if(type == 'batchDelete'){
1727
- this.batchDeleteSelectList = val
1728
- }else{
1729
- this.selectList = val;
1730
- }
1731
- },
1732
- handledraw(pendedHistoryId) {
1733
- let params = {
1734
- url: circularReadWithdraw,
1735
- params: { pendedHistoryId }
1736
- };
1737
- this.$confirm('是否确定撤回当前传阅', {
1738
- confirmButtonText: '确定',
1739
- cancelButtonText: '取消',
1740
- type: 'warning'
1741
- })
1742
- .then(() => {
1743
- this.loading = util.loading(this.$loading, '撤回中...');
1744
- util.ajax(params).then((res) => {
1745
- this.loading.close();
1746
- if (res.rCode == 0) {
1747
- this.$message({
1748
- message: '撤回成功',
1749
- type: 'success'
1750
- });
1751
- this.getCircularReadList();
1752
- }
1753
- });
1754
- // _that.subMit(res.results,type)
1755
- })
1756
- .catch(() => {});
1757
- },
1758
- getCircularReadList() {
1759
- const _that = this;
1760
- let params = {
1761
- url: pendedhistoryListWithCircularReadJson,
1762
- params: { apprecordid: _that.businessId }
1763
- };
1764
- util.ajax(params).then((res) => {
1765
- if (res.status == 'success' || res.rCode == 0) {
1766
- _that.circularData = res.data.fyHistoryList;
1767
- _that.circularData.map((x, i) => {
1768
- x.sort = i + 1;
1769
- });
1770
- _that.hasCircularReadWithdrawAuthority =
1771
- res.data.hasCircularReadWithdrawAuthority;
1772
- _that.$nextTick(() => {
1773
- _that.getListCount(_that.flowListCount);
1774
- });
1775
- }
1776
- });
1777
- },
1778
- returnData(type) {
1779
- switch (type) {
1780
- case 'preset':
1781
- this.flowListCount.preset = this.presetData.length;
1782
- this.flowListCount.presetData = this.presetData;
1783
- return this.presetData;
1784
- case 'sign':
1785
- this.flowListCount.sign = this.signData.length;
1786
- this.flowListCount.signData = this.signData;
1787
- return this.signData;
1788
- case 'splitReading':
1789
- this.flowListCount.splitReading = this.splitReadingData.length;
1790
- this.flowListCount.splitReadingData = this.splitReadingData;
1791
- return this.splitReadingData;
1792
- case 'circular':
1793
- this.flowListCount.circular = this.circularData.length;
1794
- this.flowListCount.circularData = this.circularData;
1795
- return this.circularData;
1796
- case 'untreatedRead':
1797
- this.flowListCount.untreatedRead = this.untreatedReadData.length;
1798
- this.flowListCount.untreatedReadData = this.untreatedReadData;
1799
- return this.untreatedReadData;
1800
- case 'processedRead':
1801
- this.flowListCount.processedRead = this.processedReadData.length;
1802
- this.flowListCount.processedReadData = this.processedReadData;
1803
- return this.processedReadData;
1804
- default:
1805
- this.flowListCount.flow = this.flowData.length;
1806
- this.flowListCount.flowData = this.flowData;
1807
- return this.flowData;
1808
- }
1809
- },
1810
- handleCellClick(row, column) {
1811
- if (column.property == 'hasAdjunct' && row.hasAdjunct) {
1812
- this.showFile(row.wfpendingid);
1813
- } else if (column.property == 'pressTimes') {
1814
- if (row.pressTimes != 0) {
1815
- this.goPress(row.id);
1816
- }
1817
- } else if (
1818
- column.property == 'pendstate' &&
1819
- this.hasCircularReadWithdrawAuthority
1820
- ) {
1821
- this.handledraw(row.id);
1822
- }
1823
- },
1824
- handleBtnClick(data) {
1825
- // recallRead
1826
- const { handle, row } = data;
1827
- if (handle.text == '删除' || handle.text == '修改') {
1828
- this.formData.reason = handle.text == '修改' ? row.doresult : '';
1829
- this.del(row.id, handle.text == '删除' ? 'del' : 'modify');
1830
- } else if (handle.fun == 'recallRead') {
1831
- this[handle.fun]();
1832
- }else if(handle.text == '置为失效'){
1833
- if (row.status == 0) {
1834
- this.$confirm('您确定要置为失效吗?')
1835
- .then(() => {
1836
- this.loading = util.loading(this.$loading, '提交中...');
1837
- let param = {
1838
- url: deletePresetInfo,
1839
- headers: { Accept: 'application/json,text/plain' },
1840
- method: 'post',
1841
- data: { id:row.id }
1842
- };
1843
- util
1844
- .ajax(param)
1845
- .then((res) => {
1846
- const { status, message } = res;
1847
- this.loading.close();
1848
- if (status === 'success') {
1849
- this.$message.success('操作成功');
1850
- this.getListInfo();
1851
- } else {
1852
- this.$message.error(message || '系统错误,请联系管理员!');
1853
- }
1854
- })
1855
- .catch((err) => {
1856
- this.loading.close();
1857
- if (err.message && err.message !== 'canceled') {
1858
- this.$message.error(err.message);
1859
- }
1860
- });
1861
- })
1862
- .catch((e) => {
1863
- // on cancel
1864
- });
1865
- } else {
1866
- this.$message.warning('当前数据已为失效状态');
1867
- }
1868
- }
1869
- },
1870
- /**
1871
- * handleFormSubmit
1872
- * @desc:删除节点点击事件
1873
- * @param {Object} formData 点击删除的form数据
1874
- * @author liufan
1875
- * @date 2022年11月29日
1876
- **/
1877
- handleFormSubmit(formData) {
1878
- this.delLoading = true;
1879
- let params = {
1880
- url: this.modalType == 'del' ? deleteFlow : modifyFlow,
1881
- method: 'POST',
1882
- data: { id: this.historyId, reason: formData.reason }
1883
- };
1884
- if (this.modalType != 'del') {
1885
- delete params.data.reason;
1886
- params.data.doResult = formData.reason;
1887
- params.data.doresult = formData.reason;
1888
- }
1889
- util
1890
- .ajax(params)
1891
- .then((res) => {
1892
- const { status, message } = res;
1893
- this.delLoading = false;
1894
- if (status === 'success') {
1895
- this.$message.success(
1896
- `${this.modalType == 'del' ? '删除' : '修改'}成功`
1897
- );
1898
- this.showDel = false;
1899
- this.handleChange();
1900
- } else {
1901
- this.$message.error(message || '系统错误,请联系管理员!');
1902
- }
1903
- })
1904
- .catch((err) => {
1905
- this.delLoading = false;
1906
- if (err.message && err.message !== 'canceled') {
1907
- this.$message.error(err.message);
1908
- }
1909
- });
1910
- },
1911
- /**
1912
- * del
1913
- * @desc:展示删除弹窗
1914
- * @param {String} id 当前点击数据id
1915
- * @author liufan
1916
- * @date 2022年11月29日
1917
- **/
1918
- del(id, type) {
1919
- this.modalType = type;
1920
- this.historyId = id;
1921
- this.showDel = true;
1922
- },
1923
- /**
1924
- * handleCurrentChange
1925
- * @desc:监听页码变化
1926
- * @param {String} val 当前页
1927
- * @author liufan
1928
- * @date 2022年11月29日
1929
- **/
1930
- handleCurrentChange(val, type) {
1931
- this.currentPage = val;
1932
- if (type == 'press') {
1933
- this.getPressList();
1934
- }
1935
- },
1936
- /**
1937
- * handleSizeChange
1938
- * @desc:监听每页数据显示数量变化
1939
- * @param {String} val 每页展示数量
1940
- * @author liufan
1941
- * @date 2022年11月29日
1942
- **/
1943
- handleSizeChange(val) {
1944
- this.pageSize = val;
1945
- if (type == 'press') {
1946
- this.getPressList();
1947
- }
1948
- },
1949
- /**
1950
- * sortChange
1951
- * @desc:监听排序变化
1952
- * @param {Object} info 需要排序的字段及排序方式
1953
- * @author liufan
1954
- * @date 2022年11月29日
1955
- **/
1956
- sortChange(info, type) {
1957
- let { prop } = info;
1958
- this.sidx = prop;
1959
- this.sord = this.sord == 'asc' ? 'desc' : 'asc';
1960
- if (type == 'press') {
1961
- this.getPressList();
1962
- } else if (type == 'reset') {
1963
- this.getResetList();
1964
- } else if (type == 'delete') {
1965
- this.getDeletList();
1966
- }
1967
- },
1968
- /**
1969
- * getDeletList
1970
- * @desc:删除列表数据
1971
- * @author liufan
1972
- * @date 2025年12月30日
1973
- **/
1974
- getDeletList() {
1975
- const { pageSize, sidx, sord, currentPage, businessId } = this;
1976
- this.deleteLoading = true;
1977
- let params = {
1978
- url: deletedListJson + '?apprecordId=' + businessId,
1979
- method: 'POST',
1980
- data: { page: currentPage, rows: pageSize, sidx, sord }
1981
- };
1982
- util
1983
- .ajax(params)
1984
- .then((res) => {
1985
- this.deleteTableList = res.data;
1986
- this.total = res.totalrecords;
1987
- this.deleteLoading = false;
1988
- })
1989
- .catch((err) => {
1990
- this.deleteLoading = false;
1991
- if (err.message && err.message !== 'canceled') {
1992
- this.$message.error(err.message);
1993
- }
1994
- });
1995
- },
1996
- /**
1997
- * getResetList
1998
- * @desc:重设列表数据
1999
- * @author liufan
2000
- * @date 2025年12月30日
2001
- **/
2002
- getResetList() {
2003
- const { pageSize, sidx, sord, currentPage, businessId } = this;
2004
- this.resetLoading = true;
2005
- let params = {
2006
- url: resetJson + '?appRecordId=' + businessId,
2007
- params: { appRecordId: businessId },
2008
- method: 'POST',
2009
- data: { page: currentPage, rows: pageSize, sidx, sord }
2010
- };
2011
- util
2012
- .ajax(params)
2013
- .then((res) => {
2014
- this.resetTableList = res.data;
2015
- this.total = res.totalrecords;
2016
- this.resetLoading = false;
2017
- })
2018
- .catch((err) => {
2019
- this.resetLoading = false;
2020
- if (err.message && err.message !== 'canceled') {
2021
- this.$message.error(err.message);
2022
- }
2023
- });
2024
- },
2025
- /**
2026
- * getPressList
2027
- * @desc:催办列表数据
2028
- * @author liufan
2029
- * @date 2022年11月29日
2030
- **/
2031
- getPressList() {
2032
- const { historyId, pageSize, sidx, sord, currentPage } = this;
2033
- this.pressLoading = true;
2034
- let params = {
2035
- url: pressListJson,
2036
- params: { historyId },
2037
- method: 'POST',
2038
- data: { page: currentPage, rows: pageSize, sidx, sord, historyId }
2039
- };
2040
- util
2041
- .ajax(params)
2042
- .then((res) => {
2043
- this.pressTableList = res.data;
2044
- this.total = res.totalrecords;
2045
- this.pressLoading = false;
2046
- })
2047
- .catch((err) => {
2048
- this.pressLoading = false;
2049
- if (err.message && err.message !== 'canceled') {
2050
- this.$message.error(err.message);
2051
- }
2052
- });
2053
- },
2054
- /**
2055
- * goPress
2056
- * @desc:催办列表查看
2057
- * @param {String} id 催办列表id
2058
- * @author liufan
2059
- * @date 2022年11月29日
2060
- **/
2061
- goPress(id) {
2062
- this.historyId = id;
2063
- this.showPress = true;
2064
- this.getPressList();
2065
- },
2066
- /**
2067
- * showFile
2068
- * @desc:附件查看
2069
- * @param {String} ownId 附件id
2070
- * @author liufan
2071
- * @date 2022年11月29日
2072
- **/
2073
- showFile(ownId) {
2074
- this.wfpendingid = ownId;
2075
- this.showFileList = true;
2076
- },
2077
- /**
2078
- * handleChange
2079
- * @desc:切换排序方式
2080
- * @author liufan
2081
- * @date 2022年11月22日
2082
- **/
2083
- handleChange(key, value) {
2084
- if (value) {
2085
- this[key] = value;
2086
- }
2087
- // this.show = false;
2088
- this.loading = util.loading(this.$loading, '加载中...');
2089
- this.getFlowList();
2090
- },
2091
- async getFyListJson(type) {
2092
- let params = {
2093
- url: fyListJson,
2094
- params: {
2095
- appRecordId: this.businessId,
2096
- status: type
2097
- }
2098
- };
2099
- await util.ajax(params).then((res) => {
2100
- if (type == 1) {
2101
- this.untreatedReadData = res.data;
2102
- this.untreatedReadData.map((x, i) => {
2103
- x.sort = i + 1;
2104
- });
2105
- } else {
2106
- this.processedReadData = res.data;
2107
- this.processedReadData.map((x, i) => {
2108
- x.sort = i + 1;
2109
- });
2110
- }
2111
- });
2112
- },
2113
- /**
2114
- * getFlowList
2115
- * @desc:获取流程列表
2116
- * @author liufan
2117
- * @date 2022年11月22日
2118
- **/
2119
- getFlowList(type) {
2120
- let params = {
2121
- url: pendedhistoryListJson,
2122
- params: {
2123
- apprecordid: this.businessId,
2124
- pendingAttr: 0,
2125
- viewType: type || this.viewType,
2126
- showSuggest: this.showSuggest,
2127
- ...this.params
2128
- }
2129
- };
2130
- util
2131
- .ajax(params)
2132
- .then((res) => {
2133
- let {
2134
- status,
2135
- message,
2136
- data: {
2137
- adjunctCode,
2138
- wfHistoryList,
2139
- fyHistoryList,
2140
- hasAgent,
2141
- isShort,
2142
- modify,
2143
- canDelete,
2144
- canBatchDelete,
2145
- isSuperRole,
2146
- isShowReset,
2147
- taskReadName
2148
- }
2149
- } = res;
2150
- this.loading.close();
2151
- if (status == 'success') {
2152
- this.flowTableInfo.adjunctCode = adjunctCode;
2153
- this.flowTableInfo.hasAgent = hasAgent;
2154
- this.attachmentPaperClipCssStyle =
2155
- res.data.attachmentPaperClipCssStyle;
2156
- this.isShort = isShort;
2157
- this.taskReadName = taskReadName;
2158
- this.flowData = wfHistoryList;
2159
- this.flowData.map((x, i) => {
2160
- x.sort = i + 1;
2161
- if (!x.deptid) {
2162
- x.deptid = x.deptName;
2163
- }
2164
- });
2165
- this.splitReadingData = fyHistoryList;
2166
- this.splitReadingData.map((x, i) => {
2167
- x.sort = i + 1;
2168
- });
2169
- this.modify = modify;
2170
- this.canDelete = canDelete;
2171
- this.canBatchDelete = canBatchDelete;
2172
- this.isSuperRole = isSuperRole;
2173
- this.isShowReset = isShowReset;
2174
- this.show = true;
2175
- if (this.height == 'auto') {
2176
- this.$nextTick(() => {
2177
- this.content.map((x) => {
2178
- this[`${x.type}Height`] = this.$refs[x.type][0].offsetHeight;
2179
- });
2180
- });
2181
- }
2182
- if (this.contents.indexOf('circular') != -1) {
2183
- this.getCircularReadList();
2184
- } else {
2185
- this.$nextTick(() => {
2186
- this.getListCount(this.flowListCount);
2187
- });
2188
- }
2189
- } else {
2190
- this.$message.error(message || '系统错误,请联系管理员!');
2191
- }
2192
- })
2193
- .catch((err) => {
2194
- this.loading.close();
2195
- if (err.message && err.message !== 'canceled') {
2196
- this.$message.error(err.message);
2197
- }
2198
- this.show = true;
2199
- });
2200
- },
2201
- /**
2202
- * handleClick
2203
- * @desc:表单点击事件
2204
- * @param {Object} val 当前点击行数据及按钮
2205
- * @author liufan
2206
- * @date 2022年11月10日
2207
- **/
2208
- handleClick(val) {
2209
- const {
2210
- handle: { text },
2211
- row: { id, status }
2212
- } = val;
2213
- if (text === '置为失效') {
2214
- if (status == 0) {
2215
- this.$confirm('您确定要置为失效吗?')
2216
- .then(() => {
2217
- this.loading = util.loading(this.$loading, '提交中...');
2218
- let param = {
2219
- url: deletePresetInfo,
2220
- headers: { Accept: 'application/json,text/plain' },
2221
- method: 'post',
2222
- params: { id }
2223
- };
2224
- util
2225
- .ajax(param)
2226
- .then((res) => {
2227
- const { status, message } = res;
2228
- this.loading.close();
2229
- if (status === 'success') {
2230
- this.$message.success('操作成功');
2231
- this.getListInfo();
2232
- } else {
2233
- this.$message.error(message || '系统错误,请联系管理员!');
2234
- }
2235
- })
2236
- .catch((err) => {
2237
- this.loading.close();
2238
- if (err.message && err.message !== 'canceled') {
2239
- this.$message.error(err.message);
2240
- }
2241
- });
2242
- })
2243
- .catch((e) => {
2244
- // on cancel
2245
- });
2246
- } else {
2247
- this.$message.warning('当前数据已为失效状态');
2248
- }
2249
- }
2250
- },
2251
- /**
2252
- * getCodeValue
2253
- * @desc:获取代码表过滤后的值
2254
- * @param {String} value 展示数据的代码值
2255
- * @param {String} type 代码表类型
2256
- * @author liufan
2257
- * @date 2022年11月10日
2258
- **/
2259
- getCodeValue(value, type) {
2260
- let val = this[type].filter((item) => item.cciValue == value);
2261
- return val[0].shortName;
2262
- },
2263
- /**
2264
- * getSysInfo
2265
- * @desc:获取代码表
2266
- * @param {String} code 编码code值
2267
- * @author liufan
2268
- * @date 2022年11月10日
2269
- **/
2270
- getSysInfo(code) {
2271
- let params = {
2272
- url: findCodeValues,
2273
- params: { ccCode: code }
2274
- };
2275
- util
2276
- .ajax(params)
2277
- .then((res) => {
2278
- const { status, message, data } = res;
2279
- if (status == 'success') {
2280
- this[code] = data;
2281
- } else {
2282
- this.$message.error(message || '系统错误,请联系管理员!');
2283
- }
2284
- })
2285
- .catch((e) => {});
2286
- },
2287
- /**
2288
- * getListInfo
2289
- * @desc:获取预设列表数据
2290
- * @author liufan
2291
- * @date 2022年11月10日
2292
- **/
2293
- getListInfo() {
2294
- let param = {
2295
- url: toPresetInfoListIndex,
2296
- params: { apprecordid: this.businessId }
2297
- };
2298
- util
2299
- .ajax(param)
2300
- .then((res) => {
2301
- let {
2302
- status,
2303
- message,
2304
- data: {
2305
- presetInfoList,
2306
- presetInfoListHiddenColumns,
2307
- canDelete,
2308
- currentUserHasPresetInfoAuth
2309
- }
2310
- } = res;
2311
- this.loading.close();
2312
- if (status == 'success') {
2313
- if (presetInfoList) {
2314
- this.presetData = presetInfoList;
2315
- this.presetData.map((x, i) => {
2316
- x.sort = i + 1;
2317
- });
2318
- }
2319
- this.presetInfoListHiddenColumns = presetInfoListHiddenColumns;
2320
- this.currentUserHasPresetInfoAuth = currentUserHasPresetInfoAuth;
2321
- this.canDelete = canDelete;
2322
- } else {
2323
- this.$message.error(message || '系统错误,请联系管理员!');
2324
- }
2325
- })
2326
- .catch((err) => {
2327
- this.loading.close();
2328
- if (err.message && err.message !== 'canceled') {
2329
- this.$message.error(err.message);
2330
- }
2331
- });
2332
- }
2333
- }
2334
- };
2335
- </script>
2336
-
2337
- <style></style>
1
+ <template>
2
+ <div class="es-flow-list">
3
+ <div
4
+ class="es-flow-list-item"
5
+ v-for="(item, index) in content"
6
+ :key="index"
7
+ v-show="
8
+ (item.type == 'splitReading' &&
9
+ splitReadingData &&
10
+ splitReadingData.length > 0) ||
11
+ (item.type == 'preset' &&
12
+ presetData &&
13
+ presetData.length > 0 &&
14
+ currentUserHasPresetInfoAuth) ||
15
+ (item.type != 'splitReading' && item.type != 'preset')
16
+ "
17
+ >
18
+ <div
19
+ class="es-flow-list-box"
20
+ :ref="item.type"
21
+ :style="`position:${height == 'auto' ? 'unset' : 'absolute'}`"
22
+ >
23
+ <es-data-table
24
+ v-if="show"
25
+ :class="{ 'es-flow-group-data-table': item.type !== 'sign' }"
26
+ :display="display"
27
+ @cell-click="handleCellClick"
28
+ :full="height !== 'auto'"
29
+ v-bind="item"
30
+ :data="
31
+ showDoresult
32
+ ? returnData(item.type).filter(
33
+ (x) => x.doresult || x.handleInfo || x.pendstate != 2
34
+ )
35
+ : returnData(item.type)
36
+ "
37
+ @btn-click="handleBtnClick"
38
+ @selection-change="handleSelectionChange"
39
+ ></es-data-table>
40
+ </div>
41
+ </div>
42
+ <es-dialog
43
+ append-to-body
44
+ :close-on-click-modal="false"
45
+ title="查看附件"
46
+ :visible.sync="showFileList"
47
+ v-if="showFileList"
48
+ >
49
+ <FileList
50
+ :ownId="wfpendingid"
51
+ :code="flowTableInfo.adjunctCode"
52
+ :deleted="false"
53
+ :disabled="true"
54
+ @cancel="showFileList = false"
55
+ />
56
+ </es-dialog>
57
+ <es-dialog
58
+ append-to-body
59
+ class="es-flow-list-dialog"
60
+ :close-on-click-modal="false"
61
+ title="流程历史批量删除"
62
+ :visible.sync="showBatchDelete"
63
+ v-if="showBatchDelete"
64
+ >
65
+ <div style="height: 100%" v-loading="batchDeleteLoading">
66
+ <es-data-table
67
+ v-if="showBatchDelete"
68
+ checkbox
69
+ :data="batchdeleteTableList"
70
+ :thead="batchdeleteThead"
71
+ numbers
72
+ full
73
+ @selection-change="handleSelectionChange($event,'batchDelete')"
74
+ style="width: 100%"
75
+ />
76
+ <div class="batch-delete-footer">
77
+ <el-input class="batch-delete-footer-input" v-model="batchdeletereason" placeholder="请输入批量删除的原因"></el-input>
78
+ <es-button type="primary" @click="handleBatchDelete">批量删除</es-button>
79
+ <es-button type="primary" @click="showBatchDelete = false">取消</es-button>
80
+ </div>
81
+ </div>
82
+ </es-dialog>
83
+ <es-dialog
84
+ append-to-body
85
+ class="es-flow-list-dialog"
86
+ :close-on-click-modal="false"
87
+ title="查看删除记录"
88
+ :visible.sync="showDelete"
89
+ v-if="showDelete"
90
+ >
91
+ <div style="height: 100%" v-loading="deleteLoading">
92
+ <es-data-table
93
+ v-if="showDelete"
94
+ :data="deleteTableList"
95
+ :thead="deleteThead"
96
+ @btn-click="handleBtnShowClick"
97
+ @page-size-change="handleSizeChange($event, 'delete')"
98
+ @page-current-change="handleCurrentChange($event, 'delete')"
99
+ numbers
100
+ full
101
+ style="width: 100%"
102
+ @sort-change="sortChange($event, 'delete')"
103
+ :page="pageInfo"
104
+ />
105
+ </div>
106
+ </es-dialog>
107
+ <es-dialog
108
+ append-to-body
109
+ class="es-flow-list-dialog"
110
+ :close-on-click-modal="false"
111
+ title="查看重设记录"
112
+ :visible.sync="showReset"
113
+ v-if="showReset"
114
+ >
115
+ <div style="height: 100%" v-loading="resetLoading">
116
+ <es-data-table
117
+ v-if="showReset"
118
+ :data="resetTableList"
119
+ :thead="resetThead"
120
+ @page-size-change="handleSizeChange($event, 'reset')"
121
+ @page-current-change="handleCurrentChange($event, 'reset')"
122
+ numbers
123
+ full
124
+ style="width: 100%"
125
+ @sort-change="sortChange($event, 'reset')"
126
+ :page="pageInfo"
127
+ />
128
+ </div>
129
+ </es-dialog>
130
+ <es-dialog
131
+ append-to-body
132
+ :close-on-click-modal="false"
133
+ title="查看催办记录"
134
+ :visible.sync="showPress"
135
+ v-if="showPress"
136
+ >
137
+ <div style="height: 100%" v-loading="pressLoading">
138
+ <es-data-table
139
+ v-if="show"
140
+ :data="pressTableList"
141
+ :thead="pressThead"
142
+ @page-size-change="handleSizeChange($event, 'press')"
143
+ @page-current-change="handleCurrentChange($event, 'press')"
144
+ stripe
145
+ full
146
+ style="width: 100%"
147
+ @sort-change="sortChange($event, 'press')"
148
+ :page="pageInfo"
149
+ />
150
+ </div>
151
+ </es-dialog>
152
+ <es-dialog
153
+ append-to-body
154
+ :close-on-click-modal="false"
155
+ :title="modalType == 'del' ? '删除' : '修改意见'"
156
+ :visible.sync="showDel"
157
+ height="auto"
158
+ class="del-flow"
159
+ v-if="showDel"
160
+ >
161
+ <es-form
162
+ v-loading="delLoading"
163
+ :model="formData"
164
+ :contents="formItemList"
165
+ @submit="handleFormSubmit"
166
+ >
167
+ </es-form>
168
+ </es-dialog>
169
+ </div>
170
+ </template>
171
+
172
+ <script>
173
+ import {
174
+ findCodeValues,
175
+ deletePresetInfo,
176
+ pendedhistoryListJson,
177
+ toPresetInfoListIndex,
178
+ pressListJson,
179
+ pendedhistoryListWithCircularReadJson,
180
+ deleteFlow,
181
+ taskReadWithDraw,
182
+ fyListJson,
183
+ circularReadWithdraw,
184
+ resetJson,
185
+ deletedListJson,
186
+ restoredHistory,
187
+ batchDelete,
188
+ modifyFlow
189
+ } from 'eoss-ui/src/config/api';
190
+ import FileList from '../../flow/src/component/FileList.vue';
191
+ import util from 'eoss-ui/src/utils/util';
192
+ export default {
193
+ name: 'EsFlowList',
194
+ components: {
195
+ [FileList.name]: FileList
196
+ },
197
+ props: {
198
+ businessId: {
199
+ type: String,
200
+ default: ''
201
+ },
202
+ getListCount: {
203
+ type: Function,
204
+ default: () => {}
205
+ },
206
+ flowViewType: {
207
+ type: [Number, String],
208
+ default: 0
209
+ },
210
+ hide: {
211
+ type: String,
212
+ default: ''
213
+ },
214
+ hideBtn: {
215
+ type: Boolean,
216
+ default: false
217
+ },
218
+ params: {
219
+ type: Object,
220
+ default: () => {
221
+ return {};
222
+ }
223
+ },
224
+ toolbar: {
225
+ type: Array,
226
+ default: () => []
227
+ },
228
+ headFields: {
229
+ type: Array,
230
+ default: () => []
231
+ },
232
+ contents: {
233
+ type: Array,
234
+ default() {
235
+ return ['flow', 'splitReading', 'preset'];
236
+ }
237
+ },
238
+ numbers: {
239
+ type: Boolean,
240
+ default: false
241
+ },
242
+ height: {
243
+ type: String,
244
+ default: ''
245
+ },
246
+ showDoresult: {
247
+ type: Boolean,
248
+ default: false
249
+ },
250
+ theadWidth: {
251
+ type: Object,
252
+ default: () => {
253
+ return {};
254
+ }
255
+ },
256
+ type: {
257
+ type: String,
258
+ default: ''
259
+ },
260
+ display: Boolean
261
+ },
262
+ inheritAttrs: false,
263
+ data() {
264
+ return {
265
+ pressLoading: false,
266
+ pressTableList: [],
267
+ circularData: [],
268
+ selectList: [],
269
+ batchDeleteSelectList:[],
270
+ flowHeight: '',
271
+ presetHeight: '',
272
+ signHeight: '',
273
+ splitReadingHeight: '',
274
+ circularHeight: '',
275
+ untreatedReadHeight: '',
276
+ processedReadHeight: '',
277
+ untreatedReadData: [],
278
+ processedReadData: [],
279
+ hasCircularReadWithdrawAuthority: false,
280
+ currentPage: 1,
281
+ pageSize: 20,
282
+ flowListCount: {},
283
+ currentUserHasPresetInfoAuth: false,
284
+ pressThead: [
285
+ {
286
+ title: '催办节点',
287
+ align: 'center',
288
+ sortable: true,
289
+ field: 'urge_item'
290
+ },
291
+ {
292
+ title: '催办人名称',
293
+ sortable: true,
294
+ align: 'center',
295
+ field: 'urge_man_name'
296
+ },
297
+ {
298
+ title: '催办时间',
299
+ sortable: true,
300
+ align: 'center',
301
+ field: 'urge_time'
302
+ },
303
+ {
304
+ title: '被催办人名称',
305
+ align: 'center',
306
+ sortable: true,
307
+ field: 'urged_man_name'
308
+ }
309
+ ],
310
+ wfpendingid: '',
311
+ showFileList: false,
312
+ flowData: [],
313
+ splitReadingData: [],
314
+ presetData: [],
315
+ signData: [],
316
+ loading: '', //加载中
317
+ preset_type: [], //预设类型
318
+ showPress: false, //查看催办记录弹窗
319
+ showDelete: false, //删除记录弹窗
320
+ showBatchDelete: false,
321
+ deleteLoading: false,
322
+ batchDeleteLoading: false,
323
+ deleteTableList: [],
324
+ batchdeleteTableList: [],
325
+ batchdeletereason:'',
326
+ batchdeleteThead: [
327
+ {
328
+ title: '步骤',
329
+ align: 'center',
330
+ // sortable: true,
331
+ showOverflowTooltip: true,
332
+ field: 'itemname'
333
+ },
334
+ {
335
+ title: '办理人',
336
+ align: 'center',
337
+ showOverflowTooltip: true,
338
+ width: 120,
339
+ // sortable: true,
340
+ field: 'userName'
341
+ },
342
+ {
343
+ label: '状态',
344
+ field: 'pendstate',
345
+ key: 'zt',
346
+ align: 'center',
347
+ showOverflowTooltip: true,
348
+ width: this.theadWidth.pendstate || 80,
349
+ render: (h, params) => {
350
+ return h('span', {
351
+ style: {
352
+ color:
353
+ params.row.pendstate == 0 || params.row.pendstate == 3
354
+ ? 'red'
355
+ : params.row.pendstate == 1
356
+ ? 'green'
357
+ : params.row.pendstate == -1
358
+ ? 'orange'
359
+ : 'deepskyblue'
360
+ },
361
+ domProps: { innerHTML: params.row.querykeywords }
362
+ });
363
+ }
364
+ },
365
+ {
366
+ title: '办理意见',
367
+ align: 'center',
368
+ showOverflowTooltip: true,
369
+ 'min-width':200,
370
+ // sortable: true,
371
+ field: 'doresult'
372
+ },
373
+ {
374
+ title: '办理时间',
375
+ align: 'center',
376
+ showOverflowTooltip: true,
377
+ // sortable: true,
378
+ field: 'doetime',
379
+ render: (h, params) => {
380
+ return h(
381
+ 'span',
382
+ {},
383
+ params.row.doetime
384
+ ? util.formatDate(params.row.doetime, 'yyyy-MM-dd HH:mm')
385
+ : ''
386
+ );
387
+ }
388
+ }
389
+ ],
390
+ deleteThead: [
391
+ {
392
+ title: '步骤',
393
+ align: 'center',
394
+ // sortable: true,
395
+ showOverflowTooltip: true,
396
+ field: 'itemname'
397
+ },
398
+ {
399
+ title: '办理人',
400
+ align: 'center',
401
+ showOverflowTooltip: true,
402
+ width: 120,
403
+ // sortable: true,
404
+ field: 'userName'
405
+ },
406
+ {
407
+ title: '办理意见',
408
+ align: 'center',
409
+ showOverflowTooltip: true,
410
+ width: 240,
411
+ // sortable: true,
412
+ field: 'doresult'
413
+ },
414
+ {
415
+ title: '办理时间',
416
+ align: 'center',
417
+ width: 150,
418
+ showOverflowTooltip: true,
419
+ // sortable: true,
420
+ field: 'doetime'
421
+ },
422
+ {
423
+ title: '删除人',
424
+ showOverflowTooltip: true,
425
+ width: 120,
426
+ align: 'center',
427
+ // sortable: true,
428
+ field: 'querykeywords'
429
+ },
430
+ {
431
+ title: '删除原因',
432
+ align: 'center',
433
+ width: 240,
434
+ showOverflowTooltip: true,
435
+ // sortable: true,
436
+ field: 'upstepInfo'
437
+ },
438
+ {
439
+ title: '删除时间',
440
+ align: 'center',
441
+ width: 150,
442
+ showOverflowTooltip: true,
443
+ // sortable: true,
444
+ field: 'statechangetime'
445
+ },
446
+ {
447
+ title: '操作',
448
+ type: 'handle',
449
+ events: [
450
+ {
451
+ text: '恢复'
452
+ }
453
+ ]
454
+ }
455
+ ],
456
+ showReset: false, //重设记录弹窗
457
+ resetLoading: false,
458
+ resetTableList: [],
459
+ resetThead: [
460
+ {
461
+ title: '重设人登录名',
462
+ align: 'center',
463
+ // sortable: true,
464
+ showOverflowTooltip: true,
465
+ field: 'reset_person_login_name'
466
+ },
467
+ {
468
+ title: '重设人姓名',
469
+ align: 'center',
470
+ showOverflowTooltip: true,
471
+ // sortable: true,
472
+ field: 'reset_person_name'
473
+ },
474
+ {
475
+ title: '重设前节点',
476
+ align: 'center',
477
+ showOverflowTooltip: true,
478
+ // sortable: true,
479
+ field: 'reset_bf_item'
480
+ },
481
+ {
482
+ title: '重设前执行人',
483
+ align: 'center',
484
+ showOverflowTooltip: true,
485
+ // sortable: true,
486
+ field: 'reset_bf_user'
487
+ },
488
+ {
489
+ title: '重设后节点',
490
+ showOverflowTooltip: true,
491
+ align: 'center',
492
+ // sortable: true,
493
+ field: 'reset_af_item'
494
+ },
495
+ {
496
+ title: '重设后执行人',
497
+ align: 'center',
498
+ showOverflowTooltip: true,
499
+ // sortable: true,
500
+ field: 'reset_af_user'
501
+ },
502
+ {
503
+ title: '重设时间',
504
+ align: 'center',
505
+ showOverflowTooltip: true,
506
+ // sortable: true,
507
+ field: 'reset_time'
508
+ },
509
+ {
510
+ title: '操作IP',
511
+ align: 'center',
512
+ showOverflowTooltip: true,
513
+ // sortable: true,
514
+ field: 'reset_ip'
515
+ }
516
+ ],
517
+ modify: false,
518
+ formData: { reason: '' },
519
+
520
+ delLoading: false,
521
+ showDel: false,
522
+ attachmentPaperClipCssStyle: '',
523
+ is_edit: [], //是否可编辑
524
+ flowTableInfo: {
525
+ adjunctCode: '',
526
+ hasAgent: '1' //是否展示代办人 1:展示 0:不展示
527
+ },
528
+ show: false,
529
+ taskReadName: '', //非流程列表名称
530
+ options: [
531
+ { label: '时间排序', value: '1' },
532
+ { label: '部门排序', value: '2' }
533
+ // { label: '树形排序', value: '3' }
534
+ ],
535
+ isShort: 0, //是否隐藏筛选
536
+ viewType: '1', //排序方式
537
+ flowTableList: [], //流程列表
538
+ fyTableList: [], //分阅列表
539
+ showSuggest: 'all', //筛选显示数据
540
+ presetInfoListHiddenColumns: '', //隐藏表格展示数据
541
+ canDelete: false, //是否展示操作按钮
542
+ canBatchDelete: false, //是否可以批量删除
543
+ isSuperRole: false, //是否管理员
544
+ isShowReset: false, //是否显示重设记录
545
+ historyId: '',
546
+ sidx: '',
547
+ sord: 'asc',
548
+ modalType: '',
549
+ total: 0
550
+ };
551
+ },
552
+ watch: {
553
+ flowViewType: {
554
+ handler(val) {
555
+ if (val) {
556
+ this.loading = util.loading(this.$loading, '加载中...');
557
+ this.getFlowList(val);
558
+ }
559
+ },
560
+ deep: true,
561
+ immediate: true
562
+ }
563
+ },
564
+
565
+ computed: {
566
+ formItemList() {
567
+ return [
568
+ {
569
+ name: 'reason',
570
+ label: this.modalType == 'del' ? '删除原因' : '办理意见',
571
+ type: 'textarea',
572
+ placeholder: `请输入${
573
+ this.modalType == 'del' ? '删除原因' : '办理意见'
574
+ }`,
575
+ rules: {
576
+ required: this.modalType == 'del',
577
+ message: '请输入删除原因',
578
+ trigger: 'blur'
579
+ },
580
+ value: '',
581
+ rows: 5
582
+ },
583
+ {
584
+ type: 'submit',
585
+ skin: 'lay-form-btns',
586
+ contents: [
587
+ {
588
+ type: 'primary',
589
+ plain: true,
590
+ text: '保存',
591
+ event: 'confirm'
592
+ }
593
+ ]
594
+ }
595
+ ];
596
+ },
597
+ toolbars() {
598
+ return {
599
+ flow: [
600
+ {
601
+ type: 'text',
602
+ contents: '流程列表'
603
+ },
604
+ {
605
+ type: 'search',
606
+ contents: [
607
+ {
608
+ name: 'showSuggest',
609
+ type: 'radio',
610
+ changeSearch: true,
611
+ data: [
612
+ {
613
+ value: 'all',
614
+ name: '显示全部',
615
+ checked: true
616
+ },
617
+ { value: 'have', name: '显示已填意见' }
618
+ ],
619
+ events: {
620
+ change: (key, value) => {
621
+ this.handleChange(key, value);
622
+ }
623
+ }
624
+ },
625
+
626
+ {
627
+ type: 'select',
628
+ placeholder: '请选择',
629
+ name: 'viewType',
630
+ width: '140px',
631
+ changeSearch: true,
632
+ events: {
633
+ change: (key, value) => {
634
+ this.handleChange(key, value);
635
+ }
636
+ },
637
+ data: [
638
+ {
639
+ value: 1,
640
+ selected: true,
641
+ name: '时间排序'
642
+ },
643
+ {
644
+ value: 2,
645
+ name: '部门排序'
646
+ }
647
+ // {
648
+ // value: 3,
649
+ // name: '树形排序'
650
+ // }
651
+ ]
652
+ }
653
+ ]
654
+ },
655
+ {
656
+ type: 'button',
657
+ name: 'btn',
658
+ width: '140px',
659
+ contents: [
660
+ {
661
+ text: '删除记录',
662
+ type: 'primary',
663
+ hide: !this.canDelete && !this.isSuperRole,
664
+ event: (res) => {
665
+ // click: (key, value) => {
666
+ this.showDelete = true;
667
+ this.currentPage = 1;
668
+ this.pageSize = 20;
669
+ this.getDeletList();
670
+ // }
671
+ }
672
+ },
673
+ {
674
+ text: '批量删除',
675
+ type: 'primary',
676
+ hide: !this.canBatchDelete && !this.isSuperRole,
677
+ event: (res) => {
678
+ // click: (key, value) => {
679
+ this.showBatchDelete = true;
680
+ this.batchdeleteTableList = this.flowData.filter((x) => x.pendstate == 2);
681
+ // }
682
+ }
683
+ },
684
+ {
685
+ text: '重设记录',
686
+ type: 'primary',
687
+ hide: !this.isShowReset,
688
+ event: (res) => {
689
+ // click: (key, value) => {
690
+ this.showReset = true;
691
+ this.currentPage = 1;
692
+ this.pageSize = 20;
693
+ this.getResetList();
694
+ // }
695
+ }
696
+ }
697
+ ]
698
+ }
699
+ ],
700
+ preset: [
701
+ {
702
+ type: 'text',
703
+ contents: '预设列表'
704
+ }
705
+ ],
706
+ sign: [
707
+ {
708
+ type: 'button',
709
+ contents: [
710
+ {
711
+ text: '生成处理签',
712
+ type: 'primary'
713
+ }
714
+ ]
715
+ }
716
+ ],
717
+ splitReading: [
718
+ {
719
+ type: 'text',
720
+ contents:
721
+ (this.taskReadName ? this.taskReadName : '非流程') + '列表'
722
+ }
723
+ ],
724
+ circular: [
725
+ {
726
+ type: 'text',
727
+ contents: '传阅列表'
728
+ }
729
+ ],
730
+ untreatedRead: [
731
+ {
732
+ type: 'text',
733
+ contents: '未处理分阅列表'
734
+ },
735
+ {
736
+ type: 'button',
737
+ contents: [
738
+ {
739
+ text: '撤销分阅',
740
+ fun: 'recallRead'
741
+ }
742
+ ]
743
+ }
744
+ ],
745
+ processedRead: [
746
+ {
747
+ type: 'text',
748
+ contents: '已处理分阅列表'
749
+ }
750
+ ]
751
+ // Reading situation
752
+ };
753
+ },
754
+ pageInfo() {
755
+ return {
756
+ pageNum: this.currentPage,
757
+ pageSize: this.pageSize,
758
+ totalCount: this.total
759
+ };
760
+ },
761
+ theads() {
762
+ const _that = this;
763
+ let newThead = {
764
+ flow: [
765
+ // {
766
+ // label: '经办部门',
767
+ // field: 'deptid',
768
+ // align: 'center',
769
+ // key: 'jbbm',
770
+ // showOverflowTooltip: true,
771
+ // width: this.theadWidth.deptid || 150,
772
+ // render: (h, params) => {
773
+ // return h(
774
+ // 'span',
775
+ // {},
776
+ // params.row.doDeptName
777
+ // ? params.row.doDeptName
778
+ // : params.row.deptName
779
+ // );
780
+ // }
781
+ // },
782
+ {
783
+ label: '步骤',
784
+ field: 'itemname',
785
+ align: 'center',
786
+ key: 'bz',
787
+ showOverflowTooltip: true,
788
+ width: this.theadWidth.itemname || 110
789
+ },
790
+ {
791
+ label: '办理人',
792
+ field: 'userName',
793
+ align: 'center',
794
+ key: 'blr',
795
+ showOverflowTooltip: true,
796
+ width: this.theadWidth.userName || 110,
797
+ render: (h, params) => {
798
+
799
+ return h('span', {}, [
800
+ params.row.userName
801
+ ]);
802
+ }
803
+ },
804
+ // {
805
+ // label: '办理人部门',
806
+ // field: 'deptName',
807
+ // align: 'center',
808
+ // showOverflowTooltip: true,
809
+ // key: 'blrbm',
810
+ // width: this.theadWidth.deptName || 110
811
+ // },
812
+ {
813
+ label: '状态',
814
+ field: 'pendstate',
815
+ key: 'zt',
816
+ align: 'center',
817
+ showOverflowTooltip: true,
818
+ width: this.theadWidth.pendstate || 80,
819
+ render: (h, params) => {
820
+ return h('span', {
821
+ style: {
822
+ color:
823
+ params.row.pendstate == 0 || params.row.pendstate == 3
824
+ ? 'red'
825
+ : params.row.pendstate == 1
826
+ ? 'green'
827
+ : params.row.pendstate == -1
828
+ ? 'orange'
829
+ : 'deepskyblue'
830
+ },
831
+ domProps: { innerHTML: params.row.querykeywords }
832
+ });
833
+ }
834
+ },
835
+ {
836
+ label: '办理意见',
837
+ field: 'doresult',
838
+ align: 'center',
839
+ width: this.theadWidth.doresult,
840
+ showOverflowTooltip: true,
841
+ 'min-width':200,
842
+ key: 'blyj',
843
+ render: (h, params) => {
844
+ if (
845
+ params.row.doresult &&
846
+ (params.row.doresult.startsWith('http') ||
847
+ params.row.doresult.startsWith('https'))
848
+ ) {
849
+ return h('img', {
850
+ attrs: { src: params.row.doresult },
851
+ style: { width: '100px', height: '100px' }
852
+ });
853
+ } else {
854
+ return h('span', {}, [
855
+ params.row.doresult
856
+ ? params.row.doresult + (params.row.handleInfo ? '&' : '')
857
+ : '',
858
+ h(
859
+ 'span',
860
+ { style: { color: '#A5A5A5', marginLeft: '2px' } },
861
+ params.row.handleInfo || ''
862
+ )
863
+ ]);
864
+ }
865
+ }
866
+ },
867
+ {
868
+ label: '验签',
869
+ field: 'authTypeStr',
870
+ align: 'center',
871
+ key: 'yq',
872
+ showOverflowTooltip: true,
873
+ width: this.theadWidth.authTypeStr || 70,
874
+ render: (h, params) => {
875
+ return h(
876
+ 'span',
877
+ { style: { color: 'deepskyblue' } },
878
+ params.row.authTypeStr
879
+ );
880
+ }
881
+ },
882
+ {
883
+ label: '附件',
884
+ key: 'fj',
885
+ field: 'hasAdjunct',
886
+ align: 'center',
887
+ showOverflowTooltip: true,
888
+ width: this.theadWidth.hasAdjunct || 70,
889
+ render: (h, params) => {
890
+ if (params.row.hasAdjunct) {
891
+ return h('span', {
892
+ style: _that.attachmentPaperClipCssStyle
893
+ ? _that.attachmentPaperClipCssStyle
894
+ : { color: 'red', fontSize: '20px' },
895
+ class: 'iconfont es-icon-fujian'
896
+ });
897
+ } else {
898
+ return h('span', {}, '');
899
+ }
900
+ }
901
+ },
902
+ {
903
+ label: '时间',
904
+ field: 'doetime',
905
+ align: 'center',
906
+ key: 'sj',
907
+ showOverflowTooltip: true,
908
+ width: this.theadWidth.doetime || 150,
909
+ render: (h, params) => {
910
+ return h(
911
+ 'span',
912
+ {},
913
+ params.row.doetime
914
+ ? util.formatDate(params.row.doetime, 'yyyy-MM-dd HH:mm')
915
+ : ''
916
+ );
917
+ }
918
+ },
919
+ {
920
+ label: '代办人',
921
+ field: 'douserid',
922
+ align: 'center',
923
+ key: 'dbr',
924
+ showOverflowTooltip: true,
925
+ width: this.theadWidth.douserid || 80,
926
+ hide: _that.flowTableInfo.hasAgent != '1'
927
+ },
928
+ {
929
+ label: '催办',
930
+ field: 'pressTimes',
931
+ align: 'center',
932
+ key: 'cb',
933
+ showOverflowTooltip: true,
934
+ width: this.theadWidth.pressTimes || 150,
935
+ render: (h, params) => {
936
+ return h(
937
+ 'ins',
938
+ { style: 'color:red;cursor: pointer;' },
939
+ params.row.pressTimes != 0 ? params.row.pressTimes : ''
940
+ );
941
+ }
942
+ },
943
+ {
944
+ title: '操作',
945
+ type: 'handle',
946
+ width: this.modify ? '130' : '100',
947
+ template: '',
948
+ hide: this.hideBtn || (!this.canDelete && !this.modify),
949
+ events: [
950
+ {
951
+ text: '删除',
952
+ rules: (rows) => {
953
+ return rows.canDelete || this.canDelete;
954
+ }
955
+ },
956
+ {
957
+ text: '修改',
958
+ rules: (rows) => {
959
+ return this.modify && rows.pendstate == 2;
960
+ }
961
+ }
962
+ ]
963
+ }
964
+ ],
965
+ preset: this.thead,
966
+ splitReading: [
967
+ {
968
+ label: '经办部门',
969
+ field: 'deptid',
970
+ key: 'jbbm',
971
+ align: 'center',
972
+ showOverflowTooltip: true,
973
+ width: this.theadWidth.deptid || 150
974
+ },
975
+ {
976
+ label: '步骤',
977
+ field: 'itemname',
978
+ align: 'center',
979
+ key: 'bz',
980
+ showOverflowTooltip: true,
981
+ width: this.theadWidth.itemname || 110
982
+ },
983
+ {
984
+ label: '办理人',
985
+ field: 'userName',
986
+ align: 'center',
987
+ key: 'blr',
988
+ showOverflowTooltip: true,
989
+ width: this.theadWidth.userName || 110
990
+ },
991
+ {
992
+ label: '状态',
993
+ field: 'pendstate',
994
+ align: 'center',
995
+ key: 'zt',
996
+ showOverflowTooltip: true,
997
+ width: this.theadWidth.pendstate || 80,
998
+ render: (h, params) => {
999
+ return h('span', {
1000
+ style: {
1001
+ color:
1002
+ params.row.pendstate == 0 || params.row.pendstate == 3
1003
+ ? 'red'
1004
+ : params.row.pendstate == 1
1005
+ ? 'green'
1006
+ : params.row.pendstate == -1
1007
+ ? 'orange'
1008
+ : 'deepskyblue'
1009
+ },
1010
+ domProps: { innerHTML: params.row.querykeywords }
1011
+ });
1012
+ }
1013
+ },
1014
+ {
1015
+ label: '办理意见',
1016
+ field: 'doresult',
1017
+ align: 'center',
1018
+ 'min-width':200,
1019
+ key: 'blyj',
1020
+ width: this.theadWidth.doresult,
1021
+ showOverflowTooltip: true,
1022
+ render: (h, params) => {
1023
+ if (
1024
+ params.row.doresult &&
1025
+ (params.row.doresult.startsWith('http') ||
1026
+ params.row.doresult.startsWith('https'))
1027
+ ) {
1028
+ return h('img', {
1029
+ attrs: { src: params.row.doresult },
1030
+ style: { width: '100px', height: '100px' }
1031
+ });
1032
+ } else {
1033
+ return h('span', {}, [
1034
+ params.row.doresult
1035
+ ? params.row.doresult + (params.row.handleInfo ? '&' : '')
1036
+ : '',
1037
+ h(
1038
+ 'span',
1039
+ { style: { color: '#A5A5A5', marginLeft: '2px' } },
1040
+ params.row.handleInfo || ''
1041
+ )
1042
+ ]);
1043
+ }
1044
+ }
1045
+ },
1046
+ {
1047
+ label: '验签',
1048
+ field: 'authTypeStr',
1049
+ align: 'center',
1050
+ key: 'yq',
1051
+ showOverflowTooltip: true,
1052
+ width: this.theadWidth.authTypeStr || 70,
1053
+ render: (h, params) => {
1054
+ return h(
1055
+ 'span',
1056
+ { style: { color: 'deepskyblue' } },
1057
+ params.row.authTypeStr
1058
+ );
1059
+ }
1060
+ },
1061
+ {
1062
+ label: '附件',
1063
+ field: 'hasAdjunct',
1064
+ align: 'center',
1065
+ key: 'fj',
1066
+ showOverflowTooltip: true,
1067
+ width: this.theadWidth.hasAdjunct || 70,
1068
+ render: (h, params) => {
1069
+ if (params.row.hasAdjunct) {
1070
+ return h('span', {
1071
+ style: _that.attachmentPaperClipCssStyle
1072
+ ? _that.attachmentPaperClipCssStyle
1073
+ : { color: 'red', fontSize: '20px' },
1074
+ class: 'iconfont es-icon-fujian'
1075
+ });
1076
+ } else {
1077
+ return h('span', {}, '');
1078
+ }
1079
+ }
1080
+ },
1081
+ {
1082
+ label: '时间',
1083
+ field: 'doetime',
1084
+ align: 'center',
1085
+ key: 'sj',
1086
+ showOverflowTooltip: true,
1087
+ width: this.theadWidth.doetime || 150,
1088
+ render: (h, params) => {
1089
+ return h(
1090
+ 'span',
1091
+ {},
1092
+ params.row.doetime
1093
+ ? util.formatDate(params.row.doetime, 'yyyy-MM-dd HH:mm')
1094
+ : ''
1095
+ );
1096
+ }
1097
+ },
1098
+ {
1099
+ label: '代办人',
1100
+ field: 'douserid',
1101
+ align: 'center',
1102
+ key: 'dbr',
1103
+ showOverflowTooltip: true,
1104
+ width: this.theadWidth.douserid || 80,
1105
+ hide: _that.flowTableInfo.hasAgent != '1'
1106
+ },
1107
+ {
1108
+ label: '催办',
1109
+ field: 'pressTimes',
1110
+ align: 'center',
1111
+ key: 'cb',
1112
+ showOverflowTooltip: true,
1113
+ width: this.theadWidth.pressTimes || 150,
1114
+ render: (h, params) => {
1115
+ return h(
1116
+ 'ins',
1117
+ { style: 'color:red;cursor: pointer;' },
1118
+ params.row.pressTimes != 0 ? params.row.pressTimes : ''
1119
+ );
1120
+ }
1121
+ },
1122
+ {
1123
+ title: '操作',
1124
+ type: 'handle',
1125
+ width: '100',
1126
+ template: '',
1127
+ hide: this.hideBtn || (!this.canDelete && !this.modify),
1128
+ events: [
1129
+ {
1130
+ text: '删除',
1131
+ rules: (rows) => {
1132
+ return rows.canDelete || this.canDelete;
1133
+ }
1134
+ }
1135
+ ]
1136
+ }
1137
+ ],
1138
+ circular: [
1139
+ {
1140
+ label: '发起人',
1141
+ field: 'circularReadInitiatorName',
1142
+ align: 'center',
1143
+ key: 'fqr',
1144
+ showOverflowTooltip: true,
1145
+ width: this.theadWidth.circularReadInitiatorName || 150
1146
+ },
1147
+ {
1148
+ label: '传阅部门',
1149
+ field: 'circularReadOrgName',
1150
+ align: 'center',
1151
+ key: 'cybm',
1152
+ showOverflowTooltip: true,
1153
+ width: this.theadWidth.circularReadOrgName || 110
1154
+ },
1155
+ {
1156
+ label: '传阅人',
1157
+ field: 'userName',
1158
+ align: 'center',
1159
+ key: 'cyr',
1160
+ showOverflowTooltip: true,
1161
+ width: this.theadWidth.userName || 110
1162
+ },
1163
+ {
1164
+ label: '步骤',
1165
+ field: 'itemname',
1166
+ align: 'center',
1167
+ showOverflowTooltip: true,
1168
+ key: 'bz',
1169
+ width: this.theadWidth.itemname || 110
1170
+ },
1171
+ {
1172
+ label: '状态',
1173
+ field: 'pendstate',
1174
+ key: 'zt',
1175
+ align: 'center',
1176
+ showOverflowTooltip: true,
1177
+ width: this.theadWidth.pendstate || 140,
1178
+ render: (h, params) => {
1179
+ return h('span', {
1180
+ style: {
1181
+ color:
1182
+ params.row.pendstate == 0 || params.row.pendstate == 3
1183
+ ? 'red'
1184
+ : params.row.pendstate == 1
1185
+ ? 'green'
1186
+ : params.row.pendstate == -1
1187
+ ? 'orange'
1188
+ : 'deepskyblue',
1189
+ cursor: this.hasCircularReadWithdrawAuthority
1190
+ ? 'pointer'
1191
+ : 'unset'
1192
+ },
1193
+ domProps: {
1194
+ innerHTML:
1195
+ params.row.querykeywords +
1196
+ (this.hasCircularReadWithdrawAuthority
1197
+ ? `<span style="color:#7AB0D5">(撤回)</span>`
1198
+ : '')
1199
+ }
1200
+ });
1201
+ }
1202
+ },
1203
+ {
1204
+ label: '送达时间',
1205
+ field: 'createtime',
1206
+ align: 'center',
1207
+ key: 'sdsj',
1208
+ showOverflowTooltip: true,
1209
+ width: this.theadWidth.createtime || 170
1210
+ },
1211
+ {
1212
+ label: '办理时间',
1213
+ field: 'doetime',
1214
+ align: 'center',
1215
+ key: 'blsj',
1216
+ showOverflowTooltip: true,
1217
+ width: this.theadWidth.doetime || 150
1218
+ },
1219
+
1220
+ {
1221
+ label: '附件',
1222
+ key: 'fj',
1223
+ field: 'hasAdjunct',
1224
+ align: 'center',
1225
+ showOverflowTooltip: true,
1226
+ width: this.theadWidth.hasAdjunct || 70,
1227
+ render: (h, params) => {
1228
+ if (params.row.hasAdjunct) {
1229
+ return h('span', {
1230
+ style: _that.attachmentPaperClipCssStyle
1231
+ ? _that.attachmentPaperClipCssStyle
1232
+ : { color: 'red', fontSize: '20px' },
1233
+ class: 'iconfont es-icon-fujian'
1234
+ });
1235
+ } else {
1236
+ return h('span', {}, '');
1237
+ }
1238
+ }
1239
+ },
1240
+ {
1241
+ label: '提醒',
1242
+ field: 'pressTimes',
1243
+ align: 'center',
1244
+ key: 'tx',
1245
+ showOverflowTooltip: true,
1246
+ width: this.theadWidth.pressTimes || 150,
1247
+ render: (h, params) => {
1248
+ return h(
1249
+ 'ins',
1250
+ { style: 'color:red;cursor: pointer;' },
1251
+ params.row.pressTimes
1252
+ );
1253
+ }
1254
+ },
1255
+ {
1256
+ label: '阅结意见 & 说明',
1257
+ field: 'doresult',
1258
+ align: 'center',
1259
+ width: this.theadWidth.doresult,
1260
+ showOverflowTooltip: true,
1261
+ key: 'blyj',
1262
+ render: (h, params) => {
1263
+ if (
1264
+ params.row.doresult &&
1265
+ (params.row.doresult.startsWith('http') ||
1266
+ params.row.doresult.startsWith('https'))
1267
+ ) {
1268
+ return h('img', {
1269
+ attrs: { src: params.row.doresult },
1270
+ style: { width: '100px', height: '100px' }
1271
+ });
1272
+ } else {
1273
+ return h('span', {}, [
1274
+ params.row.doresult
1275
+ ? params.row.doresult + (params.row.handleInfo ? '&' : '')
1276
+ : '',
1277
+ h(
1278
+ 'span',
1279
+ { style: { color: '#A5A5A5', marginLeft: '2px' } },
1280
+ params.row.handleInfo || ''
1281
+ )
1282
+ ]);
1283
+ }
1284
+ }
1285
+ }
1286
+ ],
1287
+ untreatedRead: [
1288
+ {
1289
+ label: '步骤',
1290
+ field: 'itemid',
1291
+ align: 'center',
1292
+ key: 'bz',
1293
+ showOverflowTooltip: true,
1294
+ width: this.theadWidth.itemid || 110
1295
+ },
1296
+ {
1297
+ label: '办理人',
1298
+ field: 'userName',
1299
+ align: 'center',
1300
+ key: 'blr',
1301
+ showOverflowTooltip: true,
1302
+ width: this.theadWidth.userName
1303
+ },
1304
+ {
1305
+ label: '办理状态',
1306
+ field: 'pendstate',
1307
+ key: 'blzt',
1308
+ align: 'center',
1309
+ showOverflowTooltip: true,
1310
+ width: this.theadWidth.pendstate || 110,
1311
+ render: (h, params) => {
1312
+ return h('span', {
1313
+ style: {
1314
+ color:
1315
+ params.row.pendstate == 0 || params.row.pendstate == 3
1316
+ ? 'red'
1317
+ : params.row.pendstate == 1
1318
+ ? 'green'
1319
+ : 'deepskyblue'
1320
+ },
1321
+ domProps: { innerHTML: params.row.querykeywords }
1322
+ });
1323
+ }
1324
+ },
1325
+ {
1326
+ label: '创建时间',
1327
+ field: 'createtime',
1328
+ align: 'center',
1329
+ key: 'cjsj',
1330
+ showOverflowTooltip: true,
1331
+ width: this.theadWidth.createtime || 150,
1332
+ render: (h, params) => {
1333
+ return h(
1334
+ 'span',
1335
+ {},
1336
+ params.row.doetime
1337
+ ? util.formatDate(params.row.createtime, 'yyyy-MM-dd HH:mm')
1338
+ : ''
1339
+ );
1340
+ }
1341
+ }
1342
+ ],
1343
+ processedRead: [
1344
+ {
1345
+ label: '步骤',
1346
+ field: 'itemid',
1347
+ align: 'center',
1348
+ key: 'bz',
1349
+ showOverflowTooltip: true,
1350
+ width: this.theadWidth.itemid || 110
1351
+ },
1352
+ {
1353
+ label: '办理人',
1354
+ field: 'userName',
1355
+ align: 'center',
1356
+ key: 'blr',
1357
+ showOverflowTooltip: true,
1358
+ width: this.theadWidth.userName
1359
+ },
1360
+ {
1361
+ label: '办理状态',
1362
+ field: 'pendstate',
1363
+ key: 'blzt',
1364
+ align: 'center',
1365
+ showOverflowTooltip: true,
1366
+ width: this.theadWidth.pendstate || 110,
1367
+ render: (h, params) => {
1368
+ return h('span', {
1369
+ style: {
1370
+ color:
1371
+ params.row.pendstate == 0 || params.row.pendstate == 3
1372
+ ? 'red'
1373
+ : params.row.pendstate == 1
1374
+ ? 'green'
1375
+ : 'deepskyblue'
1376
+ },
1377
+ domProps: { innerHTML: params.row.querykeywords }
1378
+ });
1379
+ }
1380
+ },
1381
+ {
1382
+ label: '办理时间',
1383
+ field: 'doetime',
1384
+ align: 'center',
1385
+ key: 'blsj',
1386
+ showOverflowTooltip: true,
1387
+ width: this.theadWidth.doetime || 150,
1388
+ render: (h, params) => {
1389
+ return h(
1390
+ 'span',
1391
+ {},
1392
+ params.row.doetime
1393
+ ? util.formatDate(params.row.doetime, 'yyyy-MM-dd HH:mm')
1394
+ : ''
1395
+ );
1396
+ }
1397
+ },
1398
+ {
1399
+ label: '代办人',
1400
+ field: 'douserid',
1401
+ align: 'center',
1402
+ key: 'dbr',
1403
+ showOverflowTooltip: true,
1404
+ width: this.theadWidth.douserid
1405
+ },
1406
+ {
1407
+ label: '意见',
1408
+ field: 'doresult',
1409
+ align: 'center',
1410
+ key: 'yj',
1411
+ showOverflowTooltip: true,
1412
+ width: this.theadWidth.doresult
1413
+ }
1414
+ ]
1415
+ };
1416
+ if (this.numbers) {
1417
+ for (let key in newThead) {
1418
+ newThead[key].unshift({
1419
+ label: '序号',
1420
+ field: 'sort',
1421
+ align: 'center',
1422
+ key: 'xh',
1423
+ showOverflowTooltip: true,
1424
+ width: 50
1425
+ });
1426
+ }
1427
+ }
1428
+ return newThead;
1429
+ },
1430
+ content() {
1431
+ const _that = this;
1432
+ let newContents = JSON.parse(JSON.stringify(this.contents));
1433
+ if (this.contents.indexOf('circular') != -1) {
1434
+ newContents = newContents.filter((item) => item != 'splitReading');
1435
+ }
1436
+ if (newContents.indexOf('readingSituation') != -1) {
1437
+ newContents = ['untreatedRead', 'processedRead'];
1438
+ }
1439
+ let contents = newContents.map((item) => {
1440
+ if (typeof item === 'string') {
1441
+ let data = [];
1442
+ if (_that.headFields.length > 0) {
1443
+ _that.headFields.map((headFiled) => {
1444
+ if (headFiled.showDefault) {
1445
+ _that.theads[item].map((theadItem) => {
1446
+ if (theadItem.field === headFiled.field) {
1447
+ data.push({ ...theadItem, ...headFiled });
1448
+ }
1449
+ });
1450
+ } else {
1451
+ data.push(headFiled);
1452
+ }
1453
+ });
1454
+ _that.theads[item].map((x) => {
1455
+ if (x.type == 'handle') {
1456
+ data.push(x);
1457
+ }
1458
+ });
1459
+ }
1460
+ return {
1461
+ type: item,
1462
+ checkbox: newContents.indexOf('untreatedRead') != -1,
1463
+ toolbar: this.toolbars[item],
1464
+ thead: data.length > 0 ? data : this.theads[item],
1465
+ showFormBtn: false
1466
+ };
1467
+ } else {
1468
+ if (!Object.prototype.hasOwnProperty.call(item, 'toolbar')) {
1469
+ let toolbars = this.toolbars[item.type];
1470
+ return { ...item, toolbars };
1471
+ }
1472
+ if (!Object.prototype.hasOwnProperty.call(item, 'thead')) {
1473
+ let thead = this.theads[item.type];
1474
+ return { ...item, thead };
1475
+ }
1476
+ return item;
1477
+ }
1478
+ });
1479
+ return contents;
1480
+ },
1481
+ newToolbar() {
1482
+ if (this.toolbar && this.toolbar.length > 0) {
1483
+ return this.toolbar;
1484
+ } else {
1485
+ return [];
1486
+ }
1487
+ },
1488
+ thead() {
1489
+ let table = [
1490
+ {
1491
+ title: '步骤',
1492
+ align: 'center',
1493
+ width: this.theadWidth.nodeName || '100',
1494
+ field: 'nodeName'
1495
+ },
1496
+ {
1497
+ title: '预设办理人',
1498
+ width: this.theadWidth.presetUserName || '120',
1499
+ align: 'center',
1500
+ field: 'presetUserName'
1501
+ },
1502
+ {
1503
+ title: '是否可编辑',
1504
+ key: 'sfkbj',
1505
+ align: 'center',
1506
+ width: this.theadWidth.isEdit || '100',
1507
+ render: (h, params) => {
1508
+ return h('span', this.getCodeValue(params.row.isEdit, 'is_edit'));
1509
+ },
1510
+ field: 'isEdit'
1511
+ },
1512
+ {
1513
+ key: 'zt',
1514
+ title: '状态',
1515
+ width: this.theadWidth.statusName || '80',
1516
+ align: 'center',
1517
+ field: 'statusName'
1518
+ },
1519
+ {
1520
+ title: '预设类型',
1521
+ key: 'yslx',
1522
+ width: this.theadWidth.presetType || '120',
1523
+ align: 'center',
1524
+ render: (h, params) => {
1525
+ return h(
1526
+ 'span',
1527
+ this.getCodeValue(params.row.presetType, 'preset_type')
1528
+ );
1529
+ },
1530
+ field: 'presetType'
1531
+ },
1532
+ {
1533
+ title: '流程名称',
1534
+ key: 'lcmc',
1535
+ width: this.theadWidth.processDefName,
1536
+ align: 'center',
1537
+ field: 'processDefName'
1538
+ },
1539
+ {
1540
+ title: '上一步骤',
1541
+ key: 'sybz',
1542
+ align: 'center',
1543
+ width: this.theadWidth.lastNodeName,
1544
+ field: 'lastNodeName'
1545
+ },
1546
+ {
1547
+ title: '创建步骤',
1548
+ key: 'cjbz',
1549
+ align: 'center',
1550
+ width: this.theadWidth.operationNodeName,
1551
+ field: 'operationNodeName'
1552
+ },
1553
+ {
1554
+ title: '创建人',
1555
+ key: 'cjr',
1556
+ width: this.theadWidth.creatorName || '120',
1557
+ align: 'center',
1558
+ field: 'creatorName'
1559
+ },
1560
+ {
1561
+ title: '创建时间',
1562
+ width: this.theadWidth.createTime || '150',
1563
+ key: 'cjsj',
1564
+ align: 'center',
1565
+ render: (h, params) => {
1566
+ return h(
1567
+ 'span',
1568
+ util.formatDate(params.row.createTime, 'yyyy-MM-dd HH:mm')
1569
+ );
1570
+ },
1571
+ field: 'createTime'
1572
+ },
1573
+ {
1574
+ title: '操作区域',
1575
+ type: 'handle',
1576
+ align: 'center',
1577
+ width: '120',
1578
+ events: [
1579
+ {
1580
+ text: '置为失效'
1581
+ }
1582
+ ]
1583
+ }
1584
+ ];
1585
+ if (
1586
+ this.presetInfoListHiddenColumns != undefined &&
1587
+ this.presetInfoListHiddenColumns != ''
1588
+ ) {
1589
+ table = table.filter(
1590
+ (items) => this.presetInfoListHiddenColumns.indexOf(items.key) == -1
1591
+ );
1592
+ }
1593
+ if (!this.canDelete) table.splice(table.length - 1, 1);
1594
+ return table;
1595
+ }
1596
+ },
1597
+ async mounted() {
1598
+ this.loading = util.loading(this.$loading, '加载中...');
1599
+ if (this.contents.indexOf('readingSituation') != -1) {
1600
+ await this.getFyListJson(1);
1601
+ await this.getFyListJson(2);
1602
+ this.getListCount(this.flowListCount);
1603
+ this.show = true;
1604
+ } else {
1605
+ this.getFlowList();
1606
+ }
1607
+ this.getSysInfo('preset_type');
1608
+ this.getSysInfo('is_edit');
1609
+ this.getListInfo();
1610
+ },
1611
+
1612
+ methods: {
1613
+ /**
1614
+ * handleBatchDelete
1615
+ * @desc:批量删除
1616
+ * @author liufan
1617
+ * @date 2025年12月31日
1618
+ **/
1619
+ handleBatchDelete(){
1620
+ if(this.batchDeleteSelectList.length == 0){
1621
+ this.$message.error('请选择需要删除的流程历史数据!');
1622
+ return;
1623
+ }
1624
+ if(!this.batchdeletereason){
1625
+ this.$message.error('请输入批量删除的原因!');
1626
+ return;
1627
+ }
1628
+ let ids = this.batchDeleteSelectList.map(item => item.id).join(',');
1629
+ let params = {
1630
+ url:batchDelete,
1631
+ method: 'POST',
1632
+ data: { ids,reason:this.batchdeletereason }
1633
+ };
1634
+ this.$confirm('您确定要批量删除勾选上的流程历史数据吗?', {
1635
+ confirmButtonText: '确定',
1636
+ cancelButtonText: '取消',
1637
+ type: 'warning'
1638
+ })
1639
+ .then(() => {
1640
+ this.loading = util.loading(this.$loading, '批量删除中...');
1641
+ util
1642
+ .ajax(params)
1643
+ .then((res) => {
1644
+ this.loading.close();
1645
+ if (res.rCode == 0 || res.status == 'success') {
1646
+ this.flowData = this.flowData.filter(item => ids.indexOf(item.id) == -1);
1647
+ this.batchdeleteTableList = this.flowData.filter((x) => x.pendstate == 2)
1648
+ this.batchdeletereason='';
1649
+ this.show = false
1650
+ setTimeout(() => {
1651
+ this.show = true;
1652
+ }, 0);
1653
+ this.$message({
1654
+ message: '删除成功',
1655
+ type: 'success'
1656
+ });
1657
+ }else{
1658
+ this.$message.error(res.message);
1659
+ }
1660
+ })
1661
+ .catch((err) => {
1662
+ this.loading.close();
1663
+ if (err.message && err.message !== 'canceled') {
1664
+ this.$message.error(err.message);
1665
+ }
1666
+ }); }).catch(() => {});
1667
+
1668
+
1669
+ },
1670
+ handleBtnShowClick(val) {
1671
+ const { handle, row } = val;
1672
+ if (handle.text == '恢复') {
1673
+ let params = {
1674
+ url: restoredHistory,
1675
+ params: {
1676
+ id: row.id
1677
+ }
1678
+ };
1679
+ this.$confirm('您确定要恢复这条办理历史吗?', {
1680
+ confirmButtonText: '确定',
1681
+ cancelButtonText: '取消',
1682
+ type: 'warning'
1683
+ })
1684
+ .then(() => {
1685
+ this.loading = util.loading(this.$loading, '恢复中...');
1686
+ util.ajax(params).then((res) => {
1687
+ this.loading.close();
1688
+ if (res.rCode == 0 || res.status == 'success') {
1689
+ this.getDeletList();
1690
+ this.getFlowList();
1691
+ this.$message({
1692
+ message: '恢复成功',
1693
+ type: 'success'
1694
+ });
1695
+ }
1696
+ });
1697
+ // _that.subMit(res.results,type)
1698
+ })
1699
+ .catch(() => {});
1700
+ }
1701
+ },
1702
+ recallReadFun() {
1703
+ const _that = this;
1704
+ let pendingIds = _that.selectList.map((x) => x.id).join(',');
1705
+ let params = {
1706
+ url: taskReadWithDraw,
1707
+ params: {
1708
+ pendingIds
1709
+ }
1710
+ };
1711
+ _that.loading = util.loading(_that.$loading, '撤销中...');
1712
+ util.ajax(params).then(async (res) => {
1713
+ _that.loading.close();
1714
+ if (res.rCode == 0 || res.status == 'success') {
1715
+ _that.$message.success('撤销成功!');
1716
+ await _that.getFyListJson(1);
1717
+ _that.getListCount(_that.flowListCount);
1718
+ } else {
1719
+ _that.$message.error(res.message);
1720
+ }
1721
+ });
1722
+ },
1723
+ recallRead() {
1724
+ if (this.selectList.length == 0)
1725
+ return this.$message.warning('请选择需要撤销的分阅');
1726
+ this.$confirm('是否确认撤销选中的分阅?', '提示', {
1727
+ confirmButtonText: '确定',
1728
+ cancelButtonText: '取消',
1729
+ type: 'warning'
1730
+ }).then(() => {
1731
+ this.recallReadFun();
1732
+ });
1733
+ },
1734
+ handleSelectionChange(val,type) {
1735
+ if(type == 'batchDelete'){
1736
+ this.batchDeleteSelectList = val
1737
+ }else{
1738
+ this.selectList = val;
1739
+ }
1740
+ },
1741
+ handledraw(pendedHistoryId) {
1742
+ let params = {
1743
+ url: circularReadWithdraw,
1744
+ params: { pendedHistoryId }
1745
+ };
1746
+ this.$confirm('是否确定撤回当前传阅', {
1747
+ confirmButtonText: '确定',
1748
+ cancelButtonText: '取消',
1749
+ type: 'warning'
1750
+ })
1751
+ .then(() => {
1752
+ this.loading = util.loading(this.$loading, '撤回中...');
1753
+ util.ajax(params).then((res) => {
1754
+ this.loading.close();
1755
+ if (res.rCode == 0) {
1756
+ this.$message({
1757
+ message: '撤回成功',
1758
+ type: 'success'
1759
+ });
1760
+ this.getCircularReadList();
1761
+ }
1762
+ });
1763
+ // _that.subMit(res.results,type)
1764
+ })
1765
+ .catch(() => {});
1766
+ },
1767
+ getCircularReadList() {
1768
+ const _that = this;
1769
+ let params = {
1770
+ url: pendedhistoryListWithCircularReadJson,
1771
+ params: { apprecordid: _that.businessId }
1772
+ };
1773
+ util.ajax(params).then((res) => {
1774
+ if (res.status == 'success' || res.rCode == 0) {
1775
+ _that.circularData = res.data.fyHistoryList;
1776
+ _that.circularData.map((x, i) => {
1777
+ x.sort = i + 1;
1778
+ });
1779
+ _that.hasCircularReadWithdrawAuthority =
1780
+ res.data.hasCircularReadWithdrawAuthority;
1781
+ _that.$nextTick(() => {
1782
+ _that.getListCount(_that.flowListCount);
1783
+ });
1784
+ }
1785
+ });
1786
+ },
1787
+ returnData(type) {
1788
+ switch (type) {
1789
+ case 'preset':
1790
+ this.flowListCount.preset = this.presetData.length;
1791
+ this.flowListCount.presetData = this.presetData;
1792
+ return this.presetData;
1793
+ case 'sign':
1794
+ this.flowListCount.sign = this.signData.length;
1795
+ this.flowListCount.signData = this.signData;
1796
+ return this.signData;
1797
+ case 'splitReading':
1798
+ this.flowListCount.splitReading = this.splitReadingData.length;
1799
+ this.flowListCount.splitReadingData = this.splitReadingData;
1800
+ return this.splitReadingData;
1801
+ case 'circular':
1802
+ this.flowListCount.circular = this.circularData.length;
1803
+ this.flowListCount.circularData = this.circularData;
1804
+ return this.circularData;
1805
+ case 'untreatedRead':
1806
+ this.flowListCount.untreatedRead = this.untreatedReadData.length;
1807
+ this.flowListCount.untreatedReadData = this.untreatedReadData;
1808
+ return this.untreatedReadData;
1809
+ case 'processedRead':
1810
+ this.flowListCount.processedRead = this.processedReadData.length;
1811
+ this.flowListCount.processedReadData = this.processedReadData;
1812
+ return this.processedReadData;
1813
+ default:
1814
+ this.flowListCount.flow = this.flowData.length;
1815
+ this.flowListCount.flowData = this.flowData;
1816
+ return this.flowData;
1817
+ }
1818
+ },
1819
+ handleCellClick(row, column) {
1820
+ if (column.property == 'hasAdjunct' && row.hasAdjunct) {
1821
+ this.showFile(row.wfpendingid);
1822
+ } else if (column.property == 'pressTimes') {
1823
+ if (row.pressTimes != 0) {
1824
+ this.goPress(row.id);
1825
+ }
1826
+ } else if (
1827
+ column.property == 'pendstate' &&
1828
+ this.hasCircularReadWithdrawAuthority
1829
+ ) {
1830
+ this.handledraw(row.id);
1831
+ }
1832
+ },
1833
+ handleBtnClick(data) {
1834
+ // recallRead
1835
+ const { handle, row } = data;
1836
+ if (handle.text == '删除' || handle.text == '修改') {
1837
+ this.formData.reason = handle.text == '修改' ? row.doresult : '';
1838
+ this.del(row.id, handle.text == '删除' ? 'del' : 'modify');
1839
+ } else if (handle.fun == 'recallRead') {
1840
+ this[handle.fun]();
1841
+ }else if(handle.text == '置为失效'){
1842
+ if (row.status == 0) {
1843
+ this.$confirm('您确定要置为失效吗?')
1844
+ .then(() => {
1845
+ this.loading = util.loading(this.$loading, '提交中...');
1846
+ let param = {
1847
+ url: deletePresetInfo,
1848
+ headers: { Accept: 'application/json,text/plain' },
1849
+ method: 'post',
1850
+ data: { id:row.id }
1851
+ };
1852
+ util
1853
+ .ajax(param)
1854
+ .then((res) => {
1855
+ const { status, message } = res;
1856
+ this.loading.close();
1857
+ if (status === 'success') {
1858
+ this.$message.success('操作成功');
1859
+ this.getListInfo();
1860
+ } else {
1861
+ this.$message.error(message || '系统错误,请联系管理员!');
1862
+ }
1863
+ })
1864
+ .catch((err) => {
1865
+ this.loading.close();
1866
+ if (err.message && err.message !== 'canceled') {
1867
+ this.$message.error(err.message);
1868
+ }
1869
+ });
1870
+ })
1871
+ .catch((e) => {
1872
+ // on cancel
1873
+ });
1874
+ } else {
1875
+ this.$message.warning('当前数据已为失效状态');
1876
+ }
1877
+ }
1878
+ },
1879
+ /**
1880
+ * handleFormSubmit
1881
+ * @desc:删除节点点击事件
1882
+ * @param {Object} formData 点击删除的form数据
1883
+ * @author liufan
1884
+ * @date 2022年11月29日
1885
+ **/
1886
+ handleFormSubmit(formData) {
1887
+ this.delLoading = true;
1888
+ let params = {
1889
+ url: this.modalType == 'del' ? deleteFlow : modifyFlow,
1890
+ method: 'POST',
1891
+ data: { id: this.historyId, reason: formData.reason }
1892
+ };
1893
+ if (this.modalType != 'del') {
1894
+ delete params.data.reason;
1895
+ params.data.doResult = formData.reason;
1896
+ params.data.doresult = formData.reason;
1897
+ }
1898
+ util
1899
+ .ajax(params)
1900
+ .then((res) => {
1901
+ const { status, message } = res;
1902
+ this.delLoading = false;
1903
+ if (status === 'success') {
1904
+ this.$message.success(
1905
+ `${this.modalType == 'del' ? '删除' : '修改'}成功`
1906
+ );
1907
+ this.showDel = false;
1908
+ this.handleChange();
1909
+ } else {
1910
+ this.$message.error(message || '系统错误,请联系管理员!');
1911
+ }
1912
+ })
1913
+ .catch((err) => {
1914
+ this.delLoading = false;
1915
+ if (err.message && err.message !== 'canceled') {
1916
+ this.$message.error(err.message);
1917
+ }
1918
+ });
1919
+ },
1920
+ /**
1921
+ * del
1922
+ * @desc:展示删除弹窗
1923
+ * @param {String} id 当前点击数据id
1924
+ * @author liufan
1925
+ * @date 2022年11月29日
1926
+ **/
1927
+ del(id, type) {
1928
+ this.modalType = type;
1929
+ this.historyId = id;
1930
+ this.showDel = true;
1931
+ },
1932
+ /**
1933
+ * handleCurrentChange
1934
+ * @desc:监听页码变化
1935
+ * @param {String} val 当前页
1936
+ * @author liufan
1937
+ * @date 2022年11月29日
1938
+ **/
1939
+ handleCurrentChange(val, type) {
1940
+ this.currentPage = val;
1941
+ if (type == 'press') {
1942
+ this.getPressList();
1943
+ }
1944
+ },
1945
+ /**
1946
+ * handleSizeChange
1947
+ * @desc:监听每页数据显示数量变化
1948
+ * @param {String} val 每页展示数量
1949
+ * @author liufan
1950
+ * @date 2022年11月29日
1951
+ **/
1952
+ handleSizeChange(val) {
1953
+ this.pageSize = val;
1954
+ if (type == 'press') {
1955
+ this.getPressList();
1956
+ }
1957
+ },
1958
+ /**
1959
+ * sortChange
1960
+ * @desc:监听排序变化
1961
+ * @param {Object} info 需要排序的字段及排序方式
1962
+ * @author liufan
1963
+ * @date 2022年11月29日
1964
+ **/
1965
+ sortChange(info, type) {
1966
+ let { prop } = info;
1967
+ this.sidx = prop;
1968
+ this.sord = this.sord == 'asc' ? 'desc' : 'asc';
1969
+ if (type == 'press') {
1970
+ this.getPressList();
1971
+ } else if (type == 'reset') {
1972
+ this.getResetList();
1973
+ } else if (type == 'delete') {
1974
+ this.getDeletList();
1975
+ }
1976
+ },
1977
+ /**
1978
+ * getDeletList
1979
+ * @desc:删除列表数据
1980
+ * @author liufan
1981
+ * @date 2025年12月30日
1982
+ **/
1983
+ getDeletList() {
1984
+ const { pageSize, sidx, sord, currentPage, businessId } = this;
1985
+ this.deleteLoading = true;
1986
+ let params = {
1987
+ url: deletedListJson + '?apprecordId=' + businessId,
1988
+ method: 'POST',
1989
+ data: { page: currentPage, rows: pageSize, sidx, sord }
1990
+ };
1991
+ util
1992
+ .ajax(params)
1993
+ .then((res) => {
1994
+ this.deleteTableList = res.data;
1995
+ this.total = res.totalrecords;
1996
+ this.deleteLoading = false;
1997
+ })
1998
+ .catch((err) => {
1999
+ this.deleteLoading = false;
2000
+ if (err.message && err.message !== 'canceled') {
2001
+ this.$message.error(err.message);
2002
+ }
2003
+ });
2004
+ },
2005
+ /**
2006
+ * getResetList
2007
+ * @desc:重设列表数据
2008
+ * @author liufan
2009
+ * @date 2025年12月30日
2010
+ **/
2011
+ getResetList() {
2012
+ const { pageSize, sidx, sord, currentPage, businessId } = this;
2013
+ this.resetLoading = true;
2014
+ let params = {
2015
+ url: resetJson + '?appRecordId=' + businessId,
2016
+ params: { appRecordId: businessId },
2017
+ method: 'POST',
2018
+ data: { page: currentPage, rows: pageSize, sidx, sord }
2019
+ };
2020
+ util
2021
+ .ajax(params)
2022
+ .then((res) => {
2023
+ this.resetTableList = res.data;
2024
+ this.total = res.totalrecords;
2025
+ this.resetLoading = false;
2026
+ })
2027
+ .catch((err) => {
2028
+ this.resetLoading = false;
2029
+ if (err.message && err.message !== 'canceled') {
2030
+ this.$message.error(err.message);
2031
+ }
2032
+ });
2033
+ },
2034
+ /**
2035
+ * getPressList
2036
+ * @desc:催办列表数据
2037
+ * @author liufan
2038
+ * @date 2022年11月29日
2039
+ **/
2040
+ getPressList() {
2041
+ const { historyId, pageSize, sidx, sord, currentPage } = this;
2042
+ this.pressLoading = true;
2043
+ let params = {
2044
+ url: pressListJson,
2045
+ params: { historyId },
2046
+ method: 'POST',
2047
+ data: { page: currentPage, rows: pageSize, sidx, sord, historyId }
2048
+ };
2049
+ util
2050
+ .ajax(params)
2051
+ .then((res) => {
2052
+ this.pressTableList = res.data;
2053
+ this.total = res.totalrecords;
2054
+ this.pressLoading = false;
2055
+ })
2056
+ .catch((err) => {
2057
+ this.pressLoading = false;
2058
+ if (err.message && err.message !== 'canceled') {
2059
+ this.$message.error(err.message);
2060
+ }
2061
+ });
2062
+ },
2063
+ /**
2064
+ * goPress
2065
+ * @desc:催办列表查看
2066
+ * @param {String} id 催办列表id
2067
+ * @author liufan
2068
+ * @date 2022年11月29日
2069
+ **/
2070
+ goPress(id) {
2071
+ this.historyId = id;
2072
+ this.showPress = true;
2073
+ this.getPressList();
2074
+ },
2075
+ /**
2076
+ * showFile
2077
+ * @desc:附件查看
2078
+ * @param {String} ownId 附件id
2079
+ * @author liufan
2080
+ * @date 2022年11月29日
2081
+ **/
2082
+ showFile(ownId) {
2083
+ this.wfpendingid = ownId;
2084
+ this.showFileList = true;
2085
+ },
2086
+ /**
2087
+ * handleChange
2088
+ * @desc:切换排序方式
2089
+ * @author liufan
2090
+ * @date 2022年11月22日
2091
+ **/
2092
+ handleChange(key, value) {
2093
+ if (value) {
2094
+ this[key] = value;
2095
+ }
2096
+ // this.show = false;
2097
+ this.loading = util.loading(this.$loading, '加载中...');
2098
+ this.getFlowList();
2099
+ },
2100
+ async getFyListJson(type) {
2101
+ let params = {
2102
+ url: fyListJson,
2103
+ params: {
2104
+ appRecordId: this.businessId,
2105
+ status: type
2106
+ }
2107
+ };
2108
+ await util.ajax(params).then((res) => {
2109
+ if (type == 1) {
2110
+ this.untreatedReadData = res.data;
2111
+ this.untreatedReadData.map((x, i) => {
2112
+ x.sort = i + 1;
2113
+ });
2114
+ } else {
2115
+ this.processedReadData = res.data;
2116
+ this.processedReadData.map((x, i) => {
2117
+ x.sort = i + 1;
2118
+ });
2119
+ }
2120
+ });
2121
+ },
2122
+ /**
2123
+ * getFlowList
2124
+ * @desc:获取流程列表
2125
+ * @author liufan
2126
+ * @date 2022年11月22日
2127
+ **/
2128
+ getFlowList(type) {
2129
+ let params = {
2130
+ url: pendedhistoryListJson,
2131
+ params: {
2132
+ apprecordid: this.businessId,
2133
+ pendingAttr: 0,
2134
+ viewType: type || this.viewType,
2135
+ showSuggest: this.showSuggest,
2136
+ ...this.params
2137
+ }
2138
+ };
2139
+ util
2140
+ .ajax(params)
2141
+ .then((res) => {
2142
+ let {
2143
+ status,
2144
+ message,
2145
+ data: {
2146
+ adjunctCode,
2147
+ wfHistoryList,
2148
+ fyHistoryList,
2149
+ hasAgent,
2150
+ isShort,
2151
+ modify,
2152
+ canDelete,
2153
+ canBatchDelete,
2154
+ isSuperRole,
2155
+ isShowReset,
2156
+ taskReadName
2157
+ }
2158
+ } = res;
2159
+ this.loading.close();
2160
+ if (status == 'success') {
2161
+ this.flowTableInfo.adjunctCode = adjunctCode;
2162
+ this.flowTableInfo.hasAgent = hasAgent;
2163
+ this.attachmentPaperClipCssStyle =
2164
+ res.data.attachmentPaperClipCssStyle;
2165
+ this.isShort = isShort;
2166
+ this.taskReadName = taskReadName;
2167
+ this.flowData = wfHistoryList;
2168
+ this.flowData.map((x, i) => {
2169
+ x.sort = i + 1;
2170
+ if (!x.deptid) {
2171
+ x.deptid = x.deptName;
2172
+ }
2173
+ });
2174
+ this.splitReadingData = fyHistoryList;
2175
+ this.splitReadingData.map((x, i) => {
2176
+ x.sort = i + 1;
2177
+ });
2178
+ this.modify = modify;
2179
+ this.canDelete = canDelete;
2180
+ this.canBatchDelete = canBatchDelete;
2181
+ this.isSuperRole = isSuperRole;
2182
+ this.isShowReset = isShowReset;
2183
+ this.show = true;
2184
+ if (this.height == 'auto') {
2185
+ this.$nextTick(() => {
2186
+ this.content.map((x) => {
2187
+ this[`${x.type}Height`] = this.$refs[x.type][0].offsetHeight;
2188
+ });
2189
+ });
2190
+ }
2191
+ if (this.contents.indexOf('circular') != -1) {
2192
+ this.getCircularReadList();
2193
+ } else {
2194
+ this.$nextTick(() => {
2195
+ this.getListCount(this.flowListCount);
2196
+ });
2197
+ }
2198
+ } else {
2199
+ this.$message.error(message || '系统错误,请联系管理员!');
2200
+ }
2201
+ })
2202
+ .catch((err) => {
2203
+ this.loading.close();
2204
+ if (err.message && err.message !== 'canceled') {
2205
+ this.$message.error(err.message);
2206
+ }
2207
+ this.show = true;
2208
+ });
2209
+ },
2210
+ /**
2211
+ * handleClick
2212
+ * @desc:表单点击事件
2213
+ * @param {Object} val 当前点击行数据及按钮
2214
+ * @author liufan
2215
+ * @date 2022年11月10日
2216
+ **/
2217
+ handleClick(val) {
2218
+ const {
2219
+ handle: { text },
2220
+ row: { id, status }
2221
+ } = val;
2222
+ if (text === '置为失效') {
2223
+ if (status == 0) {
2224
+ this.$confirm('您确定要置为失效吗?')
2225
+ .then(() => {
2226
+ this.loading = util.loading(this.$loading, '提交中...');
2227
+ let param = {
2228
+ url: deletePresetInfo,
2229
+ headers: { Accept: 'application/json,text/plain' },
2230
+ method: 'post',
2231
+ params: { id }
2232
+ };
2233
+ util
2234
+ .ajax(param)
2235
+ .then((res) => {
2236
+ const { status, message } = res;
2237
+ this.loading.close();
2238
+ if (status === 'success') {
2239
+ this.$message.success('操作成功');
2240
+ this.getListInfo();
2241
+ } else {
2242
+ this.$message.error(message || '系统错误,请联系管理员!');
2243
+ }
2244
+ })
2245
+ .catch((err) => {
2246
+ this.loading.close();
2247
+ if (err.message && err.message !== 'canceled') {
2248
+ this.$message.error(err.message);
2249
+ }
2250
+ });
2251
+ })
2252
+ .catch((e) => {
2253
+ // on cancel
2254
+ });
2255
+ } else {
2256
+ this.$message.warning('当前数据已为失效状态');
2257
+ }
2258
+ }
2259
+ },
2260
+ /**
2261
+ * getCodeValue
2262
+ * @desc:获取代码表过滤后的值
2263
+ * @param {String} value 展示数据的代码值
2264
+ * @param {String} type 代码表类型
2265
+ * @author liufan
2266
+ * @date 2022年11月10日
2267
+ **/
2268
+ getCodeValue(value, type) {
2269
+ let val = this[type].filter((item) => item.cciValue == value);
2270
+ return val[0].shortName;
2271
+ },
2272
+ /**
2273
+ * getSysInfo
2274
+ * @desc:获取代码表
2275
+ * @param {String} code 编码code值
2276
+ * @author liufan
2277
+ * @date 2022年11月10日
2278
+ **/
2279
+ getSysInfo(code) {
2280
+ let params = {
2281
+ url: findCodeValues,
2282
+ params: { ccCode: code }
2283
+ };
2284
+ util
2285
+ .ajax(params)
2286
+ .then((res) => {
2287
+ const { status, message, data } = res;
2288
+ if (status == 'success') {
2289
+ this[code] = data;
2290
+ } else {
2291
+ this.$message.error(message || '系统错误,请联系管理员!');
2292
+ }
2293
+ })
2294
+ .catch((e) => {});
2295
+ },
2296
+ /**
2297
+ * getListInfo
2298
+ * @desc:获取预设列表数据
2299
+ * @author liufan
2300
+ * @date 2022年11月10日
2301
+ **/
2302
+ getListInfo() {
2303
+ let param = {
2304
+ url: toPresetInfoListIndex,
2305
+ params: { apprecordid: this.businessId }
2306
+ };
2307
+ util
2308
+ .ajax(param)
2309
+ .then((res) => {
2310
+ let {
2311
+ status,
2312
+ message,
2313
+ data: {
2314
+ presetInfoList,
2315
+ presetInfoListHiddenColumns,
2316
+ canDelete,
2317
+ currentUserHasPresetInfoAuth
2318
+ }
2319
+ } = res;
2320
+ this.loading.close();
2321
+ if (status == 'success') {
2322
+ if (presetInfoList) {
2323
+ this.presetData = presetInfoList;
2324
+ this.presetData.map((x, i) => {
2325
+ x.sort = i + 1;
2326
+ });
2327
+ }
2328
+ this.presetInfoListHiddenColumns = presetInfoListHiddenColumns;
2329
+ this.currentUserHasPresetInfoAuth = currentUserHasPresetInfoAuth;
2330
+ this.canDelete = canDelete;
2331
+ } else {
2332
+ this.$message.error(message || '系统错误,请联系管理员!');
2333
+ }
2334
+ })
2335
+ .catch((err) => {
2336
+ this.loading.close();
2337
+ if (err.message && err.message !== 'canceled') {
2338
+ this.$message.error(err.message);
2339
+ }
2340
+ });
2341
+ }
2342
+ }
2343
+ };
2344
+ </script>
2345
+
2346
+ <style></style>