1、支持列表自定义表头
2、业务完事,代码优化
This commit is contained in:
@@ -18,16 +18,6 @@ const meta = {
|
||||
},
|
||||
getServiceInfo({name}, callback) {
|
||||
red.getJSON("/meta/service_info",{name}, res => {
|
||||
/*let row = red.replacePoint(res)
|
||||
console.log(row)
|
||||
|
||||
//let [name, comment, table, edits, imports, shows, exports, filters] = red.replacePoint(res);
|
||||
|
||||
|
||||
row.shows = row.shows || [];
|
||||
row.exports = row.exports || [];
|
||||
row.imports = row.imports || [];
|
||||
row.filters = row.filters || [];*/
|
||||
|
||||
let {name, comment, table, edits, imports, shows, exports, filters} = red.replacePoint(res)
|
||||
|
||||
@@ -67,6 +57,12 @@ const meta = {
|
||||
return red.postX('/meta/tableinfo', {name, alias})
|
||||
},
|
||||
|
||||
//meta-service
|
||||
showSave({name, shows}) {
|
||||
shows = red.replace$(shows);
|
||||
return red.postX('/meta/showsort', {name, shows: JSON.stringify(shows)})
|
||||
},
|
||||
|
||||
// Meta-Table
|
||||
itemSort({alias, items}) {
|
||||
return red.postX('/meta/itemsort', {alias, items: JSON.stringify(items)})
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
<thead>
|
||||
<tr>
|
||||
<th v-for="field in cfg.shows"
|
||||
v-text="getFieldLabel(field.col)"
|
||||
v-text="field.label || 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}"
|
||||
@click="sortEvent(field.col)"
|
||||
>
|
||||
|
||||
@@ -106,7 +106,7 @@
|
||||
<tr v-for="(item, index) in serviceDetail['tables'][sheet].items">
|
||||
<td v-show="status==3"><input type="checkbox" v-model="serviceInfo.exports" :value="sheet + '$' + item.name"></td>
|
||||
<td v-show="status==4"><input type="checkbox" v-model="serviceInfo.imports" :value="sheet + '$' + item.name"></td>
|
||||
<td v-show="status==5"><input type="checkbox" v-model="serviceInfo.shows" :value="sheet + '$' + item.name"></td>
|
||||
<td v-show="status==5"><input type="checkbox" v-model="showFields" :value="sheet + '$' + item.name"></td>
|
||||
<td v-show="status==6"><input type="checkbox" v-model="filterArr" :value="sheet + '$' + item.name"></td>
|
||||
|
||||
<td v-text="item.name" style="background-color: rgb(235, 235, 228);"></td>
|
||||
@@ -122,23 +122,23 @@
|
||||
<div class="col-md-5" style="padding-left: 0px;padding-right: 0px;">
|
||||
<!-- shows -->
|
||||
<div id="show" v-show="status==5">
|
||||
<div style="padding-left: 10px;background-color: #ccc;width: 100%"> 展示字段配置</div>
|
||||
<div style="padding-left: 10px;background-color: #ccc;width: 100%"> 列表配置</div>
|
||||
<table class="table table-bordered table-auto" style="width: 100%;background-color: #fff;">
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th>字段名</th>
|
||||
<th>中文名</th>
|
||||
<th>数据字段</th>
|
||||
<th>表头名称</th>
|
||||
<!--<th>支持排序</th>-->
|
||||
</tr>
|
||||
</thead>
|
||||
<tr v-for="(item, index) in serviceInfo.shows">
|
||||
<td class="icon icon-move">
|
||||
<input name="name" :value="item" type="hidden">
|
||||
<input name="col" :value="item.col" type="hidden">
|
||||
<input name="label" :value="item.label" type="hidden">
|
||||
</td>
|
||||
<td v-text="item" style="background-color: rgb(235, 235, 228);"></td>
|
||||
<td v-text="">{{getFieldLabel(item)}}</td>
|
||||
<td v-show="false"><input v-model="item.label" style="width: 100px;"></td>
|
||||
<td v-text="item.col" style="background-color: rgb(235, 235, 228);"></td>
|
||||
<td ><input v-model="item.label" class="form-control" style="width: 100px;padding: 0px"></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
@@ -274,9 +274,7 @@
|
||||
</row>
|
||||
|
||||
<script>
|
||||
//import { login } from '../api/user.js'
|
||||
//import { getServiceInfo, getServiceDetail, getServiceList } from '/api/meta.js'
|
||||
let { getServiceInfo, getServiceDetail, getServiceList, tableLinkList, serviceSave } = meta;
|
||||
let { getServiceInfo, getServiceDetail, getServiceList, tableLinkList, serviceSave, showSave } = meta;
|
||||
let { showOk } = red
|
||||
|
||||
var vm = new Vue({
|
||||
@@ -323,6 +321,9 @@
|
||||
|
||||
createRow: {},
|
||||
tables: [],
|
||||
|
||||
//shows
|
||||
showFields: []
|
||||
},
|
||||
watch: {
|
||||
status: function (v) {
|
||||
@@ -346,6 +347,13 @@
|
||||
});
|
||||
this.filterMap = map;
|
||||
this.filterArr = arr;
|
||||
|
||||
//shows
|
||||
let showFields = []
|
||||
for (let i in v.shows) {
|
||||
showFields.push(v.shows[i]['col'])
|
||||
}
|
||||
this.showFields = showFields
|
||||
},
|
||||
serviceDetail: function (v) {
|
||||
var arr = [];
|
||||
@@ -376,6 +384,36 @@
|
||||
}
|
||||
this.filterMap = map;
|
||||
},
|
||||
showFields(v) {
|
||||
let shows = this.serviceInfo.shows
|
||||
|
||||
//添加新增的
|
||||
a:for(let i in v) {
|
||||
b:for(let j in shows) {
|
||||
if (v[i] == shows[j]['col']) {
|
||||
if (!shows[j]['label']) {
|
||||
shows[j]['label'] = this.getFieldLabel(v[i])
|
||||
}
|
||||
continue a
|
||||
}
|
||||
}
|
||||
let label = this.getFieldLabel(v[i])
|
||||
shows.push({col: v[i], label: label})
|
||||
}
|
||||
|
||||
//去除删除的
|
||||
let _shows = []
|
||||
a:for(let i in shows) {
|
||||
b:for (let j in v) {
|
||||
if (shows[i]['col'] == v[j]) {
|
||||
_shows.push(shows[i])
|
||||
continue a;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.serviceInfo.shows = _shows
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
loadInfo(name) {
|
||||
@@ -398,9 +436,9 @@
|
||||
return "";
|
||||
}
|
||||
|
||||
var tableInfo = vm.serviceDetail['tables'][col.split("$")[0]];
|
||||
let tableInfo = vm.serviceDetail['tables'][col.split("$")[0]];
|
||||
if (tableInfo) {
|
||||
for (var i = 0; i < tableInfo.items.length; i++) {
|
||||
for (let i = 0; i < tableInfo.items.length; i++) {
|
||||
if (tableInfo.items[i].name == col.split("$")[1]) {
|
||||
return tableInfo.items[i].label;
|
||||
}
|
||||
@@ -409,14 +447,6 @@
|
||||
}
|
||||
return '';
|
||||
},
|
||||
/*catalogs: function() {
|
||||
var dbPlats = this.dbPlats;
|
||||
for (i in dbPlats) {
|
||||
if (dbPlats[i].key == this.row.dbPlatId) {
|
||||
return dbPlats[i]["catalogs"]
|
||||
}
|
||||
}
|
||||
},*/
|
||||
setMove: function () {
|
||||
if (this.status == 1) {
|
||||
$('#sortableList,table>tbody').sortable({
|
||||
@@ -435,15 +465,8 @@
|
||||
else if (this.status == 5) {
|
||||
$('#show>table>tbody').sortable({
|
||||
selector: 'tr',
|
||||
finish: function (e) {
|
||||
var rows = e.list;
|
||||
var shows = [];
|
||||
for (var i = 0; i < rows.length; i++) {
|
||||
var item = $(rows[i]).find("input[name='name']").val();
|
||||
shows.push(item);
|
||||
}
|
||||
vm.serviceInfo.shows = shows;
|
||||
}
|
||||
trigger: '.icon',
|
||||
finish: function (e) {}
|
||||
});
|
||||
} else if (this.status == 4) {
|
||||
$('#import>table>tbody').sortable({
|
||||
@@ -538,12 +561,15 @@
|
||||
}
|
||||
|
||||
else if (vm.status == 5) {
|
||||
let dataStr = JSON.stringify(red.replace$(vm.serviceInfo.shows));
|
||||
console.log("dataStr", dataStr);
|
||||
red.postX("/meta/showsort", {
|
||||
serviceKey: vm.service,
|
||||
items: dataStr
|
||||
}).then(() => showOk());
|
||||
let doms = $("#show>table>tbody>tr")
|
||||
let shows = []
|
||||
for (let i = 0; i < doms.length; i++) {
|
||||
let col = $(doms[i]).find("input[name='col']").val();
|
||||
let label = $(doms[i]).find("input[name='label']").val();
|
||||
shows.push({col, label})
|
||||
}
|
||||
|
||||
showSave({name: this.service, shows}).then(res => {red.showOk()})
|
||||
}
|
||||
|
||||
else if (vm.status == 6) {
|
||||
@@ -595,44 +621,8 @@
|
||||
|
||||
},
|
||||
mounted: function (){
|
||||
//dbPlats 列表初始化
|
||||
/*red.dbPlats(function (json) {
|
||||
vm.dbPlats = json;
|
||||
});*/
|
||||
|
||||
this.serviceList();
|
||||
}
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
<!--
|
||||
<row class="">
|
||||
|
||||
|
||||
</row>
|
||||
|
||||
<script>
|
||||
var vm = new Vue({
|
||||
el: ".meta-service",
|
||||
data: {
|
||||
|
||||
},
|
||||
watch: {
|
||||
|
||||
},
|
||||
methods: {
|
||||
|
||||
},
|
||||
mounted: function () {
|
||||
var m = {"a.name": "lxyer", "a.`age`": 11}
|
||||
|
||||
console.log(m["a.name"])
|
||||
|
||||
console.log("---------")
|
||||
for (var k in m) {
|
||||
console.log(k)
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>-->
|
||||
</script>
|
||||
@@ -174,4 +174,13 @@ th{
|
||||
.tlist>li>a:hover {
|
||||
background-color: #e2effc;
|
||||
border-radius: 2px 0 0 2px;
|
||||
}
|
||||
|
||||
/* 为可拖动的条目应用可移动光标类型 */
|
||||
tr {cursor: move}
|
||||
|
||||
/* 为正在被拖动的条目应用半透明外观 */
|
||||
tr.dragging {
|
||||
visibility: visible;
|
||||
opacity: .3;
|
||||
}
|
||||
@@ -192,7 +192,7 @@ public class MetaKit {
|
||||
};
|
||||
|
||||
//listcfg
|
||||
public static Function<MetaService, Kv> builderCfg = (m) -> {
|
||||
/*public static Function<MetaService, Kv> builderCfg = (m) -> {
|
||||
List<String> shows = m.getShows();
|
||||
List<Map> filters = m.getFilters();
|
||||
|
||||
@@ -240,9 +240,9 @@ public class MetaKit {
|
||||
_filters.add(filter);
|
||||
});
|
||||
|
||||
/*shows.forEach(x -> {
|
||||
*//*shows.forEach(x -> {
|
||||
_shows.add(Kv.of("name", x).set("label", getFieldLabel(x)));
|
||||
});*/
|
||||
});*//*
|
||||
|
||||
Kv cfg = Kv.of();
|
||||
cfg.set("title", m.getName())//业务名称
|
||||
@@ -252,13 +252,13 @@ public class MetaKit {
|
||||
.set("filters", _filters);//查询过滤条件
|
||||
|
||||
return cfg;
|
||||
};
|
||||
};*/
|
||||
|
||||
public static Map cfg(String name, String token) {
|
||||
MetaService metaService = getMetaService(name, token);
|
||||
Kv<String, MetaTable> metaTables = getMetaTables(metaService, false);
|
||||
|
||||
List<String> shows = metaService.getShows();
|
||||
List<Map<String, String>> shows = metaService.getShows();
|
||||
List<Map> edits = metaService.getEdits();
|
||||
List<String> details = metaService.getDetails();
|
||||
List<Map> filters = metaService.getFilters();
|
||||
@@ -282,14 +282,13 @@ public class MetaKit {
|
||||
});
|
||||
|
||||
//shows
|
||||
List _shows = new ArrayList();
|
||||
/*List _shows = new ArrayList();
|
||||
shows.forEach(x -> {
|
||||
MetaTable metaTable = metaTables.get(x.split("[.]")[0]); // 表别名
|
||||
metaTable.getItems()
|
||||
.stream()
|
||||
metaTable.getItems().stream()
|
||||
.filter(y -> x.split("[.]")[1].equals(y.getName()))
|
||||
.findFirst().ifPresent(y -> _shows.add(Kv.of("col", x).set("order", true)));
|
||||
});
|
||||
});*/
|
||||
|
||||
//filters
|
||||
List<Map> _filters = new ArrayList<>();
|
||||
@@ -298,8 +297,7 @@ public class MetaKit {
|
||||
MetaTable metaTable = metaTables.get(col.split("[.]")[0]); // 表别名
|
||||
|
||||
Kv filter = Kv.of();
|
||||
metaTable.getItems()
|
||||
.stream()
|
||||
metaTable.getItems().stream()
|
||||
.filter(y -> col.split("[.]")[1].equals(y.getName()))
|
||||
.findFirst()
|
||||
.ifPresent(y -> {
|
||||
@@ -364,7 +362,7 @@ public class MetaKit {
|
||||
return Kv.of()
|
||||
.set("title", comment)
|
||||
.set("items", _items2)
|
||||
.set("shows", _shows)
|
||||
.set("shows", shows)
|
||||
.set("filters", _filters)
|
||||
.set("edits", _edits)
|
||||
.set("details", _details);
|
||||
@@ -479,7 +477,7 @@ public class MetaKit {
|
||||
return alias;
|
||||
}),
|
||||
metaService.getExports().stream().map(x -> x.split("[.]")[0]),
|
||||
metaService.getShows().stream().map(x -> x.split("[.]")[0])/*, todo: xxx
|
||||
metaService.getShows().stream().map(x -> x.get("col").split("[.]")[0])/*, todo: xxx
|
||||
metaService.getEdits().stream().map(x -> x.split("[.]")[0])*/
|
||||
);
|
||||
|
||||
|
||||
@@ -105,10 +105,14 @@ public class ParseMysql implements Parser {
|
||||
|
||||
Kv<String, MetaTable> tables = MetaKit.getMetaTables(metaService, false);//所有的关联表信息
|
||||
MetaTable metaTable = tables.get(metaService.getTable());//基础元数据
|
||||
List<String> shows = metaService.getShows();//查询的属性
|
||||
List<Map<String, String>> shows = metaService.getShows();//查询的属性
|
||||
|
||||
List<String> _filters = fBean.getFilters().stream().map(Filter::getCol).collect(Collectors.toList());
|
||||
List<MetaLink> links = MetaKit.getMetaLinks(metaService.getTable(), shows, _filters);
|
||||
List<MetaLink> links = MetaKit.getMetaLinks(
|
||||
metaService.getTable(),
|
||||
shows.stream().map(x -> x.get("col")).collect(Collectors.toList()),
|
||||
_filters
|
||||
);
|
||||
//查询条件
|
||||
List<Filter> filters = fBean.getFilters();
|
||||
Limit limit = fBean.getLimit();
|
||||
@@ -131,7 +135,7 @@ public class ParseMysql implements Parser {
|
||||
if (!isEmpty.test(shows)) {
|
||||
shows.forEach(x -> {
|
||||
//buf.append("`").append("x").append("`").append(",");
|
||||
bufSelect.append(x).append(" as ").append("'").append(x).append("',");
|
||||
bufSelect.append(x.get("col")).append(" as ").append("'").append(x.get("col")).append("',");
|
||||
});
|
||||
bufSelect.deleteCharAt(bufSelect.length() - 1);
|
||||
} else {
|
||||
|
||||
@@ -17,11 +17,9 @@ public class MetaService extends Doc<MetaService> {
|
||||
private String name; //业务标识
|
||||
private String table; //主体表别名
|
||||
private String comment; //业务中文名
|
||||
//private List<String> links; //["link._key1","link._key2"]
|
||||
|
||||
private String sysPlatId; //平台id
|
||||
|
||||
private List<String> shows = new ArrayList<>();
|
||||
private List<Map<String,String>> shows = new ArrayList<>();
|
||||
private List<Map> edits = new ArrayList<>();
|
||||
private List<String> details = new ArrayList<>();
|
||||
private List<Map> filters = new ArrayList<>();
|
||||
@@ -64,19 +62,12 @@ public class MetaService extends Doc<MetaService> {
|
||||
public void setSysPlatId(String sysPlatId) {
|
||||
this.sysPlatId = sysPlatId;
|
||||
}
|
||||
/*public List<String> getLinks() {
|
||||
return links;
|
||||
}
|
||||
|
||||
public void setLinks(List<String> links) {
|
||||
this.links = links;
|
||||
}*/
|
||||
|
||||
public List<String> getShows() {
|
||||
public List<Map<String, String>> getShows() {
|
||||
return shows;
|
||||
}
|
||||
|
||||
public void setShows(List<String> shows) {
|
||||
public void setShows(List<Map<String, String>> shows) {
|
||||
this.shows = shows;
|
||||
}
|
||||
|
||||
|
||||
@@ -149,12 +149,12 @@ public class MetadataService extends BaseService { //arango
|
||||
}
|
||||
|
||||
@RestMapping(name = "showsort", comment = "展示字段修改")
|
||||
public JBean showSort(String serviceKey , List<String> items, @RestParam(name = "platToken") String token) {
|
||||
if (items == null || items.size() == 0) return null;
|
||||
public JBean showSort(String name , List<Map<String,String>> shows, @RestParam(name = "platToken") String token) {
|
||||
if (shows == null || shows.size() == 0) return null;
|
||||
|
||||
MetaService metaService = MetaKit.getMetaService(serviceKey, token);
|
||||
MetaService metaService = MetaKit.getMetaService(name, token);
|
||||
|
||||
metaService.setShows(items);
|
||||
metaService.setShows(shows);
|
||||
metaService.update();
|
||||
MetaKit.reload(metaService);
|
||||
return JBean.OK;
|
||||
|
||||
Reference in New Issue
Block a user