{"remainingRequest":"D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\xq-web-bpm\\src\\components\\form\\FormDesigner.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\src\\components\\form\\FormDesigner.vue","mtime":1675071991960},{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\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//\n//\n//\n//\n//\n\r\nimport FormNavigator from \"@/components/form/FormNavigator.vue\";\r\nimport FieldPanel from \"@/components/form/FieldPanel.vue\";\r\nimport WidgetPanel from \"@/components/form/WidgetPanel.vue\";\r\nimport PropertyPanel from \"@/components/form/PropertyPanel.vue\";\r\nimport request from \"@/request.js\";\r\n\r\nexport default {\r\n  props: [\"visibleDialog\", \"formId\", \"formDefId\", \"addBpmForm\", \"formType\"],\r\n  components: { FormNavigator, FieldPanel, WidgetPanel, PropertyPanel },\r\n  data() {\r\n    return {\r\n      asideShow:true,\r\n      rightAsideShow:true,\r\n      widgetForm: {\r\n        list: [],\r\n        config: {\r\n          labelWidth: 100,\r\n          labelPosition: \"right\",\r\n          size: \"small\",\r\n        },\r\n      },\r\n      selectWidgetList: [],\r\n      formData: this.addBpmForm,\r\n      boDefData: null,\r\n      widgetFormSelect: { options: { validateType: \"\" } },\r\n      mainBoFields: [],\r\n      subTables: [],\r\n      sunTablesMap: {},\r\n      boDefIds: \"\",\r\n      copyFormList:[],\r\n    };\r\n  },\r\n  watch: {\r\n    visibleDialog: {\r\n      handler: function (newVal) {\r\n        if (newVal) {\r\n          this.initData(this.formId, this.addBpmForm.bos);\r\n        }\r\n      },\r\n      immediate: true,\r\n    },\r\n  },\r\n  mounted() {\r\n    this.monitor();\r\n  },\r\n  methods: {\r\n    addTocopyFormList(form){\r\n      if(this.copyFormList.length>0){\r\n        let isIn = false;\r\n        this.copyFormList.forEach(item =>{\r\n            if(item.id == form.id){\r\n              isIn = true;\r\n            }\r\n        });\r\n        if(!isIn){\r\n          this.copyFormList.push(form);\r\n        }\r\n      }else{\r\n        this.copyFormList.push(form);\r\n      }\r\n    },\r\n    monitor() {\r\n      let that = this;\r\n      document.onkeydown = function (e) {\r\n        //按下删除提交\r\n        let key = window.event.keyCode;\r\n        //事件中keycode=18为删除事件 左Alt\r\n        if (key == 18 && e.code== \"AltRight\") {\r\n          that.handleWidgetDelete();\r\n        }\r\n      };\r\n    },\r\n    //删除表单字段控件\r\n    deleteWidget(list) {\r\n      for (let i = list.length - 1; i >= 0; i--) {\r\n        if (list[i].key && !list[i].columns && !list[i].rows && !list[i].list) {\r\n          //没使用布局字段\r\n          if (this.selectWidgetList.indexOf(list[i].key) != -1) {\r\n            list.splice(i, 1);\r\n          }\r\n        } else if (list[i].columns && list[i].columns.length > 0) {\r\n          //栅格，tab页签，折叠面板\r\n          for (let j = list[i].columns.length - 1; j >= 0; j--) {\r\n            this.deleteWidget(list[i].columns[j].list);\r\n          }\r\n        } else if (list[i].rows && list[i].rows.length > 0) {\r\n          //表格布局\r\n          for (let k = list[i].rows.length - 1; k >= 0; k--) {\r\n            if (list[i].rows[k].cols.length > 0) {\r\n              for (let m = list[i].rows[k].cols.length - 1; m >= 0; m--) {\r\n                this.deleteWidget(list[i].rows[k].cols[m].list);\r\n              }\r\n            }\r\n          }\r\n        } else if (list[i].list && list[i].list.length > 0) {\r\n          //子表，孙表\r\n          this.deleteWidget(list[i].list);\r\n        }\r\n      }\r\n    },\r\n    handleWidgetDelete() {\r\n      let list = this.widgetForm.list;\r\n      if (list.length > 0) {\r\n        this.deleteWidget(list);\r\n        this.selectWidgetList.empty();\r\n      }\r\n    },\r\n    /**\r\n     * 保存本地配置\r\n     */\r\n    localSave() {\r\n      let localSaveData = {};\r\n      localSaveData.widgetForm = this.widgetForm;\r\n      localSaveData.formData = this.formData;\r\n      localSaveData.boDefData = this.boDefData;\r\n      localSaveData.widgetFormSelect = this.widgetFormSelect;\r\n      localSaveData.mainBoFields = this.mainBoFields;\r\n      localSaveData.subTables = this.subTables;\r\n      localSaveData.sunTablesMap = this.sunTablesMap;\r\n\r\n      var jsonStr = JSON.stringify(localSaveData);\r\n      var blob = new Blob([jsonStr], { type: \"application/json\" });\r\n      var saveAs = window.saveAs;\r\n      var name = this.formData.name || this.formData.key || \"表单设计\";\r\n      saveAs(blob, name + new Date().getTime() + \".json\");\r\n    },\r\n    /**\r\n     * 加载本地存储\r\n     */\r\n    loadLocal(localSaveData) {\r\n      let newVersion = this.formData.rev;\r\n      this.widgetForm = localSaveData.widgetForm;\r\n      this.formData = localSaveData.formData;\r\n      this.formData.rev = newVersion;\r\n      this.boDefData = localSaveData.boDefData;\r\n      this.widgetFormSelect = localSaveData.widgetFormSelect;\r\n      this.mainBoFields = localSaveData.mainBoFields;\r\n      this.subTables = localSaveData.subTables;\r\n      this.sunTablesMap = localSaveData.sunTablesMap;\r\n      console.log(this.widgetFormSelect)\r\n    },\r\n    saveEnd() {\r\n      this.$refs.FormNavigator.saveEnd();\r\n    },\r\n    saveValidate() {\r\n      this.$refs.propertyPanel.saveValidate();\r\n    },\r\n    close(value) {\r\n      if (value) {\r\n        this.$emit(\"update:formDefId\", value.formData.defId);\r\n        this.$emit(\"update:formId\", value.formData.id);\r\n        this.formData = value.formData;\r\n        this.formData.rev = value.rev;\r\n      } else {\r\n        this.$emit(\"update:visibleDialog\", false);\r\n      }\r\n    },\r\n    initData(formId, bos) {\r\n      this.copyFormList = [];\r\n      if (this.formDefId) {\r\n        request\r\n          .get(\"${form}/form/formDef/v1/get?formDefId=\" + this.formDefId)\r\n          .then((response) => {\r\n            this.widgetForm = JSON.parse(response.data.value.expand);\r\n          });\r\n      } else if (\r\n        this.formData.templateConf &&\r\n        this.formData.templateConf.boDefId\r\n      ) {\r\n        request\r\n          .post(\r\n            \"${form}/form/form/v1/generateExpand\",\r\n            this.formData.templateConf\r\n          )\r\n          .then((response) => {\r\n            this.widgetForm = JSON.parse(response.data.value);\r\n          });\r\n      }\r\n\r\n      if (bos && bos.length > 0) {\r\n        const boDefIds = bos.extractByKey(\"id\").join(\",\");\r\n        this.getBoDefData(boDefIds);\r\n        this.widgetForm.boDefList = bos;\r\n        this.boDefIds = boDefIds;\r\n        return;\r\n      }\r\n\r\n      if (formId) {\r\n        request\r\n          .get(\"${form}/form/form/v1/formDesign?formId=\" + formId)\r\n          .then((response) => {\r\n            this.formData = response.data;\r\n            this.formData.id = formId;\r\n            this.boDefIds = JSON.parse(this.formData.bos)\r\n              .extractByKey(\"id\")\r\n              .join(\",\");\r\n            this.getBoDefData(this.boDefIds);\r\n          });\r\n      }\r\n    },\r\n    getBoDefData(boDefId) {\r\n      request.post(\"${form}/bo/def/v1/getBOTree\", boDefId).then((response) => {\r\n        this.boDefData = response.data;\r\n        this.getMainBoFields();\r\n      });\r\n    },\r\n    getMainBoFields() {\r\n      this.mainBoFields = [];\r\n      // 多个BO   一个Bo 对应一个主表\r\n      this.boDefData.children.forEach((element) => {\r\n        let boData = { ...element };\r\n        let boSubTables = boData.children.filter(\r\n          (field) => field.nodeType == \"sub\"\r\n        );\r\n\r\n        boSubTables.forEach((subTable) => {\r\n          //收集孙实体\r\n          const sunTables = subTable.children.filter(\r\n            (field) => field.nodeType == \"sub\"\r\n          );\r\n          if (sunTables && sunTables.length > 0) {\r\n            this.sunTablesMap[subTable.name] = sunTables;\r\n          }\r\n\r\n          let sunTable1 = { ...subTable };\r\n          sunTable1.children = subTable.children.filter(\r\n            (field) => field.status != \"hide\" && field.nodeType != \"sub\"\r\n          );\r\n          this.subTables.push(sunTable1);\r\n        });\r\n\r\n        // 删除子表字段\r\n        boData.children = boData.children.filter((field) => {\r\n          return field.nodeType != \"sub\" && field.status != \"hide\";\r\n        });\r\n\r\n        this.mainBoFields.push(boData);\r\n      });\r\n    },\r\n  },\r\n};\r\n",null]}