{"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\\task\\taskToReject.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\xq-web-fvue\\src\\components\\flow\\task\\taskToReject.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\r\nimport { mapState, mapActions } from \"vuex\";\r\nimport { Message } from \"element-ui\";\r\nimport OpinionText from \"@/components/common/opinionText.vue\";\r\nimport FileUpload from \"@/components/common/fileUpload.vue\";\r\nimport utils from \"@/utils.js\";\r\nimport req from \"@/request.js\";\r\nexport default {\r\n  name: \"taskToReject\",\r\n  props: [\"taskId\", \"leaderId\", \"opinion\",\"opinionField\",\"appendOpinion\",\"instId\"],\r\n  components: { OpinionText,FileUpload },\r\n  data() {\r\n    return {\r\n      rejectTaskId:\"\",//要驳回的任务ID\r\n      rejectDialog: false,\r\n      radio: \"\",\r\n      nodeId: \"\",\r\n      backHandMode: \"normal\",\r\n      token: utils.getUrlKey(\"token\"),\r\n      canRejectNode: [],\r\n      rejectConf: {},\r\n      isSameNode: true,\r\n      title: \"驳回\",\r\n      fullscreenLoading: true,\r\n      flowThis:\"\",//flowAction的this,\r\n      boData:{},\r\n      wrap: \"\\n\",\r\n      initBoAttr:\"\",\r\n      appendStr:true\r\n    };\r\n  },\r\n  computed: {},\r\n  watch: {\r\n    backHandMode: function(n, o) {\r\n      if (this.rejectConf.inSubProcess) {\r\n        if (n == \"normal\") {\r\n          this.radio = \"backToStart\";\r\n        } else {\r\n          this.radio = \"reject\";\r\n        }\r\n      }\r\n      if (!this.isSameNode) {\r\n        if (n == \"normal\") {\r\n          this.canRejectNode = this.rejectConf.allowNormalNode;\r\n        } else {\r\n          this.canRejectNode = this.rejectConf.allowDirectNode;\r\n        }\r\n        let flag = false;\r\n        this.canRejectNode.forEach(n => {\r\n          if (n.nodeId == this.nodeId) {\r\n            flag = true;\r\n            return;\r\n          }\r\n        });\r\n        if (!flag) {\r\n          this.nodeId = \"\";\r\n        }\r\n      }\r\n    }\r\n  },\r\n  methods: {\r\n    //鼠标点击页面其他其他位置不关闭弹框\r\n    handleClose() {\r\n      this.rejectDialog = true;\r\n    },\r\n    //执行前置脚本\r\n    runBeforeScript(){\r\n      let _this = this;\r\n      let item = utils.indexOfList(_this.flowThis.rowsBtn, \"alias\", _this.flowThis.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.flowThis.$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    handleOpen(parentTaskId,_this) {\r\n      if(this.opinionField && document.querySelector(\"[model-name='data.\"+this.opinionField+\"']\")){\r\n        let con = document.querySelector(\"[model-name='data.\"+this.opinionField+\"']\").__vue__;\r\n        if(con && con.isEditor){\r\n          this.wrap = \"<br>\";\r\n        }\r\n      }\r\n      this.boData = _this.$refs.formContent.data;\r\n      if(parentTaskId){\r\n        this.rejectTaskId = parentTaskId;\r\n      }\r\n      this.flowThis = _this;\r\n      let data = { taskId: this.taskId, backModel: \"reject\" };\r\n      let this_ = this;\r\n      this.$store\r\n        .dispatch(\"storeProcess/taskToReject\", data)\r\n        .then(function(resp) {\r\n          this_.rejectConf = resp;\r\n          let normalNodeIds = [];\r\n          resp.allowNormalNode.forEach(element => {\r\n            normalNodeIds.push(element.nodeId);\r\n          });\r\n          if (resp.allowNormalNode) {\r\n            resp.allowDirectNode.forEach(element => {\r\n              if (normalNodeIds.indexOf(element.nodeId) < 0) {\r\n                this_.isSameNode = false;\r\n              }\r\n            });\r\n          }\r\n          if (resp.inGateway) {\r\n            this_.backHandMode = \"direct\";\r\n          }\r\n          if (this_.backHandMode == \"normal\") {\r\n            this_.canRejectNode = resp.allowNormalNode;\r\n          } else {\r\n            this_.canRejectNode = resp.allowDirectNode;\r\n          }\r\n\r\n          // 只有驳回发起人的情况\r\n          if (\r\n            this_.rejectConf.canRejectToStart &&\r\n            !this_.rejectConf.canRejectPreAct &&\r\n            !this_.rejectConf.canRejectToAnyNode\r\n          ) {\r\n            this_.radio = \"backToStart\";\r\n            this_.rejectDialog = true;\r\n            this_.fullscreenLoading = false;\r\n            return;\r\n          }\r\n          // 只有驳回上一步的情况\r\n          if (\r\n            !this_.rejectConf.canRejectToStart &&\r\n            this_.rejectConf.canRejectPreAct &&\r\n            !this_.rejectConf.canRejectToAnyNode\r\n          ) {\r\n            this_.radio = \"rejectPre\";\r\n            this_.rejectDialog = true;\r\n            this_.fullscreenLoading = false;\r\n            return;\r\n          }\r\n\r\n          // 只有驳回指定节点的情况并且指定节点只有一个\r\n          if (\r\n            !this_.rejectConf.canRejectToStart &&\r\n            !this_.rejectConf.canRejectPreAct &&\r\n            this_.rejectConf.canRejectToAnyNode &&\r\n            this_.canRejectNode.length == 1\r\n          ) {\r\n            this_.nodeId = this_.canRejectNode[0].nodeId;\r\n            this_.radio = \"reject\";\r\n            this_.rejectDialog = true;\r\n            this_.fullscreenLoading = false;\r\n            return;\r\n          }\r\n          if(this_.rejectConf.canRejectToStart && (this_.backHandMode =='normal' || !this_.rejectConf.inSubProcess)){\r\n            this_.radio = \"backToStart\";\r\n          }else if(!this_.rejectConf.afterGateway && !this_.rejectConf.inGateway && !this_.rejectConf.inSubProcess && this_.rejectConf.canRejectPreAct){\r\n            this_.radio = \"rejectPre\";\r\n          }else if(this_.rejectConf.canRejectToAnyNode && (!this_.rejectConf.inSubProcess || this_.backHandMode !='normal' )){\r\n            this_.radio = \"reject\";\r\n            this_.isNode = true;\r\n          }\r\n          this_.title = \"驳回设置\";\r\n          this_.rejectDialog = true;\r\n          this_.fullscreenLoading = false;\r\n        });\r\n    },\r\n    //取消\r\n    cancel() {\r\n      this.rejectDialog = false;\r\n      this.$refs.opinionText.opinion = \"\";\r\n    },\r\n    //确认\r\n    confirm() {\r\n      if (!this.radio) {\r\n        Message.warning(\"请选择驳回方式\");\r\n        return;\r\n      }\r\n      if (this.radio == \"reject\" && !this.nodeId) {\r\n        Message.warning(\"请选择驳回节点\");\r\n        return;\r\n      }\r\n      if (!this.opinion && this.$refs.opinionText.getOpinion() == \"\") {\r\n        Message.warning(\"请填写驳回意见\");\r\n        return;\r\n      }\r\n      utils\r\n        .getOnlineFormData(true)\r\n        .then(formDataStr => this.submitConfirm(formDataStr))\r\n        .catch(reason =>\r\n          utils.handleGetFormDataReject(reason).then(() => this.submitConfirm())\r\n        );\r\n    },\r\n    submitConfirm(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      if (formDataStr && formDataStr.constructor != String) {\r\n        formDataStr = JSON.stringify(formDataStr);\r\n      }\r\n      if (this.radio == \"rejectPre\") {\r\n        this.nodeId = \"\";\r\n      }\r\n      let files = this.$refs.FileUpload.getFiles();\r\n      if(files != \"\"){\r\n        files = JSON.stringify(files);\r\n      } \r\n      this.$refs.FileUpload.isFinishUpload();\r\n      let data = {\r\n        taskId: this.taskId,\r\n        rejectTaskId:this.rejectTaskId,\r\n        actionName: this.radio == \"rejectPre\" ? \"reject\" : this.radio,\r\n        backHandMode: this.backHandMode,\r\n        opinion: this.opinion || this.$refs.opinionText.getOpinion(),\r\n        destination: this.nodeId,\r\n        agentLeaderId: this.leaderId,\r\n        files: files\r\n      };\r\n      if (window.urgentStateValue) {\r\n        data.urgentStateValue = window.urgentStateValue;\r\n      }\r\n      if (formDataStr) {\r\n        data.data = Base64.encode(formDataStr);\r\n      }\r\n      data.formKey=this.flowThis.$refs.formContent.formKey\r\n\r\n      this.$loading();\r\n      this.$store.dispatch(\"storeProcess/rejectComplete\", data).then(() => {\r\n        this.$loading().close();\r\n        this.rejectDialog = false;\r\n        if (this.token != null) {\r\n          window.close();\r\n        } else {\r\n          this.$parent.nextTask();\r\n          //this.$router.go(-1);\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 && document.querySelector(\"[model-name='data.\"+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.boData;\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){boData[filed[0]][filed[1]]=opinioValue+this.wrap+currentUser.fullname+\" \"+moment().format(\"YYYY-MM-DD HH:mm:ss\");\r\n          }\r\n        }else{\r\n          if (opinioValue){\r\n            opinioValue+=this.wrap+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+this.wrap+this.wrap+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        /*else if (filed.length==3 &&boData[filed[0]][filed[1]].length>0){//处理子表\r\n          for (let i = 0; i <boData[filed[0]][filed[1]].length ; i++) {\r\n            boData[filed[0]][filed[1]][i][filed[2]]=opinioValue;\r\n          }\r\n        }*/\r\n      }\r\n    }\r\n  }\r\n};\r\n",null]}