{"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\\startByKey.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\xq-web-fvue\\src\\components\\flow\\startByKey.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\r\nimport req from \"@/request.js\";\r\nimport { mapState, mapActions } 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\nimport { debuglog } from \"util\";\r\n\r\nexport default {\r\n name: \"startByKey\",\r\n components: {\r\n FormContent,\r\n TaskSelectDestination\r\n },\r\n props: [\"defKey\"],\r\n data() {\r\n return {\r\n disabled: true,\r\n nodeDef: {},\r\n instId: \"\",\r\n leaderId: 0,\r\n flowId: \"\",\r\n defName:\"\",\r\n defId: \"\",\r\n isShowStartBtn: true,\r\n };\r\n },\r\n computed: mapState({\r\n // curOrgPost: state => state.user.postCharge,\r\n // defId: async function() {\r\n // var defId = \"\";\r\n // if (this.defKey) {\r\n // var p = await this.getDef();\r\n // p.then(res => {\r\n // debugger;\r\n // defId = res;\r\n // });\r\n // // return \"1245909504526516224\";\r\n // }\r\n // return defId;\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 async getDef() {\r\n let this_ = this;\r\n var promise = new Promise(function(resolve, reject) {\r\n req\r\n .get(\r\n window.context.bpmModel +\r\n \"/flow/def/v1/getJson?defKey=\" +\r\n this_.defKey\r\n )\r\n .then(function(res) {\r\n resolve(res.data.defId);\r\n });\r\n });\r\n return await promise;\r\n },\r\n // 准备数据\r\n handleData(formDataStr) {\r\n let data = { defId: this.defId };\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 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 start() {\r\n const 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\") && 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 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 .catch(reason =>\r\n utils.handleGetFormDataReject(reason, true).then(() => this_.processStart())\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 this.$store\r\n .dispatch(\"storeProcess/getInstanceByInstId\", row.instId)\r\n .then(insts => {\r\n if (row.curBoPkVal) {\r\n sessionStorage.setItem('formImportTempRefId',row.curBoPkVal);\r\n }\r\n sessionStorage.removeItem('formImportTempJson');\r\n this.$router.push(\"/v-flow/v-done/\"+this.defKey);\r\n /* if (insts.status != \"end\") {\r\n this.$router.push(\"/v-flow/v-done\");\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 let formKey= this.$refs.formContent.formKey;\r\n const this_ = this;\r\n utils\r\n .getOnlineFormData(true)\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('formImportTempJson');\r\n }\r\n\r\n this_.$store.dispatch(\"storeProcess/saveDraft\", data).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_.$router.replace(\"/start/\" + this_.defId + \"/\" + row.instId);\r\n }).catch( r => {\r\n });\r\n })\r\n .catch(reason =>\r\n utils.handleGetFormDataReject(reason).then(() => this.processStart())\r\n );\r\n },\r\n //返回\r\n back() {\r\n utils.closeAllNotification();\r\n if (this.isMyRequest) {\r\n this.$router.push(\"/v-flow/v-request\");\r\n } else {\r\n if (JSON.stringify(this.$route.query) == \"{}\") {\r\n this.$router.go(-1);\r\n } else {\r\n this.$router.push(\"/home\");\r\n }\r\n }\r\n }\r\n },\r\n created() {\r\n var p = this.getDef();\r\n p.then(res => {\r\n this.defId = res;\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[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 +\r\n \"/flow/def/v1/defGet?defId=\" +\r\n this.defId\r\n )\r\n .then(res=>{\r\n this.defName = res.data.name;\r\n })\r\n });\r\n }\r\n};\r\n",null]}