ddy-process-pc-vue2 1.0.1-rc.2.1 → 1.0.1-rc.2.5

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ddy-process-pc-vue2",
3
- "version": "1.0.1-rc.2.1",
3
+ "version": "1.0.1-rc.2.5",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "bundleDependencies": false,
package/vue2/index.esm.js CHANGED
@@ -2905,6 +2905,10 @@ var script$g = {
2905
2905
  processNode: {
2906
2906
  handler(newVal, oldVal) {
2907
2907
  // 如果是长度为1,固定
2908
+ console.log(newVal, 'processNodeObj');
2909
+ if (newVal.nodeType == 'userTask' && newVal.setPersonnel && newVal.assignees && newVal.assignees.length > 0) {
2910
+ this.targetUserId = newVal.assignees.map(i => i.id);
2911
+ }
2908
2912
  if (newVal.userList && newVal.userList.length == 1) {
2909
2913
  this.targetUserId = newVal.userList[0].userId;
2910
2914
  }
@@ -3018,7 +3022,7 @@ var script$g = {
3018
3022
  )
3019
3023
  */
3020
3024
  // exclusiveGateway 节点
3021
-
3025
+ console.log(this.processNodeObj, 'this.processNodeObj 第一个判断');
3022
3026
  if (this.processNodeObj.nodeType == 'exclusiveGateway') {
3023
3027
  // 进来这里
3024
3028
  for (let key in this.userTaskListData) {
@@ -3082,11 +3086,15 @@ var script$g = {
3082
3086
  });
3083
3087
 
3084
3088
  } else {
3085
- this.processNodeObj.nodeInfoDTO.name && Message.warning(`请选择 ${this.processNodeObj.nodeInfoDTO.name} `);
3089
+ console.log(this.processNodeObj, 'this.processNodeObj.nodeInfoDTO 判断是否是多分支');
3090
+ // 判断是否是多分支
3091
+ if (this.processNodeObj && this.processNodeObj.nodeType == 'inclusiveGateway') {
3092
+ Message.warning(`请选择下一节点`);
3093
+ } else {
3094
+ this.processNodeObj.nodeInfoDTO.name && Message.warning(`请选择 ${this.processNodeObj.nodeInfoDTO.name} `);
3095
+ }
3086
3096
  return false;
3087
3097
  }
3088
-
3089
-
3090
3098
  }
3091
3099
  // 新流程需要进入这里
3092
3100
  else if (!this.processNodeObj.assignee || !Array.isArray(this.processNodeObj.assignee) || !this.processNodeObj.setPersonnel || this.isOption(this.processNodeObj.humanPerformerName)
@@ -3226,7 +3234,17 @@ var __vue_render__$g = function () {
3226
3234
  key: item.id,
3227
3235
  attrs: { label: item, size: "large" },
3228
3236
  },
3229
- [_vm._v(_vm._s(item.name))]
3237
+ [
3238
+ _vm._v(
3239
+ _vm._s(
3240
+ item.name
3241
+ ? item.name
3242
+ : item.nodeInfoDTO
3243
+ ? item.nodeInfoDTO.name
3244
+ : ""
3245
+ )
3246
+ ),
3247
+ ]
3230
3248
  )
3231
3249
  }),
3232
3250
  1
@@ -3647,7 +3665,7 @@ __vue_render__$g._withStripped = true;
3647
3665
  /* style */
