{"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\\start.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\xq-web-fvue\\src\\components\\flow\\start.vue","mtime":1667327529419},{"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\r\nimport req from \"@/request.js\";\r\nimport { mapState } from \"vuex\";\r\nimport FormContent from \"@/components/flow/formContent.vue\";\r\nimport TaskSelectDestination from \"@/components/flow/task/taskSelectDestination.vue\";\r\nimport utils from \"@/utils.js\";\r\nimport { Base64 } from \"js-base64\";\r\n\r\nexport default {\r\n name: \"start\",\r\n components: {\r\n FormContent,\r\n TaskSelectDestination,\r\n },\r\n props: [\"defId\", \"instId\", \"leaderId\", \"copyInstId\"],\r\n data() {\r\n return {\r\n tableData:[],\r\n dialogVisible: false,\r\n disabled: true,\r\n nodeDef: {},\r\n flowId: \"\",\r\n isShowStartBtn: true,\r\n isMyRequest: false,\r\n defName: \"\",\r\n initFillData: false,\r\n reloadForm: false,\r\n defName: \"\",\r\n btnAlias: \"\",\r\n data: null,\r\n show: false,\r\n localInstId:this.instId\r\n };\r\n },\r\n computed: mapState({\r\n curOrgPost: (state) => state.user.postCharge,\r\n }),\r\n beforeRouteEnter(to,from,next){\r\n next(vm=>{\r\n //判断用户是否具有流程启动权限\r\n const userId = vm.$store.state.login.currentUser.userId,\r\n instId = to.params.instId,\r\n defId = to.params.defId,\r\n leadId = to.params.leaderId;\r\n \r\n let url = `${window.context.bpmModel}/flow/defAuthorize/v1/startRight?userId=${userId}&defId=${defId}&leadId=${leadId}`;\r\n // 发起的是流程草稿时\r\n if(instId){\r\n url = `${url}&instId=${instId}`;\r\n }\r\n\r\n req.get(url).then(resp=>{\r\n if(!resp.data || !resp.data.state || !resp.data.value){\r\n vm.$alert('您没有该流程的启动权限','无权限',{\r\n confirmButtonText: \"返回主页\",\r\n callback: action =>{\r\n vm.$router.push(\"/home\");\r\n }\r\n })\r\n }else{\r\n vm.show = true;\r\n }\r\n })\r\n })\r\n },\r\n mounted() {\r\n let _this = this;\r\n //如果该字段的校验受另一个字段影响。则监听另一个字段控件发布的值改变事件\r\n this.$root.$on(\"startFlowBtnChange\", function (value) {\r\n _this.isShowStartBtn = value;\r\n });\r\n //监听表单加载完成发布事件\r\n this.$root.$on(\"formLoading\", function (value) {\r\n _this.disabled = value;\r\n });\r\n },\r\n methods: {\r\n //处理任务\r\n handleTask(row){\r\n this.$router.push(\"/task/\" + row.id + \"/0\");\r\n },\r\n // 准备数据\r\n handleData(formDataStr) {\r\n let data = { defId: this.defId };\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 data.supportMobile = 0;\r\n if (this.instId) {\r\n data.proInstId = this.instId;\r\n }\r\n if (this.curOrgPost && this.curOrgPost.org) {\r\n data.startOrgId = this.curOrgPost.org.id;\r\n }\r\n if (window.urgentStateValue) {\r\n data.urgentStateValue = window.urgentStateValue;\r\n }\r\n if (this.leaderId && this.leaderId != 0) {\r\n data.agentLeaderId = this.leaderId;\r\n }\r\n return data;\r\n },\r\n //启动\r\n start() {\r\n this.btnAlias = \"startFlow\";\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 utils\r\n .getOnlineFormData(true)\r\n .then((formDataStr) => {\r\n //执行按钮前置脚本\r\n if(typeof(formDataStr)===\"object\" && (formDataStr.hasOwnProperty('businessKey')||formDataStr.hasOwnProperty('sysCode'))){\r\n this.data = formDataStr;\r\n }else{\r\n this.data = JSON.parse(formDataStr);\r\n }\r\n let scriptResult = this.runBeforeScript();\r\n\r\n if (scriptResult === false) return;\r\n if (scriptResult.then && typeof scriptResult.then == \"function\") {\r\n scriptResult.then(\r\n () => {\r\n //接口返回成功则正常执行按钮操作\r\n _this.startNext();\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.startNext();\r\n }\r\n })\r\n .catch((reason) =>\r\n utils\r\n .handleGetFormDataReject(reason, true)\r\n .then(() => this.processStart())\r\n );\r\n },\r\n //执行前置脚本\r\n runBeforeScript() {\r\n let _this = this;\r\n let item = utils.indexOfList(\r\n _this.$refs.formContent.buttons,\r\n \"alias\",\r\n _this.btnAlias\r\n );\r\n return _this.tempScript(item.beforeScript);\r\n },\r\n //执行前置脚本\r\n tempScript(script) {\r\n let _this = this.$refs.formContent;\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 startNext() {\r\n utils.getOnlineFormData(false).then((formDataStr) => {\r\n utils.closeAllNotification();\r\n if (\r\n !this.nodeDef.localProperties.jumpType &&\r\n !this.nodeDef.localProperties.choiceExcutor\r\n ) {\r\n this.processStart(formDataStr);\r\n } else {\r\n this.$store\r\n .dispatch(\"storeProcess/getAfterJumpNodes\", {\r\n taskId: \"\",\r\n data: Base64.encode(formDataStr),\r\n defId: this.defId || \"\",\r\n instId: this.instId || \"\",\r\n })\r\n .then((data) => {\r\n if (\r\n data.afterNodes.length == 0 ||\r\n (data.afterNodes.length == 1 &&\r\n data.afterNodes[0].excutorList != undefined &&\r\n data.afterNodes[0].excutorList.length == 1)\r\n ) {\r\n this.processStart(formDataStr);\r\n } else {\r\n let formData = {};\r\n if (formDataStr.constructor == Object) {\r\n formData = formDataStr;\r\n formData.data = \"\";\r\n } else if (formDataStr.constructor == String) {\r\n formData.data = Base64.encode(formDataStr);\r\n }\r\n this.$refs.taskSelectDestination.showDialog(formData, \"\", \"\"); //父组件调用子组件方法\r\n }\r\n });\r\n }\r\n });\r\n },\r\n //流程发起\r\n processStart(formDataStr) {\r\n let formKey = this.$refs.formContent.formKey;\r\n let data = this.handleData(formDataStr);\r\n if (sessionStorage.getItem(\"formImportTempJson\")) {\r\n data.updateSubTableJson = sessionStorage.getItem(\"formImportTempJson\");\r\n }\r\n this.disabled = true;\r\n this.$store\r\n .dispatch(\"storeProcess/start\", data)\r\n .then((row) => {\r\n if (row.curBoPkVal) {\r\n sessionStorage.setItem(\"formImportTempRefId\", row.curBoPkVal);\r\n }\r\n sessionStorage.removeItem(\"formImportTempJson\");\r\n if (row.tasks && row.tasks.length > 0) {\r\n if (row.tasks.length == 1) {\r\n this.$router.push(\"/task/\" + row.tasks[0].id + \"/0\");\r\n } else {\r\n //弹出窗口让用户自己选择去哪个待办\r\n this.tableData=row.tasks;\r\n this.dialogVisible=true;\r\n }\r\n } else {\r\n if (row.inst.status != \"end\") {\r\n this.$router.push(\"/inst/\" + row.instId + \"/request\");\r\n } else {\r\n this.$router.push(\"/instRead/\" + row.instId + \"/myRequest\");\r\n }\r\n }\r\n // this.$store\r\n // .dispatch(\"storeProcess/getInstanceByInstId\", row.instId)\r\n // .then((insts) => {\r\n\r\n // if (insts.status != \"end\") {\r\n // this.$router.push(\"/inst/\" + row.instId + \"/request\");\r\n // } else {\r\n // this.$router.push(\"/instRead/\" + row.instId + \"/myRequest\");\r\n // }\r\n // });\r\n })\r\n .finally(() => {\r\n this.disabled = false;\r\n });\r\n },\r\n //保存\r\n saveDraft() {\r\n this.btnAlias = \"saveDraft\";\r\n let scriptResult = this.runBeforeScript();\r\n let formKey = this.$refs.formContent.formKey;\r\n this.disabled = true;\r\n const this_ = this;\r\n utils\r\n .getOnlineFormData(false)\r\n .then((formDataStr) => {\r\n utils.closeAllNotification();\r\n let data = this_.handleData(formDataStr);\r\n data.formKey = formKey;\r\n if (sessionStorage.getItem(\"formImportTempJson\")) {\r\n data.updateSubTableJson = sessionStorage.getItem(\r\n \"formImportTempJson\"\r\n );\r\n }\r\n\r\n this_.$store\r\n .dispatch(\"storeProcess/saveDraft\", data)\r\n .then((row) => {\r\n if (row.curBoPkVal) {\r\n sessionStorage.setItem(\"formImportTempRefId\", row.curBoPkVal);\r\n }\r\n sessionStorage.removeItem(\"formImportTempJson\");\r\n this_.isMyRequest = true;\r\n this_.localInstId = row.instId;\r\n this_.$router.replace(\"/start/\" + this_.defId + \"/\" + row.instId);\r\n })\r\n .finally(() => {\r\n //保存完成后,需要重新加载bo数据,不然第二次保存的时候会因为版本号不同而导致保存失败\r\n this.$refs.formContent.init(true);\r\n });\r\n })\r\n .catch((reason) => {\r\n this.disabled = false;\r\n utils.handleGetFormDataReject(reason);\r\n });\r\n },\r\n //返回\r\n back() {\r\n utils.closeAllNotification();\r\n if (this.instId) {\r\n this.$router.push(\"/v-flow/v-request\");\r\n } else {\r\n if (JSON.stringify(this.$route.query) == \"{}\") {\r\n // this.$router.push(\"/v-flow/v-flowList\");\r\n this.$router.go(-1);\r\n } else {\r\n this.$router.go(-1);\r\n }\r\n }\r\n },\r\n toMyTodo(){\r\n this.$router.push(\"/v-flow/v-todo\");\r\n }\r\n },\r\n created() {\r\n //监听表单数据请求完成\r\n let _this = this;\r\n //取发起节点的属性用于判断是否可以选择路径跳转\r\n window.agentLeaderId = this.leaderId;\r\n this.$store\r\n .dispatch(\"storeProcess/getCurNodeProperties\", {\r\n defId: this.defId || \"\",\r\n instId: this.instId || \"\",\r\n taskId: \"\",\r\n })\r\n .then((NodeDef) => {\r\n this.nodeDef = NodeDef;\r\n if (NodeDef.nodeProperties && NodeDef.nodeProperties.length>0 && NodeDef.nodeProperties[0].initFillData) {\r\n _this.initFillData = NodeDef.nodeProperties[0].initFillData;\r\n _this.$refs[\"formContent\"].setInitFillData(_this.initFillData);\r\n }\r\n });\r\n //获取流程信息\r\n req\r\n .get(window.context.bpmModel + \"/flow/def/v1/defGet?defId=\" + this.defId)\r\n .then((res) => {\r\n this.defName = res.data.name;\r\n });\r\n },\r\n};\r\n",null]}