@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,1948 @@
1
+ <template>
2
+ <div>
3
+ <Modal v-model="modalBoxShow" :width="1550" title="选择候选人" :closable="false" @on-ok="onOk">
4
+ <div style="margin-top: 10px">
5
+ <Select v-model="organModel" prefix="md-search"
6
+ filterable multiple :max-tag-count="0"
7
+ @on-change="organChange($event)"
8
+ placeholder="输入关键字查询" style="width:60em;">
9
+ <OptionGroup label="组织">
10
+ <Option v-for="(value, key) in organTree.organMap" :key="key" :value="`${key}:${value},1`">
11
+ <span>{{ value }}</span>
12
+ </Option>
13
+ </OptionGroup>
14
+ <OptionGroup label="人员">
15
+ <Option v-for="(value, key) in organTree.userMap" :key="key" :value="`${key}:${value},2`">
16
+ <span>{{ value }}</span>
17
+ </Option>
18
+ </OptionGroup>
19
+ <OptionGroup label="角色">
20
+ <Option v-for="(value, key) in organTree.roleMap" :key="key" :value="`${key}:${value},3`">
21
+ <span>{{ value }}</span>
22
+ </Option>
23
+ </OptionGroup>
24
+ <OptionGroup label="岗位" v-if="ucAdapterType === 'x1'">
25
+ <Option v-for="(value, key) in organTree.postMap" :key="key" :value="`${key}:${value},4`">
26
+ <span>{{ value }}</span>
27
+ </Option>
28
+ </OptionGroup>
29
+ <OptionGroup label="组织类型" v-if="ucAdapterType === 'sc'">
30
+ <Option v-for="(value, key) in organTree.typeMap" :key="key" :value="`${key}:${value},5`" >
31
+ <span>{{value}}</span>
32
+ </Option>
33
+ </OptionGroup>
34
+ </Select>
35
+ <Button type="primary" :loading="loading" @click="organTreeRedisUpdate" style="float: right;">
36
+ <span v-if="!loading">更新查询数据</span>
37
+ <span v-else>更新中...</span>
38
+ </Button>
39
+ </div>
40
+ <div class="cont">
41
+ <div
42
+ :class="[this.dataName == '' || this.dataName == '0' || this.dataName == '2' || this.dataName == '4' || (this.dataName == '3' && ucAdapterType =='sc') ? 'contLeftTwo': 'contLeft']">
43
+
44
+ <Tabs :animated="false" @on-click="dataNameClick">
45
+ <TabPane label="选组织">
46
+ <div class="overflowAuto">
47
+ <div v-if="readingRangeBM.length === 0">暂无数据</div>
48
+ <Tree v-else v-for="(item,index) in readingRangeBM" :key="index" :data="item" ref="treeBM"
49
+ check-strictly show-checkbox expand-node
50
+ :load-data="loadDataBm" @on-check-change="selectReRaBMChange"
51
+ @on-select-change="selectOrgChange"></Tree>
52
+ </div>
53
+ </TabPane>
54
+
55
+
56
+ <TabPane label="选人员">
57
+ <div class="overflowAuto">
58
+ <div v-if="readingRange.length === 0">暂无数据</div>
59
+ <Tree v-else v-for="(item,index) in readingRange" :key="index" :data="item" ref="treeEY" check-strictly
60
+ show-checkbox expand-node
61
+ :load-data="loadReadingRangeData" :checkable="true" @on-check-change="selectReRaYHChange"
62
+ @on-select-change="selectReRaYHChange"></Tree>
63
+ </div>
64
+ </TabPane>
65
+
66
+
67
+ <TabPane label="选角色">
68
+ <div class="overflowAuto">
69
+ <CheckboxGroup v-model="noticeRoleList" class="checkbox-container" @on-change="getReadingRangeRole">
70
+ <Checkbox v-for="(item) in roleList" :key="item.roleId" :label="item.roleId+','+item.name">
71
+ {{ item.name }}
72
+ </Checkbox>
73
+ </CheckboxGroup>
74
+ <div v-show="roleList.length == 0">暂无数据</div>
75
+ </div>
76
+ </TabPane>
77
+ <TabPane label="选岗位" v-if="ucAdapterType === 'x1'">
78
+ <div class="overflowAuto">
79
+ <div v-if="readingRangePost.length === 0">暂无数据</div>
80
+ <Tree v-else v-for="(item,index) in readingRangePost" :key="index" :data="item" ref="treePost"
81
+ check-strictly show-checkbox expand-node
82
+ :load-data="loadReadingRangeDataPost" :checkable="true" @on-check-change="selectReRaYHChangePost"
83
+ @on-select-change="selectPostChange"></Tree>
84
+ </div>
85
+ </TabPane>
86
+ <TabPane label="选组织类型" v-if="ucAdapterType === 'sc'">
87
+ <div class="overflowAuto">
88
+ <div v-if="readingRangeOrgType.length === 0">暂无数据</div>
89
+ <Tree v-else v-for="(item,index) in readingRangeOrgType" :key="index" :data="item" ref="treeBM" check-strictly show-checkbox expand-node
90
+ :load-data="loadOrgType" @on-check-change="checkOrgTypeChange"></Tree>
91
+ </div>
92
+ </TabPane>
93
+
94
+ </Tabs>
95
+
96
+ </div>
97
+ <div class="contRight" v-if="this.dataName == '1' || (this.dataName == '3' && ucAdapterType === 'x1')">
98
+ <Card dis-hover>
99
+ <div class="overflowAuto" v-if="dataName === 1">
100
+ <CheckboxGroup v-model="treeUserValue" class="checkbox-container" @on-change="getReadingRangeUser">
101
+ <Checkbox v-for="(item) in treeUserCenterValue" :key="item.userId"
102
+ :label="item.userId+','+item.userName">
103
+ {{ item.userName }} {{ showUserDetail(item) }}
104
+ </Checkbox>
105
+ </CheckboxGroup>
106
+ <CheckboxGroup v-model="treeUserValue" class="checkbox-container" @on-change="getReadingRangeUser">
107
+ <Checkbox v-for="(item) in treeUserNameCenterValue" :key="item.userId"
108
+ :label="item.userId+','+item.userName">
109
+ {{ item.userName }}
110
+ </Checkbox>
111
+ </CheckboxGroup>
112
+ </div>
113
+ <div class="overflowAuto" v-else-if="dataName === 3 && ucAdapterType === 'x1'">
114
+ <CheckboxGroup v-model="treePostValue" class="checkbox-container" @on-change="getReadingRangePosts">
115
+ <Checkbox v-for="(item) in treePostCenterValue" :key="item.positionId"
116
+ :label="item.positionId+','+item.positionName">
117
+ {{ item.positionName }} ( {{ item.nameItem }} {{ item.orgName ? ',' + item.orgName : '' }} )
118
+ </Checkbox>
119
+ </CheckboxGroup>
120
+ <CheckboxGroup v-model="treePostValue" class="checkbox-container" @on-change="getReadingRangePosts">
121
+ <Checkbox v-for="(item) in treePostNameCenterValue" :key="item.positionId"
122
+ :label="item.positionId+','+item.positionName">
123
+ {{ item.positionName }}
124
+ </Checkbox>
125
+ </CheckboxGroup>
126
+ </div>
127
+ <div class="overflowAuto" v-else></div>
128
+ </Card>
129
+ </div>
130
+ <div
131
+ :class="[this.dataName == '' || this.dataName == '0' || this.dataName == '2' || this.dataName == '4' || (this.dataName == '3' && ucAdapterType =='sc') ? 'contRightTwo': 'contRight']">
132
+ <Card dis-hover>
133
+ <div class="overflowAuto">
134
+ <Title>已选择:{{ treeLength }}/100 <a type="text" style="float: right;color: #989898"
135
+ @click="readingRangeEmpty">清空已选</a></Title>
136
+ <Collapse v-model="value" style="margin-top: 10px">
137
+ <Panel name="1">
138
+ <span class="fontSize">组织</span>
139
+ <template #content>
140
+ <div v-for="(item,index) in treeValueBM" :key="item.key">
141
+ <div v-if="item.type !='user'" style="margin-bottom: 10px">
142
+ <span>{{ item.name }}</span>
143
+ <Icon type="md-close" style="float: right" @click="readingRangeDepDel(index,item)"/>
144
+ </div>
145
+ </div>
146
+ </template>
147
+ </Panel>
148
+ <Panel name="2">
149
+ <span class="fontSize">人员</span>
150
+ <template #content>
151
+ <div v-for="(item,index) in treeUserValue" :key="index">
152
+ <div style="margin-bottom: 10px">
153
+ <span>{{ item }}</span>
154
+ <Icon type="md-close" style="float: right" @click="readingRangeScPerDel(index,item)"/>
155
+ </div>
156
+ </div>
157
+ </template>
158
+ </Panel>
159
+ <Panel name="3">
160
+ <span class="fontSize">角色</span>
161
+ <template #content>
162
+ <div v-for="item in noticeRoleNameList" :key="item.key">
163
+ <div style="margin-bottom: 10px">
164
+ <span>{{ item }}</span>
165
+ <Icon type="md-close" style="float: right" @click="noticeRoleNameListDel(item)"/>
166
+ </div>
167
+ </div>
168
+ </template>
169
+ </Panel>
170
+ <Panel name="4" v-if="ucAdapterType === 'x1'">
171
+ <span class="fontSize">岗位</span>
172
+ <template #content>
173
+ <div v-for="item in treePostValue" :key="item.key">
174
+ <div style="margin-bottom: 10px">
175
+ <span>{{ item }}</span>
176
+ <Icon type="md-close" style="float: right" @click="processPostDel(item)"/>
177
+ </div>
178
+ </div>
179
+ </template>
180
+ </Panel>
181
+ <Panel name="5" v-if="ucAdapterType === 'sc'">
182
+ <span class="fontSize">组织类型</span>
183
+ <template #content>
184
+ <div v-for="(item, itemIndex) in treeOrgTypeValue" :key="itemIndex">
185
+ <span>{{ item.typeName }}</span>
186
+ <Icon type="md-close" style="float: right" @click="processOrgTypeDel(itemIndex,item)"/>
187
+ </div>
188
+ </template>
189
+ </Panel>
190
+ </Collapse>
191
+ </div>
192
+ </Card>
193
+ </div>
194
+ </div>
195
+ </Modal>
196
+ </div>
197
+ </template>
198
+
199
+ <script>
200
+ import ajax from "@lambo-design/shared/utils/ajax";
201
+ import Title from "./title";
202
+ import TreeSelect from '@lambo-design/tree-select'
203
+
204
+ export default {
205
+ name: "candidateGroupsHelpBox",
206
+ props: {
207
+ smartFlowServerContext: {
208
+ type: String,
209
+ default: '/api/smart-flow-server',
210
+ },
211
+ upmsServerContext: {
212
+ type: String,
213
+ default: '/api/upms-server',
214
+ },
215
+ },
216
+ components: {
217
+ Title,
218
+ TreeSelect
219
+ },
220
+ data() {
221
+ return {
222
+ id: "",
223
+ ucAdapterType: 'x1',
224
+ treePostNameCenterValue: [],
225
+ treeUserNameCenterValue: [],
226
+ selectedKeys: [],
227
+ postKeys: [],
228
+ postAllList: [],
229
+ noticeList: [],
230
+ orgList: [],
231
+ userNum: "0",
232
+ permScope: "",
233
+ organTreeType: '00',
234
+ organId: "",
235
+ organModel: [],
236
+ organTree: {
237
+ organMap: {},
238
+ userMap: {},
239
+ roleMap: {},
240
+ postMap: {},
241
+ typeMap: {},
242
+ },
243
+ readingRangePost: [],
244
+ treeUserValueCenter: [],
245
+ treeLength: 0,
246
+ treeValueBM: [],
247
+ treeOrgTypeValue:[],
248
+ dataName: "",
249
+ postList: [],//选中岗位集合(右侧显示)
250
+ processPostList: [],//岗位集合
251
+ noticeRoleNameList: [],//角色选择集合
252
+ roleList: [],//角色集合
253
+ noticeRoleList: [],//选中角色集合(右侧显示)
254
+ treeUserValue: [],//选中的人员(右侧显示)
255
+ treePostValue: [],
256
+ treeUserCenterValue: [],
257
+ treePostCenterValue: [],
258
+ readingRangeBM: [],//权限范围数据组织
259
+ readingRange: [],//权限范围数据人员
260
+ readingRangeOrgType:[],//权限范围数据部门
261
+ modalBoxShow: false,
262
+ placeholder: "自动同意",
263
+ loading: false,
264
+ form: {
265
+ userId: '',
266
+ userName: '',
267
+ organId: '',
268
+ organTitle: '',
269
+ directChild: false,
270
+ isAdmin: ''
271
+ },
272
+ value: ['1', '2', '3', '4', '5'],
273
+ currentNode: {},
274
+ currentNodeUser: {},
275
+ currentNodePost: {},
276
+ ruleValidate: {
277
+ organization: [
278
+ {required: true, message: '请选择指定相对岗位的组织', trigger: 'blur'}
279
+ ],
280
+ position: [
281
+ {required: true, message: '请选择指定岗位', trigger: 'blur'}
282
+ ],
283
+ },
284
+
285
+ };
286
+ },
287
+ created() {
288
+ this.getSystemConfig()
289
+ },
290
+ computed: {
291
+ },
292
+ mounted: function () {
293
+ },
294
+ methods: {
295
+ getOrgan(row) {
296
+ if (row.organs){
297
+ let self = this
298
+ self.organModel = []
299
+ let organs = row.organs
300
+ let organList = organs.split(",")
301
+ if (organs && organList.length > 0) {
302
+ organList.forEach(item => {
303
+ let organ = {
304
+ code: item.split(':')[0],
305
+ name: item.split(':')[1],
306
+ }
307
+ self.treeValueBM.push(organ)
308
+ self.orgList.push(organ)
309
+ self.organModel.push(item + ',1')
310
+ self.userNum = "1"
311
+ self.updateLength()
312
+ })
313
+ }
314
+ }
315
+ },
316
+ getUser(row) {
317
+ if (row.users){
318
+ let self = this
319
+ self.selectedKeys = []
320
+ self.treeUserValue = []
321
+ self.treeUserNameCenterValue = []
322
+ let users = row.users
323
+ let userList = users.split(",")
324
+ if (users && userList.length > 0) {
325
+ userList.forEach(item => {
326
+ let userId = item.split(':')[0]
327
+ let userName = item.split(':')[1]
328
+ let user = {
329
+ userId: userId,
330
+ userName: userName,
331
+ }
332
+ let userStr = userId + "," + userName
333
+ self.treeUserValue.push(userStr)
334
+ self.treeUserNameCenterValue.push(user)
335
+ self.selectedKeys.push(userStr)
336
+ self.organModel.push(item + ",2")
337
+ self.userNum = "1"
338
+ self.updateLength()
339
+ })
340
+ }
341
+ }
342
+ },
343
+ getRole(row) {
344
+ if (row.roles){
345
+ let self = this
346
+ self.noticeRoleList = []
347
+ self.noticeList = []
348
+ self.noticeRoleNameList = []
349
+ let roles = row.roles
350
+ let roleList = roles.split(",")
351
+ if (roles && roleList.length > 0) {
352
+ roleList.forEach(item => {
353
+ let roleId = item.split(':')[0]
354
+ let roleName = item.split(':')[1]
355
+ self.noticeRoleNameList.push(roleName)
356
+ self.organModel.push(item + ',3')
357
+ let roles = roleId + "," + roleName
358
+ self.noticeRoleList.push(roles)
359
+ self.noticeList.push(roles)
360
+ self.updateLength()
361
+ })
362
+ }
363
+ }
364
+ },
365
+ getPost(row) {
366
+ if (row.posts){
367
+ let self = this
368
+ self.treePostValue = []
369
+ self.postKeys = []
370
+ self.treePostNameCenterValue = []
371
+ let positions = row.positions
372
+ let positionList = positions.split(",")
373
+ if (positions && positionList.length > 0) {
374
+ positionList.forEach(item => {
375
+ let positionId = item.split(':')[0]
376
+ let positionName = item.split(':')[1]
377
+ let position = {
378
+ positionId: positionId,
379
+ positionName: positionName,
380
+ }
381
+ let post = positionId + "," + positionName
382
+ self.treePostValue.push(post)
383
+ self.postKeys.push(post)
384
+ // resp.data.data.code = resp.data.data.orgCode
385
+ // self.treePostNameCenterValue.push(resp.data.data)
386
+ self.treePostNameCenterValue.push(position)
387
+ self.organModel.push(item + ',4')
388
+ self.updateLength()
389
+ })
390
+ }
391
+ }
392
+
393
+ },
394
+ getOrgType(row) {
395
+ if (row.types){
396
+ let self = this
397
+ let types = row.types
398
+ let typeList = types.split(",")
399
+ if (types && typeList.length > 0) {
400
+ typeList.forEach(item => {
401
+ let type = {
402
+ bizTypeCode: item.split(':')[0],
403
+ typeName: item.split(':')[1],
404
+ }
405
+ self.treeOrgTypeValue.push(type)
406
+ self.updateLength()
407
+ })
408
+ }
409
+ }
410
+ },
411
+
412
+ getRootOrganTree(organTreeType){
413
+ let self = this
414
+ let organTreeList = []
415
+ let organTree = []
416
+ if (self.ucAdapterType == 'x1'){
417
+ let parentId = organTreeType == '00' ? 'rootId' : '0'
418
+ ajax.get(self.smartFlowServerContext + '/manage/organ/getOrgSubNodes', {
419
+ params: {
420
+ code: parentId,
421
+ orgTreeType: organTreeType
422
+ }
423
+ }).then(resp => {
424
+ if (resp.data.code === 200) {
425
+ let data = resp.data.data
426
+ if (data.length > 0) {
427
+ data.forEach(item => {
428
+ let obj = {}
429
+ obj.type = item.organType
430
+ obj.id = item.id
431
+ obj.organId = item.organId
432
+ obj.orders = item.orders
433
+ obj.title = item.organName
434
+ obj.name = item.organName
435
+ obj.com = item.com
436
+ obj.code = item.organCode
437
+ obj.loading = false
438
+ obj.children = []
439
+ obj.hasChild = true
440
+ organTreeList.push(obj)
441
+ })
442
+ }
443
+ organTree.push(organTreeList);
444
+ //去重
445
+ const codesSeen = new Map();
446
+ organTree = organTree.reduce((acc, item, index) => {
447
+ if (!codesSeen.has(item.code)) {
448
+ codesSeen.set(item.code, index);
449
+ acc.push(item);
450
+ }
451
+ return acc;
452
+ }, []);
453
+ self.readingRangeBM = JSON.parse(JSON.stringify(organTree))
454
+ self.readingRange = JSON.parse(JSON.stringify(organTree))
455
+ self.readingRangePost = JSON.parse(JSON.stringify(organTree))
456
+ }
457
+ })
458
+ } else {
459
+ ajax.get(self.smartFlowServerContext + '/manage/bizorgan/getOrgRootTree', {
460
+ params: {
461
+ bizOrganTreeType: organTreeType
462
+ }
463
+ }).then(resp => {
464
+ if (resp.data.code === 200) {
465
+ let data = resp.data.data
466
+ if (data.length > 0) {
467
+ data.forEach(item => {
468
+ let obj = {}
469
+ obj.type = item.bizOrganType
470
+ obj.id = item.id
471
+ obj.organId = item.bizOrganId
472
+ obj.orders = item.orders
473
+ obj.title = item.bizOrganName
474
+ obj.name = item.bizOrganName
475
+ obj.com = item.bizOrganId
476
+ obj.code = item.bizOrganCode
477
+ obj.loading = false
478
+ obj.children = []
479
+ obj.hasChild = true
480
+ organTreeList.push(obj)
481
+ })
482
+ }
483
+ organTree.push(organTreeList);
484
+ //去重
485
+ const codesSeen = new Map();
486
+ organTree = organTree.reduce((acc, item, index) => {
487
+ if (!codesSeen.has(item.code)) {
488
+ codesSeen.set(item.code, index);
489
+ acc.push(item);
490
+ }
491
+ return acc;
492
+ }, []);
493
+ self.readingRangeBM = JSON.parse(JSON.stringify(organTree))
494
+ self.readingRange = JSON.parse(JSON.stringify(organTree))
495
+ }
496
+ })
497
+ }
498
+ },
499
+ //获取组织
500
+ async getReadingRangeBM(row, info, organTreeType) {
501
+ let self = this
502
+ self.readingRangeBM = await self.getOrganTreeByProType(row, row.substring(2, row.indexOf(",")), organTreeType);
503
+ },
504
+ getOrganTreeByProType(row, permScope, organTreeType) {
505
+ const self = this;
506
+ return new Promise((resolve, reject) => {
507
+ let organTree = [];
508
+ let childsTree = [];
509
+ if (permScope && permScope.length > 0) {
510
+ let params = {
511
+ orgTreeType: organTreeType,
512
+ };
513
+ permScope = permScope.split(';');
514
+
515
+ const requests = permScope.map(perm => {
516
+ return ajax.get(self.smartFlowServerContext + '/manage/organ/get/' + perm, { params: params })
517
+ .then(resp => {
518
+ if (resp.data.code === 200) {
519
+ return resp.data.data;
520
+ } else {
521
+ return [];
522
+ }
523
+ })
524
+ .catch(err => {
525
+ console.error(err);
526
+ return [];
527
+ });
528
+ });
529
+
530
+ Promise.all(requests)
531
+ .then(results => {
532
+ let tree
533
+ if (self.ucAdapterType === 'x1'){
534
+ tree = self.x1OrganTree(results)
535
+ } else {
536
+ tree = self.scOrganTree(results)
537
+ }
538
+ for (let value of tree) {
539
+ self.formatOrganTree(value, childsTree, organTreeType)
540
+ }
541
+ organTree.push(childsTree);
542
+ const codesSeen = new Map();
543
+ organTree = organTree.reduce((acc, item, index) => {
544
+ if (!codesSeen.has(item.code)) {
545
+ codesSeen.set(item.code, index);
546
+ acc.push(item);
547
+ }
548
+ return acc;
549
+ }, []);
550
+ resolve(organTree);
551
+ })
552
+ .catch(err => {
553
+ reject(err);
554
+ });
555
+ } else {
556
+ resolve([]);
557
+ }
558
+ });
559
+ },
560
+ x1OrganTree(results){
561
+ const nodeMap = new Map();
562
+ results.forEach(item => {
563
+ const organCode = item.organCode
564
+ const organStruPath = item.organStruPath
565
+ const parts = organStruPath.split('#').filter(p => p);
566
+ let currentNode = nodeMap.get(organCode) || { organCode, organStruPath, item, children: []};
567
+ currentNode.parts = parts;
568
+ nodeMap.set(organCode, currentNode);
569
+ });
570
+ nodeMap.forEach(node => {
571
+ const { organCode, parts } = node;
572
+ let parentCode = null;
573
+ for (let i = 0; i < parts.length - 1; i++) {
574
+ parentCode = parts[i];
575
+ const parentNode = nodeMap.get(parentCode);
576
+
577
+ if (parentNode) {
578
+ if (parentNode.organId === node.item.parentId && !parentNode.children.some(child => child.organCode === organCode)) {
579
+ parentNode.children.push(node);
580
+ } else {
581
+ // 如果直接父节点不在流程类型范围内但祖宗节点在
582
+ let children = parentNode.children;
583
+ for (let j = i + 1; j < parts.length - 1; j++) {
584
+ const partCode = parts[j];
585
+ let existingChild = children.find(child => child.organCode === partCode);
586
+
587
+ if (!existingChild) {
588
+ existingChild = { organCode: partCode, children: [] };
589
+ children.push(existingChild);
590
+ }
591
+ children = existingChild.children;
592
+ }
593
+ // 将当前节点添加到最后一个子节点的 children 中
594
+ children.push(node);
595
+ }
596
+ nodeMap.delete(organCode);
597
+ break;
598
+ }
599
+ }
600
+
601
+ });
602
+ return nodeMap.values()
603
+ },
604
+ scOrganTree(results){
605
+ const nodeMap = new Map();
606
+ results.forEach(item => {
607
+ const organId = item.organId
608
+ const parentId = item.parentId
609
+ let currentNode = nodeMap.get(organId) || { organId, parentId, item, children: []};
610
+ nodeMap.set(organId, currentNode);
611
+ });
612
+ const tree = [];
613
+ nodeMap.forEach((node, organId) => {
614
+ const parentId = node.parentId;
615
+
616
+ // 如果有父节点,则将当前节点添加到父节点的 children 数组中
617
+ if (parentId && nodeMap.has(parentId)) {
618
+ const parentNode = nodeMap.get(parentId);
619
+ parentNode.children.push(node);
620
+ } else {
621
+ tree.push(node);
622
+ }
623
+ });
624
+ return tree
625
+ },
626
+ formatOrganTree(nodeMap, childsTree, organTreeType){
627
+ const self = this
628
+ let obj = {}
629
+ if (nodeMap.item){
630
+ obj = {
631
+ type: nodeMap.item.organType,
632
+ id: nodeMap.item.id,
633
+ organId: nodeMap.item.organId,
634
+ orders: nodeMap.item.orders,
635
+ title: nodeMap.item.organName,
636
+ name: nodeMap.item.organName,
637
+ com: nodeMap.item.organId,
638
+ code: nodeMap.item.organCode,
639
+ loading: false,
640
+ checked: false,
641
+ hasChild: true,
642
+ children: [],
643
+ };
644
+ if (nodeMap.children && nodeMap.children.length > 0){
645
+ for (let child of nodeMap.children){
646
+ self.formatOrganTree(child, obj.children, organTreeType)
647
+ }
648
+ }
649
+ childsTree.push(obj);
650
+ } else {
651
+ let params = {
652
+ orgTreeType: organTreeType,
653
+ }
654
+ ajax.get(self.smartFlowServerContext + '/manage/organ/get/' + nodeMap.organCode, { params: params })
655
+ .then(resp => {
656
+ if (resp.data.code === 200) {
657
+ let data = resp.data.data
658
+ obj = {
659
+ type: data.organType,
660
+ id: data.id,
661
+ organId: data.organId,
662
+ orders: data.orders,
663
+ title: data.organName,
664
+ name: data.organName,
665
+ com: data.organId,
666
+ code: data.organCode,
667
+ loading: false,
668
+ disabled: true,
669
+ checked: false,
670
+ hasChild: true,
671
+ children: [],
672
+ }
673
+ if (nodeMap.children && nodeMap.children.length > 0){
674
+ for (let child of nodeMap.children){
675
+ self.formatOrganTree(child, obj.children, organTreeType)
676
+ }
677
+ }
678
+ childsTree.push(obj);
679
+ }
680
+ })
681
+ .catch(err => {
682
+ console.error(err);
683
+ return [];
684
+ })
685
+ }
686
+ },
687
+ //获取人员树信息
688
+ async getReadingRange(row, organTreeType) {
689
+ let self = this
690
+ let permScope
691
+ let userPermScope = row.substring(row.indexOf("U:"))
692
+ userPermScope = userPermScope.substring(2, userPermScope.indexOf(","))
693
+ let permScopeTwo = userPermScope.split(';')
694
+ if (permScopeTwo.length > 0 && permScopeTwo[0]){
695
+ let promises = []
696
+ for (let i = 0; i < permScopeTwo.length; i++) {
697
+ let promise = ajax.get(self.smartFlowServerContext + "/manage/user/get/" + permScopeTwo[i] + '?treeType=' + organTreeType)
698
+ .then(resp => {
699
+ if (resp.data.code === 200) {
700
+ return resp.data.data.organCode
701
+ }
702
+ })
703
+ promises.push(promise)
704
+ }
705
+ Promise.all(promises).then(async (result) => {
706
+ const uniqueResults = [...new Set(result.filter(Boolean))];
707
+ permScope = uniqueResults.join(';');
708
+ self.readingRange = await this.getOrganTreeByProType(row, permScope, organTreeType);
709
+ })
710
+ } else {
711
+ //对于流程类型中没有规定人员范围但规定组织范围的情况
712
+ self.readingRange = await this.getOrganTreeByProType(row, row.substring(2, row.indexOf(",")), organTreeType);
713
+ }
714
+
715
+ },
716
+ //获取角色列表
717
+ getReadingRangeAllRole: function (row) {
718
+ let self = this;
719
+ self.roleList = []
720
+ if (row == 'undefined' || row == "all") {
721
+ self.optionRoleArr = [];
722
+ ajax.get(self.smartFlowServerContext + "/manage/role/getrolesbyUserId")
723
+ .then(function (resp) {
724
+ if (resp.data.data.code === 200) {
725
+ resp.data.data.data.forEach(role => {
726
+ self.roleList.push(role);
727
+ const codesSeen = new Map();
728
+ self.roleList = self.roleList.reduce((acc, item, index) => {
729
+ if (!codesSeen.has(item.roleId)) {
730
+ codesSeen.set(item.roleId, index);
731
+ acc.push(item);
732
+ }
733
+ return acc;
734
+ }, []);
735
+ })
736
+
737
+ }
738
+ });
739
+ } else {
740
+ var permScope = row.substring(row.indexOf("R:"))
741
+ permScope = permScope.substring(2, permScope.indexOf(","))
742
+ permScope = permScope.split(';')
743
+ self.optionRoleArr = [];
744
+ if (permScope.length > 0) {
745
+ ajax.get(self.smartFlowServerContext + "/manage/role/getrolesbyUserId")
746
+ .then(function (resp) {
747
+ if (resp.data.data.code === 200) {
748
+ resp.data.data.data.forEach(role => {
749
+ permScope.forEach(perm => {
750
+ if (role.roleId == perm) {
751
+ self.roleList.push(role);
752
+ const codesSeen = new Map();
753
+ self.roleList = self.roleList.reduce((acc, item, index) => {
754
+ if (!codesSeen.has(item.roleId)) {
755
+ codesSeen.set(item.roleId, index);
756
+ acc.push(item);
757
+ }
758
+ return acc;
759
+ }, []);
760
+ }
761
+ })
762
+
763
+ })
764
+
765
+ }
766
+ }).catch(err => {
767
+ console.log(err);
768
+ })
769
+ }
770
+ }
771
+ },
772
+ //获取岗位
773
+ async getReadingRangePost(row, organTreeType) {
774
+ let self = this
775
+ let permScope
776
+ let postPermScope = row.substring(row.indexOf("P:"))
777
+ postPermScope = postPermScope.substring(2, postPermScope.indexOf(","))
778
+ let permScopeTwo = postPermScope.split(';')
779
+ if (permScopeTwo.length > 0 && permScopeTwo[0]){
780
+ let promises = []
781
+ for (let i = 0; i < permScopeTwo.length; i++) {
782
+ let promise = ajax.get(self.smartFlowServerContext + "/manage/position/get?positionId=" + permScopeTwo[i])
783
+ .then(resp => {
784
+ if (resp.data.code == 200) {
785
+ return resp.data.data.orgCode ? resp.data.data.orgCode : resp.data.data
786
+ }
787
+ }).catch(err => {
788
+ console.log(err);
789
+ })
790
+ promises.push(promise)
791
+ }
792
+ Promise.all(promises).then(async (result) => {
793
+ if (result.length > 0 && result[0] && result[0].hasOwnProperty('orgCode')) {
794
+ self.readingRangePost = await this.getOrganTreeByProType(row, permScope, organTreeType);
795
+ let array = [{code: result[0].orgCode}]
796
+ self.selectReRaYHChangePost(array, array)
797
+ } else {
798
+ const uniqueResults = [...new Set(result.filter(Boolean))];
799
+ permScope = uniqueResults.join(';');
800
+ self.readingRangePost = await this.getOrganTreeByProType(row, permScope, organTreeType);
801
+ }
802
+ })
803
+ } else {
804
+ //对于流程类型中没有规定岗位范围但规定组织范围的情况
805
+ self.readingRangePost = await this.getOrganTreeByProType(row, row.substring(2, row.indexOf(",")), organTreeType);
806
+ }
807
+ },
808
+ //获取组织类型
809
+ getReadingRangeOrgType(row, organTreeType) {
810
+ let self = this
811
+ let childsTree = []
812
+ if (row == 'undefined' || row == "all"){
813
+ let params = {
814
+ orgTreeType: organTreeType
815
+ }
816
+ ajax.get(self.smartFlowServerContext + "/manage/bizorgan/qryOrgTypeList", {params: params}).then(function (resp) {
817
+ if (resp.data.code === 200) {
818
+ let data = resp.data.data;
819
+ if (data.length > 0) {
820
+ data.forEach(item => {
821
+ self.formatOrgTypeData(item, childsTree)
822
+ })
823
+ }
824
+ self.readingRangeOrgType.push(childsTree);
825
+ } else {
826
+ self.$Message.error(resp.data.message)
827
+ }
828
+ })
829
+ } else {
830
+ var permScope = row.substring(row.indexOf("T:") + 2)
831
+ if (permScope.length > 0) {
832
+ let permScopeTwo = permScope.split(';')
833
+ for (let i = 0; i < permScopeTwo.length; i++) {
834
+ let params = {
835
+ organTypeCode: permScopeTwo[i],
836
+ orgTreeType: organTreeType
837
+ }
838
+ ajax.get(self.smartFlowServerContext + "/manage/bizorgan/qryOrgTypeByCode",{params : params}).then(resp => {
839
+ if (resp.data.code === 200) {
840
+ let data = resp.data.data
841
+ if (data) {
842
+ self.formatOrgTypeData(resp.data.data, childsTree)
843
+ }
844
+ self.readingRangeOrgType.push(childsTree)
845
+ const codesSeen = new Map();
846
+ self.readingRangeOrgType = self.readingRangeOrgType.reduce((acc, item, index) => {
847
+ if (!codesSeen.has(item.bizTypeId)) {
848
+ codesSeen.set(item.bizTypeId, index);
849
+ acc.push(item);
850
+ }
851
+ return acc;
852
+ }, []);
853
+ } else {
854
+ self.$Message.error(resp.data.message)
855
+ }
856
+ })
857
+ }
858
+ }
859
+ }
860
+ },
861
+ formatOrgTypeData(item, childsTree){
862
+ let obj = {}
863
+ obj.bizOrganTreeType = item.bizOrganTreeType
864
+ obj.bizTypeCode = item.bizTypeCode
865
+ obj.bizTypeId = item.bizTypeId
866
+ obj.parentTypeCode = item.parentTypeCode
867
+ obj.parentTypeId = item.parentTypeId
868
+ obj.parentTypeName = item.parentTypeName
869
+ obj.typeName = item.typeName
870
+ obj.title = item.typeName
871
+ obj.name = item.typeName
872
+ obj.orders = item.orders
873
+ obj.loading = false
874
+ obj.children = []
875
+ obj.hasChild = true
876
+ if (item.children && item.children.length > 0){
877
+ item.children.forEach(child => {
878
+ this.formatOrgTypeData(child, obj.children)
879
+ })
880
+ }
881
+ childsTree.push(obj)
882
+ },
883
+
884
+ //权限范围组织部门单条删除
885
+ readingRangeDepDel(res, info) {
886
+ this.treeValueBM[res].checked = false;
887
+ this.treeValueBM.splice(res, 1)
888
+
889
+ let orgList = []
890
+ let organList = []
891
+
892
+ orgList.push(info)
893
+ this.organModel.forEach(organ => {
894
+ if (organ.indexOf(info.code) == -1) {
895
+ organList.push(organ)
896
+ }
897
+ })
898
+ this.userNum = "1"
899
+ this.organModel = organList
900
+
901
+
902
+ this.updateLength();
903
+ },
904
+ //权限范围人员单条删除
905
+ readingRangeScPerDel(res, info) {
906
+ this.treeUserValue.splice(res, 1)
907
+ this.selectedKeys.splice(res, 1)
908
+ let orgList = []
909
+ let organList = []
910
+ orgList.push(info)
911
+ info = info.replace(",", ":")
912
+ this.organModel.forEach(organ => {
913
+ if (organ.indexOf(info) == -1) {
914
+ organList.push(organ)
915
+ }
916
+ })
917
+ this.organModel = organList
918
+ this.updateLength();
919
+ },
920
+ //角色单条删除
921
+ noticeRoleNameListDel(res) {
922
+ let processList = [];
923
+ for (let i = 0; i < this.noticeRoleList.length; i++) {
924
+ if (this.noticeRoleList[i].split(',')[1] !== res) {
925
+ processList.push(this.noticeRoleList[i])
926
+ }
927
+ }
928
+ this.noticeRoleList = processList
929
+ if (this.noticeRoleNameList.indexOf(res) !== -1) {
930
+ this.noticeRoleNameList.splice(this.noticeRoleNameList.indexOf(res), 1)
931
+ }
932
+ let organList = []
933
+ this.organModel.forEach(organ => {
934
+ if (organ.indexOf(res) == -1) {
935
+ organList.push(organ)
936
+ }
937
+ })
938
+ this.organModel = organList
939
+
940
+ this.updateLength();
941
+ },
942
+ //岗位单条删除
943
+ processPostDel(res) {
944
+ this.treePostValue.splice(res, 1)
945
+ this.postKeys.splice(res, 1)
946
+ let organList = []
947
+ res = res.replace(",", ":")
948
+ this.organModel.forEach(organ => {
949
+ if (organ.indexOf(res) == -1) {
950
+ organList.push(organ)
951
+ }
952
+ })
953
+ this.organModel = organList
954
+ // let processPostList = [];
955
+ // for (let i = 0; i < this.processPostList.length; i++) {
956
+ // if (this.processPostList[i].split(',')[1] !== res) {
957
+ // processPostList.push(this.processPostList[i])
958
+ // }
959
+ // }
960
+ // this.processPostList = processPostList
961
+ // if(this.postList.indexOf(res) !== -1){
962
+ // this.postList.splice(this.postList.indexOf(res), 1)
963
+ // }
964
+ this.updateLength();
965
+ },
966
+ //部门单条删除
967
+ processOrgTypeDel(res, info) {
968
+ this.treeOrgTypeValue[res].checked = false;
969
+ this.treeOrgTypeValue.splice(res, 1)
970
+ this.userNum = "1"
971
+ this.updateLength();
972
+ },
973
+
974
+ dataNameClick(data) {
975
+ this.dataName = data
976
+ },
977
+
978
+ selectOrgChange(node) {
979
+ let self = this
980
+ if (node.length > 0) {
981
+ if (self.currentNode !== node[0]) {
982
+ self.currentNode = node[0]
983
+
984
+ self.form.organId = self.currentNode.id
985
+ self.form.organTitle = self.currentNode.title
986
+
987
+
988
+ if (node[0].children.length <= 0) {
989
+ self.getDataBm(node[0], function (data) {
990
+ self.$set(node[0], 'children', data)
991
+ })
992
+ }
993
+ self.$set(node[0], 'expand', true)
994
+ }
995
+ } else {
996
+ self.$set(self.currentNode, 'expand', !self.currentNode.expand)
997
+ self.currentNode.selected = true
998
+ }
999
+ },
1000
+ loadDataBm(node, callback) {
1001
+ this.getDataBm(node, function (data) {
1002
+ if (data && data.length > 0) {
1003
+ callback(data)
1004
+ }
1005
+ })
1006
+ },
1007
+ getDataBm(node, callback) {
1008
+ let self = this
1009
+ ajax.get(self.smartFlowServerContext + "/manage/organ/getOrgSubNodes", {
1010
+ params: {
1011
+ code: node.code,
1012
+ orgTreeType: self.organTreeType
1013
+ }
1014
+ }).then(function (resp) {
1015
+ const childs = [];
1016
+ if (resp.data.code === 200) {
1017
+ let nodeDatas = resp.data.data
1018
+ if (nodeDatas && nodeDatas.length > 0) {
1019
+ nodeDatas.forEach(item => {
1020
+ let obj = {};
1021
+ let typeName = '';
1022
+ if ('com' == item.organType) {
1023
+ typeName = '(公司)'
1024
+ }
1025
+ if ('dept' == item.organType) {
1026
+ typeName = '(部门)'
1027
+ }
1028
+ self.treeValueBM.forEach(tree => {
1029
+ if (item.organId == tree.organId || item.organId == tree.code || item.organCode == tree.organId || item.organCode == tree.code) {
1030
+ obj.checked = true
1031
+ }
1032
+ })
1033
+ obj.type = item.organType;
1034
+ obj.id = item.id
1035
+ obj.organId = item.organId
1036
+ obj.orders = item.orders
1037
+ obj.title = item.organName + typeName
1038
+ obj.name = item.organName
1039
+ obj.com = item.organId
1040
+ obj.code = item.organCode
1041
+ obj.loading = false
1042
+ obj.children = []
1043
+ obj.hasChild = true
1044
+ childs.push(obj)
1045
+ })
1046
+ } else {
1047
+ self.$set(node, "hasChild", false)
1048
+ self.$delete(node, 'loading')
1049
+ }
1050
+ if (callback) {
1051
+ callback(childs)
1052
+ }
1053
+ } else {
1054
+ self.$set(node, 'hasChild', false)
1055
+ self.$delete(node, 'loading')
1056
+ if (callback) {
1057
+ callback()
1058
+ }
1059
+ }
1060
+ })
1061
+ },
1062
+ //权限范围组织类型点击事件
1063
+ loadOrgType(node, callback){
1064
+ this.getDataOrgType(node, function (data) {
1065
+ if (data && data.length > 0) {
1066
+ callback(data)
1067
+ }
1068
+ })
1069
+ },
1070
+ getDataOrgType(node, callback){
1071
+ let self = this
1072
+ ajax.get(self.smartFlowServerContext + "/manage/bizorgan/qrySubOrgTypeList", {
1073
+ params: {
1074
+ orgTreeType: self.organTreeType,
1075
+ typeId: node.bizTypeId
1076
+ }
1077
+ }).then(function (resp) {
1078
+ const childs = [];
1079
+ if (resp.data.code == 200) {
1080
+ let nodeDatas = resp.data.data
1081
+ if (nodeDatas && nodeDatas.length > 0) {
1082
+ nodeDatas.forEach(item => {
1083
+ self.formatOrgTypeData(item, childs)
1084
+ })
1085
+ } else {
1086
+ self.$set(node, "hasChild", false)
1087
+ self.$delete(node, 'loading')
1088
+ }
1089
+ if (callback) {
1090
+ callback(childs)
1091
+ }
1092
+ }else {
1093
+ self.$set(node, 'hasChild', false)
1094
+ self.$delete(node, 'loading')
1095
+ if (callback) {
1096
+ callback()
1097
+ }
1098
+ }
1099
+ })
1100
+ },
1101
+ //阅读范围组织点击事件
1102
+ selectReRaBMChange(row, info) {
1103
+ let self = this
1104
+ let mergedArray = []
1105
+ let uniqueArray = []
1106
+ let rows = []
1107
+
1108
+ mergedArray = [].concat(this.treeValueBM, row);
1109
+ uniqueArray = Array.from(new Set(mergedArray));
1110
+ uniqueArray = uniqueArray.filter((obj, index, self) =>
1111
+ index === self.findIndex((o) => o.code === obj.code)
1112
+ );
1113
+ if (info.checked == true) {
1114
+ row.forEach(ro => {
1115
+ let organList = []
1116
+ organList = row.filter(obj1 => !this.treeValueBM.some(obj2 => obj2.code === obj1.code));
1117
+ organList = [...new Set(organList)];
1118
+ organList = organList.reverse();
1119
+ let code = organList[0] ? organList[0].code : ''
1120
+ let name = organList[0] ? organList[0].name : ''
1121
+ this.userNum = "1"
1122
+ if (code) {
1123
+ this.organModel.push(code + ":" + name + "," + "1");
1124
+ this.treeValueBM.push(organList[0])
1125
+ this.orgList = this.treeValueBM
1126
+ }
1127
+ })
1128
+ } else {
1129
+ let orgList = []
1130
+ let organList = []
1131
+ orgList.push(info)
1132
+ this.organModel.forEach(organ => {
1133
+ if (organ.indexOf(info.code) == -1) {
1134
+ organList.push(organ)
1135
+ }
1136
+ })
1137
+ this.userNum = "1"
1138
+ let list = []
1139
+ this.orgList = []
1140
+ uniqueArray.forEach(item => {
1141
+ if (item.code != info.code) {
1142
+ list.push(item)
1143
+ this.orgList.push(item)
1144
+ }
1145
+ })
1146
+ this.treeValueBM = list
1147
+ this.organModel = organList
1148
+ }
1149
+ this.updateLength()
1150
+ },
1151
+ //权限范围组织类型选择事件
1152
+ checkOrgTypeChange(row, info) {
1153
+ let self = this
1154
+ let mergedArray = []
1155
+ let uniqueArray = []
1156
+ mergedArray = [].concat(this.treeOrgTypeValue, row);
1157
+ uniqueArray = Array.from(new Set(mergedArray));
1158
+ uniqueArray = uniqueArray.filter((obj, index, self) =>
1159
+ index === self.findIndex((o) => o.bizTypeCode === obj.bizTypeCode)
1160
+ );
1161
+ if (info.checked == true) {
1162
+ row.forEach(ro => {
1163
+ let depList = []
1164
+ depList = row.filter(obj1 => !this.treeOrgTypeValue.some(obj2 => obj2.bizTypeCode === obj1.bizTypeCode));
1165
+ depList = [...new Set(depList)];
1166
+ depList = depList.reverse();
1167
+ let bizTypeCode = depList[0] ? depList[0].bizTypeCode : ''
1168
+ if (bizTypeCode) {
1169
+ this.treeOrgTypeValue.push(depList[0])
1170
+ this.organModel.push(depList[0].bizTypeCode +":"+depList[0].typeName+","+"5");
1171
+ }
1172
+ })
1173
+ } else {
1174
+ let list = []
1175
+ uniqueArray.forEach(item => {
1176
+ if (item.bizTypeCode != info.bizTypeCode) {
1177
+ list.push(item)
1178
+ }
1179
+ })
1180
+ let typeList = []
1181
+ this.organModel.forEach(data => {
1182
+ let [value, type] = data.split(',')
1183
+ if (type && type !== '5'){
1184
+ typeList.push(data)
1185
+ } else {
1186
+ let typeCode = value.split(':')[0]
1187
+ if (typeCode !== info.bizTypeCode){
1188
+ typeList.push(data)
1189
+ }
1190
+ }
1191
+ })
1192
+ this.treeOrgTypeValue = list
1193
+ this.organModel = typeList
1194
+ }
1195
+
1196
+ this.updateLength()
1197
+ },
1198
+ selectUserChange(node) {
1199
+ let self = this
1200
+ if (node.length > 0) {
1201
+ if (self.currentNodeUser !== node[0]) {
1202
+ self.currentNodeUser = node[0]
1203
+
1204
+ self.form.organId = self.currentNodeUser.id
1205
+ self.form.organTitle = self.currentNodeUser.title
1206
+
1207
+
1208
+ if (node[0].children.length <= 0) {
1209
+ self.getReadingRangeData(node[0], function (data) {
1210
+ self.$set(node[0], 'children', data)
1211
+ })
1212
+ }
1213
+ self.$set(node[0], 'expand', true)
1214
+ }
1215
+ } else {
1216
+ self.$set(self.currentNodeUser, 'expand', !self.currentNodeUser.expand)
1217
+ self.currentNodeUser.selected = true
1218
+ }
1219
+ },
1220
+ //获取用户信息(懒加载)
1221
+ loadReadingRangeData(node, callback) {
1222
+ this.getReadingRangeData(node, function (data) {
1223
+ if (data && data.length > 0) {
1224
+ callback(data)
1225
+ }
1226
+ })
1227
+ },
1228
+ getReadingRangeData(node, callback) {
1229
+ let self = this
1230
+ ajax.get(self.smartFlowServerContext + "/manage/organ/getOrgSubNodes", {
1231
+ params: {
1232
+ code: node.code,
1233
+ orgTreeType: self.organTreeType
1234
+ }
1235
+ }).then(function (resp) {
1236
+ const childs = [];
1237
+ if (resp.data.code === 200) {
1238
+ let nodeDatas = resp.data.data
1239
+ if (nodeDatas.length > 0) {
1240
+ nodeDatas.forEach(item => {
1241
+ let obj = {};
1242
+ let typeName = '';
1243
+ if ('com' === item.organType) {
1244
+ typeName = '(公司)'
1245
+ } else if ('dept' === item.organType) {
1246
+ typeName = '(部门)'
1247
+ }
1248
+ // obj.disableCheckbox = true
1249
+ obj.type = item.organType;
1250
+ obj.id = item.id
1251
+ obj.organId = item.organId
1252
+ obj.title = item.organName + typeName
1253
+ obj.name = item.organName
1254
+ obj.com = item.organId
1255
+ obj.code = item.organCode
1256
+ obj.loading = false
1257
+ obj.children = []
1258
+ obj.hasChild = true
1259
+ childs.push(obj)
1260
+ })
1261
+ } else {
1262
+ self.$set(node, "hasChild", false)
1263
+ self.$delete(node, 'loading')
1264
+ }
1265
+ if (callback) {
1266
+ callback(childs)
1267
+ }
1268
+ } else {
1269
+ self.$set(node, "hasChild", false)
1270
+ self.$delete(node, 'loading')
1271
+ if (callback) {
1272
+ callback()
1273
+ }
1274
+ }
1275
+ })
1276
+ },
1277
+
1278
+ selectPostChange(node) {
1279
+ let self = this
1280
+ if (node.length > 0) {
1281
+ if (self.currentNodePost !== node[0]) {
1282
+ self.currentNodePost = node[0]
1283
+
1284
+ self.form.organId = self.currentNodePost.id
1285
+ self.form.organTitle = self.currentNodePost.title
1286
+
1287
+
1288
+ if (node[0].children.length <= 0) {
1289
+ self.getReadingRangeDataPost(node[0], function (data) {
1290
+ self.$set(node[0], 'children', data)
1291
+ })
1292
+ }
1293
+ self.$set(node[0], 'expand', true)
1294
+ }
1295
+ } else {
1296
+ self.$set(self.currentNodePost, 'expand', !self.currentNodePost.expand)
1297
+ self.currentNodePost.selected = true
1298
+ }
1299
+ },
1300
+ //获取用户信息(懒加载)
1301
+ loadReadingRangeDataPost(node, callback) {
1302
+ this.getReadingRangeDataPost(node, function (data) {
1303
+ if (data.length > 0) {
1304
+ callback(data)
1305
+ }
1306
+ })
1307
+ },
1308
+ getReadingRangeDataPost(node, callback) {
1309
+ let self = this
1310
+ ajax.get(self.smartFlowServerContext + "/manage/organ/getOrgSubNodes", {
1311
+ params: {
1312
+ code: node.code,
1313
+ orgTreeType: self.organTreeType
1314
+ }
1315
+ }).then(function (resp) {
1316
+ const childs = [];
1317
+ if (resp.data.code === 200) {
1318
+ let nodeDatas = resp.data.data
1319
+ if (nodeDatas.length > 0) {
1320
+ nodeDatas.forEach(item => {
1321
+ let obj = {};
1322
+ let typeName = '';
1323
+ if ('com' === item.organType) {
1324
+ typeName = '(公司)'
1325
+ } else if ('dept' === item.organType) {
1326
+ typeName = '(部门)'
1327
+ }
1328
+ // obj.disableCheckbox = true
1329
+ obj.type = item.organType;
1330
+ obj.id = item.id
1331
+ obj.organId = item.organId
1332
+ obj.title = item.organName + typeName
1333
+ obj.name = item.organName
1334
+ obj.com = item.organId
1335
+ obj.code = item.organCode
1336
+ obj.loading = false
1337
+ obj.children = []
1338
+ obj.hasChild = true
1339
+ childs.push(obj)
1340
+ })
1341
+ } else {
1342
+ self.$set(node, "hasChild", false)
1343
+ self.$delete(node, 'loading')
1344
+ }
1345
+ if (callback) {
1346
+ callback(childs)
1347
+ }
1348
+ } else {
1349
+ self.$set(node, "hasChild", false)
1350
+ self.$delete(node, 'loading')
1351
+ if (callback) {
1352
+ callback([])
1353
+ }
1354
+ }
1355
+ })
1356
+ },
1357
+
1358
+ //权限范围用户点击事件
1359
+ selectReRaYHChange(data, info) {
1360
+ let self = this
1361
+ const user = sessionStorage.getItem('userInfo');
1362
+ const jsonArray = JSON.parse(user);
1363
+ var userPermScope = self.permScope.substring(self.permScope.indexOf("U:"))
1364
+ userPermScope = userPermScope.substring(2, userPermScope.indexOf(","))
1365
+ userPermScope = userPermScope.split(';')
1366
+ //self.selectUserChange(data)
1367
+ let treeUserCenters = [];
1368
+
1369
+ if (self.permScope == "all" || self.permScope == "undefined") {
1370
+ let userIdSet = new Set()
1371
+ data.forEach(itemCom => {
1372
+
1373
+ ajax.get(self.smartFlowServerContext + "/manage/user/getList", {
1374
+ params: {
1375
+ organId: itemCom.organId,
1376
+ orgTreeType: self.organTreeType,
1377
+ limit: "1000",
1378
+ directChild: true,
1379
+ }
1380
+ }).then(function (resp) {
1381
+ if (resp.data.code == 200) {
1382
+ let nodeUser = resp.data.data.rows ? resp.data.data.rows : resp.data.data;
1383
+ nodeUser.forEach(item => {
1384
+ if (!userIdSet.has(item.userId)) {
1385
+ userIdSet.add(item.userId)
1386
+ treeUserCenters.push({
1387
+ userId: item.userId,
1388
+ userName: item.userName,
1389
+ nameItem: item.superiorOrgName,
1390
+ organName: item.organName
1391
+ })
1392
+ }
1393
+ })
1394
+ }
1395
+
1396
+ })
1397
+ })
1398
+ } else {
1399
+ let userIdSet = new Set()
1400
+ data.forEach(itemCom => {
1401
+
1402
+ ajax.get(self.smartFlowServerContext + "/manage/user/getList", {
1403
+ params: {
1404
+ organId: itemCom.organId,
1405
+ orgTreeType: self.organTreeType,
1406
+ limit: "1000",
1407
+ directChild: true,
1408
+ }
1409
+ }).then(function (resp) {
1410
+ if (resp.data.code == 200) {
1411
+ let nodeUser = resp.data.data.rows ? resp.data.data.rows : resp.data.data
1412
+ nodeUser.forEach(item => {
1413
+ if ((!userIdSet.has(item.userId) && userPermScope.includes(item.userId)) || userPermScope.length <= 0 || !userPermScope[0]) {
1414
+ userIdSet.add(item.userId)
1415
+ treeUserCenters.push({
1416
+ userId: item.userId,
1417
+ userName: item.userName,
1418
+ nameItem: item.superiorOrgName,
1419
+ organName: item.organName
1420
+ })
1421
+ }
1422
+ })
1423
+ }
1424
+
1425
+ })
1426
+
1427
+ })
1428
+ }
1429
+
1430
+ self.treeUserCenterValue = treeUserCenters
1431
+ self.treeUserNameCenterValue = []
1432
+ },
1433
+
1434
+ //权限范围岗位点击事件
1435
+ selectReRaYHChangePost(data, info) {
1436
+ let self = this
1437
+ const user = sessionStorage.getItem('userInfo');
1438
+ const jsonArray = JSON.parse(user);
1439
+ let nodePost = []
1440
+ let treePostCenter = [];
1441
+ if ((jsonArray.orgCode || jsonArray.organCode) != info.code) {
1442
+ self.getReadingRangeDataPost(info, function (data) {
1443
+ self.$set(info, 'children', data)
1444
+ })
1445
+ }
1446
+
1447
+ if (self.permScope == "all" || self.permScope == "undefined") {
1448
+ const positionIdSet = new Set();
1449
+ data.forEach(itemCom => {
1450
+ ajax.get(self.smartFlowServerContext + "/manage/position/qryPositionList?organCode=" + itemCom.code).then(function (resp) {
1451
+ nodePost = resp.data.data
1452
+ nodePost.forEach(item => {
1453
+ if (!positionIdSet.has(item.positionId)) {
1454
+ item.nameItem = item.organName !== '' ? item.organName : item.positionName;
1455
+ treePostCenter.push(item);
1456
+ positionIdSet.add(item.positionId);
1457
+ }
1458
+ });
1459
+ })
1460
+
1461
+ })
1462
+ } else {
1463
+ let postPermScope = self.permScope.substring(self.permScope.indexOf("P:"))
1464
+ postPermScope = postPermScope.substring(2, postPermScope.indexOf(","))
1465
+ postPermScope = postPermScope.split(';')
1466
+ const addedPositionIds = new Set();
1467
+ data.forEach(itemCom => {
1468
+ ajax.get(self.smartFlowServerContext + "/manage/position/qryPositionList?organCode=" + itemCom.code).then(function (resp) {
1469
+ nodePost = resp.data.data;
1470
+ nodePost.forEach(item => {
1471
+ if ((postPermScope.includes(item.positionId) && !addedPositionIds.has(item.positionId)) || postPermScope.length <= 0 || !postPermScope[0]) {
1472
+ item.nameItem = item.organName !== '' ? item.organName : item.positionName;
1473
+ treePostCenter.push(item);
1474
+ addedPositionIds.add(item.positionId);
1475
+ }
1476
+ });
1477
+ });
1478
+ });
1479
+ }
1480
+
1481
+ self.treePostCenterValue = treePostCenter
1482
+ self.treePostNameCenterValue = []
1483
+ },
1484
+ getReadingRangeRole(row) {
1485
+ let nameList = [];
1486
+ let self = this
1487
+ self.userNum = "2"
1488
+ if (row.length > self.noticeList.length) {
1489
+ row.forEach(ro => {
1490
+ ro = ro.substring(ro.indexOf(","))
1491
+ })
1492
+ self.noticeRoleNameList = row
1493
+ self.noticeList = row
1494
+ row = row.reverse()
1495
+ let organName = row[0].replace(",", ":") + ",3"
1496
+ self.organModel.push(organName);
1497
+ self.organChange(self.organModel)
1498
+ } else if (row.length < self.noticeList.length) {
1499
+ let diff = ""
1500
+ let orgList = []
1501
+ for (let i = 0; i < self.noticeList.length; i++) {
1502
+ if (!row.includes(self.noticeList[i])) {
1503
+ diff = self.noticeList[i]
1504
+ }
1505
+ }
1506
+ diff = diff.replace(",", ":")
1507
+ self.organModel.forEach(organ => {
1508
+ if (organ.indexOf(diff) == -1) {
1509
+ orgList.push(organ)
1510
+ }
1511
+ })
1512
+ self.organModel = orgList
1513
+ self.noticeList = row
1514
+ self.noticeRoleNameList = row
1515
+ }
1516
+ this.updateLength()
1517
+ },
1518
+ getReadingRangeUser(row) {
1519
+ let self = this
1520
+ self.userNum = "2"
1521
+ if (row.length > self.selectedKeys.length) {
1522
+ self.treeUserValue = row
1523
+ self.selectedKeys = row
1524
+ row = row.reverse()
1525
+ let organName = row[0].replace(",", ":") + ",2"
1526
+ self.organModel.push(organName);
1527
+ self.organChange(self.organModel)
1528
+ } else if (row.length < self.selectedKeys.length) {
1529
+ let diff = ""
1530
+ let orgList = []
1531
+ for (let i = 0; i < self.selectedKeys.length; i++) {
1532
+ if (!row.includes(self.selectedKeys[i])) {
1533
+ diff = self.selectedKeys[i]
1534
+ }
1535
+ }
1536
+ diff = diff.replace(",", ":")
1537
+ self.organModel.forEach(organ => {
1538
+ if (organ.indexOf(diff) == -1) {
1539
+ orgList.push(organ)
1540
+ }
1541
+ })
1542
+ self.organModel = orgList
1543
+ self.selectedKeys = row
1544
+ }
1545
+ this.updateLength()
1546
+ },
1547
+ getReadingRangePosts(row) {
1548
+ let self = this
1549
+ self.userNum = "2"
1550
+ if (row.length > self.postKeys.length) {
1551
+ self.treePostValue = row
1552
+ self.postKeys = row
1553
+ row = row.reverse()
1554
+ let organName = row[0].replace(",", ":") + ",4"
1555
+ self.organModel.push(organName);
1556
+ self.organChange(self.organModel)
1557
+ } else if (row.length < self.postKeys.length) {
1558
+ let diff = ""
1559
+ let orgList = []
1560
+ for (let i = 0; i < self.postKeys.length; i++) {
1561
+ if (!row.includes(self.postKeys[i])) {
1562
+ diff = self.postKeys[i]
1563
+ }
1564
+ }
1565
+ diff = diff.replace(",", ":")
1566
+ self.organModel.forEach(organ => {
1567
+ if (organ.indexOf(diff) == -1) {
1568
+ orgList.push(organ)
1569
+ }
1570
+ })
1571
+ self.organModel = orgList
1572
+ self.postKeys = row
1573
+ }
1574
+ this.updateLength()
1575
+ },
1576
+ organTreeRedis(row) {
1577
+ let params = {
1578
+ permScope: row,
1579
+ organTreeType: this.organTreeType,
1580
+ }
1581
+ ajax.get(this.smartFlowServerContext + '/manage/processDesign/getQuickSelectionData', {params: params}).then(resp => {
1582
+ if (resp.data.code === '200') {
1583
+ this.organTree = resp.data.data
1584
+ }
1585
+ }).catch(err => {
1586
+ console.log(err);
1587
+ })
1588
+
1589
+ },
1590
+ organChange(event) {
1591
+ this.organModel = []
1592
+ let orgValue = []
1593
+ let userValue = []
1594
+ let roleValue = []
1595
+ let postValue = []
1596
+ let typeValue = []
1597
+ let orgAdjustment = ""
1598
+ let userAdjustment = ""
1599
+ let roleAdjustment = ""
1600
+ let postAdjustment = ""
1601
+ let typeAdjustment = ""
1602
+ event.forEach(item => {
1603
+ let nameType = item.substring(item.indexOf(":") + 1)
1604
+ nameType = nameType.substring(nameType.indexOf(",") + 1)
1605
+ if (nameType == "1") {
1606
+ orgAdjustment = "1"
1607
+ this.organModel.push(item)
1608
+ orgValue.push({
1609
+ name: item.substring(item.indexOf(":") + 1, item.indexOf(",")),
1610
+ organId: item.substring(0, item.indexOf(":")),
1611
+ code: item.substring(0, item.indexOf(":")),
1612
+ checked: true
1613
+ })
1614
+ } else if (nameType != "1") {
1615
+ orgAdjustment = "1"
1616
+ }
1617
+ if (nameType == "2") {
1618
+ userAdjustment = "2"
1619
+ this.organModel.push(item)
1620
+ let user = item.substring(0, item.indexOf(","))
1621
+ user = user.replace(":", ",")
1622
+ userValue.push(user)
1623
+ } else if (nameType != "2") {
1624
+ userAdjustment = "2"
1625
+ }
1626
+ if (nameType == "3") {
1627
+ roleAdjustment = "3"
1628
+ this.organModel.push(item)
1629
+ let role = item.substring(0, item.indexOf(","))
1630
+ role = role.replace(":", ",")
1631
+ roleValue.push(role)
1632
+ } else if (nameType != "3") {
1633
+ roleAdjustment = "3"
1634
+ }
1635
+ if (nameType == "4") {
1636
+ postAdjustment = "4"
1637
+ let postItem = item.substring(0, item.indexOf(","))
1638
+ postItem = postItem.replace(":", ",")
1639
+ this.organModel.push(item)
1640
+ postValue.push(postItem)
1641
+ } else if (nameType != "4") {
1642
+ postAdjustment = "4"
1643
+ }
1644
+ if (nameType == "5") {
1645
+ typeAdjustment = "5"
1646
+ this.organModel.push(item)
1647
+ typeValue.push({typeName:item.substring(item.indexOf(":") + 1,item.indexOf(",")), bizTypeCode: item.substring(0, item.indexOf(":")), checked: true})
1648
+ } else if (nameType != "5"){
1649
+ typeAdjustment = "5"
1650
+ }
1651
+
1652
+ // 执行需要的操作
1653
+ });
1654
+ if (event.length == 0) {
1655
+ orgAdjustment = '1'
1656
+ userAdjustment = '2'
1657
+ roleAdjustment = '3'
1658
+ postAdjustment = '4'
1659
+ typeAdjustment = '5'
1660
+ this.noticeRoleList = []
1661
+ }
1662
+ if (orgAdjustment == "1") {
1663
+ this.treeValueBM = this.updateCheckedData(orgValue, this.treeValueBM, 'code', this.organTree.organMap)
1664
+ }
1665
+ if (userAdjustment == "2") {
1666
+ this.treeUserValue = this.updateCheckedData(userValue, this.treeUserValue, 'id', this.organTree.userMap)
1667
+ }
1668
+ if (roleAdjustment == "3") {
1669
+ this.noticeRoleNameList = this.updateCheckedData(roleValue, this.noticeRoleNameList, 'id', this.organTree.roleMap)
1670
+ }
1671
+ if (postAdjustment == "4") {
1672
+ this.treePostValue = this.updateCheckedData(postValue, this.treePostValue, 'id', this.organTree.postMap)
1673
+ }
1674
+ if (typeAdjustment == "5") {
1675
+ this.treeOrgTypeValue = this.updateCheckedData(typeValue, this.treeOrgTypeValue, 'bizTypeCode', this.organTree.typeMap)
1676
+ }
1677
+ this.updateLength()
1678
+ },
1679
+ updateCheckedData(selectValue, treeValue, uniqueKey, selectMap){
1680
+ if (treeValue.length === 0){
1681
+ return selectValue
1682
+ }
1683
+ if (uniqueKey === 'id'){
1684
+ treeValue = treeValue.map(str => {
1685
+ const [id, name] = str.split(',');
1686
+ return { id: id.trim(), name: name.trim() };
1687
+ });
1688
+ selectValue = selectValue.map(str => {
1689
+ const [id, name] = str.split(',');
1690
+ return { id: id.trim(), name: name.trim() };
1691
+ });
1692
+ }
1693
+
1694
+ //选择框有已选择列表没有的增加到已选择列表中
1695
+ selectValue.forEach(orgObj => {
1696
+ if (!this.isObjectInArray(treeValue, orgObj, uniqueKey)) {
1697
+ treeValue.push(orgObj);
1698
+ }
1699
+ });
1700
+ //已选择列表有选择框没有且包含在选择框所有数据中的,在已选择列表中删除
1701
+ treeValue = treeValue.filter(treeObj => {
1702
+ return !(!this.isObjectInArray(selectValue, treeObj, uniqueKey) && selectMap[treeObj[uniqueKey]]);
1703
+ });
1704
+ if (uniqueKey === 'id'){
1705
+ return treeValue.map(obj => `${obj.id},${obj.name}`)
1706
+ }
1707
+ return treeValue
1708
+ },
1709
+ isObjectInArray(array, obj, uniqueKey) {
1710
+ return array.some(item => item[uniqueKey] === obj[uniqueKey]);
1711
+ },
1712
+ organTreeRedisUpdate() {
1713
+ let params = {
1714
+ permScope: this.permScope,
1715
+ organTreeType: this.organTreeType,
1716
+ }
1717
+ ajax.get(this.smartFlowServerContext + '/manage/processDesign/getQuickSelectionData', {params: params}).then(resp => {
1718
+ if (resp.data.code === '200') {
1719
+ this.organTree = resp.data.data
1720
+ }
1721
+ }).catch(err => {
1722
+ console.log(err);
1723
+ })
1724
+ },
1725
+ readingRangeEmpty() {
1726
+ this.treeValueBM.forEach(item => {
1727
+ item.checked = false
1728
+ })
1729
+ // this.treeUserCenterValue =[];
1730
+ this.treeValueBM = [];
1731
+ this.treeUserValue = [];
1732
+ //角色集合
1733
+ this.noticeRoleList = [];
1734
+ this.noticeRoleNameList = [];
1735
+ this.selectedKeys = []
1736
+ //岗位集合
1737
+ this.postList = [];
1738
+ this.treePostValue = [];
1739
+ this.processPostList = [];
1740
+ this.treeLength = 0
1741
+ this.organModel = []
1742
+ this.postKeys = []
1743
+ //组织类型集合
1744
+ this.treeOrgTypeValue.forEach(item =>{
1745
+ item.checked = false
1746
+ })
1747
+ this.treeOrgTypeValue = [];
1748
+ },
1749
+ updateLength() {
1750
+ this.treeLength = this.treeValueBM.length + this.treeUserValue.length + this.noticeRoleNameList.length + this.treePostValue.length + this.treeOrgTypeValue.length
1751
+ },
1752
+ clearCache() {
1753
+ this.readingRangeBM = []
1754
+ this.readingRange = []
1755
+ this.roleList = []
1756
+ this.readingRangePost = []
1757
+ this.treeUserCenterValue = []
1758
+ this.treePostCenterValue = []
1759
+ this.treeValueBM.forEach(item => {
1760
+ item.checked = false
1761
+ })
1762
+ this.treeValueBM = [];
1763
+ this.treeUserValue = [];
1764
+ //角色集合
1765
+ this.noticeRoleList = [];
1766
+ this.noticeRoleNameList = [];
1767
+ this.selectedKeys = []
1768
+ //岗位集合
1769
+ this.postList = [];
1770
+ this.treePostValue = [];
1771
+ this.processPostList = [];
1772
+ this.treeLength = 0
1773
+ this.organModel = []
1774
+ this.postKeys = []
1775
+ //组织类型
1776
+ this.readingRangeOrgType = []
1777
+ this.readingRangeOrgType.forEach(item => {
1778
+ item.checked = false
1779
+ })
1780
+ this.treeOrgTypeValue = [];
1781
+ },
1782
+ getSystemConfig(){
1783
+ const self = this
1784
+ ajax.get(self.smartFlowServerContext + '/anon/systemConfig/getSystemConfig').then(function (resp) {
1785
+ const result = resp.data;
1786
+ if (result && result.code === '200') {
1787
+ self.ucAdapterType = result.data.ucAdapterType
1788
+ }
1789
+ }).catch(err => {
1790
+ console.log(err);
1791
+ })
1792
+ },
1793
+ toggleShowHelpBox(permScope, inputValue, organTreeType, id) {
1794
+ this.clearCache()
1795
+ this.id = id
1796
+ this.permScope = permScope
1797
+ this.organTreeType = organTreeType
1798
+ this.organTreeRedis(this.permScope)
1799
+ if (inputValue) {
1800
+ this.getOrgan(inputValue)
1801
+ this.getUser(inputValue)
1802
+ this.getRole(inputValue)
1803
+ this.ucAdapterType === 'x1' ? this.getPost(inputValue) : this.getOrgType(inputValue)
1804
+ }
1805
+ if (this.permScope == 'all'){
1806
+ this.getRootOrganTree(organTreeType)
1807
+ this.ucAdapterType === 'sc' ? this.getReadingRangeOrgType(permScope, organTreeType) : ''
1808
+ } else {
1809
+ this.getReadingRangeBM(this.permScope, inputValue, this.organTreeType)
1810
+ this.getReadingRange(this.permScope, this.organTreeType)
1811
+ this.ucAdapterType === 'x1' ? this.getReadingRangePost(this.permScope, this.organTreeType) : this.getReadingRangeOrgType(this.permScope, this.organTreeType)
1812
+ }
1813
+ this.getReadingRangeAllRole(this.permScope)
1814
+ this.modalBoxShow = !this.modalBoxShow;
1815
+ },
1816
+ onOk() {
1817
+ let organ = [];
1818
+ let names = [];
1819
+ let organs = [];
1820
+ this.treeValueBM.forEach(item => {
1821
+ organ.push(item.code)
1822
+ names.push(item.name)
1823
+ organs.push(item.code + ':' + item.name)
1824
+ })
1825
+ let nameValue = [];
1826
+ let users = [];
1827
+ this.treeUserValue.forEach(item => {
1828
+ nameValue.push(item.split(',')[0])
1829
+ names.push(item.split(',')[1])
1830
+ users.push(item.split(',')[0] + ':' + item.split(',')[1])
1831
+ })
1832
+ let roleList = [];
1833
+ let roles = [];
1834
+ this.noticeRoleList.forEach(item => {
1835
+ roleList.push(item.split(',')[0])
1836
+ names.push(item.split(',')[1])
1837
+ roles.push(item.split(',')[0] + ':' + item.split(',')[1])
1838
+ })
1839
+ let postList = [];
1840
+ let positions = [];
1841
+ this.treePostValue.forEach(item => {
1842
+ postList.push(item.split(',')[0])
1843
+ names.push(item.split(',')[1])
1844
+ positions.push(item.split(',')[0] + ':' + item.split(',')[1])
1845
+ })
1846
+ let orgTypeList = [];
1847
+ let orgTypes = [];
1848
+ this.treeOrgTypeValue.forEach(item => {
1849
+ orgTypeList.push(item.bizTypeCode)
1850
+ names.push(item.typeName)
1851
+ orgTypes.push(item.bizTypeCode + ':' + item.typeName)
1852
+ })
1853
+ let value = 'O:' + organ.join(";") + "," + "U:" + nameValue.join(";") + "," + "P:" + postList.join(";") + "," + "R:" + roleList.join(";") + "," + "RP:,T:" + orgTypeList.join(";");
1854
+ let nameStr = names.join(",")
1855
+ let detail = {
1856
+ organs: organs.join(","),
1857
+ users: users.join(","),
1858
+ roles: roles.join(","),
1859
+ positions: positions.join(","),
1860
+ types: orgTypes.join(","),
1861
+ }
1862
+ this.$emit('update-cand-groups', value, nameStr, detail, this.id);
1863
+ this.modalBoxShow = false;
1864
+ },
1865
+ findTitleByValue(arr, value) {
1866
+ function traverse(items) {
1867
+ for (let item of items) {
1868
+ if (item.value === value) {
1869
+ return item.title;
1870
+ }
1871
+ if (item.children && item.children.length > 0) {
1872
+ let result = traverse(item.children);
1873
+ if (result) {
1874
+ return result;
1875
+ }
1876
+ }
1877
+ }
1878
+ return '';
1879
+ }
1880
+
1881
+ return traverse(arr);
1882
+ },
1883
+ indexToString(index) {
1884
+ return index + ''
1885
+ },
1886
+ showUserDetail(item){
1887
+ if (item.nameItem && item.organName){
1888
+ return `( ${item.nameItem} , ${item.organName} )`
1889
+ }
1890
+ }
1891
+ },
1892
+ };
1893
+ </script>
1894
+
1895
+ <style scoped>
1896
+ .relativePositionAddButton {
1897
+ float: right;
1898
+ margin-top: 20px;
1899
+ }
1900
+
1901
+ .relativePositionRemoveButton {
1902
+ float: right;
1903
+ margin: 2px;
1904
+ }
1905
+
1906
+ .cont {
1907
+ display: flex;
1908
+ justify-content: left;
1909
+ margin-top: 10px;
1910
+ }
1911
+
1912
+ .contLeft {
1913
+ flex: 0 0 40%;
1914
+ z-index: 1;
1915
+ margin-right: 10px
1916
+ }
1917
+
1918
+ .contRight {
1919
+ flex: 0 0 30%;
1920
+ margin-top: 33.98px;
1921
+ }
1922
+
1923
+ .checkbox-container {
1924
+ display: flex;
1925
+ flex-direction: column;
1926
+ line-height: 30px;
1927
+ }
1928
+
1929
+ .overflowAuto {
1930
+ height: 600px;
1931
+ overflow-y: auto;
1932
+ }
1933
+
1934
+ .contLeftTwo {
1935
+ flex: 0 0 50%;
1936
+ z-index: 1;
1937
+ margin-right: 10px;
1938
+ }
1939
+
1940
+ .contRightTwo {
1941
+ flex: 0 0 49%;
1942
+ margin-top: 30px;
1943
+ }
1944
+
1945
+ /deep/ .ivu-checkbox-input {
1946
+ width: 136px;
1947
+ }
1948
+ </style>