3648
3666
  const __vue_inject_styles__$g = function (inject) {
3649
3667
  if (!inject) return
3650
- inject("data-v-7102b9b3_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":"AAsoBA;EACA,mBAAA;EACA,iBAAA;EACA,eAAA;EACA,gBAAA;EACA,yBAAA;EACA,uBAAA;ACroBA;ADuoBA;EACA,YAAA;ACroBA;ADsoBA;EACA,kBAAA;ACpoBA;ADsoBA;EACA,eAAA;EACA,gBAAA;ACpoBA;ADsoBA;EACA,gBAAA;EACA,gBAAA;ACpoBA;ADsoBA;EACA,iBAAA;EACA,gBAAA;ACpoBA;ADsoBA;EACA,kBAAA;EACA,UAAA;EACA,mBAAA;EACA,aAAA;EACA,mBAAA;EACA,kBAAA;EACA,YAAA;ACpoBA;ADuoBA;EACA,mBAAA;EACA,YAAA;EACA,mBAAA;EACA,uBAAA;EACA,WAAA;EACA,YAAA;EACA,oBAAA;EACA,uBAAA;EACA,iBAAA;ACroBA;;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 checkModelList() {\r\n let arr = this.processNodeObj.branches.filter((o) =>\r\n {\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 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\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\r\n if (this.processNodeObj.nodeType == 'exclusiveGateway') {\r\n // 进来这里\r\n for (let key in this.userTaskListData) {\r\n let o = this.userTaskListData[key];\r\n let refCom = this.$refs[o];\r\n\r\n refCom = Array.isArray(refCom) ? refCom[0] : refCom;\r\n if (refCom) {\r\n let res = refCom.getValue();\r\n if (!res) {\r\n flag = false;\r\n } else {\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 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 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 let refCom = this.$refs[o];\r\n\r\n refCom = Array.isArray(refCom) ? refCom[0] : refCom;\r\n if (refCom) {\r\n let res = refCom.getValue();\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 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 let o = this.userTaskListData[key];\r\n let refCom = this.$refs[o];\r\n\r\n refCom = Array.isArray(refCom) ? refCom[0] : refCom;\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.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 });
3668
+ inject("data-v-80e687fa_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":"AA8oBA;EACA,mBAAA;EACA,iBAAA;EACA,eAAA;EACA,gBAAA;EACA,yBAAA;EACA,uBAAA;AC7oBA;AD+oBA;EACA,YAAA;AC7oBA;AD8oBA;EACA,kBAAA;AC5oBA;AD8oBA;EACA,eAAA;EACA,gBAAA;AC5oBA;AD8oBA;EACA,gBAAA;EACA,gBAAA;AC5oBA;AD8oBA;EACA,iBAAA;EACA,gBAAA;AC5oBA;AD8oBA;EACA,kBAAA;EACA,UAAA;EACA,mBAAA;EACA,aAAA;EACA,mBAAA;EACA,kBAAA;EACA,YAAA;AC5oBA;AD+oBA;EACA,mBAAA;EACA,YAAA;EACA,mBAAA;EACA,uBAAA;EACA,WAAA;EACA,YAAA;EACA,oBAAA;EACA,uBAAA;EACA,iBAAA;AC7oBA;;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 ? item.name : (item.nodeInfoDTO ? item.nodeInfoDTO.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 checkModelList() {\r\n let arr = this.processNodeObj.branches.filter((o) =>\r\n {\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 console.log(newVal, 'processNodeObj')\r\n if (newVal.nodeType == 'userTask' && newVal.setPersonnel && newVal.assignees && newVal.assignees.length > 0) {\r\n this.targetUserId = newVal.assignees.map(i => i.id)\r\n }\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\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.log(this.processNodeObj, 'this.processNodeObj 第一个判断')\r\n if (this.processNodeObj.nodeType == 'exclusiveGateway') {\r\n // 进来这里\r\n for (let key in this.userTaskListData) {\r\n let o = this.userTaskListData[key];\r\n let refCom = this.$refs[o];\r\n\r\n refCom = Array.isArray(refCom) ? refCom[0] : refCom;\r\n if (refCom) {\r\n let res = refCom.getValue();\r\n if (!res) {\r\n flag = false;\r\n } else {\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 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 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 let refCom = this.$refs[o];\r\n\r\n refCom = Array.isArray(refCom) ? refCom[0] : refCom;\r\n if (refCom) {\r\n let res = refCom.getValue();\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 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 console.log(this.processNodeObj, 'this.processNodeObj.nodeInfoDTO 判断是否是多分支')\r\n // 判断是否是多分支\r\n if (this.processNodeObj && this.processNodeObj.nodeType == 'inclusiveGateway') {\r\n ElMessage.warning(`请选择下一节点`)\r\n } else {\r\n this.processNodeObj.nodeInfoDTO.name && ElMessage.warning(`请选择 ${this.processNodeObj.nodeInfoDTO.name} `);\r\n }\r\n return false;\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 let o = this.userTaskListData[key];\r\n let refCom = this.$refs[o];\r\n\r\n refCom = Array.isArray(refCom) ? refCom[0] : refCom;\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.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 });
3651
3669
 
3652
3670
  };
3653
3671
  /* scoped */
@@ -4399,6 +4417,23 @@ var script$e = {
4399
4417
  };
4400
4418
  param.vars = { ...param.vars, ...res.vars };
4401
4419
  }
4420
+
4421
+ // 如果不是结束事件,同时multiNodeParticipant为空,则提示
4422
+ if (this.param.nextTaskNode && this.param.nextTaskNode.nodeType != 'endEvent') {
4423
+ // 判断是不是仅有一个"exclusiveGateway"节点,同时该节点仅有一个子节点,同时已经选择了固定的人
4424
+ if (this.param.nextTaskNode.nodeType == 'exclusiveGateway' && this.param.nextTaskNode.branches && this.param.nextTaskNode.branches.length == 1 && this.param.nextTaskNode.branches[0].nodeInfoDTO && this.param.nextTaskNode.branches[0].nodeInfoDTO.setPersonnel == true && this.param.nextTaskNode.branches[0].nodeInfoDTO.assignees && this.param.nextTaskNode.branches[0].nodeInfoDTO.assignees.length > 0) {
4425
+ param.multiNodeParticipant = {
4426
+ ...param.multiNodeParticipant,
4427
+ [this.param.nextTaskNode.branches[0].nodeInfoDTO.id]: this.param.nextTaskNode.branches[0].nodeInfoDTO.assignees.map(i => i.id)
4428
+ };
4429
+ } else {
4430
+ const keyLen = Object.keys(param.multiNodeParticipant).length;
4431
+ if (!keyLen) {
4432
+ Message.warning('请选择下一节点');
4433
+ return false
4434
+ }
4435
+ }
4436
+ }
4402
4437
  param.pass = true;
4403
4438
 
4404
4439
  if (Date.now()) {
@@ -4420,6 +4455,10 @@ var script$e = {
4420
4455
  return
4421
4456
  }
4422
4457
  loading();
4458
+ if (param) {
4459
+ console.log(param, '测试', this.param);
4460
+ // return;
4461
+ }
4423
4462
  if (preposition) {
4424
4463
  preposition()
4425
4464
  .then((e) => {
@@ -4483,6 +4522,23 @@ var script$e = {
4483
4522
  };
4484
4523
  param.vars = { ...param.vars, ...res.vars };
4485
4524
  }
4525
+
4526
+ // 如果不是结束事件,同时multiNodeParticipant为空,则提示
4527
+ if (this.param.nextTaskNode && this.param.nextTaskNode.nodeType != 'endEvent') {
4528
+ // 判断是不是仅有一个"exclusiveGateway"节点,同时该节点仅有一个子节点,同时已经选择了固定的人
4529
+ if (this.param.nextTaskNode.nodeType == 'exclusiveGateway' && this.param.nextTaskNode.branches && this.param.nextTaskNode.branches.length == 1 && this.param.nextTaskNode.branches[0].nodeInfoDTO && this.param.nextTaskNode.branches[0].nodeInfoDTO.setPersonnel == true && this.param.nextTaskNode.branches[0].nodeInfoDTO.assignees && this.param.nextTaskNode.branches[0].nodeInfoDTO.assignees.length > 0) {
4530
+ param.multiNodeParticipant = {
4531
+ ...param.multiNodeParticipant,
4532
+ [this.param.nextTaskNode.branches[0].nodeInfoDTO.id]: this.param.nextTaskNode.branches[0].nodeInfoDTO.assignees.map(i => i.id)
4533
+ };
4534
+ } else {
4535
+ const keyLen = Object.keys(param.multiNodeParticipant).length;
4536
+ if (!keyLen) {
4537
+ Message.warning('请选择下一节点');
4538
+ return false
4539
+ }
4540
+ }
4541
+ }
4486
4542
  if (this.param.getVars) {
4487
4543
  let vars = this.param.getVars();
4488
4544
  if (vars === false) return false;
@@ -4935,11 +4991,11 @@ __vue_render__$e._withStripped = true;
4935
4991
  /* style */
4936
4992
  const __vue_inject_styles__$e = function (inject) {
4937
4993
  if (!inject) return
4938
- inject("data-v-efa9f602_0", { source: "\n@import \"./content.css\";\n.add-idea[data-v-efa9f602] {\r\n display: flex;\r\n justify-content: end;\n}\n.add-idea span[data-v-efa9f602] {\r\n color: #448ef6;\r\n cursor: pointer;\n}\n.sign-idea[data-v-efa9f602] {\r\n display: flex;\nspan {\r\n color: #448ef6;\r\n cursor: pointer;\n}\n}\n.sign-container[data-v-efa9f602] {\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":";AAihBA,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 }).catch((e) => {\r\n this.$emit(\"fail\", e.response ? (e.response.data ? e.response.data.msg || e.response.data.message : '') : e.message || e.msg || '');\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 }).catch((e) => {\r\n this.$emit(\"fail\", e.response ? (e.response.data ? e.response.data.msg || e.response.data.message : '') : e.message || e.msg || '');\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 });
4994
+ inject("data-v-25cbe9d5_0", { source: "\n@import \"./content.css\";\n.add-idea[data-v-25cbe9d5] {\r\n display: flex;\r\n justify-content: end;\n}\n.add-idea span[data-v-25cbe9d5] {\r\n color: #448ef6;\r\n cursor: pointer;\n}\n.sign-idea[data-v-25cbe9d5] {\r\n display: flex;\nspan {\r\n color: #448ef6;\r\n cursor: pointer;\n}\n}\n.sign-container[data-v-25cbe9d5] {\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":";AAujBA,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\r\n // 如果不是结束事件,同时multiNodeParticipant为空,则提示\r\n if (this.param.nextTaskNode && this.param.nextTaskNode.nodeType != 'endEvent') {\r\n // 判断是不是仅有一个\"exclusiveGateway\"节点,同时该节点仅有一个子节点,同时已经选择了固定的人\r\n if (this.param.nextTaskNode.nodeType == 'exclusiveGateway' && this.param.nextTaskNode.branches && this.param.nextTaskNode.branches.length == 1 && this.param.nextTaskNode.branches[0].nodeInfoDTO && this.param.nextTaskNode.branches[0].nodeInfoDTO.setPersonnel == true && this.param.nextTaskNode.branches[0].nodeInfoDTO.assignees && this.param.nextTaskNode.branches[0].nodeInfoDTO.assignees.length > 0) {\r\n param.multiNodeParticipant = {\r\n ...param.multiNodeParticipant,\r\n [this.param.nextTaskNode.branches[0].nodeInfoDTO.id]: this.param.nextTaskNode.branches[0].nodeInfoDTO.assignees.map(i => i.id)\r\n }\r\n } else {\r\n const keyLen = Object.keys(param.multiNodeParticipant).length\r\n if (!keyLen) {\r\n ElMessage.warning('请选择下一节点')\r\n return false\r\n }\r\n }\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 (param) {\r\n console.log(param, '测试', this.param)\r\n // return;\r\n }\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 }).catch((e) => {\r\n this.$emit(\"fail\", e.response ? (e.response.data ? e.response.data.msg || e.response.data.message : '') : e.message || e.msg || '');\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\r\n // 如果不是结束事件,同时multiNodeParticipant为空,则提示\r\n if (this.param.nextTaskNode && this.param.nextTaskNode.nodeType != 'endEvent') {\r\n // 判断是不是仅有一个\"exclusiveGateway\"节点,同时该节点仅有一个子节点,同时已经选择了固定的人\r\n if (this.param.nextTaskNode.nodeType == 'exclusiveGateway' && this.param.nextTaskNode.branches && this.param.nextTaskNode.branches.length == 1 && this.param.nextTaskNode.branches[0].nodeInfoDTO && this.param.nextTaskNode.branches[0].nodeInfoDTO.setPersonnel == true && this.param.nextTaskNode.branches[0].nodeInfoDTO.assignees && this.param.nextTaskNode.branches[0].nodeInfoDTO.assignees.length > 0) {\r\n param.multiNodeParticipant = {\r\n ...param.multiNodeParticipant,\r\n [this.param.nextTaskNode.branches[0].nodeInfoDTO.id]: this.param.nextTaskNode.branches[0].nodeInfoDTO.assignees.map(i => i.id)\r\n }\r\n } else {\r\n const keyLen = Object.keys(param.multiNodeParticipant).length\r\n if (!keyLen) {\r\n ElMessage.warning('请选择下一节点')\r\n return false\r\n }\r\n }\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 }).catch((e) => {\r\n this.$emit(\"fail\", e.response ? (e.response.data ? e.response.data.msg || e.response.data.message : '') : e.message || e.msg || '');\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 });
4939
4995
 
4940
4996
  };
4941
4997
  /* scoped */
4942
- const __vue_scope_id__$e = "data-v-efa9f602";
4998
+ const __vue_scope_id__$e = "data-v-25cbe9d5";
4943
4999
  /* module identifier */
4944
5000
  const __vue_module_identifier__$e = undefined;
4945
5001
  /* functional template */
package/vue2/index.umd.js CHANGED
@@ -2898,6 +2898,10 @@
2898
2898
  processNode: {
2899
2899
  handler(newVal, oldVal) {
2900
2900
  // 如果是长度为1,固定
2901
+ console.log(newVal, 'processNodeObj');
2902
+ if (newVal.nodeType == 'userTask' && newVal.setPersonnel && newVal.assignees && newVal.assignees.length > 0) {
2903
+ this.targetUserId = newVal.assignees.map(i => i.id);
2904
+ }
2901
2905
  if (newVal.userList && newVal.userList.length == 1) {
2902
2906
  this.targetUserId = newVal.userList[0].userId;
2903
2907
  }
@@ -3011,7 +3015,7 @@
3011
3015
  )
3012
3016
  */
3013
3017
  // exclusiveGateway 节点
3014
-
3018
+ console.log(this.processNodeObj, 'this.processNodeObj 第一个判断');
3015
3019
  if (this.processNodeObj.nodeType == 'exclusiveGateway') {
3016
3020
  // 进来这里
3017
3021
  for (let key in this.userTaskListData) {
@@ -3075,11 +3079,15 @@
3075
3079
  });
3076
3080
 
3077
3081
  } else {
3078
- this.processNodeObj.nodeInfoDTO.name && elementUi.Message.warning(`请选择 ${this.processNodeObj.nodeInfoDTO.name} `);
3082
+ console.log(this.processNodeObj, 'this.processNodeObj.nodeInfoDTO 判断是否是多分支');
3083
+ // 判断是否是多分支
3084
+ if (this.processNodeObj && this.processNodeObj.nodeType == 'inclusiveGateway') {
3085
+ elementUi.Message.warning(`请选择下一节点`);
3086
+ } else {
3087
+ this.processNodeObj.nodeInfoDTO.name && elementUi.Message.warning(`请选择 ${this.processNodeObj.nodeInfoDTO.name} `);
3088
+ }
3079
3089
  return false;
3080
3090
  }
3081
-
3082
-
3083
3091
  }
3084
3092
  // 新流程需要进入这里
3085
3093
  else if (!this.processNodeObj.assignee || !Array.isArray(this.processNodeObj.assignee) || !this.processNodeObj.setPersonnel || this.isOption(this.processNodeObj.humanPerformerName)
@@ -3219,7 +3227,17 @@
3219
3227
  key: item.id,
3220
3228
  attrs: { label: item, size: "large" },
3221
3229
  },
3222
- [_vm._v(_vm._s(item.name))]
3230
+ [
3231
+ _vm._v(
3232
+ _vm._s(
3233
+ item.name
3234
+ ? item.name
3235
+ : item.nodeInfoDTO
3236
+ ? item.nodeInfoDTO.name
3237
+ : ""
3238
+ )
3239
+ ),
3240
+ ]
3223
3241
  )
3224
3242
  }),
3225
3243
  1
@@ -3640,7 +3658,7 @@
3640
3658
  /* style */
3641
3659
  const __vue_inject_styles__$g = function (inject) {
3642
3660
  if (!inject) return
3643
- inject("data-v-7102b9b3_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":"AAsoBA;EACA,mBAAA;EACA,iBAAA;EACA,eAAA;EACA,gBAAA;EACA,yBAAA;EACA,uBAAA;ACroBA;ADuoBA;EACA,YAAA;ACroBA;ADsoBA;EACA,kBAAA;ACpoBA;ADsoBA;EACA,eAAA;EACA,gBAAA;ACpoBA;ADsoBA;EACA,gBAAA;EACA,gBAAA;ACpoBA;ADsoBA;EACA,iBAAA;EACA,gBAAA;ACpoBA;ADsoBA;EACA,kBAAA;EACA,UAAA;EACA,mBAAA;EACA,aAAA;EACA,mBAAA;EACA,kBAAA;EACA,YAAA;ACpoBA;ADuoBA;EACA,mBAAA;EACA,YAAA;EACA,mBAAA;EACA,uBAAA;EACA,WAAA;EACA,YAAA;EACA,oBAAA;EACA,uBAAA;EACA,iBAAA;ACroBA;;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 checkModelList() {\r\n let arr = this.processNodeObj.branches.filter((o) =>\r\n {\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 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\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\r\n if (this.processNodeObj.nodeType == 'exclusiveGateway') {\r\n // 进来这里\r\n for (let key in this.userTaskListData) {\r\n let o = this.userTaskListData[key];\r\n let refCom = this.$refs[o];\r\n\r\n refCom = Array.isArray(refCom) ? refCom[0] : refCom;\r\n if (refCom) {\r\n let res = refCom.getValue();\r\n if (!res) {\r\n flag = false;\r\n } else {\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 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 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 let refCom = this.$refs[o];\r\n\r\n refCom = Array.isArray(refCom) ? refCom[0] : refCom;\r\n if (refCom) {\r\n let res = refCom.getValue();\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 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 let o = this.userTaskListData[key];\r\n let refCom = this.$refs[o];\r\n\r\n refCom = Array.isArray(refCom) ? refCom[0] : refCom;\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.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 });
3661
+ inject("data-v-80e687fa_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":"AA8oBA;EACA,mBAAA;EACA,iBAAA;EACA,eAAA;EACA,gBAAA;EACA,yBAAA;EACA,uBAAA;AC7oBA;AD+oBA;EACA,YAAA;AC7oBA;AD8oBA;EACA,kBAAA;AC5oBA;AD8oBA;EACA,eAAA;EACA,gBAAA;AC5oBA;AD8oBA;EACA,gBAAA;EACA,gBAAA;AC5oBA;AD8oBA;EACA,iBAAA;EACA,gBAAA;AC5oBA;AD8oBA;EACA,kBAAA;EACA,UAAA;EACA,mBAAA;EACA,aAAA;EACA,mBAAA;EACA,kBAAA;EACA,YAAA;AC5oBA;AD+oBA;EACA,mBAAA;EACA,YAAA;EACA,mBAAA;EACA,uBAAA;EACA,WAAA;EACA,YAAA;EACA,oBAAA;EACA,uBAAA;EACA,iBAAA;AC7oBA;;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 ? item.name : (item.nodeInfoDTO ? item.nodeInfoDTO.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 checkModelList() {\r\n let arr = this.processNodeObj.branches.filter((o) =>\r\n {\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 console.log(newVal, 'processNodeObj')\r\n if (newVal.nodeType == 'userTask' && newVal.setPersonnel && newVal.assignees && newVal.assignees.length > 0) {\r\n this.targetUserId = newVal.assignees.map(i => i.id)\r\n }\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\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.log(this.processNodeObj, 'this.processNodeObj 第一个判断')\r\n if (this.processNodeObj.nodeType == 'exclusiveGateway') {\r\n // 进来这里\r\n for (let key in this.userTaskListData) {\r\n let o = this.userTaskListData[key];\r\n let refCom = this.$refs[o];\r\n\r\n refCom = Array.isArray(refCom) ? refCom[0] : refCom;\r\n if (refCom) {\r\n let res = refCom.getValue();\r\n if (!res) {\r\n flag = false;\r\n } else {\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 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 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 let refCom = this.$refs[o];\r\n\r\n refCom = Array.isArray(refCom) ? refCom[0] : refCom;\r\n if (refCom) {\r\n let res = refCom.getValue();\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 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 console.log(this.processNodeObj, 'this.processNodeObj.nodeInfoDTO 判断是否是多分支')\r\n // 判断是否是多分支\r\n if (this.processNodeObj && this.processNodeObj.nodeType == 'inclusiveGateway') {\r\n ElMessage.warning(`请选择下一节点`)\r\n } else {\r\n this.processNodeObj.nodeInfoDTO.name && ElMessage.warning(`请选择 ${this.processNodeObj.nodeInfoDTO.name} `);\r\n }\r\n return false;\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 let o = this.userTaskListData[key];\r\n let refCom = this.$refs[o];\r\n\r\n refCom = Array.isArray(refCom) ? refCom[0] : refCom;\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.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 });
3644
3662
 
3645
3663
  };
3646
3664
  /* scoped */
@@ -4392,6 +4410,23 @@
4392
4410
  };
4393
4411
  param.vars = { ...param.vars, ...res.vars };
4394
4412
  }
4413
+
4414
+ // 如果不是结束事件,同时multiNodeParticipant为空,则提示
4415
+ if (this.param.nextTaskNode && this.param.nextTaskNode.nodeType != 'endEvent') {
4416
+ // 判断是不是仅有一个"exclusiveGateway"节点,同时该节点仅有一个子节点,同时已经选择了固定的人
4417
+ if (this.param.nextTaskNode.nodeType == 'exclusiveGateway' && this.param.nextTaskNode.branches && this.param.nextTaskNode.branches.length == 1 && this.param.nextTaskNode.branches[0].nodeInfoDTO && this.param.nextTaskNode.branches[0].nodeInfoDTO.setPersonnel == true && this.param.nextTaskNode.branches[0].nodeInfoDTO.assignees && this.param.nextTaskNode.branches[0].nodeInfoDTO.assignees.length > 0) {
4418
+ param.multiNodeParticipant = {
4419
+ ...param.multiNodeParticipant,
4420
+ [this.param.nextTaskNode.branches[0].nodeInfoDTO.id]: this.param.nextTaskNode.branches[0].nodeInfoDTO.assignees.map(i => i.id)
4421
+ };
4422
+ } else {
4423
+ const keyLen = Object.keys(param.multiNodeParticipant).length;
4424
+ if (!keyLen) {
4425
+ elementUi.Message.warning('请选择下一节点');
4426
+ return false
4427
+ }
4428
+ }
4429
+ }
4395
4430
  param.pass = true;
4396
4431
 
4397
4432
  if (Date.now()) {
@@ -4413,6 +4448,10 @@
4413
4448
  return
4414
4449
  }
4415
4450
  loading();
4451
+ if (param) {
4452
+ console.log(param, '测试', this.param);
4453
+ // return;
4454
+ }
4416
4455
  if (preposition) {
4417
4456
  preposition()
4418
4457
  .then((e) => {
@@ -4476,6 +4515,23 @@
4476
4515
  };
4477
4516
  param.vars = { ...param.vars, ...res.vars };
4478
4517
  }
4518
+
4519
+ // 如果不是结束事件,同时multiNodeParticipant为空,则提示
4520
+ if (this.param.nextTaskNode && this.param.nextTaskNode.nodeType != 'endEvent') {
4521
+ // 判断是不是仅有一个"exclusiveGateway"节点,同时该节点仅有一个子节点,同时已经选择了固定的人
4522
+ if (this.param.nextTaskNode.nodeType == 'exclusiveGateway' && this.param.nextTaskNode.branches && this.param.nextTaskNode.branches.length == 1 && this.param.nextTaskNode.branches[0].nodeInfoDTO && this.param.nextTaskNode.branches[0].nodeInfoDTO.setPersonnel == true && this.param.nextTaskNode.branches[0].nodeInfoDTO.assignees && this.param.nextTaskNode.branches[0].nodeInfoDTO.assignees.length > 0) {
4523
+ param.multiNodeParticipant = {
4524
+ ...param.multiNodeParticipant,
4525
+ [this.param.nextTaskNode.branches[0].nodeInfoDTO.id]: this.param.nextTaskNode.branches[0].nodeInfoDTO.assignees.map(i => i.id)
4526
+ };
4527
+ } else {
4528
+ const keyLen = Object.keys(param.multiNodeParticipant).length;
4529
+ if (!keyLen) {
4530
+ elementUi.Message.warning('请选择下一节点');
4531
+ return false
4532
+ }
4533
+ }
4534
+ }
4479
4535
  if (this.param.getVars) {
4480
4536
  let vars = this.param.getVars();
4481
4537
  if (vars === false) return false;
@@ -4928,11 +4984,11 @@
4928
4984
  /* style */
4929
4985
  const __vue_inject_styles__$e = function (inject) {
4930
4986
  if (!inject) return
4931
- inject("data-v-efa9f602_0", { source: "\n@import \"./content.css\";\n.add-idea[data-v-efa9f602] {\r\n display: flex;\r\n justify-content: end;\n}\n.add-idea span[data-v-efa9f602] {\r\n color: #448ef6;\r\n cursor: pointer;\n}\n.sign-idea[data-v-efa9f602] {\r\n display: flex;\nspan {\r\n color: #448ef6;\r\n cursor: pointer;\n}\n}\n.sign-container[data-v-efa9f602] {\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":";AAihBA,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 }).catch((e) => {\r\n this.$emit(\"fail\", e.response ? (e.response.data ? e.response.data.msg || e.response.data.message : '') : e.message || e.msg || '');\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 }).catch((e) => {\r\n this.$emit(\"fail\", e.response ? (e.response.data ? e.response.data.msg || e.response.data.message : '') : e.message || e.msg || '');\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 });
4987
+ inject("data-v-25cbe9d5_0", { source: "\n@import \"./content.css\";\n.add-idea[data-v-25cbe9d5] {\r\n display: flex;\r\n justify-content: end;\n}\n.add-idea span[data-v-25cbe9d5] {\r\n color: #448ef6;\r\n cursor: pointer;\n}\n.sign-idea[data-v-25cbe9d5] {\r\n display: flex;\nspan {\r\n color: #448ef6;\r\n cursor: pointer;\n}\n}\n.sign-container[data-v-25cbe9d5] {\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":";AAujBA,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\r\n // 如果不是结束事件,同时multiNodeParticipant为空,则提示\r\n if (this.param.nextTaskNode && this.param.nextTaskNode.nodeType != 'endEvent') {\r\n // 判断是不是仅有一个\"exclusiveGateway\"节点,同时该节点仅有一个子节点,同时已经选择了固定的人\r\n if (this.param.nextTaskNode.nodeType == 'exclusiveGateway' && this.param.nextTaskNode.branches && this.param.nextTaskNode.branches.length == 1 && this.param.nextTaskNode.branches[0].nodeInfoDTO && this.param.nextTaskNode.branches[0].nodeInfoDTO.setPersonnel == true && this.param.nextTaskNode.branches[0].nodeInfoDTO.assignees && this.param.nextTaskNode.branches[0].nodeInfoDTO.assignees.length > 0) {\r\n param.multiNodeParticipant = {\r\n ...param.multiNodeParticipant,\r\n [this.param.nextTaskNode.branches[0].nodeInfoDTO.id]: this.param.nextTaskNode.branches[0].nodeInfoDTO.assignees.map(i => i.id)\r\n }\r\n } else {\r\n const keyLen = Object.keys(param.multiNodeParticipant).length\r\n if (!keyLen) {\r\n ElMessage.warning('请选择下一节点')\r\n return false\r\n }\r\n }\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 (param) {\r\n console.log(param, '测试', this.param)\r\n // return;\r\n }\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 }).catch((e) => {\r\n this.$emit(\"fail\", e.response ? (e.response.data ? e.response.data.msg || e.response.data.message : '') : e.message || e.msg || '');\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\r\n // 如果不是结束事件,同时multiNodeParticipant为空,则提示\r\n if (this.param.nextTaskNode && this.param.nextTaskNode.nodeType != 'endEvent') {\r\n // 判断是不是仅有一个\"exclusiveGateway\"节点,同时该节点仅有一个子节点,同时已经选择了固定的人\r\n if (this.param.nextTaskNode.nodeType == 'exclusiveGateway' && this.param.nextTaskNode.branches && this.param.nextTaskNode.branches.length == 1 && this.param.nextTaskNode.branches[0].nodeInfoDTO && this.param.nextTaskNode.branches[0].nodeInfoDTO.setPersonnel == true && this.param.nextTaskNode.branches[0].nodeInfoDTO.assignees && this.param.nextTaskNode.branches[0].nodeInfoDTO.assignees.length > 0) {\r\n param.multiNodeParticipant = {\r\n ...param.multiNodeParticipant,\r\n [this.param.nextTaskNode.branches[0].nodeInfoDTO.id]: this.param.nextTaskNode.branches[0].nodeInfoDTO.assignees.map(i => i.id)\r\n }\r\n } else {\r\n const keyLen = Object.keys(param.multiNodeParticipant).length\r\n if (!keyLen) {\r\n ElMessage.warning('请选择下一节点')\r\n return false\r\n }\r\n }\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 }).catch((e) => {\r\n this.$emit(\"fail\", e.response ? (e.response.data ? e.response.data.msg || e.response.data.message : '') : e.message || e.msg || '');\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 });
4932
4988
 
4933
4989
  };
4934
4990
  /* scoped */
4935
- const __vue_scope_id__$e = "data-v-efa9f602";
4991
+ const __vue_scope_id__$e = "data-v-25cbe9d5";
4936
4992
  /* module identifier */
4937
4993
  const __vue_module_identifier__$e = undefined;
4938
4994
  /* functional template */