{"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]}