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

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