{"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]] == '


') {\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}。
您确定要提交吗?`;\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 \"\";\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]}