@lambo-design/workflow-approve 1.0.0-beta.50 → 1.0.0-beta.52
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.
- package/package.json +1 -1
- package/src/components/countersigners-box.vue +115 -101
package/package.json
CHANGED
|
@@ -1,14 +1,23 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div style="min-height: 300px;">
|
|
3
|
-
<
|
|
3
|
+
<div v-if="organTree.userMap && Object.keys(organTree.userMap).length > 0" class="searchable-select-wrapper">
|
|
4
|
+
<Select v-model="countersignersTagsData"
|
|
4
5
|
filterable multiple
|
|
5
6
|
@on-change="organChange($event)"
|
|
6
7
|
class="custom-select"
|
|
7
|
-
|
|
8
|
-
<Option v-for="(value, key) in organTree.userMap" :key="key" :value="`${key},${value}`"
|
|
8
|
+
>
|
|
9
|
+
<Option v-for="(value, key) in organTree.userMap" :key="key" :value="`${key},${value.split('(')[0]}`" :label="value.split('(')[0]">
|
|
9
10
|
<span>{{ value }}</span>
|
|
10
11
|
</Option>
|
|
11
12
|
</Select>
|
|
13
|
+
<Icon type="ios-search" class="search-icon" />
|
|
14
|
+
</div>
|
|
15
|
+
<Tag v-else v-for="(item, index) in countersignersTagsData" :key="item.id" closable
|
|
16
|
+
@on-close="closeTags(index, item)"
|
|
17
|
+
size="large">
|
|
18
|
+
{{ item.split(',')[1] }}
|
|
19
|
+
</Tag>
|
|
20
|
+
|
|
12
21
|
<div class="cont">
|
|
13
22
|
<div
|
|
14
23
|
class="contLeftTwo">
|
|
@@ -159,13 +168,13 @@ export default {
|
|
|
159
168
|
let userList = users.split(',')
|
|
160
169
|
if (users && userList.length > 0) {
|
|
161
170
|
userList.forEach(item => {
|
|
162
|
-
let [userId, userName] = item.split(':')
|
|
163
|
-
let userStr = `${userId},${userName}
|
|
171
|
+
let [userId, userName] = item.split(':')
|
|
172
|
+
let userStr = `${userId},${userName}`
|
|
164
173
|
self.selectedData.push(userStr)
|
|
165
174
|
self.treeUserValue.push(userStr)
|
|
166
175
|
self.selectedKeys.push(userStr)
|
|
167
176
|
if (!self.countersignersTagsData.includes(userStr)) {
|
|
168
|
-
self.countersignersTagsData.push(userStr)
|
|
177
|
+
self.countersignersTagsData.push(userStr)
|
|
169
178
|
}
|
|
170
179
|
self.userNum = '1'
|
|
171
180
|
})
|
|
@@ -173,9 +182,9 @@ export default {
|
|
|
173
182
|
},
|
|
174
183
|
|
|
175
184
|
organChange(event) {
|
|
176
|
-
this.countersignersTagsData = [...event]
|
|
177
|
-
this.treeUserValue = [...event]
|
|
178
|
-
this.selectedKeys = [...event]
|
|
185
|
+
this.countersignersTagsData = [...event] // 直接同步
|
|
186
|
+
this.treeUserValue = [...event] // 保持一致
|
|
187
|
+
this.selectedKeys = [...event]
|
|
179
188
|
|
|
180
189
|
},
|
|
181
190
|
|
|
@@ -266,6 +275,7 @@ export default {
|
|
|
266
275
|
}
|
|
267
276
|
})
|
|
268
277
|
}
|
|
278
|
+
self.organTreeRedis(self.permScope, self.readingRange)
|
|
269
279
|
},
|
|
270
280
|
|
|
271
281
|
getOrganTreeByProType(row, permScope, organTreeType) {
|
|
@@ -361,40 +371,36 @@ export default {
|
|
|
361
371
|
} else {
|
|
362
372
|
//对于流程类型中没有规定人员范围但规定组织范围的情况
|
|
363
373
|
self.readingRange = await this.getOrganTreeByProType(row, row.substring(2, row.indexOf(',')), organTreeType)
|
|
374
|
+
self.organTreeRedis(this.permScope, self.readingRange)
|
|
364
375
|
}
|
|
365
376
|
|
|
366
377
|
},
|
|
367
378
|
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
// organList.push(organ)
|
|
394
|
-
// }
|
|
395
|
-
// })
|
|
396
|
-
// self.countersignersTagsData = organList
|
|
397
|
-
// },
|
|
379
|
+
closeTags(index, info) {
|
|
380
|
+
this.readingRangeScPerDel(index, info)
|
|
381
|
+
},
|
|
382
|
+
|
|
383
|
+
//权限范围人员单条删除
|
|
384
|
+
readingRangeScPerDel(res, info) {
|
|
385
|
+
let self = this
|
|
386
|
+
let index = this.treeUserValue.findIndex(item => {
|
|
387
|
+
return item === info
|
|
388
|
+
})
|
|
389
|
+
if (index !== -1) {
|
|
390
|
+
self.treeUserValue = self.treeUserValue.filter((_, i) => i !== index)
|
|
391
|
+
self.selectedKeys = self.selectedKeys.filter((_, i) => i !== index)
|
|
392
|
+
// self.selectedKeys.splice(index, 1)
|
|
393
|
+
}
|
|
394
|
+
let orgList = []
|
|
395
|
+
let organList = []
|
|
396
|
+
orgList.push(info)
|
|
397
|
+
self.countersignersTagsData.forEach(organ => {
|
|
398
|
+
if (organ.indexOf(info) == -1) {
|
|
399
|
+
organList.push(organ)
|
|
400
|
+
}
|
|
401
|
+
})
|
|
402
|
+
self.countersignersTagsData = organList
|
|
403
|
+
},
|
|
398
404
|
|
|
399
405
|
selectUserChange(node) {
|
|
400
406
|
let self = this
|
|
@@ -551,73 +557,61 @@ export default {
|
|
|
551
557
|
|
|
552
558
|
// 人员选中
|
|
553
559
|
getReadingRangeUser(row) {
|
|
554
|
-
let self = this
|
|
555
|
-
self.userNum = '2'
|
|
560
|
+
let self = this
|
|
561
|
+
self.userNum = '2'
|
|
556
562
|
if (row.length > self.selectedKeys.length) {
|
|
557
563
|
// 用户选择了新人员
|
|
558
|
-
self.treeUserValue = row
|
|
559
|
-
self.selectedKeys = row
|
|
564
|
+
self.treeUserValue = row
|
|
565
|
+
self.selectedKeys = row
|
|
560
566
|
|
|
561
|
-
let index = row.length - 1
|
|
562
|
-
let organName = row[index]
|
|
567
|
+
let index = row.length - 1
|
|
568
|
+
let organName = row[index]
|
|
563
569
|
|
|
564
570
|
if (!self.countersignersTagsData.includes(organName)) {
|
|
565
|
-
self.countersignersTagsData.push(organName)
|
|
571
|
+
self.countersignersTagsData.push(organName)
|
|
566
572
|
}
|
|
567
573
|
|
|
568
|
-
self.organChange(self.countersignersTagsData)
|
|
574
|
+
self.organChange(self.countersignersTagsData)
|
|
569
575
|
|
|
570
576
|
} else if (row.length < self.selectedKeys.length) {
|
|
571
577
|
// 用户取消了选择
|
|
572
|
-
let diff = self.selectedKeys.find(item => !row.includes(item))
|
|
578
|
+
let diff = self.selectedKeys.find(item => !row.includes(item))
|
|
573
579
|
|
|
574
580
|
// 从 countersignersTagsData 中移除取消的用户
|
|
575
581
|
if (diff) {
|
|
576
|
-
self.countersignersTagsData = self.countersignersTagsData.filter(item => item !== diff)
|
|
577
|
-
self.selectedKeys = row
|
|
582
|
+
self.countersignersTagsData = self.countersignersTagsData.filter(item => item !== diff)
|
|
583
|
+
self.selectedKeys = row // 更新选中数据
|
|
578
584
|
}
|
|
579
585
|
}
|
|
580
586
|
},
|
|
581
587
|
|
|
582
588
|
//数据初始化?
|
|
583
589
|
organTreeRedis(row, readingRange) {
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
if (row == 'undefined' || row == 'all') {
|
|
587
|
-
|
|
588
|
-
ajax.get(this.smartFlowServerContext + '/manage/processDesign/getOrgan?orgId=' + (jsonArray.organId)
|
|
589
|
-
).then(resp => {
|
|
590
|
-
if (resp.data.code === '200') {
|
|
591
|
-
this.organTree = resp.data.data
|
|
592
|
-
}
|
|
593
|
-
})
|
|
594
|
-
} else {
|
|
595
|
-
let organIds =[]
|
|
590
|
+
let organIds = []
|
|
591
|
+
if (readingRange.length > 0) {
|
|
596
592
|
readingRange[0].forEach(item => {
|
|
597
593
|
organIds.push(item.organId)
|
|
598
594
|
})
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
ajax.get(this.smartFlowServerContext + '/manage/user/getAllUsersInfo', {
|
|
598
|
+
params: {
|
|
599
|
+
organIds: organIds.join(','),
|
|
600
|
+
permScopeList: row,
|
|
601
|
+
orgTreeType: this.organTreeType
|
|
606
602
|
}
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
console.log(this.organTree.userMap,"userMap")
|
|
603
|
+
}
|
|
604
|
+
).then(resp => {
|
|
605
|
+
if (resp.data.code === '200') {
|
|
606
|
+
for (let key in resp.data.data) {
|
|
607
|
+
const dataArr = [[key, resp.data.data[key]]]
|
|
608
|
+
for (let i = 0; i < dataArr.length; i++) {
|
|
609
|
+
const [key, value] = dataArr[i]
|
|
610
|
+
this.$set(this.organTree.userMap, key, value)
|
|
611
|
+
}
|
|
617
612
|
}
|
|
618
|
-
}
|
|
619
|
-
|
|
620
|
-
}
|
|
613
|
+
}
|
|
614
|
+
})
|
|
621
615
|
|
|
622
616
|
},
|
|
623
617
|
|
|
@@ -695,7 +689,6 @@ export default {
|
|
|
695
689
|
watch: {
|
|
696
690
|
countersignersTagsData: {
|
|
697
691
|
handler(newVal, oldVal) {
|
|
698
|
-
console.log("countersignersTagsData",newVal)
|
|
699
692
|
let organ = []
|
|
700
693
|
let names = []
|
|
701
694
|
let organs = []
|
|
@@ -770,9 +763,10 @@ export default {
|
|
|
770
763
|
}
|
|
771
764
|
|
|
772
765
|
.contLeft {
|
|
773
|
-
flex:
|
|
774
|
-
|
|
775
|
-
|
|
766
|
+
flex: 1; /* 让右侧自适应剩余空间 */
|
|
767
|
+
margin-top: 34px; /* 您原本的33.98px可改为34px */
|
|
768
|
+
min-height: 350px;
|
|
769
|
+
overflow: auto; /* 可选,若内容过长也可滚动 */
|
|
776
770
|
}
|
|
777
771
|
|
|
778
772
|
.contRight {
|
|
@@ -793,49 +787,69 @@ export default {
|
|
|
793
787
|
}
|
|
794
788
|
|
|
795
789
|
.contLeftTwo {
|
|
796
|
-
flex:
|
|
797
|
-
|
|
790
|
+
flex: none; /* 改为none,这样不按照flex比例缩放 */
|
|
791
|
+
width: 250px; /* 固定宽度或max-width */
|
|
798
792
|
margin-right: 10px;
|
|
793
|
+
overflow: auto; /* 当内容超过300px宽时出现滚动条 */
|
|
799
794
|
}
|
|
800
795
|
|
|
801
|
-
.contRightTwo {
|
|
802
|
-
flex: 0 0 49%;
|
|
803
|
-
margin-top: 30px;
|
|
804
|
-
}
|
|
805
796
|
|
|
806
797
|
/deep/ .ivu-checkbox-input {
|
|
807
798
|
width: 136px;
|
|
808
799
|
}
|
|
809
|
-
|
|
810
|
-
|
|
800
|
+
|
|
801
|
+
/deep/ .custom-select {
|
|
802
|
+
width: 100% !important;
|
|
803
|
+
}
|
|
804
|
+
|
|
805
|
+
/deep/ .custom-select .ivu-select {
|
|
806
|
+
height: 80px; /* 控制总体高度 */
|
|
811
807
|
min-height: 80px;
|
|
812
|
-
line-height: normal;
|
|
808
|
+
line-height: normal; /* 避免行高过大导致居中 */
|
|
813
809
|
box-sizing: border-box;
|
|
814
810
|
}
|
|
815
811
|
|
|
816
|
-
/deep
|
|
812
|
+
/deep/ .custom-select .ivu-select-input {
|
|
817
813
|
height: auto !important;
|
|
818
814
|
line-height: normal !important;
|
|
819
815
|
padding: 0 !important;
|
|
820
816
|
margin-top: 0 !important;
|
|
817
|
+
|
|
821
818
|
}
|
|
822
819
|
|
|
823
|
-
/deep
|
|
820
|
+
/deep/ .custom-select .ivu-select-selection {
|
|
824
821
|
display: flex !important;
|
|
825
822
|
flex-wrap: wrap !important;
|
|
826
823
|
align-items: flex-start !important;
|
|
827
|
-
height: 80px;
|
|
824
|
+
height: 80px; /* 与上面的高度一致 */
|
|
828
825
|
padding: 8px !important;
|
|
829
826
|
line-height: normal !important;
|
|
830
827
|
overflow-y: auto;
|
|
831
828
|
}
|
|
832
829
|
|
|
833
|
-
/deep
|
|
830
|
+
/deep/ .custom-select .ivu-select-selection__choice {
|
|
834
831
|
margin: 0 5px 5px 0;
|
|
835
|
-
vertical-align: top;
|
|
832
|
+
vertical-align: top;
|
|
833
|
+
}
|
|
836
834
|
|
|
837
835
|
/* 可选:调整下拉箭头的位置 */
|
|
838
|
-
/deep
|
|
836
|
+
/deep/ .custom-select .ivu-select-arrow {
|
|
839
837
|
display: none;
|
|
840
838
|
}
|
|
839
|
+
.searchable-select-wrapper {
|
|
840
|
+
position: relative;
|
|
841
|
+
display: inline-block;
|
|
842
|
+
width: 100%;
|
|
843
|
+
}
|
|
844
|
+
|
|
845
|
+
.search-icon {
|
|
846
|
+
position: absolute;
|
|
847
|
+
top: 50%;
|
|
848
|
+
right: 10px;
|
|
849
|
+
zoom: 120%;
|
|
850
|
+
transform: translateY(100%);
|
|
851
|
+
color: #999; /* 根据需要调整图标颜色 */
|
|
852
|
+
pointer-events: none; /* 确保点击图标不会影响选择操作 */
|
|
853
|
+
}
|
|
854
|
+
|
|
841
855
|
</style>
|