@lambo-design/workflow-approve 1.0.0-beta.46 → 1.0.0-beta.48

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.
@@ -1,15 +1,14 @@
1
1
  <template>
2
2
  <div style="min-height: 300px;">
3
- <div style="min-height:5em;border: 1px dotted #a4a4a4;">
4
- <template v-if="countersignersTagsData.length > 0">
5
- <Tag v-for="(item, index) in countersignersTagsData" :key="item.id" closable @on-close="closeTags(index, item)" size="large">
6
- {{ item.split(':')[1].split(',')[0] }}
7
- </Tag>
8
- </template>
9
- <template v-else>
10
- <p style="padding: 10px;color: #989898">暂无会签人</p>
11
- </template>
12
- </div>
3
+ <Select v-model="countersignersTagsData"
4
+ filterable multiple
5
+ @on-change="organChange($event)"
6
+ class="custom-select"
7
+ >
8
+ <Option v-for="(value, key) in organTree.userMap" :key="key" :value="`${key},${value}`" :label="value">
9
+ <span>{{ value }}</span>
10
+ </Option>
11
+ </Select>
13
12
  <div class="cont">
14
13
  <div
15
14
  class="contLeftTwo">
@@ -89,7 +88,7 @@ export default {
89
88
  userNum: '0',
90
89
  // permScope: "",
91
90
  organTreeType: '00',
92
- organId: '',
91
+ organIdList: [],
93
92
  countersignersTagsData: [],
94
93
  organTree: {
95
94
  orgenMap: {},
@@ -152,24 +151,6 @@ export default {
152
151
  },
153
152
  methods: {
154
153
  //把已选择的数据放入到已选列表中展示
155
- getOrgan(row) {
156
- let self = this
157
- self.countersignersTagsData = []
158
- let organs = row.organs
159
- let organList = organs.split(',')
160
- if (organs && organList.length > 0) {
161
- organList.forEach(item => {
162
- let organ = {
163
- code: item.split(':')[0],
164
- name: item.split(':')[1],
165
- }
166
- self.treeValueBM.push(organ)
167
- self.orgList.push(organ)
168
- self.countersignersTagsData.push(item + ',1')
169
- self.userNum = '1'
170
- })
171
- }
172
- },
173
154
  getUser(row) {
174
155
  let self = this
175
156
  self.selectedKeys = []
@@ -178,79 +159,24 @@ export default {
178
159
  let userList = users.split(',')
179
160
  if (users && userList.length > 0) {
180
161
  userList.forEach(item => {
181
- let userId = item.split(':')[0]
182
- let userName = item.split(':')[1]
183
- let user = {
184
- userId: userId,
185
- userName: userName,
186
- }
187
- let userStr = userId + ',' + userName
162
+ let [userId, userName] = item.split(':');
163
+ let userStr = `${userId},${userName}`;
188
164
  self.selectedData.push(userStr)
189
165
  self.treeUserValue.push(userStr)
190
166
  self.selectedKeys.push(userStr)
191
- self.countersignersTagsData.push(item + ',2')
192
- self.userNum = '1'
193
- })
194
- }
195
- },
196
- getRole(row) {
197
- let self = this
198
- self.noticeRoleList = []
199
- self.noticeList = []
200
- self.noticeRoleNameList = []
201
- let roles = row.roles
202
- let roleList = roles.split(',')
203
- if (roles && roleList.length > 0) {
204
- roleList.forEach(item => {
205
- let roleId = item.split(':')[0]
206
- let roleName = item.split(':')[1]
207
- self.noticeRoleNameList.push(roleName)
208
- self.countersignersTagsData.push(item + ',3')
209
- let roles = roleId + ',' + roleName
210
- self.selectedData.push(roles)
211
- self.noticeList.push(roles)
212
- })
213
- }
214
- },
215
- getPost(row) {
216
- let self = this
217
- self.treePostValue = []
218
- self.postKeys = []
219
- self.treePostNameCenterValue = []
220
- let positions = row.positions
221
- let positionList = positions.split(',')
222
- if (positions && positionList.length > 0) {
223
- positionList.forEach(item => {
224
- let positionId = item.split(':')[0]
225
- let positionName = item.split(':')[1]
226
- let position = {
227
- positionId: positionId,
228
- positionName: positionName,
167
+ if (!self.countersignersTagsData.includes(userStr)) {
168
+ self.countersignersTagsData.push(userStr);
229
169
  }
230
- let post = positionId + ',' + positionName
231
- self.treePostValue.push(post)
232
- self.postKeys.push(post)
233
- // resp.data.data.code = resp.data.data.orgCode
234
- // self.treePostNameCenterValue.push(resp.data.data)
235
- self.treePostNameCenterValue.push(position)
236
- self.countersignersTagsData.push(item + ',4')
170
+ self.userNum = '1'
237
171
  })
238
172
  }
239
173
  },
240
- getOrgType(row) {
241
- let self = this
242
- let types = row.types
243
- let typeList = types.split(",")
244
- if (types && typeList.length > 0) {
245
- typeList.forEach(item => {
246
- let type = {
247
- bizTypeCode: item.split(':')[0],
248
- typeName: item.split(':')[1],
249
- }
250
- self.treeOrgTypeValue.push(type)
251
- self.updateLength()
252
- })
253
- }
174
+
175
+ organChange(event) {
176
+ this.countersignersTagsData = [...event]; // 直接同步
177
+ this.treeUserValue = [...event]; // 保持一致
178
+ this.selectedKeys = [...event];
179
+
254
180
  },
255
181
 
256
182
  getRootOrganTree(organTreeType) {
@@ -345,69 +271,69 @@ export default {
345
271
  getOrganTreeByProType(row, permScope, organTreeType) {
346
272
  const self = this
347
273
  return new Promise((resolve, reject) => {
348
- let organTree = [];
349
- let childsTree = [];
274
+ let organTree = []
275
+ let childsTree = []
350
276
  if (permScope && permScope.length > 0) {
351
277
  let params = {
352
278
  orgTreeType: organTreeType,
353
- };
354
- permScope = permScope.split(';');
279
+ }
280
+ permScope = permScope.split(';')
355
281
 
356
282
  const requests = permScope.map(perm => {
357
283
  return ajax.get(self.smartFlowServerContext + '/manage/organ/get/' + perm, { params: params })
358
- .then(resp => {
359
- if (resp.data.code === 200) {
360
- return resp.data.data;
361
- } else {
362
- return [];
363
- }
364
- })
365
- .catch(err => {
366
- console.error(err);
367
- return [];
368
- });
369
- });
284
+ .then(resp => {
285
+ if (resp.data.code === 200) {
286
+ return resp.data.data
287
+ } else {
288
+ return []
289
+ }
290
+ })
291
+ .catch(err => {
292
+ console.error(err)
293
+ return []
294
+ })
295
+ })
370
296
 
371
297
  Promise.all(requests)
372
- .then(results => {
373
- results.forEach(data => {
374
- if (data) {
375
- let obj = {
376
- type: data.organType,
377
- id: data.id,
378
- organId: data.organId,
379
- orders: data.orders,
380
- title: data.organName,
381
- name: data.organName,
382
- com: data.organId,
383
- code: data.organCode,
384
- loading: false,
385
- checked: false,
386
- children: [],
387
- hasChild: true,
388
- };
389
- childsTree.push(obj);
390
- }
391
- });
392
-
393
- organTree.push(childsTree);
394
- const codesSeen = new Map();
395
- organTree = organTree.reduce((acc, item, index) => {
396
- if (!codesSeen.has(item.code)) {
397
- codesSeen.set(item.code, index);
398
- acc.push(item);
298
+ .then(results => {
299
+ results.forEach(data => {
300
+ if (data) {
301
+ let obj = {
302
+ type: data.organType,
303
+ id: data.id,
304
+ organId: data.organId,
305
+ orders: data.orders,
306
+ title: data.organName,
307
+ name: data.organName,
308
+ com: data.organId,
309
+ code: data.organCode,
310
+ loading: false,
311
+ checked: false,
312
+ children: [],
313
+ hasChild: true,
399
314
  }
400
- return acc;
401
- }, []);
402
- resolve(organTree);
315
+ childsTree.push(obj)
316
+ }
403
317
  })
404
- .catch(err => {
405
- reject(err);
406
- });
318
+
319
+ organTree.push(childsTree)
320
+ const codesSeen = new Map()
321
+ organTree = organTree.reduce((acc, item, index) => {
322
+ if (!codesSeen.has(item.code)) {
323
+ codesSeen.set(item.code, index)
324
+ acc.push(item)
325
+ }
326
+ return acc
327
+ }, [])
328
+ resolve(organTree)
329
+ })
330
+ .catch(err => {
331
+ reject(err)
332
+ })
407
333
  } else {
408
- resolve([]);
334
+ resolve([])
409
335
  }
410
- });
336
+ })
411
337
  },
412
338
  //获取人员树信息(数据初始化)
413
339
  async getReadingRange(row, organTreeType) {
@@ -415,58 +341,60 @@ export default {
415
341
  var permScope = row.substring(row.indexOf('U:'))
416
342
  permScope = permScope.substring(2, permScope.indexOf(','))
417
343
  let permScopeTwo = permScope.split(';')
418
- if (permScopeTwo.length > 0 && permScopeTwo[0]){
344
+ if (permScopeTwo.length > 0 && permScopeTwo[0]) {
419
345
  let promises = []
420
346
  for (let i = 0; i < permScopeTwo.length; i++) {
421
- let promise = ajax.get(self.smartFlowServerContext + "/manage/user/get/" + permScopeTwo[i] + '?treeType=' + organTreeType)
422
- .then(resp => {
423
- if (resp.data.code === 200) {
424
- return resp.data.data.organCode
425
- }
426
- })
347
+ let promise = ajax.get(self.smartFlowServerContext + '/manage/user/get/' + permScopeTwo[i] + '?treeType=' + organTreeType)
348
+ .then(resp => {
349
+ if (resp.data.code === 200) {
350
+ return resp.data.data.organCode
351
+ }
352
+ })
427
353
  promises.push(promise)
428
354
  }
429
355
  Promise.all(promises).then(async (result) => {
430
- const uniqueResults = [...new Set(result.filter(Boolean))];
431
- permScope = uniqueResults.join(';');
432
- self.readingRange = await this.getOrganTreeByProType(row, permScope, organTreeType);
356
+ const uniqueResults = [...new Set(result.filter(Boolean))]
357
+ permScope = uniqueResults.join(';')
358
+ self.readingRange = await this.getOrganTreeByProType(row, permScope, organTreeType)
359
+ self.organTreeRedis(this.permScope, self.readingRange)
433
360
  })
434
361
  } else {
435
362
  //对于流程类型中没有规定人员范围但规定组织范围的情况
436
- self.readingRange = await this.getOrganTreeByProType(row, row.substring(2, row.indexOf(",")), organTreeType);
363
+ self.readingRange = await this.getOrganTreeByProType(row, row.substring(2, row.indexOf(',')), organTreeType)
437
364
  }
438
365
 
439
366
  },
440
367
 
441
- closeTags(index, info) {
442
- let type = info.split(',')[1]
443
- let data = info.split(',')[0]
444
- this.readingRangeScPerDel(index, data)
445
- },
446
-
447
- //权限范围人员单条删除
448
- readingRangeScPerDel(res, info) {
449
- debugger
450
- let self =this
451
- let index = this.treeUserValue.findIndex(item => {
452
- return item.replace(',', ':') === info
453
- })
454
- if (index !== -1) {
455
- self.treeUserValue = self.treeUserValue.filter((_, i) => i !== index);
456
- self.selectedKeys = self.selectedKeys.filter((_, i) => i !== index);
457
- // self.selectedKeys.splice(index, 1)
458
- }
459
- let orgList = []
460
- let organList = []
461
- orgList.push(info)
462
- info = info.replace(',', ':')
463
- self.countersignersTagsData.forEach(organ => {
464
- if (organ.indexOf(info) == -1) {
465
- organList.push(organ)
466
- }
467
- })
468
- self.countersignersTagsData = organList
469
- },
368
+ // closeTags(index, info) {
369
+ // let type = info.split(',')[1]
370
+ // let data = info.split(',')[0]
371
+ // this.readingRangeScPerDel(index, data)
372
+ // },
373
+
374
+ // //权限范围人员单条删除
375
+ // readingRangeScPerDel(res, info) {
376
+ // let self = this
377
+ // console.log(this.treeUserValue,"treeUserValue")
378
+ // console.log(info,"info")
379
+ // let index = this.treeUserValue.findIndex(item => {
380
+ // return item === info
381
+ // })
382
+ // if (index !== -1) {
383
+ // self.treeUserValue = self.treeUserValue.filter((_, i) => i !== index)
384
+ // self.selectedKeys = self.selectedKeys.filter((_, i) => i !== index)
385
+ // // self.selectedKeys.splice(index, 1)
386
+ // }
387
+ // let orgList = []
388
+ // let organList = []
389
+ // orgList.push(info)
390
+ // info = info.replace(',', ':')
391
+ // self.countersignersTagsData.forEach(organ => {
392
+ // if (organ.indexOf(info) == -1) {
393
+ // organList.push(organ)
394
+ // }
395
+ // })
396
+ // self.countersignersTagsData = organList
397
+ // },
470
398
 
471
399
  selectUserChange(node) {
472
400
  let self = this
@@ -547,7 +475,6 @@ export default {
547
475
  })
548
476
  },
549
477
 
550
-
551
478
  //权限范围用户点击事件(点击人员树,触发查询,显示在右侧)
552
479
  selectReRaYHChange(data, info) {
553
480
  let self = this
@@ -572,7 +499,7 @@ export default {
572
499
  }
573
500
  }).then(function (resp) {
574
501
  if (resp.data.code === 200) {
575
- let nodeUser = resp.data.data.rows ? resp.data.data.rows : resp.data.data;
502
+ let nodeUser = resp.data.data.rows ? resp.data.data.rows : resp.data.data
576
503
  nodeUser.forEach(item => {
577
504
  if (!userIdSet.has(item.userId)) {
578
505
  userIdSet.add(item.userId)
@@ -600,7 +527,7 @@ export default {
600
527
  }
601
528
  }).then(function (resp) {
602
529
  if (resp.data.code === 200) {
603
- let nodeUser = resp.data.data.rows ? resp.data.data.rows : resp.data.data;
530
+ let nodeUser = resp.data.data.rows ? resp.data.data.rows : resp.data.data
604
531
  nodeUser.forEach(item => {
605
532
  if ((!userIdSet.has(item.userId) && userPermScope.includes(item.userId)) || userPermScope.length <= 0 || !userPermScope[0]) {
606
533
  userIdSet.add(item.userId)
@@ -622,41 +549,38 @@ export default {
622
549
  self.treeUserCenterValue = treeUserCenters
623
550
  },
624
551
 
625
-
626
- //人员选中
552
+ // 人员选中
627
553
  getReadingRangeUser(row) {
628
- let self = this
629
- debugger
630
- self.userNum = '2'
554
+ let self = this;
555
+ self.userNum = '2';
631
556
  if (row.length > self.selectedKeys.length) {
632
- self.treeUserValue = row
633
- self.selectedKeys = row
634
- // row = row.reverse()
635
- let index = row.length - 1
636
- let organName = row[index].replace(',', ':') + ',2'
637
- self.countersignersTagsData.push(organName)
557
+ // 用户选择了新人员
558
+ self.treeUserValue = row;
559
+ self.selectedKeys = row;
560
+
561
+ let index = row.length - 1;
562
+ let organName = row[index];
563
+
564
+ if (!self.countersignersTagsData.includes(organName)) {
565
+ self.countersignersTagsData.push(organName);
566
+ }
567
+
568
+ self.organChange(self.countersignersTagsData);
569
+
638
570
  } else if (row.length < self.selectedKeys.length) {
639
- let diff = ''
640
- let orgList = []
641
- for (let i = 0; i < self.selectedKeys.length; i++) {
642
- if (!row.includes(self.selectedKeys[i])) {
643
- diff = self.selectedKeys[i]
644
- }
571
+ // 用户取消了选择
572
+ let diff = self.selectedKeys.find(item => !row.includes(item));
573
+
574
+ // countersignersTagsData 中移除取消的用户
575
+ if (diff) {
576
+ self.countersignersTagsData = self.countersignersTagsData.filter(item => item !== diff);
577
+ self.selectedKeys = row; // 更新选中数据
645
578
  }
646
- diff = diff.replace(',', ':')
647
- self.countersignersTagsData.forEach(organ => {
648
- if (organ.indexOf(diff) == -1) {
649
- orgList.push(organ)
650
- }
651
- })
652
- self.countersignersTagsData = orgList
653
- self.selectedKeys = row
654
579
  }
655
580
  },
656
581
 
657
-
658
582
  //数据初始化?
659
- organTreeRedis(row) {
583
+ organTreeRedis(row, readingRange) {
660
584
  const user = sessionStorage.getItem('userInfo')
661
585
  const jsonArray = JSON.parse(user)
662
586
  if (row == 'undefined' || row == 'all') {
@@ -668,43 +592,31 @@ export default {
668
592
  }
669
593
  })
670
594
  } else {
671
-
672
- let orgPermScope = row.substring(2, row.indexOf(','))
673
- orgPermScope = orgPermScope.split(';')
674
-
675
- let userPermScope = row.substring(row.indexOf('U:'))
676
- userPermScope = userPermScope.substring(2, userPermScope.indexOf(','))
677
- userPermScope = userPermScope.split(';')
678
-
679
- var rolePermScope = row.substring(row.indexOf('R:'))
680
- rolePermScope = rolePermScope.substring(2, rolePermScope.indexOf(','))
681
- rolePermScope = rolePermScope.split(';')
682
-
683
- let postPermScope = row.substring(row.indexOf('P:'))
684
- postPermScope = postPermScope.substring(2, postPermScope.indexOf(','))
685
- postPermScope = postPermScope.split(';')
686
- ajax.get(this.upmsServerContext + '/manage/user/get/' + (jsonArray.accountUuid || jsonArray.userId))
687
- .then(resp => {
688
- this.organId = resp.data.data.organId
689
- ajax.get(this.smartFlowServerContext + '/manage/processDesign/getOrgan?orgId=' + (jsonArray.organId)
690
- ).then(resp => {
691
- if (resp.data.code === '200') {
692
- for (let key in resp.data.data.userMap) {
693
- for (let i = 0; i < userPermScope.length; i++) {
694
- if (key == userPermScope[i]) {
695
- const dataArr = [[key, resp.data.data.userMap[key]]]
696
- for (let i = 0; i < dataArr.length; i++) {
697
- const [key, value] = dataArr[i]
698
- this.$set(this.organTree.userMap, key, value)
699
- }
700
- }
595
+ let organIds =[]
596
+ readingRange[0].forEach(item => {
597
+ organIds.push(item.organId)
598
+ })
599
+ console.log(organIds)
600
+ ajax.get(this.smartFlowServerContext + '/manage/user/getAllUsersInfo', {
601
+ params: {
602
+ organIds: organIds.join(','),
603
+ permScopeList: row,
604
+ orgTreeType: this.organTreeType
605
+ }
606
+ }
607
+ ).then(resp => {
608
+ if (resp.data.code === '200') {
609
+ for (let key in resp.data.data) {
610
+ const dataArr = [[key, resp.data.data[key]]]
611
+ for (let i = 0; i < dataArr.length; i++) {
612
+ const [key, value] = dataArr[i]
613
+ this.$set(this.organTree.userMap, key, value)
701
614
  }
702
615
  }
616
+ console.log(this.organTree.userMap,"userMap")
617
+ }
618
+ })
703
619
 
704
- }
705
- })
706
-
707
- })
708
620
  }
709
621
 
710
622
  },
@@ -756,7 +668,7 @@ export default {
756
668
  this.id = id
757
669
  this.permScope = permScope
758
670
  this.organTreeType = organTreeType
759
- this.organTreeRedis(this.permScope)
671
+ // this.organTreeRedis(this.permScope)
760
672
  if (inputValue) {
761
673
  //加入已选择的数据
762
674
  this.getUser(inputValue)
@@ -767,25 +679,9 @@ export default {
767
679
  } else {
768
680
  this.getReadingRange(this.permScope, this.organTreeType)
769
681
  }
770
- },
771
- findTitleByValue(arr, value) {
772
- function traverse(items) {
773
- for (let item of items) {
774
- if (item.value === value) {
775
- return item.title
776
- }
777
- if (item.children && item.children.length > 0) {
778
- let result = traverse(item.children)
779
- if (result) {
780
- return result
781
- }
782
- }
783
- }
784
- return ''
785
- }
786
682
 
787
- return traverse(arr)
788
683
  },
684
+
789
685
  showUserDetail(item) {
790
686
  if (item.organName) {
791
687
  return `(${item.organName} )`
@@ -799,6 +695,7 @@ export default {
799
695
  watch: {
800
696
  countersignersTagsData: {
801
697
  handler(newVal, oldVal) {
698
+ console.log("countersignersTagsData",newVal)
802
699
  let organ = []
803
700
  let names = []
804
701
  let organs = []
@@ -809,13 +706,12 @@ export default {
809
706
  })
810
707
  let nameValue = []
811
708
  let users = []
812
- //倒着从treeUserValue遍历,保证顺序和显示的一样
813
709
  this.treeUserValue.forEach(item => {
814
- const parts = item.split(',');
815
- nameValue.push(parts[0]);
816
- names.push(parts[1]);
817
- users.push(parts[0] + ':' + parts[1]);
818
- });
710
+ const parts = item.split(',')
711
+ nameValue.push(parts[0])
712
+ names.push(parts[1])
713
+ users.push(parts[0] + ':' + parts[1])
714
+ })
819
715
  let roleList = []
820
716
  let roles = []
821
717
  this.noticeRoleList.forEach(item => {
@@ -910,4 +806,36 @@ export default {
910
806
  /deep/ .ivu-checkbox-input {
911
807
  width: 136px;
912
808
  }
809
+ /deep/.custom-select .ivu-select {
810
+ height: 80px; /* 控制总体高度 */
811
+ min-height: 80px;
812
+ line-height: normal; /* 避免行高过大导致居中 */
813
+ box-sizing: border-box;
814
+ }
815
+
816
+ /deep/.custom-select .ivu-select-input {
817
+ height: auto !important;
818
+ line-height: normal !important;
819
+ padding: 0 !important;
820
+ margin-top: 0 !important;
821
+ }
822
+
823
+ /deep/.custom-select .ivu-select-selection {
824
+ display: flex !important;
825
+ flex-wrap: wrap !important;
826
+ align-items: flex-start !important;
827
+ height: 80px; /* 与上面的高度一致 */
828
+ padding: 8px !important;
829
+ line-height: normal !important;
830
+ overflow-y: auto;
831
+ }
832
+
833
+ /deep/.custom-select .ivu-select-selection__choice {
834
+ margin: 0 5px 5px 0;
835
+ vertical-align: top;}
836
+
837
+ /* 可选:调整下拉箭头的位置 */
838
+ /deep/.custom-select .ivu-select-arrow {
839
+ display: none;
840
+ }
913
841
  </style>