{"remainingRequest":"D:\\jenkins\\workspace\\xq-web-fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\xq-web-fvue\\src\\components\\flow\\flowAction.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\xq-web-fvue\\src\\components\\flow\\flowAction.vue","mtime":1667327529403},{"path":"D:\\jenkins\\workspace\\xq-web-fvue\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"D:\\jenkins\\workspace\\xq-web-fvue\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xq-web-fvue\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":["//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\r\nimport ImageBpm from \"@/components/flow/imageBpm.vue\";\r\nimport FormContent from \"@/components/flow/formContent.vue\";\r\n//import OpinionText from \"@/components/common/opinionText.vue\";\r\n//import FileUpload from \"@/components/common/fileUpload.vue\";\r\nimport { mapState } from \"vuex\";\r\nimport { Message } from \"element-ui\";\r\nimport TaskToReject from \"@/components/flow/task/taskToReject.vue\";\r\nimport TaskToDelegate from \"@/components/flow/task/taskToDelegate.vue\";\r\nimport TaskToCopyTo from \"@/components/flow/task/taskToCopyTo.vue\";\r\nimport TaskToInqu from \"@/components/flow/task/taskToInqu.vue\";\r\nimport TaskToEndProcess from \"@/components/flow/task/taskToEndProcess.vue\";\r\nimport TaskToTrans from \"@/components/flow/task/taskToTrans.vue\";\r\nimport TaskToAddSign from \"@/components/flow/task/taskToAddSign.vue\";\r\nimport TaskToDelay from \"@/components/flow/task/taskToDelay.vue\";\r\nimport TaskSelectDestination from \"@/components/flow/task/taskSelectDestination.vue\";\r\nimport TaskToApproveLine from \"@/components/flow/task/taskToApproveLine.vue\";\r\nimport taskToSignSequence from \"@/components/flow/task/taskToSignSequence.vue\";\r\nimport taskToSignLine from \"@/components/flow/task/taskToSignLine.vue\";\r\nimport taskToComplete from \"@/components/flow/task/taskToComplete.vue\";\r\nimport taskToSave from \"@/components/flow/task/taskToSave.vue\";\r\nimport taskToRead from \"@/components/flow/task/taskToRead.vue\";\r\nimport taskToFeeBack from \"@/components/flow/task/taskToFeeBack.vue\";\r\nimport taskToInquReply from \"@/components/flow/task/taskToInquReply.vue\";\r\nimport userAddSignReply from \"@/components/flow/task/userAddSignReply.vue\";\r\nimport taskToRevoke from \"@/components/flow/task/taskToRevoke.vue\";\r\nimport utils from \"@/utils.js\";\r\nimport { Base64 } from \"js-base64\";\r\nimport moment from \"moment\"; //日期格式化插件\r\nimport form from \"@/api/form.js\";\r\nimport flow from \"@/api/flow.js\";\r\nimport i18n from \"@/lang/index.js\";\r\nimport req from \"@/request.js\";\r\nexport default {\r\n  components: {\r\n    ImageBpm,\r\n    FormContent,\r\n    //OpinionText,\r\n    //FileUpload,\r\n    TaskToReject,\r\n    TaskToDelegate,\r\n    TaskToCopyTo,\r\n    TaskToInqu,\r\n    TaskToEndProcess,\r\n    TaskToTrans,\r\n    TaskToAddSign,\r\n    TaskToDelay,\r\n    TaskSelectDestination,\r\n    TaskToApproveLine,\r\n    taskToSignSequence,\r\n    taskToSignLine,\r\n    taskToComplete,\r\n    taskToSave,\r\n    taskToRead,\r\n    taskToFeeBack,\r\n    taskToInquReply,\r\n    userAddSignReply,\r\n    taskToRevoke\r\n  },\r\n  props: [\r\n    \"tasks\",//任务详情\r\n    \"task_state\",\r\n    \"instId\",\r\n    \"type\",\r\n    \"taskId\",\r\n    \"execId\",\r\n    \"defId\",\r\n    \"status\",\r\n    \"choiceExcutor\",\r\n    \"jumpType\",\r\n    \"instStatus\",\r\n    \"leaderId\",\r\n    \"myReadType\",\r\n    \"readId\", //知会任务待办传阅任务的主键ID\r\n    \"readDoneId\", //知会任务已办传阅任务的主键ID\r\n    \"approvalArea\", //审批区域显示的内容\r\n    \"referOpinion\", //允许参考意见 (选择否，则审批时不允许参考同环节其他会签人员的意见)\r\n    \"nodeType\", //当前任务类型\r\n    \"nodeId\", //当前任务节点\r\n    \"isLook\",\r\n    \"sponsorRevoke\",//允许发起人撤回（默认不勾选）\r\n    \"opinionField\", //当前节点审批意见回填字段\r\n    \"appendOpinion\", //是否覆盖审批意见\r\n    \"signatureField\", //自动签章字段\r\n    \"signatureCover\", //自动签章是否覆盖\r\n    \"secretFree\", //自动签章时是否免密,\r\n    \"defKey\"\r\n  ],\r\n  data() {\r\n    return {\r\n      isMk: false, //是否是模块化开发进来\r\n      isDd: false, // 是否是只显示审批页面\r\n      isGdt: false, //是否有滚动条\r\n      dialogFormVisible: false,\r\n      dailogTitle: \"\",\r\n      opinion: \"\",\r\n      isHand: \"\",\r\n      state: \"\",\r\n      canLock: \"\",\r\n      formData: \"\",\r\n      actionName: \"\",\r\n      text: \"\",\r\n      disabled: true,\r\n      btnAlias: \"\", //选择的按钮\r\n      token: utils.getUrlKey(\"token\"),\r\n      isApprovalOpinion: true, //是否显示审批意见\r\n      iszFile: true, //是否显示正文\r\n      isFile: true, //是否显示附件\r\n      isProcessRecord: true, //是否显示处理记录\r\n      isImageBpm: true, //是否显示流程图\r\n      taskStatusArray: [\r\n        \"APPROVELINEING\",\r\n        \"APPROVELINEED\",\r\n        \"SIGNSEQUENCEING\",\r\n        \"SIGNSEQUENCEED\",\r\n        \"SIGNLINEING\",\r\n        \"SIGNLINEED\"\r\n      ],\r\n      isHang: false,\r\n      opinionFiles: \"\",\r\n      appendStr: true,\r\n      initBoAttr: '',\r\n    };\r\n  },\r\n  watch: {\r\n    status: function (newVal, oldVal) {\r\n      this.state = newVal; //newVal即是status\r\n      if (\r\n        this.state != \"COPYTO\" &&\r\n        this.state != \"FOLLOW\" &&\r\n        this.state != \"COMMU\"\r\n      ) {\r\n        let params = {\r\n          taskId: this.taskId,\r\n          leaderId: this.leaderId,\r\n          nodeType: this.nodeType\r\n        };\r\n        //判断是否是普通用户任务加签后的待办任务\r\n        if (this.tasks.bpmTask.parentId != \"0\") {\r\n          params.isAddSign = true;\r\n        }\r\n        //通过流程实例ID和任务ID获取审批意见\r\n        if (this.taskId && this.instId) {\r\n          let bpmSaveOpinion = { instId: this.instId, taskId: this.taskId };\r\n          flow.getBpmSaveOpinionByTeam(bpmSaveOpinion).then(data => {\r\n            if (data.state) {\r\n              if (data.value != \"\") {\r\n                this.text = data.value;\r\n              }\r\n            }\r\n          });\r\n        }\r\n        this.$store.dispatch(\"storeProcess/taskDetail\", params); //获取操作按钮\r\n        this.$store\r\n          .dispatch(\"storeProcess/canLock\", {\r\n            taskId: this.taskId,\r\n            leaderId: this.leaderId\r\n          })\r\n          .then(canLock => {\r\n            //获取任务是否能锁定\r\n            if (\r\n              canLock == 4 &&\r\n              this.$router.history.current.fullPath.indexOf(\"token\") > -1\r\n            ) {\r\n              canLock = \"5\";\r\n            }\r\n            this.canLock = canLock;\r\n          });\r\n      }\r\n    },\r\n    approvalArea: function (newVal, oldVal) {\r\n      //审批区域显示的内容\r\n      if (newVal) {\r\n        this.approvalArea = newVal;\r\n        if (this.approvalArea) {\r\n          if (this.approvalArea.indexOf(\"approvalOpinion\") == -1) {\r\n            this.isApprovalOpinion = false;\r\n          }\r\n          if (this.approvalArea.indexOf(\"zFile\") == -1) {\r\n            this.iszFile = false;\r\n          }\r\n          if (this.approvalArea.indexOf(\"file\") == -1) {\r\n            this.isFile = false;\r\n          }\r\n          if (this.approvalArea.indexOf(\"processRecord\") == -1) {\r\n            this.isProcessRecord = false;\r\n          }\r\n          if (this.approvalArea.indexOf(\"imageBpm\") == -1) {\r\n            this.isImageBpm = false;\r\n          }\r\n        }\r\n      }\r\n    },\r\n  },\r\n  computed: mapState({\r\n    rowsBtn: state => state.storeProcess.rowsBtn,\r\n    forceLock: state => state.storeProcess.forceLock,\r\n    isShowApprovalArea: function () {\r\n      if (\r\n        (this.status != \"COPYTO\" &&\r\n          this.status != \"FOLLOW\" &&\r\n          (this.type != undefined || this.taskId != undefined) &&\r\n          this.instStatus != \"end\" &&\r\n          this.instStatus != \"manualend\") ||\r\n        this.status == \"COMMU\"\r\n      ) {\r\n        return true;\r\n      }\r\n      return false;\r\n    },\r\n  }),\r\n\r\n  beforeDestroy() {\r\n    //组件注销移除事件监听器，以防多次调用\r\n    this.$root.$off(\"formLoading\");\r\n  },\r\n  mounted() {\r\n    const this_ = this;\r\n    //监听表单加载完成发布事件\r\n    this_.$root.$on(\"formLoading\", function (value) {\r\n      this_.disabled = value;\r\n      //检查当前挂起状态，判断是否禁用按钮\r\n      this_.checkInstStatus();\r\n    });\r\n  },\r\n  methods: {\r\n    // 通过按钮别名获取按钮主题类型\r\n    getType(alias) {\r\n      let type = \"default\";\r\n      switch (alias) {\r\n        case \"agree\":\r\n        case \"agreeTrans\":\r\n          type = \"primary\";\r\n          break;\r\n        case \"oppose\":\r\n        case \"opposeTrans\":\r\n        case \"reject\":\r\n        case \"endProcess\":\r\n          type = \"danger\";\r\n          break;\r\n      }\r\n      return type\r\n    },\r\n    // //暂存审批意见\r\n    // createBpmSaveOpinion(flag) {\r\n    //   //点击保存暂存审批意见时，没有填写审批意见不处理\r\n    //   if (this.$refs.opinionText.getOpinion() == \"\" && flag) {\r\n    //     return;\r\n    //   }\r\n    //   if (this.$refs.opinionText.getOpinion() == \"\") {\r\n    //     Message.warning(\"请输入审批意见内容\");\r\n    //   } else {\r\n    //     let bpmSaveOpinion = { procInstId: this.instId, taskId: this.taskId, opinion: this.$refs.opinionText.getOpinion() };\r\n    //     flow.createBpmSaveOpinion(bpmSaveOpinion).then(data => {\r\n    //       if (data.state) {\r\n    //         if (!flag) {\r\n    //           this.$message({ type: \"success\", message: data.message });\r\n    //         }\r\n    //       }\r\n    //     });\r\n    //   }\r\n    // },\r\n    //获取意见\r\n    // getOpinion(opinion) {\r\n    //   this.text = opinion;\r\n    //   let opinioValue = this.$refs.opinionText.getOpinion();\r\n    //   if (this.opinionField) {\r\n    //     let currentUser = this.$store.state.user.currentUserDetail.user;\r\n    //     let moment = require(\"moment\");\r\n\r\n    //     let boData = this.$refs.formContent.data;\r\n    //     let filed = this.opinionField.split(\".\");\r\n    //     if (boData[filed[0]][filed[1]] == '<p><br/></p>') {\r\n    //       boData[filed[0]][filed[1]] = \"\";\r\n    //     }\r\n    //     //是否覆盖审批意见\r\n    //     if (this.appendOpinion) {\r\n    //       if (opinioValue) {\r\n    //         boData[filed[0]][filed[1]] = opinioValue + \"\\n\" + currentUser.fullname + \" \" + moment().format(\"YYYY-MM-DD HH:mm:ss\");\r\n    //       }\r\n    //     } else {\r\n    //       if (opinioValue) {\r\n    //         opinioValue += \"\\n\" + currentUser.fullname + \" \" + moment().format(\"YYYY-MM-DD HH:mm:ss\");\r\n    //       }\r\n    //       if (this.appendStr) {\r\n    //         this.initBoAttr = boData[filed[0]][filed[1]];\r\n    //       }\r\n    //       if (filed.length == 2) {\r\n    //         if (this.initBoAttr) {\r\n    //           if (opinion) {\r\n    //             boData[filed[0]][filed[1]] = this.initBoAttr + \"\\n\\n\" + opinioValue;\r\n    //           } else {\r\n    //             boData[filed[0]][filed[1]] = this.initBoAttr\r\n    //           }\r\n    //         } else {\r\n    //           boData[filed[0]][filed[1]] = opinioValue;\r\n    //         }\r\n    //       }\r\n    //       this.appendStr = false;\r\n    //     }\r\n    //   }\r\n    // },\r\n    //保存按钮\r\n    saveDraftBtn() {\r\n      //this.$refs.taskToSave.showDialog();\r\n      this.$store\r\n        .dispatch(\"storeProcess/canLock\", {\r\n          taskId: this.taskId,\r\n          leaderId: this.leaderId\r\n        })\r\n        .then(canLock => {\r\n          //获取任务是否能锁定\r\n          if (\r\n            canLock == 4 &&\r\n            this.$router.history.current.fullPath.indexOf(\"token\") > -1\r\n          ) {\r\n            canLock = \"5\";\r\n          }\r\n          if (canLock == 4) {\r\n            this.$message.warning(\"任务已被其他人签收了\");\r\n          } else {\r\n            this.taskSaveDraft();//保存表单内容\r\n            //this.createBpmSaveOpinion(true);//暂存审批意见\r\n          }\r\n        });\r\n    },\r\n    //同意按钮\r\n    agreeBtn() {\r\n      this.$store\r\n        .dispatch(\"storeProcess/canLock\", {\r\n          taskId: this.taskId,\r\n          leaderId: this.leaderId\r\n        })\r\n        .then(canLock => {\r\n          //获取任务是否能锁定\r\n          if (\r\n            canLock == 4 &&\r\n            this.$router.history.current.fullPath.indexOf(\"token\") > -1\r\n          ) {\r\n            canLock = \"5\";\r\n          }\r\n          if (canLock == 4) {\r\n            this.$message.warning(\"任务已被其他人签收了\");\r\n          } else {\r\n            this.taskAgree();\r\n          }\r\n      });\r\n    },\r\n    checkInstStatus(callback) {\r\n      let this_ = this;\r\n      this.$http\r\n        .get(\r\n          \"${bpmRunTime}/runtime/instance/v1/getDefStatus?instId=\" +\r\n          (this.instId || \"\") +\r\n          \"&taskId=\" +\r\n          (this.taskId || \"\")\r\n        )\r\n        .then(function (resp) {\r\n          if (resp.data) {\r\n            resp.data += \"\";\r\n            if (resp.data.indexOf(\"1\") > -1) {\r\n              this_.disabled = true;\r\n              this_.isHang = true;\r\n              this_.$message.warning(\"当前流程实例已被挂起，无法审批\");\r\n            } else if (resp.data.indexOf(\"3\") > -1) {\r\n              this_.disabled = true;\r\n              this_.$message.warning(\"当前流程定义已被禁止实例，无法审批\");\r\n            } else {\r\n              callback && callback();\r\n            }\r\n          } else if (callback) {\r\n            callback();\r\n          }\r\n        });\r\n    },\r\n    //提交事件\r\n    submitRevoke(alias) {\r\n      let _this = this;\r\n      //获取VUE表单实例(判断是否是在线表单)\r\n      if (document.getElementsByName(\"online-form\")[0]) {\r\n        let tables = document.getElementsByName(\"online-form\")[0].__vue__\r\n          .permission.table; //获取子表权限\r\n        let boData = document.getElementsByName(\"online-form\")[0].__vue__.data; //获取表单bo对象\r\n        let zData = {};\r\n        for (let k in boData) {\r\n          zData = boData[k];\r\n        }\r\n        for (let key in tables) {\r\n          //如果有导入属性，则表明不是子表而是数据报表，不做必填校验\r\n          if (tables[key] && tables[key].hasOwnProperty(\"export\")) {\r\n            continue;\r\n          }\r\n          if (\r\n            (tables[key].required == true || tables[key].required == \"true\") &&\r\n            zData[\"sub_\" + key] &&\r\n            zData[\"sub_\" + key].length == 0\r\n          ) {\r\n            this.$message({ message: \"子表必填一条记录\", type: \"warning\" });\r\n            return;\r\n          }\r\n        }\r\n      }\r\n      this.pressAction = true;\r\n      this.btnAlias = alias;\r\n      //关闭\r\n      if (this.btnAlias == \"taskClose\") {\r\n        utils.closeAllNotification();\r\n        //判断菜单是否是模块开发配置出来的\r\n        if (this.$route.name.indexOf(\"reportModuleInst\")!=-1) {\r\n          this.$router.push(\"/statement/template/preview/\"+this.$route.params.templateKey+\"/todo/\"+this.$route.params.defKey+\"/true\");\r\n        }else if (this.$route.name.indexOf(\"sysModuleInst\")!=-1){\r\n          this.$router.push(\"/v-flow/v-todo/\" + this.$route.params.defKey);\r\n        }else if (this.type == \"done\" || this.type == \"request\" || this.myReadType == \"myRequest\") {\r\n          this.$router.push(\"/v-flow/v-request\");\r\n        } else if (this.state == \"COMMU\" || this.state == \"FOLLOW\" || this.$route.name == \"instRead-read\") {\r\n          this.$router.push(\"/v-flow/v-todoRead\");//待阅\r\n        } else if(this.$route.name == \"instRead-done\"){\r\n          this.$router.push(\"/v-flow/v-doneRead\"); //已阅\r\n        }else if(this.$route.name == \"myRead-type\"){\r\n          this.$router.push(\"/v-flow/v-myRead\") //我传阅的\r\n        }else if(this.$route.name == \"instRead\" && this.$route.params.myReadType == \"delegate\"){\r\n          this.$router.push(\"/v-flow/v-myDelegate\")\r\n        }else {\r\n          if (JSON.stringify(this.$route.query) == \"{}\") {\r\n            this.$router.push(\"/v-flow/v-todo\");\r\n          } else {\r\n            this.$router.push(\"/home\");\r\n          }\r\n        }\r\n      } else if (this.btnAlias == \"saveDraft\") {\r\n        // todo 保存\r\n        this.saveDraftBtn();\r\n      } else if (this.btnAlias == \"agree\") {\r\n        // todo 同意\r\n        this.agreeBtn();\r\n      } else if (this.btnAlias == \"handleRead\") {\r\n        //传阅回复\r\n        this.handleRead();\r\n      } else if (this.btnAlias == \"handleRevoke\") {\r\n        //撤回\r\n        this.handleRevoke();\r\n      } else if (this.btnAlias == \"commuFeedBack\") {\r\n        //沟通反馈\r\n        this.commuFeedBack();\r\n      } else if (this.btnAlias == \"taskToInquReply\") {\r\n        //征询回复\r\n        this.taskToInquReply();\r\n      } else if (this.btnAlias == \"userAddSign\") {\r\n        //普通节点加签反馈\r\n        this.userAddSign();\r\n      } else if (this.btnAlias == \"reject\") {\r\n        //todo 驳回\r\n        this.taskToReject();\r\n      } else if (this.btnAlias == \"delegate\") {\r\n        //转办\r\n        this.taskToDelegate();\r\n      } else if (this.btnAlias == \"inqu\") {\r\n        //征询\r\n        this.taskToInqu();\r\n      } else if (this.btnAlias == \"endProcess\") {\r\n        // todo 流程终止\r\n        this.taskToEndProcess();\r\n      } else if (this.btnAlias == \"startTrans\") {\r\n        //todo 流转\r\n        this.taskToTrans();\r\n      } else if (this.btnAlias == \"addSign\") {\r\n        //todo 加签\r\n        this.taskToAddSign();\r\n      } else if (this.btnAlias == \"taskDelay\") {\r\n        //todo 任务延期\r\n        // this.taskToDelay();\r\n      } else if (this.btnAlias == \"agreeTrans\") {\r\n        //todo 同意（流转）\r\n        this.taskAgreeTrans();\r\n      } else if (this.btnAlias == \"opposeTrans\") {\r\n        //todo 反对（流转）\r\n        this.taskOpposeTrans();\r\n      } else if (this.btnAlias == \"oppose\") {\r\n        //todo 反对\r\n        this.taskOppose();\r\n      } else if (this.btnAlias == \"lockUnlock\") {\r\n        //签收\r\n        this.$store\r\n          .dispatch(\"storeProcess/canLock\", this.taskId)\r\n          .then(canLock => {\r\n            //获取任务是否能锁定\r\n            if (\r\n              canLock == 4 &&\r\n              this.$router.history.current.fullPath.indexOf(\"token\") > -1\r\n            ) {\r\n              canLock = \"5\";\r\n            }\r\n            if (canLock == 4) {\r\n              this.$message.warning(\"任务已被其他人签收了\");\r\n            } else {\r\n              this.lockUnlock();\r\n            }\r\n          });\r\n      } else if (this.btnAlias == \"approveLine\") {\r\n        //并行审批\r\n        this.taskApproveLine();\r\n      } else if (this.btnAlias == \"signSequence\") {\r\n        // 顺序签署\r\n        this.taskSignSequence();\r\n      } else if (this.btnAlias == \"signLine\") {\r\n        // 并行签署\r\n        this.taskSignLine();\r\n      }\r\n    },\r\n    //执行前置脚本\r\n    runBeforeScript() {\r\n      let _this = this;\r\n      let item = utils.indexOfList(_this.rowsBtn, \"alias\", _this.btnAlias);\r\n      return _this.tempScript(item.beforeScript);\r\n    },\r\n    //执行前置脚本\r\n    tempScript(script) {\r\n      let _this = this;\r\n      let _req = req;\r\n      let boData = _this.$refs.formContent.data;\r\n      let tempScript = \"var tempFunction = function(_req,data,_this){ \" + script + \"};\";\r\n      let result = eval(tempScript + \"tempFunction(_req,boData,_this);\");\r\n      if (result && result.then && typeof result.then == \"function\") {\r\n        return result;\r\n      }\r\n      if (result === false) return false;\r\n      return true;\r\n    },\r\n    //保存\r\n    taskSaveDraft() {\r\n      const this_ = this;\r\n      utils\r\n        .getOnlineFormData(false)\r\n        .then(formDataStr => this_.saveDraftSubmit(formDataStr))\r\n        .catch(reason =>\r\n          utils.handleGetFormDataReject(reason).then(() => this.saveDraftSubmit())\r\n        );\r\n    },\r\n    saveDraftSubmit(formDataStr) {\r\n      let _this = this;\r\n      let scriptResult = this.runBeforeScript();\r\n      //执行前置脚本返回false时终止按钮操作\r\n      if (scriptResult === false) return;\r\n      //执行前置脚本返回的接口时先执行前置事件接口\r\n      if (scriptResult.then && typeof scriptResult.then == \"function\") {\r\n        scriptResult.then(() => {\r\n          //接口返回成功则正常执行按钮操作\r\n          _this.funcSaveDraft(formDataStr);\r\n        }, (fail) => {\r\n          //接口返回失败则终止按钮操作，并给与提示\r\n          _this.$message.warning(fail);\r\n          return;\r\n        }\r\n        );\r\n      } else {\r\n        //执行前置脚本返回true时正常执行按钮操作\r\n        _this.funcSaveDraft(formDataStr);\r\n      }\r\n    },\r\n    //保存草稿\r\n    funcSaveDraft(formDataStr) {\r\n      utils.closeAllNotification();\r\n      let data = this.handleFormData(formDataStr);\r\n      data.defId = this.defId;\r\n      data.approval = true;\r\n      data.formKey = this.$refs.formContent.formKey;\r\n      this.$refs.taskToSave.showDialog(data);\r\n      // this.$store.dispatch(\"storeProcess/saveTaskDraft\", data).then(() => {\r\n      //   utils.reload();\r\n      // });\r\n    },\r\n    //传阅回复\r\n    handleRead() {\r\n      this.$refs.taskToRead.showDialog()\r\n    },\r\n    // 准备要提交的数据\r\n    handleFormData(formDataStr) {\r\n      //let files = \"\";\r\n      let zfiles = \"\";\r\n      // this.$refs.fileUpload.isFinishUpload();\r\n      // if (this.$refs.fileUpload && this.$refs.fileUpload.getFiles() != \"\") {\r\n      //   files = JSON.stringify(this.$refs.fileUpload.getFiles());\r\n      // }\r\n      //let opinion = \"\";\r\n      // if (this.$refs.opinionText && this.$refs.opinionText.getOpinion() != \"\") {\r\n      //   opinion = this.$refs.opinionText.getOpinion();\r\n      // }\r\n\r\n      let data = {\r\n        taskId: this.taskId,\r\n        actionName: this.actionName,\r\n        destination: \"\",\r\n        //files: files,\r\n        zfiles: zfiles,\r\n        //opinion: opinion,\r\n        jumpType: \"\",\r\n        agentLeaderId: this.leaderId,\r\n        nodeUsers: \"[]\"\r\n      };\r\n      if (formDataStr) {\r\n        // URL表单\r\n        if (formDataStr.constructor == Object) {\r\n          data.formType = \"frame\";\r\n          if (formDataStr.businessKey) {\r\n            data.businessKey = formDataStr.businessKey;\r\n          }\r\n          if (formDataStr.sysCode) {\r\n            data.sysCode = formDataStr.sysCode;\r\n          }\r\n          if (formDataStr.vars) {\r\n            data.vars = formDataStr.vars;\r\n          }\r\n        } else if (formDataStr.constructor == String) {\r\n          data.data = Base64.encode(formDataStr);\r\n          data.formType = \"inner\";\r\n        }\r\n      }\r\n\r\n      if (window.urgentStateValue) {\r\n        data.urgentStateValue = window.urgentStateValue;\r\n      }\r\n\r\n      return data;\r\n    },\r\n    handleClose() {\r\n      this.dialogFormVisible = true;\r\n    },\r\n    //获取任务锁定状态\r\n    lockUnlock() {\r\n      this.$store\r\n        .dispatch(\r\n          \"storeProcess/lockUnlock\",\r\n          this.taskId + \"&leaderId=\" + this.leaderId\r\n        )\r\n        .then(() => {\r\n          // this.$router.go(this.$router.currentRoute);\r\n          utils.reload();\r\n        });\r\n    },\r\n    //撤回\r\n    handleRevoke(id, status) {\r\n      if (status == \"revokeToStart\") {\r\n        this.$message.warning(\"已撤回，不能再撤回\");\r\n        return false;\r\n      }\r\n      // if (this.$refs.opinionText.getOpinion() == \"\") {\r\n      //   this.$message.warning(\"请填写撤回意见\");\r\n      //   return false;\r\n      // }\r\n      let data = {\r\n        instanceId: this.instId,\r\n        isHandRevoke: this.isHand,\r\n        //cause: this.$refs.opinionText.getOpinion()\r\n      };\r\n      let revokeUrl = \"storeProcess/revokeInstanceBtn\";\r\n      this.$refs.taskToRevoke.showDialog(revokeUrl,data);\r\n      // this.$confirm(\"确认\" + this.dailogTitle + \"?\", \"提示\", {\r\n      //   cancelButtonText: \"取消\",\r\n      //   confirmButtonText: \"确定\",\r\n      //   type: \"warning\",\r\n      //   closeOnClickModal: false\r\n      // }).then(() => {\r\n      //   this.$store\r\n      //     .dispatch(\"storeProcess/revokeInstanceBtn\", data)\r\n      //     .then(isHandRevoke => {\r\n      //       if (this.token != null) {\r\n      //         window.close();\r\n      //       } else {\r\n      //         this.$router.push(\"/v-flow/v-todo\");\r\n      //       }\r\n      //     });\r\n      // });\r\n    },\r\n    saveRevoke() {\r\n      if (this.opinion == \"\") {\r\n        this.$message.warning(\"请填写撤回意见\");\r\n        return false;\r\n      }\r\n      let data = {\r\n        instanceId: this.instId,\r\n        isHandRevoke: this.isHand,\r\n        cause: this.opinion\r\n      };\r\n      this.$store.dispatch(\"storeProcess/revokeInstanceBtn\", data).then(() => {\r\n        if (this.token != null) {\r\n          window.close();\r\n        } else {\r\n          this.$router.go(-1);\r\n        }\r\n      });\r\n      this.dialogFormVisible = false;\r\n      this.opinion = \"\";\r\n    },\r\n    exitRevoke() {\r\n      this.dialogFormVisible = false;\r\n      this.opinion = \"\";\r\n    },\r\n    //沟通反馈\r\n    commuFeedBack() {\r\n      this.$refs.taskToFeeBack.showDialog();\r\n    },\r\n    userAddSign() {\r\n      this.$refs.userAddSignReply.showDialog();\r\n      // if (this.$refs.opinionText.getOpinion() == \"\") {\r\n      //   Message.warning(\"请输入意见内容\");\r\n      // } else {\r\n      //   let files = \"\";\r\n      //   let zfiles = \"\";\r\n      //   this.$refs.fileUpload.isFinishUpload();\r\n      //   if (this.$refs.fileUpload && this.$refs.fileUpload.getFiles() != \"\") {\r\n      //     files = JSON.stringify(this.$refs.fileUpload.getFiles());\r\n      //   }\r\n      //   let data = {\r\n      //     procDefId: this.defId,\r\n      //     procInstId: this.instId,\r\n      //     status: \"inqu_reply\",\r\n      //     taskId: this.taskId,\r\n      //     opinion: this.$refs.opinionText.getOpinion(),\r\n      //     files: files,\r\n      //     zfiles: zfiles\r\n      //   };\r\n      //   this.$store.dispatch(\"storeProcess/userAddSign\", data).then(() => {\r\n      //     if (this.token != null) {\r\n      //       window.close();\r\n      //     } else {\r\n      //       this.$router.go(-1);\r\n      //     }\r\n      //   });\r\n      // }\r\n    },\r\n    //征询回复\r\n    taskToInquReply() {\r\n      this.$refs.taskToInquReply.showDialog();\r\n      // if (this.$refs.opinionText.getOpinion() == \"\") {\r\n      //   Message.warning(\"请输入意见内容\");\r\n      // } else {\r\n      //   let files = \"\";\r\n      //   let zfiles = \"\";\r\n      //   this.$refs.fileUpload.isFinishUpload();\r\n      //   if (this.$refs.fileUpload && this.$refs.fileUpload.getFiles() != \"\") {\r\n      //     files = JSON.stringify(this.$refs.fileUpload.getFiles());\r\n      //   }\r\n      //   let data = {\r\n      //     procDefId: this.defId,\r\n      //     procInstId: this.instId,\r\n      //     status: \"inqu_reply\",\r\n      //     taskId: this.taskId,\r\n      //     opinion: this.$refs.opinionText.getOpinion(),\r\n      //     files: files,\r\n      //     zfiles: zfiles,\r\n      //     formData: JSON.stringify(this.$refs.formContent.data)\r\n      //   };\r\n      //   this.$store.dispatch(\"storeProcess/taskToInquReply\", data).then(() => {\r\n      //     if (this.token != null) {\r\n      //       window.close();\r\n      //     } else {\r\n      //       this.$router.go(-1);\r\n      //     }\r\n      //   });\r\n      // }\r\n    },\r\n    //驳回设置\r\n    taskToReject() {\r\n      // 审批附件数据\r\n      // if (this.$refs.fileUpload && this.$refs.fileUpload.getFiles() != \"\") {\r\n      //   this.opinionFiles = JSON.stringify(this.$refs.fileUpload.getFiles());\r\n      // }\r\n      let parentTaskId = \"\";//用户任务加签后的父任务ID\r\n      if (this.nodeType == \"USERTASK\" && this.tasks.bpmTask.parentId != \"0\") {//用户任务加签\r\n        parentTaskId = this.tasks.bpmTask.parentId;\r\n      }\r\n      this.$refs.taskToReject.handleOpen(parentTaskId, this); //父组件调用子组件方法\r\n    },\r\n    //转办设置\r\n    taskToDelegate() {\r\n      this.$refs.taskToDelegate.handleClose(this.opinionField, this.$refs.formContent.data, this.appendOpinion, this); //父组件调用子组件方法\r\n    },\r\n    //征询设置\r\n    taskToInqu() {\r\n      if (this.status != \"TRANSFORMEDINQU\") {\r\n        this.$refs.taskToInqu.showType();\r\n      }\r\n      this.$refs.taskToInqu.handleClose(this.opinionField, this.$refs.formContent.data, this.appendOpinion); //父组件调用子组件方法\r\n    },\r\n    //流程终止\r\n    taskToEndProcess() {\r\n      this.$refs.taskToEndProcess.handleClose(this); //父组件调用子组件方法\r\n    },\r\n    //流转设置\r\n    taskToTrans() {\r\n      // if (this.$refs.fileUpload && this.$refs.fileUpload.getFiles() != \"\") {\r\n      //   this.opinionFiles = JSON.stringify(this.$refs.fileUpload.getFiles());\r\n      // }\r\n      this.$refs.taskToTrans.handleClose(this, this.opinionField, this.$refs.formContent.data, this.appendOpinion); //父组件调用子组件方法\r\n    },\r\n    //加签设置\r\n    taskToAddSign() {\r\n      this.$refs.taskToAddSign.handleClose(this.nodeType, this.instId, this); //父组件调用子组件方法\r\n    },\r\n    //任务延期\r\n    taskToDelay() {\r\n      this.$refs.taskToDelay.handleClose(); //父组件调用子组件方法\r\n    },\r\n    //并行审批\r\n    taskApproveLine() {\r\n      this.$refs.taskToApproveLine.handleClose(); //父组件调用子组件方法\r\n    },\r\n    // 顺序签署\r\n    taskSignSequence() {\r\n      this.$refs.taskToSignSequence.handleClose(); //父组件调用子组件方法\r\n    },\r\n    // 并行签署\r\n    taskSignLine() {\r\n      this.$refs.taskToSignLine.handleClose(); //父组件调用子组件方法\r\n    },\r\n    doNext() {\r\n      if (!this.text) {\r\n        if (this.actionName == \"opposeTrans\" || this.actionName == \"oppose\") {\r\n          this.text = \"反对\";\r\n        } else {\r\n          this.text = \"同意\";\r\n        }\r\n      }\r\n      const this_ = this;\r\n      utils\r\n        .getOnlineFormData(true)\r\n        .then(formDataStr => this_.doNextSubmit(formDataStr))\r\n        .catch(reason =>\r\n          utils.handleGetFormDataReject(reason).then(() => this.doNextSubmit())\r\n        );\r\n    },\r\n    // doNext执行。formDataStr：字符串格式的表单数据。\r\n    doNextSubmit(formDataStr) {\r\n      let _this = this;\r\n      let scriptResult = this.runBeforeScript();\r\n      //执行前置脚本返回false时终止按钮操作\r\n      if (scriptResult === false) return;\r\n      //执行前置脚本返回的接口时先执行前置事件接口\r\n      if (scriptResult.then && typeof scriptResult.then == \"function\") {\r\n        scriptResult.then(() => {\r\n          //接口返回成功则正常执行按钮操作\r\n          _this.funcDoNext(formDataStr);\r\n        }, (fail) => {\r\n          //接口返回失败则终止按钮操作，并给与提示\r\n          _this.$message.warning(fail);\r\n          return;\r\n        }\r\n        );\r\n      } else {\r\n        //执行前置脚本返回true时正常执行按钮操作\r\n        _this.funcDoNext(formDataStr);\r\n      }\r\n    },\r\n    funcDoNext(formDataStr) {\r\n      utils.closeAllNotification();\r\n      let data = this.handleFormData(formDataStr);\r\n      data.formKey = this.$refs.formContent.formKey;\r\n      data.opinion = this.text;\r\n      if (this.nodeType == \"USERTASK\" && this.tasks.bpmTask.parentId != \"0\") {//用户任务加签\r\n        if (this.actionName == \"oppose\") {\r\n          data.addSignAction = \"opposeTrans\";\r\n        } else if (this.actionName == \"agree\") {\r\n          data.addSignAction = \"agreeTrans\";\r\n        }\r\n      }\r\n      if (\r\n        (this.choiceExcutor || this.jumpType || this.$route.query.type === 'free') &&\r\n        !this.taskStatusArray.includes(this.status)\r\n      ) {\r\n        this.$store\r\n          .dispatch(\"storeProcess/getAfterJumpNodes\", {\r\n            taskId: this.taskId,\r\n            data: data.data,\r\n            defId: \"\",\r\n            instId: \"\",\r\n            type: this.$route.query.type || this.jumpType\r\n          })\r\n          .then(res => {\r\n            debugger;\r\n            if (\r\n              res.afterNodes.length == 0 ||\r\n              (res.afterNodes.length == 1 &&\r\n                res.afterNodes[0].excutorList != undefined &&\r\n                res.afterNodes[0].excutorList.length == 1)\r\n            ) {\r\n              this.$refs.taskToComplete.showDialog(this.opinionField, this.$refs.formContent.data, this.appendOpinion, data);\r\n            } else {\r\n              this.$refs.taskSelectDestination.showDialog(\r\n                data.data,\r\n                data.files,\r\n                data.zfiles,\r\n                data.opinion,\r\n                this.instId,\r\n                this.jumpType\r\n              );\r\n            }\r\n          });\r\n      } else {\r\n        //this.disabled = true;\r\n        let tipMsg = \"确认办理此任务?\";\r\n        if (this.actionName == \"agree\" && this.status == \"SIGNSEQUENCEED\") {\r\n          this.$http\r\n            .get(\r\n              \"${bpmRunTime}/runtime/task/v1/nextExecutor?taskId=\" + this.taskId\r\n            )\r\n            .then(response => {\r\n              if (response.data.state && response.data.value) {\r\n                tipMsg = `下一步的执行人为：${response.data.value.name}。<br/> 您确定要提交吗？`;\r\n              }\r\n              this.$refs.taskToComplete.showDialog(this.opinionField, this.$refs.formContent.data, this.appendOpinion, data);\r\n            });\r\n          return;\r\n        }\r\n        this.$refs.taskToComplete.showDialog(this.opinionField, this.$refs.formContent.data, this.appendOpinion, data);\r\n      }\r\n    },\r\n    //同意\r\n    taskAgree() {\r\n      this.actionName = \"agree\";\r\n      this.doNext();\r\n    },\r\n    //同意（流转）\r\n    taskAgreeTrans() {\r\n      this.actionName = \"agreeTrans\";\r\n      this.doNext();\r\n    },\r\n    //反对\r\n    taskOppose() {\r\n      this.actionName = \"oppose\";\r\n      this.doNext();\r\n    },\r\n    //反对（流转）\r\n    taskOpposeTrans() {\r\n      this.actionName = \"opposeTrans\";\r\n      this.doNext();\r\n    },\r\n    hiddenOpertion() {\r\n      if (this.$refs.btnRegion) {\r\n        this.$refs.btnRegion.style.display = \"none\";\r\n      }\r\n      this.$refs.formContent.hiddenContent();\r\n    },\r\n    //是否显示滚动条\r\n    isScroll() {\r\n      //屏幕宽度\r\n      let window_width = ($(window).width());\r\n      //审批页面宽度\r\n      let from_w = $(\"main\")[0].clientWidth;\r\n      //有滚动条\r\n      if (window_width > from_w) {\r\n        return true;\r\n      }\r\n      return false;\r\n    },\r\n    //挂起\r\n    hangUp() {\r\n      flow.forbiddenInstance(this.instId).then(data => {\r\n        if (data.state) {\r\n          this.$message({ type: \"success\", message: data.message });\r\n          this.checkInstStatus();\r\n        }\r\n      })\r\n    },\r\n    //取消挂起\r\n    cancelHangUp() {\r\n      flow.unForbiddenInstance(this.instId).then(data => {\r\n        if (data.state) {\r\n          this.$message({ type: \"success\", message: data.message });\r\n          this.checkInstStatus(() => { this.isHang = false; this.disabled = false });\r\n        }\r\n      })\r\n    },\r\n    //跳转到下一个任务\r\n    nextTask() {\r\n      let _this=this;\r\n      if (_this.$route.name.indexOf(\"reportModuleInst\")!=-1) {\r\n        _this.$router.push(\"/statement/template/preview/\"+_this.$route.params.templateKey+\"/todo/\"+_this.$route.params.defKey+\"/true\");\r\n      }else{\r\n        this.$store.dispatch(\"storeProcess/getNextTaskByDefId\", {defId:this.defId,defKey:this.defKey}).then(resp => {\r\n          if (resp.state) {\r\n            //跳转到新的待办页面\r\n            if (resp.value) {\r\n              this.handleOpenTask(resp.value);\r\n            } else {\r\n              this.$message({ type: \"success\", message: \"该流程所属任务已处理完成\" });\r\n              setTimeout(() => {\r\n                if (this.$route.name.indexOf(\"sysModuleInst\")!=-1){\r\n                  _this.$router.push(\"/v-flow/v-todo/\" + _this.$route.params.defKey);\r\n                }else{\r\n                  _this.$router.push(\"/v-flow/v-todo/\");\r\n                }\r\n              }, 10);\r\n            }\r\n          }\r\n        })\r\n      }\r\n    },\r\n    handleOpenTask(row) {\r\n      if (row.status == \"SHARE\" || row.status == \"BACKSHARE\") {\r\n        if (row.identityList && row.identityList.length == 1) {\r\n          let url = \"/task/\" + row.id + \"/\" + row.identityList[0].id;\r\n          this.openAndReload(url);\r\n        } else {\r\n          let html =\r\n            \"<select ref=\" +\r\n            Math.random() +\r\n            ' id=\"approvalLeaderSelect\" style=\"width: 200px;height: 30px;border-radius: 4px;margin: 20px 70px;\" ><option value=\"\">请选择</option>';\r\n          row.identityList.forEach(identity => {\r\n            html +=\r\n              '<option value=\"' +\r\n              identity.id +\r\n              '\">' +\r\n              identity.name +\r\n              \"</option>\";\r\n          });\r\n          html += \"</select>\";\r\n          let this_ = this;\r\n          this.$alert(html, \"请选择一个领导代为审批\", {\r\n            dangerouslyUseHTMLString: true,\r\n            beforeClose: function (action, instance, done) {\r\n              if (action == \"confirm\") {\r\n                let se = document.getElementById(\"approvalLeaderSelect\");\r\n                if (se.selectedIndex == 0) {\r\n                  this.$message.warning(\"请选择代为审批的领导\");\r\n                } else {\r\n                  instance.close();\r\n                  this_.openAndReload(\r\n                    \"/task/\" + row.id + \"/\" + se[se.selectedIndex].value\r\n                  );\r\n                }\r\n              } else {\r\n                instance.close();\r\n              }\r\n            }\r\n          });\r\n        }\r\n      } else if (\r\n        row.status == \"AGENT\" &&\r\n        row.ownerId != row.assigneeId &&\r\n        row.ownerId == this.$store.state.login.currentUser.userId\r\n      ) {\r\n        //委托任务\r\n        this.$router.push(\"/instRead/\" + row.procInstId + \"/agent\");\r\n      } else if (row.status == \"FOLLOW\") {\r\n        //跟踪任务\r\n        this.$router.push(\"/taskRead/\" + row.id + \"/FOLLOW\");\r\n      } else {\r\n        let url = \"/task/\" + row.id + \"/0\";\r\n        if (this.$route.name.indexOf(\"reportModuleInst\")!=-1) {\r\n          url = \"/reportModuleInst/\" + row.id + \"/0\" + \"/\" + this.$route.params.defKey + \"/true/\"+this.$route.templateKey;\r\n        }else if (this.$route.name.indexOf(\"sysModuleInst\")!=-1){\r\n          url = \"/sysModuleInst/\" + row.id + \"/0\" + \"/\" + this.$route.params.defKey + \"/true\";\r\n        }\r\n        this.openAndReload(url);\r\n      }\r\n    },\r\n    openAndReload(url) {\r\n      this.$router.push(url);\r\n      setTimeout(() => {\r\n        this.$root.$children[0].reload();\r\n      }, 10);\r\n    }\r\n  },\r\n  created() {\r\n    //兼容只显示审批页面时\r\n    if (this.$route.meta.single) {\r\n      this.isDd = true;\r\n    }\r\n\r\n    if (this.type == \"done\") {\r\n      this.dailogTitle = \"撤回\";\r\n      this.isHand = true;\r\n    } else if (this.type == \"request\") {\r\n      this.dailogTitle = \"撤回到发起人\";\r\n      this.isHand = false;\r\n    }\r\n  },\r\n};\r\n",null]}