ddy-process-pc-vue2 1.0.1-rc.1.1 → 1.0.1-rc.1.3
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/vue2/index.esm.js +889 -54
- package/vue2/index.umd.js +889 -54
package/vue2/index.esm.js
CHANGED
|
@@ -674,7 +674,7 @@ var api$1 = {
|
|
|
674
674
|
*/
|
|
675
675
|
getOutgoingProcessNode(taskId, processNodeId) {
|
|
676
676
|
let ajaxObj = {
|
|
677
|
-
url:
|
|
677
|
+
url: proxyStrV2 + "/tis/getOutgoingProcessNode",
|
|
678
678
|
param: {
|
|
679
679
|
taskId,
|
|
680
680
|
processNodeId
|
|
@@ -873,10 +873,10 @@ const OperationType = {
|
|
|
873
873
|
* 流程节点类型
|
|
874
874
|
*/
|
|
875
875
|
const ProcessNodeType = {
|
|
876
|
-
单一分支: "
|
|
876
|
+
单一分支: "exclusiveGatewayModel",
|
|
877
877
|
用户任务: "UserTaskModel",
|
|
878
878
|
用户节点: "userTask",
|
|
879
|
-
多选节点: "
|
|
879
|
+
多选节点: "exclusiveGatewayModel",
|
|
880
880
|
结束: "endEvent",
|
|
881
881
|
结束事件: "EndEventModel"
|
|
882
882
|
};
|
|
@@ -2690,6 +2690,167 @@ __vue_render__$h._withStripped = true;
|
|
|
2690
2690
|
//
|
|
2691
2691
|
//
|
|
2692
2692
|
//
|
|
2693
|
+
//
|
|
2694
|
+
//
|
|
2695
|
+
//
|
|
2696
|
+
//
|
|
2697
|
+
//
|
|
2698
|
+
//
|
|
2699
|
+
//
|
|
2700
|
+
//
|
|
2701
|
+
//
|
|
2702
|
+
//
|
|
2703
|
+
//
|
|
2704
|
+
//
|
|
2705
|
+
//
|
|
2706
|
+
//
|
|
2707
|
+
//
|
|
2708
|
+
//
|
|
2709
|
+
//
|
|
2710
|
+
//
|
|
2711
|
+
//
|
|
2712
|
+
//
|
|
2713
|
+
//
|
|
2714
|
+
//
|
|
2715
|
+
//
|
|
2716
|
+
//
|
|
2717
|
+
//
|
|
2718
|
+
//
|
|
2719
|
+
//
|
|
2720
|
+
//
|
|
2721
|
+
//
|
|
2722
|
+
//
|
|
2723
|
+
//
|
|
2724
|
+
//
|
|
2725
|
+
//
|
|
2726
|
+
//
|
|
2727
|
+
//
|
|
2728
|
+
//
|
|
2729
|
+
//
|
|
2730
|
+
//
|
|
2731
|
+
//
|
|
2732
|
+
//
|
|
2733
|
+
//
|
|
2734
|
+
//
|
|
2735
|
+
//
|
|
2736
|
+
//
|
|
2737
|
+
//
|
|
2738
|
+
//
|
|
2739
|
+
//
|
|
2740
|
+
//
|
|
2741
|
+
//
|
|
2742
|
+
//
|
|
2743
|
+
//
|
|
2744
|
+
//
|
|
2745
|
+
//
|
|
2746
|
+
//
|
|
2747
|
+
//
|
|
2748
|
+
//
|
|
2749
|
+
//
|
|
2750
|
+
//
|
|
2751
|
+
//
|
|
2752
|
+
//
|
|
2753
|
+
//
|
|
2754
|
+
//
|
|
2755
|
+
//
|
|
2756
|
+
//
|
|
2757
|
+
//
|
|
2758
|
+
//
|
|
2759
|
+
//
|
|
2760
|
+
//
|
|
2761
|
+
//
|
|
2762
|
+
//
|
|
2763
|
+
//
|
|
2764
|
+
//
|
|
2765
|
+
//
|
|
2766
|
+
//
|
|
2767
|
+
//
|
|
2768
|
+
//
|
|
2769
|
+
//
|
|
2770
|
+
//
|
|
2771
|
+
//
|
|
2772
|
+
//
|
|
2773
|
+
//
|
|
2774
|
+
//
|
|
2775
|
+
//
|
|
2776
|
+
//
|
|
2777
|
+
//
|
|
2778
|
+
//
|
|
2779
|
+
//
|
|
2780
|
+
//
|
|
2781
|
+
//
|
|
2782
|
+
//
|
|
2783
|
+
//
|
|
2784
|
+
//
|
|
2785
|
+
//
|
|
2786
|
+
//
|
|
2787
|
+
//
|
|
2788
|
+
//
|
|
2789
|
+
//
|
|
2790
|
+
//
|
|
2791
|
+
//
|
|
2792
|
+
//
|
|
2793
|
+
//
|
|
2794
|
+
//
|
|
2795
|
+
//
|
|
2796
|
+
//
|
|
2797
|
+
//
|
|
2798
|
+
//
|
|
2799
|
+
//
|
|
2800
|
+
//
|
|
2801
|
+
//
|
|
2802
|
+
//
|
|
2803
|
+
//
|
|
2804
|
+
//
|
|
2805
|
+
//
|
|
2806
|
+
//
|
|
2807
|
+
//
|
|
2808
|
+
//
|
|
2809
|
+
//
|
|
2810
|
+
//
|
|
2811
|
+
//
|
|
2812
|
+
//
|
|
2813
|
+
//
|
|
2814
|
+
//
|
|
2815
|
+
//
|
|
2816
|
+
//
|
|
2817
|
+
//
|
|
2818
|
+
//
|
|
2819
|
+
//
|
|
2820
|
+
//
|
|
2821
|
+
//
|
|
2822
|
+
//
|
|
2823
|
+
//
|
|
2824
|
+
//
|
|
2825
|
+
//
|
|
2826
|
+
//
|
|
2827
|
+
//
|
|
2828
|
+
//
|
|
2829
|
+
//
|
|
2830
|
+
//
|
|
2831
|
+
//
|
|
2832
|
+
//
|
|
2833
|
+
//
|
|
2834
|
+
//
|
|
2835
|
+
//
|
|
2836
|
+
//
|
|
2837
|
+
//
|
|
2838
|
+
//
|
|
2839
|
+
//
|
|
2840
|
+
//
|
|
2841
|
+
//
|
|
2842
|
+
//
|
|
2843
|
+
//
|
|
2844
|
+
//
|
|
2845
|
+
//
|
|
2846
|
+
//
|
|
2847
|
+
//
|
|
2848
|
+
//
|
|
2849
|
+
//
|
|
2850
|
+
//
|
|
2851
|
+
//
|
|
2852
|
+
//
|
|
2853
|
+
//
|
|
2693
2854
|
|
|
2694
2855
|
|
|
2695
2856
|
var script$g = {
|
|
@@ -2729,9 +2890,17 @@ var script$g = {
|
|
|
2729
2890
|
};
|
|
2730
2891
|
},
|
|
2731
2892
|
computed: {
|
|
2893
|
+
// 单选分支
|
|
2894
|
+
singalCond() {
|
|
2895
|
+
const cond1 = this.processNodeObj.nodeType == 'exclusiveGateway' && this.processNodeObj.branches && this.processNodeObj.branches.length > 1;
|
|
2896
|
+
return cond1
|
|
2897
|
+
},
|
|
2732
2898
|
checkModelList() {
|
|
2733
|
-
let arr = this.processNodeObj.
|
|
2734
|
-
|
|
2899
|
+
let arr = this.processNodeObj.branches.filter((o) =>
|
|
2900
|
+
{
|
|
2901
|
+
console.log(o, 'o');
|
|
2902
|
+
return this.checkList.includes(o.incomingConditionItemList[0].compareValue)
|
|
2903
|
+
}
|
|
2735
2904
|
);
|
|
2736
2905
|
|
|
2737
2906
|
this.resultList = arr || [];
|
|
@@ -2761,6 +2930,7 @@ var script$g = {
|
|
|
2761
2930
|
},
|
|
2762
2931
|
methods: {
|
|
2763
2932
|
isSelect(item) {
|
|
2933
|
+
console.error(item, 'isSelect', this.checkList);
|
|
2764
2934
|
if (item.incomingConditionItemList[0]) {
|
|
2765
2935
|
let flag =
|
|
2766
2936
|
item.incomingConditionItemList[0].itemName.includes("selecd");
|
|
@@ -2839,20 +3009,129 @@ var script$g = {
|
|
|
2839
3009
|
getValue() {
|
|
2840
3010
|
let flag = true;
|
|
2841
3011
|
let val = { multiNodeParticipant: {}, vars: {} };
|
|
3012
|
+
console.error(this.processNodeObj, 'getValue 测试数据');
|
|
2842
3013
|
if (
|
|
2843
|
-
!this.processNodeObj.type ||
|
|
3014
|
+
(!this.processNodeObj.type ||
|
|
2844
3015
|
this.processNodeObj.type == this.Enum.ProcessNodeType.用户任务 ||
|
|
2845
|
-
this.processNodeObj.type == ProcessNodeType.用户节点
|
|
3016
|
+
this.processNodeObj.type == ProcessNodeType.用户节点)
|
|
3017
|
+
|
|
2846
3018
|
) {
|
|
3019
|
+
|
|
3020
|
+
/**
|
|
3021
|
+
* &&
|
|
3022
|
+
(
|
|
3023
|
+
this.processNodeObj.nodeType != 'exclusiveGateway'
|
|
3024
|
+
||
|
|
3025
|
+
this.processNodeObj.nodeType == 'exclusiveGateway' && this.processNodeObj.branches.length == 0
|
|
3026
|
+
)
|
|
3027
|
+
*/
|
|
3028
|
+
// exclusiveGateway 节点
|
|
3029
|
+
console.error(this.processNodeObj.nodeType, 'nodeType');
|
|
3030
|
+
|
|
3031
|
+
if (this.processNodeObj.nodeType == 'exclusiveGateway') {
|
|
3032
|
+
// 进来这里
|
|
3033
|
+
console.error('-----------------开始-------------------');
|
|
3034
|
+
|
|
3035
|
+
|
|
3036
|
+
|
|
3037
|
+
for (let key in this.userTaskListData) {
|
|
3038
|
+
let o = this.userTaskListData[key];
|
|
3039
|
+
console.error(o, 'o', key, this.userTaskListData);
|
|
3040
|
+
let refCom = this.$refs[o];
|
|
3041
|
+
|
|
3042
|
+
refCom = Array.isArray(refCom) ? refCom[0] : refCom;
|
|
3043
|
+
console.log( refCom, 'refCom');
|
|
3044
|
+
if (refCom) {
|
|
3045
|
+
let res = refCom.getValue();
|
|
3046
|
+
console.error('res in userTask', res);
|
|
3047
|
+
if (!res) {
|
|
3048
|
+
flag = false;
|
|
3049
|
+
} else {
|
|
3050
|
+
|
|
3051
|
+
console.error('进来了这里进来了这里进来了这里进来了这里进来了这里进来了这里进来了这里进来了这里进来了这里进来了这里进来了这里进来了这里进来了这里进来了这里进来了这里进来了这里进来了这里');
|
|
3052
|
+
|
|
3053
|
+
if (this.radioModel && this.radioModel.nodeInfoDTO && this.radioModel.nodeInfoDTO.id) {
|
|
3054
|
+
if (
|
|
3055
|
+
this.radioModel.nodeInfoDTO.incomingConditionItemList &&
|
|
3056
|
+
this.radioModel.nodeInfoDTO.incomingConditionItemList.length > 0
|
|
3057
|
+
)
|
|
3058
|
+
val.vars[
|
|
3059
|
+
this.radioModel.nodeInfoDTO.incomingConditionItemList[0].itemName
|
|
3060
|
+
] =
|
|
3061
|
+
this.radioModel.nodeInfoDTO.incomingConditionItemList[0].compareValue;
|
|
3062
|
+
}
|
|
3063
|
+
|
|
3064
|
+
|
|
3065
|
+
console.log(res);
|
|
3066
|
+
val.multiNodeParticipant = {
|
|
3067
|
+
...val.multiNodeParticipant,
|
|
3068
|
+
...res.multiNodeParticipant,
|
|
3069
|
+
};
|
|
3070
|
+
val.vars = { ...val.vars, ...res.vars };
|
|
3071
|
+
}
|
|
3072
|
+
}
|
|
3073
|
+
}
|
|
3074
|
+
|
|
3075
|
+
}
|
|
3076
|
+
else if (this.processNodeObj.nodeType == 'inclusiveGateway') {
|
|
3077
|
+
// 进来这里
|
|
3078
|
+
console.error('-----------------开始-------------------');
|
|
3079
|
+
console.log(this);
|
|
3080
|
+
if (this.resultList && this.resultList.length > 0) {
|
|
3081
|
+
|
|
3082
|
+
this.resultList.forEach(rlItem => {
|
|
3083
|
+
const o = this.userTaskListData[rlItem.nodeInfoDTO.id];
|
|
3084
|
+
console.error(o, 'o', this.resultList);
|
|
3085
|
+
let refCom = this.$refs[o];
|
|
3086
|
+
|
|
3087
|
+
refCom = Array.isArray(refCom) ? refCom[0] : refCom;
|
|
3088
|
+
console.error(refCom.getValue(), '获取值');
|
|
3089
|
+
if (refCom) {
|
|
3090
|
+
let res = refCom.getValue();
|
|
3091
|
+
console.error('res in userTask', res);
|
|
3092
|
+
if (!res) {
|
|
3093
|
+
flag = false;
|
|
3094
|
+
} else {
|
|
3095
|
+
if (rlItem.nodeInfoDTO.incomingConditionItemList.length !== 0) {
|
|
3096
|
+
rlItem.nodeInfoDTO.incomingConditionItemList.forEach((item) => {
|
|
3097
|
+
if (item.itemName) {
|
|
3098
|
+
val.vars[item.itemName] = item.compareValue;
|
|
3099
|
+
}
|
|
3100
|
+
});
|
|
3101
|
+
}
|
|
3102
|
+
console.log(res);
|
|
3103
|
+
val.multiNodeParticipant = {
|
|
3104
|
+
...val.multiNodeParticipant,
|
|
3105
|
+
...res.multiNodeParticipant,
|
|
3106
|
+
};
|
|
3107
|
+
val.vars = { ...val.vars, ...res.vars };
|
|
3108
|
+
}
|
|
3109
|
+
}
|
|
3110
|
+
});
|
|
3111
|
+
|
|
3112
|
+
} else {
|
|
3113
|
+
this.processNodeObj.nodeInfoDTO.name && Message.warning(`请选择 ${this.processNodeObj.nodeInfoDTO.name} `);
|
|
3114
|
+
return false;
|
|
3115
|
+
}
|
|
3116
|
+
|
|
3117
|
+
|
|
3118
|
+
}
|
|
2847
3119
|
// 新流程需要进入这里
|
|
2848
|
-
if (!this.processNodeObj.assignee || !Array.isArray(this.processNodeObj.assignee) || !this.processNodeObj.setPersonnel || this.isOption(this.processNodeObj.humanPerformerName)
|
|
3120
|
+
else if (!this.processNodeObj.assignee || !Array.isArray(this.processNodeObj.assignee) || !this.processNodeObj.setPersonnel || this.isOption(this.processNodeObj.humanPerformerName)
|
|
3121
|
+
||
|
|
3122
|
+
(this.processNodeObj.nodeInfoDTO && (!this.processNodeObj.nodeInfoDTO.assignee || !Array.isArray(this.processNodeObj.nodeInfoDTO.assignee) || !this.processNodeObj.nodeInfoDTO.setPersonnel || this.isOption(this.processNodeObj.nodeInfoDTO.humanPerformerName)))
|
|
3123
|
+
) {
|
|
2849
3124
|
if (this.targetUserId && this.targetUserId.length > 0) {
|
|
2850
3125
|
val.multiNodeParticipant = {};
|
|
2851
|
-
val.multiNodeParticipant[this.processNodeObj.id] =
|
|
3126
|
+
val.multiNodeParticipant[this.processNode.nodeInfoDTO ? this.processNodeObj.nodeInfoDTO.id : this.processNodeObj.id] =
|
|
2852
3127
|
Array.isArray(this.targetUserId) ? this.targetUserId : [this.targetUserId];
|
|
2853
3128
|
// val.push(obj);
|
|
2854
|
-
} else if (this.processNodeObj.REQUIRED !== false) {
|
|
2855
|
-
|
|
3129
|
+
} else if (this.processNodeObj.REQUIRED !== false || (this.processNodeObj.nodeInfoDTO && this.processNodeObj.nodeInfoDTO.REQUIRED !== false)) {
|
|
3130
|
+
if (this.processNodeObj.nodeInfoDTO) {
|
|
3131
|
+
this.processNodeObj.nodeInfoDTO.name && Message.warning(`请选择 ${this.processNodeObj.nodeInfoDTO.name} 处理人`);
|
|
3132
|
+
} else {
|
|
3133
|
+
this.processNodeObj.name && Message.warning(`请选择 ${this.processNodeObj.name} 处理人`);
|
|
3134
|
+
}
|
|
2856
3135
|
// ElMessage.warning(`请选择审批人`);
|
|
2857
3136
|
return false;
|
|
2858
3137
|
}
|
|
@@ -2868,17 +3147,20 @@ var script$g = {
|
|
|
2868
3147
|
}
|
|
2869
3148
|
} else {
|
|
2870
3149
|
for (let key in this.userTaskListData) {
|
|
3150
|
+
console.error(key, 'key', this.userTaskListData[key]);
|
|
2871
3151
|
let o = this.userTaskListData[key];
|
|
2872
3152
|
let refCom = this.$refs[o];
|
|
2873
|
-
|
|
2874
|
-
|
|
3153
|
+
console.error(this.processNodeObj, 'refcom', refCom);
|
|
3154
|
+
|
|
3155
|
+
refCom = Array.isArray(refCom) ? refCom[0] : refCom;
|
|
2875
3156
|
if (refCom) {
|
|
2876
3157
|
let res = refCom.getValue();
|
|
3158
|
+
console.error('res in userTask', res);
|
|
2877
3159
|
if (!res) {
|
|
2878
3160
|
flag = false;
|
|
2879
3161
|
} else {
|
|
2880
3162
|
if (
|
|
2881
|
-
this.processNodeObj.
|
|
3163
|
+
this.processNodeObj.nodeType == 'exclusiveGateway'
|
|
2882
3164
|
) {
|
|
2883
3165
|
if (this.radioModel && this.radioModel.id) {
|
|
2884
3166
|
if (
|
|
@@ -2890,13 +3172,13 @@ var script$g = {
|
|
|
2890
3172
|
] =
|
|
2891
3173
|
this.radioModel.incomingConditionItemList[0].compareValue;
|
|
2892
3174
|
} else {
|
|
2893
|
-
Message.warning(
|
|
3175
|
+
this.processNodeObj.name && Message.warning(
|
|
2894
3176
|
`请选择 ${this.processNodeObj.name} 下一节点`
|
|
2895
3177
|
);
|
|
2896
3178
|
return false;
|
|
2897
3179
|
}
|
|
2898
3180
|
} else if (
|
|
2899
|
-
this.processNodeObj.
|
|
3181
|
+
this.processNodeObj.nodeType == 'inclusiveGateway'
|
|
2900
3182
|
) {
|
|
2901
3183
|
if (this.resultList && this.resultList.length > 0) {
|
|
2902
3184
|
this.resultList.forEach((r) => {
|
|
@@ -2909,7 +3191,7 @@ var script$g = {
|
|
|
2909
3191
|
}
|
|
2910
3192
|
});
|
|
2911
3193
|
} else {
|
|
2912
|
-
Message.warning(`请选择 ${this.processNodeObj.name} `);
|
|
3194
|
+
this.processNodeObj.name && Message.warning(`请选择 ${this.processNodeObj.name} `);
|
|
2913
3195
|
return false;
|
|
2914
3196
|
}
|
|
2915
3197
|
}
|
|
@@ -2947,33 +3229,276 @@ var __vue_render__$g = function () {
|
|
|
2947
3229
|
"div",
|
|
2948
3230
|
{ staticClass: "user-task" },
|
|
2949
3231
|
[
|
|
2950
|
-
|
|
2951
|
-
|
|
2952
|
-
_vm.
|
|
3232
|
+
_vm.processNodeObj.nodeType == "exclusiveGateway" &&
|
|
3233
|
+
_vm.processNodeObj.branches &&
|
|
3234
|
+
_vm.processNodeObj.branches.length >= 1
|
|
3235
|
+
? [
|
|
3236
|
+
_vm.processNodeObj.branches.length > 1
|
|
3237
|
+
? _c(
|
|
3238
|
+
"el-form-item",
|
|
3239
|
+
{ attrs: { label: _vm.processNodeObj.name || "下一节点" } },
|
|
3240
|
+
[
|
|
3241
|
+
_c(
|
|
3242
|
+
"el-radio-group",
|
|
3243
|
+
{
|
|
3244
|
+
staticClass: "ml-4",
|
|
3245
|
+
model: {
|
|
3246
|
+
value: _vm.radioModel,
|
|
3247
|
+
callback: function ($$v) {
|
|
3248
|
+
_vm.radioModel = $$v;
|
|
3249
|
+
},
|
|
3250
|
+
expression: "radioModel",
|
|
3251
|
+
},
|
|
3252
|
+
},
|
|
3253
|
+
_vm._l(_vm.processNodeObj.branches, function (item) {
|
|
3254
|
+
return _c(
|
|
3255
|
+
"el-radio",
|
|
3256
|
+
{
|
|
3257
|
+
key: item.id,
|
|
3258
|
+
attrs: { label: item, size: "large" },
|
|
3259
|
+
},
|
|
3260
|
+
[_vm._v(_vm._s(item.name))]
|
|
3261
|
+
)
|
|
3262
|
+
}),
|
|
3263
|
+
1
|
|
3264
|
+
),
|
|
3265
|
+
],
|
|
3266
|
+
1
|
|
3267
|
+
)
|
|
3268
|
+
: _vm._e(),
|
|
3269
|
+
_vm._v(" "),
|
|
3270
|
+
_vm.radioModel.id
|
|
3271
|
+
? [
|
|
3272
|
+
_vm.radioModel.nodeInfoDTO &&
|
|
3273
|
+
_vm.radioModel.nodeInfoDTO.nodeType == "userTask"
|
|
3274
|
+
? [
|
|
3275
|
+
_c("userTask", {
|
|
3276
|
+
key: _vm.radioModel.nodeInfoDTO.id,
|
|
3277
|
+
ref: _vm.setItemRef(_vm.radioModel.nodeInfoDTO.id),
|
|
3278
|
+
attrs: {
|
|
3279
|
+
personType: _vm.personType,
|
|
3280
|
+
personEntity: _vm.personEntity,
|
|
3281
|
+
"process-node": Object.assign(
|
|
3282
|
+
{},
|
|
3283
|
+
_vm.radioModel.nodeInfoDTO,
|
|
3284
|
+
{
|
|
3285
|
+
REQUIRED:
|
|
3286
|
+
_vm.radioModel.nodeInfoDTO.setPersonnel ==
|
|
3287
|
+
true &&
|
|
3288
|
+
_vm.radioModel.nodeInfoDTO.assignees &&
|
|
3289
|
+
_vm.radioModel.nodeInfoDTO.assignees.length >
|
|
3290
|
+
0
|
|
3291
|
+
? false
|
|
3292
|
+
: true,
|
|
3293
|
+
}
|
|
3294
|
+
),
|
|
3295
|
+
rules: [
|
|
3296
|
+
{ required: true, message: "请选择处理人" },
|
|
3297
|
+
],
|
|
3298
|
+
},
|
|
3299
|
+
}),
|
|
3300
|
+
]
|
|
3301
|
+
: _vm.radioModel.nodeInfoDTO &&
|
|
3302
|
+
_vm.radioModel.nodeInfoDTO.nodeType == "inclusiveGateway"
|
|
3303
|
+
? [
|
|
3304
|
+
_c("userTask", {
|
|
3305
|
+
key: _vm.radioModel.nodeInfoDTO.id,
|
|
3306
|
+
ref: _vm.setItemRef(_vm.radioModel.nodeInfoDTO.id),
|
|
3307
|
+
attrs: {
|
|
3308
|
+
personType: _vm.personType,
|
|
3309
|
+
personEntity: _vm.personEntity,
|
|
3310
|
+
"process-node": Object.assign(
|
|
3311
|
+
{},
|
|
3312
|
+
_vm.radioModel.nodeInfoDTO,
|
|
3313
|
+
{
|
|
3314
|
+
REQUIRED:
|
|
3315
|
+
_vm.radioModel.nodeInfoDTO.setPersonnel ==
|
|
3316
|
+
true &&
|
|
3317
|
+
_vm.radioModel.nodeInfoDTO.assignees &&
|
|
3318
|
+
_vm.radioModel.nodeInfoDTO.assignees.length >
|
|
3319
|
+
0
|
|
3320
|
+
? false
|
|
3321
|
+
: true,
|
|
3322
|
+
}
|
|
3323
|
+
),
|
|
3324
|
+
rules: [
|
|
3325
|
+
{ required: true, message: "请选择处理人" },
|
|
3326
|
+
],
|
|
3327
|
+
},
|
|
3328
|
+
}),
|
|
3329
|
+
]
|
|
3330
|
+
: _vm.radioModel.nodeInfoDTO &&
|
|
3331
|
+
_vm.radioModel.nodeInfoDTO.nodeType == "exclusiveGateway"
|
|
3332
|
+
? _vm._l(
|
|
3333
|
+
_vm.radioModel.nodeInfoDTO.branches,
|
|
3334
|
+
function (item) {
|
|
3335
|
+
return _c("userTask", {
|
|
3336
|
+
key: item.nodeInfoDTO.id,
|
|
3337
|
+
ref: _vm.setItemRef(item.nodeInfoDTO.id),
|
|
3338
|
+
refInFor: true,
|
|
3339
|
+
attrs: {
|
|
3340
|
+
personType: _vm.personType,
|
|
3341
|
+
personEntity: _vm.personEntity,
|
|
3342
|
+
processNode: Object.assign({}, item.nodeInfoDTO, {
|
|
3343
|
+
REQUIRED:
|
|
3344
|
+
item.nodeInfoDTO.setPersonnel == true &&
|
|
3345
|
+
item.nodeInfoDTO.assignees &&
|
|
3346
|
+
item.nodeInfoDTO.assignees.length > 0
|
|
3347
|
+
? false
|
|
3348
|
+
: true,
|
|
3349
|
+
}),
|
|
3350
|
+
lv1label: "下一节点名称",
|
|
3351
|
+
rules: [
|
|
3352
|
+
{ required: true, message: "请选择处理人" },
|
|
3353
|
+
],
|
|
3354
|
+
},
|
|
3355
|
+
})
|
|
3356
|
+
}
|
|
3357
|
+
)
|
|
3358
|
+
: _vm._e(),
|
|
3359
|
+
]
|
|
3360
|
+
: _vm.processNodeObj &&
|
|
3361
|
+
_vm.processNodeObj.branches &&
|
|
3362
|
+
_vm.processNodeObj.branches.length == 1
|
|
3363
|
+
? _vm._l(_vm.processNodeObj.branches, function (pitem) {
|
|
3364
|
+
return _c("userTask", {
|
|
3365
|
+
key: pitem.nodeInfoDTO ? pitem.nodeInfoDTO.id : pitem.id,
|
|
3366
|
+
ref: _vm.setItemRef(
|
|
3367
|
+
pitem.nodeInfoDTO ? pitem.nodeInfoDTO.id : pitem.id
|
|
3368
|
+
),
|
|
3369
|
+
refInFor: true,
|
|
3370
|
+
attrs: {
|
|
3371
|
+
personType: _vm.personType,
|
|
3372
|
+
personEntity: _vm.personEntity,
|
|
3373
|
+
"process-node": Object.assign(
|
|
3374
|
+
{},
|
|
3375
|
+
pitem.nodeInfoDTO ? pitem.nodeInfoDTO : pitem,
|
|
3376
|
+
{
|
|
3377
|
+
REQUIRED:
|
|
3378
|
+
pitem.nodeInfoDTO.setPersonnel == true &&
|
|
3379
|
+
pitem.nodeInfoDTO.assignees &&
|
|
3380
|
+
pitem.nodeInfoDTO.assignees.length > 0
|
|
3381
|
+
? false
|
|
3382
|
+
: true,
|
|
3383
|
+
}
|
|
3384
|
+
),
|
|
3385
|
+
rules: [{ required: true, message: "请选择处理人" }],
|
|
3386
|
+
},
|
|
3387
|
+
})
|
|
3388
|
+
})
|
|
3389
|
+
: _vm._e(),
|
|
3390
|
+
]
|
|
3391
|
+
: _vm.processNodeObj.nodeType == "inclusiveGateway" &&
|
|
3392
|
+
_vm.processNodeObj.branches &&
|
|
3393
|
+
_vm.processNodeObj.branches.length > 0
|
|
2953
3394
|
? [
|
|
2954
3395
|
_c(
|
|
2955
3396
|
"el-form-item",
|
|
2956
|
-
{
|
|
2957
|
-
|
|
2958
|
-
|
|
2959
|
-
|
|
2960
|
-
|
|
2961
|
-
{
|
|
2962
|
-
|
|
2963
|
-
|
|
2964
|
-
|
|
2965
|
-
return [
|
|
2966
|
-
_c("div", { staticStyle: { "font-size": "16px" } }, [
|
|
2967
|
-
_vm._v(_vm._s(_vm.lv1label || "节点名称")),
|
|
2968
|
-
]),
|
|
2969
|
-
]
|
|
3397
|
+
{ attrs: { label: _vm.processNodeObj.name || "下一节点" } },
|
|
3398
|
+
[
|
|
3399
|
+
_c(
|
|
3400
|
+
"el-checkbox-group",
|
|
3401
|
+
{
|
|
3402
|
+
model: {
|
|
3403
|
+
value: _vm.checkList,
|
|
3404
|
+
callback: function ($$v) {
|
|
3405
|
+
_vm.checkList = $$v;
|
|
2970
3406
|
},
|
|
3407
|
+
expression: "checkList",
|
|
2971
3408
|
},
|
|
3409
|
+
},
|
|
3410
|
+
[
|
|
3411
|
+
_vm._l(_vm.processNodeObj.branches, function (item) {
|
|
3412
|
+
return [
|
|
3413
|
+
_vm.isSelect(item.nodeInfoDTO ? item.nodeInfoDTO : item)
|
|
3414
|
+
? _c("el-checkbox", {
|
|
3415
|
+
key:
|
|
3416
|
+
"checkbox" +
|
|
3417
|
+
(item.nodeInfoDTO
|
|
3418
|
+
? item.nodeInfoDTO.id
|
|
3419
|
+
: item.id),
|
|
3420
|
+
attrs: {
|
|
3421
|
+
label: item.nodeInfoDTO
|
|
3422
|
+
? item.nodeInfoDTO.name
|
|
3423
|
+
: item.name,
|
|
3424
|
+
checked: true,
|
|
3425
|
+
disabled: "",
|
|
3426
|
+
},
|
|
3427
|
+
})
|
|
3428
|
+
: _c("el-checkbox", {
|
|
3429
|
+
key:
|
|
3430
|
+
"checkbox1" +
|
|
3431
|
+
(item.nodeInfoDTO
|
|
3432
|
+
? item.nodeInfoDTO.id
|
|
3433
|
+
: item.id),
|
|
3434
|
+
attrs: {
|
|
3435
|
+
label: item.nodeInfoDTO
|
|
3436
|
+
? item.nodeInfoDTO.name
|
|
3437
|
+
: item.name,
|
|
3438
|
+
},
|
|
3439
|
+
}),
|
|
3440
|
+
]
|
|
3441
|
+
}),
|
|
2972
3442
|
],
|
|
2973
|
-
|
|
2974
|
-
|
|
2975
|
-
|
|
3443
|
+
2
|
|
3444
|
+
),
|
|
3445
|
+
],
|
|
3446
|
+
1
|
|
3447
|
+
),
|
|
3448
|
+
_vm._v(" "),
|
|
3449
|
+
_vm._l(_vm.checkModelList, function (item) {
|
|
3450
|
+
return _c("userTask", {
|
|
3451
|
+
key: item.nodeInfoDTO ? item.nodeInfoDTO.id : item.id,
|
|
3452
|
+
ref: _vm.setItemRef(
|
|
3453
|
+
item.nodeInfoDTO ? item.nodeInfoDTO.id : item.id
|
|
2976
3454
|
),
|
|
3455
|
+
refInFor: true,
|
|
3456
|
+
attrs: {
|
|
3457
|
+
personType: _vm.personType,
|
|
3458
|
+
personEntity: _vm.personEntity,
|
|
3459
|
+
processNode: Object.assign(
|
|
3460
|
+
{},
|
|
3461
|
+
item.nodeInfoDTO ? item.nodeInfoDTO : item,
|
|
3462
|
+
{
|
|
3463
|
+
REQUIRED: item.nodeInfoDTO
|
|
3464
|
+
? item.nodeInfoDTO.setPersonnel == true &&
|
|
3465
|
+
item.nodeInfoDTO.assignees &&
|
|
3466
|
+
item.nodeInfoDTO.assignees.length > 0
|
|
3467
|
+
? false
|
|
3468
|
+
: true
|
|
3469
|
+
: item.setPersonnel == true &&
|
|
3470
|
+
item.assignees &&
|
|
3471
|
+
item.assignees.length > 0
|
|
3472
|
+
? false
|
|
3473
|
+
: true,
|
|
3474
|
+
}
|
|
3475
|
+
),
|
|
3476
|
+
},
|
|
3477
|
+
})
|
|
3478
|
+
}),
|
|
3479
|
+
]
|
|
3480
|
+
: !_vm.processNodeObj.assignee ||
|
|
3481
|
+
!_vm.processNodeObj.assignees ||
|
|
3482
|
+
_vm.isOption(_vm.processNodeObj.humanPerformerName)
|
|
3483
|
+
? [
|
|
3484
|
+
_c(
|
|
3485
|
+
"el-form-item",
|
|
3486
|
+
{
|
|
3487
|
+
staticStyle: { "margin-bottom": "10px" },
|
|
3488
|
+
attrs: { label: _vm.lv1label || "节点名称" },
|
|
3489
|
+
scopedSlots: _vm._u([
|
|
3490
|
+
{
|
|
3491
|
+
key: "label",
|
|
3492
|
+
fn: function (ref) {
|
|
3493
|
+
ref.label;
|
|
3494
|
+
return [
|
|
3495
|
+
_c("div", { staticStyle: { "font-size": "16px" } }, [
|
|
3496
|
+
_vm._v(_vm._s(_vm.lv1label || "节点名称")),
|
|
3497
|
+
]),
|
|
3498
|
+
]
|
|
3499
|
+
},
|
|
3500
|
+
},
|
|
3501
|
+
]),
|
|
2977
3502
|
},
|
|
2978
3503
|
[
|
|
2979
3504
|
_vm._v(" "),
|
|
@@ -3153,7 +3678,7 @@ __vue_render__$g._withStripped = true;
|
|
|
3153
3678
|
/* style */
|
|
3154
3679
|
const __vue_inject_styles__$g = function (inject) {
|
|
3155
3680
|
if (!inject) return
|
|
3156
|
-
inject("data-v-e5d234be_0", { source: ".user-task :deep(.el-form-item__label) {\n white-space: nowrap;\n text-align: right;\n font-size: 14px;\n overflow: hidden;\n display: block !important;\n text-overflow: ellipsis;\n}\n.user-task .include {\n padding: 6px;\n}\n.user-task .include-type {\n border-radius: 6px;\n}\n.user-task .include-user {\n background: red;\n color: aliceblue;\n}\n.user-task .include-dept {\n background: blue;\n color: aliceblue;\n}\n.user-task .include-post {\n background: green;\n color: aliceblue;\n}\n.user-task .include-assign {\n background: bisque;\n color: red;\n border-radius: 12px;\n display: flex;\n align-items: center;\n width: fit-content;\n height: 18px;\n}\n.user-task .task-index {\n background: #1389ff;\n color: white;\n border-radius: 12px;\n width: -moz-fit-content;\n width: 25px;\n height: 100%;\n display: inline-flex;\n justify-content: center;\n margin-right: 6px;\n}\n\n/*# sourceMappingURL=userTask.vue.map */", map: {"version":3,"sources":["C:\\cod\\items\\ui-process-pc\\vue2\\src\\components\\zjp_process\\operation\\userTask.vue","userTask.vue"],"names":[],"mappings":"AA2YA;EACA,mBAAA;EACA,iBAAA;EACA,eAAA;EACA,gBAAA;EACA,yBAAA;EACA,uBAAA;AC1YA;AD4YA;EACA,YAAA;AC1YA;AD2YA;EACA,kBAAA;ACzYA;AD2YA;EACA,eAAA;EACA,gBAAA;ACzYA;AD2YA;EACA,gBAAA;EACA,gBAAA;ACzYA;AD2YA;EACA,iBAAA;EACA,gBAAA;ACzYA;AD2YA;EACA,kBAAA;EACA,UAAA;EACA,mBAAA;EACA,aAAA;EACA,mBAAA;EACA,kBAAA;EACA,YAAA;ACzYA;AD4YA;EACA,mBAAA;EACA,YAAA;EACA,mBAAA;EACA,uBAAA;EACA,WAAA;EACA,YAAA;EACA,oBAAA;EACA,uBAAA;EACA,iBAAA;AC1YA;;AAEA,uCAAuC","file":"userTask.vue","sourcesContent":["<template>\r\n <div class=\"user-task\">\r\n <template v-if=\"!processNodeObj.assignee || !processNodeObj.assignees || isOption(processNodeObj.humanPerformerName)\">\r\n <el-form-item\r\n :label=\"lv1label || '节点名称'\"\r\n style=\"margin-bottom: 10px\"\r\n >\r\n <template v-slot:label=\"{ label }\">\r\n <!-- <b class=\"task-index\">{{ (index + 1 ) }}</b> -->\r\n <div style=\"font-size: 16px\">{{ (lv1label || '节点名称') }}</div>\r\n </template>\r\n <b style=\"font-size: 16px\">{{ processNodeObj.name }}</b>\r\n </el-form-item>\r\n <el-form-item\r\n v-if=\"processNodeObj.routeTxt && processNodeObj.routeTxt.length > 0 && processNodeObj.userList && processNodeObj.userList.length >0\"\r\n :label=\"peopleLabel || '所属范围'\"\r\n style=\"margin-bottom: 10px\"\r\n >\r\n <div v-for=\"(item, index) in processNodeObj.routeTxt\" :key=\"item.type\">\r\n <div v-if=\"item.ids && item.ids.length > 0\">\r\n <b class=\"include include-type\" :class=\"['include-' + item.type]\">{{ item.type == 'user' ? '用户' : item.type == 'dept' ? '部门' : '岗位' }}</b>\r\n <span class=\"include include-name\">{{ item.name }}</span>\r\n <div class=\"include include-assign\" :class=\"['include-assign-' + (item.assigneeRetain ? 'true' : 'false')]\" v-if=\"index !== processNodeObj.routeTxt.length - 1\">{{ processNodeObj.assigneeRetain == 'true' ? '且同时满足' : '或者满足' }}</div>\r\n </div>\r\n </div>\r\n </el-form-item>\r\n <!-- 如果有固定的人 -->\r\n <el-form-item :label=\"label || '处理人'\" :rules=\"rules || {}\">\r\n <!-- 使用el-select -->\r\n <!-- 发起流程的时候 -->\r\n <el-select v-if=\"processNodeObj.userList && processNodeObj.userList.length >= 2\" v-model=\"targetUserId\" :multiple=\"processNodeObj.loopCardinality == -1 ? false : true\" @change=\"fixPeopleChange\">\r\n <el-option\r\n v-for=\"(item, index) in processNodeObj.userList\"\r\n :key=\"item.userId\"\r\n :label=\"item.realName\"\r\n :value=\"item.userId\"\r\n ></el-option>\r\n </el-select>\r\n <div class=\"setVal\" v-else-if=\"processNodeObj.userList && processNodeObj.userList.length == 1\">\r\n {{ processNodeObj.userList[0].realName }}\r\n </div>\r\n <!-- 审批流程的时候 -->\r\n <div class=\"setVal\" v-else-if=\"processNodeObj.setPersonnel && processNodeObj.assignees\">\r\n {{ (processNodeObj.assignees || []).map(i => i.name || i.realName).join(', ') }}\r\n </div>\r\n <staffTree\r\n v-else\r\n :processNodeObj=\"processNodeObj\"\r\n v-model=\"targetUserId\"\r\n :personType=\"personType\"\r\n :personEntity=\"personEntity\"\r\n @update:modelValue=\"\r\n (e) => {\r\n complete(e, processNodeObj);\r\n }\r\n \"\r\n @select=\"selectChange\"\r\n multiple\r\n :max=\"processNodeObj.loopCardinality == -1 ? 1 : 100\"\r\n :items=\"getTreeData(processNodeObj)\"\r\n >\r\n </staffTree>\r\n </el-form-item>\r\n </template>\r\n <!-- <template v-else>\r\n <el-form-item :label=\"lv1label || '节点名称'\">\r\n <b style=\"font-size: 16px\">{{ processNodeObj.name }}</b>\r\n </el-form-item>\r\n <el-form-item :label=\"label || '处理人'\">\r\n {{ '--' || processNodeObj.routeTxt.userNames }}\r\n </el-form-item>\r\n </template> -->\r\n <!-- <template v-else-if=\"processNodeObj.type == Enum.ProcessNodeType.单一分支\">\r\n <el-form-item\r\n :label=\"processNodeObj.name || '下一节点'\"\r\n v-if=\"processNodeObj.childNode.length > 1\"\r\n >\r\n <el-radio-group v-model=\"radioModel\" class=\"ml-4\">\r\n <el-radio\r\n v-for=\"item in processNodeObj.childNode\"\r\n :key=\"item.id\"\r\n :label=\"item\"\r\n size=\"large\"\r\n >{{ getLabel(item) }}</el-radio\r\n >\r\n </el-radio-group>\r\n </el-form-item>\r\n <template v-if=\"radioModel.id\">\r\n <userTask\r\n :ref=\"setItemRef(radioModel.id)\"\r\n :personType=\"personType\"\r\n :personEntity=\"personEntity\"\r\n :process-node=\"{ ...radioModel, taskNode: processNode.taskNode }\"\r\n :key=\"radioModel.id\"\r\n :rules=\"[{ required: true, message: '请选择处理人' }]\"\r\n >\r\n </userTask>\r\n </template>\r\n </template>\r\n <template\r\n v-else-if=\"\r\n processNodeObj.type == Enum.ProcessNodeType.多选节点 &&\r\n processNodeObj.childNode.length > 0\r\n \"\r\n >\r\n <el-form-item :label=\"processNodeObj.name || '下一节点'\">\r\n <el-checkbox-group v-model=\"checkList\">\r\n <template v-for=\"item in processNodeObj.childNode\">\r\n <el-checkbox\r\n :label=\"getLabel(item)\"\r\n v-if=\"isSelect(item)\"\r\n :checked=\"true\"\r\n disabled\r\n :key=\"'checkbox' + item.id\"\r\n />\r\n <el-checkbox\r\n :label=\"getLabel(item)\"\r\n v-else\r\n :key=\"'checkbox1' + item.id\"\r\n />\r\n </template>\r\n </el-checkbox-group>\r\n </el-form-item>\r\n <userTask\r\n :ref=\"setItemRef(item.id)\"\r\n :personType=\"personType\"\r\n :personEntity=\"personEntity\"\r\n :key=\"item.id\"\r\n v-for=\"item in checkModelList\"\r\n :processNode=\"{ ...item, taskNode: processNode.taskNode }\"\r\n >\r\n </userTask>\r\n </template> -->\r\n <!-- <template v-else-if=\"processNodeObj.type == Enum.ProcessNodeType.结束事件\">\r\n <el-form-item :label=\"lv1label || '节点名称'\">\r\n <b style=\"font-size: 16px\">{{ processNodeObj.name }}</b>\r\n </el-form-item>\r\n </template> -->\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport * as Enum from \"../enum\";\r\nimport staffTree from \"../staff-tree.vue\";\r\n// import userTask from \"./userTask.vue\"\r\nimport { Message as ElMessage } from \"element-ui\";\r\nimport api from \"../api\";\r\n\r\nexport default {\r\n name: \"userTask\",\r\n components: { staffTree },\r\n props: {\r\n index: {\r\n type: Number,\r\n default: 0\r\n },\r\n processNode: { require: true },\r\n label: \"\",\r\n peopleLabel: \"\",\r\n lv1label: \"\",\r\n personType: \"\",\r\n personEntity: {\r\n type: Object,\r\n default: () => {},\r\n },\r\n rules: {\r\n require: false,\r\n type: Array,\r\n },\r\n },\r\n data() {\r\n return {\r\n deptList: [],\r\n Enum,\r\n resultList: [],\r\n radioModel: {},\r\n checkList: [],\r\n targetUserId: \"\",\r\n targetUserList: [],\r\n processNodeObj: this.processNode,\r\n userTaskListData: {},\r\n personnelList: [],\r\n };\r\n },\r\n computed: {\r\n checkModelList() {\r\n let arr = this.processNodeObj.childNode.filter((o) =>\r\n this.checkList.includes(o.incomingConditionItemList[0].compareValue)\r\n );\r\n\r\n this.resultList = arr || [];\r\n return this.resultList;\r\n },\r\n },\r\n watch: {\r\n processNode: {\r\n handler(newVal, oldVal) {\r\n // 如果是长度为1,固定\r\n if (newVal.userList && newVal.userList.length == 1) {\r\n this.targetUserId = newVal.userList[0].userId\r\n }\r\n this.processNodeObj = newVal || {};\r\n },\r\n deep: true,\r\n }\r\n },\r\n mounted() {\r\n if (\r\n this.processNodeObj.childNode &&\r\n this.processNodeObj.childNode.length == 1 &&\r\n this.processNodeObj.type == Enum.ProcessNodeType.单一分支\r\n ) {\r\n this.radioModel = this.processNodeObj.childNode[0];\r\n }\r\n },\r\n methods: {\r\n isSelect(item) {\r\n if (item.incomingConditionItemList[0]) {\r\n let flag =\r\n item.incomingConditionItemList[0].itemName.includes(\"selecd\");\r\n if (flag) {\r\n if (!this.checkList.includes(item.name))\r\n this.checkList.push(item.name);\r\n }\r\n return flag;\r\n }\r\n return false;\r\n },\r\n fixPeopleChange(e) {\r\n console.log(e, 'e')\r\n this.complete(e, this.processNodeObj)\r\n },\r\n // 获取选中的人的对象\r\n selectChange (list) {\r\n console.log(list, 'list')\r\n this.targetUserList = list;\r\n },\r\n complete(e, item) {\r\n console.log(e, item, 'e item', this.resultList, this.resultList.every((o) => o.vars))\r\n item.vars = e;\r\n if (this.resultList.every((o) => o.vars)) {\r\n this.processNodeObj.vars = this.resultList.map((o) => o.vars);\r\n console.log(this.processNodeObj.vars, 'this.processNodeObj.vars')\r\n this.$emit(\"complete\", this.processNodeObj);\r\n }\r\n },\r\n setItemRef(key) {\r\n this.userTaskListData[key] = \"userTask\" + key;\r\n return this.userTaskListData[key];\r\n },\r\n getTreeData(item) {\r\n if (item) {\r\n if (item.humanPerformerName == \"固定部门\") {\r\n return item.routeTxt.departmentIds.map((o) => {\r\n let obj = {};\r\n obj.id = o.rangeId;\r\n obj.leaf = false;\r\n obj.name = o.name;\r\n obj.orgType = this.Enum.UserType.部门;\r\n return obj;\r\n });\r\n } else if (item.humanPerformerName == \"固定单位\") {\r\n return item.routeTxt.companyIds.map((o) => {\r\n let obj = {};\r\n obj.id = o.rangeId;\r\n obj.leaf = false;\r\n obj.name = o.name;\r\n obj.orgType = this.Enum.UserType.主体;\r\n return obj;\r\n });\r\n } else if (item.humanPerformerName == \"固定群组\") {\r\n return item.routeTxt.teamList.map((o) => {\r\n let obj = {};\r\n obj.id = o.id;\r\n obj.leaf = false;\r\n obj.name = o.teamName;\r\n obj.orgType = this.Enum.UserType.群组;\r\n return obj;\r\n });\r\n }\r\n }\r\n return undefined;\r\n },\r\n isOption(humanPerformer) {\r\n return (\r\n humanPerformer == \"任意指定\" ||\r\n humanPerformer == \"固定部门\" ||\r\n humanPerformer == \"固定单位\" ||\r\n humanPerformer == \"固定角色/岗位\" ||\r\n humanPerformer == \"固定群组\"\r\n );\r\n },\r\n getValue() {\r\n let flag = true;\r\n let val = { multiNodeParticipant: {}, vars: {} };\r\n if (\r\n !this.processNodeObj.type || \r\n this.processNodeObj.type == this.Enum.ProcessNodeType.用户任务 ||\r\n this.processNodeObj.type == Enum.ProcessNodeType.用户节点\r\n ) {\r\n // 新流程需要进入这里\r\n if (!this.processNodeObj.assignee || !Array.isArray(this.processNodeObj.assignee) || !this.processNodeObj.setPersonnel || this.isOption(this.processNodeObj.humanPerformerName)) {\r\n if (this.targetUserId && this.targetUserId.length > 0) {\r\n let obj = {};\r\n val.multiNodeParticipant = {};\r\n val.multiNodeParticipant[this.processNodeObj.id] =\r\n Array.isArray(this.targetUserId) ? this.targetUserId : [this.targetUserId];\r\n // val.push(obj);\r\n } else if (this.processNodeObj.REQUIRED !== false) {\r\n ElMessage.warning(`请选择 ${this.processNodeObj.name} 处理人`);\r\n // ElMessage.warning(`请选择审批人`);\r\n return false;\r\n }\r\n } else {\r\n if (\r\n this.processNodeObj.incomingConditionItemList &&\r\n this.processNodeObj.incomingConditionItemList.length > 0\r\n ) {\r\n val.vars[\r\n this.processNodeObj.incomingConditionItemList[0].itemName\r\n ] = this.processNodeObj.incomingConditionItemList[0].compareValue;\r\n }\r\n }\r\n } else {\r\n for (let key in this.userTaskListData) {\r\n let o = this.userTaskListData[key];\r\n let refCom = this.$refs[o];\r\n if (this.processNodeObj.type == this.Enum.ProcessNodeType.多选节点)\r\n refCom = refCom[0];\r\n if (refCom) {\r\n let res = refCom.getValue();\r\n if (!res) {\r\n flag = false;\r\n } else {\r\n if (\r\n this.processNodeObj.type == this.Enum.ProcessNodeType.单一分支\r\n ) {\r\n if (this.radioModel && this.radioModel.id) {\r\n if (\r\n this.radioModel.incomingConditionItemList &&\r\n this.radioModel.incomingConditionItemList.length > 0\r\n )\r\n val.vars[\r\n this.radioModel.incomingConditionItemList[0].itemName\r\n ] =\r\n this.radioModel.incomingConditionItemList[0].compareValue;\r\n } else {\r\n ElMessage.warning(\r\n `请选择 ${this.processNodeObj.name} 下一节点`\r\n );\r\n return false;\r\n }\r\n } else if (\r\n this.processNodeObj.type == this.Enum.ProcessNodeType.多选节点\r\n ) {\r\n if (this.resultList && this.resultList.length > 0) {\r\n this.resultList.forEach((r) => {\r\n if (r.incomingConditionItemList.length !== 0) {\r\n r.incomingConditionItemList.forEach((item) => {\r\n if (item.itemName) {\r\n val.vars[item.itemName] = item.compareValue;\r\n }\r\n });\r\n }\r\n });\r\n } else {\r\n ElMessage.warning(`请选择 ${this.processNodeObj.name} `);\r\n return false;\r\n }\r\n }\r\n val.multiNodeParticipant = {\r\n ...val.multiNodeParticipant,\r\n ...res.multiNodeParticipant,\r\n };\r\n val.vars = { ...val.vars, ...res.vars };\r\n }\r\n }\r\n }\r\n }\r\n if (flag) return val;\r\n return flag;\r\n },\r\n getLabel(node) {\r\n let name = \"\";\r\n if (node.incomingConditionItemList.length > 0) {\r\n name = node.incomingConditionItemList[0].compareValue;\r\n }\r\n return name || node.name || \"后续节点\";\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n.user-task {\r\n :deep(.el-form-item__label) {\r\n white-space: nowrap;\r\n text-align: right;\r\n font-size: 14px;\r\n overflow: hidden;\r\n display: block !important;\r\n text-overflow: ellipsis;\r\n }\r\n .include {\r\n padding: 6px;\r\n &-type {\r\n border-radius: 6px;\r\n }\r\n &-user {\r\n background: red;\r\n color: aliceblue;\r\n }\r\n &-dept {\r\n background: blue;\r\n color: aliceblue;\r\n }\r\n &-post {\r\n background: green;\r\n color: aliceblue;\r\n }\r\n &-assign {\r\n background: bisque;\r\n color: red;\r\n border-radius: 12px;\r\n display: flex;\r\n align-items: center;\r\n width: fit-content;\r\n height: 18px;\r\n }\r\n }\r\n .task-index {\r\n background: #1389ff;\r\n color: white;\r\n border-radius: 12px;\r\n width: -moz-fit-content;\r\n width: 25px;\r\n height: 100%;\r\n display: inline-flex;\r\n justify-content: center;\r\n margin-right: 6px;\r\n }\r\n}\r\n</style>\r\n",".user-task :deep(.el-form-item__label) {\n white-space: nowrap;\n text-align: right;\n font-size: 14px;\n overflow: hidden;\n display: block !important;\n text-overflow: ellipsis;\n}\n.user-task .include {\n padding: 6px;\n}\n.user-task .include-type {\n border-radius: 6px;\n}\n.user-task .include-user {\n background: red;\n color: aliceblue;\n}\n.user-task .include-dept {\n background: blue;\n color: aliceblue;\n}\n.user-task .include-post {\n background: green;\n color: aliceblue;\n}\n.user-task .include-assign {\n background: bisque;\n color: red;\n border-radius: 12px;\n display: flex;\n align-items: center;\n width: fit-content;\n height: 18px;\n}\n.user-task .task-index {\n background: #1389ff;\n color: white;\n border-radius: 12px;\n width: -moz-fit-content;\n width: 25px;\n height: 100%;\n display: inline-flex;\n justify-content: center;\n margin-right: 6px;\n}\n\n/*# sourceMappingURL=userTask.vue.map */"]}, media: undefined });
|
|
3681
|
+
inject("data-v-fd3b6b8e_0", { source: ".user-task :deep(.el-form-item__label) {\n white-space: nowrap;\n text-align: right;\n font-size: 14px;\n overflow: hidden;\n display: block !important;\n text-overflow: ellipsis;\n}\n.user-task .include {\n padding: 6px;\n}\n.user-task .include-type {\n border-radius: 6px;\n}\n.user-task .include-user {\n background: red;\n color: aliceblue;\n}\n.user-task .include-dept {\n background: blue;\n color: aliceblue;\n}\n.user-task .include-post {\n background: green;\n color: aliceblue;\n}\n.user-task .include-assign {\n background: bisque;\n color: red;\n border-radius: 12px;\n display: flex;\n align-items: center;\n width: fit-content;\n height: 18px;\n}\n.user-task .task-index {\n background: #1389ff;\n color: white;\n border-radius: 12px;\n width: -moz-fit-content;\n width: 25px;\n height: 100%;\n display: inline-flex;\n justify-content: center;\n margin-right: 6px;\n}\n\n/*# sourceMappingURL=userTask.vue.map */", map: {"version":3,"sources":["C:\\cod\\items\\ui-process-pc\\vue2\\src\\components\\zjp_process\\operation\\userTask.vue","userTask.vue"],"names":[],"mappings":"AAqqBA;EACA,mBAAA;EACA,iBAAA;EACA,eAAA;EACA,gBAAA;EACA,yBAAA;EACA,uBAAA;ACpqBA;ADsqBA;EACA,YAAA;ACpqBA;ADqqBA;EACA,kBAAA;ACnqBA;ADqqBA;EACA,eAAA;EACA,gBAAA;ACnqBA;ADqqBA;EACA,gBAAA;EACA,gBAAA;ACnqBA;ADqqBA;EACA,iBAAA;EACA,gBAAA;ACnqBA;ADqqBA;EACA,kBAAA;EACA,UAAA;EACA,mBAAA;EACA,aAAA;EACA,mBAAA;EACA,kBAAA;EACA,YAAA;ACnqBA;ADsqBA;EACA,mBAAA;EACA,YAAA;EACA,mBAAA;EACA,uBAAA;EACA,WAAA;EACA,YAAA;EACA,oBAAA;EACA,uBAAA;EACA,iBAAA;ACpqBA;;AAEA,uCAAuC","file":"userTask.vue","sourcesContent":["<template>\r\n <div class=\"user-task\">\r\n <!-- <pre class=\"111\">\r\n {{ JSON.stringify(processNodeObj, null, 2) }}\r\n </pre> -->\r\n <!-- 单选 -->\r\n <template v-if=\"processNodeObj.nodeType == 'exclusiveGateway' && processNodeObj.branches && processNodeObj.branches.length >= 1\">\r\n <!-- <div>进来这里</div> -->\r\n <el-form-item\r\n :label=\"processNodeObj.name || '下一节点'\"\r\n v-if=\"processNodeObj.branches.length > 1\"\r\n >\r\n <el-radio-group v-model=\"radioModel\" class=\"ml-4\">\r\n <el-radio\r\n v-for=\"item in processNodeObj.branches\"\r\n :key=\"item.id\"\r\n :label=\"item\"\r\n size=\"large\"\r\n >{{ item.name }}</el-radio\r\n >\r\n </el-radio-group>\r\n </el-form-item>\r\n <!-- <div>{{ 'id: ' + radioModel.id }}</div> -->\r\n <template v-if=\"radioModel.id\">\r\n <!-- 直接是节点 -->\r\n <template v-if=\"radioModel.nodeInfoDTO && radioModel.nodeInfoDTO.nodeType == 'userTask'\">\r\n <userTask\r\n :ref=\"setItemRef(radioModel.nodeInfoDTO.id)\"\r\n :personType=\"personType\"\r\n :personEntity=\"personEntity\"\r\n :process-node=\"{ \r\n ...(radioModel.nodeInfoDTO),\r\n REQUIRED: radioModel.nodeInfoDTO.setPersonnel == true && radioModel.nodeInfoDTO.assignees && radioModel.nodeInfoDTO.assignees.length > 0 ? false : true,\r\n }\"\r\n :key=\"radioModel.nodeInfoDTO.id\"\r\n :rules=\"[{ required: true, message: '请选择处理人' }]\"\r\n >\r\n </userTask>\r\n </template>\r\n <!-- 多选 -->\r\n <template v-else-if=\"radioModel.nodeInfoDTO && radioModel.nodeInfoDTO.nodeType == 'inclusiveGateway'\">\r\n <userTask\r\n :ref=\"setItemRef(radioModel.nodeInfoDTO.id)\"\r\n :personType=\"personType\"\r\n :personEntity=\"personEntity\"\r\n :process-node=\"{ \r\n ...(radioModel.nodeInfoDTO),\r\n REQUIRED: radioModel.nodeInfoDTO.setPersonnel == true && radioModel.nodeInfoDTO.assignees && radioModel.nodeInfoDTO.assignees.length > 0 ? false : true,\r\n }\"\r\n :key=\"radioModel.nodeInfoDTO.id\"\r\n :rules=\"[{ required: true, message: '请选择处理人' }]\"\r\n >\r\n </userTask>\r\n </template>\r\n <!-- 单选 -->\r\n <template v-else-if=\"radioModel.nodeInfoDTO && radioModel.nodeInfoDTO.nodeType == 'exclusiveGateway'\">\r\n <userTask\r\n v-for=\"item in radioModel.nodeInfoDTO.branches\"\r\n :key=\"item.nodeInfoDTO.id\"\r\n :personType=\"personType\"\r\n :personEntity=\"personEntity\"\r\n :processNode=\"{ \r\n ...item.nodeInfoDTO,\r\n REQUIRED: item.nodeInfoDTO.setPersonnel == true && item.nodeInfoDTO.assignees && item.nodeInfoDTO.assignees.length > 0 ? false : true,\r\n }\"\r\n lv1label=\"下一节点名称\"\r\n :ref=\"setItemRef(item.nodeInfoDTO.id)\"\r\n :rules=\"[{ required: true, message: '请选择处理人' }]\"\r\n >\r\n </userTask>\r\n </template>\r\n </template>\r\n <template v-else-if=\"processNodeObj && processNodeObj.branches && processNodeObj.branches.length == 1\">\r\n <userTask\r\n v-for=\"pitem in processNodeObj.branches\"\r\n :ref=\"setItemRef(pitem.nodeInfoDTO ? pitem.nodeInfoDTO.id : pitem.id)\"\r\n :personType=\"personType\"\r\n :personEntity=\"personEntity\"\r\n :process-node=\"{ \r\n ...(pitem.nodeInfoDTO ? pitem.nodeInfoDTO : pitem),\r\n REQUIRED: pitem.nodeInfoDTO.setPersonnel == true && pitem.nodeInfoDTO.assignees && pitem.nodeInfoDTO.assignees.length > 0 ? false : true,\r\n }\"\r\n :key=\"pitem.nodeInfoDTO ? pitem.nodeInfoDTO.id : pitem.id\"\r\n :rules=\"[{ required: true, message: '请选择处理人' }]\"\r\n >\r\n </userTask>\r\n </template>\r\n </template>\r\n\r\n\r\n <!-- <template v-if=\"processNodeObj.nodeType == 'exclusiveGateway' && processNodeObj.branches && processNodeObj.branches.length == 1\">\r\n <div>进来这里</div>\r\n <el-form-item\r\n :label=\"processNodeObj.name || '下一节点'\"\r\n v-if=\"processNodeObj.branches.length > 1\"\r\n >\r\n <el-radio-group v-model=\"radioModel\" class=\"ml-4\">\r\n <el-radio\r\n v-for=\"item in processNodeObj.branches\"\r\n :key=\"item.id\"\r\n :label=\"item\"\r\n size=\"large\"\r\n >{{ item.name }}</el-radio\r\n >\r\n </el-radio-group>\r\n </el-form-item>\r\n <div>{{ 'id: ' + radioModel.id }}</div>\r\n \r\n <template v-if=\"processNodeObj && processNodeObj.branches && processNodeObj.branches.length > 0\">\r\n <userTask\r\n v-for=\"pitem in processNodeObj.branches\"\r\n :ref=\"setItemRef(pitem.nodeInfoDTO ? pitem.nodeInfoDTO.id : pitem.id)\"\r\n :personType=\"personType\"\r\n :personEntity=\"personEntity\"\r\n :process-node=\"{ \r\n ...(pitem.nodeInfoDTO ? pitem.nodeInfoDTO : pitem),\r\n REQUIRED: pitem.nodeInfoDTO.setPersonnel == true && pitem.nodeInfoDTO.assignees && pitem.nodeInfoDTO.assignees.length > 0 ? false : true,\r\n }\"\r\n :key=\"pitem.nodeInfoDTO ? pitem.nodeInfoDTO.id : pitem.id\"\r\n :rules=\"[{ required: true, message: '请选择处理人' }]\"\r\n >\r\n </userTask>\r\n </template>\r\n </template> -->\r\n <!-- 多选 -->\r\n <template\r\n v-else-if=\"\r\n processNodeObj.nodeType == 'inclusiveGateway' &&\r\n processNodeObj.branches && processNodeObj.branches.length > 0\r\n \"\r\n >\r\n <el-form-item :label=\"processNodeObj.name || '下一节点'\">\r\n <el-checkbox-group v-model=\"checkList\">\r\n <template v-for=\"item in processNodeObj.branches\">\r\n <el-checkbox\r\n :label=\"item.nodeInfoDTO ? item.nodeInfoDTO.name : item.name\"\r\n v-if=\"isSelect(item.nodeInfoDTO ? item.nodeInfoDTO : item)\"\r\n :checked=\"true\"\r\n disabled\r\n :key=\"'checkbox' + (item.nodeInfoDTO ? item.nodeInfoDTO.id : item.id)\"\r\n />\r\n <el-checkbox\r\n :label=\"item.nodeInfoDTO ? item.nodeInfoDTO.name : item.name\"\r\n v-else\r\n :key=\"'checkbox1' + (item.nodeInfoDTO ? item.nodeInfoDTO.id : item.id)\"\r\n />\r\n </template>\r\n </el-checkbox-group>\r\n </el-form-item>\r\n <userTask\r\n :ref=\"setItemRef(item.nodeInfoDTO ? item.nodeInfoDTO.id : item.id)\"\r\n :personType=\"personType\"\r\n :personEntity=\"personEntity\"\r\n :key=\"item.nodeInfoDTO ? item.nodeInfoDTO.id : item.id\"\r\n v-for=\"item in checkModelList\"\r\n :processNode=\"{ \r\n ...(item.nodeInfoDTO ? item.nodeInfoDTO : item),\r\n REQUIRED: item.nodeInfoDTO ? (item.nodeInfoDTO.setPersonnel == true && item.nodeInfoDTO.assignees && item.nodeInfoDTO.assignees.length > 0 ? false : true) : (item.setPersonnel == true && item.assignees && item.assignees.length > 0 ? false : true)\r\n }\"\r\n >\r\n </userTask>\r\n </template>\r\n\r\n <template v-else-if=\"!processNodeObj.assignee || !processNodeObj.assignees || isOption(processNodeObj.humanPerformerName)\">\r\n <el-form-item\r\n :label=\"lv1label || '节点名称'\"\r\n style=\"margin-bottom: 10px\"\r\n >\r\n <template v-slot:label=\"{ label }\">\r\n <!-- <b class=\"task-index\">{{ (index + 1 ) }}</b> -->\r\n <div style=\"font-size: 16px\">{{ (lv1label || '节点名称') }}</div>\r\n </template>\r\n <b style=\"font-size: 16px\">{{ processNodeObj.name }}</b>\r\n </el-form-item>\r\n <el-form-item\r\n v-if=\"processNodeObj.routeTxt && processNodeObj.routeTxt.length > 0 && processNodeObj.userList && processNodeObj.userList.length >0\"\r\n :label=\"peopleLabel || '所属范围'\"\r\n style=\"margin-bottom: 10px\"\r\n >\r\n <div v-for=\"(item, index) in processNodeObj.routeTxt\" :key=\"item.type\">\r\n <div v-if=\"item.ids && item.ids.length > 0\">\r\n <b class=\"include include-type\" :class=\"['include-' + item.type]\">{{ item.type == 'user' ? '用户' : item.type == 'dept' ? '部门' : '岗位' }}</b>\r\n <span class=\"include include-name\">{{ item.name }}</span>\r\n <div class=\"include include-assign\" :class=\"['include-assign-' + (item.assigneeRetain ? 'true' : 'false')]\" v-if=\"index !== processNodeObj.routeTxt.length - 1\">{{ processNodeObj.assigneeRetain == 'true' ? '且同时满足' : '或者满足' }}</div>\r\n </div>\r\n </div>\r\n </el-form-item>\r\n <!-- 如果有固定的人 -->\r\n <el-form-item :label=\"label || '处理人'\" :rules=\"rules || {}\">\r\n <!-- 使用el-select -->\r\n <!-- 发起流程的时候 -->\r\n <el-select v-if=\"processNodeObj.userList && processNodeObj.userList.length >= 2\" v-model=\"targetUserId\" :multiple=\"processNodeObj.loopCardinality == -1 ? false : true\" @change=\"fixPeopleChange\">\r\n <el-option\r\n v-for=\"(item, index) in processNodeObj.userList\"\r\n :key=\"item.userId\"\r\n :label=\"item.realName\"\r\n :value=\"item.userId\"\r\n ></el-option>\r\n </el-select>\r\n <div class=\"setVal\" v-else-if=\"processNodeObj.userList && processNodeObj.userList.length == 1\">\r\n {{ processNodeObj.userList[0].realName }}\r\n </div>\r\n <!-- 审批流程的时候 -->\r\n <div class=\"setVal\" v-else-if=\"processNodeObj.setPersonnel && processNodeObj.assignees\">\r\n {{ (processNodeObj.assignees || []).map(i => i.name || i.realName).join(', ') }}\r\n </div>\r\n <staffTree\r\n v-else\r\n :processNodeObj=\"processNodeObj\"\r\n v-model=\"targetUserId\"\r\n :personType=\"personType\"\r\n :personEntity=\"personEntity\"\r\n @update:modelValue=\"\r\n (e) => {\r\n complete(e, processNodeObj);\r\n }\r\n \"\r\n @select=\"selectChange\"\r\n multiple\r\n :max=\"processNodeObj.loopCardinality == -1 ? 1 : 100\"\r\n :items=\"getTreeData(processNodeObj)\"\r\n >\r\n </staffTree>\r\n </el-form-item>\r\n </template>\r\n <!-- <template v-else>\r\n <el-form-item :label=\"lv1label || '节点名称'\">\r\n <b style=\"font-size: 16px\">{{ processNodeObj.name }}</b>\r\n </el-form-item>\r\n <el-form-item :label=\"label || '处理人'\">\r\n {{ '--' || processNodeObj.routeTxt.userNames }}\r\n </el-form-item>\r\n </template> -->\r\n <!-- <template v-else-if=\"processNodeObj.type == Enum.ProcessNodeType.单一分支\">\r\n <el-form-item\r\n :label=\"processNodeObj.name || '下一节点'\"\r\n v-if=\"processNodeObj.childNode.length > 1\"\r\n >\r\n <el-radio-group v-model=\"radioModel\" class=\"ml-4\">\r\n <el-radio\r\n v-for=\"item in processNodeObj.childNode\"\r\n :key=\"item.id\"\r\n :label=\"item\"\r\n size=\"large\"\r\n >{{ getLabel(item) }}</el-radio\r\n >\r\n </el-radio-group>\r\n </el-form-item>\r\n <template v-if=\"radioModel.id\">\r\n <userTask\r\n :ref=\"setItemRef(radioModel.id)\"\r\n :personType=\"personType\"\r\n :personEntity=\"personEntity\"\r\n :process-node=\"{ ...radioModel, taskNode: processNode.taskNode }\"\r\n :key=\"radioModel.id\"\r\n :rules=\"[{ required: true, message: '请选择处理人' }]\"\r\n >\r\n </userTask>\r\n </template>\r\n </template>\r\n <template\r\n v-else-if=\"\r\n processNodeObj.type == Enum.ProcessNodeType.多选节点 &&\r\n processNodeObj.childNode.length > 0\r\n \"\r\n >\r\n <el-form-item :label=\"processNodeObj.name || '下一节点'\">\r\n <el-checkbox-group v-model=\"checkList\">\r\n <template v-for=\"item in processNodeObj.childNode\">\r\n <el-checkbox\r\n :label=\"getLabel(item)\"\r\n v-if=\"isSelect(item)\"\r\n :checked=\"true\"\r\n disabled\r\n :key=\"'checkbox' + item.id\"\r\n />\r\n <el-checkbox\r\n :label=\"getLabel(item)\"\r\n v-else\r\n :key=\"'checkbox1' + item.id\"\r\n />\r\n </template>\r\n </el-checkbox-group>\r\n </el-form-item>\r\n <userTask\r\n :ref=\"setItemRef(item.id)\"\r\n :personType=\"personType\"\r\n :personEntity=\"personEntity\"\r\n :key=\"item.id\"\r\n v-for=\"item in checkModelList\"\r\n :processNode=\"{ ...item, taskNode: processNode.taskNode }\"\r\n >\r\n </userTask>\r\n </template> -->\r\n <!-- <template v-else-if=\"processNodeObj.type == Enum.ProcessNodeType.结束事件\">\r\n <el-form-item :label=\"lv1label || '节点名称'\">\r\n <b style=\"font-size: 16px\">{{ processNodeObj.name }}</b>\r\n </el-form-item>\r\n </template> -->\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport * as Enum from \"../enum\";\r\nimport staffTree from \"../staff-tree.vue\";\r\n// import userTask from \"./userTask.vue\"\r\nimport { Message as ElMessage } from \"element-ui\";\r\nimport api from \"../api\";\r\n\r\nexport default {\r\n name: \"userTask\",\r\n components: { staffTree },\r\n props: {\r\n index: {\r\n type: Number,\r\n default: 0\r\n },\r\n processNode: { require: true },\r\n label: \"\",\r\n peopleLabel: \"\",\r\n lv1label: \"\",\r\n personType: \"\",\r\n personEntity: {\r\n type: Object,\r\n default: () => {},\r\n },\r\n rules: {\r\n require: false,\r\n type: Array,\r\n },\r\n },\r\n data() {\r\n return {\r\n deptList: [],\r\n Enum,\r\n resultList: [],\r\n radioModel: {},\r\n checkList: [],\r\n targetUserId: \"\",\r\n targetUserList: [],\r\n processNodeObj: this.processNode,\r\n userTaskListData: {},\r\n personnelList: [],\r\n };\r\n },\r\n computed: {\r\n // 单选分支\r\n singalCond() {\r\n const cond1 = this.processNodeObj.nodeType == 'exclusiveGateway' && this.processNodeObj.branches && this.processNodeObj.branches.length > 1\r\n return cond1\r\n },\r\n checkModelList() {\r\n let arr = this.processNodeObj.branches.filter((o) =>\r\n {\r\n console.log(o, 'o')\r\n return this.checkList.includes(o.incomingConditionItemList[0].compareValue)\r\n }\r\n );\r\n\r\n this.resultList = arr || [];\r\n return this.resultList;\r\n },\r\n },\r\n watch: {\r\n processNode: {\r\n handler(newVal, oldVal) {\r\n // 如果是长度为1,固定\r\n if (newVal.userList && newVal.userList.length == 1) {\r\n this.targetUserId = newVal.userList[0].userId\r\n }\r\n this.processNodeObj = newVal || {};\r\n },\r\n deep: true,\r\n }\r\n },\r\n mounted() {\r\n if (\r\n this.processNodeObj.childNode &&\r\n this.processNodeObj.childNode.length == 1 &&\r\n this.processNodeObj.type == Enum.ProcessNodeType.单一分支\r\n ) {\r\n this.radioModel = this.processNodeObj.childNode[0];\r\n }\r\n },\r\n methods: {\r\n isSelect(item) {\r\n console.error(item, 'isSelect', this.checkList)\r\n if (item.incomingConditionItemList[0]) {\r\n let flag =\r\n item.incomingConditionItemList[0].itemName.includes(\"selecd\");\r\n if (flag) {\r\n if (!this.checkList.includes(item.name))\r\n this.checkList.push(item.name);\r\n }\r\n return flag;\r\n }\r\n return false;\r\n },\r\n fixPeopleChange(e) {\r\n console.log(e, 'e')\r\n this.complete(e, this.processNodeObj)\r\n },\r\n // 获取选中的人的对象\r\n selectChange (list) {\r\n console.log(list, 'list')\r\n this.targetUserList = list;\r\n },\r\n complete(e, item) {\r\n console.log(e, item, 'e item', this.resultList, this.resultList.every((o) => o.vars))\r\n item.vars = e;\r\n if (this.resultList.every((o) => o.vars)) {\r\n this.processNodeObj.vars = this.resultList.map((o) => o.vars);\r\n console.log(this.processNodeObj.vars, 'this.processNodeObj.vars')\r\n this.$emit(\"complete\", this.processNodeObj);\r\n }\r\n },\r\n setItemRef(key) {\r\n this.userTaskListData[key] = \"userTask\" + key;\r\n return this.userTaskListData[key];\r\n },\r\n getTreeData(item) {\r\n if (item) {\r\n if (item.humanPerformerName == \"固定部门\") {\r\n return item.routeTxt.departmentIds.map((o) => {\r\n let obj = {};\r\n obj.id = o.rangeId;\r\n obj.leaf = false;\r\n obj.name = o.name;\r\n obj.orgType = this.Enum.UserType.部门;\r\n return obj;\r\n });\r\n } else if (item.humanPerformerName == \"固定单位\") {\r\n return item.routeTxt.companyIds.map((o) => {\r\n let obj = {};\r\n obj.id = o.rangeId;\r\n obj.leaf = false;\r\n obj.name = o.name;\r\n obj.orgType = this.Enum.UserType.主体;\r\n return obj;\r\n });\r\n } else if (item.humanPerformerName == \"固定群组\") {\r\n return item.routeTxt.teamList.map((o) => {\r\n let obj = {};\r\n obj.id = o.id;\r\n obj.leaf = false;\r\n obj.name = o.teamName;\r\n obj.orgType = this.Enum.UserType.群组;\r\n return obj;\r\n });\r\n }\r\n }\r\n return undefined;\r\n },\r\n isOption(humanPerformer) {\r\n return (\r\n humanPerformer == \"任意指定\" ||\r\n humanPerformer == \"固定部门\" ||\r\n humanPerformer == \"固定单位\" ||\r\n humanPerformer == \"固定角色/岗位\" ||\r\n humanPerformer == \"固定群组\"\r\n );\r\n },\r\n getValue() {\r\n let flag = true;\r\n let val = { multiNodeParticipant: {}, vars: {} };\r\n console.error(this.processNodeObj, 'getValue 测试数据')\r\n if (\r\n (!this.processNodeObj.type || \r\n this.processNodeObj.type == this.Enum.ProcessNodeType.用户任务 ||\r\n this.processNodeObj.type == Enum.ProcessNodeType.用户节点)\r\n \r\n ) {\r\n\r\n /**\r\n * &&\r\n (\r\n this.processNodeObj.nodeType != 'exclusiveGateway'\r\n ||\r\n this.processNodeObj.nodeType == 'exclusiveGateway' && this.processNodeObj.branches.length == 0\r\n )\r\n */\r\n // exclusiveGateway 节点\r\n console.error(this.processNodeObj.nodeType, 'nodeType')\r\n\r\n if (this.processNodeObj.nodeType == 'exclusiveGateway') {\r\n // 进来这里\r\n console.error('-----------------开始-------------------')\r\n\r\n \r\n\r\n for (let key in this.userTaskListData) {\r\n let o = this.userTaskListData[key];\r\n console.error(o, 'o', key, this.userTaskListData)\r\n let refCom = this.$refs[o];\r\n\r\n refCom = Array.isArray(refCom) ? refCom[0] : refCom;\r\n console.log( refCom, 'refCom')\r\n if (refCom) {\r\n let res = refCom.getValue();\r\n console.error('res in userTask', res)\r\n if (!res) {\r\n flag = false;\r\n } else {\r\n\r\n console.error('进来了这里进来了这里进来了这里进来了这里进来了这里进来了这里进来了这里进来了这里进来了这里进来了这里进来了这里进来了这里进来了这里进来了这里进来了这里进来了这里进来了这里')\r\n\r\n if (this.radioModel && this.radioModel.nodeInfoDTO && this.radioModel.nodeInfoDTO.id) {\r\n if (\r\n this.radioModel.nodeInfoDTO.incomingConditionItemList &&\r\n this.radioModel.nodeInfoDTO.incomingConditionItemList.length > 0\r\n )\r\n val.vars[\r\n this.radioModel.nodeInfoDTO.incomingConditionItemList[0].itemName\r\n ] =\r\n this.radioModel.nodeInfoDTO.incomingConditionItemList[0].compareValue;\r\n }\r\n\r\n\r\n console.log(res)\r\n val.multiNodeParticipant = {\r\n ...val.multiNodeParticipant,\r\n ...res.multiNodeParticipant,\r\n };\r\n val.vars = { ...val.vars, ...res.vars };\r\n }\r\n }\r\n }\r\n \r\n } \r\n else if (this.processNodeObj.nodeType == 'inclusiveGateway') {\r\n // 进来这里\r\n console.error('-----------------开始-------------------')\r\n console.log(this)\r\n if (this.resultList && this.resultList.length > 0) {\r\n\r\n this.resultList.forEach(rlItem => {\r\n const o = this.userTaskListData[rlItem.nodeInfoDTO.id]\r\n console.error(o, 'o', this.resultList)\r\n let refCom = this.$refs[o];\r\n\r\n refCom = Array.isArray(refCom) ? refCom[0] : refCom;\r\n console.error(refCom.getValue(), '获取值')\r\n if (refCom) {\r\n let res = refCom.getValue();\r\n console.error('res in userTask', res)\r\n if (!res) {\r\n flag = false;\r\n } else {\r\n if (rlItem.nodeInfoDTO.incomingConditionItemList.length !== 0) {\r\n rlItem.nodeInfoDTO.incomingConditionItemList.forEach((item) => {\r\n if (item.itemName) {\r\n val.vars[item.itemName] = item.compareValue;\r\n }\r\n });\r\n }\r\n console.log(res)\r\n val.multiNodeParticipant = {\r\n ...val.multiNodeParticipant,\r\n ...res.multiNodeParticipant,\r\n };\r\n val.vars = { ...val.vars, ...res.vars };\r\n }\r\n }\r\n })\r\n\r\n } else {\r\n this.processNodeObj.nodeInfoDTO.name && ElMessage.warning(`请选择 ${this.processNodeObj.nodeInfoDTO.name} `);\r\n return false;\r\n }\r\n \r\n \r\n } \r\n // 新流程需要进入这里\r\n else if (!this.processNodeObj.assignee || !Array.isArray(this.processNodeObj.assignee) || !this.processNodeObj.setPersonnel || this.isOption(this.processNodeObj.humanPerformerName)\r\n || \r\n (this.processNodeObj.nodeInfoDTO && (!this.processNodeObj.nodeInfoDTO.assignee || !Array.isArray(this.processNodeObj.nodeInfoDTO.assignee) || !this.processNodeObj.nodeInfoDTO.setPersonnel || this.isOption(this.processNodeObj.nodeInfoDTO.humanPerformerName)))\r\n ) {\r\n if (this.targetUserId && this.targetUserId.length > 0) {\r\n let obj = {};\r\n val.multiNodeParticipant = {};\r\n val.multiNodeParticipant[this.processNode.nodeInfoDTO ? this.processNodeObj.nodeInfoDTO.id : this.processNodeObj.id] =\r\n Array.isArray(this.targetUserId) ? this.targetUserId : [this.targetUserId];\r\n // val.push(obj);\r\n } else if (this.processNodeObj.REQUIRED !== false || (this.processNodeObj.nodeInfoDTO && this.processNodeObj.nodeInfoDTO.REQUIRED !== false)) {\r\n if (this.processNodeObj.nodeInfoDTO) {\r\n this.processNodeObj.nodeInfoDTO.name && ElMessage.warning(`请选择 ${this.processNodeObj.nodeInfoDTO.name} 处理人`);\r\n } else {\r\n this.processNodeObj.name && ElMessage.warning(`请选择 ${this.processNodeObj.name} 处理人`);\r\n }\r\n // ElMessage.warning(`请选择审批人`);\r\n return false;\r\n }\r\n } else {\r\n if (\r\n this.processNodeObj.incomingConditionItemList &&\r\n this.processNodeObj.incomingConditionItemList.length > 0\r\n ) {\r\n val.vars[\r\n this.processNodeObj.incomingConditionItemList[0].itemName\r\n ] = this.processNodeObj.incomingConditionItemList[0].compareValue;\r\n }\r\n }\r\n } else {\r\n for (let key in this.userTaskListData) {\r\n console.error(key, 'key', this.userTaskListData[key])\r\n let o = this.userTaskListData[key];\r\n let refCom = this.$refs[o];\r\n console.error(this.processNodeObj, 'refcom', refCom)\r\n\r\n refCom = Array.isArray(refCom) ? refCom[0] : refCom;\r\n if (refCom) {\r\n let res = refCom.getValue();\r\n console.error('res in userTask', res)\r\n if (!res) {\r\n flag = false;\r\n } else {\r\n if (\r\n this.processNodeObj.nodeType == 'exclusiveGateway'\r\n ) {\r\n if (this.radioModel && this.radioModel.id) {\r\n if (\r\n this.radioModel.incomingConditionItemList &&\r\n this.radioModel.incomingConditionItemList.length > 0\r\n )\r\n val.vars[\r\n this.radioModel.incomingConditionItemList[0].itemName\r\n ] =\r\n this.radioModel.incomingConditionItemList[0].compareValue;\r\n } else {\r\n this.processNodeObj.name && ElMessage.warning(\r\n `请选择 ${this.processNodeObj.name} 下一节点`\r\n );\r\n return false;\r\n }\r\n } else if (\r\n this.processNodeObj.nodeType == 'inclusiveGateway'\r\n ) {\r\n if (this.resultList && this.resultList.length > 0) {\r\n this.resultList.forEach((r) => {\r\n if (r.incomingConditionItemList.length !== 0) {\r\n r.incomingConditionItemList.forEach((item) => {\r\n if (item.itemName) {\r\n val.vars[item.itemName] = item.compareValue;\r\n }\r\n });\r\n }\r\n });\r\n } else {\r\n this.processNodeObj.name && ElMessage.warning(`请选择 ${this.processNodeObj.name} `);\r\n return false;\r\n }\r\n }\r\n val.multiNodeParticipant = {\r\n ...val.multiNodeParticipant,\r\n ...res.multiNodeParticipant,\r\n };\r\n val.vars = { ...val.vars, ...res.vars };\r\n }\r\n }\r\n }\r\n }\r\n if (flag) return val;\r\n return flag;\r\n },\r\n getLabel(node) {\r\n let name = \"\";\r\n if (node.incomingConditionItemList.length > 0) {\r\n name = node.incomingConditionItemList[0].compareValue;\r\n }\r\n return name || node.name || \"后续节点\";\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n.user-task {\r\n :deep(.el-form-item__label) {\r\n white-space: nowrap;\r\n text-align: right;\r\n font-size: 14px;\r\n overflow: hidden;\r\n display: block !important;\r\n text-overflow: ellipsis;\r\n }\r\n .include {\r\n padding: 6px;\r\n &-type {\r\n border-radius: 6px;\r\n }\r\n &-user {\r\n background: red;\r\n color: aliceblue;\r\n }\r\n &-dept {\r\n background: blue;\r\n color: aliceblue;\r\n }\r\n &-post {\r\n background: green;\r\n color: aliceblue;\r\n }\r\n &-assign {\r\n background: bisque;\r\n color: red;\r\n border-radius: 12px;\r\n display: flex;\r\n align-items: center;\r\n width: fit-content;\r\n height: 18px;\r\n }\r\n }\r\n .task-index {\r\n background: #1389ff;\r\n color: white;\r\n border-radius: 12px;\r\n width: -moz-fit-content;\r\n width: 25px;\r\n height: 100%;\r\n display: inline-flex;\r\n justify-content: center;\r\n margin-right: 6px;\r\n }\r\n}\r\n</style>\r\n",".user-task :deep(.el-form-item__label) {\n white-space: nowrap;\n text-align: right;\n font-size: 14px;\n overflow: hidden;\n display: block !important;\n text-overflow: ellipsis;\n}\n.user-task .include {\n padding: 6px;\n}\n.user-task .include-type {\n border-radius: 6px;\n}\n.user-task .include-user {\n background: red;\n color: aliceblue;\n}\n.user-task .include-dept {\n background: blue;\n color: aliceblue;\n}\n.user-task .include-post {\n background: green;\n color: aliceblue;\n}\n.user-task .include-assign {\n background: bisque;\n color: red;\n border-radius: 12px;\n display: flex;\n align-items: center;\n width: fit-content;\n height: 18px;\n}\n.user-task .task-index {\n background: #1389ff;\n color: white;\n border-radius: 12px;\n width: -moz-fit-content;\n width: 25px;\n height: 100%;\n display: inline-flex;\n justify-content: center;\n margin-right: 6px;\n}\n\n/*# sourceMappingURL=userTask.vue.map */"]}, media: undefined });
|
|
3157
3682
|
|
|
3158
3683
|
};
|
|
3159
3684
|
/* scoped */
|
|
@@ -3626,6 +4151,105 @@ __vue_render__$f._withStripped = true;
|
|
|
3626
4151
|
//
|
|
3627
4152
|
//
|
|
3628
4153
|
//
|
|
4154
|
+
//
|
|
4155
|
+
//
|
|
4156
|
+
//
|
|
4157
|
+
//
|
|
4158
|
+
//
|
|
4159
|
+
//
|
|
4160
|
+
//
|
|
4161
|
+
//
|
|
4162
|
+
//
|
|
4163
|
+
//
|
|
4164
|
+
//
|
|
4165
|
+
//
|
|
4166
|
+
//
|
|
4167
|
+
//
|
|
4168
|
+
//
|
|
4169
|
+
//
|
|
4170
|
+
//
|
|
4171
|
+
//
|
|
4172
|
+
//
|
|
4173
|
+
//
|
|
4174
|
+
//
|
|
4175
|
+
//
|
|
4176
|
+
//
|
|
4177
|
+
//
|
|
4178
|
+
//
|
|
4179
|
+
//
|
|
4180
|
+
//
|
|
4181
|
+
//
|
|
4182
|
+
//
|
|
4183
|
+
//
|
|
4184
|
+
//
|
|
4185
|
+
//
|
|
4186
|
+
//
|
|
4187
|
+
//
|
|
4188
|
+
//
|
|
4189
|
+
//
|
|
4190
|
+
//
|
|
4191
|
+
//
|
|
4192
|
+
//
|
|
4193
|
+
//
|
|
4194
|
+
//
|
|
4195
|
+
//
|
|
4196
|
+
//
|
|
4197
|
+
//
|
|
4198
|
+
//
|
|
4199
|
+
//
|
|
4200
|
+
//
|
|
4201
|
+
//
|
|
4202
|
+
//
|
|
4203
|
+
//
|
|
4204
|
+
//
|
|
4205
|
+
//
|
|
4206
|
+
//
|
|
4207
|
+
//
|
|
4208
|
+
//
|
|
4209
|
+
//
|
|
4210
|
+
//
|
|
4211
|
+
//
|
|
4212
|
+
//
|
|
4213
|
+
//
|
|
4214
|
+
//
|
|
4215
|
+
//
|
|
4216
|
+
//
|
|
4217
|
+
//
|
|
4218
|
+
//
|
|
4219
|
+
//
|
|
4220
|
+
//
|
|
4221
|
+
//
|
|
4222
|
+
//
|
|
4223
|
+
//
|
|
4224
|
+
//
|
|
4225
|
+
//
|
|
4226
|
+
//
|
|
4227
|
+
//
|
|
4228
|
+
//
|
|
4229
|
+
//
|
|
4230
|
+
//
|
|
4231
|
+
//
|
|
4232
|
+
//
|
|
4233
|
+
//
|
|
4234
|
+
//
|
|
4235
|
+
//
|
|
4236
|
+
//
|
|
4237
|
+
//
|
|
4238
|
+
//
|
|
4239
|
+
//
|
|
4240
|
+
//
|
|
4241
|
+
//
|
|
4242
|
+
//
|
|
4243
|
+
//
|
|
4244
|
+
//
|
|
4245
|
+
//
|
|
4246
|
+
//
|
|
4247
|
+
//
|
|
4248
|
+
//
|
|
4249
|
+
//
|
|
4250
|
+
//
|
|
4251
|
+
//
|
|
4252
|
+
//
|
|
3629
4253
|
|
|
3630
4254
|
|
|
3631
4255
|
var script$e = {
|
|
@@ -3774,8 +4398,15 @@ var script$e = {
|
|
|
3774
4398
|
let o = this.userTaskListData[key];
|
|
3775
4399
|
console.log(o, 'o', this.$refs[o]);
|
|
3776
4400
|
let refCom = this.$refs[o].$el ? this.$refs[o] : this.$refs[o][0];
|
|
3777
|
-
console.
|
|
4401
|
+
console.error('上传', refCom, refCom.getValue);
|
|
3778
4402
|
let res = refCom.getValue();
|
|
4403
|
+
if (res && res.vars && this.param.incomingConditionItemList&& this.param.incomingConditionItemList.length > 0) {
|
|
4404
|
+
this.param.incomingConditionItemList.forEach(item => {
|
|
4405
|
+
if (!res.vars[item.itemName]) {
|
|
4406
|
+
res.vars[item.itemName] = '';
|
|
4407
|
+
}
|
|
4408
|
+
});
|
|
4409
|
+
}
|
|
3779
4410
|
console.log(res, 'res get value');
|
|
3780
4411
|
if (!res) {
|
|
3781
4412
|
return false;
|
|
@@ -4071,7 +4702,10 @@ var __vue_render__$e = function () {
|
|
|
4071
4702
|
_vm._v(" "),
|
|
4072
4703
|
_vm._t("file"),
|
|
4073
4704
|
_vm._v(" "),
|
|
4074
|
-
_vm.param.nextTaskNode &&
|
|
4705
|
+
_vm.param.nextTaskNode &&
|
|
4706
|
+
_vm.param.nextTaskNode.id &&
|
|
4707
|
+
_vm.param.nextTaskNode.nodeType != "parallelGateway" &&
|
|
4708
|
+
_vm.param.nextTaskNode.nodeType != "exclusiveGateway"
|
|
4075
4709
|
? [
|
|
4076
4710
|
_vm.param.nextTaskNode.nodeType != "endEvent"
|
|
4077
4711
|
? [
|
|
@@ -4106,7 +4740,31 @@ var __vue_render__$e = function () {
|
|
|
4106
4740
|
]),
|
|
4107
4741
|
],
|
|
4108
4742
|
]
|
|
4109
|
-
: _vm.param.
|
|
4743
|
+
: _vm.param.nextTaskNode.nodeType == "exclusiveGateway" &&
|
|
4744
|
+
_vm.param.outGatewayUserTaskModel &&
|
|
4745
|
+
_vm.param.outGatewayUserTaskModel.length > 0
|
|
4746
|
+
? _vm._l(_vm.param.outGatewayUserTaskModel, function (item) {
|
|
4747
|
+
return _c("userTask", {
|
|
4748
|
+
key: item.id,
|
|
4749
|
+
ref: _vm.setItemRef(item.id),
|
|
4750
|
+
refInFor: true,
|
|
4751
|
+
attrs: {
|
|
4752
|
+
personType: _vm.param.personType,
|
|
4753
|
+
personEntity: _vm.param.personEntity,
|
|
4754
|
+
processNode: Object.assign({}, item, {
|
|
4755
|
+
pType: _vm.param.nextTaskNode.nodeType,
|
|
4756
|
+
REQUIRED:
|
|
4757
|
+
item.setPersonnel == true &&
|
|
4758
|
+
item.assignees &&
|
|
4759
|
+
item.assignees.length > 0
|
|
4760
|
+
? false
|
|
4761
|
+
: true,
|
|
4762
|
+
}),
|
|
4763
|
+
},
|
|
4764
|
+
})
|
|
4765
|
+
})
|
|
4766
|
+
: _vm.param.outGatewayUserTaskModel &&
|
|
4767
|
+
_vm.param.outGatewayUserTaskModel.length > 0
|
|
4110
4768
|
? _vm._l(_vm.param.outGatewayUserTaskModel, function (item) {
|
|
4111
4769
|
return _c("userTask", {
|
|
4112
4770
|
key: item.id,
|
|
@@ -4116,8 +4774,144 @@ var __vue_render__$e = function () {
|
|
|
4116
4774
|
personType: _vm.param.personType,
|
|
4117
4775
|
personEntity: _vm.param.personEntity,
|
|
4118
4776
|
processNode: Object.assign({}, item, {
|
|
4119
|
-
|
|
4777
|
+
REQUIRED:
|
|
4778
|
+
item.setPersonnel == true &&
|
|
4779
|
+
item.assignees &&
|
|
4780
|
+
item.assignees.length > 0
|
|
4781
|
+
? false
|
|
4782
|
+
: true,
|
|
4783
|
+
}),
|
|
4784
|
+
},
|
|
4785
|
+
})
|
|
4786
|
+
})
|
|
4787
|
+
: _vm.param.nextTaskNode.nodeType == "exclusiveGateway" &&
|
|
4788
|
+
_vm.param.nextTaskNode.branches &&
|
|
4789
|
+
_vm.param.nextTaskNode.branches.length == 1
|
|
4790
|
+
? [
|
|
4791
|
+
_vm.param.nextTaskNode.nodeType != "endEvent"
|
|
4792
|
+
? [
|
|
4793
|
+
_vm.param.nextTaskNode.branches[0].nodeInfoDTO
|
|
4794
|
+
? _c("userTask", {
|
|
4795
|
+
key: _vm.param.nextTaskNode.branches[0].nodeInfoDTO.id,
|
|
4796
|
+
ref: _vm.setItemRef(
|
|
4797
|
+
_vm.param.nextTaskNode.branches[0].nodeInfoDTO.id
|
|
4798
|
+
),
|
|
4799
|
+
attrs: {
|
|
4800
|
+
personType:
|
|
4801
|
+
_vm.param.nextTaskNode.branches[0].nodeInfoDTO
|
|
4802
|
+
.personType || "",
|
|
4803
|
+
personEntity: {},
|
|
4804
|
+
"process-node": Object.assign(
|
|
4805
|
+
{},
|
|
4806
|
+
_vm.param.nextTaskNode.branches[0].nodeInfoDTO,
|
|
4807
|
+
{
|
|
4808
|
+
REQUIRED:
|
|
4809
|
+
_vm.param.nextTaskNode.branches[0].nodeInfoDTO
|
|
4810
|
+
.setPersonnel == true &&
|
|
4811
|
+
_vm.param.nextTaskNode.branches[0].nodeInfoDTO
|
|
4812
|
+
.assignees &&
|
|
4813
|
+
_vm.param.nextTaskNode.branches[0].nodeInfoDTO
|
|
4814
|
+
.assignees.length > 0
|
|
4815
|
+
? false
|
|
4816
|
+
: true,
|
|
4817
|
+
}
|
|
4818
|
+
),
|
|
4819
|
+
lv1label: "下一节点名称",
|
|
4820
|
+
rules: [{ required: true, message: "请选择处理人" }],
|
|
4821
|
+
},
|
|
4822
|
+
})
|
|
4823
|
+
: _c("userTask", {
|
|
4824
|
+
key: _vm.param.nextTaskNode.branches[0].id,
|
|
4825
|
+
ref: _vm.setItemRef(
|
|
4826
|
+
_vm.param.nextTaskNode.branches[0].id
|
|
4827
|
+
),
|
|
4828
|
+
attrs: {
|
|
4829
|
+
personType:
|
|
4830
|
+
_vm.param.nextTaskNode.branches[0].personType || "",
|
|
4831
|
+
personEntity: {},
|
|
4832
|
+
"process-node": Object.assign(
|
|
4833
|
+
{},
|
|
4834
|
+
_vm.param.nextTaskNode.branches[0],
|
|
4835
|
+
{
|
|
4836
|
+
REQUIRED:
|
|
4837
|
+
_vm.param.nextTaskNode.branches[0]
|
|
4838
|
+
.setPersonnel == true &&
|
|
4839
|
+
_vm.param.nextTaskNode.branches[0].assignees &&
|
|
4840
|
+
_vm.param.nextTaskNode.branches[0].assignees
|
|
4841
|
+
.length > 0
|
|
4842
|
+
? false
|
|
4843
|
+
: true,
|
|
4844
|
+
}
|
|
4845
|
+
),
|
|
4846
|
+
lv1label: "下一节点名称",
|
|
4847
|
+
rules: [{ required: true, message: "请选择处理人" }],
|
|
4848
|
+
},
|
|
4849
|
+
}),
|
|
4850
|
+
]
|
|
4851
|
+
: [
|
|
4852
|
+
_c("el-form-item", { attrs: { label: "下一节点名称" } }, [
|
|
4853
|
+
_c("b", { staticStyle: { "font-size": "16px" } }, [
|
|
4854
|
+
_vm._v("结束事件"),
|
|
4855
|
+
]),
|
|
4856
|
+
]),
|
|
4857
|
+
],
|
|
4858
|
+
]
|
|
4859
|
+
: _vm.param.nextTaskNode.nodeType == "exclusiveGateway" &&
|
|
4860
|
+
_vm.param.nextTaskNode.branches &&
|
|
4861
|
+
_vm.param.nextTaskNode.branches.length > 1
|
|
4862
|
+
? [
|
|
4863
|
+
_vm.param.nextTaskNode.nodeType != "endEvent"
|
|
4864
|
+
? [
|
|
4865
|
+
_c("userTask", {
|
|
4866
|
+
key: _vm.param.nextTaskNode.id,
|
|
4867
|
+
ref: _vm.setItemRef(_vm.param.nextTaskNode.id),
|
|
4868
|
+
attrs: {
|
|
4869
|
+
personType: _vm.param.nextTaskNode.personType || "",
|
|
4870
|
+
personEntity: {},
|
|
4871
|
+
"process-node": Object.assign(
|
|
4872
|
+
{},
|
|
4873
|
+
_vm.param.nextTaskNode,
|
|
4874
|
+
{
|
|
4875
|
+
REQUIRED:
|
|
4876
|
+
_vm.param.nextTaskNode.setPersonnel == true &&
|
|
4877
|
+
_vm.param.nextTaskNode.assignees &&
|
|
4878
|
+
_vm.param.nextTaskNode.assignees.length > 0
|
|
4879
|
+
? false
|
|
4880
|
+
: true,
|
|
4881
|
+
}
|
|
4882
|
+
),
|
|
4883
|
+
lv1label: "下一节点名称",
|
|
4884
|
+
rules: [{ required: true, message: "请选择处理人" }],
|
|
4885
|
+
},
|
|
4886
|
+
}),
|
|
4887
|
+
]
|
|
4888
|
+
: [
|
|
4889
|
+
_c("el-form-item", { attrs: { label: "下一节点名称" } }, [
|
|
4890
|
+
_c("b", { staticStyle: { "font-size": "16px" } }, [
|
|
4891
|
+
_vm._v("结束事件"),
|
|
4892
|
+
]),
|
|
4893
|
+
]),
|
|
4894
|
+
],
|
|
4895
|
+
]
|
|
4896
|
+
: _vm.param.nextTaskNode.nodeType == "parallelGateway"
|
|
4897
|
+
? _vm._l(_vm.param.nextTaskNode.branches, function (item) {
|
|
4898
|
+
return _c("userTask", {
|
|
4899
|
+
key: item.id,
|
|
4900
|
+
ref: _vm.setItemRef(item.id),
|
|
4901
|
+
refInFor: true,
|
|
4902
|
+
attrs: {
|
|
4903
|
+
personType: _vm.param.personType || "",
|
|
4904
|
+
personEntity: _vm.param.personEntity || {},
|
|
4905
|
+
processNode: Object.assign({}, item, {
|
|
4906
|
+
REQUIRED:
|
|
4907
|
+
item.setPersonnel == true &&
|
|
4908
|
+
item.assignees &&
|
|
4909
|
+
item.assignees.length > 0
|
|
4910
|
+
? false
|
|
4911
|
+
: true,
|
|
4120
4912
|
}),
|
|
4913
|
+
lv1label: "下一节点名称",
|
|
4914
|
+
rules: [{ required: true, message: "请选择处理人" }],
|
|
4121
4915
|
},
|
|
4122
4916
|
})
|
|
4123
4917
|
})
|
|
@@ -4168,11 +4962,11 @@ __vue_render__$e._withStripped = true;
|
|
|
4168
4962
|
/* style */
|
|
4169
4963
|
const __vue_inject_styles__$e = function (inject) {
|
|
4170
4964
|
if (!inject) return
|
|
4171
|
-
inject("data-v-52384047_0", { source: "\n@import \"./content.css\";\n.add-idea[data-v-52384047] {\r\n display: flex;\r\n justify-content: end;\n}\n.add-idea span[data-v-52384047] {\r\n color: #448ef6;\r\n cursor: pointer;\n}\n.sign-idea[data-v-52384047] {\r\n display: flex;\nspan {\r\n color: #448ef6;\r\n cursor: pointer;\n}\n}\n.sign-container[data-v-52384047] {\r\n min-height: 60vh;\n}\r\n", map: {"version":3,"sources":["C:\\cod\\items\\ui-process-pc\\vue2\\src\\components\\zjp_process\\operation\\complete.vue"],"names":[],"mappings":";AAmaA,uBAAA;AACA;EACA,aAAA;EACA,oBAAA;AACA;AACA;EACA,cAAA;EACA,eAAA;AACA;AACA;EACA,aAAA;AACA;IACA,cAAA;IACA,eAAA;AACA;AACA;AACA;EACA,gBAAA;AACA","file":"complete.vue","sourcesContent":["<template>\r\n <el-form label-width=\"120px\" @submit.native.prevent status-icon>\r\n <template\r\n v-if=\"\r\n param.ProcessInsObj.processDefId !=\r\n 'obj_94014ede99b6495d8f6d5977314faa15'\r\n \"\r\n >\r\n <el-form-item label=\"快捷回复\">\r\n <el-radio-group v-model=\"commentMsg\">\r\n <el-radio label=\"同意\">同意</el-radio>\r\n <el-radio label=\"如拟\" v-if=\"param.showAsPlanned\">如拟</el-radio>\r\n <el-radio label=\"已阅\">已阅</el-radio>\r\n </el-radio-group>\r\n </el-form-item>\r\n <el-form-item v-if=\"param.showCommIdea\">\r\n <commIdea ref=\"commIdea\" @change=\"(e) => (commentMsg = e)\" />\r\n </el-form-item>\r\n <el-form-item\r\n label=\"审批意见\"\r\n :rules=\"[\r\n { required: param.commentMsgRequired, message: '审批意见不能为空' },\r\n ]\"\r\n >\r\n <el-input\r\n v-model=\"commentMsg\"\r\n :rows=\"5\"\r\n maxlength=\"200\"\r\n show-word-limit\r\n type=\"textarea\"\r\n resize=\"none\"\r\n placeholder=\"请输入审批意见\"\r\n class=\"formInput\"\r\n />\r\n <div class=\"add-idea\" v-if=\"param.showCommIdea\">\r\n <span @click=\"$refs['commIdea'].addIdea(commentMsg)\"\r\n >设置为常用意见</span\r\n >\r\n </div>\r\n </el-form-item>\r\n <!-- <el-form-item\r\n label=\"审批签字\"\r\n :rules=\"[\r\n { required: signRequired, message: '审批签字不能为空' },\r\n ]\"\r\n v-if=\"signRequired\"\r\n >\r\n <div class=\"sign-idea\">\r\n <span @click=\"toSign\">去签字</span>\r\n </div>\r\n </el-form-item> -->\r\n </template>\r\n <slot name=\"file\"></slot>\r\n <!-- <el-form-item label=\"下一步处理节点\" size=\"normal\"> </el-form-item> -->\r\n <template v-if=\"param.nextTaskNode && param.nextTaskNode.id\">\r\n <template v-if=\"param.nextTaskNode.nodeType != 'endEvent'\">\r\n <userTask\r\n :key=\"param.nextTaskNode.id\"\r\n :personType=\"param.nextTaskNode.personType || ''\"\r\n :personEntity=\"{}\"\r\n :process-node=\"{\r\n ...param.nextTaskNode,\r\n REQUIRED: param.nextTaskNode.setPersonnel == true && param.nextTaskNode.assignees && param.nextTaskNode.assignees.length > 0 ? false : true,\r\n }\"\r\n lv1label=\"下一节点名称\"\r\n :ref=\"setItemRef(param.nextTaskNode.id)\"\r\n :rules=\"[{ required: true, message: '请选择处理人' }]\"\r\n >\r\n </userTask>\r\n </template>\r\n <template v-else>\r\n <el-form-item label=\"下一节点名称\">\r\n <b style=\"font-size: 16px\">结束事件</b>\r\n </el-form-item>\r\n </template>\r\n </template>\r\n <userTask\r\n v-else-if=\"param.outGatewayUserTaskModel\"\r\n v-for=\"item in param.outGatewayUserTaskModel\"\r\n :key=\"item.id\"\r\n :personType=\"param.personType\"\r\n :personEntity=\"param.personEntity\"\r\n :processNode=\"{ ...item, taskNode: param.taskNode }\"\r\n :ref=\"setItemRef(item.id)\"\r\n >\r\n </userTask>\r\n\r\n <slot name=\"form\"></slot>\r\n\r\n <el-dialog title=\"签字\" :visible.sync=\"signVisible\" append-to-body width=\"800px\" @closed=\"closeSign\" :close-on-click-modal=\"false\">\r\n <div class=\"sign-container\">\r\n <TopSign @saveSignature=\"handleSignature\" @validateFail=\"noticeFail\">\r\n </TopSign>\r\n </div>\r\n </el-dialog>\r\n </el-form>\r\n</template>\r\n\r\n<script>\r\nimport * as $enum from \"../enum\";\r\nimport staffTree from \"../staff-tree.vue\";\r\nimport api from \"../api\";\r\nimport { Message as ElMessage } from \"element-ui\";\r\nimport userTask from \"./userTask.vue\";\r\nimport commIdea from \"./commIdea.vue\";\r\nimport TopSign from '../../TopSign/topSign.vue'\r\n\r\nexport default {\r\n components: { staffTree, userTask, commIdea, TopSign },\r\n props: {\r\n param: Object,\r\n },\r\n data() {\r\n return {\r\n commentMsg: \"\",\r\n targetUser: [],\r\n userTaskListData: {},\r\n outGatewayUserTaskModel: this.param.outGatewayUserTaskModel,\r\n Enum: $enum,\r\n signVisible: false,\r\n digitalSignature: '',\r\n confirmPreposition: false, \r\n confirmLoading: () => {}\r\n };\r\n },\r\n mounted() {\r\n if (\r\n this.param.ProcessInsObj.processDefId ==\r\n \"obj_94014ede99b6495d8f6d5977314faa15\"\r\n ) {\r\n this.commentMsg = \"同意\";\r\n }\r\n },\r\n computed: {\r\n hasSign() {\r\n if(this.param.taskObj.activityExtendAttributes) {\r\n let tmpObj = JSON.parse(this.param.taskObj.activityExtendAttributes)\r\n if(tmpObj.find(item => item.key == '签字')) {\r\n return tmpObj.find(item => item.key == '签字')\r\n }\r\n else {\r\n return false\r\n }\r\n }\r\n else {\r\n return false\r\n }\r\n },\r\n signRequired() {\r\n const fd = this.param.extendedProperties.find(i => {\r\n return i.name == 'signature'\r\n })\r\n return fd ? true : false\r\n // if(this.param.taskObj.activityExtendAttributes) {\r\n // let tmpObj = JSON.parse(this.param.taskObj.activityExtendAttributes)\r\n // if(tmpObj.find(item => item.key == '签字')) {\r\n // return tmpObj.find(item => item.key == '签字').value == '1'\r\n // }\r\n // else {\r\n // return false\r\n // }\r\n // }\r\n // else {\r\n // return false\r\n // }\r\n }\r\n },\r\n methods: {\r\n setItemRef(key) {\r\n this.userTaskListData[key] = \"userTask\" + key;\r\n return this.userTaskListData[key];\r\n },\r\n getProcessNode(o) {\r\n let obj = {};\r\n obj.humanPerformerName = o.userTaskModelDTO.humanPerformer.name;\r\n obj.id = o.id;\r\n obj.loopCardinality =\r\n o.loopCardinality || o.userTaskModelDTO.loopCardinality;\r\n obj.name = o.userTaskModelDTO.name;\r\n obj.type = o.type;\r\n obj.routeTxt = o.userTaskModelDTO.routeTxt;\r\n obj.participantList = o.userTaskModelDTO.participantList;\r\n obj.taskNode = this.param.taskNode;\r\n return obj;\r\n },\r\n isOption(humanPerformer) {\r\n return (\r\n humanPerformer == \"任意指定\" ||\r\n humanPerformer == \"固定部门\" ||\r\n humanPerformer == \"固定账户\" ||\r\n humanPerformer == \"固定单位\"\r\n );\r\n },\r\n\r\n getTreeData(item) {\r\n if (this.param.nextTaskNode) {\r\n if (item.userTaskModelDTO.humanPerformer.name == \"固定部门\") {\r\n return item.userTaskModelDTO.routeTxt.departmentIds.map((o) => {\r\n let obj = {};\r\n obj.id = o.rangeId;\r\n obj.leaf = false;\r\n obj.name = o.name;\r\n obj.orgType = $enum.UserType.部门;\r\n return obj;\r\n });\r\n } else if (item.userTaskModelDTO.humanPerformer.name == \"固定单位\") {\r\n return item.userTaskModelDTO.routeTxt.companyIds.map((o) => {\r\n let obj = {};\r\n obj.id = o.rangeId;\r\n obj.leaf = false;\r\n obj.name = o.name;\r\n obj.orgType = $enum.UserType.主体;\r\n return obj;\r\n });\r\n }\r\n }\r\n return undefined;\r\n },\r\n\r\n getRes() {\r\n return { targetUser: this.targetUser };\r\n },\r\n // 提交前的前置函数,loading函数,附件列表\r\n confirm(preposition, loading, attachment) {\r\n if (Array.isArray(attachment)) {\r\n this.param.attachment = attachment;\r\n }\r\n\r\n console.log(this.param, '测试', this.userTaskListData)\r\n if (!this.commentMsg && this.param.commentMsgRequired) {\r\n ElMessage.warning(\"请输入审批意见\");\r\n return false;\r\n }\r\n if (this.commentMsg.length > 200) {\r\n ElMessage.warning(\"审批意见不能超过200个字\");\r\n return false;\r\n }\r\n // let actionName = this.param.taskObj.commentModels.find(\r\n // (o) => o.isDefault\r\n // ).actionName;\r\n let param = {\r\n taskId: this.param.taskInstId,\r\n processInstanceId: this.param.processInstId,\r\n // actionName: actionName || \"\",\r\n commentMsg: this.commentMsg || \" \",\r\n comment: this.commentMsg || \" \",\r\n businessData: this.param.businessData,\r\n attachment: this.param.attachment,\r\n };\r\n for (let key in this.userTaskListData) {\r\n let o = this.userTaskListData[key];\r\n console.log(o, 'o', this.$refs[o])\r\n let refCom = this.$refs[o].$el ? this.$refs[o] : this.$refs[o][0];\r\n console.log(refCom, refCom.getValue);\r\n let res = refCom.getValue();\r\n console.log(res, 'res get value')\r\n if (!res) {\r\n return false;\r\n }\r\n let assignees = []\r\n // 已经选了人,则用返回的,不然用自己选的\r\n const nextTaskNode = this.param.nextTaskNode\r\n if (nextTaskNode.setPersonnel) {\r\n assignees = nextTaskNode.assignees || []\r\n } else {\r\n assignees = (refCom.targetUserList || []).map(i => ({\r\n id: i.id,\r\n name: i.name,\r\n }))\r\n }\r\n param.assignees = assignees\r\n\r\n param.multiNodeParticipant = {\r\n ...param.multiNodeParticipant,\r\n ...res.multiNodeParticipant,\r\n };\r\n param.vars = { ...param.vars, ...res.vars };\r\n }\r\n param.pass = true\r\n\r\n if (Date.now()) {\r\n console.log(param, 'end', this.param)\r\n // return;\r\n }\r\n // param.variables = {\r\n // wf_form_variable: ''\r\n // }\r\n if (this.param.getVars) {\r\n let vars = this.param.getVars();\r\n if (vars === false) return false;\r\n param.vars = { ...param.vars, ...vars };\r\n }\r\n if(this.signRequired) {\r\n this.confirmPreposition = preposition\r\n this.confirmLoading = loading\r\n this.signVisible = true\r\n return\r\n }\r\n loading();\r\n if (preposition) {\r\n preposition()\r\n .then((e) => {\r\n api.tis\r\n .complete(param)\r\n .then((res) => {\r\n if (res.code == $enum.apiCode.success) {\r\n if (e) e();\r\n this.$emit(\"success\");\r\n } else {\r\n this.$emit(\"fail\", res.msg);\r\n }\r\n })\r\n .catch(() => {\r\n this.$emit(\"fail\", \"\");\r\n });\r\n })\r\n .catch(() => {\r\n this.$emit(\"fail\", \"\");\r\n });\r\n } else {\r\n api.tis.complete(param).then((res) => {\r\n if (res.code == $enum.apiCode.success) {\r\n this.$emit(\"success\");\r\n } else {\r\n this.$emit(\"fail\", res.msg);\r\n }\r\n });\r\n }\r\n },\r\n confirmWithSign() {\r\n // let actionName = this.param.taskObj.commentModels.find(\r\n // (o) => o.isDefault\r\n // ).actionName;\r\n let param = {\r\n taskId: this.param.taskInstId,\r\n processInstanceId: this.param.processInstId,\r\n // actionName: actionName || \"\",\r\n commentMsg: this.commentMsg || \" \",\r\n comment: this.commentMsg || \" \",\r\n businessData: this.param.businessData,\r\n digitalSignature: {\r\n name: this.param.digitalSignature.name,\r\n url: this.param.digitalSignature.url,\r\n },\r\n attachment: this.param.attachment,\r\n };\r\n for (let key in this.userTaskListData) {\r\n let o = this.userTaskListData[key];\r\n let refCom = this.$refs[o].$el ? this.$refs[o] : this.$refs[o][0];\r\n console.log(refCom, refCom.getValue);\r\n let res = refCom.getValue();\r\n if (!res) {\r\n return false;\r\n }\r\n param.multiNodeParticipant = {\r\n ...param.multiNodeParticipant,\r\n ...res.multiNodeParticipant,\r\n };\r\n param.vars = { ...param.vars, ...res.vars };\r\n }\r\n if (this.param.getVars) {\r\n let vars = this.param.getVars();\r\n if (vars === false) return false;\r\n param.vars = { ...param.vars, ...vars };\r\n }\r\n param.pass = true\r\n this.confirmLoading();\r\n if (this.confirmPreposition) {\r\n this.confirmPreposition()\r\n .then((e) => {\r\n api.tis\r\n .complete(param)\r\n .then((res) => {\r\n if (res.code == $enum.apiCode.success) {\r\n if (e) e();\r\n this.$emit(\"success\");\r\n } else {\r\n this.$emit(\"fail\", res.msg);\r\n }\r\n })\r\n .catch(() => {\r\n this.$emit(\"fail\", \"\");\r\n });\r\n })\r\n .catch(() => {\r\n this.$emit(\"fail\", \"\");\r\n });\r\n } else {\r\n api.tis.complete(param).then((res) => {\r\n if (res.code == $enum.apiCode.success) {\r\n this.$emit(\"success\");\r\n } else {\r\n this.$emit(\"fail\", res.msg);\r\n }\r\n });\r\n }\r\n },\r\n toSign() {\r\n this.signVisible = true\r\n },\r\n handleSignature(e, needClose) {\r\n this.param.digitalSignature = e\r\n console.error(e, 'digitalSignature')\r\n if(needClose) {\r\n this.signVisible = false\r\n this.confirmWithSign()\r\n }\r\n },\r\n closeSign() {\r\n this.signVisible = false\r\n },\r\n noticeFail(msg) {\r\n ElMessage.warning(msg)\r\n }\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n@import \"./content.css\";\r\n.add-idea {\r\n display: flex;\r\n justify-content: end;\r\n}\r\n.add-idea span {\r\n color: #448ef6;\r\n cursor: pointer;\r\n}\r\n.sign-idea {\r\n display: flex;\r\n span {\r\n color: #448ef6;\r\n cursor: pointer;\r\n }\r\n}\r\n.sign-container {\r\n min-height: 60vh;\r\n}\r\n</style>\r\n"]}, media: undefined });
|
|
4965
|
+
inject("data-v-7a53cda3_0", { source: "\n@import \"./content.css\";\n.add-idea[data-v-7a53cda3] {\r\n display: flex;\r\n justify-content: end;\n}\n.add-idea span[data-v-7a53cda3] {\r\n color: #448ef6;\r\n cursor: pointer;\n}\n.sign-idea[data-v-7a53cda3] {\r\n display: flex;\nspan {\r\n color: #448ef6;\r\n cursor: pointer;\n}\n}\n.sign-container[data-v-7a53cda3] {\r\n min-height: 60vh;\n}\r\n", map: {"version":3,"sources":["C:\\cod\\items\\ui-process-pc\\vue2\\src\\components\\zjp_process\\operation\\complete.vue"],"names":[],"mappings":";AA6gBA,uBAAA;AACA;EACA,aAAA;EACA,oBAAA;AACA;AACA;EACA,cAAA;EACA,eAAA;AACA;AACA;EACA,aAAA;AACA;IACA,cAAA;IACA,eAAA;AACA;AACA;AACA;EACA,gBAAA;AACA","file":"complete.vue","sourcesContent":["<template>\r\n <el-form label-width=\"120px\" @submit.native.prevent status-icon>\r\n <template\r\n v-if=\"\r\n param.ProcessInsObj.processDefId !=\r\n 'obj_94014ede99b6495d8f6d5977314faa15'\r\n \"\r\n >\r\n <el-form-item label=\"快捷回复\">\r\n <el-radio-group v-model=\"commentMsg\">\r\n <el-radio label=\"同意\">同意</el-radio>\r\n <el-radio label=\"如拟\" v-if=\"param.showAsPlanned\">如拟</el-radio>\r\n <el-radio label=\"已阅\">已阅</el-radio>\r\n </el-radio-group>\r\n </el-form-item>\r\n <el-form-item v-if=\"param.showCommIdea\">\r\n <commIdea ref=\"commIdea\" @change=\"(e) => (commentMsg = e)\" />\r\n </el-form-item>\r\n <el-form-item\r\n label=\"审批意见\"\r\n :rules=\"[\r\n { required: param.commentMsgRequired, message: '审批意见不能为空' },\r\n ]\"\r\n >\r\n <el-input\r\n v-model=\"commentMsg\"\r\n :rows=\"5\"\r\n maxlength=\"200\"\r\n show-word-limit\r\n type=\"textarea\"\r\n resize=\"none\"\r\n placeholder=\"请输入审批意见\"\r\n class=\"formInput\"\r\n />\r\n <div class=\"add-idea\" v-if=\"param.showCommIdea\">\r\n <span @click=\"$refs['commIdea'].addIdea(commentMsg)\"\r\n >设置为常用意见</span\r\n >\r\n </div>\r\n </el-form-item>\r\n <!-- <el-form-item\r\n label=\"审批签字\"\r\n :rules=\"[\r\n { required: signRequired, message: '审批签字不能为空' },\r\n ]\"\r\n v-if=\"signRequired\"\r\n >\r\n <div class=\"sign-idea\">\r\n <span @click=\"toSign\">去签字</span>\r\n </div>\r\n </el-form-item> -->\r\n </template>\r\n <slot name=\"file\"></slot>\r\n <!-- <el-form-item label=\"下一步处理节点\" size=\"normal\"> </el-form-item> -->\r\n <template v-if=\"param.nextTaskNode && param.nextTaskNode.id && param.nextTaskNode.nodeType != 'parallelGateway' && param.nextTaskNode.nodeType != 'exclusiveGateway'\">\r\n <template v-if=\"param.nextTaskNode.nodeType != 'endEvent'\">\r\n <userTask\r\n :key=\"param.nextTaskNode.id\"\r\n :personType=\"param.nextTaskNode.personType || ''\"\r\n :personEntity=\"{}\"\r\n :process-node=\"{\r\n ...param.nextTaskNode,\r\n REQUIRED: param.nextTaskNode.setPersonnel == true && param.nextTaskNode.assignees && param.nextTaskNode.assignees.length > 0 ? false : true,\r\n }\"\r\n lv1label=\"下一节点名称\"\r\n :ref=\"setItemRef(param.nextTaskNode.id)\"\r\n :rules=\"[{ required: true, message: '请选择处理人' }]\"\r\n >\r\n </userTask>\r\n </template>\r\n <template v-else>\r\n <el-form-item label=\"下一节点名称\">\r\n <b style=\"font-size: 16px\">结束事件</b>\r\n </el-form-item>\r\n </template>\r\n </template>\r\n <!-- 复杂网关:不带branch, -->\r\n <template v-else-if=\"param.nextTaskNode.nodeType == 'exclusiveGateway' && param.outGatewayUserTaskModel && param.outGatewayUserTaskModel.length > 0\">\r\n <userTask\r\n v-for=\"item in param.outGatewayUserTaskModel\"\r\n :key=\"item.id\"\r\n :personType=\"param.personType\"\r\n :personEntity=\"param.personEntity\"\r\n :processNode=\"{ \r\n ...item,\r\n pType: param.nextTaskNode.nodeType,\r\n REQUIRED: item.setPersonnel == true && item.assignees && item.assignees.length > 0 ? false : true,\r\n }\"\r\n :ref=\"setItemRef(item.id)\"\r\n >\r\n </userTask>\r\n </template>\r\n <template v-else-if=\"param.outGatewayUserTaskModel && param.outGatewayUserTaskModel.length > 0\">\r\n <userTask\r\n v-for=\"item in param.outGatewayUserTaskModel\"\r\n :key=\"item.id\"\r\n :personType=\"param.personType\"\r\n :personEntity=\"param.personEntity\"\r\n :processNode=\"{ \r\n ...item,\r\n REQUIRED: item.setPersonnel == true && item.assignees && item.assignees.length > 0 ? false : true,\r\n }\"\r\n :ref=\"setItemRef(item.id)\"\r\n >\r\n </userTask>\r\n </template>\r\n <!-- 互斥网关,只有一个分支 -->\r\n <template v-else-if=\"param.nextTaskNode.nodeType == 'exclusiveGateway' && param.nextTaskNode.branches && param.nextTaskNode.branches.length == 1\">\r\n <template v-if=\"param.nextTaskNode.nodeType != 'endEvent'\">\r\n <userTask\r\n v-if=\"param.nextTaskNode.branches[0].nodeInfoDTO\"\r\n :key=\"param.nextTaskNode.branches[0].nodeInfoDTO.id\"\r\n :personType=\"param.nextTaskNode.branches[0].nodeInfoDTO.personType || ''\"\r\n :personEntity=\"{}\"\r\n :process-node=\"{\r\n ...param.nextTaskNode.branches[0].nodeInfoDTO,\r\n REQUIRED: param.nextTaskNode.branches[0].nodeInfoDTO.setPersonnel == true && param.nextTaskNode.branches[0].nodeInfoDTO.assignees && param.nextTaskNode.branches[0].nodeInfoDTO.assignees.length > 0 ? false : true,\r\n }\"\r\n lv1label=\"下一节点名称\"\r\n :ref=\"setItemRef(param.nextTaskNode.branches[0].nodeInfoDTO.id)\"\r\n :rules=\"[{ required: true, message: '请选择处理人' }]\"\r\n >\r\n </userTask>\r\n <userTask\r\n v-else\r\n :key=\"param.nextTaskNode.branches[0].id\"\r\n :personType=\"param.nextTaskNode.branches[0].personType || ''\"\r\n :personEntity=\"{}\"\r\n :process-node=\"{\r\n ...param.nextTaskNode.branches[0],\r\n REQUIRED: param.nextTaskNode.branches[0].setPersonnel == true && param.nextTaskNode.branches[0].assignees && param.nextTaskNode.branches[0].assignees.length > 0 ? false : true,\r\n }\"\r\n lv1label=\"下一节点名称\"\r\n :ref=\"setItemRef(param.nextTaskNode.branches[0].id)\"\r\n :rules=\"[{ required: true, message: '请选择处理人' }]\"\r\n >\r\n </userTask>\r\n </template>\r\n <template v-else>\r\n <el-form-item label=\"下一节点名称\">\r\n <b style=\"font-size: 16px\">结束事件</b>\r\n </el-form-item>\r\n </template>\r\n </template>\r\n <!-- 互斥网关,多个分支 -->\r\n <template v-else-if=\"param.nextTaskNode.nodeType == 'exclusiveGateway' && param.nextTaskNode.branches && param.nextTaskNode.branches.length > 1\">\r\n <template v-if=\"param.nextTaskNode.nodeType != 'endEvent'\">\r\n <userTask\r\n :key=\"param.nextTaskNode.id\"\r\n :personType=\"param.nextTaskNode.personType || ''\"\r\n :personEntity=\"{}\"\r\n :process-node=\"{\r\n ...param.nextTaskNode,\r\n REQUIRED: param.nextTaskNode.setPersonnel == true && param.nextTaskNode.assignees && param.nextTaskNode.assignees.length > 0 ? false : true,\r\n }\"\r\n lv1label=\"下一节点名称\"\r\n :ref=\"setItemRef(param.nextTaskNode.id)\"\r\n :rules=\"[{ required: true, message: '请选择处理人' }]\"\r\n >\r\n </userTask>\r\n </template>\r\n <template v-else>\r\n <el-form-item label=\"下一节点名称\">\r\n <b style=\"font-size: 16px\">结束事件</b>\r\n </el-form-item>\r\n </template>\r\n </template>\r\n <!-- 并行网关 -->\r\n <template v-else-if=\"param.nextTaskNode.nodeType == 'parallelGateway'\">\r\n <userTask\r\n v-for=\"item in param.nextTaskNode.branches\"\r\n :key=\"item.id\"\r\n :personType=\"param.personType || ''\"\r\n :personEntity=\"param.personEntity || {}\"\r\n :processNode=\"{ \r\n ...item,\r\n REQUIRED: item.setPersonnel == true && item.assignees && item.assignees.length > 0 ? false : true,\r\n }\"\r\n lv1label=\"下一节点名称\"\r\n :ref=\"setItemRef(item.id)\"\r\n :rules=\"[{ required: true, message: '请选择处理人' }]\"\r\n >\r\n </userTask>\r\n </template>\r\n \r\n\r\n <slot name=\"form\"></slot>\r\n\r\n <el-dialog title=\"签字\" :visible.sync=\"signVisible\" append-to-body width=\"800px\" @closed=\"closeSign\" :close-on-click-modal=\"false\">\r\n <div class=\"sign-container\">\r\n <TopSign @saveSignature=\"handleSignature\" @validateFail=\"noticeFail\">\r\n </TopSign>\r\n </div>\r\n </el-dialog>\r\n </el-form>\r\n</template>\r\n\r\n<script>\r\nimport * as $enum from \"../enum\";\r\nimport staffTree from \"../staff-tree.vue\";\r\nimport api from \"../api\";\r\nimport { Message as ElMessage } from \"element-ui\";\r\nimport userTask from \"./userTask.vue\";\r\nimport commIdea from \"./commIdea.vue\";\r\nimport TopSign from '../../TopSign/topSign.vue'\r\n\r\nexport default {\r\n components: { staffTree, userTask, commIdea, TopSign },\r\n props: {\r\n param: Object,\r\n },\r\n data() {\r\n return {\r\n commentMsg: \"\",\r\n targetUser: [],\r\n userTaskListData: {},\r\n outGatewayUserTaskModel: this.param.outGatewayUserTaskModel,\r\n Enum: $enum,\r\n signVisible: false,\r\n digitalSignature: '',\r\n confirmPreposition: false, \r\n confirmLoading: () => {}\r\n };\r\n },\r\n mounted() {\r\n if (\r\n this.param.ProcessInsObj.processDefId ==\r\n \"obj_94014ede99b6495d8f6d5977314faa15\"\r\n ) {\r\n this.commentMsg = \"同意\";\r\n }\r\n },\r\n computed: {\r\n hasSign() {\r\n if(this.param.taskObj.activityExtendAttributes) {\r\n let tmpObj = JSON.parse(this.param.taskObj.activityExtendAttributes)\r\n if(tmpObj.find(item => item.key == '签字')) {\r\n return tmpObj.find(item => item.key == '签字')\r\n }\r\n else {\r\n return false\r\n }\r\n }\r\n else {\r\n return false\r\n }\r\n },\r\n signRequired() {\r\n const fd = this.param.extendedProperties.find(i => {\r\n return i.name == 'signature'\r\n })\r\n return fd ? true : false\r\n // if(this.param.taskObj.activityExtendAttributes) {\r\n // let tmpObj = JSON.parse(this.param.taskObj.activityExtendAttributes)\r\n // if(tmpObj.find(item => item.key == '签字')) {\r\n // return tmpObj.find(item => item.key == '签字').value == '1'\r\n // }\r\n // else {\r\n // return false\r\n // }\r\n // }\r\n // else {\r\n // return false\r\n // }\r\n }\r\n },\r\n methods: {\r\n setItemRef(key) {\r\n this.userTaskListData[key] = \"userTask\" + key;\r\n return this.userTaskListData[key];\r\n },\r\n getProcessNode(o) {\r\n let obj = {};\r\n obj.humanPerformerName = o.userTaskModelDTO.humanPerformer.name;\r\n obj.id = o.id;\r\n obj.loopCardinality =\r\n o.loopCardinality || o.userTaskModelDTO.loopCardinality;\r\n obj.name = o.userTaskModelDTO.name;\r\n obj.type = o.type;\r\n obj.routeTxt = o.userTaskModelDTO.routeTxt;\r\n obj.participantList = o.userTaskModelDTO.participantList;\r\n obj.taskNode = this.param.taskNode;\r\n return obj;\r\n },\r\n isOption(humanPerformer) {\r\n return (\r\n humanPerformer == \"任意指定\" ||\r\n humanPerformer == \"固定部门\" ||\r\n humanPerformer == \"固定账户\" ||\r\n humanPerformer == \"固定单位\"\r\n );\r\n },\r\n\r\n getTreeData(item) {\r\n if (this.param.nextTaskNode) {\r\n if (item.userTaskModelDTO.humanPerformer.name == \"固定部门\") {\r\n return item.userTaskModelDTO.routeTxt.departmentIds.map((o) => {\r\n let obj = {};\r\n obj.id = o.rangeId;\r\n obj.leaf = false;\r\n obj.name = o.name;\r\n obj.orgType = $enum.UserType.部门;\r\n return obj;\r\n });\r\n } else if (item.userTaskModelDTO.humanPerformer.name == \"固定单位\") {\r\n return item.userTaskModelDTO.routeTxt.companyIds.map((o) => {\r\n let obj = {};\r\n obj.id = o.rangeId;\r\n obj.leaf = false;\r\n obj.name = o.name;\r\n obj.orgType = $enum.UserType.主体;\r\n return obj;\r\n });\r\n }\r\n }\r\n return undefined;\r\n },\r\n\r\n getRes() {\r\n return { targetUser: this.targetUser };\r\n },\r\n // 提交前的前置函数,loading函数,附件列表\r\n confirm(preposition, loading, attachment) {\r\n if (Array.isArray(attachment)) {\r\n this.param.attachment = attachment;\r\n }\r\n\r\n console.log(this.param, '测试', this.userTaskListData)\r\n if (!this.commentMsg && this.param.commentMsgRequired) {\r\n ElMessage.warning(\"请输入审批意见\");\r\n return false;\r\n }\r\n if (this.commentMsg.length > 200) {\r\n ElMessage.warning(\"审批意见不能超过200个字\");\r\n return false;\r\n }\r\n // let actionName = this.param.taskObj.commentModels.find(\r\n // (o) => o.isDefault\r\n // ).actionName;\r\n let param = {\r\n taskId: this.param.taskInstId,\r\n processInstanceId: this.param.processInstId,\r\n // actionName: actionName || \"\",\r\n commentMsg: this.commentMsg || \" \",\r\n comment: this.commentMsg || \" \",\r\n businessData: this.param.businessData,\r\n attachment: this.param.attachment,\r\n };\r\n for (let key in this.userTaskListData) {\r\n let o = this.userTaskListData[key];\r\n console.log(o, 'o', this.$refs[o])\r\n let refCom = this.$refs[o].$el ? this.$refs[o] : this.$refs[o][0];\r\n console.error('上传', refCom, refCom.getValue);\r\n let res = refCom.getValue();\r\n if (res && res.vars && this.param.incomingConditionItemList&& this.param.incomingConditionItemList.length > 0) {\r\n this.param.incomingConditionItemList.forEach(item => {\r\n if (!res.vars[item.itemName]) {\r\n res.vars[item.itemName] = ''\r\n }\r\n })\r\n }\r\n console.log(res, 'res get value')\r\n if (!res) {\r\n return false;\r\n }\r\n let assignees = []\r\n // 已经选了人,则用返回的,不然用自己选的\r\n const nextTaskNode = this.param.nextTaskNode\r\n if (nextTaskNode.setPersonnel) {\r\n assignees = nextTaskNode.assignees || []\r\n } else {\r\n assignees = (refCom.targetUserList || []).map(i => ({\r\n id: i.id,\r\n name: i.name,\r\n }))\r\n }\r\n param.assignees = assignees\r\n\r\n param.multiNodeParticipant = {\r\n ...param.multiNodeParticipant,\r\n ...res.multiNodeParticipant,\r\n };\r\n param.vars = { ...param.vars, ...res.vars };\r\n }\r\n param.pass = true\r\n\r\n if (Date.now()) {\r\n console.log(param, 'end', this.param)\r\n // return;\r\n }\r\n // param.variables = {\r\n // wf_form_variable: ''\r\n // }\r\n if (this.param.getVars) {\r\n let vars = this.param.getVars();\r\n if (vars === false) return false;\r\n param.vars = { ...param.vars, ...vars };\r\n }\r\n if(this.signRequired) {\r\n this.confirmPreposition = preposition\r\n this.confirmLoading = loading\r\n this.signVisible = true\r\n return\r\n }\r\n loading();\r\n if (preposition) {\r\n preposition()\r\n .then((e) => {\r\n api.tis\r\n .complete(param)\r\n .then((res) => {\r\n if (res.code == $enum.apiCode.success) {\r\n if (e) e();\r\n this.$emit(\"success\");\r\n } else {\r\n this.$emit(\"fail\", res.msg);\r\n }\r\n })\r\n .catch(() => {\r\n this.$emit(\"fail\", \"\");\r\n });\r\n })\r\n .catch(() => {\r\n this.$emit(\"fail\", \"\");\r\n });\r\n } else {\r\n api.tis.complete(param).then((res) => {\r\n if (res.code == $enum.apiCode.success) {\r\n this.$emit(\"success\");\r\n } else {\r\n this.$emit(\"fail\", res.msg);\r\n }\r\n });\r\n }\r\n },\r\n confirmWithSign() {\r\n // let actionName = this.param.taskObj.commentModels.find(\r\n // (o) => o.isDefault\r\n // ).actionName;\r\n let param = {\r\n taskId: this.param.taskInstId,\r\n processInstanceId: this.param.processInstId,\r\n // actionName: actionName || \"\",\r\n commentMsg: this.commentMsg || \" \",\r\n comment: this.commentMsg || \" \",\r\n businessData: this.param.businessData,\r\n digitalSignature: {\r\n name: this.param.digitalSignature.name,\r\n url: this.param.digitalSignature.url,\r\n },\r\n attachment: this.param.attachment,\r\n };\r\n for (let key in this.userTaskListData) {\r\n let o = this.userTaskListData[key];\r\n let refCom = this.$refs[o].$el ? this.$refs[o] : this.$refs[o][0];\r\n console.log(refCom, refCom.getValue);\r\n let res = refCom.getValue();\r\n if (!res) {\r\n return false;\r\n }\r\n param.multiNodeParticipant = {\r\n ...param.multiNodeParticipant,\r\n ...res.multiNodeParticipant,\r\n };\r\n param.vars = { ...param.vars, ...res.vars };\r\n }\r\n if (this.param.getVars) {\r\n let vars = this.param.getVars();\r\n if (vars === false) return false;\r\n param.vars = { ...param.vars, ...vars };\r\n }\r\n param.pass = true\r\n this.confirmLoading();\r\n if (this.confirmPreposition) {\r\n this.confirmPreposition()\r\n .then((e) => {\r\n api.tis\r\n .complete(param)\r\n .then((res) => {\r\n if (res.code == $enum.apiCode.success) {\r\n if (e) e();\r\n this.$emit(\"success\");\r\n } else {\r\n this.$emit(\"fail\", res.msg);\r\n }\r\n })\r\n .catch(() => {\r\n this.$emit(\"fail\", \"\");\r\n });\r\n })\r\n .catch(() => {\r\n this.$emit(\"fail\", \"\");\r\n });\r\n } else {\r\n api.tis.complete(param).then((res) => {\r\n if (res.code == $enum.apiCode.success) {\r\n this.$emit(\"success\");\r\n } else {\r\n this.$emit(\"fail\", res.msg);\r\n }\r\n });\r\n }\r\n },\r\n toSign() {\r\n this.signVisible = true\r\n },\r\n handleSignature(e, needClose) {\r\n this.param.digitalSignature = e\r\n console.error(e, 'digitalSignature')\r\n if(needClose) {\r\n this.signVisible = false\r\n this.confirmWithSign()\r\n }\r\n },\r\n closeSign() {\r\n this.signVisible = false\r\n },\r\n noticeFail(msg) {\r\n ElMessage.warning(msg)\r\n }\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n@import \"./content.css\";\r\n.add-idea {\r\n display: flex;\r\n justify-content: end;\r\n}\r\n.add-idea span {\r\n color: #448ef6;\r\n cursor: pointer;\r\n}\r\n.sign-idea {\r\n display: flex;\r\n span {\r\n color: #448ef6;\r\n cursor: pointer;\r\n }\r\n}\r\n.sign-container {\r\n min-height: 60vh;\r\n}\r\n</style>\r\n"]}, media: undefined });
|
|
4172
4966
|
|
|
4173
4967
|
};
|
|
4174
4968
|
/* scoped */
|
|
4175
|
-
const __vue_scope_id__$e = "data-v-
|
|
4969
|
+
const __vue_scope_id__$e = "data-v-7a53cda3";
|
|
4176
4970
|
/* module identifier */
|
|
4177
4971
|
const __vue_module_identifier__$e = undefined;
|
|
4178
4972
|
/* functional template */
|
|
@@ -7170,6 +7964,7 @@ var script$6 = {
|
|
|
7170
7964
|
},
|
|
7171
7965
|
data() {
|
|
7172
7966
|
return {
|
|
7967
|
+
scale: 1,
|
|
7173
7968
|
viewer: null,
|
|
7174
7969
|
loading: true
|
|
7175
7970
|
};
|
|
@@ -7191,6 +7986,18 @@ var script$6 = {
|
|
|
7191
7986
|
}
|
|
7192
7987
|
},
|
|
7193
7988
|
methods: {
|
|
7989
|
+
handleWheel(event) {
|
|
7990
|
+
// if (event.ctrlKey) {
|
|
7991
|
+
event.preventDefault();
|
|
7992
|
+
const delta = Math.sign(event.deltaY) * 0.1; // 标准化滚轮值
|
|
7993
|
+
this.scale = Math.max(0.5, Math.min(this.scale - delta, 3)); // 限制缩放范围0.5~3
|
|
7994
|
+
if (this.viewer) {
|
|
7995
|
+
const canvas = this.viewer.get('canvas');
|
|
7996
|
+
// 窗口大小变化时,让画布自适应并居中
|
|
7997
|
+
canvas.zoom(this.scale);
|
|
7998
|
+
}
|
|
7999
|
+
// }
|
|
8000
|
+
},
|
|
7194
8001
|
async getXml(id) {
|
|
7195
8002
|
console.log(this.isXml, 'isxml');
|
|
7196
8003
|
let res = {};
|
|
@@ -7242,7 +8049,8 @@ var script$6 = {
|
|
|
7242
8049
|
if (this.viewer) {
|
|
7243
8050
|
const canvas = this.viewer.get('canvas');
|
|
7244
8051
|
// 窗口大小变化时,让画布自适应并居中
|
|
7245
|
-
canvas.zoom('fit-viewport', 'auto');
|
|
8052
|
+
// canvas.zoom('fit-viewport', 'auto');
|
|
8053
|
+
canvas.zoom(1, 'auto');
|
|
7246
8054
|
}
|
|
7247
8055
|
},
|
|
7248
8056
|
// 添加节点颜色
|
|
@@ -7320,7 +8128,11 @@ var __vue_render__$6 = function () {
|
|
|
7320
8128
|
var _vm = this;
|
|
7321
8129
|
var _h = _vm.$createElement;
|
|
7322
8130
|
var _c = _vm._self._c || _h;
|
|
7323
|
-
return _c("div", {
|
|
8131
|
+
return _c("div", {
|
|
8132
|
+
ref: "container",
|
|
8133
|
+
staticClass: "bpmn-look",
|
|
8134
|
+
on: { wheel: _vm.handleWheel },
|
|
8135
|
+
})
|
|
7324
8136
|
};
|
|
7325
8137
|
var __vue_staticRenderFns__$6 = [];
|
|
7326
8138
|
__vue_render__$6._withStripped = true;
|
|
@@ -7328,11 +8140,11 @@ __vue_render__$6._withStripped = true;
|
|
|
7328
8140
|
/* style */
|
|
7329
8141
|
const __vue_inject_styles__$6 = function (inject) {
|
|
7330
8142
|
if (!inject) return
|
|
7331
|
-
inject("data-v-61a90f80_0", { source: "\n.bpmn-look[data-v-61a90f80] {\r\n width: 100%;\r\n height: 500px;\r\n background: white;\r\n background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHBhdHRlcm4gaWQ9ImEiIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgcGF0dGVyblVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHBhdGggZD0iTTAgMTBoNDBNMTAgMHY0ME0wIDIwaDQwTTIwIDB2NDBNMCAzMGg0ME0zMCAwdjQwIiBmaWxsPSJub25lIiBzdHJva2U9IiNlMGUwZTAiIG9wYWNpdHk9Ii4yIi8+PHBhdGggZD0iTTQwIDBIMHY0MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZTBlMGUwIi8+PC9wYXR0ZXJuPjwvZGVmcz48cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2EpIi8+PC9zdmc+) repeat !important;\r\n border: 1px solid #e0e0e0;\r\n border-radius: 4px;\n}\n[data-v-61a90f80] .nodePrimary:not(.djs-connection) .djs-visual> :nth-child(1) {\r\n fill: #409eff !important;\n}\n[data-v-61a90f80] .nodeSuccess:not(.djs-connection) .djs-visual> :nth-child(1) {\r\n fill: #67c23a !important;\n}\n[data-v-61a90f80] .nodeWarn:not(.djs-connection) .djs-visual> :nth-child(1) {\r\n fill: #e6a23c !important;\n}\n[data-v-61a90f80] .nodeError:not(.djs-connection) .djs-visual> :nth-child(1) {\r\n fill: #f56c6c !important;\n}\n[data-v-61a90f80] .linePrimary:not(.djs-shape) .djs-visual :last-child {\r\n stroke: #409eff !important;\n}\n[data-v-61a90f80] .lineSuccess:not(.djs-shape) .djs-visual :last-child {\r\n stroke: #67c23a !important;\n}\n[data-v-61a90f80] .lineWarn:not(.djs-shape) .djs-visual :last-child {\r\n stroke: #e6a23c !important;\n}\n[data-v-61a90f80] .lineError:not(.djs-shape) .djs-visual :last-child {\r\n stroke: #f56c6c !important;\n}\n[data-v-61a90f80] .djs-element.hover .djs-outline {\r\n visibility: visible;\r\n shape-rendering: geometricPrecision;\r\n stroke-dasharray: 3, 3;\r\n stroke: var(--el-color-info);\r\n stroke-width: 1px;\n}\n[data-v-61a90f80] .djs-element.selected .djs-outline {\r\n visibility: visible;\r\n shape-rendering: geometricPrecision;\r\n stroke-dasharray: 3, 3;\r\n stroke: var(--el-color-primary);\r\n stroke-width: 1px;\n}\n[data-v-61a90f80] .djs-tooltip {\r\n font-size: 13px;\r\n width: 120px;\r\n text-align: center;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n text-overflow: ellipsis;\n}\n[data-v-61a90f80] .djs-tooltip span {\r\n display: block;\r\n height: 1.2em;\r\n line-height: 1.2em;\n}\n[data-v-61a90f80] .djs-tooltip br {\r\n display: none;\n}\r\n", map: {"version":3,"sources":["C:\\cod\\items\\ui-process-pc\\vue2\\src\\components\\zjp_process\\bpmnLook.vue"],"names":[],"mappings":";AA+KA;EACA,WAAA;EACA,aAAA;EACA,iBAAA;EACA,iiBAAA;EACA,yBAAA;EACA,kBAAA;AACA;AAEA;EACA,wBAAA;AACA;AAEA;EACA,wBAAA;AACA;AAEA;EACA,wBAAA;AACA;AAEA;EACA,wBAAA;AACA;AAEA;EACA,0BAAA;AACA;AAEA;EACA,0BAAA;AACA;AAEA;EACA,0BAAA;AACA;AAEA;EACA,0BAAA;AACA;AAEA;EACA,mBAAA;EACA,mCAAA;EACA,sBAAA;EACA,4BAAA;EACA,iBAAA;AACA;AAEA;EACA,mBAAA;EACA,mCAAA;EACA,sBAAA;EACA,+BAAA;EACA,iBAAA;AACA;AAEA;EACA,eAAA;EACA,YAAA;EACA,kBAAA;EACA,gBAAA;EACA,mBAAA;EACA,uBAAA;AACA;AAEA;EACA,cAAA;EACA,aAAA;EACA,kBAAA;AACA;AACA;EACA,aAAA;AACA","file":"bpmnLook.vue","sourcesContent":["<template>\r\n <div ref=\"container\" class=\"bpmn-look\"></div>\r\n</template>\r\n\r\n<script>\r\nimport BpmnViewer from 'bpmn-js/lib/Viewer';\r\nimport MoveCanvasModule from 'diagram-js/lib/navigation/movecanvas'\r\nimport tooltips from \"diagram-js/lib/features/tooltips\";\r\nimport { handleResolveFlows } from './utils'\r\n// 导入api,在引用组件时会报错:Unknown custom element: <bpmn-look> - did you register the component correctly? For recursive components, make sure to provide the \"name\" option.\r\n// import api from \"./api\";\r\n\r\nexport default {\r\n name: 'bpmn-look',\r\n props: {\r\n diagram: {\r\n type: String,\r\n default: '',\r\n required: true\r\n },\r\n approvalData: {\r\n type: Array,\r\n default: () => ([]),\r\n },\r\n isXml: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n },\r\n data() {\r\n return {\r\n viewer: null,\r\n loading: true\r\n };\r\n },\r\n mounted() {\r\n this.initViewer();\r\n window.addEventListener('resize', this.canvasResize);\r\n },\r\n watch: {\r\n diagram: {\r\n async handler(newVal) {\r\n console.log(newVal.length, 'new')\r\n let xml = newVal\r\n if (xml && this.isXml) {\r\n this.loadXml(xml);\r\n }\r\n },\r\n immediate: true,\r\n }\r\n },\r\n methods: {\r\n async getXml(id) {\r\n console.log(this.isXml, 'isxml')\r\n let res = {}\r\n let xml = ''\r\n try {\r\n res = await api.repository.getXmlByProcessDefId({ processDefId: id })\r\n console.log(res, 'res')\r\n if (res.code == 200) {\r\n xml = res.data;\r\n }\r\n } catch (e) {\r\n console.error(e)\r\n }\r\n return xml;\r\n },\r\n async initViewer() {\r\n if (this.viewer) {\r\n this.viewer.destroy();\r\n }\r\n // 打包的问题,读取不到模块的处理\r\n const View = Object.prototype.toString.call(BpmnViewer) == '[object Function]' ? BpmnViewer : BpmnViewer.default\r\n const Tooltips = Object.prototype.toString.call(tooltips) == '[object Object]' ? tooltips : tooltips.default\r\n const MMoveCanvasModule = Object.prototype.toString.call(MoveCanvasModule) == '[object Object]' ? MoveCanvasModule : MoveCanvasModule.default\r\n console.log(MoveCanvasModule, Object.prototype.toString.call(MoveCanvasModule), 'MoveCanvasModule')\r\n\r\n\r\n this.viewer = new View({\r\n container: this.$refs.container,\r\n additionalModules: [\r\n Tooltips,\r\n MMoveCanvasModule, // 移动整个画布\r\n // {\r\n // textRenderer: ['type', new TextRenderer({ defaultSize: { fontSize: 12 } })]\r\n // }\r\n ],\r\n });\r\n // 画布居中,需要在importXml之前\r\n this.viewer.on('import.done', ({ error }) => {\r\n if (!error) {\r\n console.log(1)\r\n // 画布居中\r\n this.canvasResize()\r\n // 给画布添加审批数据\r\n this.addApprovalData()\r\n }\r\n });\r\n },\r\n canvasResize() {\r\n if (this.viewer) {\r\n const canvas = this.viewer.get('canvas');\r\n // 窗口大小变化时,让画布自适应并居中\r\n canvas.zoom('fit-viewport', 'auto');\r\n }\r\n },\r\n // 添加节点颜色\r\n setNodeColor(nodes) {\r\n const canvas = this.viewer.get(\"canvas\");\r\n const elementRegistry = this.viewer.get(\"elementRegistry\");\r\n const tooltips = this.viewer.get(\"tooltips\");\r\n nodes.forEach((n) => {\r\n if (n.id && n.class) {\r\n canvas.addMarker(n.id, n.class);\r\n }\r\n if (n.id && n.tooltip) {\r\n const node = elementRegistry.get(n.id);\r\n if (node) {\r\n let { x, y, type } = node;\r\n if ([\"bpmn:StartEvent\", \"bpmn:EndEvent\"].includes(type)) {\r\n x = x - 45;\r\n y = y + 65;\r\n } else if ([\"bpmn:UserTask\"].includes(type)) {\r\n x = x - 10;\r\n y = y + 90;\r\n }\r\n tooltips.add({\r\n position: { x, y },\r\n html: n.tooltip,\r\n });\r\n }\r\n }\r\n });\r\n },\r\n addApprovalData() {\r\n console.log(this.approvalData, 'data')\r\n if (!this.approvalData || this.approvalData.length == 0) return;\r\n const flows = handleResolveFlows(this.approvalData)\r\n console.log(flows, 'flows')\r\n if (flows && flows.length > 0) {\r\n this.setNodeColor(flows);\r\n }\r\n },\r\n // 加载xml\r\n async loadXml(xml) {\r\n if (!this.viewer) {\r\n await this.initViewer();\r\n }\r\n try {\r\n // 尝试导入 XML\r\n console.log(xml.length)\r\n const { warnings } = await this.viewer.importXML(xml);\r\n console.log(warnings, 'warningds')\r\n if (warnings.length) {\r\n // 有警告信息时触发 warning 事件\r\n this.$emit('warning', warnings);\r\n }\r\n } catch (error) {\r\n // 导入失败时触发 error 事件\r\n this.$emit('error', {\r\n message: 'XML 加载失败',\r\n detail: error.message\r\n });\r\n console.error('XML 加载失败:', error);\r\n }\r\n }\r\n },\r\n beforeDestroy() {\r\n window.removeEventListener('resize', this.canvasResize);\r\n this.viewer && this.viewer.destroy();\r\n }\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.bpmn-look {\r\n width: 100%;\r\n height: 500px;\r\n background: white;\r\n background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHBhdHRlcm4gaWQ9ImEiIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgcGF0dGVyblVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHBhdGggZD0iTTAgMTBoNDBNMTAgMHY0ME0wIDIwaDQwTTIwIDB2NDBNMCAzMGg0ME0zMCAwdjQwIiBmaWxsPSJub25lIiBzdHJva2U9IiNlMGUwZTAiIG9wYWNpdHk9Ii4yIi8+PHBhdGggZD0iTTQwIDBIMHY0MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZTBlMGUwIi8+PC9wYXR0ZXJuPjwvZGVmcz48cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2EpIi8+PC9zdmc+) repeat !important;\r\n border: 1px solid #e0e0e0;\r\n border-radius: 4px;\r\n}\r\n\r\n::v-deep .nodePrimary:not(.djs-connection) .djs-visual> :nth-child(1) {\r\n fill: #409eff !important;\r\n}\r\n\r\n::v-deep .nodeSuccess:not(.djs-connection) .djs-visual> :nth-child(1) {\r\n fill: #67c23a !important;\r\n}\r\n\r\n::v-deep .nodeWarn:not(.djs-connection) .djs-visual> :nth-child(1) {\r\n fill: #e6a23c !important;\r\n}\r\n\r\n::v-deep .nodeError:not(.djs-connection) .djs-visual> :nth-child(1) {\r\n fill: #f56c6c !important;\r\n}\r\n\r\n::v-deep .linePrimary:not(.djs-shape) .djs-visual :last-child {\r\n stroke: #409eff !important;\r\n}\r\n\r\n::v-deep .lineSuccess:not(.djs-shape) .djs-visual :last-child {\r\n stroke: #67c23a !important;\r\n}\r\n\r\n::v-deep .lineWarn:not(.djs-shape) .djs-visual :last-child {\r\n stroke: #e6a23c !important;\r\n}\r\n\r\n::v-deep .lineError:not(.djs-shape) .djs-visual :last-child {\r\n stroke: #f56c6c !important;\r\n}\r\n\r\n::v-deep .djs-element.hover .djs-outline {\r\n visibility: visible;\r\n shape-rendering: geometricPrecision;\r\n stroke-dasharray: 3, 3;\r\n stroke: var(--el-color-info);\r\n stroke-width: 1px;\r\n}\r\n\r\n::v-deep .djs-element.selected .djs-outline {\r\n visibility: visible;\r\n shape-rendering: geometricPrecision;\r\n stroke-dasharray: 3, 3;\r\n stroke: var(--el-color-primary);\r\n stroke-width: 1px;\r\n}\r\n\r\n::v-deep .djs-tooltip {\r\n font-size: 13px;\r\n width: 120px;\r\n text-align: center;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n text-overflow: ellipsis;\r\n}\r\n\r\n::v-deep .djs-tooltip span {\r\n display: block;\r\n height: 1.2em;\r\n line-height: 1.2em;\r\n}\r\n::v-deep .djs-tooltip br {\r\n display: none;\r\n}\r\n</style>"]}, media: undefined });
|
|
8143
|
+
inject("data-v-0aaf0421_0", { source: "\n.bpmn-look[data-v-0aaf0421] {\r\n width: 100%;\r\n height: 500px;\r\n background: white;\r\n background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHBhdHRlcm4gaWQ9ImEiIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgcGF0dGVyblVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHBhdGggZD0iTTAgMTBoNDBNMTAgMHY0ME0wIDIwaDQwTTIwIDB2NDBNMCAzMGg0ME0zMCAwdjQwIiBmaWxsPSJub25lIiBzdHJva2U9IiNlMGUwZTAiIG9wYWNpdHk9Ii4yIi8+PHBhdGggZD0iTTQwIDBIMHY0MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZTBlMGUwIi8+PC9wYXR0ZXJuPjwvZGVmcz48cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2EpIi8+PC9zdmc+) repeat !important;\r\n border: 1px solid #e0e0e0;\r\n border-radius: 4px;\n}\n[data-v-0aaf0421] .nodePrimary:not(.djs-connection) .djs-visual> :nth-child(1) {\r\n fill: #409eff !important;\n}\n[data-v-0aaf0421] .nodeSuccess:not(.djs-connection) .djs-visual> :nth-child(1) {\r\n fill: #67c23a !important;\n}\n[data-v-0aaf0421] .nodeWarn:not(.djs-connection) .djs-visual> :nth-child(1) {\r\n fill: #e6a23c !important;\n}\n[data-v-0aaf0421] .nodeError:not(.djs-connection) .djs-visual> :nth-child(1) {\r\n fill: #f56c6c !important;\n}\n[data-v-0aaf0421] .linePrimary:not(.djs-shape) .djs-visual :last-child {\r\n stroke: #409eff !important;\n}\n[data-v-0aaf0421] .lineSuccess:not(.djs-shape) .djs-visual :last-child {\r\n stroke: #67c23a !important;\n}\n[data-v-0aaf0421] .lineWarn:not(.djs-shape) .djs-visual :last-child {\r\n stroke: #e6a23c !important;\n}\n[data-v-0aaf0421] .lineError:not(.djs-shape) .djs-visual :last-child {\r\n stroke: #f56c6c !important;\n}\n[data-v-0aaf0421] .djs-element.hover .djs-outline {\r\n visibility: visible;\r\n shape-rendering: geometricPrecision;\r\n stroke-dasharray: 3, 3;\r\n stroke: var(--el-color-info);\r\n stroke-width: 1px;\n}\n[data-v-0aaf0421] .djs-element.selected .djs-outline {\r\n visibility: visible;\r\n shape-rendering: geometricPrecision;\r\n stroke-dasharray: 3, 3;\r\n stroke: var(--el-color-primary);\r\n stroke-width: 1px;\n}\n[data-v-0aaf0421] .djs-tooltip {\r\n font-size: 13px;\r\n width: 120px;\r\n text-align: center;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n text-overflow: ellipsis;\n}\n[data-v-0aaf0421] .djs-tooltip span {\r\n display: block;\r\n height: 1.2em;\r\n line-height: 1.2em;\n}\n[data-v-0aaf0421] .djs-tooltip br {\r\n display: none;\n}\r\n", map: {"version":3,"sources":["C:\\cod\\items\\ui-process-pc\\vue2\\src\\components\\zjp_process\\bpmnLook.vue"],"names":[],"mappings":";AA6LA;EACA,WAAA;EACA,aAAA;EACA,iBAAA;EACA,iiBAAA;EACA,yBAAA;EACA,kBAAA;AACA;AAEA;EACA,wBAAA;AACA;AAEA;EACA,wBAAA;AACA;AAEA;EACA,wBAAA;AACA;AAEA;EACA,wBAAA;AACA;AAEA;EACA,0BAAA;AACA;AAEA;EACA,0BAAA;AACA;AAEA;EACA,0BAAA;AACA;AAEA;EACA,0BAAA;AACA;AAEA;EACA,mBAAA;EACA,mCAAA;EACA,sBAAA;EACA,4BAAA;EACA,iBAAA;AACA;AAEA;EACA,mBAAA;EACA,mCAAA;EACA,sBAAA;EACA,+BAAA;EACA,iBAAA;AACA;AAEA;EACA,eAAA;EACA,YAAA;EACA,kBAAA;EACA,gBAAA;EACA,mBAAA;EACA,uBAAA;AACA;AAEA;EACA,cAAA;EACA,aAAA;EACA,kBAAA;AACA;AACA;EACA,aAAA;AACA","file":"bpmnLook.vue","sourcesContent":["<template>\r\n <div ref=\"container\" class=\"bpmn-look\" @wheel=\"handleWheel\"></div>\r\n</template>\r\n\r\n<script>\r\nimport BpmnViewer from 'bpmn-js/lib/Viewer';\r\nimport MoveCanvasModule from 'diagram-js/lib/navigation/movecanvas'\r\nimport tooltips from \"diagram-js/lib/features/tooltips\";\r\nimport { handleResolveFlows } from './utils'\r\n// 导入api,在引用组件时会报错:Unknown custom element: <bpmn-look> - did you register the component correctly? For recursive components, make sure to provide the \"name\" option.\r\n// import api from \"./api\";\r\n\r\nexport default {\r\n name: 'bpmn-look',\r\n props: {\r\n diagram: {\r\n type: String,\r\n default: '',\r\n required: true\r\n },\r\n approvalData: {\r\n type: Array,\r\n default: () => ([]),\r\n },\r\n isXml: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n },\r\n data() {\r\n return {\r\n scale: 1,\r\n viewer: null,\r\n loading: true\r\n };\r\n },\r\n mounted() {\r\n this.initViewer();\r\n window.addEventListener('resize', this.canvasResize);\r\n },\r\n watch: {\r\n diagram: {\r\n async handler(newVal) {\r\n console.log(newVal.length, 'new')\r\n let xml = newVal\r\n if (xml && this.isXml) {\r\n this.loadXml(xml);\r\n }\r\n },\r\n immediate: true,\r\n }\r\n },\r\n methods: {\r\n handleWheel(event) {\r\n // if (event.ctrlKey) {\r\n event.preventDefault();\r\n const delta = Math.sign(event.deltaY) * 0.1; // 标准化滚轮值\r\n this.scale = Math.max(0.5, Math.min(this.scale - delta, 3)); // 限制缩放范围0.5~3\r\n if (this.viewer) {\r\n const canvas = this.viewer.get('canvas');\r\n // 窗口大小变化时,让画布自适应并居中\r\n canvas.zoom(this.scale);\r\n }\r\n // }\r\n },\r\n async getXml(id) {\r\n console.log(this.isXml, 'isxml')\r\n let res = {}\r\n let xml = ''\r\n try {\r\n res = await api.repository.getXmlByProcessDefId({ processDefId: id })\r\n console.log(res, 'res')\r\n if (res.code == 200) {\r\n xml = res.data;\r\n }\r\n } catch (e) {\r\n console.error(e)\r\n }\r\n return xml;\r\n },\r\n async initViewer() {\r\n if (this.viewer) {\r\n this.viewer.destroy();\r\n }\r\n // 打包的问题,读取不到模块的处理\r\n const View = Object.prototype.toString.call(BpmnViewer) == '[object Function]' ? BpmnViewer : BpmnViewer.default\r\n const Tooltips = Object.prototype.toString.call(tooltips) == '[object Object]' ? tooltips : tooltips.default\r\n const MMoveCanvasModule = Object.prototype.toString.call(MoveCanvasModule) == '[object Object]' ? MoveCanvasModule : MoveCanvasModule.default\r\n console.log(MoveCanvasModule, Object.prototype.toString.call(MoveCanvasModule), 'MoveCanvasModule')\r\n\r\n\r\n this.viewer = new View({\r\n container: this.$refs.container,\r\n additionalModules: [\r\n Tooltips,\r\n MMoveCanvasModule, // 移动整个画布\r\n // {\r\n // textRenderer: ['type', new TextRenderer({ defaultSize: { fontSize: 12 } })]\r\n // }\r\n ],\r\n });\r\n // 画布居中,需要在importXml之前\r\n this.viewer.on('import.done', ({ error }) => {\r\n if (!error) {\r\n console.log(1)\r\n // 画布居中\r\n this.canvasResize()\r\n // 给画布添加审批数据\r\n this.addApprovalData()\r\n }\r\n });\r\n },\r\n canvasResize() {\r\n if (this.viewer) {\r\n const canvas = this.viewer.get('canvas');\r\n // 窗口大小变化时,让画布自适应并居中\r\n // canvas.zoom('fit-viewport', 'auto');\r\n canvas.zoom(1, 'auto');\r\n }\r\n },\r\n // 添加节点颜色\r\n setNodeColor(nodes) {\r\n const canvas = this.viewer.get(\"canvas\");\r\n const elementRegistry = this.viewer.get(\"elementRegistry\");\r\n const tooltips = this.viewer.get(\"tooltips\");\r\n nodes.forEach((n) => {\r\n if (n.id && n.class) {\r\n canvas.addMarker(n.id, n.class);\r\n }\r\n if (n.id && n.tooltip) {\r\n const node = elementRegistry.get(n.id);\r\n if (node) {\r\n let { x, y, type } = node;\r\n if ([\"bpmn:StartEvent\", \"bpmn:EndEvent\"].includes(type)) {\r\n x = x - 45;\r\n y = y + 65;\r\n } else if ([\"bpmn:UserTask\"].includes(type)) {\r\n x = x - 10;\r\n y = y + 90;\r\n }\r\n tooltips.add({\r\n position: { x, y },\r\n html: n.tooltip,\r\n });\r\n }\r\n }\r\n });\r\n },\r\n addApprovalData() {\r\n console.log(this.approvalData, 'data')\r\n if (!this.approvalData || this.approvalData.length == 0) return;\r\n const flows = handleResolveFlows(this.approvalData)\r\n console.log(flows, 'flows')\r\n if (flows && flows.length > 0) {\r\n this.setNodeColor(flows);\r\n }\r\n },\r\n // 加载xml\r\n async loadXml(xml) {\r\n if (!this.viewer) {\r\n await this.initViewer();\r\n }\r\n try {\r\n // 尝试导入 XML\r\n console.log(xml.length)\r\n const { warnings } = await this.viewer.importXML(xml);\r\n console.log(warnings, 'warningds')\r\n if (warnings.length) {\r\n // 有警告信息时触发 warning 事件\r\n this.$emit('warning', warnings);\r\n }\r\n } catch (error) {\r\n // 导入失败时触发 error 事件\r\n this.$emit('error', {\r\n message: 'XML 加载失败',\r\n detail: error.message\r\n });\r\n console.error('XML 加载失败:', error);\r\n }\r\n }\r\n },\r\n beforeDestroy() {\r\n window.removeEventListener('resize', this.canvasResize);\r\n this.viewer && this.viewer.destroy();\r\n }\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.bpmn-look {\r\n width: 100%;\r\n height: 500px;\r\n background: white;\r\n background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHBhdHRlcm4gaWQ9ImEiIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgcGF0dGVyblVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHBhdGggZD0iTTAgMTBoNDBNMTAgMHY0ME0wIDIwaDQwTTIwIDB2NDBNMCAzMGg0ME0zMCAwdjQwIiBmaWxsPSJub25lIiBzdHJva2U9IiNlMGUwZTAiIG9wYWNpdHk9Ii4yIi8+PHBhdGggZD0iTTQwIDBIMHY0MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZTBlMGUwIi8+PC9wYXR0ZXJuPjwvZGVmcz48cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2EpIi8+PC9zdmc+) repeat !important;\r\n border: 1px solid #e0e0e0;\r\n border-radius: 4px;\r\n}\r\n\r\n::v-deep .nodePrimary:not(.djs-connection) .djs-visual> :nth-child(1) {\r\n fill: #409eff !important;\r\n}\r\n\r\n::v-deep .nodeSuccess:not(.djs-connection) .djs-visual> :nth-child(1) {\r\n fill: #67c23a !important;\r\n}\r\n\r\n::v-deep .nodeWarn:not(.djs-connection) .djs-visual> :nth-child(1) {\r\n fill: #e6a23c !important;\r\n}\r\n\r\n::v-deep .nodeError:not(.djs-connection) .djs-visual> :nth-child(1) {\r\n fill: #f56c6c !important;\r\n}\r\n\r\n::v-deep .linePrimary:not(.djs-shape) .djs-visual :last-child {\r\n stroke: #409eff !important;\r\n}\r\n\r\n::v-deep .lineSuccess:not(.djs-shape) .djs-visual :last-child {\r\n stroke: #67c23a !important;\r\n}\r\n\r\n::v-deep .lineWarn:not(.djs-shape) .djs-visual :last-child {\r\n stroke: #e6a23c !important;\r\n}\r\n\r\n::v-deep .lineError:not(.djs-shape) .djs-visual :last-child {\r\n stroke: #f56c6c !important;\r\n}\r\n\r\n::v-deep .djs-element.hover .djs-outline {\r\n visibility: visible;\r\n shape-rendering: geometricPrecision;\r\n stroke-dasharray: 3, 3;\r\n stroke: var(--el-color-info);\r\n stroke-width: 1px;\r\n}\r\n\r\n::v-deep .djs-element.selected .djs-outline {\r\n visibility: visible;\r\n shape-rendering: geometricPrecision;\r\n stroke-dasharray: 3, 3;\r\n stroke: var(--el-color-primary);\r\n stroke-width: 1px;\r\n}\r\n\r\n::v-deep .djs-tooltip {\r\n font-size: 13px;\r\n width: 120px;\r\n text-align: center;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n text-overflow: ellipsis;\r\n}\r\n\r\n::v-deep .djs-tooltip span {\r\n display: block;\r\n height: 1.2em;\r\n line-height: 1.2em;\r\n}\r\n::v-deep .djs-tooltip br {\r\n display: none;\r\n}\r\n</style>"]}, media: undefined });
|
|
7332
8144
|
|
|
7333
8145
|
};
|
|
7334
8146
|
/* scoped */
|
|
7335
|
-
const __vue_scope_id__$6 = "data-v-
|
|
8147
|
+
const __vue_scope_id__$6 = "data-v-0aaf0421";
|
|
7336
8148
|
/* module identifier */
|
|
7337
8149
|
const __vue_module_identifier__$6 = undefined;
|
|
7338
8150
|
/* functional template */
|
|
@@ -7821,6 +8633,7 @@ var script$5 = {
|
|
|
7821
8633
|
// emits: ['update:modelValue', "getData", "change", "changeGetData"],
|
|
7822
8634
|
data() {
|
|
7823
8635
|
return {
|
|
8636
|
+
incomingConditionItemList: [],
|
|
7824
8637
|
// 流程信息
|
|
7825
8638
|
deptId: '',
|
|
7826
8639
|
initProcessData: {
|
|
@@ -7922,6 +8735,7 @@ var script$5 = {
|
|
|
7922
8735
|
this.customBtns = [];
|
|
7923
8736
|
this.absoluteBtns = { inside: [], outside: [] };
|
|
7924
8737
|
this.activeName = this.tabs.length > 0 ? this.tabs[0]["name"] : "";
|
|
8738
|
+
console.error(this.activeName, 'this.activeName');
|
|
7925
8739
|
// 获取流程节点,流程图,流程实例,流程审批
|
|
7926
8740
|
this.getProcessInfo();
|
|
7927
8741
|
if (Date.now()) return;
|
|
@@ -8298,7 +9112,22 @@ var script$5 = {
|
|
|
8298
9112
|
console.error(e);
|
|
8299
9113
|
res1 = {};
|
|
8300
9114
|
}
|
|
8301
|
-
|
|
9115
|
+
console.log(res1, 'res ');
|
|
9116
|
+
|
|
9117
|
+
|
|
9118
|
+
let nextTaskNode = res1.data || {};
|
|
9119
|
+
|
|
9120
|
+
// 复杂网关分支:
|
|
9121
|
+
if (res1.code == 200 && !res1.data.evaluation) {
|
|
9122
|
+
this.incomingConditionItemList = [];
|
|
9123
|
+
nextTaskNode.branches = await this.getOutgoingProcessNode(
|
|
9124
|
+
this.absoluteTaskId,
|
|
9125
|
+
res1.data.id
|
|
9126
|
+
);
|
|
9127
|
+
}
|
|
9128
|
+
|
|
9129
|
+
console.log(nextTaskNode, 'nextTaskNode');
|
|
9130
|
+
|
|
8302
9131
|
console.log(nextTaskNode, 'next');
|
|
8303
9132
|
if (nextTaskNode.id && !nextTaskNode.setPersonnel) {
|
|
8304
9133
|
const nodeUserParams = getNodeUserParams(nextTaskNode);
|
|
@@ -8341,6 +9170,7 @@ var script$5 = {
|
|
|
8341
9170
|
this.operationParam.taskInstId = this.absoluteTaskId;
|
|
8342
9171
|
// this.operationParam.taskDeftId = this.task.activityDefId;
|
|
8343
9172
|
this.operationParam.nextTaskNode = this.nextTaskNode;
|
|
9173
|
+
this.operationParam.incomingConditionItemList = this.incomingConditionItemList;
|
|
8344
9174
|
this.operationParam.variables = (this.processData.process || {}).variables || {};
|
|
8345
9175
|
this.operationParam.extendedProperties = (this.processData.form || {}).extendedProperties || [];
|
|
8346
9176
|
this.operationParam.taskObj = this.taskObj;
|
|
@@ -8440,9 +9270,14 @@ var script$5 = {
|
|
|
8440
9270
|
if (res.data) {
|
|
8441
9271
|
for (let i = 0; i < res.data.length; i++) {
|
|
8442
9272
|
let o = res.data[i];
|
|
8443
|
-
if (o.
|
|
8444
|
-
o.
|
|
8445
|
-
|
|
9273
|
+
if (o.incomingConditionItemList && o.incomingConditionItemList.length !== 0) {
|
|
9274
|
+
o.nodeInfoDTO.incomingConditionItemList = o.incomingConditionItemList;
|
|
9275
|
+
console.error(o.incomingConditionItemList, 'o.incomingConditionItemList');
|
|
9276
|
+
this.incomingConditionItemList.push(...o.incomingConditionItemList);
|
|
9277
|
+
}
|
|
9278
|
+
if (o.nodeInfoDTO.nodeType != 'userTask') {
|
|
9279
|
+
o.nodeInfoDTO.branches = await this.getOutgoingProcessNode(taskId, o.nodeInfoDTO.id);
|
|
9280
|
+
|
|
8446
9281
|
}
|
|
8447
9282
|
if (
|
|
8448
9283
|
res.data[i]["type"] != "endEvent" &&
|
|
@@ -9588,11 +10423,11 @@ __vue_render__$5._withStripped = true;
|
|
|
9588
10423
|
/* style */
|
|
9589
10424
|
const __vue_inject_styles__$5 = function (inject) {
|
|
9590
10425
|
if (!inject) return
|
|
9591
|
-
inject("data-v-cebc4a92_0", { source: "@charset \"UTF-8\";\n.operation-box[data-v-cebc4a92] {\n max-height: var(--dynamic-ctx-height);\n overflow: auto;\n padding-right: 20px;\n}\n.el-dropdown-menu__item[data-v-cebc4a92] {\n min-width: 140px;\n border-bottom: 1px solid #e8e8e8;\n}\n.el-dropdown-menu__item .el-button--text[data-v-cebc4a92] {\n color: #333 !important;\n}\n.el-dropdown-menu__item:hover .el-button--text[data-v-cebc4a92] {\n color: #1389ff !important;\n}\n.el-dropdown-menu__item[data-v-cebc4a92]:last-child {\n border: none !important;\n}\n.el-dropdown-menu[data-v-cebc4a92] {\n padding-bottom: 30px;\n}\n.mianContent > .tabs > .demo-tabs[data-v-cebc4a92] > .el-tabs__header {\n position: sticky;\n top: -20px;\n background-color: #fff;\n z-index: 1997;\n}\n.top-tabs[data-v-cebc4a92] {\n position: fixed;\n top: 62px;\n background-color: #fff;\n right: 0px;\n z-index: 1997;\n}\n.mianContent[data-v-cebc4a92] {\n height: 100%;\n overflow: hidden;\n position: relative;\n display: flex;\n flex-direction: column;\n /* // margin-bottom: 10px; */\n}\n.mianContent .demo-tabs[data-v-cebc4a92] {\n flex: 1;\n height: 0;\n display: flex;\n flex-direction: column;\n}\n.mianContent .demo-tabs[data-v-cebc4a92] .el-tabs__content {\n flex: 1;\n height: 0;\n}\n.mianContent .demo-tabs[data-v-cebc4a92] .el-tabs__content::-webkit-scrollbar {\n width: 0;\n}\n.mianContent .demo-tabs[data-v-cebc4a92] .el-tab-pane {\n height: 100%;\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n}\n.mianContent .demo-tabs[data-v-cebc4a92] .el-tab-pane.pane-流程图 .bpmn-look {\n height: 0;\n flex: 1;\n}\n.mianContent .rowtitle[data-v-cebc4a92] {\n /* margin-top: 24px; */\n margin-bottom: 16px;\n font-size: 16px;\n font-weight: bold;\n border-left: 4px solid #1389ff;\n padding-left: 9px;\n}\n.mianContent .topCard[data-v-cebc4a92] {\n overflow: hidden;\n /* // border: 1px solid #DADBDE; */\n}\n.mianContent .topCard .topRow[data-v-cebc4a92] {\n display: flex;\n /* // line-height: 46px; */\n font-size: 14px;\n font-weight: 400;\n line-height: 32px;\n}\n.mianContent .topCard .topRow div[data-v-cebc4a92]:first-child {\n color: #333333;\n}\n.mianContent .topCard .topRow div[data-v-cebc4a92]:last-child {\n color: #777777;\n padding-left: 10px;\n}\n.mianContent .topCard .topRow div.process-mliv-dd[data-v-cebc4a92] {\n /* // height: 26px; */\n min-width: 30px;\n padding: 0px 16px;\n border-radius: 4px;\n background: #1389ff;\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n margin-left: 10px;\n}\n.mianContent .tabs[data-v-cebc4a92] {\n /* // margin-bottom: 60px; */\n height: 0;\n flex: 1;\n overflow: visible !important;\n display: flex;\n flex-direction: column;\n}\n.mianContent .tabs[data-v-cebc4a92] :deep(.is-active) {\n font-size: 16px;\n}\n.mianContent .tabs[data-v-cebc4a92] :deep(.el-tabs__header) {\n position: sticky;\n top: 0;\n background-color: #fff;\n z-index: 1997;\n}\n.mianContent .topBtnRow[data-v-cebc4a92] {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n height: 100%;\n}\n.mianContent .footBtnRow[data-v-cebc4a92] {\n z-index: 1001;\n width: 100%;\n padding: 12px 0;\n background-color: #fff;\n display: flex;\n justify-content: center;\n align-items: center;\n -webkit-transition: 0.3s;\n transition: 0.3s;\n -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);\n box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);\n}\n.mianContent .footBtnRow .el-button[data-v-cebc4a92] {\n min-width: 74px;\n height: 36px;\n border-radius: 6px;\n}\n.formInput[data-v-cebc4a92] {\n width: 90%;\n}\n.dialog[data-v-cebc4a92] :deep(.el-dialog__header) {\n padding: 18px 24px;\n font-size: 18px;\n font-weight: 400;\n}\n.dialog[data-v-cebc4a92] .el-dialog__body {\n border-top: 1px solid #dadbde;\n border-bottom: 1px solid #dadbde;\n overflow: visible;\n padding-right: 10px;\n}\n.dialog[data-v-cebc4a92] :deep(.el-dialog__footer) {\n padding: 12px;\n text-align: center;\n}\n.dialog .el-dialog__header[data-v-cebc4a92] {\n padding: 18px 24px;\n font-size: 18px;\n font-weight: 400;\n display: flex;\n align-items: center;\n}\n.dialog[data-v-cebc4a92] :deep(.el-dialog__body) {\n border-top: 1px solid #dadbde;\n border-bottom: 1px solid #dadbde;\n overflow: visible;\n}\n.dialog .el-dialog__body[data-v-cebc4a92] {\n padding: 45px 30px;\n}\n.dialog .el-dialog__footer[data-v-cebc4a92] {\n padding: 12px !important;\n text-align: center;\n}\n.dialog .el-dialog__headerbtn[data-v-cebc4a92] {\n top: 10px;\n right: 16px;\n}\n.view-file[data-v-cebc4a92] {\n color: #1389ff;\n cursor: pointer;\n}\n.view-node-info[data-v-cebc4a92] {\n cursor: pointer;\n color: #1389ff;\n margin-left: 34px;\n font-size: 16px;\n}\n.iconsR[data-v-cebc4a92] {\n cursor: pointer;\n transform: rotate(90deg);\n}\n[data-v-cebc4a92] .task .el-radio-group .el-radio--small.is-bordered {\n margin: 0 20px;\n}\n[data-v-cebc4a92] .task .el-radio-group .el-radio.is-bordered + .el-radio.is-bordered {\n margin: 5px 20px;\n}\n.sign-img[data-v-cebc4a92] {\n width: 60px;\n height: 60px;\n}\n\n/*# sourceMappingURL=index.vue.map */", map: {"version":3,"sources":["index.vue","C:\\cod\\items\\ui-process-pc\\vue2\\src\\components\\zjp_process\\index.vue"],"names":[],"mappings":"AAAA,gBAAgB;AC2oDhB;EACA,qCAAA;EACA,cAAA;EACA,mBAAA;ADzoDA;AC2oDA;EACA,gBAAA;EACA,gCAAA;ADxoDA;ACyoDA;EACA,sBAAA;ADvoDA;AC0oDA;EACA,yBAAA;ADxoDA;AC2oDA;EACA,uBAAA;ADzoDA;AC4oDA;EACA,oBAAA;ADzoDA;AC8oDA;EACA,gBAAA;EACA,UAAA;EACA,sBAAA;EACA,aAAA;AD3oDA;ACipDA;EACA,eAAA;EACA,SAAA;EACA,sBAAA;EACA,UAAA;EACA,aAAA;AD9oDA;ACgpDA;EACA,YAAA;EACA,gBAAA;EACA,kBAAA;EACA,aAAA;EACA,sBAAA;EAIA,4BAAA;ADhpDA;ACkpDA;EACA,OAAA;EACA,SAAA;EAEA,aAAA;EACA,sBAAA;ADjpDA;ACkpDA;EACA,OAAA;EACA,SAAA;ADhpDA;ACipDA;EACA,QAAA;AD/oDA;ACkpDA;EACA,YAAA;EACA,aAAA;EACA,sBAAA;EACA,gBAAA;ADhpDA;ACkpDA;EACA,SAAA;EACA,OAAA;ADhpDA;ACupDA;EACA,sBAAA;EACA,mBAAA;EACA,eAAA;EACA,iBAAA;EAEA,8BAAA;EACA,iBAAA;ADrpDA;ACwpDA;EACA,gBAAA;EACA,kCAAA;ADrpDA;ACwpDA;EACA,aAAA;EACA,0BAAA;EACA,eAAA;EACA,gBAAA;EACA,iBAAA;ADrpDA;ACwpDA;EACA,cAAA;ADrpDA;ACwpDA;EACA,cAAA;EACA,kBAAA;ADrpDA;ACwpDA;EACA,qBAAA;EACA,eAAA;EACA,iBAAA;EACA,kBAAA;EACA,mBAAA;EACA,WAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,eAAA;EACA,iBAAA;ADrpDA;ACwpDA;EACA,4BAAA;EACA,SAAA;EACA,OAAA;EACA,4BAAA;EACA,aAAA;EACA,sBAAA;ADrpDA;ACwpDA;EACA,eAAA;ADrpDA;AC6pDA;EACA,gBAAA;EACA,MAAA;EACA,sBAAA;EACA,aAAA;AD1pDA;ACiqDA;EACA,aAAA;EACA,yBAAA;EACA,mBAAA;EACA,YAAA;AD9pDA;ACiqDA;EAaA,aAAA;EAEA,WAAA;EACA,eAAA;EACA,sBAAA;EACA,aAAA;EACA,uBAAA;EACA,mBAAA;EACA,wBAAA;EACA,gBAAA;EACA,mDAAA;EACA,2CAAA;AD3qDA;AC4qDA;EACA,eAAA;EACA,YAAA;EACA,kBAAA;AD1qDA;ACmsDA;EACA,UAAA;ADhsDA;ACmsDA;EACA,kBAAA;EACA,eAAA;EACA,gBAAA;ADhsDA;ACmsDA;EACA,6BAAA;EACA,gCAAA;EACA,iBAAA;EACA,mBAAA;ADhsDA;ACmsDA;EACA,aAAA;EACA,kBAAA;ADhsDA;ACmsDA;EACA,kBAAA;EACA,eAAA;EACA,gBAAA;EACA,aAAA;EACA,mBAAA;ADhsDA;ACosDA;EACA,6BAAA;EACA,gCAAA;EACA,iBAAA;ADjsDA;ACqsDA;EACA,kBAAA;ADlsDA;ACosDA;EACA,wBAAA;EACA,kBAAA;ADlsDA;ACosDA;EACA,SAAA;EACA,WAAA;ADlsDA;ACqsDA;EACA,cAAA;EACA,eAAA;ADlsDA;ACosDA;EACA,eAAA;EACA,cAAA;EACA,iBAAA;EACA,eAAA;ADjsDA;ACmsDA;EACA,eAAA;EACA,wBAAA;ADhsDA;ACmsDA;EACA,cAAA;ADhsDA;ACksDA;EACA,gBAAA;ADhsDA;ACmsDA;EACA,WAAA;EACA,YAAA;ADhsDA;;AAEA,oCAAoC","file":"index.vue","sourcesContent":["@charset \"UTF-8\";\n.operation-box {\n max-height: var(--dynamic-ctx-height);\n overflow: auto;\n padding-right: 20px;\n}\n\n.el-dropdown-menu__item {\n min-width: 140px;\n border-bottom: 1px solid #e8e8e8;\n}\n.el-dropdown-menu__item .el-button--text {\n color: #333 !important;\n}\n.el-dropdown-menu__item:hover .el-button--text {\n color: #1389ff !important;\n}\n.el-dropdown-menu__item:last-child {\n border: none !important;\n}\n\n.el-dropdown-menu {\n padding-bottom: 30px;\n}\n\n.mianContent > .tabs > .demo-tabs > ::v-deep .el-tabs__header {\n position: sticky;\n top: -20px;\n background-color: #fff;\n z-index: 1997;\n}\n\n.top-tabs {\n position: fixed;\n top: 62px;\n background-color: #fff;\n right: 0px;\n z-index: 1997;\n}\n\n.mianContent {\n height: 100%;\n overflow: hidden;\n position: relative;\n display: flex;\n flex-direction: column;\n /* // margin-bottom: 10px; */\n}\n.mianContent .demo-tabs {\n flex: 1;\n height: 0;\n display: flex;\n flex-direction: column;\n}\n.mianContent .demo-tabs ::v-deep .el-tabs__content {\n flex: 1;\n height: 0;\n}\n.mianContent .demo-tabs ::v-deep .el-tabs__content::-webkit-scrollbar {\n width: 0;\n}\n.mianContent .demo-tabs ::v-deep .el-tab-pane {\n height: 100%;\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n}\n.mianContent .demo-tabs ::v-deep .el-tab-pane.pane-流程图 .bpmn-look {\n height: 0;\n flex: 1;\n}\n\n.mianContent .rowtitle {\n /* margin-top: 24px; */\n margin-bottom: 16px;\n font-size: 16px;\n font-weight: bold;\n border-left: 4px solid #1389ff;\n padding-left: 9px;\n}\n\n.mianContent .topCard {\n overflow: hidden;\n /* // border: 1px solid #DADBDE; */\n}\n\n.mianContent .topCard .topRow {\n display: flex;\n /* // line-height: 46px; */\n font-size: 14px;\n font-weight: 400;\n line-height: 32px;\n}\n\n.mianContent .topCard .topRow div:first-child {\n color: #333333;\n}\n\n.mianContent .topCard .topRow div:last-child {\n color: #777777;\n padding-left: 10px;\n}\n\n.mianContent .topCard .topRow div.process-mliv-dd {\n /* // height: 26px; */\n min-width: 30px;\n padding: 0px 16px;\n border-radius: 4px;\n background: #1389ff;\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n margin-left: 10px;\n}\n\n.mianContent .tabs {\n /* // margin-bottom: 60px; */\n height: 0;\n flex: 1;\n overflow: visible !important;\n display: flex;\n flex-direction: column;\n}\n\n.mianContent .tabs :deep(.is-active) {\n font-size: 16px;\n}\n\n.mianContent .tabs :deep(.el-tabs__header) {\n position: sticky;\n top: 0;\n background-color: #fff;\n z-index: 1997;\n}\n\n.mianContent .topBtnRow {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n height: 100%;\n}\n\n.mianContent .footBtnRow {\n z-index: 1001;\n width: 100%;\n padding: 12px 0;\n background-color: #fff;\n display: flex;\n justify-content: center;\n align-items: center;\n -webkit-transition: 0.3s;\n transition: 0.3s;\n -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);\n box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);\n}\n.mianContent .footBtnRow .el-button {\n min-width: 74px;\n height: 36px;\n border-radius: 6px;\n}\n\n.formInput {\n width: 90%;\n}\n\n.dialog :deep(.el-dialog__header) {\n padding: 18px 24px;\n font-size: 18px;\n font-weight: 400;\n}\n\n.dialog ::v-deep.el-dialog__body {\n border-top: 1px solid #dadbde;\n border-bottom: 1px solid #dadbde;\n overflow: visible;\n padding-right: 10px;\n}\n\n.dialog :deep(.el-dialog__footer) {\n padding: 12px;\n text-align: center;\n}\n\n.dialog .el-dialog__header {\n padding: 18px 24px;\n font-size: 18px;\n font-weight: 400;\n display: flex;\n align-items: center;\n}\n\n.dialog :deep(.el-dialog__body) {\n border-top: 1px solid #dadbde;\n border-bottom: 1px solid #dadbde;\n overflow: visible;\n}\n\n.dialog .el-dialog__body {\n padding: 45px 30px;\n}\n.dialog .el-dialog__footer {\n padding: 12px !important;\n text-align: center;\n}\n.dialog .el-dialog__headerbtn {\n top: 10px;\n right: 16px;\n}\n\n.view-file {\n color: #1389ff;\n cursor: pointer;\n}\n\n.view-node-info {\n cursor: pointer;\n color: #1389ff;\n margin-left: 34px;\n font-size: 16px;\n}\n\n.iconsR {\n cursor: pointer;\n transform: rotate(90deg);\n}\n\n::v-deep .task .el-radio-group .el-radio--small.is-bordered {\n margin: 0 20px;\n}\n::v-deep .task .el-radio-group .el-radio.is-bordered + .el-radio.is-bordered {\n margin: 5px 20px;\n}\n\n.sign-img {\n width: 60px;\n height: 60px;\n}\n\n/*# sourceMappingURL=index.vue.map */","<template>\r\n <div\r\n class=\"mianContent\"\r\n v-loading=\"boxLoading && !isButton\"\r\n ref=\"mianContent\"\r\n :style=\"{\r\n // height:\r\n // activeName == '流程图'\r\n // ? '100%'\r\n // : $refs['footBtnRow']\r\n // ? `calc(100% - 50px)`\r\n // : ' 100%',\r\n // overflow: activeName == '流程图' ? 'hidden !important' : 'auto',\r\n }\"\r\n >\r\n <template v-if=\"!isButton\">\r\n <div class=\"tabs\" ref=\"baseTabs\">\r\n <el-tabs\r\n v-model=\"activeName\"\r\n class=\"demo-tabs\"\r\n @tab-click=\"handleClick\"\r\n >\r\n <el-tab-pane\r\n :label=\"item.name\"\r\n :name=\"item.slot || item.name\"\r\n v-for=\"(item, index) in tabs\"\r\n :key=\"index\"\r\n :item=\"item\"\r\n :class=\"['pane-' + item.name]\"\r\n >\r\n <template v-if=\"item.name == '基本信息' && !item.slot\">\r\n <div :style=\"`min-height: ${tabheight}px;`\">\r\n <slot name=\"default\" :taskNode=\"getTaskNode()\"></slot>\r\n </div>\r\n </template>\r\n <template v-else-if=\"item.name == '流程图' && !item.slot\">\r\n <div class=\"view-node-info\" @click=\"getNodeList\">\r\n 查看流程节点信息\r\n </div>\r\n <iframe\r\n v-if=\"trackUrl\"\r\n :src=\"trackUrl\"\r\n style=\"width: 100%; height: 100%; border: none\"\r\n :style=\"{ height: `${iframeHeight}px` }\"\r\n scrolling=\"no\"\r\n frameborder=\"0\"\r\n :key=\"processId\"\r\n ></iframe>\r\n <!-- 展示条件需要同时满足v-if -->\r\n <bpmnLook v-if=\"activeName == '流程图' && processData.process && processData.process.xml\" :approvalData=\"processData.flow\" :diagram=\"processData.process.xml\"></bpmnLook>\r\n <div\r\n v-else\r\n style=\"\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n \"\r\n >\r\n 暂无流程图\r\n </div>\r\n </template>\r\n <template v-else-if=\"item.name == '审批记录' && !item.slot\">\r\n <processFlow v-if=\"activeName == '审批记录' && processData.flow\" :flow-list=\"formatFlow(processData.flow)\"></processFlow>\r\n <div\r\n v-else\r\n style=\"\r\n height: 100px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n \"\r\n >\r\n 暂无数据\r\n </div>\r\n </template>\r\n <template v-else>\r\n <div :style=\"`min-height: ${tabheight}px;`\">\r\n <slot\r\n v-if=\"item.slot\"\r\n :name=\"item.slot\"\r\n :taskNode=\"getTaskNode()\"\r\n ></slot>\r\n <slot v-else name=\"default\" :taskNode=\"getTaskNode()\"></slot>\r\n </div>\r\n </template>\r\n </el-tab-pane>\r\n <!-- <el-tab-pane label=\"流程图\" name=\"2\" style=\"height: 100%\">\r\n </el-tab-pane> -->\r\n <!-- <el-tab-pane label=\"审批记录\" name=\"3\">\r\n <el-table\r\n :data=\"taskCommentList\"\r\n border\r\n style=\"width: 100%; margin-bottom: 20px\"\r\n v-if=\"taskCommentList && taskCommentList.length > 0\"\r\n >\r\n <el-table-column type=\"index\" width=\"80\" label=\"序号\" />\r\n <el-table-column\r\n prop=\"activityName\"\r\n label=\"节点名称\"\r\n ></el-table-column>\r\n <el-table-column\r\n prop=\"createUserName\"\r\n label=\"审批人\"\r\n ></el-table-column>\r\n <el-table-column\r\n prop=\"actionName\"\r\n label=\"审批操作\"\r\n ></el-table-column>\r\n <el-table-column prop=\"msg\" label=\"审批意见\">\r\n <template #default=\"scope\">\r\n <div v-html=\"scope.row.msg\"></div>\r\n <el-popover\r\n placement=\"bottom-end\"\r\n :width=\"500\"\r\n trigger=\"click\"\r\n v-if=\"scope.row.metaAnnexList.length > 0\"\r\n >\r\n <template #reference>\r\n <div class=\"view-file\">查看附件</div>\r\n </template>\r\n <ViewFile\r\n v-if=\"scope.row.metaAnnexList\"\r\n :dataList=\"scope.row.metaAnnexList\"\r\n />\r\n </el-popover>\r\n </template>\r\n </el-table-column>\r\n <el-table-column\r\n prop=\"createDate\"\r\n label=\"审批时间\"\r\n ></el-table-column>\r\n </el-table>\r\n <div\r\n v-else\r\n style=\"\r\n height: 100px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n \"\r\n >\r\n 暂无数据\r\n </div>\r\n </el-tab-pane> -->\r\n </el-tabs>\r\n </div>\r\n </template>\r\n <!-- 底部按钮 -->\r\n <!-- <processBtns\r\n :loading=\"submitLoading\"\r\n :button-list=\"processData.button\"\r\n :userId=\"userId\"\r\n :process=\"processData.process\"\r\n :comment=\"comment\"\r\n @draft=\"handleDraft({ taskId: process.taskId, variables: form })\"\r\n @examine=\"handleExamine\"\r\n @user-select=\"handleUserSelect\"\r\n @print=\"handlePrint\"\r\n @rollback=\"handleRollbackTask\"\r\n @terminate=\"handleTerminateProcess\"\r\n @withdraw=\"handleWithdrawTask\"\r\n @reminders=\"handleReminders\"\r\n @circulate=\"handleCirculate\"\r\n ></processBtns> -->\r\n\r\n <div\r\n class=\"footBtnRow foot-item\"\r\n :style=\"{ width: mainWidth + 'px' }\"\r\n ref=\"footBtnRow\"\r\n v-if=\"isAdditional && absoluteBtns.outside.length > 0\"\r\n >\r\n <slot name=\"btn\" v-bind=\"processStatus\"></slot>\r\n </div>\r\n <div v-else-if=\"!showBtns\"></div>\r\n <div\r\n class=\"footBtnRow foot-item\"\r\n ref=\"footBtnRow\"\r\n :style=\"{ width: mainWidth + 'px' }\"\r\n v-else-if=\"\r\n (!ProcessInsObj.end &&\r\n absoluteBtns.outside.length > 0 &&\r\n processStatus.appId != 'com.awspaas.user.apps.root') ||\r\n customBtns.length > 0\r\n \"\r\n v-loading=\"footBtnLoading\"\r\n >\r\n <!-- <slot name=\"btn\"> -->\r\n <template\r\n v-if=\"\r\n (processData.process.status == 'todo' || customBtns.length > 0) &&\r\n absoluteBtns.outside.length > 0\r\n \"\r\n >\r\n <el-dropdown\r\n placement=\"top-start\"\r\n trigger=\"click\"\r\n v-if=\"absoluteBtns.inside.length > 0\"\r\n >\r\n <el-button size=\"small\" style=\"margin-right: 10px\"> 更多 </el-button>\r\n <el-dropdown-menu slot=\"dropdown\">\r\n <el-dropdown-item\r\n v-for=\"(item, index) in absoluteBtns.inside\"\r\n :key=\"item.name + index\"\r\n @click.native=\"\r\n () => {\r\n item.click();\r\n aftClickBtn = item;\r\n }\r\n \"\r\n >\r\n <el-button\r\n class=\"btn drop-btn\"\r\n type=\"text\"\r\n size=\"mini\"\r\n :icon=\"item.icon\"\r\n :loading=\"buttonLoading\"\r\n >\r\n {{ item.name }}\r\n </el-button>\r\n </el-dropdown-item>\r\n </el-dropdown-menu>\r\n </el-dropdown>\r\n <el-button\r\n v-for=\"item in absoluteBtns.outside\"\r\n :key=\"item.name\"\r\n v-bind=\"item.btnProps\"\r\n @click=\"\r\n () => {\r\n item.click();\r\n aftClickBtn = item;\r\n }\r\n \"\r\n size=\"small\"\r\n :loading=\"buttonLoading\"\r\n >\r\n {{ item.name }}\r\n </el-button>\r\n </template>\r\n <!-- </slot> -->\r\n <slot name=\"btnAppend\"></slot>\r\n </div>\r\n <div class=\"dialog\">\r\n <el-dialog\r\n :visible.sync=\"dialogVisibleOperation\"\r\n append-to-body\r\n class=\"dialog\"\r\n width=\"600px\"\r\n v-dialogDrag\r\n :title=\"operationLabel\"\r\n :close-on-click-modal=\"false\"\r\n :show-close=\"!isOperLoading\"\r\n :before-close=\"cancelHandlerFn\"\r\n top=\"6vh\" :style=\"dynamicStyle\"\r\n >\r\n <div class=\"operation-box\" ref=\"obRef\">\r\n <component\r\n v-if=\"dialogVisibleOperation\"\r\n ref=\"operationRef\"\r\n :is=\"operationCom\"\r\n :param=\"operationParam\"\r\n @success=\"operationSuccess\"\r\n @fail=\"operationFail\"\r\n :isOperLoading=\"isOperLoading\"\r\n >\r\n <template #form>\r\n <slot :name=\"aftClickBtn.slot\" v-if=\"aftClickBtn.slot\"></slot>\r\n </template>\r\n <template #file>\r\n <el-form\r\n label-width=\"120px\"\r\n status-icon\r\n v-if=\"attachShow\"\r\n @submit.native.prevent\r\n :rules=\"rules\"\r\n >\r\n <el-form-item\r\n label=\"附件\"\r\n :prop=\"attachRule.required ? 'attach' : ''\"\r\n >\r\n <jyr-file-upload\r\n v-model=\"attach\"\r\n :multiple=\"attachRule.limit > 0\"\r\n :limit=\"attachRule.limit\"\r\n fullFileObject\r\n showFileName\r\n ref=\"fileUpload\"\r\n />\r\n </el-form-item>\r\n </el-form>\r\n </template>\r\n </component>\r\n </div>\r\n\r\n <template #footer>\r\n <el-button\r\n v-loading\r\n type=\"primary\"\r\n @click=\"onClickOperation\"\r\n :loading=\"isOperLoading\"\r\n >确 定</el-button\r\n >\r\n <el-button\r\n v-loading\r\n @click=\"cancelHandlerFn\"\r\n :loading=\"isOperLoading\"\r\n >取 消</el-button\r\n >\r\n </template>\r\n </el-dialog>\r\n <!-- 选择任务 -->\r\n <el-dialog\r\n title=\"选择处理任务\"\r\n :visible.sync=\"showMulTask\"\r\n append-to-body\r\n :close-on-click-modal=\"false\"\r\n width=\"500px\"\r\n :show-close=\"false\"\r\n >\r\n <el-form ref=\"form\" label-width=\"100px\" class=\"task\">\r\n <el-form-item label=\"请选择:\" prop=\"content\">\r\n <el-radio-group v-model=\"mulTaskTaskId\" size=\"small\">\r\n <el-radio\r\n v-for=\"item in mulTaskList\"\r\n :key=\"item.nodeId\"\r\n :label=\"item.taskId\"\r\n border\r\n >{{ item.nodeName }}</el-radio\r\n >\r\n </el-radio-group>\r\n </el-form-item>\r\n </el-form>\r\n <div class=\"dialog-footer\">\r\n <el-button type=\"primary\" @click=\"onCheckSure\">确定</el-button>\r\n </div>\r\n </el-dialog>\r\n <el-dialog\r\n :visible.sync=\"nodeInfoVisible\"\r\n append-to-body\r\n width=\"600px\"\r\n title=\"流程节点信息\"\r\n :modal=\"false\"\r\n :close-on-click-modal=\"false\"\r\n v-dialogDrag\r\n >\r\n <el-table :data=\"filterFlow(processData.flow)\" border>\r\n <el-table-column\r\n label=\"序号\"\r\n type=\"index\"\r\n width=\"120px\"\r\n ></el-table-column>\r\n <el-table-column prop=\"historyActivityName\" label=\"节点名称\"></el-table-column>\r\n <!-- <el-table-column prop=\"type\" label=\"类型\"></el-table-column> -->\r\n <el-table-column\r\n prop=\"assigneeName\"\r\n label=\"审批人\"\r\n ></el-table-column>\r\n </el-table>\r\n </el-dialog>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { Message as ElMessage, MessageBox as ElMessageBox } from \"element-ui\";\r\nimport treeselect from \"@riophae/vue-treeselect\";\r\nimport \"@riophae/vue-treeselect/dist/vue-treeselect.css\";\r\nimport api from \"./api\";\r\nimport * as $enum from \"./enum\";\r\nimport staffTree from \"./staff-tree.vue\";\r\nimport ViewFile from \"./view-file.vue\";\r\nimport * as operation from \"./operation/index.js\";\r\nimport JyrFileUpload from \"../JyrFileUpload/index\";\r\nimport processBtns from \"./operation/processBtns.vue\";\r\nimport processFlow from \"./operation/processFlow.vue\";\r\nimport bpmnLook from './bpmnLook.vue';\r\nimport dayjs from \"dayjs\";\r\nimport { getNodeUserParams } from './utils'\r\n\r\nexport default {\r\n components: { bpmnLook, processBtns, processFlow, treeselect, staffTree, ...operation, ViewFile, JyrFileUpload },\r\n props: {\r\n /** 流程实例id */\r\n taskId: {\r\n // require: true,\r\n default: false,\r\n type: String,\r\n },\r\n processId: {\r\n require: true,\r\n default: false,\r\n type: String,\r\n },\r\n // processDefId: {\r\n // require: false,\r\n // default: false,\r\n // type: String,\r\n // },\r\n userId: { require: true, default: \"\", type: String },\r\n // task: {\r\n // default: false,\r\n // type: Object,\r\n // },\r\n showBtns: {\r\n default: true,\r\n type: Boolean,\r\n },\r\n isView: {\r\n default: false,\r\n type: Boolean,\r\n },\r\n getVars: { type: Function },\r\n before: { type: Function },\r\n isAlis: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n isAdditional: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n businessData: {\r\n type: Object,\r\n default: undefined,\r\n },\r\n excludeBtn: {\r\n type: String,\r\n default: \"\",\r\n },\r\n showAsPlanned: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n showCommIdea: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n commentMsgRequired: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n customBtn: {\r\n default: \"\",\r\n },\r\n tabs: {\r\n default: () => [\r\n {\r\n name: \"基本信息\",\r\n slot: \"\",\r\n },\r\n {\r\n name: \"流程图\",\r\n slot: \"\",\r\n },\r\n {\r\n name: \"审批记录\",\r\n slot: \"\",\r\n },\r\n ],\r\n },\r\n personType: {\r\n default: \"\",\r\n },\r\n personEntity: {\r\n type: Object,\r\n default: () => {},\r\n },\r\n isButton: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n provide() {\r\n return {\r\n isAlisInject: this.isAlis,\r\n };\r\n },\r\n // emits: ['update:modelValue', \"getData\", \"change\", \"changeGetData\"],\r\n data() {\r\n return {\r\n // 流程信息\r\n deptId: '',\r\n initProcessData: {\r\n button: [],\r\n flow: [],\r\n form: {},\r\n process: {},\r\n },\r\n processData: {\r\n button: [],\r\n flow: [],\r\n form: {},\r\n process: {},\r\n },\r\n submitLoading: false,\r\n flowChartVisible: false,\r\n comment: null,\r\n // 流程信息\r\n dynamicMaxHeight: '400px',\r\n showMulTask: false,\r\n mulTaskList: [],\r\n mulTaskTaskId: \"\",\r\n attach: [],\r\n customBtns: [],\r\n overheight: 10,\r\n iframeHeight: 500,\r\n mainWidth: 0,\r\n absoluteTaskId: \"\",\r\n infoView: false,\r\n showTopTabs: false,\r\n buttonLoading: false,\r\n footBtnLoading: true,\r\n tabheight: 400,\r\n aftClickBtn: \"\",\r\n attachRule: {\r\n required: true,\r\n limit: 0,\r\n },\r\n nodeInfoVisible: false,\r\n nodeInfoList: [],\r\n jjForm: {\r\n saveMetaAnnexCmdList: [],\r\n },\r\n targetUID: \"\",\r\n commentMsg: \"\",\r\n trackUrl: \"\",\r\n taskObj: {},\r\n taskCommentList: [],\r\n absoluteBtns: { inside: [], outside: [] },\r\n processStatus: \"\",\r\n nextTaskNode: [],\r\n activeName: \"基本信息\",\r\n ProcessInsObj: {},\r\n outGatewayUserTaskModel: [],\r\n dialogVisibleOperation: false,\r\n operationLabel: \"\",\r\n operationCom: {},\r\n operationParam: {},\r\n taskNode: [],\r\n aftTaskNode: {},\r\n operation,\r\n Enum: $enum,\r\n isOperLoading: false,\r\n boxLoading: false,\r\n rules: {\r\n attach: [{ required: true, trigger: \"change\" }],\r\n },\r\n\t noReload: false,\r\n digitalSignatureList: []\r\n };\r\n },\r\n mounted() {\r\n window.onresize = () => {\r\n return (() => {\r\n if (this.$refs[\"mianContent\"]) {\r\n this.mainWidth = this.$refs[\"mianContent\"].offsetWidth;\r\n }\r\n })();\r\n };\r\n },\r\n watch: {\r\n activeName: function (n) {\r\n if (n == 1) this.activeName = \"基本信息\";\r\n },\r\n infoView: function () {\r\n this.calculateHeight();\r\n },\r\n taskId: {\r\n handler(val) {\r\n if (!val) return;\r\n this.absoluteTaskId = val;\r\n },\r\n deep: true,\r\n immediate: true,\r\n },\r\n processId: {\r\n handler(val) {\r\n if (val) {\r\n this.customBtns = [];\r\n this.absoluteBtns = { inside: [], outside: [] };\r\n this.activeName = this.tabs.length > 0 ? this.tabs[0][\"name\"] : \"\";\r\n // 获取流程节点,流程图,流程实例,流程审批\r\n this.getProcessInfo()\r\n if (Date.now()) return;\r\n\r\n api.repository.queryTaskNodeList(this.processId).then((e) => {\r\n\t\t\t if(!this.noReload){\r\n\t\t\t\t this.noReload = false\r\n\t\t\t\t if (!this.absoluteTaskId && e.data.length > 1) {\r\n\t\t\t\t this.mulTaskList = e.data;\r\n\t\t\t\t this.showMulTask = true;\r\n\t\t\t\t return;\r\n\t\t\t\t } else {\r\n\t\t\t\t this.absoluteTaskId =\r\n\t\t\t\t e.data && e.data.length > 0 ? e.data[0][\"taskId\"] : \"\";\r\n\t\t\t\t this.aftTaskNode = e.data[0];\r\n\t\t\t\t }\r\n\t\t\t }\r\n\r\n console.log(\"======\", this.absoluteTaskId);\r\n if (e.code == $enum.apiCode.success) {\r\n this.taskNode = e.data;\r\n api.pis\r\n .getProcessStatus(this.processId, this.absoluteTaskId)\r\n .then((res) => {\r\n if (res.code == $enum.apiCode.success) {\r\n this.processStatus = res.data;\r\n if (this.absoluteTaskId) {\r\n api.repository\r\n .getUserTaskModelCmd(this.absoluteTaskId)\r\n .then((res) => {\r\n if (res.code == $enum.apiCode.success) {\r\n this.taskObj = res.data;\r\n this.straightenBtns();\r\n }\r\n });\r\n } else {\r\n this.straightenBtns();\r\n }\r\n }\r\n });\r\n }\r\n });\r\n\r\n api.repository\r\n .getTrackUrl({ processInstId: val, type: $enum.SourceType.电脑端 })\r\n .then((res) => {\r\n if (res.code == $enum.apiCode.success) {\r\n if (window.location.protocol == \"https:\") {\r\n if (res.data.indexOf(\"http://121.40.143.183:80/\") >= 0) {\r\n this.trackUrl = res.data.replace(\r\n \"http://121.40.143.183:80/\",\r\n \"https://acme-aws.ddzg.cn/\"\r\n )\r\n } else if (res.data.indexOf(\"http://121.40.143.183/\") >= 0) {\r\n this.trackUrl = res.data.replace(\r\n \"http://121.40.143.183/\",\r\n \"https://acme-aws.ddzg.cn/\"\r\n )\r\n } else if (res.data.indexOf(\"http://acme-aws.ddzg.cn/\") >= 0) {\r\n this.trackUrl = res.data.replace(\r\n \"http://acme-aws.ddzg.cn/\",\r\n \"https://acme-aws.ddzg.cn/\"\r\n )\r\n } else if (res.data.indexOf(\"http://59.53.91.231:8088/\") >= 0) {\r\n this.trackUrl = res.data.replace(\r\n \"http://59.53.91.231:8088/\",\r\n \"https://acme-test.ddzg.cn:2119/\"\r\n )\r\n } else if (res.data.indexOf(\"http://59.53.91.230:8088/\") >= 0) {\r\n this.trackUrl = res.data.replace(\r\n \"http://59.53.91.230:8088/\",\r\n \"https://kq.ddzg.cn:8093/\"\r\n )\r\n } else {\r\n this.trackUrl = res.data\r\n }\r\n } else {\r\n this.trackUrl = res.data;\r\n }\r\n }\r\n });\r\n api.tis.getTaskCommentList(this.processId, \"\").then((res) => {\r\n this.taskCommentList = res.data;\r\n this.digitalSignatureList = res.data.filter(item => item.digitalSignature).map(item => item.digitalSignature)\r\n });\r\n api.pis.getProcessInstanceById(this.processId).then((res) => {\r\n this.ProcessInsObj = res.data;\r\n this.$nextTick(() => {\r\n this.calculateHeight();\r\n });\r\n });\r\n\r\n // api.repository.queryTaskNodeList(this.processId).then((res) => {\r\n // if (res.code == $enum.apiCode.success) this.taskNode = res.data;\r\n // });\r\n }\r\n },\r\n immediate: true,\r\n //这个参数代表监听对象时,可以监听深度嵌套的对象属性\r\n deep: true,\r\n },\r\n absoluteTaskId: {\r\n handler(val) {\r\n if (val) {\r\n }\r\n },\r\n immediate: true,\r\n //这个参数代表监听对象时,可以监听深度嵌套的对象属性\r\n deep: true,\r\n },\r\n dialogVisibleOperation: {\r\n handler(val) {\r\n this.$emit(\"show-modal\", val);\r\n },\r\n },\r\n },\r\n methods: {\r\n // 流程\r\n formatFlow(flow) {\r\n const newFlow = (flow || []).map(item => {\r\n return {\r\n ...item,\r\n attachmentsFujian: (item.attachments || []).filter(i => i.type != 'signature'),\r\n attachmentsQianzi: (item.attachments || []).filter(i => i.type == 'signature'),\r\n }\r\n })\r\n return newFlow\r\n },\r\n cancelHandlerFn(){\r\n this.dialogVisibleOperation = false\r\n this.submitLoading = false\r\n },\r\n filterFlow(flowArr) {\r\n return flowArr.filter((item) => {\r\n return ['userTask', 'candidate'].includes(item.historyActivityType)\r\n });\r\n },\r\n getProcessInfo() {\r\n this.submitLoading = true\r\n this.boxLoading = true;\r\n\r\n api.tis.getTaskModelDetail(this.taskId ? {\r\n processInstId: this.processId,\r\n taskId: this.taskId,\r\n } : {\r\n processInstId: this.processId,\r\n }).then(async res => {\r\n if (res.code == 200) {\r\n this.processData = {\r\n ...this.initProcessData,\r\n ...(res.data || {}),\r\n };\r\n const deptId = ((this.processData.process || {}).variables || {}).deptId\r\n this.deptId = deptId\r\n const taskId = (this.processData.process || {}).taskId\r\n this.taskObj.buttons = this.processData.button\r\n this.absoluteTaskId = taskId\r\n this.straightenBtns();\r\n console.log(deptId, 'id')\r\n this.$nextTick(() => {\r\n this.calculateHeight();\r\n });\r\n\r\n console.log(this.processData.flow, 'flw')\r\n this.flowChartVisible = true\r\n this.submitLoading = false\r\n this.boxLoading = false\r\n }\r\n })\r\n },\r\n // 通过部门id获取流程节点的人员\r\n getUserDataByDeptId() {\r\n this.processList.map(async (item, index) => {\r\n console.log(item, 'item')\r\n const nodeUserParams = getNodeUserParams(item)\r\n let res\r\n try {\r\n res = await this.getNodeUser({\r\n deptId: this.deptId,\r\n intersection: nodeUserParams.intersection ? 1 : 0,\r\n userIds: nodeUserParams.userIds,\r\n postIds: nodeUserParams.postIds,\r\n deptIds: nodeUserParams.deptIds,\r\n })\r\n } catch (error) {\r\n console.log(error, 'error')\r\n }\r\n if (res.code == Enum.apiCode.success) {\r\n const l = this.processList[index]\r\n l.userList = res.data\r\n this.$set(this.processList, index, l)\r\n\r\n }\r\n // console.log(user, 'user', index)\r\n })\r\n },\r\n handleDraft() {\r\n this.submitLoading = true;\r\n },\r\n // 提交(办理)true、取消申请 false\r\n handleExamine(flag, name) {\r\n console.log(flag, 'flag')\r\n if (flag) {\r\n this.handlePass(name)\r\n } else {\r\n this.handleCancel(name)\r\n }\r\n this.submitLoading = true;\r\n },\r\n // 办理\r\n async handlePass(name) {\r\n if (this.deptId) {\r\n await this.getNextNode(this.deptId)\r\n }\r\n if (this.before) {\r\n this.before().then(() => {\r\n this.showOperation(operation.complete, name);\r\n });\r\n } else {\r\n this.showOperation(operation.complete, name);\r\n }\r\n },\r\n // 取消申请\r\n handleCancel(name) {\r\n this.showOperation(operation.cancel, name);\r\n },\r\n // 转办transfer,委托delegate,addInstance\r\n handleUserSelect({ type, checkType, name}) {\r\n if (type == 'transfer') {\r\n this.handleTransfer(name)\r\n }\r\n else if (type == 'addInstance') {\r\n this.handleAddInstance(name)\r\n }\r\n console.log('handleUserselect')\r\n },\r\n // 转办\r\n handleTransfer(name) {\r\n this.showOperation(operation.delegateTask, name);\r\n },\r\n // 加签\r\n handleAddInstance(name) {\r\n this.showOperation(operation.counterSign, name);\r\n },\r\n handlePrint() {\r\n console.log('handlePrint')\r\n },\r\n handleRollbackTask(name) {\r\n console.log('handleRollbackTask')\r\n this.showOperation(operation.roolback, name);\r\n },\r\n handleTerminateProcess() {\r\n console.log('handleTerminateProcess')\r\n },\r\n // 传阅\r\n handleCirculate(name) {\r\n console.log('handleCirculate')\r\n this.showOperation(operation.ccTask, name);\r\n },\r\n // 撤销,撤回\r\n handleWithdrawTask(name) {\r\n console.log('handleWithdrawTask')\r\n this.handleRevoke();\r\n // this.showOperation(operation.withdrawTask, '请选择撤销/撤回操作');\r\n },\r\n // 流程\r\n findTargetHtml(startNode, targetClass, searchKey = 'parentElement') {\r\n\t\t\t\tif (!startNode) return null\r\n \t\t\tif (startNode.classList.contains(targetClass)) {\r\n \t\t\treturn startNode\r\n \t\t\t}\r\n \t\t\tlet curEl = startNode[searchKey]\r\n \t\t\tif (!curEl) return null\r\n \t\t\tif (searchKey == 'children') {\r\n \t\t\tfor (let i = 0; i <= curEl.length - 1; i++) {\r\n \t\t\tif (curEl[i].classList.contains(targetClass)) {\r\n \t\t\treturn curEl[i]\r\n \t\t\t}\r\n \t\t\t}\r\n \t\t\treturn\r\n \t\t\t}\r\n \t\t\treturn this.findTargetHtml(curEl, targetClass)\r\n\t\t\t},\r\n findImageIndex(item){\r\n return item ? this.digitalSignatureList.findIndex(i => i == item) : -1\r\n },\r\n onCheckSure() {\r\n this.absoluteTaskId = this.mulTaskTaskId;\r\n this.mulTaskList.map((item) => {\r\n if (item.taskId == this.mulTaskTaskId) {\r\n this.aftTaskNode = item;\r\n }\r\n });\r\n\t this.noReload = true\r\n this.showMulTask = false;\r\n this.footBtnLoading = true;\r\n let temp = this.processId;\r\n this.processId = \"\";\r\n this.processId = temp;\r\n },\r\n showButtonLoading() {\r\n this.buttonLoading = true;\r\n },\r\n hideButtonLoading() {\r\n this.buttonLoading = false;\r\n },\r\n calculateHeight() {\r\n let h = 0;\r\n if (this.$refs[\"footBtnRow\"]) {\r\n h += this.$refs[\"footBtnRow\"].offsetHeight;\r\n }\r\n if (this.$refs[\"mianContent\"]) {\r\n this.mainWidth = this.$refs[\"mianContent\"].offsetWidth;\r\n }\r\n if (this.infoView && this.absoluteBtns.outside.length > 0) {\r\n h += 32;\r\n }\r\n if (this.$refs[\"infoBoxFign\"]) {\r\n let windowHeight =\r\n window.innerHeight ||\r\n document.documentElement.clientHeight ||\r\n document.body.clientHeight;\r\n this.tabheight =\r\n windowHeight - this.$refs[\"infoBoxFign\"].offsetTop - 192;\r\n }\r\n this.overheight = h + 116;\r\n this.iframeHeight = this.$refs[\"mianContent\"].offsetHeight - 146;\r\n },\r\n getNodeList() {\r\n this.nodeInfoVisible = true;\r\n // api.pis.findNodeParticipantRows(this.processId).then((e) => {\r\n \r\n // e.data.map((item) => {\r\n // if (item.type == \"串签\" || item.type == \"并签\") {\r\n // item[\"name\"] += `【${item.type}】`;\r\n // }\r\n // });\r\n // this.nodeInfoList = e.data;\r\n // });\r\n },\r\n fileNameLastof(e, len = 0) {\r\n if (e.indexOf(\"http\") == -1) len = 0;\r\n if (!e) return;\r\n let last = \"/\";\r\n if (e.indexOf(\"\\\\\") != -1) {\r\n last = \"\\\\\";\r\n }\r\n //整理文件名\r\n let filename = e;\r\n let lastindex = filename.lastIndexOf(last);\r\n return filename.substr(lastindex + 1 + len, filename.length);\r\n },\r\n clickCustomButton(name) {\r\n this.$emit(\"clickCustomButton\", {\r\n name,\r\n processStatus: this.processStatus,\r\n setName: (label) => {\r\n this.taskObj.buttons.map((item) => {\r\n if (item.label == name) {\r\n item.label = label;\r\n }\r\n });\r\n this.straightenBtns();\r\n },\r\n });\r\n },\r\n // 获取下一个节点数据\r\n async getNextNode(deptId) {\r\n let res1\r\n try {\r\n res1 = await api.tis.simulation(\r\n this.absoluteTaskId,\r\n this.processId,\r\n );\r\n } catch (e) {\r\n console.error(e)\r\n res1 = {}\r\n }\r\n const nextTaskNode = res1.data || {};\r\n console.log(nextTaskNode, 'next')\r\n if (nextTaskNode.id && !nextTaskNode.setPersonnel) {\r\n const nodeUserParams = getNodeUserParams(nextTaskNode)\r\n let res\r\n try {\r\n res = await this.getNodeUser({\r\n // 需要传入部门id\r\n deptId: deptId,\r\n intersection: nodeUserParams.intersection ? 1 : 0,\r\n userIds: nodeUserParams.userIds,\r\n postIds: nodeUserParams.postIds,\r\n deptIds: nodeUserParams.deptIds,\r\n })\r\n } catch (error) {\r\n console.log(error, 'error')\r\n }\r\n if (res.code == $enum.apiCode.success) {\r\n nextTaskNode.userList = res.data\r\n }\r\n }\r\n this.nextTaskNode = nextTaskNode\r\n console.log(nextTaskNode, 'getNextNode')\r\n },\r\n // 获取节点的人员\r\n async getNodeUser({ deptId, intersection, userIds, postIds, deptIds }) {\r\n return await api.user.getTaskAuditor({\r\n deptId,\r\n intersection,\r\n userIds,\r\n postIds,\r\n deptIds\r\n })\r\n },\r\n async showOperation(com, label) {\r\n this.attach = [];\r\n if (false && this.processStatus.allUserNames.length > 0) {\r\n if (this.absoluteTaskId) {\r\n let vars;\r\n if (this.getVars) {\r\n vars = this.getVars();\r\n if (vars === false) {\r\n return false;\r\n }\r\n }\r\n let res = await api.tis.simulation(\r\n this.absoluteTaskId,\r\n this.processId,\r\n vars\r\n );\r\n if (res.code == $enum.apiCode.success) {\r\n for (var i in res.data) {\r\n if (\r\n res.data[i][\"type\"] != \"endEvent\" &&\r\n (res.data[i].userTaskModelDTO.humanPerformer.name ==\r\n \"固定账户\" ||\r\n res.data[i].userTaskModelDTO.humanPerformer.name ==\r\n \"与流程申请人相关\")\r\n ) {\r\n await api.repository\r\n .getParticipantsOfPerformerNames(this.absoluteTaskId, [\r\n res.data[i].id,\r\n ])\r\n .then((e) => {\r\n res.data[i].userTaskModelDTO.routeTxt[\"userNames\"] =\r\n e.data[res.data[i].id];\r\n });\r\n }\r\n }\r\n\r\n this.nextTaskNode = res.data;\r\n } else {\r\n this.nextTaskNode = [];\r\n this.outGatewayUserTaskModel = await this.getOutgoingProcessNode(\r\n this.absoluteTaskId,\r\n \"\"\r\n );\r\n }\r\n }\r\n }\r\n this.operationLabel = label;\r\n // this.operationParam = new operation.PorpParam(\"\", this.processId, this.processDefId, this.task.id, this.task.activityDefId);\r\n this.operationParam.processInstId = this.processId;\r\n // this.operationParam.processDefId = this.processDefId;\r\n this.operationParam.taskInstId = this.absoluteTaskId;\r\n // this.operationParam.taskDeftId = this.task.activityDefId;\r\n this.operationParam.nextTaskNode = this.nextTaskNode;\r\n this.operationParam.variables = (this.processData.process || {}).variables || {}\r\n this.operationParam.extendedProperties = (this.processData.form || {}).extendedProperties || []\r\n this.operationParam.taskObj = this.taskObj;\r\n this.operationParam.getVars = this.getVars;\r\n this.operationParam.outGatewayUserTaskModel =\r\n this.outGatewayUserTaskModel;\r\n this.operationParam.taskNode = this.getTaskNode();\r\n this.operationParam.businessData = this.businessData;\r\n this.operationParam.showAsPlanned = this.showAsPlanned;\r\n this.operationParam.showCommIdea = this.showCommIdea;\r\n this.operationParam.commentMsgRequired = this.commentMsgRequired;\r\n this.operationParam.personType = this.personType;\r\n this.operationParam.personEntity = {\r\n ...this.personEntity,\r\n ...(this.aftClickBtn.personEntity || {}),\r\n };\r\n this.operationParam.ProcessInsObj = this.ProcessInsObj;\r\n this.operationCom = com;\r\n this.dialogVisibleOperation = true;\r\n this.$nextTick(() => {\r\n \t\tlet ctnEl = this.$refs.obRef\r\n\t\t\t\tconsole.log(ctnEl, this.$refs);\r\n \t\tif (!ctnEl) return \r\n \t\tlet topDistance = ctnEl.getBoundingClientRect().top\r\n \t\tlet dialogEl = this.findTargetHtml(ctnEl, 'el-dialog')\r\n \t\tlet dialogFootEl = this.findTargetHtml(dialogEl, 'el-dialog__footer', 'children')\r\n \t\t// 视口高度 - margin - head - footer\r\n \t\tlet val = window.innerHeight - topDistance - topDistance - dialogFootEl.clientHeight - 32\r\n \t\tthis.dynamicMaxHeight = `${val}px`\r\n \t\t})\r\n },\r\n onClickOperation() {\r\n if (\r\n this.attachShow &&\r\n this.attachRule.required &&\r\n this.attach.length == 0\r\n ) {\r\n return ElMessage.error(\"请上传附件\");\r\n }\r\n if (this.aftClickBtn.preposition) {\r\n this.operationMain(this.aftClickBtn.preposition);\r\n } else {\r\n this.operationMain();\r\n }\r\n\r\n // if (this.$refs[\"fileUpload\"] && this.$refs[\"fileUpload\"].getLoading()) {\r\n // return ElMessage.error(\"请等待附件上传完成后重试\");\r\n // }\r\n },\r\n operationMain(preposition = false) {\r\n let saveMetaAnnexCmdList\r\n if (this.attachShow) {\r\n saveMetaAnnexCmdList = [];\r\n this.attach.map((item) => {\r\n saveMetaAnnexCmdList.push({\r\n id: item.id,\r\n name: this.fileNameLastof(item.name),\r\n size: item.fileSize,\r\n format: item.fileType,\r\n url: item.url,\r\n uploadTime: item.createTime,\r\n processInstId: this.operationParam.processInstId,\r\n taskInstId: this.operationParam.taskInstId,\r\n });\r\n });\r\n saveMetaAnnexCmdList = saveMetaAnnexCmdList.sort((a, b) => {\r\n return dayjs(a.uploadTime).valueOf() > dayjs(b.uploadTime).valueOf();\r\n });\r\n // api.tis.patchSave({\r\n // saveMetaAnnexCmdList,\r\n // });\r\n }\r\n\r\n if (this.$refs.operationRef) {\r\n this.$refs.operationRef.confirm(preposition, () => {\r\n this.isOperLoading = true;\r\n }, saveMetaAnnexCmdList);\r\n }\r\n },\r\n operationSuccess(isComplete = true) {\r\n ElMessage.success(\"操作成功\");\r\n this.dialogVisibleOperation = false;\r\n // router.go(0);\r\n if (isComplete) this.$emit(\"Complete\");\r\n this.isOperLoading = false;\r\n },\r\n operationFail(msg = \"\") {\r\n msg && ElMessage.warning(msg);\r\n this.isOperLoading = false;\r\n },\r\n async getOutgoingProcessNode(taskId, processNodeId) {\r\n let res = await api.repository.getOutgoingProcessNode(\r\n taskId,\r\n processNodeId\r\n );\r\n if (res.code == $enum.apiCode.success) {\r\n if (res.data) {\r\n for (let i = 0; i < res.data.length; i++) {\r\n let o = res.data[i];\r\n if (o.type != $enum.ProcessNodeType.用户任务) {\r\n o.childNode = await this.getOutgoingProcessNode(taskId, o.id);\r\n if (o.incomingConditionItemList.length !== 0) {\r\n // o.childNode.push(o);\r\n }\r\n }\r\n if (\r\n res.data[i][\"type\"] != \"endEvent\" &&\r\n (res.data[i].humanPerformerName == \"固定账户\" ||\r\n res.data[i].humanPerformerName == \"与流程申请人相关\")\r\n ) {\r\n await api.repository\r\n .getParticipantsOfPerformerNames(taskId, [res.data[i].id])\r\n .then((e) => {\r\n res.data[i][\"routeTxt\"][\"userNames\"] = e.data[res.data[i].id];\r\n });\r\n }\r\n }\r\n\r\n if (res.data.length == 0) {\r\n res.data.push({\r\n id: \"\",\r\n incomingConditionItemList: [],\r\n type: \"endEvent\",\r\n name: \"结束事件\",\r\n });\r\n }\r\n }\r\n return res.data;\r\n }\r\n return [];\r\n },\r\n getColor(status) {\r\n if (status == \"审核中\" || status == \"审批中\") return \"#6DC743\";\r\n if (status == \"已驳回\") return \"#F14B4C\";\r\n if (status == \"已撤销\") return \"#CECECE\";\r\n if (status == \"已完成\") return \"#6DC743\";\r\n\r\n return \"#1389FF\";\r\n },\r\n handleClick(e) {\r\n this.$emit(\"clickTab\",JSON.parse(JSON.stringify(e.$vnode.data.attrs.item)));\r\n },\r\n getTaskNode() {\r\n if (this.taskNode.filter)\r\n return this.taskNode.filter((o) => {\r\n return o.nodeId == this.taskObj.id;\r\n });\r\n return [];\r\n },\r\n handleRevoke() {\r\n ElMessageBox.confirm(`确定撤销吗`, \"撤销\", {\r\n confirmButtonText: \"确定\",\r\n cancelButtonText: \"取消\",\r\n type: \"warning\",\r\n })\r\n .then(() => {\r\n api.tis\r\n .withdrawTask(this.processData.process.processInstanceId)\r\n .then((res) => {\r\n if (res.code == $enum.apiCode.success) {\r\n ElMessage.success(\"操作成功\");\r\n this.$emit(\"Complete\");\r\n }\r\n // else {\r\n // ElMessage.warning(res.msg);\r\n // }\r\n });\r\n })\r\n .catch(() => {\r\n ElMessage.info(\"取消操作\");\r\n });\r\n },\r\n handleReminders() {\r\n console.log(ElMessageBox);\r\n ElMessageBox.confirm(`确定催办吗`, \"催办\", {\r\n confirmButtonText: \"确定\",\r\n cancelButtonText: \"取消\",\r\n type: \"warning\",\r\n })\r\n .then(() => {\r\n api.tis.reminders(this.processData.process.processInstanceId).then((res) => {\r\n if (res.code == $enum.apiCode.success) {\r\n ElMessage.success(\"操作成功\");\r\n this.$emit(\"Complete\");\r\n }\r\n // else {\r\n // ElMessage.warning(res.msg);\r\n // }\r\n });\r\n })\r\n .catch((e) => {\r\n ElMessage.info(\"取消操作\");\r\n });\r\n },\r\n getButton(key) {\r\n return (this.processData.button || []).find(b => b.buttonKey == key);\r\n },\r\n operBtn() {\r\n let btnList = [];\r\n\r\n const process = this.processData.process;\r\n\r\n if (!process) {\r\n return btnList\r\n }\r\n\r\n // 加签\r\n if (process.status == 'todo' && process.isMultiInstance && this.getButton('wf_add_instance')) {\r\n let obj = {};\r\n obj.name = this.getButton('wf_add_instance').name\r\n obj.btnProps = { type: \"primary\" };\r\n obj.key = \"sign\";\r\n obj.click = () => {\r\n this.handleUserSelect({\r\n type: 'addInstance',\r\n checkType: 'checkbox',\r\n name: this.getButton('wf_add_instance').name,\r\n })\r\n };\r\n btnList.push(obj);\r\n }\r\n // if (flag && !this.isView && this.taskObj.counterSignLabel) {\r\n // let obj = {};\r\n // obj.name = this.taskObj.counterSignLabel;\r\n // obj.btnProps = { type: \"primary\" };\r\n // obj.key = \"sign\";\r\n // obj.click = () => {\r\n // this.showOperation(operation.counterSign, obj.name);\r\n // };\r\n // btnList.push(obj);\r\n // }\r\n\r\n // 转办\r\n if (process.status == 'todo' && this.getButton('wf_transfer')) {\r\n let obj = {};\r\n obj.name = this.getButton('wf_transfer').name\r\n obj.key = \"delegate\";\r\n obj.click = () => {\r\n this.handleUserSelect({\r\n type: 'transfer',\r\n checkType: 'radio',\r\n name: this.getButton('wf_transfer').name,\r\n })\r\n };\r\n btnList.push(obj);\r\n }\r\n // if (flag && !this.isView && this.taskObj.delegateTaskButtonLabel) {\r\n // let obj = {};\r\n // obj.name = this.taskObj.delegateTaskButtonLabel;\r\n // obj.key = \"delegate\";\r\n // obj.click = () => {\r\n // this.showOperation(operation.delegateTask, obj.name);\r\n // };\r\n // btnList.push(obj);\r\n // }\r\n\r\n // 委托\r\n if (process.status == 'todo' && this.getButton('wf_delegate')) {\r\n let obj = {};\r\n obj.name = this.getButton('wf_delegate').name\r\n obj.btnProps = { type: \"warning\" };\r\n obj.key = \"cc2\";\r\n obj.click = () => {\r\n this.handleUserSelect({\r\n type: 'delegate',\r\n checkType: 'radio',\r\n name: this.getButton('wf_delegate').name\r\n })\r\n };\r\n btnList.push(obj);\r\n }\r\n\r\n // 终止\r\n if (process.status == 'todo' && this.getButton('wf_terminate')) {\r\n let obj = {};\r\n obj.name = this.getButton('wf_terminate').name\r\n obj.btnProps = { type: \"danger\" };\r\n obj.key = \"cc3\";\r\n obj.click = () => {\r\n this.handleTerminateProcess()\r\n };\r\n btnList.push(obj);\r\n }\r\n\r\n // 传阅\r\n if (process.status == 'todo' && this.getButton('wf_cctask')) {\r\n let obj = {};\r\n obj.name = this.getButton('wf_cctask').name\r\n obj.btnProps = { type: \"primary\" };\r\n obj.key = \"cc\";\r\n obj.click = () => {\r\n this.handleCirculate(this.getButton('wf_cctask').name)\r\n };\r\n btnList.push(obj);\r\n }\r\n // if (flag && !this.isView && this.taskObj.ccTaskButtonLabel) {\r\n // let obj = {};\r\n // obj.name = this.taskObj.ccTaskButtonLabel;\r\n // obj.btnProps = { type: \"primary\" };\r\n // obj.key = \"cc\";\r\n // obj.click = () => {\r\n // this.showOperation(operation.ccTask, obj.name);\r\n // };\r\n // btnList.push(obj);\r\n // }\r\n \r\n // 催办\r\n if (process.status == 'todo' && this.userId == (process.variables || {}).applyUserId) {\r\n let obj = {};\r\n obj.name = \"催办\";\r\n // obj.btnProps = { color: \"#1389ff\" };\r\n obj.key = \"self\";\r\n obj.click = () => {\r\n this.handleReminders();\r\n };\r\n btnList.push(obj);\r\n }\r\n // if (\r\n // this.processId &&\r\n // this.processStatus.createTopUserId == this.userId &&\r\n // ((this.taskNode.length > 0 &&\r\n // this.aftTaskNode.taskState != $enum.TaskState.抄送) ||\r\n // this.processStatus.status == \"审批中\")\r\n // ) {\r\n // let obj = {};\r\n // obj.name = \"催办\";\r\n // // obj.btnProps = { color: \"#1389ff\" };\r\n // obj.key = \"self\";\r\n // obj.click = () => {\r\n // this.handleReminders();\r\n // };\r\n // btnList.push(obj);\r\n // }\r\n\r\n // 撤销\r\n if (\r\n process.isOwner &&\r\n process.isReturnable &&\r\n !['recall', 'reject'].includes(process.processIsFinished)\r\n ) {\r\n let obj = {};\r\n obj.name = \"撤销\";\r\n obj.btnProps = { type: \"danger\" };\r\n obj.key = \"self\";\r\n obj.click = () => {\r\n this.handleWithdrawTask('撤销');\r\n };\r\n btnList.push(obj);\r\n }\r\n\r\n // if (\r\n // this.processId &&\r\n // this.processStatus.createTopUserId == this.userId &&\r\n // ((this.taskNode.length > 0 &&\r\n // this.aftTaskNode.taskState != $enum.TaskState.抄送) ||\r\n // this.processStatus.status == \"审批中\")\r\n // ) {\r\n // let obj = {};\r\n // obj.name = \"撤销\";\r\n // obj.btnProps = { type: \"danger\" };\r\n // obj.key = \"self\";\r\n // obj.click = () => {\r\n // this.handleRevoke();\r\n // };\r\n // btnList.push(obj);\r\n // }\r\n\r\n // 拒绝\r\n if (\r\n process.status == 'todo' &&\r\n this.getButton('wf_reject')\r\n ) {\r\n let obj = {};\r\n obj.name = this.getButton('wf_reject').name\r\n obj.btnProps = { type: \"danger\" };\r\n obj.key = \"refuse\";\r\n obj.click = () => {\r\n this.handleExamine(false, this.getButton('wf_reject').name)\r\n };\r\n btnList.push(obj);\r\n }\r\n // if (flag && !this.isView && this.processStatus.currUserName) {\r\n // let obj = {};\r\n // obj.name = \"拒绝\";\r\n // obj.btnProps = { type: \"danger\" };\r\n // obj.key = \"refuse\";\r\n // obj.click = () => {\r\n // this.showOperation(operation.cancel, obj.name);\r\n // };\r\n // btnList.push(obj);\r\n // }\r\n\r\n // 办理\r\n if (process.status == 'todo' && this.getButton('wf_pass')) {\r\n let obj = {};\r\n obj.name = this.getButton('wf_pass').name\r\n obj.btnProps = { type: \"primary\" };\r\n obj.key = \"complete\";\r\n obj.click = () => {\r\n if (this.before) {\r\n this.before().then(() => {\r\n this.handleExamine(true, this.getButton('wf_pass').name)\r\n });\r\n } else {\r\n this.handleExamine(true, this.getButton('wf_pass').name)\r\n }\r\n };\r\n btnList.push(obj);\r\n }\r\n // if (flag && !this.isView && this.taskObj.completeButtonLabel) {\r\n // let obj = {};\r\n // obj.name = this.taskObj.completeButtonLabel;\r\n // obj.btnProps = { type: \"primary\" };\r\n // obj.key = \"complete\";\r\n // obj.click = () => {\r\n // if (this.before) {\r\n // this.before().then(() => {\r\n // this.showOperation(operation.complete, obj.name);\r\n // });\r\n // } else {\r\n // this.showOperation(operation.complete, obj.name);\r\n // }\r\n // };\r\n // btnList.push(obj);\r\n // }\r\n\r\n // 退回\r\n if (\r\n process.status == 'todo' &&\r\n this.getButton('wf_rollback')\r\n ) {\r\n let obj = {};\r\n obj.name = this.getButton('wf_rollback').name\r\n obj.btnProps = { type: \"danger\" };\r\n obj.key = \"back\";\r\n obj.click = () => {\r\n this.handleRollbackTask(this.getButton('wf_rollback').name)\r\n };\r\n // 退回可能还有种情况,就是自定义this.clickCustomButton(obj.name);\r\n\r\n btnList.unshift(obj);\r\n }\r\n // if (\r\n // flag &&\r\n // !this.isView &&\r\n // this.taskObj &&\r\n // this.taskObj.buttons.length > 0\r\n // ) {\r\n // this.taskObj.buttons.map((item) => {\r\n // let obj = {};\r\n // obj.name = item.label;\r\n // if (item.label == \"退回\") {\r\n // obj.btnProps = { type: \"danger\" };\r\n // obj.key = \"back\";\r\n // obj.click = () => {\r\n // this.showOperation(operation.roolback, obj.name);\r\n // };\r\n // } else {\r\n // obj.btnProps = {};\r\n // obj.key = item.label;\r\n // obj.click = () => {\r\n // this.clickCustomButton(obj.name);\r\n // };\r\n // }\r\n\r\n // btnList.unshift(obj);\r\n // });\r\n // }\r\n\r\n return btnList;\r\n },\r\n straightenBtns(flag = true) {\r\n let list = [];\r\n\r\n if (this.excludeBtn) {\r\n this.operBtn().map((item) => {\r\n if (this.excludeBtn.indexOf(item.key) == -1 || !item.key) {\r\n list.push(item);\r\n }\r\n });\r\n } else {\r\n list = this.operBtn();\r\n }\r\n if (this.customBtns.length > 0) {\r\n list = [];\r\n this.customBtns.map((item) => {\r\n if (this.excludeBtn.indexOf(item.key) == -1 || !item.key) {\r\n list.push(item);\r\n }\r\n });\r\n }\r\n\r\n let r = {\r\n outside: [],\r\n inside: [],\r\n };\r\n if (list.length > 4) {\r\n r.outside = list.splice(list.length - 4, list.length - 1);\r\n r.inside = list;\r\n } else {\r\n r.outside = list;\r\n }\r\n\r\n if (flag && this.customBtn) {\r\n this.customBtn(\r\n { btnList: this.operBtn(), processStatus: this.processStatus },\r\n (e) => {\r\n this.customBtns = e;\r\n this.straightenBtns(false);\r\n },\r\n () => {\r\n this.$emit(\"Complete\");\r\n }\r\n );\r\n console.log(\"=======333\");\r\n } else {\r\n this.absoluteBtns = r;\r\n this.$nextTick(() => {\r\n this.calculateHeight();\r\n this.footBtnLoading = false;\r\n this.boxLoading = false;\r\n });\r\n }\r\n },\r\n },\r\n computed: {\r\n dynamicStyle() {\r\n \t\t\treturn { '--dynamic-ctx-height': this.dynamicMaxHeight }\r\n\t\t\t},\r\n attachShow() {\r\n const extendedProperties = (this.processData.form || {}).extendedProperties || []\r\n\r\n let sign = false;\r\n let fd;\r\n let annex = \"\";\r\n console.error(this.operationLabel, 'operationLabel')\r\n switch (this.operationLabel) {\r\n case \"退回\":\r\n // annex = this.operationParam.taskObj.otherButtonAnnexList;\r\n fd = extendedProperties.find(i => {\r\n return i.name == 'otherButtonAnnexList'\r\n })\r\n annex = fd ? fd.value : ''\r\n if (annex) sign = true;\r\n break;\r\n case \"通过\":\r\n case \"办理\":\r\n fd = extendedProperties.find(i => {\r\n return i.name == 'completeButtonAnnex'\r\n })\r\n annex = fd ? fd.value : ''\r\n if (annex) sign = true;\r\n break;\r\n case \"处理\":\r\n // annex = this.operationParam.taskObj.completeButtonAnnex;\r\n fd = extendedProperties.find(i => {\r\n return i.name == 'completeButtonAnnex'\r\n })\r\n annex = fd ? fd.value : ''\r\n if (annex) sign = true;\r\n break;\r\n case \"同意\":\r\n // annex = this.operationParam.taskObj.completeButtonAnnex;\r\n fd = extendedProperties.find(i => {\r\n return i.name == 'completeButtonAnnex'\r\n })\r\n annex = fd ? fd.value : ''\r\n if (annex) sign = true;\r\n break;\r\n case \"拒绝\":\r\n // annex = this.operationParam.taskObj.otherButtonAnnexList;\r\n fd = extendedProperties.find(i => {\r\n return i.name == 'otherButtonAnnexList'\r\n })\r\n annex = fd ? fd.value : ''\r\n break;\r\n case \"加签\":\r\n // annex = this.operationParam.taskObj.counterSignButtonAnnex;\r\n fd = extendedProperties.find(i => {\r\n return i.name == 'counterSignButtonAnnex'\r\n })\r\n annex = fd ? fd.value : ''\r\n if (annex) sign = true;\r\n break;\r\n case \"转办\":\r\n // annex = this.operationParam.taskObj.delegateTaskButtonAnnex;\r\n fd = extendedProperties.find(i => {\r\n return i.name == 'delegateTaskButtonAnnex'\r\n })\r\n annex = fd ? fd.value : ''\r\n if (annex) sign = true;\r\n break;\r\n }\r\n // 校验自定义按钮\r\n let temp = \"\";\r\n if (typeof annex != \"string\" && annex != null) {\r\n annex.map((item) => {\r\n if (item.indexOf(this.operationLabel) != -1) {\r\n sign = true;\r\n temp = item;\r\n }\r\n });\r\n }\r\n if (temp) annex = temp;\r\n\r\n // 解析数据\r\n if (sign) {\r\n const annexArr = annex.split(\":\");\r\n this.attachRule.required = annexArr[1] == \"true\" ? true : false;\r\n this.attachRule.limit =\r\n annexArr[2] == -1 ? 999 : annexArr[2];\r\n }\r\n return sign;\r\n },\r\n },\r\n};\r\n</script>\r\n<!-- <style >\r\n.demo-tabs {\r\n position: relative;\r\n .el-tabs__header {\r\n position: sticky;\r\n top: 0;\r\n background-color: #fff;\r\n z-index: 1997;\r\n }\r\n}\r\n</style> -->\r\n\r\n<style scoped lang=\"scss\">\r\n.operation-box {\r\n max-height: var(--dynamic-ctx-height);\r\n overflow: auto;\r\n padding-right: 20px;\r\n}\r\n.el-dropdown-menu__item {\r\n min-width: 140px;\r\n border-bottom: 1px solid #e8e8e8;\r\n .el-button--text {\r\n color: #333 !important;\r\n }\r\n &:hover {\r\n .el-button--text {\r\n color: #1389ff !important;\r\n }\r\n }\r\n &:last-child {\r\n border: none !important;\r\n }\r\n}\r\n.el-dropdown-menu {\r\n padding-bottom: 30px;\r\n}\r\n.mianContent {\r\n & > .tabs {\r\n & > .demo-tabs {\r\n & > ::v-deep .el-tabs__header {\r\n position: sticky;\r\n top: -20px;\r\n background-color: #fff;\r\n z-index: 1997;\r\n }\r\n }\r\n }\r\n}\r\n\r\n.top-tabs {\r\n position: fixed;\r\n top: 62px;\r\n background-color: #fff;\r\n right: 0px;\r\n z-index: 1997;\r\n}\r\n.mianContent {\r\n height: 100%;\r\n overflow: hidden;\r\n position: relative;\r\n display: flex;\r\n flex-direction: column;\r\n // margin-top: 20px;\r\n // padding-top: 20px;\r\n // width: 100%;\r\n /* // margin-bottom: 10px; */\r\n // overflow: hidden;\r\n .demo-tabs {\r\n flex: 1;\r\n height: 0;\r\n // height: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n ::v-deep .el-tabs__content {\r\n flex: 1;\r\n height: 0;\r\n &::-webkit-scrollbar {\r\n width: 0;\r\n }\r\n }\r\n ::v-deep .el-tab-pane {\r\n height: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n overflow-y: auto;\r\n &.pane-流程图 {\r\n .bpmn-look {\r\n height: 0;\r\n flex: 1;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n.mianContent .rowtitle {\r\n /* margin-top: 24px; */\r\n margin-bottom: 16px;\r\n font-size: 16px;\r\n font-weight: bold;\r\n\r\n border-left: 4px solid #1389ff;\r\n padding-left: 9px;\r\n}\r\n\r\n.mianContent .topCard {\r\n overflow: hidden;\r\n /* // border: 1px solid #DADBDE; */\r\n}\r\n\r\n.mianContent .topCard .topRow {\r\n display: flex;\r\n /* // line-height: 46px; */\r\n font-size: 14px;\r\n font-weight: 400;\r\n line-height: 32px;\r\n}\r\n\r\n.mianContent .topCard .topRow div:first-child {\r\n color: #333333;\r\n}\r\n\r\n.mianContent .topCard .topRow div:last-child {\r\n color: #777777;\r\n padding-left: 10px;\r\n}\r\n\r\n.mianContent .topCard .topRow div.process-mliv-dd {\r\n /* // height: 26px; */\r\n min-width: 30px;\r\n padding: 0px 16px;\r\n border-radius: 4px;\r\n background: #1389ff;\r\n color: #fff;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n font-size: 12px;\r\n margin-left: 10px;\r\n}\r\n\r\n.mianContent .tabs {\r\n /* // margin-bottom: 60px; */\r\n height: 0;\r\n flex: 1;\r\n overflow: visible !important;\r\n display: flex;\r\n flex-direction: column;\r\n}\r\n\r\n.mianContent .tabs :deep(.is-active) {\r\n font-size: 16px;\r\n}\r\n\r\n// .mianContent .tabs :deep(.el-tabs__content) {\r\n// height: calc(100% - 55px);\r\n// /* 修改BUGID:1003401 */\r\n// overflow: auto;\r\n// }\r\n.mianContent .tabs :deep(.el-tabs__header) {\r\n position: sticky;\r\n top: 0;\r\n background-color: #fff;\r\n z-index: 1997;\r\n}\r\n\r\n// .mianContent .tabs :deep(.el-tabs__content)::-webkit-scrollbar {\r\n// width: 0;\r\n// }\r\n\r\n.mianContent .topBtnRow {\r\n display: flex;\r\n justify-content: flex-end;\r\n align-items: center;\r\n height: 100%;\r\n}\r\n\r\n.mianContent .footBtnRow {\r\n // display: flex;\r\n // justify-content: center;\r\n // align-items: center;\r\n // box-sizing: border-box;\r\n // // height: 100%;\r\n // position: fixed;\r\n // bottom: 0;\r\n // right: 20px;\r\n // height: 50px;\r\n // border-top: 1px solid #dadbde;\r\n // margin-top: 10px;\r\n // background-color: #fff;\r\n z-index: 1001;\r\n\r\n width: 100%;\r\n padding: 12px 0;\r\n background-color: #fff;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n -webkit-transition: 0.3s;\r\n transition: 0.3s;\r\n -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);\r\n box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);\r\n .el-button {\r\n min-width: 74px;\r\n height: 36px;\r\n border-radius: 6px;\r\n }\r\n}\r\n\r\n// .mianContent .footBtnRow {\r\n// display: flex;\r\n// justify-content: center;\r\n// align-items: center;\r\n// box-sizing: border-box;\r\n// // height: 100%;\r\n// position: fixed;\r\n// bottom: 0;\r\n// right: 20px;\r\n// height: 50px;\r\n// border-top: 1px solid #dadbde;\r\n// margin-top: 10px;\r\n// background-color: #fff;\r\n// z-index: 1001;\r\n// .el-button {\r\n// min-width: 74px;\r\n// height: 36px;\r\n// border-radius: 6px;\r\n// }\r\n// }\r\n\r\n.formInput {\r\n width: 90%;\r\n}\r\n\r\n.dialog :deep(.el-dialog__header) {\r\n padding: 18px 24px;\r\n font-size: 18px;\r\n font-weight: 400;\r\n}\r\n\r\n.dialog ::v-deep.el-dialog__body {\r\n border-top: 1px solid #dadbde;\r\n border-bottom: 1px solid #dadbde;\r\n overflow: visible;\r\n padding-right: 10px;\r\n}\r\n\r\n.dialog :deep(.el-dialog__footer) {\r\n padding: 12px;\r\n text-align: center;\r\n}\r\n.dialog {\r\n .el-dialog__header {\r\n padding: 18px 24px;\r\n font-size: 18px;\r\n font-weight: 400;\r\n display: flex;\r\n align-items: center;\r\n }\r\n}\r\n\r\n.dialog :deep(.el-dialog__body) {\r\n border-top: 1px solid #dadbde;\r\n border-bottom: 1px solid #dadbde;\r\n overflow: visible;\r\n}\r\n\r\n.dialog {\r\n .el-dialog__body {\r\n padding: 45px 30px;\r\n }\r\n .el-dialog__footer {\r\n padding: 12px !important;\r\n text-align: center;\r\n }\r\n .el-dialog__headerbtn {\r\n top: 10px;\r\n right: 16px;\r\n }\r\n}\r\n.view-file {\r\n color: #1389ff;\r\n cursor: pointer;\r\n}\r\n.view-node-info {\r\n cursor: pointer;\r\n color: #1389ff;\r\n margin-left: 34px;\r\n font-size: 16px;\r\n}\r\n.iconsR {\r\n cursor: pointer;\r\n transform: rotate(90deg);\r\n}\r\n::v-deep .task .el-radio-group {\r\n .el-radio--small.is-bordered {\r\n margin: 0 20px;\r\n }\r\n .el-radio.is-bordered + .el-radio.is-bordered {\r\n margin: 5px 20px;\r\n }\r\n}\r\n.sign-img {\r\n width: 60px;\r\n height: 60px;\r\n}\r\n</style>\r\n"]}, media: undefined });
|
|
10426
|
+
inject("data-v-c82eb612_0", { source: "@charset \"UTF-8\";\n.operation-box[data-v-c82eb612] {\n max-height: var(--dynamic-ctx-height);\n overflow: auto;\n padding-right: 20px;\n}\n.el-dropdown-menu__item[data-v-c82eb612] {\n min-width: 140px;\n border-bottom: 1px solid #e8e8e8;\n}\n.el-dropdown-menu__item .el-button--text[data-v-c82eb612] {\n color: #333 !important;\n}\n.el-dropdown-menu__item:hover .el-button--text[data-v-c82eb612] {\n color: #1389ff !important;\n}\n.el-dropdown-menu__item[data-v-c82eb612]:last-child {\n border: none !important;\n}\n.el-dropdown-menu[data-v-c82eb612] {\n padding-bottom: 30px;\n}\n.mianContent > .tabs > .demo-tabs[data-v-c82eb612] > .el-tabs__header {\n position: sticky;\n top: -20px;\n background-color: #fff;\n z-index: 1997;\n}\n.top-tabs[data-v-c82eb612] {\n position: fixed;\n top: 62px;\n background-color: #fff;\n right: 0px;\n z-index: 1997;\n}\n.mianContent[data-v-c82eb612] {\n height: 100%;\n overflow: hidden;\n position: relative;\n display: flex;\n flex-direction: column;\n /* // margin-bottom: 10px; */\n}\n.mianContent .demo-tabs[data-v-c82eb612] {\n flex: 1;\n height: 0;\n display: flex;\n flex-direction: column;\n}\n.mianContent .demo-tabs[data-v-c82eb612] .el-tabs__content {\n flex: 1;\n height: 0;\n}\n.mianContent .demo-tabs[data-v-c82eb612] .el-tabs__content::-webkit-scrollbar {\n width: 0;\n}\n.mianContent .demo-tabs[data-v-c82eb612] .el-tab-pane {\n height: 100%;\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n}\n.mianContent .demo-tabs[data-v-c82eb612] .el-tab-pane.pane-流程图 .bpmn-look {\n height: 0;\n flex: 1;\n}\n.mianContent .rowtitle[data-v-c82eb612] {\n /* margin-top: 24px; */\n margin-bottom: 16px;\n font-size: 16px;\n font-weight: bold;\n border-left: 4px solid #1389ff;\n padding-left: 9px;\n}\n.mianContent .topCard[data-v-c82eb612] {\n overflow: hidden;\n /* // border: 1px solid #DADBDE; */\n}\n.mianContent .topCard .topRow[data-v-c82eb612] {\n display: flex;\n /* // line-height: 46px; */\n font-size: 14px;\n font-weight: 400;\n line-height: 32px;\n}\n.mianContent .topCard .topRow div[data-v-c82eb612]:first-child {\n color: #333333;\n}\n.mianContent .topCard .topRow div[data-v-c82eb612]:last-child {\n color: #777777;\n padding-left: 10px;\n}\n.mianContent .topCard .topRow div.process-mliv-dd[data-v-c82eb612] {\n /* // height: 26px; */\n min-width: 30px;\n padding: 0px 16px;\n border-radius: 4px;\n background: #1389ff;\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n margin-left: 10px;\n}\n.mianContent .tabs[data-v-c82eb612] {\n /* // margin-bottom: 60px; */\n height: 0;\n flex: 1;\n overflow: visible !important;\n display: flex;\n flex-direction: column;\n}\n.mianContent .tabs[data-v-c82eb612] :deep(.is-active) {\n font-size: 16px;\n}\n.mianContent .tabs[data-v-c82eb612] :deep(.el-tabs__header) {\n position: sticky;\n top: 0;\n background-color: #fff;\n z-index: 1997;\n}\n.mianContent .topBtnRow[data-v-c82eb612] {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n height: 100%;\n}\n.mianContent .footBtnRow[data-v-c82eb612] {\n z-index: 1001;\n width: 100%;\n padding: 12px 0;\n background-color: #fff;\n display: flex;\n justify-content: center;\n align-items: center;\n -webkit-transition: 0.3s;\n transition: 0.3s;\n -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);\n box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);\n}\n.mianContent .footBtnRow .el-button[data-v-c82eb612] {\n min-width: 74px;\n height: 36px;\n border-radius: 6px;\n}\n.formInput[data-v-c82eb612] {\n width: 90%;\n}\n.dialog[data-v-c82eb612] :deep(.el-dialog__header) {\n padding: 18px 24px;\n font-size: 18px;\n font-weight: 400;\n}\n.dialog[data-v-c82eb612] .el-dialog__body {\n border-top: 1px solid #dadbde;\n border-bottom: 1px solid #dadbde;\n overflow: visible;\n padding-right: 10px;\n}\n.dialog[data-v-c82eb612] :deep(.el-dialog__footer) {\n padding: 12px;\n text-align: center;\n}\n.dialog .el-dialog__header[data-v-c82eb612] {\n padding: 18px 24px;\n font-size: 18px;\n font-weight: 400;\n display: flex;\n align-items: center;\n}\n.dialog[data-v-c82eb612] :deep(.el-dialog__body) {\n border-top: 1px solid #dadbde;\n border-bottom: 1px solid #dadbde;\n overflow: visible;\n}\n.dialog .el-dialog__body[data-v-c82eb612] {\n padding: 45px 30px;\n}\n.dialog .el-dialog__footer[data-v-c82eb612] {\n padding: 12px !important;\n text-align: center;\n}\n.dialog .el-dialog__headerbtn[data-v-c82eb612] {\n top: 10px;\n right: 16px;\n}\n.view-file[data-v-c82eb612] {\n color: #1389ff;\n cursor: pointer;\n}\n.view-node-info[data-v-c82eb612] {\n cursor: pointer;\n color: #1389ff;\n margin-left: 34px;\n font-size: 16px;\n}\n.iconsR[data-v-c82eb612] {\n cursor: pointer;\n transform: rotate(90deg);\n}\n[data-v-c82eb612] .task .el-radio-group .el-radio--small.is-bordered {\n margin: 0 20px;\n}\n[data-v-c82eb612] .task .el-radio-group .el-radio.is-bordered + .el-radio.is-bordered {\n margin: 5px 20px;\n}\n.sign-img[data-v-c82eb612] {\n width: 60px;\n height: 60px;\n}\n\n/*# sourceMappingURL=index.vue.map */", map: {"version":3,"sources":["index.vue","C:\\cod\\items\\ui-process-pc\\vue2\\src\\components\\zjp_process\\index.vue"],"names":[],"mappings":"AAAA,gBAAgB;ACgqDhB;EACA,qCAAA;EACA,cAAA;EACA,mBAAA;AD9pDA;ACgqDA;EACA,gBAAA;EACA,gCAAA;AD7pDA;AC8pDA;EACA,sBAAA;AD5pDA;AC+pDA;EACA,yBAAA;AD7pDA;ACgqDA;EACA,uBAAA;AD9pDA;ACiqDA;EACA,oBAAA;AD9pDA;ACmqDA;EACA,gBAAA;EACA,UAAA;EACA,sBAAA;EACA,aAAA;ADhqDA;ACsqDA;EACA,eAAA;EACA,SAAA;EACA,sBAAA;EACA,UAAA;EACA,aAAA;ADnqDA;ACqqDA;EACA,YAAA;EACA,gBAAA;EACA,kBAAA;EACA,aAAA;EACA,sBAAA;EAIA,4BAAA;ADrqDA;ACuqDA;EACA,OAAA;EACA,SAAA;EAEA,aAAA;EACA,sBAAA;ADtqDA;ACuqDA;EACA,OAAA;EACA,SAAA;ADrqDA;ACsqDA;EACA,QAAA;ADpqDA;ACuqDA;EACA,YAAA;EACA,aAAA;EACA,sBAAA;EACA,gBAAA;ADrqDA;ACuqDA;EACA,SAAA;EACA,OAAA;ADrqDA;AC4qDA;EACA,sBAAA;EACA,mBAAA;EACA,eAAA;EACA,iBAAA;EAEA,8BAAA;EACA,iBAAA;AD1qDA;AC6qDA;EACA,gBAAA;EACA,kCAAA;AD1qDA;AC6qDA;EACA,aAAA;EACA,0BAAA;EACA,eAAA;EACA,gBAAA;EACA,iBAAA;AD1qDA;AC6qDA;EACA,cAAA;AD1qDA;AC6qDA;EACA,cAAA;EACA,kBAAA;AD1qDA;AC6qDA;EACA,qBAAA;EACA,eAAA;EACA,iBAAA;EACA,kBAAA;EACA,mBAAA;EACA,WAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,eAAA;EACA,iBAAA;AD1qDA;AC6qDA;EACA,4BAAA;EACA,SAAA;EACA,OAAA;EACA,4BAAA;EACA,aAAA;EACA,sBAAA;AD1qDA;AC6qDA;EACA,eAAA;AD1qDA;ACkrDA;EACA,gBAAA;EACA,MAAA;EACA,sBAAA;EACA,aAAA;AD/qDA;ACsrDA;EACA,aAAA;EACA,yBAAA;EACA,mBAAA;EACA,YAAA;ADnrDA;ACsrDA;EAaA,aAAA;EAEA,WAAA;EACA,eAAA;EACA,sBAAA;EACA,aAAA;EACA,uBAAA;EACA,mBAAA;EACA,wBAAA;EACA,gBAAA;EACA,mDAAA;EACA,2CAAA;ADhsDA;ACisDA;EACA,eAAA;EACA,YAAA;EACA,kBAAA;AD/rDA;ACwtDA;EACA,UAAA;ADrtDA;ACwtDA;EACA,kBAAA;EACA,eAAA;EACA,gBAAA;ADrtDA;ACwtDA;EACA,6BAAA;EACA,gCAAA;EACA,iBAAA;EACA,mBAAA;ADrtDA;ACwtDA;EACA,aAAA;EACA,kBAAA;ADrtDA;ACwtDA;EACA,kBAAA;EACA,eAAA;EACA,gBAAA;EACA,aAAA;EACA,mBAAA;ADrtDA;ACytDA;EACA,6BAAA;EACA,gCAAA;EACA,iBAAA;ADttDA;AC0tDA;EACA,kBAAA;ADvtDA;ACytDA;EACA,wBAAA;EACA,kBAAA;ADvtDA;ACytDA;EACA,SAAA;EACA,WAAA;ADvtDA;AC0tDA;EACA,cAAA;EACA,eAAA;ADvtDA;ACytDA;EACA,eAAA;EACA,cAAA;EACA,iBAAA;EACA,eAAA;ADttDA;ACwtDA;EACA,eAAA;EACA,wBAAA;ADrtDA;ACwtDA;EACA,cAAA;ADrtDA;ACutDA;EACA,gBAAA;ADrtDA;ACwtDA;EACA,WAAA;EACA,YAAA;ADrtDA;;AAEA,oCAAoC","file":"index.vue","sourcesContent":["@charset \"UTF-8\";\n.operation-box {\n max-height: var(--dynamic-ctx-height);\n overflow: auto;\n padding-right: 20px;\n}\n\n.el-dropdown-menu__item {\n min-width: 140px;\n border-bottom: 1px solid #e8e8e8;\n}\n.el-dropdown-menu__item .el-button--text {\n color: #333 !important;\n}\n.el-dropdown-menu__item:hover .el-button--text {\n color: #1389ff !important;\n}\n.el-dropdown-menu__item:last-child {\n border: none !important;\n}\n\n.el-dropdown-menu {\n padding-bottom: 30px;\n}\n\n.mianContent > .tabs > .demo-tabs > ::v-deep .el-tabs__header {\n position: sticky;\n top: -20px;\n background-color: #fff;\n z-index: 1997;\n}\n\n.top-tabs {\n position: fixed;\n top: 62px;\n background-color: #fff;\n right: 0px;\n z-index: 1997;\n}\n\n.mianContent {\n height: 100%;\n overflow: hidden;\n position: relative;\n display: flex;\n flex-direction: column;\n /* // margin-bottom: 10px; */\n}\n.mianContent .demo-tabs {\n flex: 1;\n height: 0;\n display: flex;\n flex-direction: column;\n}\n.mianContent .demo-tabs ::v-deep .el-tabs__content {\n flex: 1;\n height: 0;\n}\n.mianContent .demo-tabs ::v-deep .el-tabs__content::-webkit-scrollbar {\n width: 0;\n}\n.mianContent .demo-tabs ::v-deep .el-tab-pane {\n height: 100%;\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n}\n.mianContent .demo-tabs ::v-deep .el-tab-pane.pane-流程图 .bpmn-look {\n height: 0;\n flex: 1;\n}\n\n.mianContent .rowtitle {\n /* margin-top: 24px; */\n margin-bottom: 16px;\n font-size: 16px;\n font-weight: bold;\n border-left: 4px solid #1389ff;\n padding-left: 9px;\n}\n\n.mianContent .topCard {\n overflow: hidden;\n /* // border: 1px solid #DADBDE; */\n}\n\n.mianContent .topCard .topRow {\n display: flex;\n /* // line-height: 46px; */\n font-size: 14px;\n font-weight: 400;\n line-height: 32px;\n}\n\n.mianContent .topCard .topRow div:first-child {\n color: #333333;\n}\n\n.mianContent .topCard .topRow div:last-child {\n color: #777777;\n padding-left: 10px;\n}\n\n.mianContent .topCard .topRow div.process-mliv-dd {\n /* // height: 26px; */\n min-width: 30px;\n padding: 0px 16px;\n border-radius: 4px;\n background: #1389ff;\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n margin-left: 10px;\n}\n\n.mianContent .tabs {\n /* // margin-bottom: 60px; */\n height: 0;\n flex: 1;\n overflow: visible !important;\n display: flex;\n flex-direction: column;\n}\n\n.mianContent .tabs :deep(.is-active) {\n font-size: 16px;\n}\n\n.mianContent .tabs :deep(.el-tabs__header) {\n position: sticky;\n top: 0;\n background-color: #fff;\n z-index: 1997;\n}\n\n.mianContent .topBtnRow {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n height: 100%;\n}\n\n.mianContent .footBtnRow {\n z-index: 1001;\n width: 100%;\n padding: 12px 0;\n background-color: #fff;\n display: flex;\n justify-content: center;\n align-items: center;\n -webkit-transition: 0.3s;\n transition: 0.3s;\n -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);\n box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);\n}\n.mianContent .footBtnRow .el-button {\n min-width: 74px;\n height: 36px;\n border-radius: 6px;\n}\n\n.formInput {\n width: 90%;\n}\n\n.dialog :deep(.el-dialog__header) {\n padding: 18px 24px;\n font-size: 18px;\n font-weight: 400;\n}\n\n.dialog ::v-deep.el-dialog__body {\n border-top: 1px solid #dadbde;\n border-bottom: 1px solid #dadbde;\n overflow: visible;\n padding-right: 10px;\n}\n\n.dialog :deep(.el-dialog__footer) {\n padding: 12px;\n text-align: center;\n}\n\n.dialog .el-dialog__header {\n padding: 18px 24px;\n font-size: 18px;\n font-weight: 400;\n display: flex;\n align-items: center;\n}\n\n.dialog :deep(.el-dialog__body) {\n border-top: 1px solid #dadbde;\n border-bottom: 1px solid #dadbde;\n overflow: visible;\n}\n\n.dialog .el-dialog__body {\n padding: 45px 30px;\n}\n.dialog .el-dialog__footer {\n padding: 12px !important;\n text-align: center;\n}\n.dialog .el-dialog__headerbtn {\n top: 10px;\n right: 16px;\n}\n\n.view-file {\n color: #1389ff;\n cursor: pointer;\n}\n\n.view-node-info {\n cursor: pointer;\n color: #1389ff;\n margin-left: 34px;\n font-size: 16px;\n}\n\n.iconsR {\n cursor: pointer;\n transform: rotate(90deg);\n}\n\n::v-deep .task .el-radio-group .el-radio--small.is-bordered {\n margin: 0 20px;\n}\n::v-deep .task .el-radio-group .el-radio.is-bordered + .el-radio.is-bordered {\n margin: 5px 20px;\n}\n\n.sign-img {\n width: 60px;\n height: 60px;\n}\n\n/*# sourceMappingURL=index.vue.map */","<template>\r\n <div\r\n class=\"mianContent\"\r\n v-loading=\"boxLoading && !isButton\"\r\n ref=\"mianContent\"\r\n :style=\"{\r\n // height:\r\n // activeName == '流程图'\r\n // ? '100%'\r\n // : $refs['footBtnRow']\r\n // ? `calc(100% - 50px)`\r\n // : ' 100%',\r\n // overflow: activeName == '流程图' ? 'hidden !important' : 'auto',\r\n }\"\r\n >\r\n <template v-if=\"!isButton\">\r\n <div class=\"tabs\" ref=\"baseTabs\">\r\n <el-tabs\r\n v-model=\"activeName\"\r\n class=\"demo-tabs\"\r\n @tab-click=\"handleClick\"\r\n >\r\n <el-tab-pane\r\n :label=\"item.name\"\r\n :name=\"item.slot || item.name\"\r\n v-for=\"(item, index) in tabs\"\r\n :key=\"index\"\r\n :item=\"item\"\r\n :class=\"['pane-' + item.name]\"\r\n >\r\n <template v-if=\"item.name == '基本信息' && !item.slot\">\r\n <div :style=\"`min-height: ${tabheight}px;`\">\r\n <slot name=\"default\" :taskNode=\"getTaskNode()\"></slot>\r\n </div>\r\n </template>\r\n <template v-else-if=\"item.name == '流程图' && !item.slot\">\r\n <div class=\"view-node-info\" @click=\"getNodeList\">\r\n 查看流程节点信息\r\n </div>\r\n <iframe\r\n v-if=\"trackUrl\"\r\n :src=\"trackUrl\"\r\n style=\"width: 100%; height: 100%; border: none\"\r\n :style=\"{ height: `${iframeHeight}px` }\"\r\n scrolling=\"no\"\r\n frameborder=\"0\"\r\n :key=\"processId\"\r\n ></iframe>\r\n <!-- 展示条件需要同时满足v-if -->\r\n <bpmnLook v-if=\"activeName == '流程图' && processData.process && processData.process.xml\" :approvalData=\"processData.flow\" :diagram=\"processData.process.xml\"></bpmnLook>\r\n <div\r\n v-else\r\n style=\"\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n \"\r\n >\r\n 暂无流程图\r\n </div>\r\n </template>\r\n <template v-else-if=\"item.name == '审批记录' && !item.slot\">\r\n <processFlow v-if=\"activeName == '审批记录' && processData.flow\" :flow-list=\"formatFlow(processData.flow)\"></processFlow>\r\n <div\r\n v-else\r\n style=\"\r\n height: 100px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n \"\r\n >\r\n 暂无数据\r\n </div>\r\n </template>\r\n <template v-else>\r\n <div :style=\"`min-height: ${tabheight}px;`\">\r\n <slot\r\n v-if=\"item.slot\"\r\n :name=\"item.slot\"\r\n :taskNode=\"getTaskNode()\"\r\n ></slot>\r\n <slot v-else name=\"default\" :taskNode=\"getTaskNode()\"></slot>\r\n </div>\r\n </template>\r\n </el-tab-pane>\r\n <!-- <el-tab-pane label=\"流程图\" name=\"2\" style=\"height: 100%\">\r\n </el-tab-pane> -->\r\n <!-- <el-tab-pane label=\"审批记录\" name=\"3\">\r\n <el-table\r\n :data=\"taskCommentList\"\r\n border\r\n style=\"width: 100%; margin-bottom: 20px\"\r\n v-if=\"taskCommentList && taskCommentList.length > 0\"\r\n >\r\n <el-table-column type=\"index\" width=\"80\" label=\"序号\" />\r\n <el-table-column\r\n prop=\"activityName\"\r\n label=\"节点名称\"\r\n ></el-table-column>\r\n <el-table-column\r\n prop=\"createUserName\"\r\n label=\"审批人\"\r\n ></el-table-column>\r\n <el-table-column\r\n prop=\"actionName\"\r\n label=\"审批操作\"\r\n ></el-table-column>\r\n <el-table-column prop=\"msg\" label=\"审批意见\">\r\n <template #default=\"scope\">\r\n <div v-html=\"scope.row.msg\"></div>\r\n <el-popover\r\n placement=\"bottom-end\"\r\n :width=\"500\"\r\n trigger=\"click\"\r\n v-if=\"scope.row.metaAnnexList.length > 0\"\r\n >\r\n <template #reference>\r\n <div class=\"view-file\">查看附件</div>\r\n </template>\r\n <ViewFile\r\n v-if=\"scope.row.metaAnnexList\"\r\n :dataList=\"scope.row.metaAnnexList\"\r\n />\r\n </el-popover>\r\n </template>\r\n </el-table-column>\r\n <el-table-column\r\n prop=\"createDate\"\r\n label=\"审批时间\"\r\n ></el-table-column>\r\n </el-table>\r\n <div\r\n v-else\r\n style=\"\r\n height: 100px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n \"\r\n >\r\n 暂无数据\r\n </div>\r\n </el-tab-pane> -->\r\n </el-tabs>\r\n </div>\r\n </template>\r\n <!-- 底部按钮 -->\r\n <!-- <processBtns\r\n :loading=\"submitLoading\"\r\n :button-list=\"processData.button\"\r\n :userId=\"userId\"\r\n :process=\"processData.process\"\r\n :comment=\"comment\"\r\n @draft=\"handleDraft({ taskId: process.taskId, variables: form })\"\r\n @examine=\"handleExamine\"\r\n @user-select=\"handleUserSelect\"\r\n @print=\"handlePrint\"\r\n @rollback=\"handleRollbackTask\"\r\n @terminate=\"handleTerminateProcess\"\r\n @withdraw=\"handleWithdrawTask\"\r\n @reminders=\"handleReminders\"\r\n @circulate=\"handleCirculate\"\r\n ></processBtns> -->\r\n\r\n <div\r\n class=\"footBtnRow foot-item\"\r\n :style=\"{ width: mainWidth + 'px' }\"\r\n ref=\"footBtnRow\"\r\n v-if=\"isAdditional && absoluteBtns.outside.length > 0\"\r\n >\r\n <slot name=\"btn\" v-bind=\"processStatus\"></slot>\r\n </div>\r\n <div v-else-if=\"!showBtns\"></div>\r\n <div\r\n class=\"footBtnRow foot-item\"\r\n ref=\"footBtnRow\"\r\n :style=\"{ width: mainWidth + 'px' }\"\r\n v-else-if=\"\r\n (!ProcessInsObj.end &&\r\n absoluteBtns.outside.length > 0 &&\r\n processStatus.appId != 'com.awspaas.user.apps.root') ||\r\n customBtns.length > 0\r\n \"\r\n v-loading=\"footBtnLoading\"\r\n >\r\n <!-- <slot name=\"btn\"> -->\r\n <template\r\n v-if=\"\r\n (processData.process.status == 'todo' || customBtns.length > 0) &&\r\n absoluteBtns.outside.length > 0\r\n \"\r\n >\r\n <el-dropdown\r\n placement=\"top-start\"\r\n trigger=\"click\"\r\n v-if=\"absoluteBtns.inside.length > 0\"\r\n >\r\n <el-button size=\"small\" style=\"margin-right: 10px\"> 更多 </el-button>\r\n <el-dropdown-menu slot=\"dropdown\">\r\n <el-dropdown-item\r\n v-for=\"(item, index) in absoluteBtns.inside\"\r\n :key=\"item.name + index\"\r\n @click.native=\"\r\n () => {\r\n item.click();\r\n aftClickBtn = item;\r\n }\r\n \"\r\n >\r\n <el-button\r\n class=\"btn drop-btn\"\r\n type=\"text\"\r\n size=\"mini\"\r\n :icon=\"item.icon\"\r\n :loading=\"buttonLoading\"\r\n >\r\n {{ item.name }}\r\n </el-button>\r\n </el-dropdown-item>\r\n </el-dropdown-menu>\r\n </el-dropdown>\r\n <el-button\r\n v-for=\"item in absoluteBtns.outside\"\r\n :key=\"item.name\"\r\n v-bind=\"item.btnProps\"\r\n @click=\"\r\n () => {\r\n item.click();\r\n aftClickBtn = item;\r\n }\r\n \"\r\n size=\"small\"\r\n :loading=\"buttonLoading\"\r\n >\r\n {{ item.name }}\r\n </el-button>\r\n </template>\r\n <!-- </slot> -->\r\n <slot name=\"btnAppend\"></slot>\r\n </div>\r\n <div class=\"dialog\">\r\n <el-dialog\r\n :visible.sync=\"dialogVisibleOperation\"\r\n append-to-body\r\n class=\"dialog\"\r\n width=\"600px\"\r\n v-dialogDrag\r\n :title=\"operationLabel\"\r\n :close-on-click-modal=\"false\"\r\n :show-close=\"!isOperLoading\"\r\n :before-close=\"cancelHandlerFn\"\r\n top=\"6vh\" :style=\"dynamicStyle\"\r\n >\r\n <div class=\"operation-box\" ref=\"obRef\">\r\n <component\r\n v-if=\"dialogVisibleOperation\"\r\n ref=\"operationRef\"\r\n :is=\"operationCom\"\r\n :param=\"operationParam\"\r\n @success=\"operationSuccess\"\r\n @fail=\"operationFail\"\r\n :isOperLoading=\"isOperLoading\"\r\n >\r\n <template #form>\r\n <slot :name=\"aftClickBtn.slot\" v-if=\"aftClickBtn.slot\"></slot>\r\n </template>\r\n <template #file>\r\n <el-form\r\n label-width=\"120px\"\r\n status-icon\r\n v-if=\"attachShow\"\r\n @submit.native.prevent\r\n :rules=\"rules\"\r\n >\r\n <el-form-item\r\n label=\"附件\"\r\n :prop=\"attachRule.required ? 'attach' : ''\"\r\n >\r\n <jyr-file-upload\r\n v-model=\"attach\"\r\n :multiple=\"attachRule.limit > 0\"\r\n :limit=\"attachRule.limit\"\r\n fullFileObject\r\n showFileName\r\n ref=\"fileUpload\"\r\n />\r\n </el-form-item>\r\n </el-form>\r\n </template>\r\n </component>\r\n </div>\r\n\r\n <template #footer>\r\n <el-button\r\n v-loading\r\n type=\"primary\"\r\n @click=\"onClickOperation\"\r\n :loading=\"isOperLoading\"\r\n >确 定</el-button\r\n >\r\n <el-button\r\n v-loading\r\n @click=\"cancelHandlerFn\"\r\n :loading=\"isOperLoading\"\r\n >取 消</el-button\r\n >\r\n </template>\r\n </el-dialog>\r\n <!-- 选择任务 -->\r\n <el-dialog\r\n title=\"选择处理任务\"\r\n :visible.sync=\"showMulTask\"\r\n append-to-body\r\n :close-on-click-modal=\"false\"\r\n width=\"500px\"\r\n :show-close=\"false\"\r\n >\r\n <el-form ref=\"form\" label-width=\"100px\" class=\"task\">\r\n <el-form-item label=\"请选择:\" prop=\"content\">\r\n <el-radio-group v-model=\"mulTaskTaskId\" size=\"small\">\r\n <el-radio\r\n v-for=\"item in mulTaskList\"\r\n :key=\"item.nodeId\"\r\n :label=\"item.taskId\"\r\n border\r\n >{{ item.nodeName }}</el-radio\r\n >\r\n </el-radio-group>\r\n </el-form-item>\r\n </el-form>\r\n <div class=\"dialog-footer\">\r\n <el-button type=\"primary\" @click=\"onCheckSure\">确定</el-button>\r\n </div>\r\n </el-dialog>\r\n <el-dialog\r\n :visible.sync=\"nodeInfoVisible\"\r\n append-to-body\r\n width=\"600px\"\r\n title=\"流程节点信息\"\r\n :modal=\"false\"\r\n :close-on-click-modal=\"false\"\r\n v-dialogDrag\r\n >\r\n <el-table :data=\"filterFlow(processData.flow)\" border>\r\n <el-table-column\r\n label=\"序号\"\r\n type=\"index\"\r\n width=\"120px\"\r\n ></el-table-column>\r\n <el-table-column prop=\"historyActivityName\" label=\"节点名称\"></el-table-column>\r\n <!-- <el-table-column prop=\"type\" label=\"类型\"></el-table-column> -->\r\n <el-table-column\r\n prop=\"assigneeName\"\r\n label=\"审批人\"\r\n ></el-table-column>\r\n </el-table>\r\n </el-dialog>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { Message as ElMessage, MessageBox as ElMessageBox } from \"element-ui\";\r\nimport treeselect from \"@riophae/vue-treeselect\";\r\nimport \"@riophae/vue-treeselect/dist/vue-treeselect.css\";\r\nimport api from \"./api\";\r\nimport * as $enum from \"./enum\";\r\nimport staffTree from \"./staff-tree.vue\";\r\nimport ViewFile from \"./view-file.vue\";\r\nimport * as operation from \"./operation/index.js\";\r\nimport JyrFileUpload from \"../JyrFileUpload/index\";\r\nimport processBtns from \"./operation/processBtns.vue\";\r\nimport processFlow from \"./operation/processFlow.vue\";\r\nimport bpmnLook from './bpmnLook.vue';\r\nimport dayjs from \"dayjs\";\r\nimport { getNodeUserParams } from './utils'\r\n\r\nexport default {\r\n components: { bpmnLook, processBtns, processFlow, treeselect, staffTree, ...operation, ViewFile, JyrFileUpload },\r\n props: {\r\n /** 流程实例id */\r\n taskId: {\r\n // require: true,\r\n default: false,\r\n type: String,\r\n },\r\n processId: {\r\n require: true,\r\n default: false,\r\n type: String,\r\n },\r\n // processDefId: {\r\n // require: false,\r\n // default: false,\r\n // type: String,\r\n // },\r\n userId: { require: true, default: \"\", type: String },\r\n // task: {\r\n // default: false,\r\n // type: Object,\r\n // },\r\n showBtns: {\r\n default: true,\r\n type: Boolean,\r\n },\r\n isView: {\r\n default: false,\r\n type: Boolean,\r\n },\r\n getVars: { type: Function },\r\n before: { type: Function },\r\n isAlis: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n isAdditional: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n businessData: {\r\n type: Object,\r\n default: undefined,\r\n },\r\n excludeBtn: {\r\n type: String,\r\n default: \"\",\r\n },\r\n showAsPlanned: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n showCommIdea: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n commentMsgRequired: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n customBtn: {\r\n default: \"\",\r\n },\r\n tabs: {\r\n default: () => [\r\n {\r\n name: \"基本信息\",\r\n slot: \"\",\r\n },\r\n {\r\n name: \"流程图\",\r\n slot: \"\",\r\n },\r\n {\r\n name: \"审批记录\",\r\n slot: \"\",\r\n },\r\n ],\r\n },\r\n personType: {\r\n default: \"\",\r\n },\r\n personEntity: {\r\n type: Object,\r\n default: () => {},\r\n },\r\n isButton: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n provide() {\r\n return {\r\n isAlisInject: this.isAlis,\r\n };\r\n },\r\n // emits: ['update:modelValue', \"getData\", \"change\", \"changeGetData\"],\r\n data() {\r\n return {\r\n incomingConditionItemList: [],\r\n // 流程信息\r\n deptId: '',\r\n initProcessData: {\r\n button: [],\r\n flow: [],\r\n form: {},\r\n process: {},\r\n },\r\n processData: {\r\n button: [],\r\n flow: [],\r\n form: {},\r\n process: {},\r\n },\r\n submitLoading: false,\r\n flowChartVisible: false,\r\n comment: null,\r\n // 流程信息\r\n dynamicMaxHeight: '400px',\r\n showMulTask: false,\r\n mulTaskList: [],\r\n mulTaskTaskId: \"\",\r\n attach: [],\r\n customBtns: [],\r\n overheight: 10,\r\n iframeHeight: 500,\r\n mainWidth: 0,\r\n absoluteTaskId: \"\",\r\n infoView: false,\r\n showTopTabs: false,\r\n buttonLoading: false,\r\n footBtnLoading: true,\r\n tabheight: 400,\r\n aftClickBtn: \"\",\r\n attachRule: {\r\n required: true,\r\n limit: 0,\r\n },\r\n nodeInfoVisible: false,\r\n nodeInfoList: [],\r\n jjForm: {\r\n saveMetaAnnexCmdList: [],\r\n },\r\n targetUID: \"\",\r\n commentMsg: \"\",\r\n trackUrl: \"\",\r\n taskObj: {},\r\n taskCommentList: [],\r\n absoluteBtns: { inside: [], outside: [] },\r\n processStatus: \"\",\r\n nextTaskNode: [],\r\n activeName: \"基本信息\",\r\n ProcessInsObj: {},\r\n outGatewayUserTaskModel: [],\r\n dialogVisibleOperation: false,\r\n operationLabel: \"\",\r\n operationCom: {},\r\n operationParam: {},\r\n taskNode: [],\r\n aftTaskNode: {},\r\n operation,\r\n Enum: $enum,\r\n isOperLoading: false,\r\n boxLoading: false,\r\n rules: {\r\n attach: [{ required: true, trigger: \"change\" }],\r\n },\r\n\t noReload: false,\r\n digitalSignatureList: []\r\n };\r\n },\r\n mounted() {\r\n window.onresize = () => {\r\n return (() => {\r\n if (this.$refs[\"mianContent\"]) {\r\n this.mainWidth = this.$refs[\"mianContent\"].offsetWidth;\r\n }\r\n })();\r\n };\r\n },\r\n watch: {\r\n activeName: function (n) {\r\n if (n == 1) this.activeName = \"基本信息\";\r\n },\r\n infoView: function () {\r\n this.calculateHeight();\r\n },\r\n taskId: {\r\n handler(val) {\r\n if (!val) return;\r\n this.absoluteTaskId = val;\r\n },\r\n deep: true,\r\n immediate: true,\r\n },\r\n processId: {\r\n handler(val) {\r\n if (val) {\r\n this.customBtns = [];\r\n this.absoluteBtns = { inside: [], outside: [] };\r\n this.activeName = this.tabs.length > 0 ? this.tabs[0][\"name\"] : \"\";\r\n console.error(this.activeName, 'this.activeName')\r\n // 获取流程节点,流程图,流程实例,流程审批\r\n this.getProcessInfo()\r\n if (Date.now()) return;\r\n\r\n api.repository.queryTaskNodeList(this.processId).then((e) => {\r\n\t\t\t if(!this.noReload){\r\n\t\t\t\t this.noReload = false\r\n\t\t\t\t if (!this.absoluteTaskId && e.data.length > 1) {\r\n\t\t\t\t this.mulTaskList = e.data;\r\n\t\t\t\t this.showMulTask = true;\r\n\t\t\t\t return;\r\n\t\t\t\t } else {\r\n\t\t\t\t this.absoluteTaskId =\r\n\t\t\t\t e.data && e.data.length > 0 ? e.data[0][\"taskId\"] : \"\";\r\n\t\t\t\t this.aftTaskNode = e.data[0];\r\n\t\t\t\t }\r\n\t\t\t }\r\n\r\n console.log(\"======\", this.absoluteTaskId);\r\n if (e.code == $enum.apiCode.success) {\r\n this.taskNode = e.data;\r\n api.pis\r\n .getProcessStatus(this.processId, this.absoluteTaskId)\r\n .then((res) => {\r\n if (res.code == $enum.apiCode.success) {\r\n this.processStatus = res.data;\r\n if (this.absoluteTaskId) {\r\n api.repository\r\n .getUserTaskModelCmd(this.absoluteTaskId)\r\n .then((res) => {\r\n if (res.code == $enum.apiCode.success) {\r\n this.taskObj = res.data;\r\n this.straightenBtns();\r\n }\r\n });\r\n } else {\r\n this.straightenBtns();\r\n }\r\n }\r\n });\r\n }\r\n });\r\n\r\n api.repository\r\n .getTrackUrl({ processInstId: val, type: $enum.SourceType.电脑端 })\r\n .then((res) => {\r\n if (res.code == $enum.apiCode.success) {\r\n if (window.location.protocol == \"https:\") {\r\n if (res.data.indexOf(\"http://121.40.143.183:80/\") >= 0) {\r\n this.trackUrl = res.data.replace(\r\n \"http://121.40.143.183:80/\",\r\n \"https://acme-aws.ddzg.cn/\"\r\n )\r\n } else if (res.data.indexOf(\"http://121.40.143.183/\") >= 0) {\r\n this.trackUrl = res.data.replace(\r\n \"http://121.40.143.183/\",\r\n \"https://acme-aws.ddzg.cn/\"\r\n )\r\n } else if (res.data.indexOf(\"http://acme-aws.ddzg.cn/\") >= 0) {\r\n this.trackUrl = res.data.replace(\r\n \"http://acme-aws.ddzg.cn/\",\r\n \"https://acme-aws.ddzg.cn/\"\r\n )\r\n } else if (res.data.indexOf(\"http://59.53.91.231:8088/\") >= 0) {\r\n this.trackUrl = res.data.replace(\r\n \"http://59.53.91.231:8088/\",\r\n \"https://acme-test.ddzg.cn:2119/\"\r\n )\r\n } else if (res.data.indexOf(\"http://59.53.91.230:8088/\") >= 0) {\r\n this.trackUrl = res.data.replace(\r\n \"http://59.53.91.230:8088/\",\r\n \"https://kq.ddzg.cn:8093/\"\r\n )\r\n } else {\r\n this.trackUrl = res.data\r\n }\r\n } else {\r\n this.trackUrl = res.data;\r\n }\r\n }\r\n });\r\n api.tis.getTaskCommentList(this.processId, \"\").then((res) => {\r\n this.taskCommentList = res.data;\r\n this.digitalSignatureList = res.data.filter(item => item.digitalSignature).map(item => item.digitalSignature)\r\n });\r\n api.pis.getProcessInstanceById(this.processId).then((res) => {\r\n this.ProcessInsObj = res.data;\r\n this.$nextTick(() => {\r\n this.calculateHeight();\r\n });\r\n });\r\n\r\n // api.repository.queryTaskNodeList(this.processId).then((res) => {\r\n // if (res.code == $enum.apiCode.success) this.taskNode = res.data;\r\n // });\r\n }\r\n },\r\n immediate: true,\r\n //这个参数代表监听对象时,可以监听深度嵌套的对象属性\r\n deep: true,\r\n },\r\n absoluteTaskId: {\r\n handler(val) {\r\n if (val) {\r\n }\r\n },\r\n immediate: true,\r\n //这个参数代表监听对象时,可以监听深度嵌套的对象属性\r\n deep: true,\r\n },\r\n dialogVisibleOperation: {\r\n handler(val) {\r\n this.$emit(\"show-modal\", val);\r\n },\r\n },\r\n },\r\n methods: {\r\n // 流程\r\n formatFlow(flow) {\r\n const newFlow = (flow || []).map(item => {\r\n return {\r\n ...item,\r\n attachmentsFujian: (item.attachments || []).filter(i => i.type != 'signature'),\r\n attachmentsQianzi: (item.attachments || []).filter(i => i.type == 'signature'),\r\n }\r\n })\r\n return newFlow\r\n },\r\n cancelHandlerFn(){\r\n this.dialogVisibleOperation = false\r\n this.submitLoading = false\r\n },\r\n filterFlow(flowArr) {\r\n return flowArr.filter((item) => {\r\n return ['userTask', 'candidate'].includes(item.historyActivityType)\r\n });\r\n },\r\n getProcessInfo() {\r\n this.submitLoading = true\r\n this.boxLoading = true;\r\n\r\n api.tis.getTaskModelDetail(this.taskId ? {\r\n processInstId: this.processId,\r\n taskId: this.taskId,\r\n } : {\r\n processInstId: this.processId,\r\n }).then(async res => {\r\n if (res.code == 200) {\r\n this.processData = {\r\n ...this.initProcessData,\r\n ...(res.data || {}),\r\n };\r\n const deptId = ((this.processData.process || {}).variables || {}).deptId\r\n this.deptId = deptId\r\n const taskId = (this.processData.process || {}).taskId\r\n this.taskObj.buttons = this.processData.button\r\n this.absoluteTaskId = taskId\r\n this.straightenBtns();\r\n console.log(deptId, 'id')\r\n this.$nextTick(() => {\r\n this.calculateHeight();\r\n });\r\n\r\n console.log(this.processData.flow, 'flw')\r\n this.flowChartVisible = true\r\n this.submitLoading = false\r\n this.boxLoading = false\r\n }\r\n })\r\n },\r\n // 通过部门id获取流程节点的人员\r\n getUserDataByDeptId() {\r\n this.processList.map(async (item, index) => {\r\n console.log(item, 'item')\r\n const nodeUserParams = getNodeUserParams(item)\r\n let res\r\n try {\r\n res = await this.getNodeUser({\r\n deptId: this.deptId,\r\n intersection: nodeUserParams.intersection ? 1 : 0,\r\n userIds: nodeUserParams.userIds,\r\n postIds: nodeUserParams.postIds,\r\n deptIds: nodeUserParams.deptIds,\r\n })\r\n } catch (error) {\r\n console.log(error, 'error')\r\n }\r\n if (res.code == Enum.apiCode.success) {\r\n const l = this.processList[index]\r\n l.userList = res.data\r\n this.$set(this.processList, index, l)\r\n\r\n }\r\n // console.log(user, 'user', index)\r\n })\r\n },\r\n handleDraft() {\r\n this.submitLoading = true;\r\n },\r\n // 提交(办理)true、取消申请 false\r\n handleExamine(flag, name) {\r\n console.log(flag, 'flag')\r\n if (flag) {\r\n this.handlePass(name)\r\n } else {\r\n this.handleCancel(name)\r\n }\r\n this.submitLoading = true;\r\n },\r\n // 办理\r\n async handlePass(name) {\r\n if (this.deptId) {\r\n await this.getNextNode(this.deptId)\r\n }\r\n if (this.before) {\r\n this.before().then(() => {\r\n this.showOperation(operation.complete, name);\r\n });\r\n } else {\r\n this.showOperation(operation.complete, name);\r\n }\r\n },\r\n // 取消申请\r\n handleCancel(name) {\r\n this.showOperation(operation.cancel, name);\r\n },\r\n // 转办transfer,委托delegate,addInstance\r\n handleUserSelect({ type, checkType, name}) {\r\n if (type == 'transfer') {\r\n this.handleTransfer(name)\r\n }\r\n else if (type == 'addInstance') {\r\n this.handleAddInstance(name)\r\n }\r\n console.log('handleUserselect')\r\n },\r\n // 转办\r\n handleTransfer(name) {\r\n this.showOperation(operation.delegateTask, name);\r\n },\r\n // 加签\r\n handleAddInstance(name) {\r\n this.showOperation(operation.counterSign, name);\r\n },\r\n handlePrint() {\r\n console.log('handlePrint')\r\n },\r\n handleRollbackTask(name) {\r\n console.log('handleRollbackTask')\r\n this.showOperation(operation.roolback, name);\r\n },\r\n handleTerminateProcess() {\r\n console.log('handleTerminateProcess')\r\n },\r\n // 传阅\r\n handleCirculate(name) {\r\n console.log('handleCirculate')\r\n this.showOperation(operation.ccTask, name);\r\n },\r\n // 撤销,撤回\r\n handleWithdrawTask(name) {\r\n console.log('handleWithdrawTask')\r\n this.handleRevoke();\r\n // this.showOperation(operation.withdrawTask, '请选择撤销/撤回操作');\r\n },\r\n // 流程\r\n findTargetHtml(startNode, targetClass, searchKey = 'parentElement') {\r\n\t\t\t\tif (!startNode) return null\r\n \t\t\tif (startNode.classList.contains(targetClass)) {\r\n \t\t\treturn startNode\r\n \t\t\t}\r\n \t\t\tlet curEl = startNode[searchKey]\r\n \t\t\tif (!curEl) return null\r\n \t\t\tif (searchKey == 'children') {\r\n \t\t\tfor (let i = 0; i <= curEl.length - 1; i++) {\r\n \t\t\tif (curEl[i].classList.contains(targetClass)) {\r\n \t\t\treturn curEl[i]\r\n \t\t\t}\r\n \t\t\t}\r\n \t\t\treturn\r\n \t\t\t}\r\n \t\t\treturn this.findTargetHtml(curEl, targetClass)\r\n\t\t\t},\r\n findImageIndex(item){\r\n return item ? this.digitalSignatureList.findIndex(i => i == item) : -1\r\n },\r\n onCheckSure() {\r\n this.absoluteTaskId = this.mulTaskTaskId;\r\n this.mulTaskList.map((item) => {\r\n if (item.taskId == this.mulTaskTaskId) {\r\n this.aftTaskNode = item;\r\n }\r\n });\r\n\t this.noReload = true\r\n this.showMulTask = false;\r\n this.footBtnLoading = true;\r\n let temp = this.processId;\r\n this.processId = \"\";\r\n this.processId = temp;\r\n },\r\n showButtonLoading() {\r\n this.buttonLoading = true;\r\n },\r\n hideButtonLoading() {\r\n this.buttonLoading = false;\r\n },\r\n calculateHeight() {\r\n let h = 0;\r\n if (this.$refs[\"footBtnRow\"]) {\r\n h += this.$refs[\"footBtnRow\"].offsetHeight;\r\n }\r\n if (this.$refs[\"mianContent\"]) {\r\n this.mainWidth = this.$refs[\"mianContent\"].offsetWidth;\r\n }\r\n if (this.infoView && this.absoluteBtns.outside.length > 0) {\r\n h += 32;\r\n }\r\n if (this.$refs[\"infoBoxFign\"]) {\r\n let windowHeight =\r\n window.innerHeight ||\r\n document.documentElement.clientHeight ||\r\n document.body.clientHeight;\r\n this.tabheight =\r\n windowHeight - this.$refs[\"infoBoxFign\"].offsetTop - 192;\r\n }\r\n this.overheight = h + 116;\r\n this.iframeHeight = this.$refs[\"mianContent\"].offsetHeight - 146;\r\n },\r\n getNodeList() {\r\n this.nodeInfoVisible = true;\r\n // api.pis.findNodeParticipantRows(this.processId).then((e) => {\r\n \r\n // e.data.map((item) => {\r\n // if (item.type == \"串签\" || item.type == \"并签\") {\r\n // item[\"name\"] += `【${item.type}】`;\r\n // }\r\n // });\r\n // this.nodeInfoList = e.data;\r\n // });\r\n },\r\n fileNameLastof(e, len = 0) {\r\n if (e.indexOf(\"http\") == -1) len = 0;\r\n if (!e) return;\r\n let last = \"/\";\r\n if (e.indexOf(\"\\\\\") != -1) {\r\n last = \"\\\\\";\r\n }\r\n //整理文件名\r\n let filename = e;\r\n let lastindex = filename.lastIndexOf(last);\r\n return filename.substr(lastindex + 1 + len, filename.length);\r\n },\r\n clickCustomButton(name) {\r\n this.$emit(\"clickCustomButton\", {\r\n name,\r\n processStatus: this.processStatus,\r\n setName: (label) => {\r\n this.taskObj.buttons.map((item) => {\r\n if (item.label == name) {\r\n item.label = label;\r\n }\r\n });\r\n this.straightenBtns();\r\n },\r\n });\r\n },\r\n // 获取下一个节点数据\r\n async getNextNode(deptId) {\r\n let res1\r\n try {\r\n res1 = await api.tis.simulation(\r\n this.absoluteTaskId,\r\n this.processId,\r\n );\r\n } catch (e) {\r\n console.error(e)\r\n res1 = {}\r\n }\r\n console.log(res1, 'res ')\r\n\r\n \r\n let nextTaskNode = res1.data || {};\r\n\r\n // 复杂网关分支:\r\n if (res1.code == 200 && !res1.data.evaluation) {\r\n this.incomingConditionItemList = []\r\n nextTaskNode.branches = await this.getOutgoingProcessNode(\r\n this.absoluteTaskId,\r\n res1.data.id\r\n );\r\n }\r\n\r\n console.log(nextTaskNode, 'nextTaskNode')\r\n\r\n console.log(nextTaskNode, 'next')\r\n if (nextTaskNode.id && !nextTaskNode.setPersonnel) {\r\n const nodeUserParams = getNodeUserParams(nextTaskNode)\r\n let res\r\n try {\r\n res = await this.getNodeUser({\r\n // 需要传入部门id\r\n deptId: deptId,\r\n intersection: nodeUserParams.intersection ? 1 : 0,\r\n userIds: nodeUserParams.userIds,\r\n postIds: nodeUserParams.postIds,\r\n deptIds: nodeUserParams.deptIds,\r\n })\r\n } catch (error) {\r\n console.log(error, 'error')\r\n }\r\n if (res.code == $enum.apiCode.success) {\r\n nextTaskNode.userList = res.data\r\n }\r\n }\r\n this.nextTaskNode = nextTaskNode\r\n console.log(nextTaskNode, 'getNextNode')\r\n },\r\n // 获取节点的人员\r\n async getNodeUser({ deptId, intersection, userIds, postIds, deptIds }) {\r\n return await api.user.getTaskAuditor({\r\n deptId,\r\n intersection,\r\n userIds,\r\n postIds,\r\n deptIds\r\n })\r\n },\r\n async showOperation(com, label) {\r\n this.attach = [];\r\n if (false && this.processStatus.allUserNames.length > 0) {\r\n if (this.absoluteTaskId) {\r\n let vars;\r\n if (this.getVars) {\r\n vars = this.getVars();\r\n if (vars === false) {\r\n return false;\r\n }\r\n }\r\n let res = await api.tis.simulation(\r\n this.absoluteTaskId,\r\n this.processId,\r\n vars\r\n );\r\n if (res.code == $enum.apiCode.success) {\r\n for (var i in res.data) {\r\n if (\r\n res.data[i][\"type\"] != \"endEvent\" &&\r\n (res.data[i].userTaskModelDTO.humanPerformer.name ==\r\n \"固定账户\" ||\r\n res.data[i].userTaskModelDTO.humanPerformer.name ==\r\n \"与流程申请人相关\")\r\n ) {\r\n await api.repository\r\n .getParticipantsOfPerformerNames(this.absoluteTaskId, [\r\n res.data[i].id,\r\n ])\r\n .then((e) => {\r\n res.data[i].userTaskModelDTO.routeTxt[\"userNames\"] =\r\n e.data[res.data[i].id];\r\n });\r\n }\r\n }\r\n\r\n this.nextTaskNode = res.data;\r\n } else {\r\n this.nextTaskNode = [];\r\n this.outGatewayUserTaskModel = await this.getOutgoingProcessNode(\r\n this.absoluteTaskId,\r\n \"\"\r\n );\r\n }\r\n }\r\n }\r\n this.operationLabel = label;\r\n // this.operationParam = new operation.PorpParam(\"\", this.processId, this.processDefId, this.task.id, this.task.activityDefId);\r\n this.operationParam.processInstId = this.processId;\r\n // this.operationParam.processDefId = this.processDefId;\r\n this.operationParam.taskInstId = this.absoluteTaskId;\r\n // this.operationParam.taskDeftId = this.task.activityDefId;\r\n this.operationParam.nextTaskNode = this.nextTaskNode;\r\n this.operationParam.incomingConditionItemList = this.incomingConditionItemList\r\n this.operationParam.variables = (this.processData.process || {}).variables || {}\r\n this.operationParam.extendedProperties = (this.processData.form || {}).extendedProperties || []\r\n this.operationParam.taskObj = this.taskObj;\r\n this.operationParam.getVars = this.getVars;\r\n this.operationParam.outGatewayUserTaskModel =\r\n this.outGatewayUserTaskModel;\r\n this.operationParam.taskNode = this.getTaskNode();\r\n this.operationParam.businessData = this.businessData;\r\n this.operationParam.showAsPlanned = this.showAsPlanned;\r\n this.operationParam.showCommIdea = this.showCommIdea;\r\n this.operationParam.commentMsgRequired = this.commentMsgRequired;\r\n this.operationParam.personType = this.personType;\r\n this.operationParam.personEntity = {\r\n ...this.personEntity,\r\n ...(this.aftClickBtn.personEntity || {}),\r\n };\r\n this.operationParam.ProcessInsObj = this.ProcessInsObj;\r\n this.operationCom = com;\r\n this.dialogVisibleOperation = true;\r\n this.$nextTick(() => {\r\n \t\tlet ctnEl = this.$refs.obRef\r\n\t\t\t\tconsole.log(ctnEl, this.$refs);\r\n \t\tif (!ctnEl) return \r\n \t\tlet topDistance = ctnEl.getBoundingClientRect().top\r\n \t\tlet dialogEl = this.findTargetHtml(ctnEl, 'el-dialog')\r\n \t\tlet dialogFootEl = this.findTargetHtml(dialogEl, 'el-dialog__footer', 'children')\r\n \t\t// 视口高度 - margin - head - footer\r\n \t\tlet val = window.innerHeight - topDistance - topDistance - dialogFootEl.clientHeight - 32\r\n \t\tthis.dynamicMaxHeight = `${val}px`\r\n \t\t})\r\n },\r\n onClickOperation() {\r\n if (\r\n this.attachShow &&\r\n this.attachRule.required &&\r\n this.attach.length == 0\r\n ) {\r\n return ElMessage.error(\"请上传附件\");\r\n }\r\n if (this.aftClickBtn.preposition) {\r\n this.operationMain(this.aftClickBtn.preposition);\r\n } else {\r\n this.operationMain();\r\n }\r\n\r\n // if (this.$refs[\"fileUpload\"] && this.$refs[\"fileUpload\"].getLoading()) {\r\n // return ElMessage.error(\"请等待附件上传完成后重试\");\r\n // }\r\n },\r\n operationMain(preposition = false) {\r\n let saveMetaAnnexCmdList\r\n if (this.attachShow) {\r\n saveMetaAnnexCmdList = [];\r\n this.attach.map((item) => {\r\n saveMetaAnnexCmdList.push({\r\n id: item.id,\r\n name: this.fileNameLastof(item.name),\r\n size: item.fileSize,\r\n format: item.fileType,\r\n url: item.url,\r\n uploadTime: item.createTime,\r\n processInstId: this.operationParam.processInstId,\r\n taskInstId: this.operationParam.taskInstId,\r\n });\r\n });\r\n saveMetaAnnexCmdList = saveMetaAnnexCmdList.sort((a, b) => {\r\n return dayjs(a.uploadTime).valueOf() > dayjs(b.uploadTime).valueOf();\r\n });\r\n // api.tis.patchSave({\r\n // saveMetaAnnexCmdList,\r\n // });\r\n }\r\n\r\n if (this.$refs.operationRef) {\r\n this.$refs.operationRef.confirm(preposition, () => {\r\n this.isOperLoading = true;\r\n }, saveMetaAnnexCmdList);\r\n }\r\n },\r\n operationSuccess(isComplete = true) {\r\n ElMessage.success(\"操作成功\");\r\n this.dialogVisibleOperation = false;\r\n // router.go(0);\r\n if (isComplete) this.$emit(\"Complete\");\r\n this.isOperLoading = false;\r\n },\r\n operationFail(msg = \"\") {\r\n msg && ElMessage.warning(msg);\r\n this.isOperLoading = false;\r\n },\r\n async getOutgoingProcessNode(taskId, processNodeId) {\r\n let res = await api.repository.getOutgoingProcessNode(\r\n taskId,\r\n processNodeId\r\n );\r\n if (res.code == $enum.apiCode.success) {\r\n if (res.data) {\r\n for (let i = 0; i < res.data.length; i++) {\r\n let o = res.data[i];\r\n if (o.incomingConditionItemList && o.incomingConditionItemList.length !== 0) {\r\n o.nodeInfoDTO.incomingConditionItemList = o.incomingConditionItemList\r\n console.error(o.incomingConditionItemList, 'o.incomingConditionItemList')\r\n this.incomingConditionItemList.push(...o.incomingConditionItemList)\r\n }\r\n if (o.nodeInfoDTO.nodeType != 'userTask') {\r\n o.nodeInfoDTO.branches = await this.getOutgoingProcessNode(taskId, o.nodeInfoDTO.id);\r\n \r\n }\r\n if (\r\n res.data[i][\"type\"] != \"endEvent\" &&\r\n (res.data[i].humanPerformerName == \"固定账户\" ||\r\n res.data[i].humanPerformerName == \"与流程申请人相关\")\r\n ) {\r\n await api.repository\r\n .getParticipantsOfPerformerNames(taskId, [res.data[i].id])\r\n .then((e) => {\r\n res.data[i][\"routeTxt\"][\"userNames\"] = e.data[res.data[i].id];\r\n });\r\n }\r\n }\r\n\r\n if (res.data.length == 0) {\r\n res.data.push({\r\n id: \"\",\r\n incomingConditionItemList: [],\r\n type: \"endEvent\",\r\n name: \"结束事件\",\r\n });\r\n }\r\n }\r\n return res.data;\r\n }\r\n return [];\r\n },\r\n getColor(status) {\r\n if (status == \"审核中\" || status == \"审批中\") return \"#6DC743\";\r\n if (status == \"已驳回\") return \"#F14B4C\";\r\n if (status == \"已撤销\") return \"#CECECE\";\r\n if (status == \"已完成\") return \"#6DC743\";\r\n\r\n return \"#1389FF\";\r\n },\r\n handleClick(e) {\r\n this.$emit(\"clickTab\",JSON.parse(JSON.stringify(e.$vnode.data.attrs.item)));\r\n },\r\n getTaskNode() {\r\n if (this.taskNode.filter)\r\n return this.taskNode.filter((o) => {\r\n return o.nodeId == this.taskObj.id;\r\n });\r\n return [];\r\n },\r\n handleRevoke() {\r\n ElMessageBox.confirm(`确定撤销吗`, \"撤销\", {\r\n confirmButtonText: \"确定\",\r\n cancelButtonText: \"取消\",\r\n type: \"warning\",\r\n })\r\n .then(() => {\r\n api.tis\r\n .withdrawTask(this.processData.process.processInstanceId)\r\n .then((res) => {\r\n if (res.code == $enum.apiCode.success) {\r\n ElMessage.success(\"操作成功\");\r\n this.$emit(\"Complete\");\r\n }\r\n // else {\r\n // ElMessage.warning(res.msg);\r\n // }\r\n });\r\n })\r\n .catch(() => {\r\n ElMessage.info(\"取消操作\");\r\n });\r\n },\r\n handleReminders() {\r\n console.log(ElMessageBox);\r\n ElMessageBox.confirm(`确定催办吗`, \"催办\", {\r\n confirmButtonText: \"确定\",\r\n cancelButtonText: \"取消\",\r\n type: \"warning\",\r\n })\r\n .then(() => {\r\n api.tis.reminders(this.processData.process.processInstanceId).then((res) => {\r\n if (res.code == $enum.apiCode.success) {\r\n ElMessage.success(\"操作成功\");\r\n this.$emit(\"Complete\");\r\n }\r\n // else {\r\n // ElMessage.warning(res.msg);\r\n // }\r\n });\r\n })\r\n .catch((e) => {\r\n ElMessage.info(\"取消操作\");\r\n });\r\n },\r\n getButton(key) {\r\n return (this.processData.button || []).find(b => b.buttonKey == key);\r\n },\r\n operBtn() {\r\n let btnList = [];\r\n\r\n const process = this.processData.process;\r\n\r\n if (!process) {\r\n return btnList\r\n }\r\n\r\n // 加签\r\n if (process.status == 'todo' && process.isMultiInstance && this.getButton('wf_add_instance')) {\r\n let obj = {};\r\n obj.name = this.getButton('wf_add_instance').name\r\n obj.btnProps = { type: \"primary\" };\r\n obj.key = \"sign\";\r\n obj.click = () => {\r\n this.handleUserSelect({\r\n type: 'addInstance',\r\n checkType: 'checkbox',\r\n name: this.getButton('wf_add_instance').name,\r\n })\r\n };\r\n btnList.push(obj);\r\n }\r\n // if (flag && !this.isView && this.taskObj.counterSignLabel) {\r\n // let obj = {};\r\n // obj.name = this.taskObj.counterSignLabel;\r\n // obj.btnProps = { type: \"primary\" };\r\n // obj.key = \"sign\";\r\n // obj.click = () => {\r\n // this.showOperation(operation.counterSign, obj.name);\r\n // };\r\n // btnList.push(obj);\r\n // }\r\n\r\n // 转办\r\n if (process.status == 'todo' && this.getButton('wf_transfer')) {\r\n let obj = {};\r\n obj.name = this.getButton('wf_transfer').name\r\n obj.key = \"delegate\";\r\n obj.click = () => {\r\n this.handleUserSelect({\r\n type: 'transfer',\r\n checkType: 'radio',\r\n name: this.getButton('wf_transfer').name,\r\n })\r\n };\r\n btnList.push(obj);\r\n }\r\n // if (flag && !this.isView && this.taskObj.delegateTaskButtonLabel) {\r\n // let obj = {};\r\n // obj.name = this.taskObj.delegateTaskButtonLabel;\r\n // obj.key = \"delegate\";\r\n // obj.click = () => {\r\n // this.showOperation(operation.delegateTask, obj.name);\r\n // };\r\n // btnList.push(obj);\r\n // }\r\n\r\n // 委托\r\n if (process.status == 'todo' && this.getButton('wf_delegate')) {\r\n let obj = {};\r\n obj.name = this.getButton('wf_delegate').name\r\n obj.btnProps = { type: \"warning\" };\r\n obj.key = \"cc2\";\r\n obj.click = () => {\r\n this.handleUserSelect({\r\n type: 'delegate',\r\n checkType: 'radio',\r\n name: this.getButton('wf_delegate').name\r\n })\r\n };\r\n btnList.push(obj);\r\n }\r\n\r\n // 终止\r\n if (process.status == 'todo' && this.getButton('wf_terminate')) {\r\n let obj = {};\r\n obj.name = this.getButton('wf_terminate').name\r\n obj.btnProps = { type: \"danger\" };\r\n obj.key = \"cc3\";\r\n obj.click = () => {\r\n this.handleTerminateProcess()\r\n };\r\n btnList.push(obj);\r\n }\r\n\r\n // 传阅\r\n if (process.status == 'todo' && this.getButton('wf_cctask')) {\r\n let obj = {};\r\n obj.name = this.getButton('wf_cctask').name\r\n obj.btnProps = { type: \"primary\" };\r\n obj.key = \"cc\";\r\n obj.click = () => {\r\n this.handleCirculate(this.getButton('wf_cctask').name)\r\n };\r\n btnList.push(obj);\r\n }\r\n // if (flag && !this.isView && this.taskObj.ccTaskButtonLabel) {\r\n // let obj = {};\r\n // obj.name = this.taskObj.ccTaskButtonLabel;\r\n // obj.btnProps = { type: \"primary\" };\r\n // obj.key = \"cc\";\r\n // obj.click = () => {\r\n // this.showOperation(operation.ccTask, obj.name);\r\n // };\r\n // btnList.push(obj);\r\n // }\r\n \r\n // 催办\r\n if (process.status == 'todo' && this.userId == (process.variables || {}).applyUserId) {\r\n let obj = {};\r\n obj.name = \"催办\";\r\n // obj.btnProps = { color: \"#1389ff\" };\r\n obj.key = \"self\";\r\n obj.click = () => {\r\n this.handleReminders();\r\n };\r\n btnList.push(obj);\r\n }\r\n // if (\r\n // this.processId &&\r\n // this.processStatus.createTopUserId == this.userId &&\r\n // ((this.taskNode.length > 0 &&\r\n // this.aftTaskNode.taskState != $enum.TaskState.抄送) ||\r\n // this.processStatus.status == \"审批中\")\r\n // ) {\r\n // let obj = {};\r\n // obj.name = \"催办\";\r\n // // obj.btnProps = { color: \"#1389ff\" };\r\n // obj.key = \"self\";\r\n // obj.click = () => {\r\n // this.handleReminders();\r\n // };\r\n // btnList.push(obj);\r\n // }\r\n\r\n // 撤销\r\n if (\r\n process.isOwner &&\r\n process.isReturnable &&\r\n !['recall', 'reject'].includes(process.processIsFinished)\r\n ) {\r\n let obj = {};\r\n obj.name = \"撤销\";\r\n obj.btnProps = { type: \"danger\" };\r\n obj.key = \"self\";\r\n obj.click = () => {\r\n this.handleWithdrawTask('撤销');\r\n };\r\n btnList.push(obj);\r\n }\r\n\r\n // if (\r\n // this.processId &&\r\n // this.processStatus.createTopUserId == this.userId &&\r\n // ((this.taskNode.length > 0 &&\r\n // this.aftTaskNode.taskState != $enum.TaskState.抄送) ||\r\n // this.processStatus.status == \"审批中\")\r\n // ) {\r\n // let obj = {};\r\n // obj.name = \"撤销\";\r\n // obj.btnProps = { type: \"danger\" };\r\n // obj.key = \"self\";\r\n // obj.click = () => {\r\n // this.handleRevoke();\r\n // };\r\n // btnList.push(obj);\r\n // }\r\n\r\n // 拒绝\r\n if (\r\n process.status == 'todo' &&\r\n this.getButton('wf_reject')\r\n ) {\r\n let obj = {};\r\n obj.name = this.getButton('wf_reject').name\r\n obj.btnProps = { type: \"danger\" };\r\n obj.key = \"refuse\";\r\n obj.click = () => {\r\n this.handleExamine(false, this.getButton('wf_reject').name)\r\n };\r\n btnList.push(obj);\r\n }\r\n // if (flag && !this.isView && this.processStatus.currUserName) {\r\n // let obj = {};\r\n // obj.name = \"拒绝\";\r\n // obj.btnProps = { type: \"danger\" };\r\n // obj.key = \"refuse\";\r\n // obj.click = () => {\r\n // this.showOperation(operation.cancel, obj.name);\r\n // };\r\n // btnList.push(obj);\r\n // }\r\n\r\n // 办理\r\n if (process.status == 'todo' && this.getButton('wf_pass')) {\r\n let obj = {};\r\n obj.name = this.getButton('wf_pass').name\r\n obj.btnProps = { type: \"primary\" };\r\n obj.key = \"complete\";\r\n obj.click = () => {\r\n if (this.before) {\r\n this.before().then(() => {\r\n this.handleExamine(true, this.getButton('wf_pass').name)\r\n });\r\n } else {\r\n this.handleExamine(true, this.getButton('wf_pass').name)\r\n }\r\n };\r\n btnList.push(obj);\r\n }\r\n // if (flag && !this.isView && this.taskObj.completeButtonLabel) {\r\n // let obj = {};\r\n // obj.name = this.taskObj.completeButtonLabel;\r\n // obj.btnProps = { type: \"primary\" };\r\n // obj.key = \"complete\";\r\n // obj.click = () => {\r\n // if (this.before) {\r\n // this.before().then(() => {\r\n // this.showOperation(operation.complete, obj.name);\r\n // });\r\n // } else {\r\n // this.showOperation(operation.complete, obj.name);\r\n // }\r\n // };\r\n // btnList.push(obj);\r\n // }\r\n\r\n // 退回\r\n if (\r\n process.status == 'todo' &&\r\n this.getButton('wf_rollback')\r\n ) {\r\n let obj = {};\r\n obj.name = this.getButton('wf_rollback').name\r\n obj.btnProps = { type: \"danger\" };\r\n obj.key = \"back\";\r\n obj.click = () => {\r\n this.handleRollbackTask(this.getButton('wf_rollback').name)\r\n };\r\n // 退回可能还有种情况,就是自定义this.clickCustomButton(obj.name);\r\n\r\n btnList.unshift(obj);\r\n }\r\n // if (\r\n // flag &&\r\n // !this.isView &&\r\n // this.taskObj &&\r\n // this.taskObj.buttons.length > 0\r\n // ) {\r\n // this.taskObj.buttons.map((item) => {\r\n // let obj = {};\r\n // obj.name = item.label;\r\n // if (item.label == \"退回\") {\r\n // obj.btnProps = { type: \"danger\" };\r\n // obj.key = \"back\";\r\n // obj.click = () => {\r\n // this.showOperation(operation.roolback, obj.name);\r\n // };\r\n // } else {\r\n // obj.btnProps = {};\r\n // obj.key = item.label;\r\n // obj.click = () => {\r\n // this.clickCustomButton(obj.name);\r\n // };\r\n // }\r\n\r\n // btnList.unshift(obj);\r\n // });\r\n // }\r\n\r\n return btnList;\r\n },\r\n straightenBtns(flag = true) {\r\n let list = [];\r\n\r\n if (this.excludeBtn) {\r\n this.operBtn().map((item) => {\r\n if (this.excludeBtn.indexOf(item.key) == -1 || !item.key) {\r\n list.push(item);\r\n }\r\n });\r\n } else {\r\n list = this.operBtn();\r\n }\r\n if (this.customBtns.length > 0) {\r\n list = [];\r\n this.customBtns.map((item) => {\r\n if (this.excludeBtn.indexOf(item.key) == -1 || !item.key) {\r\n list.push(item);\r\n }\r\n });\r\n }\r\n\r\n let r = {\r\n outside: [],\r\n inside: [],\r\n };\r\n if (list.length > 4) {\r\n r.outside = list.splice(list.length - 4, list.length - 1);\r\n r.inside = list;\r\n } else {\r\n r.outside = list;\r\n }\r\n\r\n if (flag && this.customBtn) {\r\n this.customBtn(\r\n { btnList: this.operBtn(), processStatus: this.processStatus },\r\n (e) => {\r\n this.customBtns = e;\r\n this.straightenBtns(false);\r\n },\r\n () => {\r\n this.$emit(\"Complete\");\r\n }\r\n );\r\n console.log(\"=======333\");\r\n } else {\r\n this.absoluteBtns = r;\r\n this.$nextTick(() => {\r\n this.calculateHeight();\r\n this.footBtnLoading = false;\r\n this.boxLoading = false;\r\n });\r\n }\r\n },\r\n },\r\n computed: {\r\n dynamicStyle() {\r\n \t\t\treturn { '--dynamic-ctx-height': this.dynamicMaxHeight }\r\n\t\t\t},\r\n attachShow() {\r\n const extendedProperties = (this.processData.form || {}).extendedProperties || []\r\n\r\n let sign = false;\r\n let fd;\r\n let annex = \"\";\r\n console.error(this.operationLabel, 'operationLabel')\r\n switch (this.operationLabel) {\r\n case \"退回\":\r\n // annex = this.operationParam.taskObj.otherButtonAnnexList;\r\n fd = extendedProperties.find(i => {\r\n return i.name == 'otherButtonAnnexList'\r\n })\r\n annex = fd ? fd.value : ''\r\n if (annex) sign = true;\r\n break;\r\n case \"通过\":\r\n case \"办理\":\r\n fd = extendedProperties.find(i => {\r\n return i.name == 'completeButtonAnnex'\r\n })\r\n annex = fd ? fd.value : ''\r\n if (annex) sign = true;\r\n break;\r\n case \"处理\":\r\n // annex = this.operationParam.taskObj.completeButtonAnnex;\r\n fd = extendedProperties.find(i => {\r\n return i.name == 'completeButtonAnnex'\r\n })\r\n annex = fd ? fd.value : ''\r\n if (annex) sign = true;\r\n break;\r\n case \"同意\":\r\n // annex = this.operationParam.taskObj.completeButtonAnnex;\r\n fd = extendedProperties.find(i => {\r\n return i.name == 'completeButtonAnnex'\r\n })\r\n annex = fd ? fd.value : ''\r\n if (annex) sign = true;\r\n break;\r\n case \"拒绝\":\r\n // annex = this.operationParam.taskObj.otherButtonAnnexList;\r\n fd = extendedProperties.find(i => {\r\n return i.name == 'otherButtonAnnexList'\r\n })\r\n annex = fd ? fd.value : ''\r\n break;\r\n case \"加签\":\r\n // annex = this.operationParam.taskObj.counterSignButtonAnnex;\r\n fd = extendedProperties.find(i => {\r\n return i.name == 'counterSignButtonAnnex'\r\n })\r\n annex = fd ? fd.value : ''\r\n if (annex) sign = true;\r\n break;\r\n case \"转办\":\r\n // annex = this.operationParam.taskObj.delegateTaskButtonAnnex;\r\n fd = extendedProperties.find(i => {\r\n return i.name == 'delegateTaskButtonAnnex'\r\n })\r\n annex = fd ? fd.value : ''\r\n if (annex) sign = true;\r\n break;\r\n }\r\n // 校验自定义按钮\r\n let temp = \"\";\r\n if (typeof annex != \"string\" && annex != null) {\r\n annex.map((item) => {\r\n if (item.indexOf(this.operationLabel) != -1) {\r\n sign = true;\r\n temp = item;\r\n }\r\n });\r\n }\r\n if (temp) annex = temp;\r\n\r\n // 解析数据\r\n if (sign) {\r\n const annexArr = annex.split(\":\");\r\n this.attachRule.required = annexArr[1] == \"true\" ? true : false;\r\n this.attachRule.limit =\r\n annexArr[2] == -1 ? 999 : annexArr[2];\r\n }\r\n return sign;\r\n },\r\n },\r\n};\r\n</script>\r\n<!-- <style >\r\n.demo-tabs {\r\n position: relative;\r\n .el-tabs__header {\r\n position: sticky;\r\n top: 0;\r\n background-color: #fff;\r\n z-index: 1997;\r\n }\r\n}\r\n</style> -->\r\n\r\n<style scoped lang=\"scss\">\r\n.operation-box {\r\n max-height: var(--dynamic-ctx-height);\r\n overflow: auto;\r\n padding-right: 20px;\r\n}\r\n.el-dropdown-menu__item {\r\n min-width: 140px;\r\n border-bottom: 1px solid #e8e8e8;\r\n .el-button--text {\r\n color: #333 !important;\r\n }\r\n &:hover {\r\n .el-button--text {\r\n color: #1389ff !important;\r\n }\r\n }\r\n &:last-child {\r\n border: none !important;\r\n }\r\n}\r\n.el-dropdown-menu {\r\n padding-bottom: 30px;\r\n}\r\n.mianContent {\r\n & > .tabs {\r\n & > .demo-tabs {\r\n & > ::v-deep .el-tabs__header {\r\n position: sticky;\r\n top: -20px;\r\n background-color: #fff;\r\n z-index: 1997;\r\n }\r\n }\r\n }\r\n}\r\n\r\n.top-tabs {\r\n position: fixed;\r\n top: 62px;\r\n background-color: #fff;\r\n right: 0px;\r\n z-index: 1997;\r\n}\r\n.mianContent {\r\n height: 100%;\r\n overflow: hidden;\r\n position: relative;\r\n display: flex;\r\n flex-direction: column;\r\n // margin-top: 20px;\r\n // padding-top: 20px;\r\n // width: 100%;\r\n /* // margin-bottom: 10px; */\r\n // overflow: hidden;\r\n .demo-tabs {\r\n flex: 1;\r\n height: 0;\r\n // height: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n ::v-deep .el-tabs__content {\r\n flex: 1;\r\n height: 0;\r\n &::-webkit-scrollbar {\r\n width: 0;\r\n }\r\n }\r\n ::v-deep .el-tab-pane {\r\n height: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n overflow-y: auto;\r\n &.pane-流程图 {\r\n .bpmn-look {\r\n height: 0;\r\n flex: 1;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n.mianContent .rowtitle {\r\n /* margin-top: 24px; */\r\n margin-bottom: 16px;\r\n font-size: 16px;\r\n font-weight: bold;\r\n\r\n border-left: 4px solid #1389ff;\r\n padding-left: 9px;\r\n}\r\n\r\n.mianContent .topCard {\r\n overflow: hidden;\r\n /* // border: 1px solid #DADBDE; */\r\n}\r\n\r\n.mianContent .topCard .topRow {\r\n display: flex;\r\n /* // line-height: 46px; */\r\n font-size: 14px;\r\n font-weight: 400;\r\n line-height: 32px;\r\n}\r\n\r\n.mianContent .topCard .topRow div:first-child {\r\n color: #333333;\r\n}\r\n\r\n.mianContent .topCard .topRow div:last-child {\r\n color: #777777;\r\n padding-left: 10px;\r\n}\r\n\r\n.mianContent .topCard .topRow div.process-mliv-dd {\r\n /* // height: 26px; */\r\n min-width: 30px;\r\n padding: 0px 16px;\r\n border-radius: 4px;\r\n background: #1389ff;\r\n color: #fff;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n font-size: 12px;\r\n margin-left: 10px;\r\n}\r\n\r\n.mianContent .tabs {\r\n /* // margin-bottom: 60px; */\r\n height: 0;\r\n flex: 1;\r\n overflow: visible !important;\r\n display: flex;\r\n flex-direction: column;\r\n}\r\n\r\n.mianContent .tabs :deep(.is-active) {\r\n font-size: 16px;\r\n}\r\n\r\n// .mianContent .tabs :deep(.el-tabs__content) {\r\n// height: calc(100% - 55px);\r\n// /* 修改BUGID:1003401 */\r\n// overflow: auto;\r\n// }\r\n.mianContent .tabs :deep(.el-tabs__header) {\r\n position: sticky;\r\n top: 0;\r\n background-color: #fff;\r\n z-index: 1997;\r\n}\r\n\r\n// .mianContent .tabs :deep(.el-tabs__content)::-webkit-scrollbar {\r\n// width: 0;\r\n// }\r\n\r\n.mianContent .topBtnRow {\r\n display: flex;\r\n justify-content: flex-end;\r\n align-items: center;\r\n height: 100%;\r\n}\r\n\r\n.mianContent .footBtnRow {\r\n // display: flex;\r\n // justify-content: center;\r\n // align-items: center;\r\n // box-sizing: border-box;\r\n // // height: 100%;\r\n // position: fixed;\r\n // bottom: 0;\r\n // right: 20px;\r\n // height: 50px;\r\n // border-top: 1px solid #dadbde;\r\n // margin-top: 10px;\r\n // background-color: #fff;\r\n z-index: 1001;\r\n\r\n width: 100%;\r\n padding: 12px 0;\r\n background-color: #fff;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n -webkit-transition: 0.3s;\r\n transition: 0.3s;\r\n -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);\r\n box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);\r\n .el-button {\r\n min-width: 74px;\r\n height: 36px;\r\n border-radius: 6px;\r\n }\r\n}\r\n\r\n// .mianContent .footBtnRow {\r\n// display: flex;\r\n// justify-content: center;\r\n// align-items: center;\r\n// box-sizing: border-box;\r\n// // height: 100%;\r\n// position: fixed;\r\n// bottom: 0;\r\n// right: 20px;\r\n// height: 50px;\r\n// border-top: 1px solid #dadbde;\r\n// margin-top: 10px;\r\n// background-color: #fff;\r\n// z-index: 1001;\r\n// .el-button {\r\n// min-width: 74px;\r\n// height: 36px;\r\n// border-radius: 6px;\r\n// }\r\n// }\r\n\r\n.formInput {\r\n width: 90%;\r\n}\r\n\r\n.dialog :deep(.el-dialog__header) {\r\n padding: 18px 24px;\r\n font-size: 18px;\r\n font-weight: 400;\r\n}\r\n\r\n.dialog ::v-deep.el-dialog__body {\r\n border-top: 1px solid #dadbde;\r\n border-bottom: 1px solid #dadbde;\r\n overflow: visible;\r\n padding-right: 10px;\r\n}\r\n\r\n.dialog :deep(.el-dialog__footer) {\r\n padding: 12px;\r\n text-align: center;\r\n}\r\n.dialog {\r\n .el-dialog__header {\r\n padding: 18px 24px;\r\n font-size: 18px;\r\n font-weight: 400;\r\n display: flex;\r\n align-items: center;\r\n }\r\n}\r\n\r\n.dialog :deep(.el-dialog__body) {\r\n border-top: 1px solid #dadbde;\r\n border-bottom: 1px solid #dadbde;\r\n overflow: visible;\r\n}\r\n\r\n.dialog {\r\n .el-dialog__body {\r\n padding: 45px 30px;\r\n }\r\n .el-dialog__footer {\r\n padding: 12px !important;\r\n text-align: center;\r\n }\r\n .el-dialog__headerbtn {\r\n top: 10px;\r\n right: 16px;\r\n }\r\n}\r\n.view-file {\r\n color: #1389ff;\r\n cursor: pointer;\r\n}\r\n.view-node-info {\r\n cursor: pointer;\r\n color: #1389ff;\r\n margin-left: 34px;\r\n font-size: 16px;\r\n}\r\n.iconsR {\r\n cursor: pointer;\r\n transform: rotate(90deg);\r\n}\r\n::v-deep .task .el-radio-group {\r\n .el-radio--small.is-bordered {\r\n margin: 0 20px;\r\n }\r\n .el-radio.is-bordered + .el-radio.is-bordered {\r\n margin: 5px 20px;\r\n }\r\n}\r\n.sign-img {\r\n width: 60px;\r\n height: 60px;\r\n}\r\n</style>\r\n"]}, media: undefined });
|
|
9592
10427
|
|
|
9593
10428
|
};
|
|
9594
10429
|
/* scoped */
|
|
9595
|
-
const __vue_scope_id__$5 = "data-v-
|
|
10430
|
+
const __vue_scope_id__$5 = "data-v-c82eb612";
|
|
9596
10431
|
/* module identifier */
|
|
9597
10432
|
const __vue_module_identifier__$5 = undefined;
|
|
9598
10433
|
/* functional template */
|