@lambo-design/workflow-approve 1.0.0-beta.9 → 1.0.0-beta.90

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