Commit 22e478a4 by inrgihc

体验问题优化

parent 88c5ccbc
blank_issues_enabled: false # 不允许用户创建空白 Issue
contact_links:
- name: 遇到问题先去看文档!谢谢! # 外部网站名称
url: https://gitee.com/inrgihc/sqlrest/blob/master/README.md # 跳转的外部网站目标地址
about: 文档可以解决你百分之八九十的疑惑 # 跳转外部网站的描述说明
name: BUG反馈、需求或问题咨询
description: "请尽可能详细的描述问题,提供足够的上下文"
body:
- type: dropdown
id: version
attributes:
label: sqlrest版本
options:
- "1.0.0"
validations:
required: true
- type: dropdown
id: modify
attributes:
label: ISSUE类型
options:
- "故障"
- "需求"
- "咨询"
validations:
required: true
- type: dropdown
id: modify
attributes:
label: 是否有二次开发
options:
- "是"
- "否"
validations:
required: true
- type: textarea
id: desired-solution
attributes:
label: 问题描述
description: 详细描述问题:(1)对于BUG反馈,请提供相应截图和日志,对于有堆栈报错信息,请提供完整的堆栈信息,对于一句话反馈的BUG将会被无视而关闭;(2)对于需求,请尽量详细描述您的需求功能;
validations:
required: true
...@@ -207,29 +207,23 @@ MYSQLDB_PASSWORD=123456 ...@@ -207,29 +207,23 @@ MYSQLDB_PASSWORD=123456
### 2、部分系统截图 ### 2、部分系统截图
![000.png](docs/images/000.PNG) ![002.png](docs/images/001.PNG)
![001.png](docs/images/001.PNG) ![003.png](docs/images/002.PNG)
![002.png](docs/images/002.PNG) ![004.png](docs/images/003.PNG)
![003.png](docs/images/003.PNG) ![005.png](docs/images/004.PNG)
![004.png](docs/images/004.PNG) ![006.png](docs/images/005.PNG)
![005.png](docs/images/005.PNG) ![007.png](docs/images/006.PNG)
![006.png](docs/images/006.PNG) ![008.png](docs/images/007.PNG)
![007.png](docs/images/007.PNG) ![010.png](docs/images/008.PNG)
![008.png](docs/images/008.PNG) ![010.png](docs/images/009.PNG)
![009.png](docs/images/009.PNG)
![010.png](docs/images/010.PNG)
![010.png](docs/images/011.PNG)
## 四、项目推荐 ## 四、项目推荐
......
...@@ -13,11 +13,11 @@ spring: ...@@ -13,11 +13,11 @@ spring:
password: ${MYSQLDB_PASSWORD} password: ${MYSQLDB_PASSWORD}
validation-query: SELECT 1 validation-query: SELECT 1
test-on-borrow: true test-on-borrow: true
flyway: liquibase:
locations: classpath:db/migration
baseline-on-migrate: true
table: SQLREST_SCHEMA_HISTORY
enabled: true enabled: true
change-log: classpath:db/changelog/db.changelog-master.yaml
database-change-log-table: SQLREST_DB_CHANGE_LOG_RECORD
database-change-log-lock-table: SQLREST_DB_CHANGE_LOG_LOCK
sqlrest: sqlrest:
cache: cache:
......
docs/images/001.PNG

119 KB | W: | H:

docs/images/001.PNG

55.2 KB | W: | H:

docs/images/001.PNG
docs/images/001.PNG
docs/images/001.PNG
docs/images/001.PNG
  • 2-up
  • Swipe
  • Onion skin
docs/images/002.PNG

55.2 KB | W: | H:

docs/images/002.PNG

70.4 KB | W: | H:

docs/images/002.PNG
docs/images/002.PNG
docs/images/002.PNG
docs/images/002.PNG
  • 2-up
  • Swipe
  • Onion skin
docs/images/003.PNG

70.4 KB | W: | H:

docs/images/003.PNG

41.7 KB | W: | H:

docs/images/003.PNG
docs/images/003.PNG
docs/images/003.PNG
docs/images/003.PNG
  • 2-up
  • Swipe
  • Onion skin
docs/images/004.PNG

41.7 KB | W: | H:

docs/images/004.PNG

38 KB | W: | H:

docs/images/004.PNG
docs/images/004.PNG
docs/images/004.PNG
docs/images/004.PNG
  • 2-up
  • Swipe
  • Onion skin
docs/images/005.PNG

38 KB | W: | H:

docs/images/005.PNG

55.8 KB | W: | H:

docs/images/005.PNG
docs/images/005.PNG
docs/images/005.PNG
docs/images/005.PNG
  • 2-up
  • Swipe
  • Onion skin
docs/images/006.PNG

55.8 KB | W: | H:

docs/images/006.PNG

68.2 KB | W: | H:

docs/images/006.PNG
docs/images/006.PNG
docs/images/006.PNG
docs/images/006.PNG
  • 2-up
  • Swipe
  • Onion skin
docs/images/007.PNG

68.2 KB | W: | H:

docs/images/007.PNG

48.1 KB | W: | H:

docs/images/007.PNG
docs/images/007.PNG
docs/images/007.PNG
docs/images/007.PNG
  • 2-up
  • Swipe
  • Onion skin
docs/images/008.PNG

48.1 KB | W: | H:

docs/images/008.PNG

41.9 KB | W: | H:

docs/images/008.PNG
docs/images/008.PNG
docs/images/008.PNG
docs/images/008.PNG
  • 2-up
  • Swipe
  • Onion skin
docs/images/009.PNG

51.4 KB | W: | H:

docs/images/009.PNG

80.7 KB | W: | H:

docs/images/009.PNG
docs/images/009.PNG
docs/images/009.PNG
docs/images/009.PNG
  • 2-up
  • Swipe
  • Onion skin
