{"remainingRequest":"D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\xq-web-bpm\\src\\views\\form\\BusinessObjExternalDialog.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\src\\views\\form\\BusinessObjExternalDialog.vue","mtime":1675071992881},{"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//\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//\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 form from \"@/api/form.js\";\r\nimport util from \"@/hotent-ui-util.js\";\r\n\r\nexport default {\r\n  data() {\r\n    return {\r\n      dialogVisible: false, // 对话框是否可以见\r\n      editSubOrSun: false,\r\n      addFk: false,\r\n      tableList: [], // 当前数据源的物理表集合\r\n      entExtsTable: [], // 所选物理表的字段集合\r\n      entExtConfirm: false,\r\n      entsCount: 0, // 当前业务对象的模型数量\r\n      editing: false, // 是否编辑\r\n      hideAttr: [], // 需要隐藏起来的字段集合\r\n      entExts: {\r\n        // 外部表的form数据\r\n        comment: \"\",\r\n        desc: \"\",\r\n        dsName: \"\",\r\n        index: 0,\r\n        isExternal: \"1\",\r\n        name: \"\",\r\n        packageId: \"\",\r\n        pk: \"\",\r\n        fk: \"\",\r\n        pkType: \"\",\r\n        relation: \"\",\r\n        show: \"\",\r\n        status: \"\",\r\n        tableName: \"\",\r\n        attributeList: [],\r\n        type: \"\",\r\n      },\r\n      dataSource: [], // 当前数据源集合\r\n      currentDataSource: null, // 当前所选择的数据源\r\n      searchTableName: \"\", // 要搜索的表名\r\n      extsTableType: [\r\n        { key: \"subTable\", value: \"子表\" },\r\n        { key: \"sunTable\", value: \"孙表\" },\r\n      ],\r\n      querying: false, // 是否正在查询：查询数据源、查询数据库表、查询表字段\r\n      externalTables: [],\r\n    };\r\n  },\r\n  watch: {\r\n    \"entExts.dsName\": {\r\n      handler: function (newVal) {\r\n        if (newVal && this.dataSource && this.dataSource.length > 0) {\r\n          this.currentDataSource = this.dataSource.find(\r\n            (d) => d.alias == newVal\r\n          );\r\n        }\r\n      },\r\n      immediate: true,\r\n    },\r\n  },\r\n  methods: {\r\n    // 打开选择外部表的对话框\r\n    open(currentEnt, currentEntType, entsCount,externalTables) {\r\n      this.dialogVisible = true;\r\n      this.entsCount = entsCount;\r\n      this.entExts.type = currentEntType;\r\n      this.externalTables = externalTables;\r\n      this.editing = currentEntType ? true : false;\r\n      this.editSubOrSun =\r\n        currentEntType == \"subTable\" || currentEntType == \"sunTable\";\r\n\r\n      this.querying = true;\r\n      form\r\n        .getDataSource()\r\n        .then((resp) => {\r\n          this.dataSource = resp.data;\r\n          if (!this.entExts.dsName) {\r\n            this.entExts.dsName = \"LOCAL\";\r\n            this.changeSource();\r\n          }\r\n        })\r\n        .finally(() => {\r\n          this.querying = false;\r\n        });\r\n      let searchTable = null;\r\n      if (currentEnt) {\r\n        searchTable = currentEnt.tableName;\r\n      }\r\n      if (searchTable) {\r\n        this.entExts.comment = currentEnt.comment;\r\n        this.entExts.name = currentEnt.name;\r\n        this.entExts.dsName = currentEnt.dsName;\r\n        this.entExts.tableName = currentEnt.tableName;\r\n        this.entExts.fk = currentEnt.fk;\r\n        this.addFk = true;\r\n        this.getTableList()\r\n          .then(() => {\r\n            this.changeTableName();\r\n          })\r\n          .catch((err) => {\r\n            this.$message.error(err);\r\n          });\r\n      }\r\n    },\r\n    handleClose() {\r\n      this.dialogVisible = false;\r\n      this.querying = false;\r\n      this.addFk = false;\r\n      this.tableList = [];\r\n      this.entExts = {\r\n        desc: \"\",\r\n        dsName: \"\",\r\n        index: 0,\r\n        isExternal: \"1\",\r\n        name: \"\",\r\n        packageId: \"\",\r\n        pk: \"\",\r\n        fk:\"\",\r\n        pkType: \"\",\r\n        relation: \"\",\r\n        show: \"\",\r\n        status: \"\",\r\n        tableName: \"\",\r\n        attributeList: [],\r\n        type: \"\",\r\n      };\r\n      this.entExtsTable = [];\r\n    },\r\n    changeSource() {\r\n      this.entExts.tableName = \"\";\r\n      this.searchTableName = \"\";\r\n      this.entExtsTable = [];\r\n      this.getTableList(\"select\");\r\n    },\r\n    //外部表数据\r\n    getTableList(type) {\r\n      const this_ = this;\r\n      this.entExtConfirm = true;\r\n      return new Promise((resolve, reject) => {\r\n        if (type) {\r\n          this_.showMessage = true;\r\n        }\r\n        if (!this_.entExts.dsName) {\r\n          reject(\"当前未选择数据源\");\r\n        }\r\n        var param = {\r\n          dsalias: this_.entExts.dsName,\r\n          isTable: \"1\",\r\n          objName: this_.searchTableName,\r\n        };\r\n        this_.querying = true;\r\n        this_.tableList = [];\r\n        form\r\n          .getTableList(param)\r\n          .then((resp) => {\r\n            if (resp.data) {\r\n              resp.data.forEach((v) => {\r\n                v.comment = v.name + \"(\" + v.comment + \")\";\r\n              });\r\n              if (this_.showMessage) {\r\n                this_.$message({\r\n                  message: \"查询成功，请选择外部表\",\r\n                  type: \"success\",\r\n                });\r\n              }\r\n              this_.tableList = resp.data;\r\n            }\r\n          })\r\n          .finally(() => {\r\n            this_.entExtConfirm = false;\r\n            this_.showMessage = false;\r\n            this_.querying = false;\r\n            resolve();\r\n          });\r\n      });\r\n    },\r\n    //外部表选择\r\n    changeTableName() {\r\n      this.entExtConfirm = true;\r\n      let param = {\r\n        dsalias: this.entExts.dsName,\r\n        isTable: \"1\",\r\n        objName: this.entExts.tableName,\r\n      };\r\n      this.querying = true;\r\n      form\r\n        .getHideAttr(param.objName)\r\n        .then((resp) => {\r\n          if (resp) {\r\n            this.hideAttr = resp;\r\n          }\r\n        })\r\n        .then(() => {\r\n          this.querying = true;\r\n          form\r\n            .changeTableName(param,false)\r\n            .then((resp) => {\r\n              this.entExtsTable = JSON.parse(\r\n                JSON.stringify(resp.data.table.columnList)\r\n                  .replace(/charLen/g, \"attrLength\")\r\n                  .replace(/fieldName/g, \"name\")\r\n                  .replace(/columnType/g, \"dataType\")\r\n                  .replace(/fdataType/g, \"fcolumnType\")\r\n              );\r\n              this.entExtsTable.forEach((item) => {\r\n                item.fieldName = item.name;\r\n              });\r\n              if (this.hideAttr.length > 0) {\r\n                let attr = \"\";\r\n                this.hideAttr.forEach((v) => {\r\n                  attr += v.fieldName + \",\";\r\n                });\r\n                this.entExtsTable = this.entExtsTable.filter((value) => {\r\n                  return !attr.includes(value.fieldName);\r\n                });\r\n              }\r\n              resp.data.table.primayKey.forEach((data) => {\r\n                this.entExts.pk = data.fieldName;\r\n                this.entExts.pkType = data.columnType;\r\n              });\r\n              this.hideAttr = [];\r\n            })\r\n            .finally(() => {\r\n              this.entExtConfirm = false;\r\n              this.querying = false;\r\n            });\r\n        })\r\n        .finally(() => {\r\n          this.querying = false;\r\n        });\r\n    },\r\n    validatorEntExts() {\r\n      util\r\n        .validateForm(this, \"externalForm\")\r\n        .then(() => {\r\n          this.buildExternalEnt();\r\n        })\r\n        .catch((reason) => {\r\n          let rule = reason.map((v) => {\r\n            return v.rule;\r\n          });\r\n          if (rule.includes(\"required\")) {\r\n            this.$message.warning(\"请将信息填写完整\");\r\n          } else if (rule.includes(\"alpha_dash\")) {\r\n            this.$message.warning(\"请按正确的格式输入\");\r\n          }\r\n        });\r\n    },\r\n    buildExternalEnt() {\r\n      this.entExts.index = this.entsCount;\r\n      if (!this.editSubOrSun && this.entExts.index > 0) {\r\n        if (!this.entExts.type) {\r\n          this.$message.warning(\"请选择外部表类型。\");\r\n          return;\r\n        }\r\n        if (!this.entExts.fk) {\r\n          this.$message.warning(\"请指定外键字段。\");\r\n          return;\r\n        }\r\n        if (this.externalTables.includes(this.entExts.tableName)){\r\n          this.$message.warning(\"该外部表已存在，不允许重复添加。\");\r\n          return;\r\n        }\r\n      }\r\n      console.log(this.externalTables)\r\n      this.entExts.relation = this.entExts.relation || \"onetomany\";\r\n      this.entExts.show = this.entExts.show || \"子实体-外\";\r\n      if (this.entExtsTable && this.entExtsTable.length > 0) {\r\n        // 若数据源为Oracle的 则要判断数据类型为date 还是 datetime 不同类型赋值类型不同\r\n        if (\r\n          this.currentDataSource &&\r\n          this.currentDataSource.dbType == \"oracle\"\r\n        ) {\r\n          this.entExtsTable.forEach((item) => {\r\n            if (!item.format && item.dataType == \"date\") {\r\n              item.format = \"yyyy-MM-dd\";\r\n            } else if (!item.format && item.dataType == \"datatime\") {\r\n              item.format = \"yyyy-MM-dd HH:mm:ss\";\r\n            }\r\n          });\r\n        } else {\r\n          this.entExtsTable.forEach((item) => {\r\n            if (!item.format && item.dataType == \"date\") {\r\n              if(item.fcolumnType == \"datetime\"){\r\n                item.format = \"yyyy-MM-dd HH:mm:ss\";\r\n              }else{\r\n                item.format = \"yyyy-MM-dd\";\r\n              }\r\n            }\r\n          });\r\n        }\r\n      }\r\n\r\n      const entExts = { ...this.entExts },\r\n        entExtsTable = [...this.entExtsTable];\r\n      let externalEnt = {\r\n        entExts,\r\n        entExtsTable,\r\n        addFk: this.addFk,\r\n      };\r\n      this.$emit(\"selectExternal\", externalEnt);\r\n      this.$emit(\"addExternalTable\", entExts.tableName);\r\n      this.handleClose();\r\n    },\r\n  },\r\n};\r\n",null]}