{"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\\meta\\DataSourceManager.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\src\\views\\meta\\DataSourceManager.vue","mtime":1675071993006},{"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//\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 sys from \"@/api/portal.js\";\r\nimport req from \"@/request.js\"\r\nimport portal from \"@/api/portal.js\"\r\nexport default {\r\n  name: \"meta-dataSource\",\r\n  components: {},\r\n  data() {\r\n    return {\r\n      isExpand: false,\r\n      dataSourceDisabled: false,\r\n      dataSourceTitle: \"\",\r\n      loadDataUrl: \"\",\r\n      settingDataUrl: \"\",\r\n      dialogVisible: false,\r\n      data: [],\r\n      pageResult: {\r\n        page: 1,\r\n        pageSize: 50,\r\n        total: 0\r\n      },\r\n      isSubmit: true,\r\n      enableds: [\r\n        { key: true, value: \"是 \" },\r\n        { key: false, value: \"否\" }\r\n      ],\r\n      dbType: null,\r\n      dbTypeList: [\r\n        {\r\n          value: \"mysql\",\r\n          driverName: \"com.mysql.cj.jdbc.Driver\",\r\n          url:\r\n            \"jdbc:mysql://主机:3306/数据库名?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=convertToNull\",\r\n          validationquery: \"select 1 from dual\"\r\n        },\r\n        {\r\n          value: \"oracle\",\r\n          driverName: \"oracle.jdbc.OracleDriver\",\r\n          url: \"jdbc:oracle:thin:@主机:1521:数据库实例\",\r\n          validationquery: \"select 1 from dual\"\r\n        },\r\n        {\r\n          value: \"mssql2012\",\r\n          driverName: \"com.microsoft.sqlserver.jdbc.SQLServerDriver\",\r\n          url: \"jdbc:sqlserver://主机:1433;databaseName=数据库名;\",\r\n          validationquery: \"select 1\"\r\n        },\r\n        {\r\n          value: \"mssql2008\",\r\n          driverName: \"com.microsoft.sqlserver.jdbc.SQLServerDriver\",\r\n          url: \"jdbc:sqlserver://主机:1433;databaseName=数据库名;\",\r\n          validationquery: \"select 1\"\r\n        },\r\n        {\r\n          value: \"pgsql\",\r\n          driverName: \"org.postgresql.Driver\",\r\n          url: \"jdbc:postgresql://主机:5432/数据库名\",\r\n          validationquery: \"select 1\"\r\n        },\r\n        {\r\n          value: \"dm8\",\r\n          driverName: \"dm.jdbc.driver.DmDriver\",\r\n          url: \"jdbc:dm://192.168.1.120:5236/EIP725_DM\",\r\n          validationquery: \"select 1 from dual\"\r\n        },\r\n        {\r\n          value: \"taos\",\r\n          driverName: \"com.taosdata.jdbc.TSDBDriver\",\r\n          url:\"jdbc:TAOS://主机:6030/数据库名?timezone=UTC-8&charset=UTF-8&locale=en_US.UTF-8\",\r\n          validationquery: \"select server_status()\"\r\n        }\r\n      ],\r\n      sysDataSourceDefs: [],\r\n      dsId: \"\",\r\n      sourceProp: {\r\n        settingJson: [],\r\n        initOnStart: false,\r\n        enabled: null,\r\n        dbType: \"\",\r\n        classPath: \"\",\r\n        initMethod: \"\",\r\n        closeMethod: \"\",\r\n        name: \"\",\r\n        alias: \"\",\r\n        id: \"\"\r\n      },\r\n      newSourceProp: {},\r\n      sysDataSourceRow: {},\r\n      uploadDialogVisible: false,\r\n      fileList: [],\r\n      uploadUrl: window.context.portal + \"/sys/sysDataSource/v1/import\",\r\n      isEncrypt:0\r\n    };\r\n  },\r\n  watch: {\r\n    dsId: function(newVal, oldVal) {\r\n      if (!newVal) {\r\n        this.sourceProp.settingJson = [];\r\n      }\r\n    }\r\n  },\r\n  computed: {\r\n    dataSourceDeleteUrl: function() {\r\n      return window.context.portal + \"/sys/sysDataSource/v1/remove\";\r\n    }\r\n  },\r\n  methods: {\r\n    //鼠标选中行改变复选框\r\n    rowClick(row, column, event){\r\n      this.$refs.dataSourceTable.$refs.htTable.toggleRowSelection(row);\r\n    },\r\n    encrypt(item){\r\n      if(this.isEncrypt ===1){\r\n        if(!item.value){\r\n          this.$message.warning(\"请输入密码!\");\r\n          this.isEncrypt=0\r\n          return ;\r\n        }\r\n        this.$http.post(window.context.portal + \"/base/tools/v1/encryptDbPassword\",{password:item.value}).then(res => {\r\n          if(this.dsId!='1'){\r\n            this.$message.error(\"不支持密码加密\");\r\n            return ;\r\n          }\r\n          if(!res.data.state){\r\n            this.$message.error(\"加密失败\");\r\n            return ;\r\n          }\r\n          item.value = res.data.value.password;\r\n          let publicKey = {\"name\":\"connectionProperties\",\"comment\":\"公钥\",\"type\":\"java.lang.String\",\"baseAttr\":\"1\",\"default\": \"\",\"value\":\"config.decrypt=true;config.decrypt.key=\"+res.data.value.publicKey};\r\n          this.sourceProp.settingJson.splice(this.sourceProp.settingJson.findIndex(item => item.name === \"connectionProperties\"), 1);\r\n          this.sourceProp.settingJson.splice(this.sourceProp.settingJson.findIndex(item => item.name === \"password\")+1,0,publicKey);\r\n        })\r\n      }else{\r\n        item.value = \"\";\r\n        let index = this.sourceProp.settingJson.findIndex(item => item.name === \"connectionProperties\");\r\n        if(index>0){\r\n          this.sourceProp.settingJson.splice(index,1);\r\n        }\r\n      }\r\n    },\r\n    checkConnection() {\r\n      if (this.sourceProp.settingJson.length == 0) {\r\n        this.$message.error(\"连接失败\");\r\n        return;\r\n      }\r\n      var newSourceProp = {};\r\n      Object.assign(newSourceProp, this.sourceProp);\r\n      newSourceProp.settingJson = JSON.stringify(newSourceProp.settingJson);\r\n      sys.checkConnection(newSourceProp).then(\r\n        data => {\r\n          if (data.state) {\r\n            this.$message.success(data.message);\r\n          }\r\n        },\r\n        error => {\r\n          this.$message.error(error || \"连接失败\");\r\n        }\r\n      );\r\n    },\r\n    currentSel(val, data) {\r\n      var list = data.value;\r\n      for (var i in this.dbTypeList) {\r\n        var d = this.dbTypeList[i];\r\n        if (d.value != val) continue;\r\n        for (var i = 0; i < this.sourceProp.settingJson.length; i++) {\r\n          var attr = this.sourceProp.settingJson[i];\r\n          if (attr.name.toLowerCase().indexOf(\"url\") != -1) {\r\n            attr.value = d.url;\r\n          } else if (attr.name.toLowerCase().indexOf(\"driver\") != -1) {\r\n            attr.value = d.driverName;\r\n          } else if (attr.name.toLowerCase().indexOf(\"validationquery\") != -1) {\r\n            attr.value = d.validationquery;\r\n          }\r\n        }\r\n      }\r\n    },\r\n    settingSel(dsId, data) {\r\n      if (data && data.settingJson) {\r\n        this.sourceProp.settingJson = JSON.parse(data.settingJson.replace(/[\\\\]/g,''));\r\n        //改变了数据池id，那么需要输入的属性也变了\r\n        for (var i = 0; i < this.sysDataSourceDefs.length; i++) {\r\n          var def = this.sysDataSourceDefs[i];\r\n          if (def.id != dsId) continue;\r\n          var settingJson = JSON.parse(def.settingJson.replace(/[\\\\]/g,''));\r\n          this.sourceProp.classPath = def.classPath;\r\n          this.sourceProp.initMethod = def.initMethod;\r\n          this.sourceProp.closeMethod = def.closeMethod;\r\n          //处理配置的初始化值\r\n          this.sourceProp.settingJson = [];\r\n          settingJson.forEach(obj => {\r\n            obj.value = obj[\"default\"];\r\n            this.sourceProp.settingJson.push(obj);\r\n          });\r\n        }\r\n\r\n        //选择了数据源类型 就替换数据源中的连接地址和驱动\r\n        for (var i in this.dbTypeList) {\r\n          var d = this.dbTypeList[i];\r\n          if (d.value != this.sourceProp.dbType) continue;\r\n          for (var i = 0; i < this.sourceProp.settingJson.length; i++) {\r\n            var attr = this.sourceProp.settingJson[i];\r\n            if (attr.name.toLowerCase().indexOf(\"url\") != -1) {\r\n              attr.value = d.url;\r\n            } else if (attr.name.toLowerCase().indexOf(\"driver\") != -1) {\r\n              attr.value = d.driverName;\r\n            } else if (\r\n              attr.name.toLowerCase().indexOf(\"validationquery\") != -1\r\n            ) {\r\n              attr.value = d.validationquery;\r\n            }\r\n          }\r\n        }\r\n        //数据源配置别名跟这里的别名一致\r\n        for (var i = 0; i < this.sourceProp.settingJson.length; i++) {\r\n          var attr = this.sourceProp.settingJson[i];\r\n          if (attr.name.toLowerCase().indexOf(\"alias\") != -1) {\r\n            attr.value = attr.alias;\r\n          }\r\n        }\r\n      }\r\n    },\r\n    handleSelectOptions(query) {\r\n      let _me = this;\r\n      return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n          _me.dbType = _me.dbTypeList;\r\n          resolve();\r\n        }, 1000);\r\n      });\r\n    },\r\n    beforeSaveData() {\r\n      this.newSourceProp = {};\r\n      //克隆一个新对象以免影响页面数据动态绑定上了\r\n      Object.assign(this.newSourceProp, this.sourceProp);\r\n      this.newSourceProp.settingJson = JSON.stringify(\r\n        this.newSourceProp.settingJson\r\n      );\r\n    },\r\n    savedataSourceUrl: function() {\r\n      return window.context.portal + \"/sys/sysDataSource/v1/save\"; //window.context.portal +\r\n    },\r\n    afterSaveData() {\r\n      this.dialogVisible = false;\r\n      this.$refs.dataSourceTable.load();\r\n    },\r\n    afterLoadData(data) {\r\n      // 编辑数据源\r\n      if (this.dialogVisible) {\r\n        this.sourceProp = data;\r\n        this.sourceProp.settingJson = JSON.parse(data.settingJson);\r\n        this.oldAlias = this.sourceProp.alias;\r\n        //判断是否已经加密\r\n        this.judgeIsEncrypt(this.sourceProp.settingJson);\r\n\r\n        let _me = this;\r\n        this.sysDataSourceDefs.forEach(item => {\r\n          if (item.classPath == _me.sourceProp.classPath) {\r\n            _me.dsId = item.id;\r\n          }\r\n        });\r\n        setTimeout(() => this.$validator.validateAll(\"editdataSourceForm\"));\r\n      }\r\n    },\r\n    judgeIsEncrypt(settingJson){\r\n       let index = settingJson.findIndex(item => item.name === \"connectionProperties\");\r\n        if(index>0){\r\n          this.isEncrypt=1;\r\n        }else{\r\n          this.isEncrypt=0;\r\n        }\r\n    },\r\n    afterLoadSourcesettingData(data) {\r\n      this.sysDataSourceDefs = data;\r\n      if (this.sysDataSourceRow && this.sysDataSourceRow.id) {\r\n        this.loadDataUrl =\r\n          `/sys/sysDataSource/v1/getJson?id=` + this.sysDataSourceRow.id;\r\n      }\r\n    },\r\n    dialogCancle(dialogVisible) {\r\n      this.loadDataUrl = \"\";\r\n      this.settingDataUrl = \"\";\r\n      this[dialogVisible] = false;\r\n      setTimeout(() => (this.dataSourceDisabled = false), 500);\r\n    },\r\n    handleClose() {\r\n      this.loadDataUrl = \"\";\r\n      this.settingDataUrl = \"\";\r\n      this.dialogVisible = false;\r\n      setTimeout(() => (this.dataSourceDisabled = false), 500);\r\n    },\r\n    showDialog(row) {\r\n      this.dialogVisible = true;\r\n      this.settingDataUrl = `/sys/sysDataSourceDef/v1/getAll`;\r\n      if (row && row.id) {\r\n        this.sysDataSourceRow = row;\r\n        //this.loadDataUrl = `/sys/sysDataSource/v1/getJson?id=` + row.id;\r\n      }\r\n    },\r\n    handleNodeClick(node) {},\r\n    loadData(param, cb) {\r\n      sys\r\n        .getDataSourcePageJson(param)\r\n        .then(response => {\r\n          this.data = response.rows;\r\n          this.pageResult = {\r\n            page: response.page,\r\n            pageSize: response.pageSize,\r\n            total: response.total\r\n          };\r\n        })\r\n        .finally(() => cb());\r\n    },\r\n    handleCommand(params) {\r\n      switch (params.command) {\r\n        case \"edit\":\r\n          this.dataSourceTitle = \"编辑数据源\";\r\n          this.showDialog(params.row);\r\n          break;\r\n        case \"add\":\r\n          this.sysDataSourceRow = {};\r\n          this.sourceProp.dbType = \"\";\r\n          this.sourceProp.id = \"\";\r\n          this.sourceProp.alias = \"\";\r\n          this.sourceProp.name = \"\";\r\n          this.sourceProp.enabled = null;\r\n          this.dsId = \"\";\r\n          //this.dataSource.genType ='1'\r\n          this.dataSourceTitle = \"添加数据源\";\r\n          this.showDialog();\r\n          this.isEncrypt = 0;\r\n          break;\r\n        case \"get\":\r\n          this.dataSourceTitle = \"查看数据源\";\r\n          this.isSubmit = false;\r\n          this.dataSourceDisabled = true;\r\n          this.showDialog(params.row);\r\n          break;\r\n        default:\r\n          break;\r\n      }\r\n    },\r\n    handleExport(){\r\n      let selection = this.$refs.dataSourceTable.$refs.htTable.selection;\r\n      if(!selection || selection.length == 0){\r\n        this.$message({type:\"warning\",message:\"请至少选择一条数据\"});\r\n        return ;\r\n      }\r\n      let ids = [];\r\n      for(let i = 0 ; i < selection.length;i++){\r\n        ids.push(selection[i].id);\r\n      }\r\n      req.download(window.context.portal+\"/sys/sysDataSource/v1/export?ids=\"+ids.join(\",\"));\r\n    },\r\n    beforeClose(){\r\n      this.fileList = [];\r\n      this.uploadDialogVisible = false;\r\n    },\r\n    handleImport(param){\r\n      let formData = new FormData();\r\n      formData.append(\"file\",param.file);\r\n      portal.importSysDataSource(formData).then(resp=>{\r\n        if(resp.state){\r\n          this.$message({type:\"success\",message:resp.message});\r\n        }else{\r\n          this.$message({type:\"warning\",message:resp.message});\r\n        }\r\n        this.beforeClose();\r\n        this.loadData();\r\n      })\r\n    },\r\n     uploadSubmit(){\r\n      if(this.$refs.elUpload.uploadFiles.length == 0){\r\n        this.$message({type:\"warning\",message:\"请上传文件\"});\r\n      }\r\n      this.$refs.elUpload.submit();\r\n    }\r\n  }\r\n};\r\n",null]}