{"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\\taskFlowComponents\\flowAction.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\xq-web-fvue\\src\\components\\flow\\taskFlowComponents\\flowAction.vue","mtime":1667327529466},{"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//\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//\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/taskFlowComponents/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 = {\r\n instId: this.instId,\r\n taskId: this.taskId,\r\n }\r\n flow.getBpmSaveOpinionByTeam(bpmSaveOpinion).then(\r\n (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 }\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(\r\n 'token'\r\n ) > -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') >\r\n -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') >\r\n -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 '当前流程实例已被挂起,无法审批'\r\n )\r\n } else if (resp.data.indexOf('3') > -1) {\r\n this_.disabled = true\r\n this_.$message.warning(\r\n '当前流程定义已被禁止实例,无法审批'\r\n )\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 =\r\n document.getElementsByName('online-form')[0].__vue__\r\n .permission.table //获取子表权限\r\n let boData =\r\n 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 ||\r\n tables[key].required == 'true') &&\r\n zData['sub_' + key] &&\r\n zData['sub_' + key].length == 0\r\n ) {\r\n this.$message({\r\n message: '子表必填一条记录',\r\n type: 'warning',\r\n })\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 this.$router.go(-1)\r\n //todo\r\n // if (this.$route.name.indexOf('reportModuleInst') != -1) {\r\n // this.$router.push(\r\n // '/statement/template/preview/' +\r\n // this.$route.params.templateKey +\r\n // '/todo/' +\r\n // this.$route.params.defKey +\r\n // '/true'\r\n // )\r\n // } else if (this.$route.name.indexOf('sysModuleInst') != -1) {\r\n // this.$router.push(\r\n // '/v-flow/v-todo/' + this.$route.params.defKey\r\n // )\r\n // } else if (\r\n // this.type == 'done' ||\r\n // this.type == 'request' ||\r\n // this.myReadType == 'myRequest'\r\n // ) {\r\n // this.$router.push('/v-flow/v-request')\r\n // } else if (\r\n // this.state == 'COMMU' ||\r\n // this.state == 'FOLLOW' ||\r\n // this.$route.name == 'instRead-read'\r\n // ) {\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 (\r\n // this.$route.name == 'instRead' &&\r\n // this.$route.params.myReadType == 'delegate'\r\n // ) {\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(\r\n 'token'\r\n ) > -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 =\r\n '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\r\n .handleGetFormDataReject(reason)\r\n .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 //接口返回成功则正常执行按钮操作\r\n _this.funcSaveDraft(formDataStr)\r\n },\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\r\n .dispatch('storeProcess/revokeInstanceBtn', data)\r\n .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 (\r\n this.nodeType == 'USERTASK' &&\r\n this.tasks.bpmTask.parentId != '0'\r\n ) {\r\n //用户任务加签\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(\r\n this.opinionField,\r\n this.$refs.formContent.data,\r\n this.appendOpinion,\r\n this\r\n ) //父组件调用子组件方法\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(\r\n this.opinionField,\r\n this.$refs.formContent.data,\r\n this.appendOpinion\r\n ) //父组件调用子组件方法\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(\r\n this,\r\n this.opinionField,\r\n this.$refs.formContent.data,\r\n this.appendOpinion\r\n ) //父组件调用子组件方法\r\n },\r\n //加签设置\r\n taskToAddSign() {\r\n this.$refs.taskToAddSign.handleClose(\r\n this.nodeType,\r\n this.instId,\r\n this\r\n ) //父组件调用子组件方法\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 (\r\n this.actionName == 'opposeTrans' ||\r\n this.actionName == 'oppose'\r\n ) {\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\r\n .handleGetFormDataReject(reason)\r\n .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 //接口返回成功则正常执行按钮操作\r\n _this.funcDoNext(formDataStr)\r\n },\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 (\r\n this.nodeType == 'USERTASK' &&\r\n this.tasks.bpmTask.parentId != '0'\r\n ) {\r\n //用户任务加签\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 ||\r\n this.jumpType ||\r\n 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 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(\r\n this.opinionField,\r\n this.$refs.formContent.data,\r\n this.appendOpinion,\r\n data\r\n )\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 (\r\n this.actionName == 'agree' &&\r\n this.status == 'SIGNSEQUENCEED'\r\n ) {\r\n this.$http\r\n .get(\r\n '${bpmRunTime}/runtime/task/v1/nextExecutor?taskId=' +\r\n 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(\r\n this.opinionField,\r\n this.$refs.formContent.data,\r\n this.appendOpinion,\r\n data\r\n )\r\n })\r\n return\r\n }\r\n this.$refs.taskToComplete.showDialog(\r\n this.opinionField,\r\n this.$refs.formContent.data,\r\n this.appendOpinion,\r\n data\r\n )\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(() => {\r\n this.isHang = false\r\n this.disabled = false\r\n })\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(\r\n '/statement/template/preview/' +\r\n _this.$route.params.templateKey +\r\n '/todo/' +\r\n _this.$route.params.defKey +\r\n '/true'\r\n )\r\n } else {\r\n this.$store\r\n .dispatch('storeProcess/getNextTaskByDefId', {\r\n defId: this.defId,\r\n defKey: this.defKey,\r\n })\r\n .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({\r\n type: 'success',\r\n message: '该流程所属任务已处理完成',\r\n })\r\n setTimeout(() => {\r\n if (\r\n this.$route.name.indexOf(\r\n 'sysModuleInst'\r\n ) != -1\r\n ) {\r\n _this.$router.push(\r\n '/v-flow/v-todo/' +\r\n _this.$route.params.defKey\r\n )\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(\r\n 'approvalLeaderSelect'\r\n )\r\n if (se.selectedIndex == 0) {\r\n this.$message.warning(\r\n '请选择代为审批的领导'\r\n )\r\n } else {\r\n instance.close()\r\n this_.openAndReload(\r\n '/task/' +\r\n row.id +\r\n '/' +\r\n 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 =\r\n '/reportModuleInst/' +\r\n row.id +\r\n '/0' +\r\n '/' +\r\n this.$route.params.defKey +\r\n '/true/' +\r\n this.$route.templateKey\r\n } else if (this.$route.name.indexOf('sysModuleInst') != -1) {\r\n url =\r\n '/sysModuleInst/' +\r\n row.id +\r\n '/0' +\r\n '/' +\r\n this.$route.params.defKey +\r\n '/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]}