.
This commit is contained in:
@@ -95,13 +95,14 @@
|
|||||||
<!--<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>-->
|
<!--<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>-->
|
||||||
<script type="module">
|
<script type="module">
|
||||||
import { logout } from './api/user.js'
|
import { logout } from './api/user.js'
|
||||||
|
let { platList } = plat
|
||||||
/*import meta from './api/meta.js'*/
|
/*import meta from './api/meta.js'*/
|
||||||
//import { getServiceInfo, getServiceDetail, getServiceList } from './api/meta.js'
|
//import { getServiceInfo, getServiceDetail, getServiceList } from './api/meta.js'
|
||||||
var vm = new Vue({
|
var vm = new Vue({
|
||||||
el: ".container-fluid",
|
el: ".container-fluid",
|
||||||
data: {
|
data: {
|
||||||
sysPlat: red.getData("sysPlat"),
|
sysPlat: red.getData('sysPlat'),
|
||||||
sysPlats: red.getData("sysPlats"),
|
sysPlats: red.getData('sysPlats'),
|
||||||
pages: [
|
pages: [
|
||||||
/*{name: "DDL", url: "/qtask/ddl.html"},*/
|
/*{name: "DDL", url: "/qtask/ddl.html"},*/
|
||||||
{name: "MetaData", url: "/meta", nodes: [
|
{name: "MetaData", url: "/meta", nodes: [
|
||||||
@@ -132,16 +133,9 @@
|
|||||||
{name: "关于", url: "/single/about.html"}
|
{name: "关于", url: "/single/about.html"}
|
||||||
|
|
||||||
],
|
],
|
||||||
menus: red.getData("menus", {name: "MetaData", url: "/meta", nodes: [
|
menus: {},
|
||||||
/*{url:"/metadata/metatable/list.html", name:"TableList"},*/
|
page: {},
|
||||||
{url:"/metadata/metatable/metaTable.html", name:"MetaTable"},
|
pageId: ''
|
||||||
/*{url:"/metadata/metaLink.html", name:"MetaLink"},*/
|
|
||||||
{url:"/metadata/metaService.html", name:"MetaService"},
|
|
||||||
{url:"/metadata/dataList.html", name:"数据查询"},
|
|
||||||
]
|
|
||||||
}),
|
|
||||||
page: red.getData("page", {url:"/qtask/list.html", name:"QTask"}),
|
|
||||||
pageId: red.getData("pageId", "QTask")
|
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
page: function () {
|
page: function () {
|
||||||
@@ -174,6 +168,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted: function () {
|
mounted: function () {
|
||||||
|
this.menus = red.getData('menus', this.pages[0]['nodes'])
|
||||||
|
this.page = red.getData('page', this.menus[0])
|
||||||
|
this.pageId = red.getData("pageId", this.page['mame'])
|
||||||
//绑定事件
|
//绑定事件
|
||||||
$('.menu .nav').on('click', 'li:not(.nav-parent) > a', function() {
|
$('.menu .nav').on('click', 'li:not(.nav-parent) > a', function() {
|
||||||
var $this = $(this);
|
var $this = $(this);
|
||||||
|
|||||||
@@ -52,8 +52,8 @@
|
|||||||
<table class="table table-bordered table-hover" style="width: 100%">
|
<table class="table table-bordered table-hover" style="width: 100%">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th v-for="field in cfg.cols"
|
<th v-for="field in cfg.shows"
|
||||||
v-text="field.label"
|
v-text="getFieldLabel(field.col)"
|
||||||
:class="{'sort':field.order>0, 'sort-up':field.col==order.col && order.desc==1, 'sort-down':field.col==order.col && order.desc!=1}"
|
:class="{'sort':field.order>0, 'sort-up':field.col==order.col && order.desc==1, 'sort-down':field.col==order.col && order.desc!=1}"
|
||||||
@click="sortEvent(field.col)"
|
@click="sortEvent(field.col)"
|
||||||
>
|
>
|
||||||
@@ -63,13 +63,10 @@
|
|||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr v-for="row in list.rows">
|
<tr v-for="row in list.rows">
|
||||||
<td v-for="field in cfg.cols" v-title="dealField(row, field.col)" v-text="dealField(row, field.col)"></td>
|
<td v-for="field in cfg.shows" v-title="dealField(row, field.col)" v-text="dealField(row, field.col)"></td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<div>
|
|
||||||
<p v-text="list['rows'][0]"></p>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<ul class="pager pull-right" style="margin: 5px 10px">
|
<ul class="pager pull-right" style="margin: 5px 10px">
|
||||||
@@ -100,7 +97,8 @@
|
|||||||
el:".data-list",
|
el:".data-list",
|
||||||
data: {
|
data: {
|
||||||
cfg:{
|
cfg:{
|
||||||
cols: [],
|
items:[],
|
||||||
|
shows: [],
|
||||||
filters: []
|
filters: []
|
||||||
},
|
},
|
||||||
services:[],
|
services:[],
|
||||||
@@ -175,6 +173,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
getDataList(fbean, json => {
|
getDataList(fbean, json => {
|
||||||
|
console.log(json)
|
||||||
vm.list = json;
|
vm.list = json;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
@@ -244,7 +243,7 @@
|
|||||||
} else if (bean[field] == "unknown") { //特殊值处理
|
} else if (bean[field] == "unknown") { //特殊值处理
|
||||||
str = "";
|
str = "";
|
||||||
} else {
|
} else {
|
||||||
str = bean[field] || "";
|
str = bean[field.replace('$', '.')] || "";
|
||||||
}
|
}
|
||||||
|
|
||||||
return str;
|
return str;
|
||||||
@@ -257,7 +256,24 @@
|
|||||||
vm.order.desc = 1;
|
vm.order.desc = 1;
|
||||||
}
|
}
|
||||||
vm.findList();
|
vm.findList();
|
||||||
|
},
|
||||||
|
getFieldLabel: function (col) {
|
||||||
|
if (!col) {
|
||||||
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var items = this.cfg.items[col.split("$")[0]];
|
||||||
|
if (items) {
|
||||||
|
return items[col.split("$")[1]]['label']
|
||||||
|
/*for (var i = 0; i < items.items.length; i++) {
|
||||||
|
if (tableInfo.items[i].name == col.split("$")[1]) {
|
||||||
|
return tableInfo.items[i].label;
|
||||||
|
}
|
||||||
|
}*/
|
||||||
|
|
||||||
|
}
|
||||||
|
return '';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.serviceList();
|
this.serviceList();
|
||||||
|
|||||||
@@ -37,9 +37,9 @@
|
|||||||
<span class="input-group-btn" style="padding-left: 20px">
|
<span class="input-group-btn" style="padding-left: 20px">
|
||||||
<button @click="status=3" :class="['btn',{'btn-primary':status==3}]" type="button"> 导出配置</button>
|
<button @click="status=3" :class="['btn',{'btn-primary':status==3}]" type="button"> 导出配置</button>
|
||||||
</span>
|
</span>
|
||||||
<span class="input-group-btn">
|
<!--<span class="input-group-btn">
|
||||||
<button @click="status=4" :class="['btn',{'btn-primary':status==4}]" type="button"> 导入配置</button>
|
<button @click="status=4" :class="['btn',{'btn-primary':status==4}]" type="button"> 导入配置</button>
|
||||||
</span>
|
</span>-->
|
||||||
|
|
||||||
<span class="input-group-btn" style="padding-left: 30px">
|
<span class="input-group-btn" style="padding-left: 30px">
|
||||||
<button @click="save()" :class="['btn',{'btn-primary':status!=0},{'disabled':status==0}]" type="button"> 保存</button>
|
<button @click="save()" :class="['btn',{'btn-primary':status!=0},{'disabled':status==0}]" type="button"> 保存</button>
|
||||||
@@ -450,14 +450,14 @@
|
|||||||
*/
|
*/
|
||||||
save: function () {
|
save: function () {
|
||||||
if (vm.status == 1 && vm.itemSort.length > 0) {
|
if (vm.status == 1 && vm.itemSort.length > 0) {
|
||||||
red.post("/meta/itemsort", {
|
red.postX("/meta/itemsort", {
|
||||||
serviceKey: vm.table,
|
serviceKey: vm.table,
|
||||||
items: JSON.stringify(vm.itemSort)
|
items: JSON.stringify(vm.itemSort)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (vm.status == 2 && vm.itemEdit.length > 0) {
|
else if (vm.status == 2 && vm.itemEdit.length > 0) {
|
||||||
red.post("/meta/itemupdate", {
|
red.postX("/meta/itemupdate", {
|
||||||
serviceKey: vm.table,
|
serviceKey: vm.table,
|
||||||
items: JSON.stringify(vm.itemEdit)
|
items: JSON.stringify(vm.itemEdit)
|
||||||
});
|
});
|
||||||
@@ -468,16 +468,16 @@
|
|||||||
|
|
||||||
var dataStr = JSON.stringify(red.replace$(items[vm.status]));
|
var dataStr = JSON.stringify(red.replace$(items[vm.status]));
|
||||||
|
|
||||||
red.post(urls[vm.status], {
|
red.postX(urls[vm.status], {
|
||||||
serviceKey: this.service,
|
serviceKey: this.service,
|
||||||
items: dataStr
|
items: dataStr
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (vm.status == 5) {
|
else if (vm.status == 5) {
|
||||||
var dataStr = JSON.stringify(red.replace$(vm.serviceInfo.shows));
|
let dataStr = JSON.stringify(red.replace$(vm.serviceInfo.shows));
|
||||||
console.log("dataStr", dataStr);
|
console.log("dataStr", dataStr);
|
||||||
red.post("/meta/showsort", {
|
red.postX("/meta/showsort", {
|
||||||
serviceKey: vm.service,
|
serviceKey: vm.service,
|
||||||
items: dataStr
|
items: dataStr
|
||||||
});
|
});
|
||||||
@@ -490,7 +490,7 @@
|
|||||||
filterData.push(this.filterMap[this.filterArr[i]]);
|
filterData.push(this.filterMap[this.filterArr[i]]);
|
||||||
}
|
}
|
||||||
|
|
||||||
red.post("/meta/filter_update", {
|
red.postX("/meta/filter_update", {
|
||||||
serviceKey: vm.service,
|
serviceKey: vm.service,
|
||||||
filters: JSON.stringify(red.replace$(filterData))
|
filters: JSON.stringify(red.replace$(filterData))
|
||||||
});
|
});
|
||||||
@@ -499,7 +499,7 @@
|
|||||||
|
|
||||||
else if (vm.status == 7) {
|
else if (vm.status == 7) {
|
||||||
console.log(vm.row);
|
console.log(vm.row);
|
||||||
red.post("/meta/dbplatupdate", vm.row)
|
red.postX("/meta/dbplatupdate", vm.row)
|
||||||
}
|
}
|
||||||
|
|
||||||
else {
|
else {
|
||||||
|
|||||||
@@ -56,7 +56,7 @@
|
|||||||
<th>附加属性</th>
|
<th>附加属性</th>
|
||||||
<th>备注</th>
|
<th>备注</th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr v-for="(item, index) in meta.items">
|
<tr v-for="(item, index) in meta.items" class="item">
|
||||||
<td v-show="status==3"><input type="checkbox" v-model="meta.exports" :value="item.name" class="form-control"></td>
|
<td v-show="status==3"><input type="checkbox" v-model="meta.exports" :value="item.name" class="form-control"></td>
|
||||||
<td v-show="status==4"><input type="checkbox" v-model="meta.imports" :value="item.name" class="form-control"></td>
|
<td v-show="status==4"><input type="checkbox" v-model="meta.imports" :value="item.name" class="form-control"></td>
|
||||||
<td v-show="status==5"><input type="checkbox" v-model="meta.shows" :value="item.name" class="form-control"></td>
|
<td v-show="status==5"><input type="checkbox" v-model="meta.shows" :value="item.name" class="form-control"></td>
|
||||||
@@ -395,7 +395,7 @@
|
|||||||
setMove: function () {
|
setMove: function () {
|
||||||
if (this.status == 1) {
|
if (this.status == 1) {
|
||||||
$('#sortableList,table>tbody').sortable({
|
$('#sortableList,table>tbody').sortable({
|
||||||
selector: '.list-group-item, tr',
|
selector: '.item', // '.list-group-item, tr',
|
||||||
finish: function (e) {
|
finish: function (e) {
|
||||||
var rows = e.list;
|
var rows = e.list;
|
||||||
vm.itemSort = [];
|
vm.itemSort = [];
|
||||||
@@ -487,15 +487,17 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
save: function () {
|
save: function () {
|
||||||
|
console.log(this.itemSort)
|
||||||
if (vm.status == 1 && vm.itemSort.length > 0) {
|
if (vm.status == 1 && vm.itemSort.length > 0) {
|
||||||
red.post("/meta/itemsort", {
|
console.log(this.itemSort)
|
||||||
|
red.postX("/meta/itemsort", {
|
||||||
serviceKey: vm.table,
|
serviceKey: vm.table,
|
||||||
items: JSON.stringify(vm.itemSort)
|
items: JSON.stringify(vm.itemSort)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (vm.status == 2 && vm.itemEdit.length > 0) {
|
else if (vm.status == 2 && vm.itemEdit.length > 0) {
|
||||||
red.post("/meta/itemupdate", {
|
red.postX("/meta/itemupdate", {
|
||||||
serviceKey: vm.table,
|
serviceKey: vm.table,
|
||||||
items: JSON.stringify(vm.itemEdit)
|
items: JSON.stringify(vm.itemEdit)
|
||||||
});
|
});
|
||||||
@@ -528,7 +530,7 @@
|
|||||||
|
|
||||||
else if (vm.status == 7) {
|
else if (vm.status == 7) {
|
||||||
console.log(vm.row);
|
console.log(vm.row);
|
||||||
red.post("/meta/dbplatupdate", {metaTable: JSON.stringify(vm.row)})
|
red.postX("/meta/dbplatupdate", {metaTable: JSON.stringify(vm.row)})
|
||||||
}
|
}
|
||||||
|
|
||||||
else {
|
else {
|
||||||
|
|||||||
@@ -33,7 +33,13 @@ var red = {
|
|||||||
return plat["_key"];
|
return plat["_key"];
|
||||||
},
|
},
|
||||||
getPlatToken: function() {
|
getPlatToken: function() {
|
||||||
var plat = red.getData("sysPlat") || {};
|
let plat = red.getData("sysPlat");
|
||||||
|
if (!plat) {
|
||||||
|
red.showMsg({type:'error', placement: 'center', msg: '登陆过期,请前往登陆'});
|
||||||
|
setTimeout(function () {
|
||||||
|
location.href = "/user/login.html";
|
||||||
|
}, 2000);
|
||||||
|
}
|
||||||
return plat["token"];
|
return plat["token"];
|
||||||
},
|
},
|
||||||
getJSON: function (url, params, callback) {
|
getJSON: function (url, params, callback) {
|
||||||
@@ -69,12 +75,12 @@ var red = {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
postX(url, params) {
|
postX(url, params) {
|
||||||
|
params["platToken"] = red.getPlatToken()
|
||||||
return new Promise(resolve => {
|
return new Promise(resolve => {
|
||||||
axios({
|
axios({
|
||||||
url,
|
url,
|
||||||
method: 'post',
|
method: 'post',
|
||||||
params,
|
params,
|
||||||
|
|
||||||
}).then(res => {
|
}).then(res => {
|
||||||
let data = res.data || {}
|
let data = res.data || {}
|
||||||
red.loginCheck(data)
|
red.loginCheck(data)
|
||||||
@@ -82,9 +88,10 @@ var red = {
|
|||||||
red.showMsg({type:"error", msg: data.message})
|
red.showMsg({type:"error", msg: data.message})
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (data.code == 0) {
|
else if (data.code == 0) {
|
||||||
data = data.body
|
data = data.body
|
||||||
}
|
}
|
||||||
|
red.showMsg()
|
||||||
resolve(data)
|
resolve(data)
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
@@ -165,8 +172,8 @@ var red = {
|
|||||||
return fmt;
|
return fmt;
|
||||||
},
|
},
|
||||||
loginCheck: function (json) {
|
loginCheck: function (json) {
|
||||||
if (json && json["code"] == -2) {
|
if (json && (json['code'] == -2 || json['referid'])) {
|
||||||
red.showMsg({type:"error", placement: "center", msg: "登陆过期,请前往登陆"});
|
red.showMsg({type:'error', placement: 'center', msg: '登陆过期,请前往登陆'});
|
||||||
setTimeout(function () {
|
setTimeout(function () {
|
||||||
location.href = "/user/login.html";
|
location.href = "/user/login.html";
|
||||||
}, 2000);
|
}, 2000);
|
||||||
|
|||||||
@@ -1,12 +1,17 @@
|
|||||||
package net.tccn.dbq;
|
package net.tccn.dbq;
|
||||||
|
|
||||||
import net.tccn.base.Kv;
|
|
||||||
import net.tccn.base.PageBean;
|
import net.tccn.base.PageBean;
|
||||||
import net.tccn.dbq.fbean.FBean;
|
import net.tccn.dbq.fbean.FBean;
|
||||||
|
import net.tccn.dbq.jdbc.api.DbAccount;
|
||||||
|
import net.tccn.dbq.jdbc.api.DbKit;
|
||||||
import net.tccn.dbq.parser.ParseMysql;
|
import net.tccn.dbq.parser.ParseMysql;
|
||||||
import net.tccn.dbq.parser.Parser;
|
import net.tccn.dbq.parser.Parser;
|
||||||
|
import net.tccn.meta.MetaKit;
|
||||||
|
import net.tccn.meta.MetaService;
|
||||||
|
import net.tccn.meta.MetaTable;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
public class DbExecutors {
|
public class DbExecutors {
|
||||||
private final static Parser PARSER = new ParseMysql();
|
private final static Parser PARSER = new ParseMysql();
|
||||||
@@ -15,8 +20,20 @@ public class DbExecutors {
|
|||||||
|
|
||||||
String[] sqls = PARSER.parse(fBean);
|
String[] sqls = PARSER.parse(fBean);
|
||||||
|
|
||||||
|
//当前的业务 => 获取主表 信息 => 数据源信息 => 数据源对象 => 创建数据工具对象 => 查询数据
|
||||||
|
MetaService metaService = MetaKit.getMetaService(fBean.getName());
|
||||||
|
|
||||||
|
MetaTable mainTable = MetaKit.getMetaTableByAlias(metaService.getTable());
|
||||||
|
|
||||||
return PageBean.by(Arrays.asList(Kv.of("findSql:", sqls[0]).set("countSql", sqls[1]) ), 0);
|
DbAccount dbAccount = DbAccount.dao.findByKey(mainTable.getDbPlatId());
|
||||||
|
|
||||||
|
DbKit dbKit = new DbKit(dbAccount);
|
||||||
|
System.out.println("countSql: " + sqls[0]);
|
||||||
|
System.out.println("findSql: " + sqls[1]);
|
||||||
|
|
||||||
|
Integer count = dbKit.queryColumn(sqls[0], int.class);
|
||||||
|
List<Map> list = dbKit.findList(sqls[1], Map.class);
|
||||||
|
|
||||||
|
return PageBean.by(list, count);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,17 +42,18 @@ public class DbSourceMysql implements DbSource {
|
|||||||
Map row = new HashMap();
|
Map row = new HashMap();
|
||||||
for (int i = 1; i <= count; i++) {
|
for (int i = 1; i <= count; i++) {
|
||||||
String columnTypeName = metaData.getColumnTypeName(i);
|
String columnTypeName = metaData.getColumnTypeName(i);
|
||||||
String columnName = metaData.getColumnName(i);
|
//String columnName = metaData.getColumnName(i);
|
||||||
row.put(columnName, null);
|
String columnLabel = metaData.getColumnLabel(i);
|
||||||
|
row.put(columnLabel, null);
|
||||||
|
|
||||||
if (rs.getObject(i) != null) {
|
if (rs.getObject(i) != null) {
|
||||||
switch (columnTypeName) {
|
switch (columnTypeName) {
|
||||||
case "DATETIME":
|
case "DATETIME":
|
||||||
case "TIMESTAMP":
|
case "TIMESTAMP":
|
||||||
case "DATE":
|
case "DATE":
|
||||||
row.put(columnName, rs.getTimestamp(i).getTime()); break;
|
row.put(columnLabel, rs.getTimestamp(i).getTime()); break;
|
||||||
default:
|
default:
|
||||||
row.put(columnName, rs.getObject(i));
|
row.put(columnLabel, rs.getObject(i));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -134,7 +134,7 @@ public class ParseMysql implements Parser {
|
|||||||
if (!isEmpty.test(shows)) {
|
if (!isEmpty.test(shows)) {
|
||||||
shows.forEach(x -> {
|
shows.forEach(x -> {
|
||||||
//buf.append("`").append("x").append("`").append(",");
|
//buf.append("`").append("x").append("`").append(",");
|
||||||
bufSelect.append(x).append(",");
|
bufSelect.append(x).append(" as ").append("'").append(x.replace(".", "\\.")).append("',");
|
||||||
});
|
});
|
||||||
bufSelect.deleteCharAt(bufSelect.length() - 1);
|
bufSelect.deleteCharAt(bufSelect.length() - 1);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -157,8 +157,10 @@ public class MetadataService extends BaseService { //arango
|
|||||||
public List<String> showSort(String serviceKey , List<String> items, @RestParam(name = "platToken") String token) {
|
public List<String> showSort(String serviceKey , List<String> items, @RestParam(name = "platToken") String token) {
|
||||||
if (items == null || items.size() == 0) return null;
|
if (items == null || items.size() == 0) return null;
|
||||||
|
|
||||||
MetaKit.showUpdate.apply(serviceKey, items);
|
MetaService metaService = MetaKit.getMetaService(serviceKey);
|
||||||
|
|
||||||
|
metaService.setShows(items);
|
||||||
|
metaService.update();
|
||||||
return items;
|
return items;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -122,6 +122,8 @@ public class RunTest<T> {
|
|||||||
|
|
||||||
//System.out.println("a$id".split("[$]")[0]);
|
//System.out.println("a$id".split("[$]")[0]);
|
||||||
|
|
||||||
|
System.out.println("x.abx".replace(".", "\\."));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
Reference in New Issue
Block a user