...@@ -36,7 +36,10 @@ public class ResultEntity<T> implements Serializable { ...@@ -36,7 +36,10 @@ public class ResultEntity<T> implements Serializable {
} }
public static ResultEntity failed(ResponseErrorCode code, String message) { public static ResultEntity failed(ResponseErrorCode code, String message) {
return new ResultEntity(code.getCode(), code.getMessage() + ":" + message, null); return new ResultEntity(code.getCode(), code.getMessage() + "," + message, null);
} }
public static ResultEntity failed(String message) {
return new ResultEntity(ResponseErrorCode.ERROR_INTERNAL_ERROR.getCode(), message, null);
}
} }
...@@ -46,8 +46,10 @@ public class SqlExecutorService extends AbstractExecutorEngine { ...@@ -46,8 +46,10 @@ public class SqlExecutorService extends AbstractExecutorEngine {
} catch (SQLException se) { } catch (SQLException se) {
log.warn("Failed to call jdbc Connection::rollback(): {}", se.getMessage(), se); log.warn("Failed to call jdbc Connection::rollback(): {}", se.getMessage(), se);
} }
throw new RuntimeException(e); throw e;
} }
} catch (RuntimeException e) {
throw e;
} catch (Exception e) { } catch (Exception e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
......
...@@ -53,6 +53,7 @@ import java.util.stream.Stream; ...@@ -53,6 +53,7 @@ import java.util.stream.Stream;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -150,13 +151,17 @@ public class ApiAssignmentService { ...@@ -150,13 +151,17 @@ public class ApiAssignmentService {
String paramName = entry.getKey(); String paramName = entry.getKey();
List<ParamValue> value = entry.getValue(); List<ParamValue> value = entry.getValue();
ParamTypeEnum type = value.get(0).getType(); ParamTypeEnum type = value.get(0).getType();
if (value.get(0).getIsArray()) { try {
List<Object> values = value.stream().map(ParamValue::getValue) if (value.get(0).getIsArray()) {
.map(s -> type.getConverter().apply(s)) List<Object> values = value.stream().map(ParamValue::getValue)
.collect(Collectors.toList()); .map(s -> type.getConverter().apply(s))
params.put(paramName, values); .collect(Collectors.toList());
} else { params.put(paramName, values);
params.put(paramName, type.getConverter().apply(value.get(0).getValue())); } else {
params.put(paramName, type.getConverter().apply(value.get(0).getValue()));
}
} catch (Exception e) {
throw new RuntimeException(String.format("[%s] value type invalid, %s", paramName, e.getMessage()));
} }
} }
} }
...@@ -175,9 +180,13 @@ public class ApiAssignmentService { ...@@ -175,9 +180,13 @@ public class ApiAssignmentService {
.execute(scripts, params, request.getNamingStrategy()); .execute(scripts, params, request.getNamingStrategy());
Object answer = results.size() > 1 ? results : results.get(0); Object answer = results.size() > 1 ? results : results.get(0);
Map<String, ParamTypeEnum> types = JacksonUtils.parseFieldTypes(results); Map<String, ParamTypeEnum> types = JacksonUtils.parseFieldTypes(results);
entity = ResultEntity.success(ImmutableMap.of("answer", answer, "types", types)); if (MapUtils.isNotEmpty(types)) {
entity = ResultEntity.success(ImmutableMap.of("answer", answer, "types", types));
} else {
entity = ResultEntity.failed("No result data set!");
}
} catch (Exception e) { } catch (Exception e) {
entity = ResultEntity.failed(ResponseErrorCode.ERROR_INTERNAL_ERROR, ExceptionUtil.getMessage(e)); entity = ResultEntity.failed(ExceptionUtil.getMessage(e));
} }
response.setStatus(HttpServletResponse.SC_OK); response.setStatus(HttpServletResponse.SC_OK);
......
...@@ -15,6 +15,7 @@ import java.util.Collections; ...@@ -15,6 +15,7 @@ import java.util.Collections;
import java.util.Date; import java.util.Date;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.Map; import java.util.Map;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
public final class JacksonUtils { public final class JacksonUtils {
...@@ -57,16 +58,25 @@ public final class JacksonUtils { ...@@ -57,16 +58,25 @@ public final class JacksonUtils {
parseFieldTypes("", (Map) obj, results); parseFieldTypes("", (Map) obj, results);
} else if (obj instanceof Collection) { } else if (obj instanceof Collection) {
Collection collection = (Collection) obj; Collection collection = (Collection) obj;
if (CollectionUtils.isEmpty(collection)) {
return results;
}
Object item = collection.stream().findFirst().get(); Object item = collection.stream().findFirst().get();
if (item instanceof Map) { if (item instanceof Map) {
parseFieldTypes("", (Map) item, results); parseFieldTypes("", (Map) item, results);
} else if (item instanceof Collection) { } else if (item instanceof Collection) {
Collection subCollection = (Collection) item; Collection subCollection = (Collection) item;
if (CollectionUtils.isEmpty(subCollection)) {
return results;
}
Object subItem = subCollection.stream().findFirst().get(); Object subItem = subCollection.stream().findFirst().get();
if (subItem instanceof Map) { if (subItem instanceof Map) {
parseFieldTypes("", (Map) subItem, results); parseFieldTypes("", (Map) subItem, results);
} else if (subItem instanceof Collection) { } else if (subItem instanceof Collection) {
Collection thSubCollection = (Collection) subItem; Collection thSubCollection = (Collection) subItem;
if (CollectionUtils.isEmpty(thSubCollection)) {
return results;
}
Object thSubItem = thSubCollection.stream().findFirst().get(); Object thSubItem = thSubCollection.stream().findFirst().get();
if (thSubItem instanceof Map) { if (thSubItem instanceof Map) {
parseFieldTypes("", (Map) thSubItem, results); parseFieldTypes("", (Map) thSubItem, results);
......
...@@ -158,7 +158,7 @@ ...@@ -158,7 +158,7 @@
<outputDirectory>lib/common</outputDirectory> <outputDirectory>lib/common</outputDirectory>
<excludes> <excludes>
<exclude>sqlrest-manager-*.jar</exclude> <exclude>sqlrest-manager-*.jar</exclude>
<exclude>flyway-core-*.jar</exclude> <exclude>liquibase-core-*.jar</exclude>
<exclude>spring-boot-starter-tomcat-*.jar</exclude> <exclude>spring-boot-starter-tomcat-*.jar</exclude>
<exclude>spring-boot-starter-web-*.jar</exclude> <exclude>spring-boot-starter-web-*.jar</exclude>
<exclude>tomcat-embed-websocket-*.jar</exclude> <exclude>tomcat-embed-websocket-*.jar</exclude>
...@@ -187,7 +187,7 @@ ...@@ -187,7 +187,7 @@
<outputDirectory>lib/manager</outputDirectory> <outputDirectory>lib/manager</outputDirectory>
<includes> <includes>
<include>sqlrest-manager-*.jar</include> <include>sqlrest-manager-*.jar</include>
<include>flyway-core-*.jar</include> <include>liquibase-core-*.jar</include>
<include>spring-cloud-netflix-eureka-server-*.jar</include> <include>spring-cloud-netflix-eureka-server-*.jar</include>
<include>spring-cloud-starter-netflix-eureka-server-*.jar</include> <include>spring-cloud-starter-netflix-eureka-server-*.jar</include>
</includes> </includes>
......
...@@ -6,12 +6,15 @@ import com.gitee.sqlrest.core.gateway.FirewallFilterService; ...@@ -6,12 +6,15 @@ import com.gitee.sqlrest.core.gateway.FirewallFilterService;
import com.gitee.sqlrest.common.dto.ResultEntity; import com.gitee.sqlrest.common.dto.ResultEntity;
import javax.annotation.Resource; import javax.annotation.Resource;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.cloud.gateway.filter.GatewayFilterChain; import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter; import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.context.event.EventListener;
import org.springframework.core.Ordered; import org.springframework.core.Ordered;
import org.springframework.core.io.buffer.DataBuffer; import org.springframework.core.io.buffer.DataBuffer;
import org.springframework.http.server.reactive.ServerHttpRequest; import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.http.server.reactive.ServerHttpResponse; import org.springframework.http.server.reactive.ServerHttpResponse;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.server.ServerWebExchange; import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
...@@ -23,6 +26,17 @@ public class ClientAddressFilter implements GlobalFilter, Ordered { ...@@ -23,6 +26,17 @@ public class ClientAddressFilter implements GlobalFilter, Ordered {
@Resource @Resource
private FirewallFilterService firewallFilterService; private FirewallFilterService firewallFilterService;
/*每30秒执行一次*/
@EventListener(ApplicationReadyEvent.class)
@Scheduled(cron = "${cron.firewall.expression:0/30 0 * * * ?}")
public void loadFlowRules() {
try {
firewallFilterService.refresh();
} catch (Exception e) {
log.error("load firewall rules failed:{}", e.getMessage(), e);
}
}
@Override @Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) { public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
ServerHttpRequest request = exchange.getRequest(); ServerHttpRequest request = exchange.getRequest();
......
package com.gitee.sqlrest.gateway.filter;
import com.gitee.sqlrest.core.gateway.FirewallFilterService;
import javax.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.context.event.EventListener;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Slf4j
@Component
public class FirewallRefreshService {
@Resource
private FirewallFilterService firewallFilterService;
/*每30秒执行一次*/
@EventListener(ApplicationReadyEvent.class)
@Scheduled(cron = "${cron.firewall.expression:0/30 0 * * * ?}")
public void loadFlowRules() {
try {
firewallFilterService.refresh();
} catch (Exception e) {
log.error("load firewall rules failed:{}", e.getMessage(), e);
}
}
}
...@@ -502,11 +502,20 @@ export default { ...@@ -502,11 +502,20 @@ export default {
this.$http.get( this.$http.get(
"/sqlrest/manager/api/v1/datasource/test/" + row.id "/sqlrest/manager/api/v1/datasource/test/" + row.id
).then(res => { ).then(res => {
//console.log(res);
if (0 === res.data.code) { if (0 === res.data.code) {
alert("测试连接成功!"); this.$alert("测试连接成功!", "提示信息",
{
confirmButtonText: "确定",
type: "success"
}
);
} else { } else {
alert("测试连接失败," + res.data.message); this.$alert(res.data.message, "错误信息",
{
confirmButtonText: "确定",
type: "error"
}
);
} }
}); });
}, },
...@@ -518,7 +527,6 @@ export default { ...@@ -518,7 +527,6 @@ export default {
let driverClass = ""; let driverClass = "";
if (this.databaseType.length > 0) { if (this.databaseType.length > 0) {
for (let i = 0; i < this.databaseType.length; i++) { for (let i = 0; i < this.databaseType.length; i++) {
//console.log(this.databaseType[i])
if (this.databaseType[i].type == this.createform.type) { if (this.databaseType[i].type == this.createform.type) {
driverClass = this.databaseType[i].driver; driverClass = this.databaseType[i].driver;
break; break;
...@@ -550,11 +558,21 @@ export default { ...@@ -550,11 +558,21 @@ export default {
this.createform = {}; this.createform = {};
this.loadData(); this.loadData();
} else { } else {
alert("添加连接信息失败:" + res.data.message); this.$alert(res.data.message, "添加连接信息失败",
{
confirmButtonText: "确定",
type: "error"
}
);
} }
}); });
} else { } else {
alert("请检查输入"); this.$alert("请检查输入", "提示信息",
{
confirmButtonText: "确定",
type: "info"
}
);
} }
}); });
}, },
...@@ -596,7 +614,6 @@ export default { ...@@ -596,7 +614,6 @@ export default {
let driverClass = ""; let driverClass = "";
if (this.databaseType.length > 0) { if (this.databaseType.length > 0) {
for (let i = 0; i < this.databaseType.length; i++) { for (let i = 0; i < this.databaseType.length; i++) {
//console.log(this.databaseType[i])
if (this.databaseType[i].type == this.updateform.type) { if (this.databaseType[i].type == this.updateform.type) {
driverClass = this.databaseType[i].driver; driverClass = this.databaseType[i].driver;
break; break;
...@@ -629,11 +646,21 @@ export default { ...@@ -629,11 +646,21 @@ export default {
this.loadData(); this.loadData();
this.updateform = {}; this.updateform = {};
} else { } else {
alert("修改连接信息失败:" + res.data.message); this.$alert(res.data.message, "修改连接信息失败",
{
confirmButtonText: "确定",
type: "error"
}
);
} }
}); });
} else { } else {
alert("请检查输入"); this.$alert("请检查输入", "提示信息",
{
confirmButtonText: "确定",
type: "info"
}
);
} }
}); });
}, },
......
...@@ -1034,17 +1034,6 @@ export default { ...@@ -1034,17 +1034,6 @@ export default {
if (this.$refs.sqlEditors) { if (this.$refs.sqlEditors) {
this.$refs.sqlEditors.setTableHints(this.tableHints) this.$refs.sqlEditors.setTableHints(this.tableHints)
} }
// if (this.$refs.scriptEditer) {
// let keywords = []
// for (let key in this.tableHints) {
// let value = this.tableHints[key]
// for (let item of value) {
// keywords.push({ meta: "数据表", caption: key + "." + item, value: key + "." + item, score: 1 });
// }
// }
// this.$refs.scriptEditer.setTableHints(keywords)
// }
return resolve(tableList); return resolve(tableList);
} else { } else {
this.$alert("加载失败,原因:" + res.data.message, '数据加载失败'); this.$alert("加载失败,原因:" + res.data.message, '数据加载失败');
...@@ -1159,7 +1148,12 @@ export default { ...@@ -1159,7 +1148,12 @@ export default {
res => { res => {
if (0 === res.data.code) { if (0 === res.data.code) {
if (res.data.data && res.data.data.length === 0) { if (res.data.data && res.data.data.length === 0) {
alert("解析的入参为空") this.$alert("解析的入参为空", "错误信息",
{
confirmButtonText: "确定",
type: "error"
}
);
return return
} }
for (let item of res.data.data) { for (let item of res.data.data) {
...@@ -1179,7 +1173,12 @@ export default { ...@@ -1179,7 +1173,12 @@ export default {
}; };
} else { } else {
if (res.data.message) { if (res.data.message) {
alert("操作失败失败:" + res.data.message); this.$alert(res.data.message, "错误信息",
{
confirmButtonText: "确定",
type: "error"
}
);
} }
} }
} }
...@@ -1234,7 +1233,12 @@ export default { ...@@ -1234,7 +1233,12 @@ export default {
) )
} }
if (!add) { if (!add) {
alert("已经存在分页参数了!") this.$alert("已经存在分页参数了!", "提示信息",
{
confirmButtonText: "确定",
type: "info"
}
);
} }
}, },
deleteInputParamsItem: function (index) { deleteInputParamsItem: function (index) {
...@@ -1265,12 +1269,22 @@ export default { ...@@ -1265,12 +1269,22 @@ export default {
} }
if (!this.createParam.dataSourceId) { if (!this.createParam.dataSourceId) {
alert('请选择一个数据源来') this.$alert('请选择一个数据源来', "错误信息",
{
confirmButtonText: "确定",
type: "error"
}
);
return return
} }
if (this.checkSqlsOrScriptEmpty(sqls)) { if (this.checkSqlsOrScriptEmpty(sqls)) {
alert(isSql ? '请检查SQL窗口内容' : '请检查脚本内容') this.$alert(isSql ? '请检查SQL窗口内容' : '请检查脚本内容', "错误信息",
{
confirmButtonText: "确定",
type: "error"
}
);
} else { } else {
if (this.isUpdatePage()) { if (this.isUpdatePage()) {
this.handleUpdateSave(sqls); this.handleUpdateSave(sqls);
...@@ -1317,7 +1331,12 @@ export default { ...@@ -1317,7 +1331,12 @@ export default {
this.$message("添加信息成功"); this.$message("添加信息成功");
} else { } else {
if (res.data.message) { if (res.data.message) {
alert("操作失败失败:" + res.data.message); this.$alert(res.data.message, "错误信息",
{
confirmButtonText: "确定",
type: "error"
}
);
} }
} }
} }
...@@ -1358,7 +1377,12 @@ export default { ...@@ -1358,7 +1377,12 @@ export default {
this.$message("更新信息成功"); this.$message("更新信息成功");
} else { } else {
if (res.data.message) { if (res.data.message) {
alert("操作失败失败:" + res.data.message); this.$alert(res.data.message, "错误信息",
{
confirmButtonText: "确定",
type: "error"
}
);
} }
} }
} }
...@@ -1377,12 +1401,22 @@ export default { ...@@ -1377,12 +1401,22 @@ export default {
} }
if (!this.createParam.dataSourceId) { if (!this.createParam.dataSourceId) {
alert('请选择一个数据源来') this.$alert('请选择一个数据源来', "错误信息",
{
confirmButtonText: "确定",
type: "error"
}
);
return return
} }
if (this.checkSqlsOrScriptEmpty(sqls)) { if (this.checkSqlsOrScriptEmpty(sqls)) {
alert(isSql ? '请检查SQL窗口内容' : '请检查脚本内容') this.$alert(isSql ? '请检查SQL窗口内容' : '请检查脚本内容', "错误信息",
{
confirmButtonText: "确定",
type: "error"
}
);
} else { } else {
this.debugParams = [] this.debugParams = []
this.inputParams.forEach(item => { this.inputParams.forEach(item => {
...@@ -1456,7 +1490,12 @@ export default { ...@@ -1456,7 +1490,12 @@ export default {
} }
} else { } else {
if (res.data.message) { if (res.data.message) {
alert("调试操作失败:" + res.data.message); this.$alert(res.data.message, "错误信息",
{
confirmButtonText: "确定",
type: "error"
}
);
} }
} }
} }
......
...@@ -29,8 +29,8 @@ ...@@ -29,8 +29,8 @@
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.flywaydb</groupId> <groupId>org.liquibase</groupId>
<artifactId>flyway-core</artifactId> <artifactId>liquibase-core</artifactId>
</dependency> </dependency>
</dependencies> </dependencies>
......
...@@ -13,11 +13,11 @@ spring: ...@@ -13,11 +13,11 @@ spring:
password: ${MYSQLDB_PASSWORD} password: ${MYSQLDB_PASSWORD}
validation-query: SELECT 1 validation-query: SELECT 1
test-on-borrow: true test-on-borrow: true
flyway: liquibase:
locations: classpath:db/migration
baseline-on-migrate: true
table: SQLREST_SCHEMA_HISTORY
enabled: true enabled: true
change-log: classpath:db/changelog/db.changelog-master.yaml
database-change-log-table: SQLREST_DB_CHANGE_LOG_RECORD
database-change-log-lock-table: SQLREST_DB_CHANGE_LOG_LOCK
sqlrest: sqlrest:
cache: cache:
......
databaseChangeLog:
- include:
file: classpath:db/changelog/log-v1.0.1.yaml
- include:
file: classpath:db/changelog/log-v1.0.2.yaml
databaseChangeLog:
- changeSet:
id: 1.0.1
author: sqlrest
runOnChange: false
changes:
- sqlFile:
encoding: UTF-8
path: db/migration/V1_0_1__system-ddl.sql
databaseChangeLog:
- changeSet:
id: 1.0.2
author: sqlrest
runOnChange: false
changes:
- sqlFile:
encoding: UTF-8
path: db/migration/V1_0_2__system-dml.sql
...@@ -58,7 +58,8 @@ CREATE TABLE `SQLREST_API_ASSIGNMENT` ...@@ -58,7 +58,8 @@ CREATE TABLE `SQLREST_API_ASSIGNMENT`
`description` varchar(1024) default null comment '接口描述', `description` varchar(1024) default null comment '接口描述',
`method` varchar(16) not null default 'GET' comment '请求方法', `method` varchar(16) not null default 'GET' comment '请求方法',
`path` varchar(255) not null default '' comment '请求路径', `path` varchar(255) not null default '' comment '请求路径',
`params` text comment '入参JSON列表', `params` text null comment '入参JSON列表',
`outputs` text null comment '出参JSON列表',
`status` tinyint(1) not null default 0 comment '是否发布', `status` tinyint(1) not null default 0 comment '是否发布',
`open` tinyint(1) not null default 0 comment '是否公开', `open` tinyint(1) not null default 0 comment '是否公开',
`engine` varchar(16) not null default 'SQL' comment '执行引擎', `engine` varchar(16) not null default 'SQL' comment '执行引擎',
......
ALTER TABLE `SQLREST_API_ASSIGNMENT` ADD COLUMN `outputs` text NULL COMMENT '出参JSON列表' AFTER `params`;
<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><title>SQLREST工具</title><link href=/static/css/app.77c1c554a49f8b100e668b153defb860.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=/static/js/manifest.420bcca8a647a82f0a6d.js></script><script type=text/javascript src=/static/js/vendor.6bde4750a07bb5a2f647.js></script><script type=text/javascript src=/static/js/app.5b13ca32f61140a99ff5.js></script></body></html> <!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><title>SQLREST工具</title><link href=/static/css/app.d72e48888783ec7888daa8507773340a.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=/static/js/manifest.b20a86b3cf44ea708af0.js></script><script type=text/javascript src=/static/js/vendor.6bde4750a07bb5a2f647.js></script><script type=text/javascript src=/static/js/app.5b13ca32f61140a99ff5.js></script></body></html>
\ No newline at end of file \ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
webpackJsonp([5],{"8JWE":function(e,t){},EWRK:function(e,t,a){"use strict";var r={render:function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticStyle:{display:"inline-block"}},["MYSQL"==e.type?a("i",{staticClass:"iconfont icon-my-SQL colored_db"}):"MARIADB"==e.type?a("i",{staticClass:"iconfont icon-MariaDB-chanpinicon colored_db"}):"ORACLE"==e.type?a("i",{staticClass:"iconfont icon-oracle-copy-png colored_db"}):"SQLSERVER"==e.type?a("i",{staticClass:"iconfont icon-SQLServer colored_db"}):"POSTGRESQL"==e.type?a("i",{staticClass:"iconfont icon-postgresql colored_db"}):"DB2"==e.type?a("i",{staticClass:"iconfont icon-DB2 colored_db"}):"HIVE"==e.type?a("i",{staticClass:"iconfont icon-hive colored_db"}):"CLICKHOUSE"==e.type?a("i",{staticClass:"iconfont icon-clickhouse2 colored_db"}):a("i",{staticClass:"iconfont icon-OTHER colored_db"})])},staticRenderFns:[]};var o=a("VU/8")({name:"databaseIcon",props:["type"]},r,!1,function(e){a("8JWE")},"data-v-b6f86cb4",null);t.a=o.exports},U0nr:function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a("mvHQ"),o=a.n(r),l={name:"datasource",components:{databaseIcon:a("EWRK").a},data:function(){return{loading:!0,keyword:null,lists:[],currentPage:1,pageSize:10,totalCount:2,databaseType:[],connectionDriver:[],tableData:[],queryForm:{title:"",type:"",url:"",diver:"",version:"",username:"",password:""},createform:{title:"",type:"",diver:"",sample:"",url:"",version:"",username:"",password:""},updateform:{id:0,title:"",type:"",diver:"",version:"",username:"",password:""},rules:{name:[{required:!0,message:"名称不能为空",trigger:"blur"}],type:[{required:!0,message:"数据库类型必须选择",trigger:"change"}],version:[{required:!0,message:"驱动版本必须选择",trigger:"change"}],url:[{required:!0,message:"Jdbc URL必须提供",trigger:"blur"}],username:[{required:!0,message:"连接账号名必须提供",trigger:"blur"}],password:[{required:!0,message:"连接密码必须提供",trigger:"blur"}]},dialogFormVisible:!1,createFormVisible:!1,updateFormVisible:!1}},methods:{loadData:function(){var e=this;this.$http({method:"POST",headers:{"Content-Type":"application/json"},url:"/sqlrest/manager/api/v1/datasource/list",data:o()({searchText:this.keyword,page:this.currentPage,size:this.pageSize})}).then(function(t){0===t.data.code?(e.currentPage=t.data.pagination.page,e.pageSize=t.data.pagination.size,e.totalCount=t.data.pagination.total,e.tableData=t.data.data):alert("加载任务列表失败:"+t.data.message)},function(){console.log("load connection list failed")})},searchByKeyword:function(){this.currentPage=1,this.loadData()},loadDatabaseTypes:function(){var e=this;this.databaseType=[],this.$http({method:"GET",url:"/sqlrest/manager/api/v1/datasource/types"}).then(function(t){0===t.data.code?e.databaseType=t.data.data:alert("加载任务列表失败:"+t.data.message)},function(){console.log("failed")})},handleClose:function(e){},handleDelete:function(e,t){var a=this;this.$confirm("此操作将此数据源ID="+t.id+"删除么, 是否继续?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(function(){a.$http.delete("/sqlrest/manager/api/v1/datasource/delete/"+t.id).then(function(e){0===e.data.code?a.loadData():alert("删除任务失败:"+e.data.message)})})},handleMore:function(e,t){this.dialogFormVisible=!0,this.queryForm=t},handleTest:function(e,t){this.$http.get("/sqlrest/manager/api/v1/datasource/test/"+t.id).then(function(e){0===e.data.code?alert("测试连接成功!"):alert("测试连接失败,"+e.data.message)})},addConnection:function(){this.createFormVisible=!0,this.createform={}},handleCreate:function(){var e=this,t="";if(this.databaseType.length>0)for(var a=0;a<this.databaseType.length;a++)if(this.databaseType[a].type==this.createform.type){t=this.databaseType[a].driver;break}this.$refs.createform.validate(function(a){a?e.$http({method:"POST",headers:{"Content-Type":"application/json"},url:"/sqlrest/manager/api/v1/datasource/create",data:o()({name:e.createform.name,type:e.createform.type,version:e.createform.version,driver:t,url:e.createform.url,username:e.createform.username,password:e.createform.password})}).then(function(t){0===t.data.code?(e.createFormVisible=!1,e.$message("添加连接信息成功"),e.createform={},e.loadData()):alert("添加连接信息失败:"+t.data.message)}):alert("请检查输入")})},selectChangedDriverVersion:function(e){var t=this;this.connectionDriver=[],this.$http.get("/sqlrest/manager/api/v1/datasource/"+e+"/drivers").then(function(a){if(0===a.data.code){t.connectionDriver=a.data.data;var r=t.databaseType.find(function(t){return t.type===e});r&&(t.createform.sample=r.sample)}else t.$message.error("查询数据库可用的驱动版本失败,"+a.data.message),t.connectionDriver=[]})},handleUpdate:function(e,t){var a=this;this.updateform=JSON.parse(o()(t)),this.$http.get("/sqlrest/manager/api/v1/datasource/"+this.updateform.type+"/drivers").then(function(e){0===e.data.code?a.connectionDriver=e.data.data:(a.$message.error("查询数据库可用的驱动版本失败,"+e.data.message),a.connectionDriver=[])}),this.updateFormVisible=!0},handleSave:function(){var e=this,t="";if(this.databaseType.length>0)for(var a=0;a<this.databaseType.length;a++)if(this.databaseType[a].type==this.updateform.type){t=this.databaseType[a].driver;break}this.$refs.updateform.validate(function(a){a?e.$http({method:"POST",headers:{"Content-Type":"application/json"},url:"/sqlrest/manager/api/v1/datasource/update",data:o()({id:e.updateform.id,name:e.updateform.name,type:e.updateform.type,version:e.updateform.version,driver:t,url:e.updateform.url,username:e.updateform.username,password:e.updateform.password})}).then(function(t){0===t.data.code?(e.updateFormVisible=!1,e.$message("修改连接信息成功"),e.loadData(),e.updateform={}):alert("修改连接信息失败:"+t.data.message)}):alert("请检查输入")})},handleSizeChange:function(e){this.loading=!0,this.pageSize=e,this.loadData()},handleCurrentChange:function(e){this.loading=!0,this.currentPage=e,this.loadData()}},created:function(){this.loadDatabaseTypes(),this.loadData()}},i={render:function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",[a("el-card",[a("div",{staticClass:"connection-list-top"},[a("div",{staticClass:"left-search-input-group"},[a("div",{staticClass:"left-search-input"},[a("el-input",{staticStyle:{width:"300px"},attrs:{placeholder:"请输入连接名称关键字搜索",clearable:!0},on:{change:e.searchByKeyword},model:{value:e.keyword,callback:function(t){e.keyword=t},expression:"keyword"}})],1)]),e._v(" "),a("div",{staticClass:"right-add-button-group"},[a("el-button",{attrs:{type:"primary",size:"mini",icon:"el-icon-document-add"},on:{click:e.addConnection}},[e._v("添加")])],1)]),e._v(" "),a("el-table",{attrs:{"header-cell-style":{background:"#eef1f6",color:"#606266"},data:e.tableData,size:"small",border:""}},[a("el-table-column",{attrs:{prop:"id",label:"编号","min-width":"5%"}}),e._v(" "),a("el-table-column",{attrs:{prop:"name",label:"连接名称","show-overflow-tooltip":"","min-width":"20%"}}),e._v(" "),a("el-table-column",{attrs:{prop:"createTime",label:"创建时间","min-width":"18%"}}),e._v(" "),a("el-table-column",{attrs:{label:"数据库类型","show-overflow-tooltip":"","min-width":"15%"},scopedSlots:e._u([{key:"default",fn:function(t){return[a("databaseIcon",{attrs:{type:t.row.type}}),e._v(" "),a("span",[e._v(e._s(t.row.type))])]}}])}),e._v(" "),a("el-table-column",{attrs:{prop:"url",label:"JDBC连接串","show-overflow-tooltip":"","min-width":"15%"}}),e._v(" "),a("el-table-column",{attrs:{prop:"username",label:"账号","show-overflow-tooltip":"","min-width":"10%"}}),e._v(" "),a("el-table-column",{attrs:{label:"操作","min-width":"35%"},scopedSlots:e._u([{key:"default",fn:function(t){return[a("el-button-group",[a("el-button",{attrs:{size:"small",type:"danger",icon:"el-icon-video-play",round:""},on:{click:function(a){return e.handleTest(t.$index,t.row)}}},[e._v("测试")]),e._v(" "),a("el-button",{attrs:{size:"small",type:"primary",icon:"el-icon-document",round:""},on:{click:function(a){return e.handleMore(t.$index,t.row)}}},[e._v("详情")]),e._v(" "),a("el-button",{attrs:{size:"small",type:"warning",icon:"el-icon-edit",round:""},on:{click:function(a){return e.handleUpdate(t.$index,t.row)}}},[e._v("编辑")]),e._v(" "),a("el-button",{attrs:{size:"small",type:"success",icon:"el-icon-delete",round:""},on:{click:function(a){return e.handleDelete(t.$index,t.row)}}},[e._v("删除")])],1)]}}])})],1),e._v(" "),a("div",{staticClass:"page",attrs:{align:"right"}},[a("el-pagination",{attrs:{"current-page":e.currentPage,"page-sizes":[5,10,20,40],"page-size":e.pageSize,layout:"total, sizes, prev, pager, next, jumper",total:e.totalCount},on:{"size-change":e.handleSizeChange,"current-change":e.handleCurrentChange}})],1),e._v(" "),a("el-dialog",{attrs:{title:"查看数据库连接信息",visible:e.dialogFormVisible,showClose:!1,"before-close":e.handleClose},on:{"update:visible":function(t){e.dialogFormVisible=t}}},[a("el-form",{attrs:{model:e.queryForm,size:"mini"}},[a("el-form-item",{staticStyle:{width:"85%"},attrs:{label:"连接名称","label-width":"120px"}},[a("el-input",{attrs:{"auto-complete":"off",readonly:!0},model:{value:e.queryForm.name,callback:function(t){e.$set(e.queryForm,"name",t)},expression:"queryForm.name"}})],1),e._v(" "),a("el-form-item",{staticStyle:{width:"85%"},attrs:{label:"数据库类型","label-width":"120px"}},[a("el-input",{attrs:{"auto-complete":"off",readonly:!0},model:{value:e.queryForm.type,callback:function(t){e.$set(e.queryForm,"type",t)},expression:"queryForm.type"}})],1),e._v(" "),a("el-form-item",{staticStyle:{width:"85%"},attrs:{label:"数据库驱动","label-width":"120px"}},[a("el-input",{attrs:{"auto-complete":"off",readonly:!0},model:{value:e.queryForm.driver,callback:function(t){e.$set(e.queryForm,"driver",t)},expression:"queryForm.driver"}})],1),e._v(" "),a("el-form-item",{staticStyle:{width:"85%"},attrs:{label:"驱动版本号","label-width":"120px"}},[a("el-input",{attrs:{"auto-complete":"off",readonly:!0},model:{value:e.queryForm.version,callback:function(t){e.$set(e.queryForm,"version",t)},expression:"queryForm.version"}})],1),e._v(" "),a("el-form-item",{staticStyle:{width:"85%"},attrs:{label:"JDBC连接串","label-width":"120px"}},[a("el-input",{attrs:{type:"textarea",rows:6,spellcheck:!1,"auto-complete":"off",readonly:!0},model:{value:e.queryForm.url,callback:function(t){e.$set(e.queryForm,"url",t)},expression:"queryForm.url"}})],1),e._v(" "),a("el-form-item",{staticStyle:{width:"85%"},attrs:{label:"账号名称","label-width":"120px"}},[a("el-input",{attrs:{"auto-complete":"off",readonly:!0},model:{value:e.queryForm.username,callback:function(t){e.$set(e.queryForm,"username",t)},expression:"queryForm.username"}})],1),e._v(" "),a("el-form-item",{staticStyle:{width:"85%"},attrs:{label:"连接密码","label-width":"120px"}},[a("el-input",{attrs:{type:"password","auto-complete":"off",readonly:!0},model:{value:e.queryForm.password,callback:function(t){e.$set(e.queryForm,"password",t)},expression:"queryForm.password"}})],1)],1),e._v(" "),a("div",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[a("el-button",{on:{click:function(t){e.dialogFormVisible=!1}}},[e._v("关闭")])],1)],1),e._v(" "),a("el-dialog",{attrs:{title:"添加数据源连接信息",visible:e.createFormVisible,showClose:!1,"before-close":e.handleClose},on:{"update:visible":function(t){e.createFormVisible=t}}},[a("el-form",{ref:"createform",attrs:{model:e.createform,size:"mini","status-icon":"",rules:e.rules}},[a("el-form-item",{staticStyle:{width:"85%"},attrs:{label:"连接名称","label-width":"120px",required:!0,prop:"name"}},[a("el-input",{attrs:{"auto-complete":"off"},model:{value:e.createform.name,callback:function(t){e.$set(e.createform,"name",t)},expression:"createform.name"}})],1),e._v(" "),a("el-form-item",{staticStyle:{width:"85%"},attrs:{label:"数据库类型","label-width":"120px",required:!0,prop:"type"}},[a("el-select",{attrs:{placeholder:"请选择数据库"},on:{change:e.selectChangedDriverVersion},model:{value:e.createform.type,callback:function(t){e.$set(e.createform,"type",t)},expression:"createform.type"}},e._l(e.databaseType,function(e,t){return a("el-option",{key:t,attrs:{label:e.type,value:e.type}})}),1)],1),e._v(" "),a("el-form-item",{staticStyle:{width:"85%"},attrs:{label:"驱动版本","label-width":"120px",required:!0,prop:"version"}},[a("el-select",{attrs:{placeholder:"请选择版本"},model:{value:e.createform.version,callback:function(t){e.$set(e.createform,"version",t)},expression:"createform.version"}},e._l(e.connectionDriver,function(e,t){return a("el-option",{key:t,attrs:{label:e.driverVersion,value:e.driverVersion}})}),1)],1),e._v(" "),a("el-form-item",{staticStyle:{width:"85%"},attrs:{label:"JDBC连接串","label-width":"120px",required:!0,prop:"url"}},[a("el-alert",{attrs:{title:"样例:",type:"warning",description:e.createform.sample}}),e._v(" "),a("el-input",{attrs:{type:"textarea",rows:6,spellcheck:!1,placeholder:"请输入","auto-complete":"off"},model:{value:e.createform.url,callback:function(t){e.$set(e.createform,"url",t)},expression:"createform.url"}})],1),e._v(" "),a("el-form-item",{staticStyle:{width:"85%"},attrs:{label:"账号名称","label-width":"120px",prop:"username"}},[a("el-input",{attrs:{"auto-complete":"off"},model:{value:e.createform.username,callback:function(t){e.$set(e.createform,"username",t)},expression:"createform.username"}})],1),e._v(" "),a("el-form-item",{staticStyle:{width:"85%"},attrs:{label:"连接密码","label-width":"120px",prop:"password"}},[a("el-input",{attrs:{type:"password","auto-complete":"off"},model:{value:e.createform.password,callback:function(t){e.$set(e.createform,"password",t)},expression:"createform.password"}})],1)],1),e._v(" "),a("div",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[a("el-button",{on:{click:function(t){e.createFormVisible=!1}}},[e._v("取 消")]),e._v(" "),a("el-button",{attrs:{type:"primary"},on:{click:e.handleCreate}},[e._v("确 定")])],1)],1),e._v(" "),a("el-dialog",{attrs:{title:"修改数据源连接信息",visible:e.updateFormVisible,showClose:!1,"before-close":e.handleClose},on:{"update:visible":function(t){e.updateFormVisible=t}}},[a("el-form",{ref:"updateform",attrs:{model:e.updateform,size:"mini","status-icon":"",rules:e.rules}},[a("el-form-item",{staticStyle:{width:"85%"},attrs:{label:"连接名称","label-width":"120px",required:!0,prop:"name"}},[a("el-input",{attrs:{"auto-complete":"off"},model:{value:e.updateform.name,callback:function(t){e.$set(e.updateform,"name",t)},expression:"updateform.name"}})],1),e._v(" "),a("el-form-item",{staticStyle:{width:"85%"},attrs:{label:"数据库类型","label-width":"120px",required:!0,prop:"type"}},[a("el-select",{attrs:{placeholder:"请选择数据库"},on:{change:e.selectChangedDriverVersion},model:{value:e.updateform.type,callback:function(t){e.$set(e.updateform,"type",t)},expression:"updateform.type"}},e._l(e.databaseType,function(e,t){return a("el-option",{key:t,attrs:{label:e.type,value:e.type}})}),1)],1),e._v(" "),a("el-form-item",{staticStyle:{width:"85%"},attrs:{label:"驱动版本","label-width":"120px",required:!0,prop:"version"}},[a("el-select",{attrs:{placeholder:"请选择版本"},model:{value:e.updateform.version,callback:function(t){e.$set(e.updateform,"version",t)},expression:"updateform.version"}},e._l(e.connectionDriver,function(e,t){return a("el-option",{key:t,attrs:{label:e.driverVersion,value:e.driverVersion}})}),1)],1),e._v(" "),a("el-form-item",{staticStyle:{width:"85%"},attrs:{label:"JDBC连接串","label-width":"120px",required:!0,prop:"url"}},[a("el-input",{attrs:{type:"textarea",rows:6,spellcheck:!1,"auto-complete":"off"},model:{value:e.updateform.url,callback:function(t){e.$set(e.updateform,"url",t)},expression:"updateform.url"}})],1),e._v(" "),a("el-form-item",{staticStyle:{width:"85%"},attrs:{label:"账号名称","label-width":"120px",prop:"username"}},[a("el-input",{attrs:{"auto-complete":"off"},model:{value:e.updateform.username,callback:function(t){e.$set(e.updateform,"username",t)},expression:"updateform.username"}})],1),e._v(" "),a("el-form-item",{staticStyle:{width:"85%"},attrs:{label:"连接密码","label-width":"120px",prop:"password"}},[a("el-input",{attrs:{type:"password","auto-complete":"off"},model:{value:e.updateform.password,callback:function(t){e.$set(e.updateform,"password",t)},expression:"updateform.password"}})],1)],1),e._v(" "),a("div",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[a("el-button",{on:{click:function(t){e.updateFormVisible=!1}}},[e._v("取 消")]),e._v(" "),a("el-button",{attrs:{type:"primary"},on:{click:e.handleSave}},[e._v("确 定")])],1)],1)],1)],1)},staticRenderFns:[]};var s=a("VU/8")(l,i,!1,function(e){a("V7zD")},"data-v-3df7bf9c",null);t.default=s.exports},V7zD:function(e,t){}});
//# sourceMappingURL=5.6a80c59d0b7ae08a93a1.js.map
\ No newline at end of file
{"version":3,"sources":["webpack:///src/components/databaseIcon/databaseIcon.vue","webpack:///./src/components/databaseIcon/databaseIcon.vue?7e80","webpack:///./src/components/databaseIcon/databaseIcon.vue","webpack:///src/views/datasource/list.vue","webpack:///./src/views/datasource/list.vue?882c","webpack:///./src/views/datasource/list.vue"],"names":["databaseIcon_databaseIcon","render","_vm","this","_h","$createElement","_c","_self","staticStyle","display","type","staticClass","staticRenderFns","Component","__webpack_require__","normalizeComponent","name","props","ssrContext","__webpack_exports__","list","components","databaseIcon","data","loading","keyword","lists","currentPage","pageSize","totalCount","databaseType","connectionDriver","tableData","queryForm","title","url","diver","version","username","password","createform","sample","updateform","id","rules","required","message","trigger","dialogFormVisible","createFormVisible","updateFormVisible","methods","loadData","_this","$http","method","headers","Content-Type","stringify_default","searchText","page","size","then","res","code","pagination","total","alert","console","log","searchByKeyword","loadDatabaseTypes","_this2","handleClose","done","handleDelete","index","row","_this3","$confirm","confirmButtonText","cancelButtonText","delete","handleMore","handleTest","get","addConnection","handleCreate","_this4","driverClass","length","i","driver","$refs","validate","valid","$message","selectChangedDriverVersion","value","_this5","varDatabaseType","find","item","error","handleUpdate","_this6","JSON","parse","handleSave","_this7","handleSizeChange","handleCurrentChange","created","datasource_list","width","attrs","placeholder","clearable","on","change","model","callback","$$v","expression","_v","icon","click","header-cell-style","background","color","border","prop","label","min-width","show-overflow-tooltip","scopedSlots","_u","key","fn","scope","_s","round","$event","$index","align","current-page","page-sizes","page-size","layout","size-change","current-change","visible","showClose","before-close","update:visible","label-width","auto-complete","readonly","$set","rows","spellcheck","slot","ref","status-icon","_l","driverVersion","description"],"mappings":"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","file":"static/js/5.6a80c59d0b7ae08a93a1.js","sourcesContent":["<template>\n <div style=\"display: inline-block\">\n <i class=\"iconfont icon-my-SQL colored_db\"\n v-if=\"type == 'MYSQL'\"></i>\n <i class=\"iconfont icon-MariaDB-chanpinicon colored_db\"\n v-else-if=\"type == 'MARIADB'\"></i>\n <i class=\"iconfont icon-oracle-copy-png colored_db\"\n v-else-if=\"type == 'ORACLE'\"></i>\n <i class=\"iconfont icon-SQLServer colored_db\"\n v-else-if=\"type == 'SQLSERVER'\"></i>\n <i class=\"iconfont icon-postgresql colored_db\"\n v-else-if=\"type == 'POSTGRESQL'\"></i>\n <i class=\"iconfont icon-DB2 colored_db\"\n v-else-if=\"type == 'DB2'\"></i>\n <i class=\"iconfont icon-hive colored_db\"\n v-else-if=\"type == 'HIVE'\"></i>\n <i class=\"iconfont icon-clickhouse2 colored_db\"\n v-else-if=\"type == 'CLICKHOUSE'\"></i>\n <i class=\"iconfont icon-OTHER colored_db\"\n v-else></i>\n </div>\n</template>\n\n<script>\nexport default {\n name: \"databaseIcon\",\n props: ['type']\n}\n</script>\n\n<style scoped>\n.colored_db {\n color: #0698a5;\n font-size: 18px;\n font-weight: 500;\n margin-right: 5px;\n}\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/databaseIcon/databaseIcon.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"display\":\"inline-block\"}},[(_vm.type == 'MYSQL')?_c('i',{staticClass:\"iconfont icon-my-SQL colored_db\"}):(_vm.type == 'MARIADB')?_c('i',{staticClass:\"iconfont icon-MariaDB-chanpinicon colored_db\"}):(_vm.type == 'ORACLE')?_c('i',{staticClass:\"iconfont icon-oracle-copy-png colored_db\"}):(_vm.type == 'SQLSERVER')?_c('i',{staticClass:\"iconfont icon-SQLServer colored_db\"}):(_vm.type == 'POSTGRESQL')?_c('i',{staticClass:\"iconfont icon-postgresql colored_db\"}):(_vm.type == 'DB2')?_c('i',{staticClass:\"iconfont icon-DB2 colored_db\"}):(_vm.type == 'HIVE')?_c('i',{staticClass:\"iconfont icon-hive colored_db\"}):(_vm.type == 'CLICKHOUSE')?_c('i',{staticClass:\"iconfont icon-clickhouse2 colored_db\"}):_c('i',{staticClass:\"iconfont icon-OTHER colored_db\"})])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-b6f86cb4\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/databaseIcon/databaseIcon.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true,\\\"publicPath\\\":\\\"../../\\\"}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-b6f86cb4\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./databaseIcon.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./databaseIcon.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./databaseIcon.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-b6f86cb4\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./databaseIcon.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-b6f86cb4\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/databaseIcon/databaseIcon.vue\n// module id = null\n// module chunks = ","<template>\r\n <div>\r\n <el-card>\r\n <div class=\"connection-list-top\">\r\n <div class=\"left-search-input-group\">\r\n <div class=\"left-search-input\">\r\n <el-input placeholder=\"请输入连接名称关键字搜索\"\r\n v-model=\"keyword\"\r\n @change=\"searchByKeyword\"\r\n :clearable=true\r\n style=\"width:300px\">\r\n </el-input>\r\n </div>\r\n </div>\r\n <div class=\"right-add-button-group\">\r\n <el-button type=\"primary\"\r\n size=\"mini\"\r\n icon=\"el-icon-document-add\"\r\n @click=\"addConnection\">添加</el-button>\r\n </div>\r\n </div>\r\n\r\n <el-table :header-cell-style=\"{background:'#eef1f6',color:'#606266'}\"\r\n :data=\"tableData\"\r\n size=\"small\"\r\n border>\r\n <el-table-column prop=\"id\"\r\n label=\"编号\"\r\n min-width=\"5%\"></el-table-column>\r\n <el-table-column prop=\"name\"\r\n label=\"连接名称\"\r\n show-overflow-tooltip\r\n min-width=\"20%\"></el-table-column>\r\n <el-table-column prop=\"createTime\"\r\n label=\"创建时间\"\r\n min-width=\"18%\"></el-table-column>\r\n <el-table-column label=\"数据库类型\"\r\n show-overflow-tooltip\r\n min-width=\"15%\">\r\n <template slot-scope=\"scope\">\r\n <databaseIcon :type=\"scope.row.type\"></databaseIcon>\r\n <span>{{ scope.row.type }}</span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column prop=\"url\"\r\n label=\"JDBC连接串\"\r\n show-overflow-tooltip\r\n min-width=\"15%\"></el-table-column>\r\n <el-table-column prop=\"username\"\r\n label=\"账号\"\r\n show-overflow-tooltip\r\n min-width=\"10%\"></el-table-column>\r\n <el-table-column label=\"操作\"\r\n min-width=\"35%\">\r\n <template slot-scope=\"scope\">\r\n <el-button-group>\r\n <el-button size=\"small\"\r\n type=\"danger\"\r\n icon=\"el-icon-video-play\"\r\n @click=\"handleTest(scope.$index, scope.row)\"\r\n round>测试</el-button>\r\n <el-button size=\"small\"\r\n type=\"primary\"\r\n icon=\"el-icon-document\"\r\n @click=\"handleMore(scope.$index, scope.row)\"\r\n round>详情</el-button>\r\n <el-button size=\"small\"\r\n type=\"warning\"\r\n icon=\"el-icon-edit\"\r\n @click=\"handleUpdate(scope.$index, scope.row)\"\r\n round>编辑</el-button>\r\n <el-button size=\"small\"\r\n type=\"success\"\r\n icon=\"el-icon-delete\"\r\n @click=\"handleDelete(scope.$index, scope.row)\"\r\n round>删除</el-button>\r\n </el-button-group>\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n <div class=\"page\"\r\n align=\"right\">\r\n <el-pagination @size-change=\"handleSizeChange\"\r\n @current-change=\"handleCurrentChange\"\r\n :current-page=\"currentPage\"\r\n :page-sizes=\"[5, 10, 20, 40]\"\r\n :page-size=\"pageSize\"\r\n layout=\"total, sizes, prev, pager, next, jumper\"\r\n :total=\"totalCount\"></el-pagination>\r\n </div>\r\n\r\n <el-dialog title=\"查看数据库连接信息\"\r\n :visible.sync=\"dialogFormVisible\"\r\n :showClose=\"false\"\r\n :before-close=\"handleClose\">\r\n <el-form :model=\"queryForm\"\r\n size=\"mini\">\r\n <el-form-item label=\"连接名称\"\r\n label-width=\"120px\"\r\n style=\"width:85%\">\r\n <el-input v-model=\"queryForm.name\"\r\n auto-complete=\"off\"\r\n :readonly=true></el-input>\r\n </el-form-item>\r\n <el-form-item label=\"数据库类型\"\r\n label-width=\"120px\"\r\n style=\"width:85%\">\r\n <el-input v-model=\"queryForm.type\"\r\n auto-complete=\"off\"\r\n :readonly=true></el-input>\r\n </el-form-item>\r\n <el-form-item label=\"数据库驱动\"\r\n label-width=\"120px\"\r\n style=\"width:85%\">\r\n <el-input v-model=\"queryForm.driver\"\r\n auto-complete=\"off\"\r\n :readonly=true></el-input>\r\n </el-form-item>\r\n <el-form-item label=\"驱动版本号\"\r\n label-width=\"120px\"\r\n style=\"width:85%\">\r\n <el-input v-model=\"queryForm.version\"\r\n auto-complete=\"off\"\r\n :readonly=true></el-input>\r\n </el-form-item>\r\n <el-form-item label=\"JDBC连接串\"\r\n label-width=\"120px\"\r\n style=\"width:85%\">\r\n <el-input type=\"textarea\"\r\n :rows=\"6\"\r\n :spellcheck=\"false\"\r\n v-model=\"queryForm.url\"\r\n auto-complete=\"off\"\r\n :readonly=true></el-input>\r\n </el-form-item>\r\n <el-form-item label=\"账号名称\"\r\n label-width=\"120px\"\r\n style=\"width:85%\">\r\n <el-input v-model=\"queryForm.username\"\r\n auto-complete=\"off\"\r\n :readonly=true></el-input>\r\n </el-form-item>\r\n <el-form-item label=\"连接密码\"\r\n label-width=\"120px\"\r\n style=\"width:85%\">\r\n <el-input type=\"password\"\r\n v-model=\"queryForm.password\"\r\n auto-complete=\"off\"\r\n :readonly=true></el-input>\r\n </el-form-item>\r\n </el-form>\r\n <div slot=\"footer\"\r\n class=\"dialog-footer\">\r\n <el-button @click=\"dialogFormVisible = false\">关闭</el-button>\r\n </div>\r\n </el-dialog>\r\n\r\n <el-dialog title=\"添加数据源连接信息\"\r\n :visible.sync=\"createFormVisible\"\r\n :showClose=\"false\"\r\n :before-close=\"handleClose\">\r\n <el-form :model=\"createform\"\r\n size=\"mini\"\r\n status-icon\r\n :rules=\"rules\"\r\n ref=\"createform\">\r\n <el-form-item label=\"连接名称\"\r\n label-width=\"120px\"\r\n :required=true\r\n prop=\"name\"\r\n style=\"width:85%\">\r\n <el-input v-model=\"createform.name\"\r\n auto-complete=\"off\"></el-input>\r\n </el-form-item>\r\n <el-form-item label=\"数据库类型\"\r\n label-width=\"120px\"\r\n :required=true\r\n prop=\"type\"\r\n style=\"width:85%\">\r\n <el-select v-model=\"createform.type\"\r\n @change=\"selectChangedDriverVersion\"\r\n placeholder=\"请选择数据库\">\r\n <el-option v-for=\"(item,index) in databaseType\"\r\n :key=\"index\"\r\n :label=\"item.type\"\r\n :value=\"item.type\">\r\n </el-option>\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item label=\"驱动版本\"\r\n label-width=\"120px\"\r\n :required=true\r\n prop=\"version\"\r\n style=\"width:85%\">\r\n <el-select v-model=\"createform.version\"\r\n placeholder=\"请选择版本\">\r\n <el-option v-for=\"(item,index) in connectionDriver\"\r\n :key=\"index\"\r\n :label=\"item.driverVersion\"\r\n :value=\"item.driverVersion\"></el-option>\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item label=\"JDBC连接串\"\r\n label-width=\"120px\"\r\n :required=true\r\n prop=\"url\"\r\n style=\"width:85%\">\r\n <el-alert title=\"样例:\"\r\n type=\"warning\"\r\n :description=\"createform.sample\">\r\n </el-alert>\r\n <el-input type=\"textarea\"\r\n :rows=\"6\"\r\n :spellcheck=\"false\"\r\n placeholder=\"请输入\"\r\n v-model=\"createform.url\"\r\n auto-complete=\"off\">\r\n </el-input>\r\n </el-form-item>\r\n <el-form-item label=\"账号名称\"\r\n label-width=\"120px\"\r\n prop=\"username\"\r\n style=\"width:85%\">\r\n <el-input v-model=\"createform.username\"\r\n auto-complete=\"off\"></el-input>\r\n </el-form-item>\r\n <el-form-item label=\"连接密码\"\r\n label-width=\"120px\"\r\n prop=\"password\"\r\n style=\"width:85%\">\r\n <el-input type=\"password\"\r\n v-model=\"createform.password\"\r\n auto-complete=\"off\"></el-input>\r\n </el-form-item>\r\n </el-form>\r\n <div slot=\"footer\"\r\n class=\"dialog-footer\">\r\n <el-button @click=\"createFormVisible = false\">取 消</el-button>\r\n <el-button type=\"primary\"\r\n @click=\"handleCreate\">确 定</el-button>\r\n </div>\r\n </el-dialog>\r\n\r\n <el-dialog title=\"修改数据源连接信息\"\r\n :visible.sync=\"updateFormVisible\"\r\n :showClose=\"false\"\r\n :before-close=\"handleClose\">\r\n <el-form :model=\"updateform\"\r\n size=\"mini\"\r\n status-icon\r\n :rules=\"rules\"\r\n ref=\"updateform\">\r\n <el-form-item label=\"连接名称\"\r\n label-width=\"120px\"\r\n :required=true\r\n prop=\"name\"\r\n style=\"width:85%\">\r\n <el-input v-model=\"updateform.name\"\r\n auto-complete=\"off\"></el-input>\r\n </el-form-item>\r\n <el-form-item label=\"数据库类型\"\r\n label-width=\"120px\"\r\n :required=true\r\n prop=\"type\"\r\n style=\"width:85%\">\r\n <el-select v-model=\"updateform.type\"\r\n @change=\"selectChangedDriverVersion\"\r\n placeholder=\"请选择数据库\">\r\n <el-option v-for=\"(item,index) in databaseType\"\r\n :key=\"index\"\r\n :label=\"item.type\"\r\n :value=\"item.type\"></el-option>\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item label=\"驱动版本\"\r\n label-width=\"120px\"\r\n :required=true\r\n prop=\"version\"\r\n style=\"width:85%\">\r\n <el-select v-model=\"updateform.version\"\r\n placeholder=\"请选择版本\">\r\n <el-option v-for=\"(item,index) in connectionDriver\"\r\n :key=\"index\"\r\n :label=\"item.driverVersion\"\r\n :value=\"item.driverVersion\"></el-option>\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item label=\"JDBC连接串\"\r\n label-width=\"120px\"\r\n :required=true\r\n prop=\"url\"\r\n style=\"width:85%\">\r\n <el-input type=\"textarea\"\r\n :rows=\"6\"\r\n :spellcheck=\"false\"\r\n v-model=\"updateform.url\"\r\n auto-complete=\"off\"></el-input>\r\n </el-form-item>\r\n <el-form-item label=\"账号名称\"\r\n label-width=\"120px\"\r\n prop=\"username\"\r\n style=\"width:85%\">\r\n <el-input v-model=\"updateform.username\"\r\n auto-complete=\"off\"></el-input>\r\n </el-form-item>\r\n <el-form-item label=\"连接密码\"\r\n label-width=\"120px\"\r\n prop=\"password\"\r\n style=\"width:85%\">\r\n <el-input type=\"password\"\r\n v-model=\"updateform.password\"\r\n auto-complete=\"off\"></el-input>\r\n </el-form-item>\r\n </el-form>\r\n <div slot=\"footer\"\r\n class=\"dialog-footer\">\r\n <el-button @click=\"updateFormVisible = false\">取 消</el-button>\r\n <el-button type=\"primary\"\r\n @click=\"handleSave\">确 定</el-button>\r\n </div>\r\n </el-dialog>\r\n </el-card>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport databaseIcon from \"@/components/databaseIcon/databaseIcon\";\r\n\r\nexport default {\r\n name: \"datasource\",\r\n components: {\r\n databaseIcon\r\n },\r\n data () {\r\n return {\r\n loading: true,\r\n keyword: null,\r\n lists: [],\r\n currentPage: 1,\r\n pageSize: 10,\r\n totalCount: 2,\r\n databaseType: [],\r\n connectionDriver: [],\r\n tableData: [\r\n ],\r\n queryForm: {\r\n title: \"\",\r\n type: \"\",\r\n url: \"\",\r\n diver: \"\",\r\n version: \"\",\r\n username: \"\",\r\n password: \"\"\r\n },\r\n createform: {\r\n title: \"\",\r\n type: \"\",\r\n diver: \"\",\r\n sample: \"\",\r\n url: \"\",\r\n version: \"\",\r\n username: \"\",\r\n password: \"\"\r\n },\r\n updateform: {\r\n id: 0,\r\n title: \"\",\r\n type: \"\",\r\n diver: \"\",\r\n version: \"\",\r\n username: \"\",\r\n password: \"\"\r\n },\r\n rules: {\r\n name: [\r\n {\r\n required: true,\r\n message: \"名称不能为空\",\r\n trigger: \"blur\"\r\n }\r\n ],\r\n type: [\r\n {\r\n required: true,\r\n message: \"数据库类型必须选择\",\r\n trigger: \"change\"\r\n }\r\n ],\r\n version: [\r\n {\r\n required: true,\r\n message: \"驱动版本必须选择\",\r\n trigger: \"change\"\r\n }\r\n ],\r\n url: [\r\n {\r\n required: true,\r\n message: \"Jdbc URL必须提供\",\r\n trigger: \"blur\"\r\n }\r\n ],\r\n username: [\r\n {\r\n required: true,\r\n message: \"连接账号名必须提供\",\r\n trigger: \"blur\"\r\n }\r\n ],\r\n password: [\r\n {\r\n required: true,\r\n message: \"连接密码必须提供\",\r\n trigger: \"blur\"\r\n }\r\n ]\r\n },\r\n dialogFormVisible: false,\r\n createFormVisible: false,\r\n updateFormVisible: false\r\n }\r\n },\r\n methods: {\r\n loadData: function () {\r\n this.$http({\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n url: \"/sqlrest/manager/api/v1/datasource/list\",\r\n data: JSON.stringify({\r\n searchText: this.keyword,\r\n page: this.currentPage,\r\n size: this.pageSize\r\n })\r\n }).then(res => {\r\n if (0 === res.data.code) {\r\n this.currentPage = res.data.pagination.page;\r\n this.pageSize = res.data.pagination.size;\r\n this.totalCount = res.data.pagination.total;\r\n this.tableData = res.data.data;\r\n } else {\r\n alert(\"加载任务列表失败:\" + res.data.message);\r\n }\r\n },\r\n function () {\r\n console.log(\"load connection list failed\");\r\n }\r\n );\r\n },\r\n searchByKeyword: function () {\r\n this.currentPage = 1;\r\n this.loadData();\r\n },\r\n loadDatabaseTypes: function () {\r\n this.databaseType = [];\r\n this.$http({\r\n method: \"GET\",\r\n url: \"/sqlrest/manager/api/v1/datasource/types\"\r\n }).then(\r\n res => {\r\n if (0 === res.data.code) {\r\n this.databaseType = res.data.data;\r\n } else {\r\n alert(\"加载任务列表失败:\" + res.data.message);\r\n }\r\n },\r\n function () {\r\n console.log(\"failed\");\r\n }\r\n );\r\n },\r\n handleClose (done) {\r\n },\r\n handleDelete: function (index, row) {\r\n this.$confirm(\r\n \"此操作将此数据源ID=\" + row.id + \"删除么, 是否继续?\",\r\n \"提示\",\r\n {\r\n confirmButtonText: \"确定\",\r\n cancelButtonText: \"取消\",\r\n type: \"warning\"\r\n }\r\n ).then(() => {\r\n this.$http.delete(\r\n \"/sqlrest/manager/api/v1/datasource/delete/\" + row.id\r\n ).then(res => {\r\n //console.log(res);\r\n if (0 === res.data.code) {\r\n this.loadData();\r\n } else {\r\n alert(\"删除任务失败:\" + res.data.message);\r\n }\r\n });\r\n });\r\n },\r\n handleMore: function (index, row) {\r\n this.dialogFormVisible = true;\r\n this.queryForm = row;\r\n },\r\n handleTest: function (index, row) {\r\n this.$http.get(\r\n \"/sqlrest/manager/api/v1/datasource/test/\" + row.id\r\n ).then(res => {\r\n //console.log(res);\r\n if (0 === res.data.code) {\r\n alert(\"测试连接成功!\");\r\n } else {\r\n alert(\"测试连接失败,\" + res.data.message);\r\n }\r\n });\r\n },\r\n addConnection: function () {\r\n this.createFormVisible = true;\r\n this.createform = {};\r\n },\r\n handleCreate: function () {\r\n let driverClass = \"\";\r\n if (this.databaseType.length > 0) {\r\n for (let i = 0; i < this.databaseType.length; i++) {\r\n //console.log(this.databaseType[i])\r\n if (this.databaseType[i].type == this.createform.type) {\r\n driverClass = this.databaseType[i].driver;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n this.$refs['createform'].validate(valid => {\r\n if (valid) {\r\n this.$http({\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n url: \"/sqlrest/manager/api/v1/datasource/create\",\r\n data: JSON.stringify({\r\n name: this.createform.name,\r\n type: this.createform.type,\r\n version: this.createform.version,\r\n driver: driverClass,\r\n url: this.createform.url,\r\n username: this.createform.username,\r\n password: this.createform.password\r\n })\r\n }).then(res => {\r\n if (0 === res.data.code) {\r\n this.createFormVisible = false;\r\n this.$message(\"添加连接信息成功\");\r\n this.createform = {};\r\n this.loadData();\r\n } else {\r\n alert(\"添加连接信息失败:\" + res.data.message);\r\n }\r\n });\r\n } else {\r\n alert(\"请检查输入\");\r\n }\r\n });\r\n },\r\n selectChangedDriverVersion: function (value) {\r\n this.connectionDriver = [];\r\n this.$http.get(\r\n \"/sqlrest/manager/api/v1/datasource/\" + value + \"/drivers\"\r\n ).then(res => {\r\n if (0 === res.data.code) {\r\n this.connectionDriver = res.data.data;\r\n let varDatabaseType = this.databaseType.find(\r\n (item) => {\r\n return item.type === value;\r\n });\r\n if (varDatabaseType) {\r\n this.createform.sample = varDatabaseType.sample;\r\n }\r\n } else {\r\n this.$message.error(\"查询数据库可用的驱动版本失败,\" + res.data.message);\r\n this.connectionDriver = [];\r\n }\r\n });\r\n },\r\n handleUpdate: function (index, row) {\r\n this.updateform = JSON.parse(JSON.stringify(row));\r\n this.$http.get(\r\n \"/sqlrest/manager/api/v1/datasource/\" + this.updateform.type + \"/drivers\"\r\n ).then(res => {\r\n if (0 === res.data.code) {\r\n this.connectionDriver = res.data.data;\r\n } else {\r\n this.$message.error(\"查询数据库可用的驱动版本失败,\" + res.data.message);\r\n this.connectionDriver = [];\r\n }\r\n });\r\n this.updateFormVisible = true;\r\n },\r\n handleSave: function () {\r\n let driverClass = \"\";\r\n if (this.databaseType.length > 0) {\r\n for (let i = 0; i < this.databaseType.length; i++) {\r\n //console.log(this.databaseType[i])\r\n if (this.databaseType[i].type == this.updateform.type) {\r\n driverClass = this.databaseType[i].driver;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n this.$refs['updateform'].validate(valid => {\r\n if (valid) {\r\n this.$http({\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n url: \"/sqlrest/manager/api/v1/datasource/update\",\r\n data: JSON.stringify({\r\n id: this.updateform.id,\r\n name: this.updateform.name,\r\n type: this.updateform.type,\r\n version: this.updateform.version,\r\n driver: driverClass,\r\n url: this.updateform.url,\r\n username: this.updateform.username,\r\n password: this.updateform.password\r\n })\r\n }).then(res => {\r\n if (0 === res.data.code) {\r\n this.updateFormVisible = false;\r\n this.$message(\"修改连接信息成功\");\r\n this.loadData();\r\n this.updateform = {};\r\n } else {\r\n alert(\"修改连接信息失败:\" + res.data.message);\r\n }\r\n });\r\n } else {\r\n alert(\"请检查输入\");\r\n }\r\n });\r\n },\r\n handleSizeChange: function (pageSize) {\r\n this.loading = true;\r\n this.pageSize = pageSize;\r\n this.loadData();\r\n },\r\n\r\n handleCurrentChange: function (currentPage) {\r\n this.loading = true;\r\n this.currentPage = currentPage;\r\n this.loadData();\r\n }\r\n },\r\n created () {\r\n this.loadDatabaseTypes();\r\n this.loadData();\r\n }\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.el-table {\r\n width: 100%;\r\n height: 100%;\r\n}\r\n.el-card,\r\n.el-message {\r\n width: 100%;\r\n height: 100%;\r\n overflow: auto;\r\n}\r\n.connection-list-top {\r\n width: 100%;\r\n display: flex;\r\n justify-content: space-between;\r\n}\r\n\r\n.left-search-input-group {\r\n width: calc(100% - 100px);\r\n margin-right: auto;\r\n display: flex;\r\n justify-content: space-between;\r\n}\r\n.left-search-input {\r\n width: 300px;\r\n margin-right: auto;\r\n margin: 10px 5px;\r\n}\r\n.right-add-button-group {\r\n width: 100px;\r\n margin-left: auto;\r\n margin: 10px 5px;\r\n}\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/views/datasource/list.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('el-card',[_c('div',{staticClass:\"connection-list-top\"},[_c('div',{staticClass:\"left-search-input-group\"},[_c('div',{staticClass:\"left-search-input\"},[_c('el-input',{staticStyle:{\"width\":\"300px\"},attrs:{\"placeholder\":\"请输入连接名称关键字搜索\",\"clearable\":true},on:{\"change\":_vm.searchByKeyword},model:{value:(_vm.keyword),callback:function ($$v) {_vm.keyword=$$v},expression:\"keyword\"}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"right-add-button-group\"},[_c('el-button',{attrs:{\"type\":\"primary\",\"size\":\"mini\",\"icon\":\"el-icon-document-add\"},on:{\"click\":_vm.addConnection}},[_vm._v(\"添加\")])],1)]),_vm._v(\" \"),_c('el-table',{attrs:{\"header-cell-style\":{background:'#eef1f6',color:'#606266'},\"data\":_vm.tableData,\"size\":\"small\",\"border\":\"\"}},[_c('el-table-column',{attrs:{\"prop\":\"id\",\"label\":\"编号\",\"min-width\":\"5%\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"name\",\"label\":\"连接名称\",\"show-overflow-tooltip\":\"\",\"min-width\":\"20%\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"createTime\",\"label\":\"创建时间\",\"min-width\":\"18%\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":\"数据库类型\",\"show-overflow-tooltip\":\"\",\"min-width\":\"15%\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('databaseIcon',{attrs:{\"type\":scope.row.type}}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(scope.row.type))])]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"url\",\"label\":\"JDBC连接串\",\"show-overflow-tooltip\":\"\",\"min-width\":\"15%\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"username\",\"label\":\"账号\",\"show-overflow-tooltip\":\"\",\"min-width\":\"10%\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":\"操作\",\"min-width\":\"35%\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-button-group',[_c('el-button',{attrs:{\"size\":\"small\",\"type\":\"danger\",\"icon\":\"el-icon-video-play\",\"round\":\"\"},on:{\"click\":function($event){return _vm.handleTest(scope.$index, scope.row)}}},[_vm._v(\"测试\")]),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":\"small\",\"type\":\"primary\",\"icon\":\"el-icon-document\",\"round\":\"\"},on:{\"click\":function($event){return _vm.handleMore(scope.$index, scope.row)}}},[_vm._v(\"详情\")]),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":\"small\",\"type\":\"warning\",\"icon\":\"el-icon-edit\",\"round\":\"\"},on:{\"click\":function($event){return _vm.handleUpdate(scope.$index, scope.row)}}},[_vm._v(\"编辑\")]),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":\"small\",\"type\":\"success\",\"icon\":\"el-icon-delete\",\"round\":\"\"},on:{\"click\":function($event){return _vm.handleDelete(scope.$index, scope.row)}}},[_vm._v(\"删除\")])],1)]}}])})],1),_vm._v(\" \"),_c('div',{staticClass:\"page\",attrs:{\"align\":\"right\"}},[_c('el-pagination',{attrs:{\"current-page\":_vm.currentPage,\"page-sizes\":[5, 10, 20, 40],\"page-size\":_vm.pageSize,\"layout\":\"total, sizes, prev, pager, next, jumper\",\"total\":_vm.totalCount},on:{\"size-change\":_vm.handleSizeChange,\"current-change\":_vm.handleCurrentChange}})],1),_vm._v(\" \"),_c('el-dialog',{attrs:{\"title\":\"查看数据库连接信息\",\"visible\":_vm.dialogFormVisible,\"showClose\":false,\"before-close\":_vm.handleClose},on:{\"update:visible\":function($event){_vm.dialogFormVisible=$event}}},[_c('el-form',{attrs:{\"model\":_vm.queryForm,\"size\":\"mini\"}},[_c('el-form-item',{staticStyle:{\"width\":\"85%\"},attrs:{\"label\":\"连接名称\",\"label-width\":\"120px\"}},[_c('el-input',{attrs:{\"auto-complete\":\"off\",\"readonly\":true},model:{value:(_vm.queryForm.name),callback:function ($$v) {_vm.$set(_vm.queryForm, \"name\", $$v)},expression:\"queryForm.name\"}})],1),_vm._v(\" \"),_c('el-form-item',{staticStyle:{\"width\":\"85%\"},attrs:{\"label\":\"数据库类型\",\"label-width\":\"120px\"}},[_c('el-input',{attrs:{\"auto-complete\":\"off\",\"readonly\":true},model:{value:(_vm.queryForm.type),callback:function ($$v) {_vm.$set(_vm.queryForm, \"type\", $$v)},expression:\"queryForm.type\"}})],1),_vm._v(\" \"),_c('el-form-item',{staticStyle:{\"width\":\"85%\"},attrs:{\"label\":\"数据库驱动\",\"label-width\":\"120px\"}},[_c('el-input',{attrs:{\"auto-complete\":\"off\",\"readonly\":true},model:{value:(_vm.queryForm.driver),callback:function ($$v) {_vm.$set(_vm.queryForm, \"driver\", $$v)},expression:\"queryForm.driver\"}})],1),_vm._v(\" \"),_c('el-form-item',{staticStyle:{\"width\":\"85%\"},attrs:{\"label\":\"驱动版本号\",\"label-width\":\"120px\"}},[_c('el-input',{attrs:{\"auto-complete\":\"off\",\"readonly\":true},model:{value:(_vm.queryForm.version),callback:function ($$v) {_vm.$set(_vm.queryForm, \"version\", $$v)},expression:\"queryForm.version\"}})],1),_vm._v(\" \"),_c('el-form-item',{staticStyle:{\"width\":\"85%\"},attrs:{\"label\":\"JDBC连接串\",\"label-width\":\"120px\"}},[_c('el-input',{attrs:{\"type\":\"textarea\",\"rows\":6,\"spellcheck\":false,\"auto-complete\":\"off\",\"readonly\":true},model:{value:(_vm.queryForm.url),callback:function ($$v) {_vm.$set(_vm.queryForm, \"url\", $$v)},expression:\"queryForm.url\"}})],1),_vm._v(\" \"),_c('el-form-item',{staticStyle:{\"width\":\"85%\"},attrs:{\"label\":\"账号名称\",\"label-width\":\"120px\"}},[_c('el-input',{attrs:{\"auto-complete\":\"off\",\"readonly\":true},model:{value:(_vm.queryForm.username),callback:function ($$v) {_vm.$set(_vm.queryForm, \"username\", $$v)},expression:\"queryForm.username\"}})],1),_vm._v(\" \"),_c('el-form-item',{staticStyle:{\"width\":\"85%\"},attrs:{\"label\":\"连接密码\",\"label-width\":\"120px\"}},[_c('el-input',{attrs:{\"type\":\"password\",\"auto-complete\":\"off\",\"readonly\":true},model:{value:(_vm.queryForm.password),callback:function ($$v) {_vm.$set(_vm.queryForm, \"password\", $$v)},expression:\"queryForm.password\"}})],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":function($event){_vm.dialogFormVisible = false}}},[_vm._v(\"关闭\")])],1)],1),_vm._v(\" \"),_c('el-dialog',{attrs:{\"title\":\"添加数据源连接信息\",\"visible\":_vm.createFormVisible,\"showClose\":false,\"before-close\":_vm.handleClose},on:{\"update:visible\":function($event){_vm.createFormVisible=$event}}},[_c('el-form',{ref:\"createform\",attrs:{\"model\":_vm.createform,\"size\":\"mini\",\"status-icon\":\"\",\"rules\":_vm.rules}},[_c('el-form-item',{staticStyle:{\"width\":\"85%\"},attrs:{\"label\":\"连接名称\",\"label-width\":\"120px\",\"required\":true,\"prop\":\"name\"}},[_c('el-input',{attrs:{\"auto-complete\":\"off\"},model:{value:(_vm.createform.name),callback:function ($$v) {_vm.$set(_vm.createform, \"name\", $$v)},expression:\"createform.name\"}})],1),_vm._v(\" \"),_c('el-form-item',{staticStyle:{\"width\":\"85%\"},attrs:{\"label\":\"数据库类型\",\"label-width\":\"120px\",\"required\":true,\"prop\":\"type\"}},[_c('el-select',{attrs:{\"placeholder\":\"请选择数据库\"},on:{\"change\":_vm.selectChangedDriverVersion},model:{value:(_vm.createform.type),callback:function ($$v) {_vm.$set(_vm.createform, \"type\", $$v)},expression:\"createform.type\"}},_vm._l((_vm.databaseType),function(item,index){return _c('el-option',{key:index,attrs:{\"label\":item.type,\"value\":item.type}})}),1)],1),_vm._v(\" \"),_c('el-form-item',{staticStyle:{\"width\":\"85%\"},attrs:{\"label\":\"驱动版本\",\"label-width\":\"120px\",\"required\":true,\"prop\":\"version\"}},[_c('el-select',{attrs:{\"placeholder\":\"请选择版本\"},model:{value:(_vm.createform.version),callback:function ($$v) {_vm.$set(_vm.createform, \"version\", $$v)},expression:\"createform.version\"}},_vm._l((_vm.connectionDriver),function(item,index){return _c('el-option',{key:index,attrs:{\"label\":item.driverVersion,\"value\":item.driverVersion}})}),1)],1),_vm._v(\" \"),_c('el-form-item',{staticStyle:{\"width\":\"85%\"},attrs:{\"label\":\"JDBC连接串\",\"label-width\":\"120px\",\"required\":true,\"prop\":\"url\"}},[_c('el-alert',{attrs:{\"title\":\"样例:\",\"type\":\"warning\",\"description\":_vm.createform.sample}}),_vm._v(\" \"),_c('el-input',{attrs:{\"type\":\"textarea\",\"rows\":6,\"spellcheck\":false,\"placeholder\":\"请输入\",\"auto-complete\":\"off\"},model:{value:(_vm.createform.url),callback:function ($$v) {_vm.$set(_vm.createform, \"url\", $$v)},expression:\"createform.url\"}})],1),_vm._v(\" \"),_c('el-form-item',{staticStyle:{\"width\":\"85%\"},attrs:{\"label\":\"账号名称\",\"label-width\":\"120px\",\"prop\":\"username\"}},[_c('el-input',{attrs:{\"auto-complete\":\"off\"},model:{value:(_vm.createform.username),callback:function ($$v) {_vm.$set(_vm.createform, \"username\", $$v)},expression:\"createform.username\"}})],1),_vm._v(\" \"),_c('el-form-item',{staticStyle:{\"width\":\"85%\"},attrs:{\"label\":\"连接密码\",\"label-width\":\"120px\",\"prop\":\"password\"}},[_c('el-input',{attrs:{\"type\":\"password\",\"auto-complete\":\"off\"},model:{value:(_vm.createform.password),callback:function ($$v) {_vm.$set(_vm.createform, \"password\", $$v)},expression:\"createform.password\"}})],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":function($event){_vm.createFormVisible = false}}},[_vm._v(\"取 消\")]),_vm._v(\" \"),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.handleCreate}},[_vm._v(\"确 定\")])],1)],1),_vm._v(\" \"),_c('el-dialog',{attrs:{\"title\":\"修改数据源连接信息\",\"visible\":_vm.updateFormVisible,\"showClose\":false,\"before-close\":_vm.handleClose},on:{\"update:visible\":function($event){_vm.updateFormVisible=$event}}},[_c('el-form',{ref:\"updateform\",attrs:{\"model\":_vm.updateform,\"size\":\"mini\",\"status-icon\":\"\",\"rules\":_vm.rules}},[_c('el-form-item',{staticStyle:{\"width\":\"85%\"},attrs:{\"label\":\"连接名称\",\"label-width\":\"120px\",\"required\":true,\"prop\":\"name\"}},[_c('el-input',{attrs:{\"auto-complete\":\"off\"},model:{value:(_vm.updateform.name),callback:function ($$v) {_vm.$set(_vm.updateform, \"name\", $$v)},expression:\"updateform.name\"}})],1),_vm._v(\" \"),_c('el-form-item',{staticStyle:{\"width\":\"85%\"},attrs:{\"label\":\"数据库类型\",\"label-width\":\"120px\",\"required\":true,\"prop\":\"type\"}},[_c('el-select',{attrs:{\"placeholder\":\"请选择数据库\"},on:{\"change\":_vm.selectChangedDriverVersion},model:{value:(_vm.updateform.type),callback:function ($$v) {_vm.$set(_vm.updateform, \"type\", $$v)},expression:\"updateform.type\"}},_vm._l((_vm.databaseType),function(item,index){return _c('el-option',{key:index,attrs:{\"label\":item.type,\"value\":item.type}})}),1)],1),_vm._v(\" \"),_c('el-form-item',{staticStyle:{\"width\":\"85%\"},attrs:{\"label\":\"驱动版本\",\"label-width\":\"120px\",\"required\":true,\"prop\":\"version\"}},[_c('el-select',{attrs:{\"placeholder\":\"请选择版本\"},model:{value:(_vm.updateform.version),callback:function ($$v) {_vm.$set(_vm.updateform, \"version\", $$v)},expression:\"updateform.version\"}},_vm._l((_vm.connectionDriver),function(item,index){return _c('el-option',{key:index,attrs:{\"label\":item.driverVersion,\"value\":item.driverVersion}})}),1)],1),_vm._v(\" \"),_c('el-form-item',{staticStyle:{\"width\":\"85%\"},attrs:{\"label\":\"JDBC连接串\",\"label-width\":\"120px\",\"required\":true,\"prop\":\"url\"}},[_c('el-input',{attrs:{\"type\":\"textarea\",\"rows\":6,\"spellcheck\":false,\"auto-complete\":\"off\"},model:{value:(_vm.updateform.url),callback:function ($$v) {_vm.$set(_vm.updateform, \"url\", $$v)},expression:\"updateform.url\"}})],1),_vm._v(\" \"),_c('el-form-item',{staticStyle:{\"width\":\"85%\"},attrs:{\"label\":\"账号名称\",\"label-width\":\"120px\",\"prop\":\"username\"}},[_c('el-input',{attrs:{\"auto-complete\":\"off\"},model:{value:(_vm.updateform.username),callback:function ($$v) {_vm.$set(_vm.updateform, \"username\", $$v)},expression:\"updateform.username\"}})],1),_vm._v(\" \"),_c('el-form-item',{staticStyle:{\"width\":\"85%\"},attrs:{\"label\":\"连接密码\",\"label-width\":\"120px\",\"prop\":\"password\"}},[_c('el-input',{attrs:{\"type\":\"password\",\"auto-complete\":\"off\"},model:{value:(_vm.updateform.password),callback:function ($$v) {_vm.$set(_vm.updateform, \"password\", $$v)},expression:\"updateform.password\"}})],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":function($event){_vm.updateFormVisible = false}}},[_vm._v(\"取 消\")]),_vm._v(\" \"),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.handleSave}},[_vm._v(\"确 定\")])],1)],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-3df7bf9c\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/views/datasource/list.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true,\\\"publicPath\\\":\\\"../../\\\"}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-3df7bf9c\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./list.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./list.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./list.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-3df7bf9c\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./list.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-3df7bf9c\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/views/datasource/list.vue\n// module id = null\n// module chunks = "],"sourceRoot":""}
\ No newline at end of file
webpackJsonp([5],{"8JWE":function(e,t){},EWRK:function(e,t,a){"use strict";var r={render:function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticStyle:{display:"inline-block"}},["MYSQL"==e.type?a("i",{staticClass:"iconfont icon-my-SQL colored_db"}):"MARIADB"==e.type?a("i",{staticClass:"iconfont icon-MariaDB-chanpinicon colored_db"}):"ORACLE"==e.type?a("i",{staticClass:"iconfont icon-oracle-copy-png colored_db"}):"SQLSERVER"==e.type?a("i",{staticClass:"iconfont icon-SQLServer colored_db"}):"POSTGRESQL"==e.type?a("i",{staticClass:"iconfont icon-postgresql colored_db"}):"DB2"==e.type?a("i",{staticClass:"iconfont icon-DB2 colored_db"}):"HIVE"==e.type?a("i",{staticClass:"iconfont icon-hive colored_db"}):"CLICKHOUSE"==e.type?a("i",{staticClass:"iconfont icon-clickhouse2 colored_db"}):a("i",{staticClass:"iconfont icon-OTHER colored_db"})])},staticRenderFns:[]};var o=a("VU/8")({name:"databaseIcon",props:["type"]},r,!1,function(e){a("8JWE")},"data-v-b6f86cb4",null);t.a=o.exports},U0nr:function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a("mvHQ"),o=a.n(r),l={name:"datasource",components:{databaseIcon:a("EWRK").a},data:function(){return{loading:!0,keyword:null,lists:[],currentPage:1,pageSize:10,totalCount:2,databaseType:[],connectionDriver:[],tableData:[],queryForm:{title:"",type:"",url:"",diver:"",version:"",username:"",password:""},createform:{title:"",type:"",diver:"",sample:"",url:"",version:"",username:"",password:""},updateform:{id:0,title:"",type:"",diver:"",version:"",username:"",password:""},rules:{name:[{required:!0,message:"名称不能为空",trigger:"blur"}],type:[{required:!0,message:"数据库类型必须选择",trigger:"change"}],version:[{required:!0,message:"驱动版本必须选择",trigger:"change"}],url:[{required:!0,message:"Jdbc URL必须提供",trigger:"blur"}],username:[{required:!0,message:"连接账号名必须提供",trigger:"blur"}],password:[{required:!0,message:"连接密码必须提供",trigger:"blur"}]},dialogFormVisible:!1,createFormVisible:!1,updateFormVisible:!1}},methods:{loadData:function(){var e=this;this.$http({method:"POST",headers:{"Content-Type":"application/json"},url:"/sqlrest/manager/api/v1/datasource/list",data:o()({searchText:this.keyword,page:this.currentPage,size:this.pageSize})}).then(function(t){0===t.data.code?(e.currentPage=t.data.pagination.page,e.pageSize=t.data.pagination.size,e.totalCount=t.data.pagination.total,e.tableData=t.data.data):alert("加载任务列表失败:"+t.data.message)},function(){console.log("load connection list failed")})},searchByKeyword:function(){this.currentPage=1,this.loadData()},loadDatabaseTypes:function(){var e=this;this.databaseType=[],this.$http({method:"GET",url:"/sqlrest/manager/api/v1/datasource/types"}).then(function(t){0===t.data.code?e.databaseType=t.data.data:alert("加载任务列表失败:"+t.data.message)},function(){console.log("failed")})},handleClose:function(e){},handleDelete:function(e,t){var a=this;this.$confirm("此操作将此数据源ID="+t.id+"删除么, 是否继续?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(function(){a.$http.delete("/sqlrest/manager/api/v1/datasource/delete/"+t.id).then(function(e){0===e.data.code?a.loadData():alert("删除任务失败:"+e.data.message)})})},handleMore:function(e,t){this.dialogFormVisible=!0,this.queryForm=t},handleTest:function(e,t){var a=this;this.$http.get("/sqlrest/manager/api/v1/datasource/test/"+t.id).then(function(e){0===e.data.code?a.$alert("测试连接成功!","提示信息",{confirmButtonText:"确定",type:"success"}):a.$alert(e.data.message,"错误信息",{confirmButtonText:"确定",type:"error"})})},addConnection:function(){this.createFormVisible=!0,this.createform={}},handleCreate:function(){var e=this,t="";if(this.databaseType.length>0)for(var a=0;a<this.databaseType.length;a++)if(this.databaseType[a].type==this.createform.type){t=this.databaseType[a].driver;break}this.$refs.createform.validate(function(a){a?e.$http({method:"POST",headers:{"Content-Type":"application/json"},url:"/sqlrest/manager/api/v1/datasource/create",data:o()({name:e.createform.name,type:e.createform.type,version:e.createform.version,driver:t,url:e.createform.url,username:e.createform.username,password:e.createform.password})}).then(function(t){0===t.data.code?(e.createFormVisible=!1,e.$message("添加连接信息成功"),e.createform={},e.loadData()):e.$alert(t.data.message,"添加连接信息失败",{confirmButtonText:"确定",type:"error"})}):e.$alert("请检查输入","提示信息",{confirmButtonText:"确定",type:"info"})})},selectChangedDriverVersion:function(e){var t=this;this.connectionDriver=[],this.$http.get("/sqlrest/manager/api/v1/datasource/"+e+"/drivers").then(function(a){if(0===a.data.code){t.connectionDriver=a.data.data;var r=t.databaseType.find(function(t){return t.type===e});r&&(t.createform.sample=r.sample)}else t.$message.error("查询数据库可用的驱动版本失败,"+a.data.message),t.connectionDriver=[]})},handleUpdate:function(e,t){var a=this;this.updateform=JSON.parse(o()(t)),this.$http.get("/sqlrest/manager/api/v1/datasource/"+this.updateform.type+"/drivers").then(function(e){0===e.data.code?a.connectionDriver=e.data.data:(a.$message.error("查询数据库可用的驱动版本失败,"+e.data.message),a.connectionDriver=[])}),this.updateFormVisible=!0},handleSave:function(){var e=this,t="";if(this.databaseType.length>0)for(var a=0;a<this.databaseType.length;a++)if(this.databaseType[a].type==this.updateform.type){t=this.databaseType[a].driver;break}this.$refs.updateform.validate(function(a){a?e.$http({method:"POST",headers:{"Content-Type":"application/json"},url:"/sqlrest/manager/api/v1/datasource/update",data:o()({id:e.updateform.id,name:e.updateform.name,type:e.updateform.type,version:e.updateform.version,driver:t,url:e.updateform.url,username:e.updateform.username,password:e.updateform.password})}).then(function(t){0===t.data.code?(e.updateFormVisible=!1,e.$message("修改连接信息成功"),e.loadData(),e.updateform={}):e.$alert(t.data.message,"修改连接信息失败",{confirmButtonText:"确定",type:"error"})}):e.$alert("请检查输入","提示信息",{confirmButtonText:"确定",type:"info"})})},handleSizeChange:function(e){this.loading=!0,this.pageSize=e,this.loadData()},handleCurrentChange:function(e){this.loading=!0,this.currentPage=e,this.loadData()}},created:function(){this.loadDatabaseTypes(),this.loadData()}},i={render:function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",[a("el-card",[a("div",{staticClass:"connection-list-top"},[a("div",{staticClass:"left-search-input-group"},[a("div",{staticClass:"left-search-input"},[a("el-input",{staticStyle:{width:"300px"},attrs:{placeholder:"请输入连接名称关键字搜索",clearable:!0},on:{change:e.searchByKeyword},model:{value:e.keyword,callback:function(t){e.keyword=t},expression:"keyword"}})],1)]),e._v(" "),a("div",{staticClass:"right-add-button-group"},[a("el-button",{attrs:{type:"primary",size:"mini",icon:"el-icon-document-add"},on:{click:e.addConnection}},[e._v("添加")])],1)]),e._v(" "),a("el-table",{attrs:{"header-cell-style":{background:"#eef1f6",color:"#606266"},data:e.tableData,size:"small",border:""}},[a("el-table-column",{attrs:{prop:"id",label:"编号","min-width":"5%"}}),e._v(" "),a("el-table-column",{attrs:{prop:"name",label:"连接名称","show-overflow-tooltip":"","min-width":"20%"}}),e._v(" "),a("el-table-column",{attrs:{prop:"createTime",label:"创建时间","min-width":"18%"}}),e._v(" "),a("el-table-column",{attrs:{label:"数据库类型","show-overflow-tooltip":"","min-width":"15%"},scopedSlots:e._u([{key:"default",fn:function(t){return[a("databaseIcon",{attrs:{type:t.row.type}}),e._v(" "),a("span",[e._v(e._s(t.row.type))])]}}])}),e._v(" "),a("el-table-column",{attrs:{prop:"url",label:"JDBC连接串","show-overflow-tooltip":"","min-width":"15%"}}),e._v(" "),a("el-table-column",{attrs:{prop:"username",label:"账号","show-overflow-tooltip":"","min-width":"10%"}}),e._v(" "),a("el-table-column",{attrs:{label:"操作","min-width":"35%"},scopedSlots:e._u([{key:"default",fn:function(t){return[a("el-button-group",[a("el-button",{attrs:{size:"small",type:"danger",icon:"el-icon-video-play",round:""},on:{click:function(a){return e.handleTest(t.$index,t.row)}}},[e._v("测试")]),e._v(" "),a("el-button",{attrs:{size:"small",type:"primary",icon:"el-icon-document",round:""},on:{click:function(a){return e.handleMore(t.$index,t.row)}}},[e._v("详情")]),e._v(" "),a("el-button",{attrs:{size:"small",type:"warning",icon:"el-icon-edit",round:""},on:{click:function(a){return e.handleUpdate(t.$index,t.row)}}},[e._v("编辑")]),e._v(" "),a("el-button",{attrs:{size:"small",type:"success",icon:"el-icon-delete",round:""},on:{click:function(a){return e.handleDelete(t.$index,t.row)}}},[e._v("删除")])],1)]}}])})],1),e._v(" "),a("div",{staticClass:"page",attrs:{align:"right"}},[a("el-pagination",{attrs:{"current-page":e.currentPage,"page-sizes":[5,10,20,40],"page-size":e.pageSize,layout:"total, sizes, prev, pager, next, jumper",total:e.totalCount},on:{"size-change":e.handleSizeChange,"current-change":e.handleCurrentChange}})],1),e._v(" "),a("el-dialog",{attrs:{title:"查看数据库连接信息",visible:e.dialogFormVisible,showClose:!1,"before-close":e.handleClose},on:{"update:visible":function(t){e.dialogFormVisible=t}}},[a("el-form",{attrs:{model:e.queryForm,size:"mini"}},[a("el-form-item",{staticStyle:{width:"85%"},attrs:{label:"连接名称","label-width":"120px"}},[a("el-input",{attrs:{"auto-complete":"off",readonly:!0},model:{value:e.queryForm.name,callback:function(t){e.$set(e.queryForm,"name",t)},expression:"queryForm.name"}})],1),e._v(" "),a("el-form-item",{staticStyle:{width:"85%"},attrs:{label:"数据库类型","label-width":"120px"}},[a("el-input",{attrs:{"auto-complete":"off",readonly:!0},model:{value:e.queryForm.type,callback:function(t){e.$set(e.queryForm,"type",t)},expression:"queryForm.type"}})],1),e._v(" "),a("el-form-item",{staticStyle:{width:"85%"},attrs:{label:"数据库驱动","label-width":"120px"}},[a("el-input",{attrs:{"auto-complete":"off",readonly:!0},model:{value:e.queryForm.driver,callback:function(t){e.$set(e.queryForm,"driver",t)},expression:"queryForm.driver"}})],1),e._v(" "),a("el-form-item",{staticStyle:{width:"85%"},attrs:{label:"驱动版本号","label-width":"120px"}},[a("el-input",{attrs:{"auto-complete":"off",readonly:!0},model:{value:e.queryForm.version,callback:function(t){e.$set(e.queryForm,"version",t)},expression:"queryForm.version"}})],1),e._v(" "),a("el-form-item",{staticStyle:{width:"85%"},attrs:{label:"JDBC连接串","label-width":"120px"}},[a("el-input",{attrs:{type:"textarea",rows:6,spellcheck:!1,"auto-complete":"off",readonly:!0},model:{value:e.queryForm.url,callback:function(t){e.$set(e.queryForm,"url",t)},expression:"queryForm.url"}})],1),e._v(" "),a("el-form-item",{staticStyle:{width:"85%"},attrs:{label:"账号名称","label-width":"120px"}},[a("el-input",{attrs:{"auto-complete":"off",readonly:!0},model:{value:e.queryForm.username,callback:function(t){e.$set(e.queryForm,"username",t)},expression:"queryForm.username"}})],1),e._v(" "),a("el-form-item",{staticStyle:{width:"85%"},attrs:{label:"连接密码","label-width":"120px"}},[a("el-input",{attrs:{type:"password","auto-complete":"off",readonly:!0},model:{value:e.queryForm.password,callback:function(t){e.$set(e.queryForm,"password",t)},expression:"queryForm.password"}})],1)],1),e._v(" "),a("div",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[a("el-button",{on:{click:function(t){e.dialogFormVisible=!1}}},[e._v("关闭")])],1)],1),e._v(" "),a("el-dialog",{attrs:{title:"添加数据源连接信息",visible:e.createFormVisible,showClose:!1,"before-close":e.handleClose},on:{"update:visible":function(t){e.createFormVisible=t}}},[a("el-form",{ref:"createform",attrs:{model:e.createform,size:"mini","status-icon":"",rules:e.rules}},[a("el-form-item",{staticStyle:{width:"85%"},attrs:{label:"连接名称","label-width":"120px",required:!0,prop:"name"}},[a("el-input",{attrs:{"auto-complete":"off"},model:{value:e.createform.name,callback:function(t){e.$set(e.createform,"name",t)},expression:"createform.name"}})],1),e._v(" "),a("el-form-item",{staticStyle:{width:"85%"},attrs:{label:"数据库类型","label-width":"120px",required:!0,prop:"type"}},[a("el-select",{attrs:{placeholder:"请选择数据库"},on:{change:e.selectChangedDriverVersion},model:{value:e.createform.type,callback:function(t){e.$set(e.createform,"type",t)},expression:"createform.type"}},e._l(e.databaseType,function(e,t){return a("el-option",{key:t,attrs:{label:e.type,value:e.type}})}),1)],1),e._v(" "),a("el-form-item",{staticStyle:{width:"85%"},attrs:{label:"驱动版本","label-width":"120px",required:!0,prop:"version"}},[a("el-select",{attrs:{placeholder:"请选择版本"},model:{value:e.createform.version,callback:function(t){e.$set(e.createform,"version",t)},expression:"createform.version"}},e._l(e.connectionDriver,function(e,t){return a("el-option",{key:t,attrs:{label:e.driverVersion,value:e.driverVersion}})}),1)],1),e._v(" "),a("el-form-item",{staticStyle:{width:"85%"},attrs:{label:"JDBC连接串","label-width":"120px",required:!0,prop:"url"}},[a("el-alert",{attrs:{title:"样例:",type:"warning",description:e.createform.sample}}),e._v(" "),a("el-input",{attrs:{type:"textarea",rows:6,spellcheck:!1,placeholder:"请输入","auto-complete":"off"},model:{value:e.createform.url,callback:function(t){e.$set(e.createform,"url",t)},expression:"createform.url"}})],1),e._v(" "),a("el-form-item",{staticStyle:{width:"85%"},attrs:{label:"账号名称","label-width":"120px",prop:"username"}},[a("el-input",{attrs:{"auto-complete":"off"},model:{value:e.createform.username,callback:function(t){e.$set(e.createform,"username",t)},expression:"createform.username"}})],1),e._v(" "),a("el-form-item",{staticStyle:{width:"85%"},attrs:{label:"连接密码","label-width":"120px",prop:"password"}},[a("el-input",{attrs:{type:"password","auto-complete":"off"},model:{value:e.createform.password,callback:function(t){e.$set(e.createform,"password",t)},expression:"createform.password"}})],1)],1),e._v(" "),a("div",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[a("el-button",{on:{click:function(t){e.createFormVisible=!1}}},[e._v("取 消")]),e._v(" "),a("el-button",{attrs:{type:"primary"},on:{click:e.handleCreate}},[e._v("确 定")])],1)],1),e._v(" "),a("el-dialog",{attrs:{title:"修改数据源连接信息",visible:e.updateFormVisible,showClose:!1,"before-close":e.handleClose},on:{"update:visible":function(t){e.updateFormVisible=t}}},[a("el-form",{ref:"updateform",attrs:{model:e.updateform,size:"mini","status-icon":"",rules:e.rules}},[a("el-form-item",{staticStyle:{width:"85%"},attrs:{label:"连接名称","label-width":"120px",required:!0,prop:"name"}},[a("el-input",{attrs:{"auto-complete":"off"},model:{value:e.updateform.name,callback:function(t){e.$set(e.updateform,"name",t)},expression:"updateform.name"}})],1),e._v(" "),a("el-form-item",{staticStyle:{width:"85%"},attrs:{label:"数据库类型","label-width":"120px",required:!0,prop:"type"}},[a("el-select",{attrs:{placeholder:"请选择数据库"},on:{change:e.selectChangedDriverVersion},model:{value:e.updateform.type,callback:function(t){e.$set(e.updateform,"type",t)},expression:"updateform.type"}},e._l(e.databaseType,function(e,t){return a("el-option",{key:t,attrs:{label:e.type,value:e.type}})}),1)],1),e._v(" "),a("el-form-item",{staticStyle:{width:"85%"},attrs:{label:"驱动版本","label-width":"120px",required:!0,prop:"version"}},[a("el-select",{attrs:{placeholder:"请选择版本"},model:{value:e.updateform.version,callback:function(t){e.$set(e.updateform,"version",t)},expression:"updateform.version"}},e._l(e.connectionDriver,function(e,t){return a("el-option",{key:t,attrs:{label:e.driverVersion,value:e.driverVersion}})}),1)],1),e._v(" "),a("el-form-item",{staticStyle:{width:"85%"},attrs:{label:"JDBC连接串","label-width":"120px",required:!0,prop:"url"}},[a("el-input",{attrs:{type:"textarea",rows:6,spellcheck:!1,"auto-complete":"off"},model:{value:e.updateform.url,callback:function(t){e.$set(e.updateform,"url",t)},expression:"updateform.url"}})],1),e._v(" "),a("el-form-item",{staticStyle:{width:"85%"},attrs:{label:"账号名称","label-width":"120px",prop:"username"}},[a("el-input",{attrs:{"auto-complete":"off"},model:{value:e.updateform.username,callback:function(t){e.$set(e.updateform,"username",t)},expression:"updateform.username"}})],1),e._v(" "),a("el-form-item",{staticStyle:{width:"85%"},attrs:{label:"连接密码","label-width":"120px",prop:"password"}},[a("el-input",{attrs:{type:"password","auto-complete":"off"},model:{value:e.updateform.password,callback:function(t){e.$set(e.updateform,"password",t)},expression:"updateform.password"}})],1)],1),e._v(" "),a("div",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[a("el-button",{on:{click:function(t){e.updateFormVisible=!1}}},[e._v("取 消")]),e._v(" "),a("el-button",{attrs:{type:"primary"},on:{click:e.handleSave}},[e._v("确 定")])],1)],1)],1)],1)},staticRenderFns:[]};var s=a("VU/8")(l,i,!1,function(e){a("s4Qd")},"data-v-5a65ae83",null);t.default=s.exports},s4Qd:function(e,t){}});
//# sourceMappingURL=5.8fcbb35b45285576e78f.js.map
\ No newline at end of file
{"version":3,"sources":["webpack:///src/components/databaseIcon/databaseIcon.vue","webpack:///./src/components/databaseIcon/databaseIcon.vue?7e80","webpack:///./src/components/databaseIcon/databaseIcon.vue","webpack:///src/views/datasource/list.vue","webpack:///./src/views/datasource/list.vue?749c","webpack:///./src/views/datasource/list.vue"],"names":["databaseIcon_databaseIcon","render","_vm","this","_h","$createElement","_c","_self","staticStyle","display","type","staticClass","staticRenderFns","Component","__webpack_require__","normalizeComponent","name","props","ssrContext","__webpack_exports__","list","components","databaseIcon","data","loading","keyword","lists","currentPage","pageSize","totalCount","databaseType","connectionDriver","tableData","queryForm","title","url","diver","version","username","password","createform","sample","updateform","id","rules","required","message","trigger","dialogFormVisible","createFormVisible","updateFormVisible","methods","loadData","_this","$http","method","headers","Content-Type","stringify_default","searchText","page","size","then","res","code","pagination","total","alert","console","log","searchByKeyword","loadDatabaseTypes","_this2","handleClose","done","handleDelete","index","row","_this3","$confirm","confirmButtonText","cancelButtonText","delete","handleMore","handleTest","_this4","get","$alert","addConnection","handleCreate","_this5","driverClass","length","i","driver","$refs","validate","valid","$message","selectChangedDriverVersion","value","_this6","varDatabaseType","find","item","error","handleUpdate","_this7","JSON","parse","handleSave","_this8","handleSizeChange","handleCurrentChange","created","datasource_list","width","attrs","placeholder","clearable","on","change","model","callback","$$v","expression","_v","icon","click","header-cell-style","background","color","border","prop","label","min-width","show-overflow-tooltip","scopedSlots","_u","key","fn","scope","_s","round","$event","$index","align","current-page","page-sizes","page-size","layout","size-change","current-change","visible","showClose","before-close","update:visible","label-width","auto-complete","readonly","$set","rows","spellcheck","slot","ref","status-icon","_l","driverVersion","description"],"mappings":"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","file":"static/js/5.8fcbb35b45285576e78f.js","sourcesContent":["<template>\n <div style=\"display: inline-block\">\n <i class=\"iconfont icon-my-SQL colored_db\"\n v-if=\"type == 'MYSQL'\"></i>\n <i class=\"iconfont icon-MariaDB-chanpinicon colored_db\"\n v-else-if=\"type == 'MARIADB'\"></i>\n <i class=\"iconfont icon-oracle-copy-png colored_db\"\n v-else-if=\"type == 'ORACLE'\"></i>\n <i class=\"iconfont icon-SQLServer colored_db\"\n v-else-if=\"type == 'SQLSERVER'\"></i>\n <i class=\"iconfont icon-postgresql colored_db\"\n v-else-if=\"type == 'POSTGRESQL'\"></i>\n <i class=\"iconfont icon-DB2 colored_db\"\n v-else-if=\"type == 'DB2'\"></i>\n <i class=\"iconfont icon-hive colored_db\"\n v-else-if=\"type == 'HIVE'\"></i>\n <i class=\"iconfont icon-clickhouse2 colored_db\"\n v-else-if=\"type == 'CLICKHOUSE'\"></i>\n <i class=\"iconfont icon-OTHER colored_db\"\n v-else></i>\n </div>\n</template>\n\n<script>\nexport default {\n name: \"databaseIcon\",\n props: ['type']\n}\n</script>\n\n<style scoped>\n.colored_db {\n color: #0698a5;\n font-size: 18px;\n font-weight: 500;\n margin-right: 5px;\n}\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/databaseIcon/databaseIcon.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"display\":\"inline-block\"}},[(_vm.type == 'MYSQL')?_c('i',{staticClass:\"iconfont icon-my-SQL colored_db\"}):(_vm.type == 'MARIADB')?_c('i',{staticClass:\"iconfont icon-MariaDB-chanpinicon colored_db\"}):(_vm.type == 'ORACLE')?_c('i',{staticClass:\"iconfont icon-oracle-copy-png colored_db\"}):(_vm.type == 'SQLSERVER')?_c('i',{staticClass:\"iconfont icon-SQLServer colored_db\"}):(_vm.type == 'POSTGRESQL')?_c('i',{staticClass:\"iconfont icon-postgresql colored_db\"}):(_vm.type == 'DB2')?_c('i',{staticClass:\"iconfont icon-DB2 colored_db\"}):(_vm.type == 'HIVE')?_c('i',{staticClass:\"iconfont icon-hive colored_db\"}):(_vm.type == 'CLICKHOUSE')?_c('i',{staticClass:\"iconfont icon-clickhouse2 colored_db\"}):_c('i',{staticClass:\"iconfont icon-OTHER colored_db\"})])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-b6f86cb4\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/databaseIcon/databaseIcon.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true,\\\"publicPath\\\":\\\"../../\\\"}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-b6f86cb4\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./databaseIcon.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./databaseIcon.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./databaseIcon.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-b6f86cb4\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./databaseIcon.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-b6f86cb4\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/databaseIcon/databaseIcon.vue\n// module id = null\n// module chunks = ","<template>\r\n <div>\r\n <el-card>\r\n <div class=\"connection-list-top\">\r\n <div class=\"left-search-input-group\">\r\n <div class=\"left-search-input\">\r\n <el-input placeholder=\"请输入连接名称关键字搜索\"\r\n v-model=\"keyword\"\r\n @change=\"searchByKeyword\"\r\n :clearable=true\r\n style=\"width:300px\">\r\n </el-input>\r\n </div>\r\n </div>\r\n <div class=\"right-add-button-group\">\r\n <el-button type=\"primary\"\r\n size=\"mini\"\r\n icon=\"el-icon-document-add\"\r\n @click=\"addConnection\">添加</el-button>\r\n </div>\r\n </div>\r\n\r\n <el-table :header-cell-style=\"{background:'#eef1f6',color:'#606266'}\"\r\n :data=\"tableData\"\r\n size=\"small\"\r\n border>\r\n <el-table-column prop=\"id\"\r\n label=\"编号\"\r\n min-width=\"5%\"></el-table-column>\r\n <el-table-column prop=\"name\"\r\n label=\"连接名称\"\r\n show-overflow-tooltip\r\n min-width=\"20%\"></el-table-column>\r\n <el-table-column prop=\"createTime\"\r\n label=\"创建时间\"\r\n min-width=\"18%\"></el-table-column>\r\n <el-table-column label=\"数据库类型\"\r\n show-overflow-tooltip\r\n min-width=\"15%\">\r\n <template slot-scope=\"scope\">\r\n <databaseIcon :type=\"scope.row.type\"></databaseIcon>\r\n <span>{{ scope.row.type }}</span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column prop=\"url\"\r\n label=\"JDBC连接串\"\r\n show-overflow-tooltip\r\n min-width=\"15%\"></el-table-column>\r\n <el-table-column prop=\"username\"\r\n label=\"账号\"\r\n show-overflow-tooltip\r\n min-width=\"10%\"></el-table-column>\r\n <el-table-column label=\"操作\"\r\n min-width=\"35%\">\r\n <template slot-scope=\"scope\">\r\n <el-button-group>\r\n <el-button size=\"small\"\r\n type=\"danger\"\r\n icon=\"el-icon-video-play\"\r\n @click=\"handleTest(scope.$index, scope.row)\"\r\n round>测试</el-button>\r\n <el-button size=\"small\"\r\n type=\"primary\"\r\n icon=\"el-icon-document\"\r\n @click=\"handleMore(scope.$index, scope.row)\"\r\n round>详情</el-button>\r\n <el-button size=\"small\"\r\n type=\"warning\"\r\n icon=\"el-icon-edit\"\r\n @click=\"handleUpdate(scope.$index, scope.row)\"\r\n round>编辑</el-button>\r\n <el-button size=\"small\"\r\n type=\"success\"\r\n icon=\"el-icon-delete\"\r\n @click=\"handleDelete(scope.$index, scope.row)\"\r\n round>删除</el-button>\r\n </el-button-group>\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n <div class=\"page\"\r\n align=\"right\">\r\n <el-pagination @size-change=\"handleSizeChange\"\r\n @current-change=\"handleCurrentChange\"\r\n :current-page=\"currentPage\"\r\n :page-sizes=\"[5, 10, 20, 40]\"\r\n :page-size=\"pageSize\"\r\n layout=\"total, sizes, prev, pager, next, jumper\"\r\n :total=\"totalCount\"></el-pagination>\r\n </div>\r\n\r\n <el-dialog title=\"查看数据库连接信息\"\r\n :visible.sync=\"dialogFormVisible\"\r\n :showClose=\"false\"\r\n :before-close=\"handleClose\">\r\n <el-form :model=\"queryForm\"\r\n size=\"mini\">\r\n <el-form-item label=\"连接名称\"\r\n label-width=\"120px\"\r\n style=\"width:85%\">\r\n <el-input v-model=\"queryForm.name\"\r\n auto-complete=\"off\"\r\n :readonly=true></el-input>\r\n </el-form-item>\r\n <el-form-item label=\"数据库类型\"\r\n label-width=\"120px\"\r\n style=\"width:85%\">\r\n <el-input v-model=\"queryForm.type\"\r\n auto-complete=\"off\"\r\n :readonly=true></el-input>\r\n </el-form-item>\r\n <el-form-item label=\"数据库驱动\"\r\n label-width=\"120px\"\r\n style=\"width:85%\">\r\n <el-input v-model=\"queryForm.driver\"\r\n auto-complete=\"off\"\r\n :readonly=true></el-input>\r\n </el-form-item>\r\n <el-form-item label=\"驱动版本号\"\r\n label-width=\"120px\"\r\n style=\"width:85%\">\r\n <el-input v-model=\"queryForm.version\"\r\n auto-complete=\"off\"\r\n :readonly=true></el-input>\r\n </el-form-item>\r\n <el-form-item label=\"JDBC连接串\"\r\n label-width=\"120px\"\r\n style=\"width:85%\">\r\n <el-input type=\"textarea\"\r\n :rows=\"6\"\r\n :spellcheck=\"false\"\r\n v-model=\"queryForm.url\"\r\n auto-complete=\"off\"\r\n :readonly=true></el-input>\r\n </el-form-item>\r\n <el-form-item label=\"账号名称\"\r\n label-width=\"120px\"\r\n style=\"width:85%\">\r\n <el-input v-model=\"queryForm.username\"\r\n auto-complete=\"off\"\r\n :readonly=true></el-input>\r\n </el-form-item>\r\n <el-form-item label=\"连接密码\"\r\n label-width=\"120px\"\r\n style=\"width:85%\">\r\n <el-input type=\"password\"\r\n v-model=\"queryForm.password\"\r\n auto-complete=\"off\"\r\n :readonly=true></el-input>\r\n </el-form-item>\r\n </el-form>\r\n <div slot=\"footer\"\r\n class=\"dialog-footer\">\r\n <el-button @click=\"dialogFormVisible = false\">关闭</el-button>\r\n </div>\r\n </el-dialog>\r\n\r\n <el-dialog title=\"添加数据源连接信息\"\r\n :visible.sync=\"createFormVisible\"\r\n :showClose=\"false\"\r\n :before-close=\"handleClose\">\r\n <el-form :model=\"createform\"\r\n size=\"mini\"\r\n status-icon\r\n :rules=\"rules\"\r\n ref=\"createform\">\r\n <el-form-item label=\"连接名称\"\r\n label-width=\"120px\"\r\n :required=true\r\n prop=\"name\"\r\n style=\"width:85%\">\r\n <el-input v-model=\"createform.name\"\r\n auto-complete=\"off\"></el-input>\r\n </el-form-item>\r\n <el-form-item label=\"数据库类型\"\r\n label-width=\"120px\"\r\n :required=true\r\n prop=\"type\"\r\n style=\"width:85%\">\r\n <el-select v-model=\"createform.type\"\r\n @change=\"selectChangedDriverVersion\"\r\n placeholder=\"请选择数据库\">\r\n <el-option v-for=\"(item,index) in databaseType\"\r\n :key=\"index\"\r\n :label=\"item.type\"\r\n :value=\"item.type\">\r\n </el-option>\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item label=\"驱动版本\"\r\n label-width=\"120px\"\r\n :required=true\r\n prop=\"version\"\r\n style=\"width:85%\">\r\n <el-select v-model=\"createform.version\"\r\n placeholder=\"请选择版本\">\r\n <el-option v-for=\"(item,index) in connectionDriver\"\r\n :key=\"index\"\r\n :label=\"item.driverVersion\"\r\n :value=\"item.driverVersion\"></el-option>\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item label=\"JDBC连接串\"\r\n label-width=\"120px\"\r\n :required=true\r\n prop=\"url\"\r\n style=\"width:85%\">\r\n <el-alert title=\"样例:\"\r\n type=\"warning\"\r\n :description=\"createform.sample\">\r\n </el-alert>\r\n <el-input type=\"textarea\"\r\n :rows=\"6\"\r\n :spellcheck=\"false\"\r\n placeholder=\"请输入\"\r\n v-model=\"createform.url\"\r\n auto-complete=\"off\">\r\n </el-input>\r\n </el-form-item>\r\n <el-form-item label=\"账号名称\"\r\n label-width=\"120px\"\r\n prop=\"username\"\r\n style=\"width:85%\">\r\n <el-input v-model=\"createform.username\"\r\n auto-complete=\"off\"></el-input>\r\n </el-form-item>\r\n <el-form-item label=\"连接密码\"\r\n label-width=\"120px\"\r\n prop=\"password\"\r\n style=\"width:85%\">\r\n <el-input type=\"password\"\r\n v-model=\"createform.password\"\r\n auto-complete=\"off\"></el-input>\r\n </el-form-item>\r\n </el-form>\r\n <div slot=\"footer\"\r\n class=\"dialog-footer\">\r\n <el-button @click=\"createFormVisible = false\">取 消</el-button>\r\n <el-button type=\"primary\"\r\n @click=\"handleCreate\">确 定</el-button>\r\n </div>\r\n </el-dialog>\r\n\r\n <el-dialog title=\"修改数据源连接信息\"\r\n :visible.sync=\"updateFormVisible\"\r\n :showClose=\"false\"\r\n :before-close=\"handleClose\">\r\n <el-form :model=\"updateform\"\r\n size=\"mini\"\r\n status-icon\r\n :rules=\"rules\"\r\n ref=\"updateform\">\r\n <el-form-item label=\"连接名称\"\r\n label-width=\"120px\"\r\n :required=true\r\n prop=\"name\"\r\n style=\"width:85%\">\r\n <el-input v-model=\"updateform.name\"\r\n auto-complete=\"off\"></el-input>\r\n </el-form-item>\r\n <el-form-item label=\"数据库类型\"\r\n label-width=\"120px\"\r\n :required=true\r\n prop=\"type\"\r\n style=\"width:85%\">\r\n <el-select v-model=\"updateform.type\"\r\n @change=\"selectChangedDriverVersion\"\r\n placeholder=\"请选择数据库\">\r\n <el-option v-for=\"(item,index) in databaseType\"\r\n :key=\"index\"\r\n :label=\"item.type\"\r\n :value=\"item.type\"></el-option>\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item label=\"驱动版本\"\r\n label-width=\"120px\"\r\n :required=true\r\n prop=\"version\"\r\n style=\"width:85%\">\r\n <el-select v-model=\"updateform.version\"\r\n placeholder=\"请选择版本\">\r\n <el-option v-for=\"(item,index) in connectionDriver\"\r\n :key=\"index\"\r\n :label=\"item.driverVersion\"\r\n :value=\"item.driverVersion\"></el-option>\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item label=\"JDBC连接串\"\r\n label-width=\"120px\"\r\n :required=true\r\n prop=\"url\"\r\n style=\"width:85%\">\r\n <el-input type=\"textarea\"\r\n :rows=\"6\"\r\n :spellcheck=\"false\"\r\n v-model=\"updateform.url\"\r\n auto-complete=\"off\"></el-input>\r\n </el-form-item>\r\n <el-form-item label=\"账号名称\"\r\n label-width=\"120px\"\r\n prop=\"username\"\r\n style=\"width:85%\">\r\n <el-input v-model=\"updateform.username\"\r\n auto-complete=\"off\"></el-input>\r\n </el-form-item>\r\n <el-form-item label=\"连接密码\"\r\n label-width=\"120px\"\r\n prop=\"password\"\r\n style=\"width:85%\">\r\n <el-input type=\"password\"\r\n v-model=\"updateform.password\"\r\n auto-complete=\"off\"></el-input>\r\n </el-form-item>\r\n </el-form>\r\n <div slot=\"footer\"\r\n class=\"dialog-footer\">\r\n <el-button @click=\"updateFormVisible = false\">取 消</el-button>\r\n <el-button type=\"primary\"\r\n @click=\"handleSave\">确 定</el-button>\r\n </div>\r\n </el-dialog>\r\n </el-card>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport databaseIcon from \"@/components/databaseIcon/databaseIcon\";\r\n\r\nexport default {\r\n name: \"datasource\",\r\n components: {\r\n databaseIcon\r\n },\r\n data () {\r\n return {\r\n loading: true,\r\n keyword: null,\r\n lists: [],\r\n currentPage: 1,\r\n pageSize: 10,\r\n totalCount: 2,\r\n databaseType: [],\r\n connectionDriver: [],\r\n tableData: [\r\n ],\r\n queryForm: {\r\n title: \"\",\r\n type: \"\",\r\n url: \"\",\r\n diver: \"\",\r\n version: \"\",\r\n username: \"\",\r\n password: \"\"\r\n },\r\n createform: {\r\n title: \"\",\r\n type: \"\",\r\n diver: \"\",\r\n sample: \"\",\r\n url: \"\",\r\n version: \"\",\r\n username: \"\",\r\n password: \"\"\r\n },\r\n updateform: {\r\n id: 0,\r\n title: \"\",\r\n type: \"\",\r\n diver: \"\",\r\n version: \"\",\r\n username: \"\",\r\n password: \"\"\r\n },\r\n rules: {\r\n name: [\r\n {\r\n required: true,\r\n message: \"名称不能为空\",\r\n trigger: \"blur\"\r\n }\r\n ],\r\n type: [\r\n {\r\n required: true,\r\n message: \"数据库类型必须选择\",\r\n trigger: \"change\"\r\n }\r\n ],\r\n version: [\r\n {\r\n required: true,\r\n message: \"驱动版本必须选择\",\r\n trigger: \"change\"\r\n }\r\n ],\r\n url: [\r\n {\r\n required: true,\r\n message: \"Jdbc URL必须提供\",\r\n trigger: \"blur\"\r\n }\r\n ],\r\n username: [\r\n {\r\n required: true,\r\n message: \"连接账号名必须提供\",\r\n trigger: \"blur\"\r\n }\r\n ],\r\n password: [\r\n {\r\n required: true,\r\n message: \"连接密码必须提供\",\r\n trigger: \"blur\"\r\n }\r\n ]\r\n },\r\n dialogFormVisible: false,\r\n createFormVisible: false,\r\n updateFormVisible: false\r\n }\r\n },\r\n methods: {\r\n loadData: function () {\r\n this.$http({\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n url: \"/sqlrest/manager/api/v1/datasource/list\",\r\n data: JSON.stringify({\r\n searchText: this.keyword,\r\n page: this.currentPage,\r\n size: this.pageSize\r\n })\r\n }).then(res => {\r\n if (0 === res.data.code) {\r\n this.currentPage = res.data.pagination.page;\r\n this.pageSize = res.data.pagination.size;\r\n this.totalCount = res.data.pagination.total;\r\n this.tableData = res.data.data;\r\n } else {\r\n alert(\"加载任务列表失败:\" + res.data.message);\r\n }\r\n },\r\n function () {\r\n console.log(\"load connection list failed\");\r\n }\r\n );\r\n },\r\n searchByKeyword: function () {\r\n this.currentPage = 1;\r\n this.loadData();\r\n },\r\n loadDatabaseTypes: function () {\r\n this.databaseType = [];\r\n this.$http({\r\n method: \"GET\",\r\n url: \"/sqlrest/manager/api/v1/datasource/types\"\r\n }).then(\r\n res => {\r\n if (0 === res.data.code) {\r\n this.databaseType = res.data.data;\r\n } else {\r\n alert(\"加载任务列表失败:\" + res.data.message);\r\n }\r\n },\r\n function () {\r\n console.log(\"failed\");\r\n }\r\n );\r\n },\r\n handleClose (done) {\r\n },\r\n handleDelete: function (index, row) {\r\n this.$confirm(\r\n \"此操作将此数据源ID=\" + row.id + \"删除么, 是否继续?\",\r\n \"提示\",\r\n {\r\n confirmButtonText: \"确定\",\r\n cancelButtonText: \"取消\",\r\n type: \"warning\"\r\n }\r\n ).then(() => {\r\n this.$http.delete(\r\n \"/sqlrest/manager/api/v1/datasource/delete/\" + row.id\r\n ).then(res => {\r\n //console.log(res);\r\n if (0 === res.data.code) {\r\n this.loadData();\r\n } else {\r\n alert(\"删除任务失败:\" + res.data.message);\r\n }\r\n });\r\n });\r\n },\r\n handleMore: function (index, row) {\r\n this.dialogFormVisible = true;\r\n this.queryForm = row;\r\n },\r\n handleTest: function (index, row) {\r\n this.$http.get(\r\n \"/sqlrest/manager/api/v1/datasource/test/\" + row.id\r\n ).then(res => {\r\n if (0 === res.data.code) {\r\n this.$alert(\"测试连接成功!\", \"提示信息\",\r\n {\r\n confirmButtonText: \"确定\",\r\n type: \"success\"\r\n }\r\n );\r\n } else {\r\n this.$alert(res.data.message, \"错误信息\",\r\n {\r\n confirmButtonText: \"确定\",\r\n type: \"error\"\r\n }\r\n );\r\n }\r\n });\r\n },\r\n addConnection: function () {\r\n this.createFormVisible = true;\r\n this.createform = {};\r\n },\r\n handleCreate: function () {\r\n let driverClass = \"\";\r\n if (this.databaseType.length > 0) {\r\n for (let i = 0; i < this.databaseType.length; i++) {\r\n if (this.databaseType[i].type == this.createform.type) {\r\n driverClass = this.databaseType[i].driver;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n this.$refs['createform'].validate(valid => {\r\n if (valid) {\r\n this.$http({\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n url: \"/sqlrest/manager/api/v1/datasource/create\",\r\n data: JSON.stringify({\r\n name: this.createform.name,\r\n type: this.createform.type,\r\n version: this.createform.version,\r\n driver: driverClass,\r\n url: this.createform.url,\r\n username: this.createform.username,\r\n password: this.createform.password\r\n })\r\n }).then(res => {\r\n if (0 === res.data.code) {\r\n this.createFormVisible = false;\r\n this.$message(\"添加连接信息成功\");\r\n this.createform = {};\r\n this.loadData();\r\n } else {\r\n this.$alert(res.data.message, \"添加连接信息失败\",\r\n {\r\n confirmButtonText: \"确定\",\r\n type: \"error\"\r\n }\r\n );\r\n }\r\n });\r\n } else {\r\n this.$alert(\"请检查输入\", \"提示信息\",\r\n {\r\n confirmButtonText: \"确定\",\r\n type: \"info\"\r\n }\r\n );\r\n }\r\n });\r\n },\r\n selectChangedDriverVersion: function (value) {\r\n this.connectionDriver = [];\r\n this.$http.get(\r\n \"/sqlrest/manager/api/v1/datasource/\" + value + \"/drivers\"\r\n ).then(res => {\r\n if (0 === res.data.code) {\r\n this.connectionDriver = res.data.data;\r\n let varDatabaseType = this.databaseType.find(\r\n (item) => {\r\n return item.type === value;\r\n });\r\n if (varDatabaseType) {\r\n this.createform.sample = varDatabaseType.sample;\r\n }\r\n } else {\r\n this.$message.error(\"查询数据库可用的驱动版本失败,\" + res.data.message);\r\n this.connectionDriver = [];\r\n }\r\n });\r\n },\r\n handleUpdate: function (index, row) {\r\n this.updateform = JSON.parse(JSON.stringify(row));\r\n this.$http.get(\r\n \"/sqlrest/manager/api/v1/datasource/\" + this.updateform.type + \"/drivers\"\r\n ).then(res => {\r\n if (0 === res.data.code) {\r\n this.connectionDriver = res.data.data;\r\n } else {\r\n this.$message.error(\"查询数据库可用的驱动版本失败,\" + res.data.message);\r\n this.connectionDriver = [];\r\n }\r\n });\r\n this.updateFormVisible = true;\r\n },\r\n handleSave: function () {\r\n let driverClass = \"\";\r\n if (this.databaseType.length > 0) {\r\n for (let i = 0; i < this.databaseType.length; i++) {\r\n if (this.databaseType[i].type == this.updateform.type) {\r\n driverClass = this.databaseType[i].driver;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n this.$refs['updateform'].validate(valid => {\r\n if (valid) {\r\n this.$http({\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n url: \"/sqlrest/manager/api/v1/datasource/update\",\r\n data: JSON.stringify({\r\n id: this.updateform.id,\r\n name: this.updateform.name,\r\n type: this.updateform.type,\r\n version: this.updateform.version,\r\n driver: driverClass,\r\n url: this.updateform.url,\r\n username: this.updateform.username,\r\n password: this.updateform.password\r\n })\r\n }).then(res => {\r\n if (0 === res.data.code) {\r\n this.updateFormVisible = false;\r\n this.$message(\"修改连接信息成功\");\r\n this.loadData();\r\n this.updateform = {};\r\n } else {\r\n this.$alert(res.data.message, \"修改连接信息失败\",\r\n {\r\n confirmButtonText: \"确定\",\r\n type: \"error\"\r\n }\r\n );\r\n }\r\n });\r\n } else {\r\n this.$alert(\"请检查输入\", \"提示信息\",\r\n {\r\n confirmButtonText: \"确定\",\r\n type: \"info\"\r\n }\r\n );\r\n }\r\n });\r\n },\r\n handleSizeChange: function (pageSize) {\r\n this.loading = true;\r\n this.pageSize = pageSize;\r\n this.loadData();\r\n },\r\n\r\n handleCurrentChange: function (currentPage) {\r\n this.loading = true;\r\n this.currentPage = currentPage;\r\n this.loadData();\r\n }\r\n },\r\n created () {\r\n this.loadDatabaseTypes();\r\n this.loadData();\r\n }\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.el-table {\r\n width: 100%;\r\n height: 100%;\r\n}\r\n.el-card,\r\n.el-message {\r\n width: 100%;\r\n height: 100%;\r\n overflow: auto;\r\n}\r\n.connection-list-top {\r\n width: 100%;\r\n display: flex;\r\n justify-content: space-between;\r\n}\r\n\r\n.left-search-input-group {\r\n width: calc(100% - 100px);\r\n margin-right: auto;\r\n display: flex;\r\n justify-content: space-between;\r\n}\r\n.left-search-input {\r\n width: 300px;\r\n margin-right: auto;\r\n margin: 10px 5px;\r\n}\r\n.right-add-button-group {\r\n width: 100px;\r\n margin-left: auto;\r\n margin: 10px 5px;\r\n}\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/views/datasource/list.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('el-card',[_c('div',{staticClass:\"connection-list-top\"},[_c('div',{staticClass:\"left-search-input-group\"},[_c('div',{staticClass:\"left-search-input\"},[_c('el-input',{staticStyle:{\"width\":\"300px\"},attrs:{\"placeholder\":\"请输入连接名称关键字搜索\",\"clearable\":true},on:{\"change\":_vm.searchByKeyword},model:{value:(_vm.keyword),callback:function ($$v) {_vm.keyword=$$v},expression:\"keyword\"}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"right-add-button-group\"},[_c('el-button',{attrs:{\"type\":\"primary\",\"size\":\"mini\",\"icon\":\"el-icon-document-add\"},on:{\"click\":_vm.addConnection}},[_vm._v(\"添加\")])],1)]),_vm._v(\" \"),_c('el-table',{attrs:{\"header-cell-style\":{background:'#eef1f6',color:'#606266'},\"data\":_vm.tableData,\"size\":\"small\",\"border\":\"\"}},[_c('el-table-column',{attrs:{\"prop\":\"id\",\"label\":\"编号\",\"min-width\":\"5%\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"name\",\"label\":\"连接名称\",\"show-overflow-tooltip\":\"\",\"min-width\":\"20%\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"createTime\",\"label\":\"创建时间\",\"min-width\":\"18%\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":\"数据库类型\",\"show-overflow-tooltip\":\"\",\"min-width\":\"15%\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('databaseIcon',{attrs:{\"type\":scope.row.type}}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(scope.row.type))])]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"url\",\"label\":\"JDBC连接串\",\"show-overflow-tooltip\":\"\",\"min-width\":\"15%\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"username\",\"label\":\"账号\",\"show-overflow-tooltip\":\"\",\"min-width\":\"10%\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":\"操作\",\"min-width\":\"35%\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-button-group',[_c('el-button',{attrs:{\"size\":\"small\",\"type\":\"danger\",\"icon\":\"el-icon-video-play\",\"round\":\"\"},on:{\"click\":function($event){return _vm.handleTest(scope.$index, scope.row)}}},[_vm._v(\"测试\")]),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":\"small\",\"type\":\"primary\",\"icon\":\"el-icon-document\",\"round\":\"\"},on:{\"click\":function($event){return _vm.handleMore(scope.$index, scope.row)}}},[_vm._v(\"详情\")]),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":\"small\",\"type\":\"warning\",\"icon\":\"el-icon-edit\",\"round\":\"\"},on:{\"click\":function($event){return _vm.handleUpdate(scope.$index, scope.row)}}},[_vm._v(\"编辑\")]),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":\"small\",\"type\":\"success\",\"icon\":\"el-icon-delete\",\"round\":\"\"},on:{\"click\":function($event){return _vm.handleDelete(scope.$index, scope.row)}}},[_vm._v(\"删除\")])],1)]}}])})],1),_vm._v(\" \"),_c('div',{staticClass:\"page\",attrs:{\"align\":\"right\"}},[_c('el-pagination',{attrs:{\"current-page\":_vm.currentPage,\"page-sizes\":[5, 10, 20, 40],\"page-size\":_vm.pageSize,\"layout\":\"total, sizes, prev, pager, next, jumper\",\"total\":_vm.totalCount},on:{\"size-change\":_vm.handleSizeChange,\"current-change\":_vm.handleCurrentChange}})],1),_vm._v(\" \"),_c('el-dialog',{attrs:{\"title\":\"查看数据库连接信息\",\"visible\":_vm.dialogFormVisible,\"showClose\":false,\"before-close\":_vm.handleClose},on:{\"update:visible\":function($event){_vm.dialogFormVisible=$event}}},[_c('el-form',{attrs:{\"model\":_vm.queryForm,\"size\":\"mini\"}},[_c('el-form-item',{staticStyle:{\"width\":\"85%\"},attrs:{\"label\":\"连接名称\",\"label-width\":\"120px\"}},[_c('el-input',{attrs:{\"auto-complete\":\"off\",\"readonly\":true},model:{value:(_vm.queryForm.name),callback:function ($$v) {_vm.$set(_vm.queryForm, \"name\", $$v)},expression:\"queryForm.name\"}})],1),_vm._v(\" \"),_c('el-form-item',{staticStyle:{\"width\":\"85%\"},attrs:{\"label\":\"数据库类型\",\"label-width\":\"120px\"}},[_c('el-input',{attrs:{\"auto-complete\":\"off\",\"readonly\":true},model:{value:(_vm.queryForm.type),callback:function ($$v) {_vm.$set(_vm.queryForm, \"type\", $$v)},expression:\"queryForm.type\"}})],1),_vm._v(\" \"),_c('el-form-item',{staticStyle:{\"width\":\"85%\"},attrs:{\"label\":\"数据库驱动\",\"label-width\":\"120px\"}},[_c('el-input',{attrs:{\"auto-complete\":\"off\",\"readonly\":true},model:{value:(_vm.queryForm.driver),callback:function ($$v) {_vm.$set(_vm.queryForm, \"driver\", $$v)},expression:\"queryForm.driver\"}})],1),_vm._v(\" \"),_c('el-form-item',{staticStyle:{\"width\":\"85%\"},attrs:{\"label\":\"驱动版本号\",\"label-width\":\"120px\"}},[_c('el-input',{attrs:{\"auto-complete\":\"off\",\"readonly\":true},model:{value:(_vm.queryForm.version),callback:function ($$v) {_vm.$set(_vm.queryForm, \"version\", $$v)},expression:\"queryForm.version\"}})],1),_vm._v(\" \"),_c('el-form-item',{staticStyle:{\"width\":\"85%\"},attrs:{\"label\":\"JDBC连接串\",\"label-width\":\"120px\"}},[_c('el-input',{attrs:{\"type\":\"textarea\",\"rows\":6,\"spellcheck\":false,\"auto-complete\":\"off\",\"readonly\":true},model:{value:(_vm.queryForm.url),callback:function ($$v) {_vm.$set(_vm.queryForm, \"url\", $$v)},expression:\"queryForm.url\"}})],1),_vm._v(\" \"),_c('el-form-item',{staticStyle:{\"width\":\"85%\"},attrs:{\"label\":\"账号名称\",\"label-width\":\"120px\"}},[_c('el-input',{attrs:{\"auto-complete\":\"off\",\"readonly\":true},model:{value:(_vm.queryForm.username),callback:function ($$v) {_vm.$set(_vm.queryForm, \"username\", $$v)},expression:\"queryForm.username\"}})],1),_vm._v(\" \"),_c('el-form-item',{staticStyle:{\"width\":\"85%\"},attrs:{\"label\":\"连接密码\",\"label-width\":\"120px\"}},[_c('el-input',{attrs:{\"type\":\"password\",\"auto-complete\":\"off\",\"readonly\":true},model:{value:(_vm.queryForm.password),callback:function ($$v) {_vm.$set(_vm.queryForm, \"password\", $$v)},expression:\"queryForm.password\"}})],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":function($event){_vm.dialogFormVisible = false}}},[_vm._v(\"关闭\")])],1)],1),_vm._v(\" \"),_c('el-dialog',{attrs:{\"title\":\"添加数据源连接信息\",\"visible\":_vm.createFormVisible,\"showClose\":false,\"before-close\":_vm.handleClose},on:{\"update:visible\":function($event){_vm.createFormVisible=$event}}},[_c('el-form',{ref:\"createform\",attrs:{\"model\":_vm.createform,\"size\":\"mini\",\"status-icon\":\"\",\"rules\":_vm.rules}},[_c('el-form-item',{staticStyle:{\"width\":\"85%\"},attrs:{\"label\":\"连接名称\",\"label-width\":\"120px\",\"required\":true,\"prop\":\"name\"}},[_c('el-input',{attrs:{\"auto-complete\":\"off\"},model:{value:(_vm.createform.name),callback:function ($$v) {_vm.$set(_vm.createform, \"name\", $$v)},expression:\"createform.name\"}})],1),_vm._v(\" \"),_c('el-form-item',{staticStyle:{\"width\":\"85%\"},attrs:{\"label\":\"数据库类型\",\"label-width\":\"120px\",\"required\":true,\"prop\":\"type\"}},[_c('el-select',{attrs:{\"placeholder\":\"请选择数据库\"},on:{\"change\":_vm.selectChangedDriverVersion},model:{value:(_vm.createform.type),callback:function ($$v) {_vm.$set(_vm.createform, \"type\", $$v)},expression:\"createform.type\"}},_vm._l((_vm.databaseType),function(item,index){return _c('el-option',{key:index,attrs:{\"label\":item.type,\"value\":item.type}})}),1)],1),_vm._v(\" \"),_c('el-form-item',{staticStyle:{\"width\":\"85%\"},attrs:{\"label\":\"驱动版本\",\"label-width\":\"120px\",\"required\":true,\"prop\":\"version\"}},[_c('el-select',{attrs:{\"placeholder\":\"请选择版本\"},model:{value:(_vm.createform.version),callback:function ($$v) {_vm.$set(_vm.createform, \"version\", $$v)},expression:\"createform.version\"}},_vm._l((_vm.connectionDriver),function(item,index){return _c('el-option',{key:index,attrs:{\"label\":item.driverVersion,\"value\":item.driverVersion}})}),1)],1),_vm._v(\" \"),_c('el-form-item',{staticStyle:{\"width\":\"85%\"},attrs:{\"label\":\"JDBC连接串\",\"label-width\":\"120px\",\"required\":true,\"prop\":\"url\"}},[_c('el-alert',{attrs:{\"title\":\"样例:\",\"type\":\"warning\",\"description\":_vm.createform.sample}}),_vm._v(\" \"),_c('el-input',{attrs:{\"type\":\"textarea\",\"rows\":6,\"spellcheck\":false,\"placeholder\":\"请输入\",\"auto-complete\":\"off\"},model:{value:(_vm.createform.url),callback:function ($$v) {_vm.$set(_vm.createform, \"url\", $$v)},expression:\"createform.url\"}})],1),_vm._v(\" \"),_c('el-form-item',{staticStyle:{\"width\":\"85%\"},attrs:{\"label\":\"账号名称\",\"label-width\":\"120px\",\"prop\":\"username\"}},[_c('el-input',{attrs:{\"auto-complete\":\"off\"},model:{value:(_vm.createform.username),callback:function ($$v) {_vm.$set(_vm.createform, \"username\", $$v)},expression:\"createform.username\"}})],1),_vm._v(\" \"),_c('el-form-item',{staticStyle:{\"width\":\"85%\"},attrs:{\"label\":\"连接密码\",\"label-width\":\"120px\",\"prop\":\"password\"}},[_c('el-input',{attrs:{\"type\":\"password\",\"auto-complete\":\"off\"},model:{value:(_vm.createform.password),callback:function ($$v) {_vm.$set(_vm.createform, \"password\", $$v)},expression:\"createform.password\"}})],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":function($event){_vm.createFormVisible = false}}},[_vm._v(\"取 消\")]),_vm._v(\" \"),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.handleCreate}},[_vm._v(\"确 定\")])],1)],1),_vm._v(\" \"),_c('el-dialog',{attrs:{\"title\":\"修改数据源连接信息\",\"visible\":_vm.updateFormVisible,\"showClose\":false,\"before-close\":_vm.handleClose},on:{\"update:visible\":function($event){_vm.updateFormVisible=$event}}},[_c('el-form',{ref:\"updateform\",attrs:{\"model\":_vm.updateform,\"size\":\"mini\",\"status-icon\":\"\",\"rules\":_vm.rules}},[_c('el-form-item',{staticStyle:{\"width\":\"85%\"},attrs:{\"label\":\"连接名称\",\"label-width\":\"120px\",\"required\":true,\"prop\":\"name\"}},[_c('el-input',{attrs:{\"auto-complete\":\"off\"},model:{value:(_vm.updateform.name),callback:function ($$v) {_vm.$set(_vm.updateform, \"name\", $$v)},expression:\"updateform.name\"}})],1),_vm._v(\" \"),_c('el-form-item',{staticStyle:{\"width\":\"85%\"},attrs:{\"label\":\"数据库类型\",\"label-width\":\"120px\",\"required\":true,\"prop\":\"type\"}},[_c('el-select',{attrs:{\"placeholder\":\"请选择数据库\"},on:{\"change\":_vm.selectChangedDriverVersion},model:{value:(_vm.updateform.type),callback:function ($$v) {_vm.$set(_vm.updateform, \"type\", $$v)},expression:\"updateform.type\"}},_vm._l((_vm.databaseType),function(item,index){return _c('el-option',{key:index,attrs:{\"label\":item.type,\"value\":item.type}})}),1)],1),_vm._v(\" \"),_c('el-form-item',{staticStyle:{\"width\":\"85%\"},attrs:{\"label\":\"驱动版本\",\"label-width\":\"120px\",\"required\":true,\"prop\":\"version\"}},[_c('el-select',{attrs:{\"placeholder\":\"请选择版本\"},model:{value:(_vm.updateform.version),callback:function ($$v) {_vm.$set(_vm.updateform, \"version\", $$v)},expression:\"updateform.version\"}},_vm._l((_vm.connectionDriver),function(item,index){return _c('el-option',{key:index,attrs:{\"label\":item.driverVersion,\"value\":item.driverVersion}})}),1)],1),_vm._v(\" \"),_c('el-form-item',{staticStyle:{\"width\":\"85%\"},attrs:{\"label\":\"JDBC连接串\",\"label-width\":\"120px\",\"required\":true,\"prop\":\"url\"}},[_c('el-input',{attrs:{\"type\":\"textarea\",\"rows\":6,\"spellcheck\":false,\"auto-complete\":\"off\"},model:{value:(_vm.updateform.url),callback:function ($$v) {_vm.$set(_vm.updateform, \"url\", $$v)},expression:\"updateform.url\"}})],1),_vm._v(\" \"),_c('el-form-item',{staticStyle:{\"width\":\"85%\"},attrs:{\"label\":\"账号名称\",\"label-width\":\"120px\",\"prop\":\"username\"}},[_c('el-input',{attrs:{\"auto-complete\":\"off\"},model:{value:(_vm.updateform.username),callback:function ($$v) {_vm.$set(_vm.updateform, \"username\", $$v)},expression:\"updateform.username\"}})],1),_vm._v(\" \"),_c('el-form-item',{staticStyle:{\"width\":\"85%\"},attrs:{\"label\":\"连接密码\",\"label-width\":\"120px\",\"prop\":\"password\"}},[_c('el-input',{attrs:{\"type\":\"password\",\"auto-complete\":\"off\"},model:{value:(_vm.updateform.password),callback:function ($$v) {_vm.$set(_vm.updateform, \"password\", $$v)},expression:\"updateform.password\"}})],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":function($event){_vm.updateFormVisible = false}}},[_vm._v(\"取 消\")]),_vm._v(\" \"),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.handleSave}},[_vm._v(\"确 定\")])],1)],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-5a65ae83\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/views/datasource/list.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true,\\\"publicPath\\\":\\\"../../\\\"}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-5a65ae83\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./list.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./list.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./list.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-5a65ae83\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./list.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-5a65ae83\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/views/datasource/list.vue\n// module id = null\n// module chunks = "],"sourceRoot":""}
\ No newline at end of file
!function(e){var n=window.webpackJsonp;window.webpackJsonp=function(r,c,o){for(var f,d,i,u=0,b=[];u<r.length;u++)d=r[u],t[d]&&b.push(t[d][0]),t[d]=0;for(f in c)Object.prototype.hasOwnProperty.call(c,f)&&(e[f]=c[f]);for(n&&n(r,c,o);b.length;)b.shift()();if(o)for(u=0;u<o.length;u++)i=a(a.s=o[u]);return i};var r={},t={24:0};function a(n){if(r[n])return r[n].exports;var t=r[n]={i:n,l:!1,exports:{}};return e[n].call(t.exports,t,t.exports,a),t.l=!0,t.exports}a.e=function(e){var n=t[e];if(0===n)return new Promise(function(e){e()});if(n)return n[2];var r=new Promise(function(r,a){n=t[e]=[r,a]});n[2]=r;var c=document.getElementsByTagName("head")[0],o=document.createElement("script");o.type="text/javascript",o.charset="utf-8",o.async=!0,o.timeout=12e4,a.nc&&o.setAttribute("nonce",a.nc),o.src=a.p+"static/js/"+e+"."+{0:"3ab7090c6c9be8b6bb66",1:"b17200cccd46e216dcb3",2:"140338f6a5528feea1a3",3:"776d791724a8de12ff9e",4:"f8494b8dd039413f79c8",5:"6a80c59d0b7ae08a93a1",6:"8f85de06573e2a5f9562",7:"061807fe4716131f26f8",8:"d1391c270de5a9f111c5",9:"cbdb7fa4f5180acfbb03",10:"7eeaa94fd42d34a86b92",11:"096c0f0eaf2850056b7e",12:"85287d948c440f963d32",13:"4d2138ee1bee3ad573f4",14:"429592868e75adc95933",15:"3b3f0c03ff4fed9903cc",16:"9616cfe0a4f7517b0841",17:"b4bc5fa31e227bee8651",18:"5e7f065a8d031847e833",19:"3936346cb7e30aa279e2",20:"5ef9c751035ee9a08f94",21:"d8007e7169c085e13dab"}[e]+".js";var f=setTimeout(d,12e4);function d(){o.onerror=o.onload=null,clearTimeout(f);var n=t[e];0!==n&&(n&&n[1](new Error("Loading chunk "+e+" failed.")),t[e]=void 0)}return o.onerror=o.onload=d,c.appendChild(o),r},a.m=e,a.c=r,a.d=function(e,n,r){a.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},a.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(n,"a",n),n},a.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},a.p="/",a.oe=function(e){throw console.error(e),e}}([]);
//# sourceMappingURL=manifest.420bcca8a647a82f0a6d.js.map
\ No newline at end of file
!function(e){var n=window.webpackJsonp;window.webpackJsonp=function(r,c,f){for(var a,d,i,u=0,b=[];u<r.length;u++)d=r[u],t[d]&&b.push(t[d][0]),t[d]=0;for(a in c)Object.prototype.hasOwnProperty.call(c,a)&&(e[a]=c[a]);for(n&&n(r,c,f);b.length;)b.shift()();if(f)for(u=0;u<f.length;u++)i=o(o.s=f[u]);return i};var r={},t={24:0};function o(n){if(r[n])return r[n].exports;var t=r[n]={i:n,l:!1,exports:{}};return e[n].call(t.exports,t,t.exports,o),t.l=!0,t.exports}o.e=function(e){var n=t[e];if(0===n)return new Promise(function(e){e()});if(n)return n[2];var r=new Promise(function(r,o){n=t[e]=[r,o]});n[2]=r;var c=document.getElementsByTagName("head")[0],f=document.createElement("script");f.type="text/javascript",f.charset="utf-8",f.async=!0,f.timeout=12e4,o.nc&&f.setAttribute("nonce",o.nc),f.src=o.p+"static/js/"+e+"."+{0:"4146c25475a3e18df991",1:"b17200cccd46e216dcb3",2:"140338f6a5528feea1a3",3:"776d791724a8de12ff9e",4:"f8494b8dd039413f79c8",5:"8fcbb35b45285576e78f",6:"8f85de06573e2a5f9562",7:"061807fe4716131f26f8",8:"d1391c270de5a9f111c5",9:"cbdb7fa4f5180acfbb03",10:"7eeaa94fd42d34a86b92",11:"096c0f0eaf2850056b7e",12:"85287d948c440f963d32",13:"4d2138ee1bee3ad573f4",14:"429592868e75adc95933",15:"3b3f0c03ff4fed9903cc",16:"9616cfe0a4f7517b0841",17:"b4bc5fa31e227bee8651",18:"5e7f065a8d031847e833",19:"3936346cb7e30aa279e2",20:"5ef9c751035ee9a08f94",21:"d8007e7169c085e13dab"}[e]+".js";var a=setTimeout(d,12e4);function d(){f.onerror=f.onload=null,clearTimeout(a);var n=t[e];0!==n&&(n&&n[1](new Error("Loading chunk "+e+" failed.")),t[e]=void 0)}return f.onerror=f.onload=d,c.appendChild(f),r},o.m=e,o.c=r,o.d=function(e,n,r){o.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},o.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(n,"a",n),n},o.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},o.p="/",o.oe=function(e){throw console.error(e),e}}([]);
//# sourceMappingURL=manifest.b20a86b3cf44ea708af0.js.map
\ No newline at end of file
{"version":3,"sources":["webpack:///webpack/bootstrap 52505fec94ddd28d636e"],"names":["parentJsonpFunction","window","chunkIds","moreModules","executeModules","moduleId","chunkId","result","i","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","shift","__webpack_require__","s","installedModules","24","exports","module","l","e","installedChunkData","Promise","resolve","promise","reject","head","document","getElementsByTagName","script","createElement","type","charset","async","timeout","nc","setAttribute","src","p","0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","setTimeout","onScriptComplete","onerror","onload","clearTimeout","chunk","Error","undefined","appendChild","m","c","d","name","getter","o","defineProperty","configurable","enumerable","get","n","__esModule","object","property","oe","err","console","error"],"mappings":"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","file":"static/js/manifest.420bcca8a647a82f0a6d.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n \t\tif(executeModules) {\n \t\t\tfor(i=0; i < executeModules.length; i++) {\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// objects to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t24: 0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData === 0) {\n \t\t\treturn new Promise(function(resolve) { resolve(); });\n \t\t}\n\n \t\t// a Promise means \"currently loading\".\n \t\tif(installedChunkData) {\n \t\t\treturn installedChunkData[2];\n \t\t}\n\n \t\t// setup Promise in chunk cache\n \t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t});\n \t\tinstalledChunkData[2] = promise;\n\n \t\t// start chunk loading\n \t\tvar head = document.getElementsByTagName('head')[0];\n \t\tvar script = document.createElement('script');\n \t\tscript.type = \"text/javascript\";\n \t\tscript.charset = 'utf-8';\n \t\tscript.async = true;\n \t\tscript.timeout = 120000;\n\n \t\tif (__webpack_require__.nc) {\n \t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t}\n \t\tscript.src = __webpack_require__.p + \"static/js/\" + chunkId + \".\" + {\"0\":\"3ab7090c6c9be8b6bb66\",\"1\":\"b17200cccd46e216dcb3\",\"2\":\"140338f6a5528feea1a3\",\"3\":\"776d791724a8de12ff9e\",\"4\":\"f8494b8dd039413f79c8\",\"5\":\"6a80c59d0b7ae08a93a1\",\"6\":\"8f85de06573e2a5f9562\",\"7\":\"061807fe4716131f26f8\",\"8\":\"d1391c270de5a9f111c5\",\"9\":\"cbdb7fa4f5180acfbb03\",\"10\":\"7eeaa94fd42d34a86b92\",\"11\":\"096c0f0eaf2850056b7e\",\"12\":\"85287d948c440f963d32\",\"13\":\"4d2138ee1bee3ad573f4\",\"14\":\"429592868e75adc95933\",\"15\":\"3b3f0c03ff4fed9903cc\",\"16\":\"9616cfe0a4f7517b0841\",\"17\":\"b4bc5fa31e227bee8651\",\"18\":\"5e7f065a8d031847e833\",\"19\":\"3936346cb7e30aa279e2\",\"20\":\"5ef9c751035ee9a08f94\",\"21\":\"d8007e7169c085e13dab\"}[chunkId] + \".js\";\n \t\tvar timeout = setTimeout(onScriptComplete, 120000);\n \t\tscript.onerror = script.onload = onScriptComplete;\n \t\tfunction onScriptComplete() {\n \t\t\t// avoid mem leaks in IE.\n \t\t\tscript.onerror = script.onload = null;\n \t\t\tclearTimeout(timeout);\n \t\t\tvar chunk = installedChunks[chunkId];\n \t\t\tif(chunk !== 0) {\n \t\t\t\tif(chunk) {\n \t\t\t\t\tchunk[1](new Error('Loading chunk ' + chunkId + ' failed.'));\n \t\t\t\t}\n \t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t}\n \t\t};\n \t\thead.appendChild(script);\n\n \t\treturn promise;\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 52505fec94ddd28d636e"],"sourceRoot":""} {"version":3,"sources":["webpack:///webpack/bootstrap 6fe082a249c8b1dba86f"],"names":["parentJsonpFunction","window","chunkIds","moreModules","executeModules","moduleId","chunkId","result","i","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","shift","__webpack_require__","s","installedModules","24","exports","module","l","e","installedChunkData","Promise","resolve","promise","reject","head","document","getElementsByTagName","script","createElement","type","charset","async","timeout","nc","setAttribute","src","p","0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","setTimeout","onScriptComplete","onerror","onload","clearTimeout","chunk","Error","undefined","appendChild","m","c","d","name","getter","o","defineProperty","configurable","enumerable","get","n","__esModule","object","property","oe","err","console","error"],"mappings":"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","file":"static/js/manifest.b20a86b3cf44ea708af0.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n \t\tif(executeModules) {\n \t\t\tfor(i=0; i < executeModules.length; i++) {\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// objects to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t24: 0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData === 0) {\n \t\t\treturn new Promise(function(resolve) { resolve(); });\n \t\t}\n\n \t\t// a Promise means \"currently loading\".\n \t\tif(installedChunkData) {\n \t\t\treturn installedChunkData[2];\n \t\t}\n\n \t\t// setup Promise in chunk cache\n \t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t});\n \t\tinstalledChunkData[2] = promise;\n\n \t\t// start chunk loading\n \t\tvar head = document.getElementsByTagName('head')[0];\n \t\tvar script = document.createElement('script');\n \t\tscript.type = \"text/javascript\";\n \t\tscript.charset = 'utf-8';\n \t\tscript.async = true;\n \t\tscript.timeout = 120000;\n\n \t\tif (__webpack_require__.nc) {\n \t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t}\n \t\tscript.src = __webpack_require__.p + \"static/js/\" + chunkId + \".\" + {\"0\":\"4146c25475a3e18df991\",\"1\":\"b17200cccd46e216dcb3\",\"2\":\"140338f6a5528feea1a3\",\"3\":\"776d791724a8de12ff9e\",\"4\":\"f8494b8dd039413f79c8\",\"5\":\"8fcbb35b45285576e78f\",\"6\":\"8f85de06573e2a5f9562\",\"7\":\"061807fe4716131f26f8\",\"8\":\"d1391c270de5a9f111c5\",\"9\":\"cbdb7fa4f5180acfbb03\",\"10\":\"7eeaa94fd42d34a86b92\",\"11\":\"096c0f0eaf2850056b7e\",\"12\":\"85287d948c440f963d32\",\"13\":\"4d2138ee1bee3ad573f4\",\"14\":\"429592868e75adc95933\",\"15\":\"3b3f0c03ff4fed9903cc\",\"16\":\"9616cfe0a4f7517b0841\",\"17\":\"b4bc5fa31e227bee8651\",\"18\":\"5e7f065a8d031847e833\",\"19\":\"3936346cb7e30aa279e2\",\"20\":\"5ef9c751035ee9a08f94\",\"21\":\"d8007e7169c085e13dab\"}[chunkId] + \".js\";\n \t\tvar timeout = setTimeout(onScriptComplete, 120000);\n \t\tscript.onerror = script.onload = onScriptComplete;\n \t\tfunction onScriptComplete() {\n \t\t\t// avoid mem leaks in IE.\n \t\t\tscript.onerror = script.onload = null;\n \t\t\tclearTimeout(timeout);\n \t\t\tvar chunk = installedChunks[chunkId];\n \t\t\tif(chunk !== 0) {\n \t\t\t\tif(chunk) {\n \t\t\t\t\tchunk[1](new Error('Loading chunk ' + chunkId + ' failed.'));\n \t\t\t\t}\n \t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t}\n \t\t};\n \t\thead.appendChild(script);\n\n \t\treturn promise;\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 6fe082a249c8b1dba86f"],"sourceRoot":""}
\ No newline at end of file \ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment