|
133 | 133 | <el-form-item label="Port" prop="port"> |
134 | 134 | <el-input v-model="datasourceFormData.port" placeholder="端口" show-word-limit maxlength="10" /> |
135 | 135 | </el-form-item> |
136 | | - <el-form-item label="Database" prop="dbName"> |
137 | | - <el-input v-model="datasourceFormData.dbName" placeholder="数据库" show-word-limit maxlength="64" /> |
| 136 | + <el-form-item :label="dbNamePlaceholder" prop="dbName"> |
| 137 | + <el-input v-model="datasourceFormData.dbName" :placeholder="dbNamePlaceholder" show-word-limit maxlength="64" /> |
138 | 138 | </el-form-item> |
139 | | - <el-form-item v-show="showPgSqlSchema" label="Schema" prop="schemaName"> |
140 | | - <el-input v-model="datasourceFormData.schemaName" placeholder="schema" show-word-limit maxlength="64" /> |
| 139 | + <el-form-item label="连接类型" v-show="showOracleFields"> |
| 140 | + <el-select v-model="datasourceFormData.oracleConnType"> |
| 141 | + <el-option |
| 142 | + v-for="item in oracleConnTypeList" |
| 143 | + :key="item.val" |
| 144 | + :label="item.lab" |
| 145 | + :value="item.val" |
| 146 | + /> |
| 147 | + </el-select> |
| 148 | + </el-form-item> |
| 149 | + <el-form-item v-show="showPgSqlSchema" :label="schemaPlaceholder" :prop="schemaPlaceholder"> |
| 150 | + <el-input v-model="datasourceFormData.schemaName" :placeholder="schemaPlaceholder+',如SCOTT'" show-word-limit maxlength="64" /> |
141 | 151 | </el-form-item> |
142 | 152 | <el-form-item label="Username" prop="username"> |
143 | 153 | <el-input v-model="datasourceFormData.username" placeholder="用户名" show-word-limit maxlength="100" /> |
144 | 154 | </el-form-item> |
| 155 | + <el-form-item label="角色" v-show="showOracleFields"> |
| 156 | + <el-select v-model="datasourceFormData.oracleRole"> |
| 157 | + <el-option |
| 158 | + v-for="item in oracleRoleList" |
| 159 | + :key="item.val" |
| 160 | + :label="item.lab" |
| 161 | + :value="item.val" |
| 162 | + /> |
| 163 | + </el-select> |
| 164 | + </el-form-item> |
145 | 165 | <el-form-item label="Password" prop="password"> |
146 | 166 | <el-input v-model="datasourceFormData.password" type="password" placeholder="密码" show-word-limit maxlength="100" /> |
147 | 167 | </el-form-item> |
@@ -234,12 +254,28 @@ export default { |
234 | 254 | username: '', |
235 | 255 | password: '', |
236 | 256 | dbName: '', |
| 257 | + oracleConnType: '', |
| 258 | + oracleRole: '', |
237 | 259 | schemaName: '', |
238 | 260 | packageName: '', |
239 | 261 | delPrefix: '', |
240 | 262 | groupId: '' |
241 | 263 | }, |
242 | 264 | dbTypeConfig: [], |
| 265 | + oracleConnTypeList: [{ |
| 266 | + lab:"服务名", |
| 267 | + val:1 |
| 268 | + },{ |
| 269 | + lab:"SID", |
| 270 | + val:2 |
| 271 | + }], |
| 272 | + oracleRoleList: [{ |
| 273 | + lab: "SYSDBA", |
| 274 | + val: 1 |
| 275 | + },{ |
| 276 | + lab: "SYSOPER", |
| 277 | + val: 2 |
| 278 | + }], |
243 | 279 | datasourceRule: { |
244 | 280 | host: [ |
245 | 281 | { required: true, message: '不能为空', trigger: 'blur' } |
@@ -277,7 +313,24 @@ export default { |
277 | 313 | }, |
278 | 314 | computed: { |
279 | 315 | showPgSqlSchema() { |
280 | | - return this.datasourceFormData.dbType === DB_TYPE.PostgreSQL; |
| 316 | + return this.datasourceFormData.dbType === DB_TYPE.PostgreSQL || this.datasourceFormData.dbType === DB_TYPE.Oracle; |
| 317 | + }, |
| 318 | + dbNamePlaceholder() { |
| 319 | + if(this.datasourceFormData.dbType === DB_TYPE.Oracle) { |
| 320 | + return "服务名"; |
| 321 | + } else { |
| 322 | + return "数据库"; |
| 323 | + } |
| 324 | + }, |
| 325 | + schemaPlaceholder() { |
| 326 | + if(this.datasourceFormData.dbType === DB_TYPE.Oracle) { |
| 327 | + return "数据库"; |
| 328 | + } else { |
| 329 | + return "schema"; |
| 330 | + } |
| 331 | + }, |
| 332 | + showOracleFields() { |
| 333 | + return this.datasourceFormData.dbType === DB_TYPE.Oracle; |
281 | 334 | } |
282 | 335 | }, |
283 | 336 | created() { |
@@ -360,6 +413,44 @@ export default { |
360 | 413 | const id = this.getAttr(current_datasource_id_key) |
361 | 414 | return parseInt(id) || '' |
362 | 415 | }, |
| 416 | + packageOracleFields() { |
| 417 | + // 处理oracle连接数据 |
| 418 | + if(this.datasourceFormData.dbType === DB_TYPE.Oracle) { |
| 419 | + // 处理连接类型 |
| 420 | + if (this.datasourceFormData.oracleConnType == 1) { |
| 421 | + this.datasourceFormData.dbName = "/" + this.datasourceFormData.dbName; |
| 422 | + } else if (this.datasourceFormData.oracleConnType == 2) { |
| 423 | + this.datasourceFormData.dbName = ":" + this.datasourceFormData.dbName; |
| 424 | + } |
| 425 | + // 处理账号角色 |
| 426 | + if (this.datasourceFormData.oracleRole == 1) { |
| 427 | + this.datasourceFormData.username += " AS SYSDBA"; |
| 428 | + } else { |
| 429 | + this.datasourceFormData.username += " AS SYSOPER"; |
| 430 | + } |
| 431 | + } |
| 432 | + }, |
| 433 | + unPackOracleFields(item) { |
| 434 | + // 处理oracle属性 拆包 |
| 435 | + if (item.dbType = DB_TYPE.Oracle) { |
| 436 | + // 处理连接类型 |
| 437 | + if (item.dbName.startsWith("/")) { |
| 438 | + item.oracleConnType = 1; |
| 439 | + item.dbName = item.dbName.replace("/",""); |
| 440 | + } else if (item.dbName.startsWith(":")) { |
| 441 | + item.oracleConnType = 2; |
| 442 | + item.dbName = item.dbName.replace(":",""); |
| 443 | + } |
| 444 | + // 处理账号角色 |
| 445 | + if (item.username.includes("AS SYSDBA")) { |
| 446 | + item.oracleRole = 1; |
| 447 | + item.username = item.username.replace(" AS SYSDBA", ""); |
| 448 | + } else if (item.username.includes("AS SYSOPER")) { |
| 449 | + item.oracleRole = 2; |
| 450 | + item.username = item.username.replace(" AS SYSOPER", ""); |
| 451 | + } |
| 452 | + } |
| 453 | + }, |
363 | 454 | onDataSourceAdd() { |
364 | 455 | this.datasourceTitle = '新建连接' |
365 | 456 | Object.keys(this.datasourceFormData).forEach(key => { |
@@ -394,6 +485,7 @@ export default { |
394 | 485 | }, |
395 | 486 | onDataSourceUpdate(item) { |
396 | 487 | this.datasourceTitle = '修改连接' |
| 488 | + this.unPackOracleFields(item); |
397 | 489 | Object.assign(this.datasourceFormData, item) |
398 | 490 | this.datasourceDlgShow = true |
399 | 491 | }, |
@@ -431,15 +523,33 @@ export default { |
431 | 523 | }) |
432 | 524 | }, |
433 | 525 | onDatasourceTest() { |
| 526 | + this.packageOracleFields(); |
434 | 527 | this.$refs.datasourceForm.validate((valid) => { |
435 | 528 | if (valid) { |
436 | 529 | this.post('/datasource/test', this.datasourceFormData, resp => { |
| 530 | + if (this.datasourceFormData.dbType === DB_TYPE.Oracle) { |
| 531 | + // 处理连接类型 |
| 532 | + if (this.datasourceFormData.oracleConnType == 1) { |
| 533 | + this.datasourceFormData.dbName = this.datasourceFormData.dbName.replace("/",""); |
| 534 | + } else if (this.datasourceFormData.oracleConnType == 2) { |
| 535 | + this.datasourceFormData.dbName = this.datasourceFormData.dbName.replace(":"); |
| 536 | + } |
| 537 | + // 处理账号角色 |
| 538 | + if (this.datasourceFormData.oracleRole == 1) { |
| 539 | + this.datasourceFormData.username = this.datasourceFormData.username.replace(" AS SYSDBA",""); |
| 540 | + } else { |
| 541 | + this.datasourceFormData.username = this.datasourceFormData.username.replace(" AS SYSOPER",""); |
| 542 | + } |
| 543 | + } |
437 | 544 | this.tip('连接成功') |
| 545 | + }, err => { |
| 546 | + this.unPackOracleFields(this.datasourceFormData); |
438 | 547 | }) |
439 | 548 | } |
440 | 549 | }) |
441 | 550 | }, |
442 | 551 | onDatasourceSave() { |
| 552 | + this.packageOracleFields(); |
443 | 553 | this.$refs.datasourceForm.validate((valid) => { |
444 | 554 | if (valid) { |
445 | 555 | this.post('/datasource/test', this.datasourceFormData, resp => { |
|
0 commit comments