@lambo-design/workflow-approve 1.0.0-beta.14 → 1.0.0-beta.141

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