{"remainingRequest":"D:\\jenkins\\workspace\\xypm-web\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\xypm-web\\src\\components\\flow\\formContent.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\xypm-web\\src\\components\\flow\\formContent.vue","mtime":1675214577073},{"path":"D:\\jenkins\\workspace\\xypm-web\\node_modules\\babel-loader\\lib\\index.js","mtime":456789000000},{"path":"D:\\jenkins\\workspace\\xypm-web\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xypm-web\\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 OnlineForm from \"@/components/flow/OnlineForm.vue\";\r\nimport form from \"@/api/formContent.js\";\r\nimport { Message } from \"element-ui\";\r\nimport { Loading } from \"element-ui\";\r\nimport FilePreview from \"@/components/common/FilePreview.vue\";\r\nimport req from \"@/request.js\";\r\nexport default {\r\n  name: \"formContent\",\r\n  props: [\r\n    \"instId\",\r\n    \"taskId\",\r\n    \"defId\",\r\n    \"proInstId\",\r\n    \"type\",\r\n    \"readId\",\r\n    \"readDoneId\",\r\n    \"myReadType\",\r\n    \"leaderId\",\r\n    \"formLoading\",\r\n    \"task_state\",\r\n    \"tasks\",\r\n    \"isLook\",\r\n    \"copyInstId\"\r\n  ],\r\n  data() {\r\n    return {\r\n      buttons: [],\r\n      status_style: \"\",\r\n      dataInstId: \"\",\r\n      html: null,\r\n      data: null,\r\n      permission: null,\r\n      isView: true,\r\n      formType: \"INNER\",\r\n      htmlSrc: null,\r\n      urgentStateConf: {},\r\n      formHelpFile: \"\",\r\n      src: \"\",\r\n      files: [],\r\n      fileId: \"\",\r\n      fileTree: \"\",\r\n      formData: \"\",\r\n      initFillData: false,\r\n      formId: '',\r\n      flowKey: '',\r\n      taskDetailLoading: '',\r\n      topDivHeight: \"99px\",   //空div的高度 用于撑开页面下的div内容\r\n      formKey: \"\",//表单key\r\n      formComponentKey:new Date().getTime()\r\n    };\r\n  },\r\n  watch: {\r\n    tasks: function (newVal, oldVal) {\r\n      if (newVal) {\r\n        this.init();\r\n      }\r\n    },\r\n    urgentStateValue: function (newVal, oldVal) {\r\n      if (window.urgentStateValue) {\r\n        window.urgentStateValue.new = newVal;\r\n      }\r\n    }\r\n  },\r\n  created() {\r\n    if (this.isPlmeformPage) {\r\n      this.topDivHeight = 0\r\n    }\r\n    //待办的时候,watch已经监听了tasks,可以不用初始化\r\n    if (!this.taskId) {\r\n      this.init();\r\n    }\r\n    if (this.type == \"request\") {\r\n      this.topDivHeight = \"20px\";\r\n    }\r\n\r\n  },\r\n  methods: {\r\n    /**\r\n     * 修改样式\r\n     * @param divheight  最上面div的高度\r\n     */\r\n    updateStyle(divheight) {\r\n      this.topDivHeight = divheight;\r\n    },\r\n    previewHelpFile() {\r\n      let obj = {};\r\n      obj.id = this.formHelpFile[0].id;\r\n      obj.name = this.formHelpFile[0].name;\r\n      obj.size = this.formHelpFile[0].size;\r\n      this.$refs.filePreview.preview(obj);\r\n    },\r\n    setInitFillData(isInitFillData) {\r\n      this.initFillData = isInitFillData;\r\n    },\r\n    hiddenContent() {\r\n      this.$refs.formContainer.className = \"form-container-not\";\r\n    },\r\n    init(updateFormComponent) {\r\n      if (this.task_state == \"FOLLOW\") {\r\n        this.status_style = \"padding-top:0px !important;\";\r\n      }\r\n      var $ = require(\"jquery\");\r\n      let _me = this;\r\n      if (_me.tasks) {\r\n        _me.initFillData = _me.tasks.initFillData;\r\n      }\r\n      let readOnly = false;\r\n      if (_me.tasks && _me.tasks.bpmTask && (_me.tasks.bpmTask.status === 'COMMU' || _me.tasks.bpmTask.status === 'TRANSFORMEDINQU' || _me.tasks.bpmTask.status === 'FOLLOW')) {\r\n        readOnly = true;\r\n      }\r\n\r\n      //获取流程定义key\r\n      _me.getFlowKey();\r\n      let handlerJs = function (rep) {\r\n\r\n        const currentUser = _me.$store.state.login.currentUser;\r\n\r\n        let data = _me.data;\r\n        let _this = _me;\r\n        if (rep && rep.diyJs) {\r\n          eval(rep.diyJs);\r\n        }\r\n      };\r\n\r\n      let handler = function (rep) {\r\n        //发起流程的时候得到按钮对象\r\n        if (rep.buttons) {\r\n          _me.buttons = rep.buttons;\r\n        }\r\n        if (_me.taskDetailLoading) {\r\n          _me.taskDetailLoading.close();\r\n        }\r\n        if (_me.myReadType == \"agent\") {\r\n          Message.warning(\"此流程已被委托,没有审批权\");\r\n        }\r\n        if (!rep) {\r\n          return;\r\n        }\r\n        if (JSON.stringify(rep) == \"{}\") {\r\n          Message.error(\"此流程还没有设置全局表单,请先设置全局表单!\");\r\n          return;\r\n        }\r\n        if (rep.resultMsg == \"formEmpty\" || rep.result == \"formEmpty\") {\r\n          Message.error(\"此流程还没有设置表单,请先设置表单!\");\r\n          return;\r\n        }\r\n        _me.formKey = rep.form.formKey;\r\n        //_me.formId=rep.form.formId;\r\n        if (rep.form && rep.form.type == \"FRAME\") {\r\n          _me.htmlSrc = rep.form.formValue;\r\n          _me.formType = rep.form.type;\r\n          //表单加载完成发布事件 审批按钮才可以点击\r\n          _me.$root.$emit(\"formLoading\", false);\r\n        } else {\r\n          _me.formId = rep.form.formId;\r\n          form.preview(rep.form.formId, handlerJs);\r\n          if (_me.formData) {\r\n            _me.data = JSON.parse(Base64.decode(_me.formData));\r\n          } else {\r\n            _me.data = rep.data;\r\n          }\r\n\r\n          if (rep.permission) {\r\n            const permissionObj = JSON.parse(rep.permission);\r\n            let commonRight = \"\";\r\n            //如果是管理端进入，则将页面字段的权限修改为可编辑\r\n            if (_me.type == \"manage\") {\r\n              commonRight = \"w\";\r\n              //如果是查看实例，也是获取发起流程的表单和权限。只不过所有可见的权限要变成编辑\r\n            } else if (\"request\" == _me.type || _me.myReadType == \"myRequest\"\r\n              || _me.myReadType == \"delegate\" || _me.myReadType == \"myRead\" || _me.readDoneId || _me.type == \"read\" || readOnly) {\r\n              commonRight = \"r\";\r\n            }\r\n            if (permissionObj.fields && commonRight) {\r\n              for (var key in permissionObj.fields) {\r\n                const bodef = permissionObj.fields[key];\r\n                if (bodef) {\r\n                  for (var fname in bodef) {\r\n                    if (\r\n                      commonRight == \"w\" ||\r\n                      (commonRight == \"r\" && bodef[fname] != \"n\")\r\n                    ) {\r\n                      bodef[fname] = commonRight;\r\n                    }\r\n                  }\r\n                }\r\n                permissionObj.fields[key] = bodef;\r\n              }\r\n            }\r\n            if (permissionObj.table && commonRight) {\r\n              for (var key in permissionObj.table) {\r\n                const table = permissionObj.table[key];\r\n                if (table) {\r\n                  if (commonRight == \"w\") {\r\n                    table[\"hidden\"] = false;\r\n                    table[\"add\"] = true;\r\n                    table[\"del\"] = true;\r\n                  } else if (commonRight == \"r\") {\r\n                    table[\"add\"] = false;\r\n                    table[\"del\"] = false;\r\n                    table[\"required\"] = false;\r\n                    table[\"edit\"] = false;\r\n                  }\r\n                }\r\n                permissionObj.table[key] = table;\r\n              }\r\n            }\r\n\r\n            _me.permission = permissionObj;\r\n          }\r\n          _me.html = rep.form.formHtml;\r\n          if (rep.form.helpFile) {\r\n            _me.formHelpFile = JSON.parse(rep.form.helpFile);\r\n          }\r\n          if (_me.html.split('ref=\"next_step_check_').length > 1) {\r\n            _me.$root.$emit(\"startFlowBtnChange\", false);\r\n          }\r\n          //表单加载完成发布事件 审批按钮才可以点击\r\n          _me.$root.$emit(\"formLoading\", false);\r\n          if (updateFormComponent) {\r\n            _me.formComponentKey =new Date().getTime();\r\n          }\r\n        }\r\n      };\r\n      this.$store\r\n        .dispatch(\"storeProcess/getUrgentStateConf\", {\r\n          defId: this.defId,\r\n          instId: this.instId,\r\n          taskId: this.taskId\r\n        })\r\n        .then(data => {\r\n          if (data.conf) {\r\n            try {\r\n              data.conf = JSON.parse(data.conf);\r\n            } catch (error) {\r\n              data.conf = eval(\"(\" + data.conf + \")\");\r\n            }\r\n            window.urgentStateValue = { old: data.value };\r\n            if (!data.value) {\r\n              for (let index = 0, c; (c = data.conf[index++]);) {\r\n                if (c.default) {\r\n                  data.value = c.state;\r\n                  break;\r\n                }\r\n              }\r\n            }\r\n            _me.urgentStateConf = data;\r\n          }\r\n        });\r\n      if (this.taskId && (this.tasks && JSON.stringify(this.tasks) != \"{}\")) {\r\n        if (!this.tasks.bpmTask && !this.tasks.state && this.tasks.message == '此任务已被处理或不存在！') {\r\n          _me.$router.push(\"/v-flow/v-todo\");\r\n          return;\r\n        }\r\n        this.taskDetailLoading = Loading.service({ fullscreen: true, lock: true, text: '表单数据加载中，请耐心等待...', spinner: 'el-icon-loading', background: 'rgba(0, 0, 0, 0.7)' });//开始\r\n        if (this.tasks.bpmTask.bpmnInstId) {\r\n          form.taskDetail(\r\n            { taskId: this.taskId, leaderId: this.leaderId },\r\n            handler\r\n          );\r\n        } else {\r\n          form.getInstFormAndBO(this.tasks.bpmTask.procInstId, handler);\r\n        }\r\n      } else if (this.taskId && window.location.href.indexOf('/task/' + this.taskId + '/0') != -1) {\r\n        form.taskDetail(\r\n          { taskId: this.taskId, leaderId: this.leaderId },\r\n          handler\r\n        );\r\n        let params = {\r\n          taskId: this.taskId,\r\n          leaderId: this.leaderId\r\n        };\r\n        this.$store.dispatch(\"storeProcess/taskDetail\", params); //获取操作按钮\r\n      } else if (this.instId) {\r\n        if ('start'  != this.type) {\r\n          this.isView = false;\r\n        }\r\n        //查看我发起的，也使用发起流程的表单。只不过把编辑和必填权限改成只读\r\n        if (\"request\" == this.type || \"myRequest\" == this.myReadType) {\r\n          form.getFormAndBO({ proInstId: this.instId }, handler);\r\n        } else if (\"read\" == this.type || this.myReadType) {\r\n          const this_ = this;\r\n          if (this.readId) {\r\n            //知会待办\r\n            //根据待办知会任务主键ID获取任务ID\r\n            this.$store\r\n              .dispatch(\"storeProcess/getBpmTaskNoticeById\", this_.readId)\r\n              .then(row => {\r\n                if (row.taskId) {\r\n                  //根据任务Id获取审批历史数据（只有一条）\r\n                  this.$store\r\n                    .dispatch(\"storeProcess/getTaskKeyByTaskId\", row.taskId)\r\n                    .then(res => {\r\n                      if (res.formData) {\r\n                        this_.formData = res.formData;\r\n                      }\r\n                      let isIncludData = res.formData ? false : true;\r\n                      form.getInstFormAndBO(\r\n                        {\r\n                          instId: this_.instId,\r\n                          nodeId: res.taskKey,\r\n                          includData: isIncludData\r\n                        },\r\n                        handler\r\n                      );\r\n                    });\r\n                } else if (row.nodeId) {\r\n                  let data = { nodeId: row.nodeId, instId: this_.instId };\r\n                  //根据任务节点ID和流程实例ID获取审批历史数据（只有一条）\r\n                  this.$store\r\n                    .dispatch(\"storeProcess/getTaskKeyByNodeId\", data)\r\n                    .then(res => {\r\n                      if (res.formData) {\r\n                        this_.formData = res.formData;\r\n                      }\r\n                      let isIncludData = res.formData ? false : true;\r\n                      form.getInstFormAndBO(\r\n                        {\r\n                          instId: this_.instId,\r\n                          nodeId: res.taskKey,\r\n                          includData: isIncludData\r\n                        },\r\n                        handler\r\n                      );\r\n                    });\r\n                } else {\r\n                  //查看我发起的，也使用发起流程的表单\r\n                  form.getFormAndBO({ proInstId: this.instId }, handler);\r\n                  // form.getInstFormAndBO(this_.instId, handler);\r\n                }\r\n              });\r\n          } else if (this.readDoneId) {\r\n            //知会已办\r\n            //根据已办知会任务主键ID获取任务ID\r\n            this.$store\r\n              .dispatch(\"storeProcess/getBpmTaskNoticeDoneById\", this_.readDoneId)\r\n              .then(row => {\r\n                if (row.taskId) {\r\n                  //根据任务Id获取审批历史数据（只有一条）\r\n                  this.$store\r\n                    .dispatch(\"storeProcess/getTaskKeyByTaskId\", row.taskId)\r\n                    .then(res => {\r\n                      if (res.formData) {\r\n                        this_.formData = res.formData;\r\n                      }\r\n                      let isIncludData = res.formData ? false : true;\r\n                      form.getInstFormAndBO(\r\n                        {\r\n                          instId: this_.instId,\r\n                          nodeId: res.taskKey,\r\n                          includData: isIncludData\r\n                        },\r\n                        handler\r\n                      );\r\n                    });\r\n                } else if (row.taskKey) {\r\n                  let data = { nodeId: row.taskKey, instId: this_.instId };\r\n                  //根据任务节点ID和流程实例ID获取审批历史数据（只有一条）\r\n                  this.$store\r\n                    .dispatch(\"storeProcess/getTaskKeyByNodeId\", data)\r\n                    .then(res => {\r\n                      if (res.formData) {\r\n                        this_.formData = res.formData;\r\n                      }\r\n                      let isIncludData = res.formData ? false : true;\r\n                      form.getInstFormAndBO(\r\n                        {\r\n                          instId: this_.instId,\r\n                          nodeId: res.taskKey,\r\n                          includData: isIncludData\r\n                        },\r\n                        handler\r\n                      );\r\n                    });\r\n                } else {\r\n                  //查看我发起的，也使用发起流程的表单\r\n                  form.getFormAndBO({ proInstId: this.instId }, handler);\r\n                  // form.getInstFormAndBO(this.instId, handler);\r\n                }\r\n              });\r\n          } else {\r\n            //查看我发起的，也使用发起流程的表单\r\n            form.getFormAndBO({ proInstId: this.instId }, handler);\r\n            // form.getInstFormAndBO(this.instId, handler);\r\n          }\r\n        } else {\r\n          //查看我发起的，也使用发起流程的表单\r\n          form.getFormAndBO({ proInstId: this.instId }, handler);\r\n          // form.getInstFormAndBO(this.instId, handler);\r\n        }\r\n      } else if (this.defId) {\r\n        let data = {};\r\n        if (this.proInstId != undefined) {\r\n          data = { defId: this.defId, proInstId: this.proInstId };\r\n        } else if (this.copyInstId) {\r\n          data = { defId: this.defId, copyInstId: this.copyInstId };\r\n        } else {\r\n          data = { defId: this.defId };\r\n        }\r\n        form.getFormAndBO(data, handler);\r\n      }\r\n    },\r\n    getFlowKey() {\r\n      if (this.defId || this.instId || this.taskId) {\r\n        let url = '${bpmRunTime}/runtime/instance/v1/getFlowKey';\r\n        if (this.defId) {\r\n          url = url + '?defId=' + this.defId;\r\n        } else if (this.instId) {\r\n          url = url + '?procInstId=' + this.instId;\r\n        } else if (this.taskId) {\r\n          url = url + '?taskId=' + this.taskId;\r\n        }\r\n        let _me = this;\r\n        try {\r\n          _me.$http.get(url, 'json', false).then(resp => {\r\n            const rep = resp.data;\r\n            if (rep.state) {\r\n              _me.flowKey = rep.value;\r\n            }\r\n          })\r\n        } catch (error) { }\r\n      }\r\n    }\r\n  },\r\n  computed: {\r\n    urgentStateValue: function () {\r\n      return this.urgentStateConf.value;\r\n    },\r\n    isPlmeformPage() {\r\n      return this.$route.query.hasOwnProperty('plmeform')\r\n    }\r\n  },\r\n  components: { OnlineForm, FilePreview },\r\n\r\n};\r\n",null]}