{"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\\dataTemplate\\templateForm.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\xq-web-fvue\\src\\components\\dataTemplate\\templateForm.vue","mtime":1667327529137},{"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\r\nimport OnlineForm from '@/components/flow/OnlineForm.vue';\r\nimport form from '@/api/form.js';\r\nimport utils from '@/utils.js';\r\nexport default {\r\n  name: 'formContent',\r\n  props: ['templateKey', 'action', 'isShare',\"openType\"],\r\n  data() {\r\n    return {\r\n      alias_new: 'statement',\r\n      html: null,\r\n      data: null,\r\n      permission: null,\r\n      reloadOnlineForm: false,\r\n      isView: true,\r\n      disabled: false,\r\n      boAlias: '',\r\n      id: '',\r\n      startFlow: false,\r\n      recordId: '',\r\n      defKey: '',\r\n      formKey: '',\r\n      fillField: '',\r\n      fillValue: '',\r\n      bindList: [],\r\n      print: false,\r\n      isShow: true,\r\n      tempAlias: '',\r\n      startLable: '发起流程',\r\n      printLable: '打印',\r\n    };\r\n  },\r\n  components: { OnlineForm },\r\n  updated() {\r\n    let result = window.location.href.split('?')[0].split('/');\r\n    if (result[result.length - 1] == 'get' || result[result.length - 2] == 'get') {\r\n      this.isShow = false;\r\n    }\r\n    //判断是否显示发起流程按钮\r\n    if(window.location.href.split('?')[1] && window.location.href.split('?')[1].split('&')){\r\n      if(window.location.href.split('?')[1].split('&')[1] && window.location.href.split('?')[1].split('&')[1]==\"startFlow=false\"){\r\n        this.startFlow = false;\r\n      }\r\n    }\r\n\r\n  },\r\n  methods: {\r\n    loadSuccess(){\r\n      if (this.$route.query.isPrint) {\r\n        this.printDetail();\r\n      }\r\n    },\r\n    printDetail() {\r\n      this.$refs.btnRegion.style.display = \"none\";\r\n      setTimeout(() => {\r\n        document.getElementsByTagName('body')[0].style.zoom = 0.8;\r\n        window.print();\r\n        this.$refs.btnRegion.style.display = \"block\";\r\n        if (this.$route.query.isPrint){\r\n          this.close(false)\r\n        }\r\n        document.getElementsByTagName('body')[0].style.zoom = 1;\r\n      }, 500);\r\n    },\r\n    //启动\r\n    start() {\r\n      utils\r\n        .getOnlineFormData(true)\r\n        .then((formDataStr) => this.processStart(formDataStr))\r\n        .catch((reason) => utils.handleGetFormDataReject(reason).then(() => this.processStart()));\r\n    },\r\n    processStart(formDataStr) {\r\n      utils.closeAllNotification();\r\n      let data = { flowKey: this.defKey };\r\n      if (formDataStr) {\r\n        data.data = Base64.encode(formDataStr);\r\n      }\r\n      this.disabled = true;\r\n      this.$store\r\n        .dispatch('storeProcess/start', data)\r\n        .then(() => {\r\n          this.close(true);\r\n        })\r\n        .catch(() => {\r\n          this.disabled = false;\r\n        });\r\n    },\r\n    //保存\r\n    boSave(delDraftId) {\r\n      utils\r\n        .getOnlineFormData(true)\r\n        .then((formDataStr) => {\r\n          utils.closeAllNotification();\r\n          let _me = this;\r\n          // for (let i=0; i<_me.$validator.errors.items.length; i++) {\r\n          //   if(_me.$validator.errors.items[i].rule == \"required\"){\r\n          //     this.$message.warning(\"请将信息填写完整\");\r\n          //     return false;\r\n          //   }\r\n          // }\r\n          let data = {\r\n            boAlias: this.boAlias,\r\n            boData: utils.parseToJson(formDataStr),\r\n          };\r\n          //数据视图控件\r\n          // if (this.fillField && this.fillField != \"\") {\r\n          //   let fillField = this.fillField;\r\n          //   data.boData[this.boAlias][fillField] = this.fillValue;\r\n          // }\r\n          this.disabled = true;\r\n\r\n          if (delDraftId) {\r\n            data.delDraftId = delDraftId;\r\n          }\r\n          data.formKey = this.formKey;\r\n          data.templateKey = this.templateKey;\r\n          this.$store.dispatch('form/boSave', data).then((result) => {\r\n            if (result.state) {\r\n              //当操作为编辑是，点击保存成功后提示继续编辑还是返回\r\n              if (this.action === 'edit' || this.action === 'add') {\r\n                this.$message.success(result.message);\r\n                this.$confirm('保存成功，是否退出？', '提示', {\r\n                  confirmButtonText: '立即退出',\r\n                  cancelButtonText: '继续操作',\r\n                  type: 'warning',\r\n                })\r\n                  .then(() => {\r\n                    this.close(false);\r\n                  })\r\n                  .catch(() => {\r\n                    this.$refs.onlineForm.init();\r\n                    this.disabled = false;\r\n                    if (this.action === 'editDraft') {\r\n                      this.editDraftHandler();\r\n                    } else {\r\n                      this.handler();\r\n                    }\r\n                  });\r\n              } else {\r\n                this.close(true);\r\n              }\r\n            } else {\r\n              this.disabled = false;\r\n            }\r\n          });\r\n        })\r\n        .catch((reason) => utils.handleGetFormDataReject(reason));\r\n    },\r\n    boSaveAndDelDraft() {\r\n      this.boSave(this.draftId);\r\n    },\r\n    //保存\r\n    boSaveDraft() {\r\n      const this_ = this;\r\n      utils\r\n        .getOnlineFormData(false)\r\n        .then((formDataStr) => {\r\n          utils.closeAllNotification();\r\n          let _me = this;\r\n          let data = {\r\n            tempAlias: this.tempAlias,\r\n            dataJson: formDataStr,\r\n          };\r\n          if (this.draft) {\r\n            data.id = this.draft.id;\r\n            data.title = this.draft.title;\r\n            data.createBy = this.draft.createBy;\r\n            data.createTime = this.draft.createTime;\r\n          }\r\n          //数据视图控件\r\n          // if(this.bindList && this.bindList.length >0) {\r\n          //   for(var i=0;i<this.bindList.length;i++){\r\n          //     data.boData[this.boAlias][this.bindList[i].key] = this.bindList[i].value;\r\n          //   }\r\n          // }\r\n          this.disabled = true;\r\n          this.$store.dispatch('form/boSaveDraft', data).then((result) => {\r\n            if (result.state) {\r\n              this.$message.success(result.message);\r\n              let dataViewFlag = false;\r\n              //数据视图随机添加到其他菜单下面时获取当前菜单的别名  并且当前数据视图不是表单里的数据视图  dataViewFlag\r\n              if (sessionStorage.menu_alias && !(this_.fillField && this_.fillField != '')) {\r\n                this.alias_new = sessionStorage.menu_alias;\r\n              }\r\n              //判断当前数据视图是不是表单里的数据视图\r\n              if(this.bindList && this.bindList.length >0) {\r\n                dataViewFlag = true;\r\n              }\r\n              if (_me.isShare) {\r\n                _me.close(true);\r\n                return;\r\n              }\r\n              let path = \"\"\r\n              if(this.openType == \"new\"){\r\n                path = `/statement/draftList/${this.tempAlias}/${dataViewFlag}?isNew=true`;\r\n              }else{\r\n                path = '/' + this.alias_new + '/draftList/' + this.tempAlias + '/' + dataViewFlag;\r\n              }\r\n              this.$router.push(path);\r\n              // this.$router.push(\"/statement/draftList\");\r\n            } else {\r\n              this.disabled = false;\r\n              this.$message.error(result.message);\r\n            }\r\n          });\r\n        })\r\n        .catch((reason) => utils.handleGetFormDataReject(reason));\r\n    },\r\n\r\n    //关闭窗口\r\n    close(isDelay) {\r\n      utils.closeAllNotification();\r\n      let _me = this;\r\n      let url = window.location.href;\r\n      let arr = url.split('?');\r\n      if (isDelay) {\r\n        setTimeout(function () {\r\n          if (_me.isShare) {\r\n             _me.$router.push(\"/messageFillPage/1\");\r\n             return;\r\n          }\r\n          if (arr.length > 1) {\r\n            let param = url.split('?')[1].split('&');\r\n            if (param.includes('isNewPage=true')) {\r\n               _me.$router.push(\"/messageFillPage/1\");\r\n               return;\r\n            }\r\n          }\r\n          if(_me.openType == \"new\"){\r\n            //跳转到草稿\r\n            let dataViewFlag = false;\r\n            if(_me.bindList && _me.bindList.length >0) {\r\n              dataViewFlag = true;\r\n            }\r\n            _me.$router.push(\r\n              `/statement/draftList/${_me.tempAlias}/${dataViewFlag}?isNew=true`\r\n            )\r\n          }else{\r\n            _me.$router.go(-1);\r\n          }\r\n        }, 2000);\r\n      } else {\r\n        if (_me.isShare) {\r\n             _me.$router.push(\"/messageFillPage/1\");\r\n        }else{\r\n          if(_me.openType == \"new\"){\r\n            window.close();\r\n          }else{\r\n            //打印取消之后会导致路由发生变化,不能直接回到上一个页面\r\n            let menuAlias = \"statement\";\r\n            //发布到其它菜单的别名\r\n            if(sessionStorage.menu_alias){\r\n              menuAlias = sessionStorage.menu_alias;\r\n            }\r\n            let url = \"/\"+ menuAlias + \"/template/preview/\" + _me.templateKey;\r\n            if(_me.$route.meta && _me.$route.meta.single){\r\n              url += \"/true\";\r\n            }\r\n            _me.$router.push(url);\r\n          }\r\n\r\n          // _me.$router.go(-1);\r\n        }\r\n\r\n      }\r\n    },\r\n    handler() {\r\n      let _me = this;\r\n      let data = {\r\n        formKey: _me.formKey,\r\n        boAlias: _me.boAlias,\r\n        id: _me.id ? _me.id : '',\r\n        action: _me.action,\r\n        recordId: _me.recordId ? _me.recordId : '',\r\n        dataKey: _me.templateKey ? _me.templateKey : '',\r\n      };\r\n      _me.$store.dispatch('form/getTemplateForm', data).then((rep) => {\r\n        if (rep.result) {\r\n          _me.data = rep.data;\r\n          //数据视图控件\r\n          if(_me.bindList && _me.bindList.length >0) {\r\n            for(var i=0;i<_me.bindList.length;i++){\r\n              if (_me.data[_me.boAlias][_me.bindList[i].key] == '') {\r\n                // 回填数据\r\n                _me.data[_me.boAlias][_me.bindList[i].key] = _me.bindList[i].value;\r\n              }\r\n            }\r\n          }\r\n          //是否是数据报表明细\r\n          if (rep.permission && _me.action == 'get') {\r\n            const permissionObj = rep.permission;\r\n            let commonRight = '';\r\n            //如果是管理端进入，则将页面字段的权限修改为可编辑\r\n            if (_me.type == 'manage') {\r\n              commonRight = 'w';\r\n              //如果是查看实例，也是获取发起流程的表单和权限。只不过所有可见的权限要变成编辑\r\n            } else {\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 (commonRight == 'w' || (commonRight == 'r' && bodef[fname] != '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            _me.permission = permissionObj;\r\n          } else {\r\n            _me.permission = rep.permission;\r\n          }\r\n          _me.html = rep.form.formHtml;\r\n          this.handlerJs(rep.form);\r\n        }\r\n      });\r\n    },\r\n    handlerJs(rep) {\r\n      let _me = this;\r\n      _me.reloadOnlineForm = true;\r\n      const currentUser = _me.$store.state.login.currentUser;\r\n\r\n      let data = _me.data;\r\n      let _this = _me;\r\n      setTimeout(()=>{\r\n        eval(rep.diyJs);\r\n      },10)\r\n    },\r\n    editDraftHandler() {\r\n      let _me = this;\r\n      _me.$store.dispatch('form/getTempDraftData', _me.draftId).then((rep) => {\r\n        if (rep.result) {\r\n          _me.data = rep.data;\r\n          _me.draft = rep.draft;\r\n          if (rep.permission) {\r\n            _me.permission = rep.permission;\r\n          }\r\n          _me.html = rep.form.formHtml;\r\n          this.handlerJs(rep.form);\r\n        }\r\n      });\r\n    },\r\n    init() {\r\n      var $ = require('jquery');\r\n      this.id = utils.getUrlKey('id');\r\n      this.startFlow = utils.getUrlKey('startFlow');\r\n      this.recordId = utils.getUrlKey('recordId');\r\n      let bindList = utils.getUrlKey(\"bindList\");\r\n      if(bindList){\r\n        this.bindList = JSON.parse(Base64.decode(decodeURIComponent(bindList)));\r\n      }\r\n      this.draftId = utils.getUrlKey('draftId');\r\n      this.isView = (this.action !== 'get');\r\n      let _me = this;\r\n\r\n      this.$store\r\n        .dispatch('form/getBpmDataTemplateInfo', {\r\n          templateKey: this.templateKey,\r\n        })\r\n        .then((result) => {\r\n          if (result.state) {\r\n            if (result.value.allowShare == 2 && _me.isShare) {\r\n               _me.$router.push(\"/messageFillPage/5\");\r\n              return;\r\n            }\r\n            _me.boAlias = result.value.boDefAlias;\r\n            _me.defKey = result.value.defId;\r\n            _me.formKey = result.value.formKey;\r\n            _me.tempAlias = result.value.alias;\r\n            if (result.value.manageField) {\r\n              let re = JSON.parse(result.value.manageField);\r\n              re.forEach((item) => {\r\n                if (item.name == 'startFlow') {\r\n                  this.startFlow = true;\r\n                  this.startLable = item.desc;\r\n                }else if(item.name == 'print'){\r\n                  this.printLable = item.desc;\r\n                }\r\n              });\r\n            } else {\r\n              this.startFlow = true;\r\n            }\r\n            this.reloadOnlineForm = false;\r\n            //如果编辑的是草稿数据\r\n            if (this.action === 'editDraft') {\r\n              this.editDraftHandler();\r\n            } else {\r\n              this.handler();\r\n            }\r\n          }\r\n        });\r\n    }\r\n  },\r\n  created() {\r\n    this.init();\r\n  },\r\n  watch: {\r\n    templateKey: function (n, o) {\r\n      if (n && o && n != o) {\r\n        this.init();\r\n      }\r\n    },\r\n    //控件的联动会导致表单的permission发生变化，联动显示会变成'w'，需要改回原来的权限\r\n    permission:{\r\n      handler(newVal,oldVal){\r\n        if(this.formKey && this.action == \"get\"){\r\n          for(let key in newVal.fields[this.formKey]){\r\n            if(newVal.fields[this.formKey][key] == 'w'){\r\n              newVal.fields[this.formKey][key] = 'r';\r\n            }\r\n          }\r\n        }\r\n      },\r\n      deep: true\r\n    }\r\n  },\r\n};\r\n",null]}