{"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]}