@lambo-design/workflow-approve 1.0.0-beta.5 → 1.0.0-beta.50

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.
@@ -0,0 +1,841 @@
1
+ <template>
2
+ <div style="min-height: 300px;">
3
+ <Select v-model="countersignersTagsData"
4
+ filterable multiple
5
+ @on-change="organChange($event)"
6
+ class="custom-select"
7
+ >
8
+ <Option v-for="(value, key) in organTree.userMap" :key="key" :value="`${key},${value}`" :label="value">
9
+ <span>{{ value }}</span>
10
+ </Option>
11
+ </Select>
12
+ <div class="cont">
13
+ <div
14
+ class="contLeftTwo">
15
+
16
+ <Tabs :animated="false" @on-click="dataNameClick">
17
+ <TabPane label="选人员">
18
+ <div class="overflowAuto">
19
+ <div v-if="readingRange.length === 0">暂无数据</div>
20
+ <Tree v-else v-for="(item,index) in readingRange" :key="index" :data="item" ref="treeEY" check-strictly
21
+ show-checkbox expand-node
22
+ :load-data="loadReadingRangeData" :checkable="true" @on-check-change="selectReRaYHChange"
23
+ @on-select-change="selectReRaYHChange"></Tree>
24
+ </div>
25
+ </TabPane>
26
+
27
+ </Tabs>
28
+
29
+ </div>
30
+ <div class="contRight">
31
+ <Card dis-hover v-if="treeUserCenterValue.length > 0">
32
+ <div class="overflowAuto">
33
+ <CheckboxGroup v-model="treeUserValue" class="checkbox-container" @on-change="getReadingRangeUser">
34
+ <Checkbox v-for="(item) in treeUserCenterValue" :key="item.userId"
35
+ :label="item.userId+','+item.userName">
36
+ {{ item.userName }} {{ showUserDetail(item) }}
37
+ </Checkbox>
38
+ </CheckboxGroup>
39
+ </div>
40
+ </Card>
41
+ </div>
42
+
43
+ </div>
44
+ </div>
45
+ </template>
46
+
47
+ <script>
48
+ import ajax from '@lambo-design/shared/utils/ajax'
49
+ import Title from './title'
50
+ import TreeSelect from '@lambo-design/tree-select'
51
+
52
+ export default {
53
+ props: {
54
+ smartFlowServerContext: {
55
+ type: String,
56
+ default: '/api/smart-flow-server',
57
+ },
58
+ upmsServerContext: {
59
+ type: String,
60
+ default: '/api/upms-server',
61
+ },
62
+ item: {
63
+ type: Object,
64
+ default: function () {
65
+ return {}
66
+ }
67
+ },
68
+ permScope: {
69
+ type: String,
70
+ default: ''
71
+ },
72
+
73
+ },
74
+ components: {
75
+ Title,
76
+ TreeSelect
77
+ },
78
+ data() {
79
+ return {
80
+ id: '',
81
+ ucAdapterType: 'x1',
82
+ treePostNameCenterValue: [],
83
+ selectedKeys: [],
84
+ postKeys: [],
85
+ postAllList: [],
86
+ noticeList: [],
87
+ orgList: [],
88
+ userNum: '0',
89
+ // permScope: "",
90
+ organTreeType: '00',
91
+ organIdList: [],
92
+ countersignersTagsData: [],
93
+ organTree: {
94
+ orgenMap: {},
95
+ userMap: {},
96
+ roleMap: {},
97
+ postMap: {},
98
+ },
99
+ readingRangePost: [],
100
+ treeUserValueCenter: [],
101
+ treeLength: 0,
102
+ treeValueBM: [],
103
+ treeOrgTypeValue: [],
104
+ dataName: '',
105
+ postList: [],//选中岗位集合(右侧显示)
106
+ processPostList: [],//岗位集合
107
+ noticeRoleNameList: [],//角色选择集合
108
+ roleList: [],//角色集合
109
+ noticeRoleList: [],//选中角色集合(右侧显示)
110
+ treeUserValue: [],//选中的人员(右侧显示)
111
+ selectedData: [],
112
+ treePostValue: [],
113
+ treeUserCenterValue: [],
114
+ treePostCenterValue: [],
115
+ readingRangeBM: [],//权限范围数据组织
116
+ readingRange: [],//权限范围数据人员
117
+ readingRangeOrgType: [],//权限范围数据部门
118
+ placeholder: '自动同意',
119
+ loading: false,
120
+ form: {
121
+ userId: '',
122
+ userName: '',
123
+ organId: '',
124
+ organTitle: '',
125
+ directChild: false,
126
+ isAdmin: ''
127
+ },
128
+ value: '2',
129
+ currentNode: {},
130
+ currentNodeUser: {},
131
+ currentNodePost: {},
132
+ ruleValidate: {
133
+ organization: [
134
+ { required: true, message: '请选择指定相对岗位的组织', trigger: 'blur' }
135
+ ],
136
+ position: [
137
+ { required: true, message: '请选择指定岗位', trigger: 'blur' }
138
+ ],
139
+ },
140
+
141
+ }
142
+ },
143
+ created() {
144
+ this.getSystemConfig()
145
+ let permScope = this.item.orgTreeType === this.defaultOrganTreeType ? this.permScope : 'all'
146
+ this.orgTreeType = this.item.orgTreeType ? this.item.orgTreeType : this.organTreeType
147
+ this.toggleShowHelpBox(this.permScope, this.item.candidates, this.orgTreeType, this.item.id)
148
+ },
149
+ computed: {},
150
+ mounted: function () {
151
+ },
152
+ methods: {
153
+ //把已选择的数据放入到已选列表中展示
154
+ getUser(row) {
155
+ let self = this
156
+ self.selectedKeys = []
157
+ self.treeUserValue = []
158
+ let users = row.users
159
+ let userList = users.split(',')
160
+ if (users && userList.length > 0) {
161
+ userList.forEach(item => {
162
+ let [userId, userName] = item.split(':');
163
+ let userStr = `${userId},${userName}`;
164
+ self.selectedData.push(userStr)
165
+ self.treeUserValue.push(userStr)
166
+ self.selectedKeys.push(userStr)
167
+ if (!self.countersignersTagsData.includes(userStr)) {
168
+ self.countersignersTagsData.push(userStr);
169
+ }
170
+ self.userNum = '1'
171
+ })
172
+ }
173
+ },
174
+
175
+ organChange(event) {
176
+ this.countersignersTagsData = [...event]; // 直接同步
177
+ this.treeUserValue = [...event]; // 保持一致
178
+ this.selectedKeys = [...event];
179
+
180
+ },
181
+
182
+ getRootOrganTree(organTreeType) {
183
+
184
+ let self = this
185
+ let organTreeList = []
186
+ let organTree = []
187
+ if (self.ucAdapterType == 'x1') {
188
+ let parentId = organTreeType == '00' ? 'rootId' : '0'
189
+ ajax.get(self.smartFlowServerContext + '/manage/organ/getOrgSubNodes', {
190
+ params: {
191
+ code: parentId,
192
+ orgTreeType: organTreeType
193
+ }
194
+ }).then(resp => {
195
+ if (resp.data.code === 200) {
196
+ let data = resp.data.data
197
+ if (data.length > 0) {
198
+ data.forEach(item => {
199
+ let obj = {}
200
+ obj.type = item.organType
201
+ obj.id = item.id
202
+ obj.organId = item.organId
203
+ obj.orders = item.orders
204
+ obj.title = item.organName
205
+ obj.name = item.organName
206
+ obj.com = item.com
207
+ obj.code = item.organCode
208
+ obj.loading = false
209
+ obj.children = []
210
+ obj.hasChild = true
211
+ organTreeList.push(obj)
212
+ })
213
+ }
214
+ organTree.push(organTreeList)
215
+ //去重
216
+ const codesSeen = new Map()
217
+ organTree = organTree.reduce((acc, item, index) => {
218
+ if (!codesSeen.has(item.code)) {
219
+ codesSeen.set(item.code, index)
220
+ acc.push(item)
221
+ }
222
+ return acc
223
+ }, [])
224
+ self.readingRangeBM = JSON.parse(JSON.stringify(organTree))
225
+ self.readingRange = JSON.parse(JSON.stringify(organTree))
226
+ self.readingRangePost = JSON.parse(JSON.stringify(organTree))
227
+ }
228
+ })
229
+ } else {
230
+ ajax.get(self.smartFlowServerContext + '/manage/bizorgan/getOrgRootTree', {
231
+ params: {
232
+ bizOrganTreeType: organTreeType
233
+ }
234
+ }).then(resp => {
235
+ if (resp.data.code === 200) {
236
+ let data = resp.data.data
237
+ if (data.length > 0) {
238
+ data.forEach(item => {
239
+ let obj = {}
240
+ obj.type = item.bizOrganType
241
+ obj.id = item.id
242
+ obj.organId = item.bizOrganId
243
+ obj.orders = item.orders
244
+ obj.title = item.bizOrganName
245
+ obj.name = item.bizOrganName
246
+ obj.com = item.bizOrganId
247
+ obj.code = item.bizOrganCode
248
+ obj.loading = false
249
+ obj.children = []
250
+ obj.hasChild = true
251
+ organTreeList.push(obj)
252
+ })
253
+ }
254
+ organTree.push(organTreeList)
255
+ //去重
256
+ const codesSeen = new Map()
257
+ organTree = organTree.reduce((acc, item, index) => {
258
+ if (!codesSeen.has(item.code)) {
259
+ codesSeen.set(item.code, index)
260
+ acc.push(item)
261
+ }
262
+ return acc
263
+ }, [])
264
+ self.readingRangeBM = JSON.parse(JSON.stringify(organTree))
265
+ self.readingRange = JSON.parse(JSON.stringify(organTree))
266
+ }
267
+ })
268
+ }
269
+ },
270
+
271
+ getOrganTreeByProType(row, permScope, organTreeType) {
272
+ const self = this
273
+ return new Promise((resolve, reject) => {
274
+ let organTree = []
275
+ let childsTree = []
276
+ if (permScope && permScope.length > 0) {
277
+ let params = {
278
+ orgTreeType: organTreeType,
279
+ }
280
+ permScope = permScope.split(';')
281
+
282
+ const requests = permScope.map(perm => {
283
+ return ajax.get(self.smartFlowServerContext + '/manage/organ/get/' + perm, { params: params })
284
+ .then(resp => {
285
+ if (resp.data.code === 200) {
286
+ return resp.data.data
287
+ } else {
288
+ return []
289
+ }
290
+ })
291
+ .catch(err => {
292
+ console.error(err)
293
+ return []
294
+ })
295
+ })
296
+
297
+ Promise.all(requests)
298
+ .then(results => {
299
+ results.forEach(data => {
300
+ if (data) {
301
+ let obj = {
302
+ type: data.organType,
303
+ id: data.id,
304
+ organId: data.organId,
305
+ orders: data.orders,
306
+ title: data.organName,
307
+ name: data.organName,
308
+ com: data.organId,
309
+ code: data.organCode,
310
+ loading: false,
311
+ checked: false,
312
+ children: [],
313
+ hasChild: true,
314
+ }
315
+ childsTree.push(obj)
316
+ }
317
+ })
318
+
319
+ organTree.push(childsTree)
320
+ const codesSeen = new Map()
321
+ organTree = organTree.reduce((acc, item, index) => {
322
+ if (!codesSeen.has(item.code)) {
323
+ codesSeen.set(item.code, index)
324
+ acc.push(item)
325
+ }
326
+ return acc
327
+ }, [])
328
+ resolve(organTree)
329
+ })
330
+ .catch(err => {
331
+ reject(err)
332
+ })
333
+ } else {
334
+ resolve([])
335
+ }
336
+ })
337
+ },
338
+ //获取人员树信息(数据初始化)
339
+ async getReadingRange(row, organTreeType) {
340
+ let self = this
341
+ var permScope = row.substring(row.indexOf('U:'))
342
+ permScope = permScope.substring(2, permScope.indexOf(','))
343
+ let permScopeTwo = permScope.split(';')
344
+ if (permScopeTwo.length > 0 && permScopeTwo[0]) {
345
+ let promises = []
346
+ for (let i = 0; i < permScopeTwo.length; i++) {
347
+ let promise = ajax.get(self.smartFlowServerContext + '/manage/user/get/' + permScopeTwo[i] + '?treeType=' + organTreeType)
348
+ .then(resp => {
349
+ if (resp.data.code === 200) {
350
+ return resp.data.data.organCode
351
+ }
352
+ })
353
+ promises.push(promise)
354
+ }
355
+ Promise.all(promises).then(async (result) => {
356
+ const uniqueResults = [...new Set(result.filter(Boolean))]
357
+ permScope = uniqueResults.join(';')
358
+ self.readingRange = await this.getOrganTreeByProType(row, permScope, organTreeType)
359
+ self.organTreeRedis(this.permScope, self.readingRange)
360
+ })
361
+ } else {
362
+ //对于流程类型中没有规定人员范围但规定组织范围的情况
363
+ self.readingRange = await this.getOrganTreeByProType(row, row.substring(2, row.indexOf(',')), organTreeType)
364
+ }
365
+
366
+ },
367
+
368
+ // closeTags(index, info) {
369
+ // let type = info.split(',')[1]
370
+ // let data = info.split(',')[0]
371
+ // this.readingRangeScPerDel(index, data)
372
+ // },
373
+
374
+ // //权限范围人员单条删除
375
+ // readingRangeScPerDel(res, info) {
376
+ // let self = this
377
+ // console.log(this.treeUserValue,"treeUserValue")
378
+ // console.log(info,"info")
379
+ // let index = this.treeUserValue.findIndex(item => {
380
+ // return item === info
381
+ // })
382
+ // if (index !== -1) {
383
+ // self.treeUserValue = self.treeUserValue.filter((_, i) => i !== index)
384
+ // self.selectedKeys = self.selectedKeys.filter((_, i) => i !== index)
385
+ // // self.selectedKeys.splice(index, 1)
386
+ // }
387
+ // let orgList = []
388
+ // let organList = []
389
+ // orgList.push(info)
390
+ // info = info.replace(',', ':')
391
+ // self.countersignersTagsData.forEach(organ => {
392
+ // if (organ.indexOf(info) == -1) {
393
+ // organList.push(organ)
394
+ // }
395
+ // })
396
+ // self.countersignersTagsData = organList
397
+ // },
398
+
399
+ selectUserChange(node) {
400
+ let self = this
401
+ if (node.length > 0) {
402
+ if (self.currentNodeUser !== node[0]) {
403
+ self.currentNodeUser = node[0]
404
+
405
+ self.form.organId = self.currentNodeUser.id
406
+ self.form.organTitle = self.currentNodeUser.title
407
+
408
+ if (node[0].children.length <= 0) {
409
+ self.getReadingRangeData(node[0], function (data) {
410
+ self.$set(node[0], 'children', data)
411
+ })
412
+ }
413
+ self.$set(node[0], 'expand', true)
414
+ }
415
+ } else {
416
+ self.$set(self.currentNodeUser, 'expand', !self.currentNodeUser.expand)
417
+ self.currentNodeUser.selected = true
418
+ }
419
+ },
420
+ //获取用户信息(懒加载)(展开人员树时触发)
421
+ loadReadingRangeData(node, callback) {
422
+ this.getReadingRangeData(node, function (data) {
423
+ if (data.length > 0) {
424
+ callback(data)
425
+ }
426
+ })
427
+ },
428
+ getReadingRangeData(node, callback) {
429
+ let self = this
430
+ ajax.get(self.smartFlowServerContext + '/manage/organ/getOrgSubNodes', {
431
+ params: {
432
+ code: node.code,
433
+ orgTreeType: self.organTreeType
434
+ }
435
+ }).then(function (resp) {
436
+ const childs = []
437
+ if (resp.data.code === 200) {
438
+ let nodeDatas = resp.data.data
439
+ if (nodeDatas.length > 0) {
440
+ nodeDatas.forEach(item => {
441
+ let obj = {}
442
+ let typeName = ''
443
+ if ('com' === item.organType) {
444
+ typeName = '(公司)'
445
+ } else if ('dept' === item.organType) {
446
+ typeName = '(部门)'
447
+ }
448
+ // obj.disableCheckbox = true
449
+ obj.type = item.organType
450
+ obj.id = item.id
451
+ obj.title = item.organName + typeName
452
+ obj.name = item.organName
453
+ obj.com = item.organId
454
+ obj.organId = item.organId
455
+ obj.code = item.organCode
456
+ obj.loading = false
457
+ obj.children = []
458
+ obj.hasChild = true
459
+ childs.push(obj)
460
+ })
461
+ } else {
462
+ self.$set(node, 'hasChild', false)
463
+ self.$delete(node, 'loading')
464
+ }
465
+ if (callback) {
466
+ callback(childs)
467
+ }
468
+ } else {
469
+ self.$set(node, 'hasChild', false)
470
+ self.$delete(node, 'loading')
471
+ if (callback) {
472
+ callback()
473
+ }
474
+ }
475
+ })
476
+ },
477
+
478
+ //权限范围用户点击事件(点击人员树,触发查询,显示在右侧)
479
+ selectReRaYHChange(data, info) {
480
+ let self = this
481
+ const user = sessionStorage.getItem('userInfo')
482
+ const jsonArray = JSON.parse(user)
483
+ var userPermScope = self.permScope.substring(self.permScope.indexOf('U:'))
484
+ userPermScope = userPermScope.substring(2, userPermScope.indexOf(','))
485
+ userPermScope = userPermScope.split(';')
486
+ //self.selectUserChange(data)
487
+ let treeUserCenters = []
488
+
489
+ if (self.permScope == 'all' || self.permScope == 'undefined') {
490
+ let userIdSet = new Set()
491
+ data.forEach(itemCom => {
492
+
493
+ ajax.get(self.smartFlowServerContext + '/manage/user/getList', {
494
+ params: {
495
+ organId: itemCom.organId,
496
+ orgTreeType: self.organTreeType,
497
+ limit: '1000',
498
+ directChild: true,
499
+ }
500
+ }).then(function (resp) {
501
+ if (resp.data.code === 200) {
502
+ let nodeUser = resp.data.data.rows ? resp.data.data.rows : resp.data.data
503
+ nodeUser.forEach(item => {
504
+ if (!userIdSet.has(item.userId)) {
505
+ userIdSet.add(item.userId)
506
+ treeUserCenters.push({
507
+ userId: item.userId,
508
+ userName: item.userName,
509
+ nameItem: item.superiorOrgName,
510
+ organName: item.organName
511
+ })
512
+ }
513
+ })
514
+ }
515
+
516
+ })
517
+ })
518
+ } else {
519
+ let userIdSet = new Set()
520
+ data.forEach(itemCom => {
521
+ ajax.get(self.smartFlowServerContext + '/manage/user/getList', {
522
+ params: {
523
+ organId: itemCom.organId,
524
+ orgTreeType: self.organTreeType,
525
+ limit: '1000',
526
+ directChild: true,
527
+ }
528
+ }).then(function (resp) {
529
+ if (resp.data.code === 200) {
530
+ let nodeUser = resp.data.data.rows ? resp.data.data.rows : resp.data.data
531
+ nodeUser.forEach(item => {
532
+ if ((!userIdSet.has(item.userId) && userPermScope.includes(item.userId)) || userPermScope.length <= 0 || !userPermScope[0]) {
533
+ userIdSet.add(item.userId)
534
+ treeUserCenters.push({
535
+ userId: item.userId,
536
+ userName: item.userName,
537
+ nameItem: item.superiorOrgName,
538
+ organName: item.organName
539
+ })
540
+ }
541
+ })
542
+ }
543
+
544
+ })
545
+
546
+ })
547
+ }
548
+
549
+ self.treeUserCenterValue = treeUserCenters
550
+ },
551
+
552
+ // 人员选中
553
+ getReadingRangeUser(row) {
554
+ let self = this;
555
+ self.userNum = '2';
556
+ if (row.length > self.selectedKeys.length) {
557
+ // 用户选择了新人员
558
+ self.treeUserValue = row;
559
+ self.selectedKeys = row;
560
+
561
+ let index = row.length - 1;
562
+ let organName = row[index];
563
+
564
+ if (!self.countersignersTagsData.includes(organName)) {
565
+ self.countersignersTagsData.push(organName);
566
+ }
567
+
568
+ self.organChange(self.countersignersTagsData);
569
+
570
+ } else if (row.length < self.selectedKeys.length) {
571
+ // 用户取消了选择
572
+ let diff = self.selectedKeys.find(item => !row.includes(item));
573
+
574
+ // 从 countersignersTagsData 中移除取消的用户
575
+ if (diff) {
576
+ self.countersignersTagsData = self.countersignersTagsData.filter(item => item !== diff);
577
+ self.selectedKeys = row; // 更新选中数据
578
+ }
579
+ }
580
+ },
581
+
582
+ //数据初始化?
583
+ organTreeRedis(row, readingRange) {
584
+ const user = sessionStorage.getItem('userInfo')
585
+ const jsonArray = JSON.parse(user)
586
+ if (row == 'undefined' || row == 'all') {
587
+
588
+ ajax.get(this.smartFlowServerContext + '/manage/processDesign/getOrgan?orgId=' + (jsonArray.organId)
589
+ ).then(resp => {
590
+ if (resp.data.code === '200') {
591
+ this.organTree = resp.data.data
592
+ }
593
+ })
594
+ } else {
595
+ let organIds =[]
596
+ readingRange[0].forEach(item => {
597
+ organIds.push(item.organId)
598
+ })
599
+ console.log(organIds)
600
+ ajax.get(this.smartFlowServerContext + '/manage/user/getAllUsersInfo', {
601
+ params: {
602
+ organIds: organIds.join(','),
603
+ permScopeList: row,
604
+ orgTreeType: this.organTreeType
605
+ }
606
+ }
607
+ ).then(resp => {
608
+ if (resp.data.code === '200') {
609
+ for (let key in resp.data.data) {
610
+ const dataArr = [[key, resp.data.data[key]]]
611
+ for (let i = 0; i < dataArr.length; i++) {
612
+ const [key, value] = dataArr[i]
613
+ this.$set(this.organTree.userMap, key, value)
614
+ }
615
+ }
616
+ console.log(this.organTree.userMap,"userMap")
617
+ }
618
+ })
619
+
620
+ }
621
+
622
+ },
623
+
624
+ clearCache() {
625
+ this.readingRangeBM = []
626
+ this.readingRange = []
627
+ this.roleList = []
628
+ this.readingRangePost = []
629
+ this.treeUserCenterValue = []
630
+ this.treePostCenterValue = []
631
+ this.treeValueBM.forEach(item => {
632
+ item.checked = false
633
+ })
634
+ this.treeValueBM = []
635
+ this.treeUserValue = []
636
+ //角色集合
637
+ this.noticeRoleList = []
638
+ this.noticeRoleNameList = []
639
+ this.selectedKeys = []
640
+ //岗位集合
641
+ this.postList = []
642
+ this.treePostValue = []
643
+ this.processPostList = []
644
+ this.treeLength = 0
645
+ this.countersignersTagsData = []
646
+ this.postKeys = []
647
+ //组织类型
648
+ this.readingRangeOrgType = []
649
+ this.readingRangeOrgType.forEach(item => {
650
+ item.checked = false
651
+ })
652
+ this.treeOrgTypeValue = []
653
+ },
654
+ getSystemConfig() {
655
+ const self = this
656
+ ajax.get(self.smartFlowServerContext + '/anon/systemConfig/getSystemConfig').then(function (resp) {
657
+ const result = resp.data
658
+ if (result && result.code === '200') {
659
+ self.ucAdapterType = result.data.ucAdapterType
660
+ }
661
+ }).catch(err => {
662
+ console.log(err)
663
+ })
664
+ },
665
+ //数据初始化
666
+ toggleShowHelpBox(permScope, inputValue, organTreeType, id) {
667
+ this.clearCache()
668
+ this.id = id
669
+ this.permScope = permScope
670
+ this.organTreeType = organTreeType
671
+ // this.organTreeRedis(this.permScope)
672
+ if (inputValue) {
673
+ //加入已选择的数据
674
+ this.getUser(inputValue)
675
+ }
676
+ if (this.permScope == 'all') {
677
+ this.getRootOrganTree(organTreeType)
678
+ this.ucAdapterType === 'sc' ? this.getReadingRangeOrgType(permScope, organTreeType) : ''
679
+ } else {
680
+ this.getReadingRange(this.permScope, this.organTreeType)
681
+ }
682
+
683
+ },
684
+
685
+ showUserDetail(item) {
686
+ if (item.organName) {
687
+ return `(${item.organName} )`
688
+ }
689
+ },
690
+ dataNameClick(data) {
691
+ this.dataName = data
692
+ },
693
+ },
694
+
695
+ watch: {
696
+ countersignersTagsData: {
697
+ handler(newVal, oldVal) {
698
+ console.log("countersignersTagsData",newVal)
699
+ let organ = []
700
+ let names = []
701
+ let organs = []
702
+ this.treeValueBM.forEach(item => {
703
+ organ.push(item.code)
704
+ names.push(item.name)
705
+ organs.push(item.code + ':' + item.name)
706
+ })
707
+ let nameValue = []
708
+ let users = []
709
+ this.treeUserValue.forEach(item => {
710
+ const parts = item.split(',')
711
+ nameValue.push(parts[0])
712
+ names.push(parts[1])
713
+ users.push(parts[0] + ':' + parts[1])
714
+ })
715
+ let roleList = []
716
+ let roles = []
717
+ this.noticeRoleList.forEach(item => {
718
+ roleList.push(item.split(',')[0])
719
+ names.push(item.split(',')[1])
720
+ roles.push(item.split(',')[0] + ':' + item.split(',')[1])
721
+ })
722
+ let postList = []
723
+ let positions = []
724
+ this.treePostValue.forEach(item => {
725
+ postList.push(item.split(',')[0])
726
+ names.push(item.split(',')[1])
727
+ positions.push(item.split(',')[0] + ':' + item.split(',')[1])
728
+ })
729
+ let orgTypeList = []
730
+ let orgTypes = []
731
+ this.treeOrgTypeValue.forEach(item => {
732
+ orgTypeList.push(item.bizTypeCode)
733
+ names.push(item.typeName)
734
+ orgTypes.push(item.bizTypeCode + ':' + item.typeName)
735
+ })
736
+ let value = 'O:' + organ.join(';') + ',' + 'U:' + nameValue.join(';') + ',' + 'P:' + postList.join(';') + ',' + 'R:' + roleList.join(';') + ',' + 'RP:,T:' + orgTypeList.join(';')
737
+ let nameStr = names.join(',')
738
+ let detail = {
739
+ organs: organs.join(','),
740
+ users: users.join(','),
741
+ roles: roles.join(','),
742
+ positions: positions.join(','),
743
+ types: orgTypes.join(','),
744
+ }
745
+ this.$emit('update-cand-groups', value, nameStr, detail, this.item.id)
746
+ },
747
+ deep: true // 深度监听数组的变化
748
+ }
749
+ }
750
+ }
751
+ </script>
752
+
753
+ <style scoped>
754
+ .relativePositionAddButton {
755
+ float: right;
756
+ margin-top: 20px;
757
+ }
758
+
759
+ .relativePositionRemoveButton {
760
+ float: right;
761
+ margin: 2px;
762
+ }
763
+
764
+ .cont {
765
+ display: flex;
766
+ justify-content: left;
767
+ margin-top: 10px;
768
+ border: 1px solid #cecece;
769
+ padding: 10px;
770
+ }
771
+
772
+ .contLeft {
773
+ flex: 0 0 40%;
774
+ z-index: 1;
775
+ margin-right: 10px
776
+ }
777
+
778
+ .contRight {
779
+ flex: 0 0 50%;
780
+ margin-top: 33.98px;
781
+ min-height: 350px;
782
+ }
783
+
784
+ .checkbox-container {
785
+ display: flex;
786
+ flex-direction: column;
787
+ line-height: 30px;
788
+ }
789
+
790
+ .overflowAuto {
791
+ min-height: 350px;
792
+ overflow-y: auto;
793
+ }
794
+
795
+ .contLeftTwo {
796
+ flex: 0 0 50%;
797
+ z-index: 1;
798
+ margin-right: 10px;
799
+ }
800
+
801
+ .contRightTwo {
802
+ flex: 0 0 49%;
803
+ margin-top: 30px;
804
+ }
805
+
806
+ /deep/ .ivu-checkbox-input {
807
+ width: 136px;
808
+ }
809
+ /deep/.custom-select .ivu-select {
810
+ height: 80px; /* 控制总体高度 */
811
+ min-height: 80px;
812
+ line-height: normal; /* 避免行高过大导致居中 */
813
+ box-sizing: border-box;
814
+ }
815
+
816
+ /deep/.custom-select .ivu-select-input {
817
+ height: auto !important;
818
+ line-height: normal !important;
819
+ padding: 0 !important;
820
+ margin-top: 0 !important;
821
+ }
822
+
823
+ /deep/.custom-select .ivu-select-selection {
824
+ display: flex !important;
825
+ flex-wrap: wrap !important;
826
+ align-items: flex-start !important;
827
+ height: 80px; /* 与上面的高度一致 */
828
+ padding: 8px !important;
829
+ line-height: normal !important;
830
+ overflow-y: auto;
831
+ }
832
+
833
+ /deep/.custom-select .ivu-select-selection__choice {
834
+ margin: 0 5px 5px 0;
835
+ vertical-align: top;}
836
+
837
+ /* 可选:调整下拉箭头的位置 */
838
+ /deep/.custom-select .ivu-select-arrow {
839
+ display: none;
840
+ }
841
+ </style>