支持查询条件自定义名称

This commit is contained in:
2019-04-24 14:14:39 +08:00
parent 211e59ea3b
commit 0527faf25e
7 changed files with 104 additions and 75 deletions

View File

@@ -62,6 +62,10 @@ const meta = {
shows = red.replace$(shows); shows = red.replace$(shows);
return red.postX('/meta/showsort', {name, shows: JSON.stringify(shows)}) return red.postX('/meta/showsort', {name, shows: JSON.stringify(shows)})
}, },
filterSave({name, filters}) {
filters = red.replace$(filters);
return red.postX('/meta/filter_update', {name, filters: JSON.stringify(filters)})
},
// Meta-Table // Meta-Table
itemSort({alias, items}) { itemSort({alias, items}) {

View File

@@ -90,7 +90,7 @@
</div> </div>
<!-- 实体字段信息 --> <!-- 实体字段信息 -->
<div class="col-md-5" style="padding-left: 0px;"> <div class="col-md-4" style="padding-left: 0px;">
<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 class="table table-bordered">
<tr> <tr>
@@ -98,8 +98,8 @@
<th v-show="status==1"></th> <th v-show="status==1"></th>
<th>字段名</th> <th>字段名</th>
<th>中文名</th> <th>中文名</th>
<th>数据类型</th> <!--<th>数据类型</th>
<!--<th>输入类型</th> <th>输入类型</th>
<th>附加属性</th> <th>附加属性</th>
<th>备注</th>--> <th>备注</th>-->
</tr> </tr>
@@ -111,15 +111,15 @@
<td v-text="item.name" style="background-color: rgb(235, 235, 228);"></td> <td v-text="item.name" style="background-color: rgb(235, 235, 228);"></td>
<td v-text="item.label"></td> <td v-text="item.label"></td>
<td v-text="item.type"></td> <!--<td v-text="item.type"></td>
<!--<td v-text="item.inType"></td> <td v-text="item.inType"></td>
<td v-text="item.inExt"></td> <td v-text="item.inExt"></td>
<td v-text="item.remark"></td>--> <td v-text="item.remark"></td>-->
</tr> </tr>
</table> </table>
</div> </div>
<div class="col-md-5" style="padding-left: 0px;padding-right: 0px;"> <div class="col-md-6" style="padding-left: 0px;padding-right: 0px;">
<!-- shows --> <!-- shows -->
<div id="show" v-show="status==5"> <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>
@@ -138,7 +138,7 @@
<input name="label" :value="item.label" type="hidden"> <input name="label" :value="item.label" type="hidden">
</td> </td>
<td v-text="item.col" style="background-color: rgb(235, 235, 228);"></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> <td style="padding: 1px;"><input v-model="item.label" class="form-control" style="width: 130px;padding: 0px"></td>
</tr> </tr>
</table> </table>
</div> </div>
@@ -208,20 +208,20 @@
<th>支持查询类型</th> <th>支持查询类型</th>
</tr> </tr>
</thead> </thead>
<tr v-for="(item, index) in filterArr"> <tr v-for="item in serviceInfo.filters">
<td class="icon icon-move"> <td class="icon icon-move">
<input name="name" :value="item" type="hidden"> <input type="hidden" name="item" :value="JSON.stringify(item)">
</td> </td>
<td v-text="item" style="background-color: rgb(235, 235, 228);"></td> <td v-text="item.name" style="background-color: rgb(235, 235, 228);"></td>
<td v-text="">{{getFieldLabel(item)}}</td> <td style="padding: 1px;"><input v-model="item.label" class="form-control" style="width: 130px;padding: 0px"></td>
<td> <td style="padding: 1px;">
<label> <label>
<input type="checkbox" v-model="filterMap[item].checked" value="1"> 展示 <input type="checkbox" v-model="item.checked" value="1"> 展示
</label> </label>
</td> </td>
<td> <td style="padding: 1px;">
<label class="checkbox-inline" v-for="c in filterCate"> <label class="checkbox-inline" v-for="c in filterCate">
<input type="checkbox" v-model="filterMap[item].filterType" :value="c"> {{c}} <input type="checkbox" v-model="item.filterType" :value="c"> {{c}}
</label> </label>
</td> </td>
</tr> </tr>
@@ -274,7 +274,7 @@
</row> </row>
<script> <script>
let { getServiceInfo, getServiceDetail, getServiceList, tableLinkList, serviceSave, showSave } = meta; let { getServiceInfo, getServiceDetail, getServiceList, tableLinkList, serviceSave, showSave, filterSave } = meta;
let { showOk } = red let { showOk } = red
var vm = new Vue({ var vm = new Vue({
@@ -294,7 +294,7 @@
shows: [], shows: [],
exports: [], exports: [],
imports: [], imports: [],
filters: [{name:"", filterType:[""]}] filters: [{name: '', label: '', filterType: ['']}]
}, },
serviceDetail: {tables: {a:{items:[]}}}, serviceDetail: {tables: {a:{items:[]}}},
@@ -316,8 +316,10 @@
services: [],//业务列表 services: [],//业务列表
service: "", //页面选择的业务类型 service: "", //页面选择的业务类型
table: "",//表别名 table: "",//表别名
//filter
filterArr:[], filterArr:[],
filterMap:{}, //filterMap:{},
createRow: {}, createRow: {},
tables: [], tables: [],
@@ -339,19 +341,17 @@
this.loadDetail(v); this.loadDetail(v);
}, },
serviceInfo: function(v) { serviceInfo: function(v) {
let arr = []; //filters
let map = {}; let filterArr = [];
v["filters"].forEach(function (f) { v['filters'].forEach(function (f) {
arr.push(f["name"]); filterArr.push(f["name"]);
map[f["name"]] = f;
}); });
this.filterMap = map; this.filterArr = filterArr;
this.filterArr = arr;
//shows //shows
let showFields = [] let showFields = []
for (let i in v.shows) { for (let i in v['shows']) {
showFields.push(v.shows[i]['col']) showFields.push(v['shows'][i]['col'])
} }
this.showFields = showFields this.showFields = showFields
}, },
@@ -366,23 +366,47 @@
sheet: function (v) { sheet: function (v) {
this.table = v; this.table = v;
}, },
filterArr: function (v) { filterArr: function (v) { // 添加或删除选项触发
let map = {}; let filters = this.serviceInfo.filters
for(j in v) { //添加新增的
let k = v[j]; a:for (let i in v) {
map[k] = this.filterMap[k]; b:for (let j in filters) {
if (!map[k]) { if (v[i] == filters[j]['name']) {
for (i in vm.serviceInfo.filters) { if (!filters[j]['label']) {
if (vm.serviceInfo.filters[i]["name"] == k) { filters[j]['label'] = this.getFieldLabel(v[i])
map[k] = vm.serviceInfo.filters[i];
} }
continue a
} }
} }
if (!map[k]) { let label = this.getFieldLabel(v[i])
map[k] = {name: k, filterType:["EQUAL"], checked: false};//构造filter 对象 filters.push({name: v[i], label, filterType:["EQUAL"], checked: false})//构造filter 对象
}
// 去除删除的
let _filters = []
a:for(let i in filters) {
b:for (let j in v) {
if (filters[i]['name'] == v[j]) {
_filters.push(filters[i])
continue a;
}
} }
} }
this.filterMap = map; this.serviceInfo.filters = _filters
/*for(j in v) {
let k = v[j];
for (i in vm.serviceInfo.filters) {
if (vm.serviceInfo.filters[i]["name"] == k) {
map[k] = vm.serviceInfo.filters[i];
}
}
if (!map[k]) { //新增
let label = this.getFieldLabel(k)
map[k] = {name: k, label, filterType:["EQUAL"], checked: false};//构造filter 对象
}
}*/
//this.filterMap = map;
//vm.serviceInfo.filters = map;
}, },
showFields(v) { showFields(v) {
let shows = this.serviceInfo.shows let shows = this.serviceInfo.shows
@@ -448,6 +472,15 @@
return ''; return '';
}, },
setMove: function () { setMove: function () {
$(`#filter>table>tbody,
#show>table>tbody,
#show>table>tbody`).sortable({
selector: 'tr',
trigger: '.icon',
finish: function (e) {}
});
if (this.status == 1) { if (this.status == 1) {
$('#sortableList,table>tbody').sortable({ $('#sortableList,table>tbody').sortable({
selector: '.list-group-item, tr', selector: '.list-group-item, tr',
@@ -463,11 +496,11 @@
}); });
} }
else if (this.status == 5) { else if (this.status == 5) {
$('#show>table>tbody').sortable({ /*$('#show>table>tbody').sortable({
selector: 'tr', selector: 'tr',
trigger: '.icon', trigger: '.icon',
finish: function (e) {} finish: function (e) {}
}); });*/
} else if (this.status == 4) { } else if (this.status == 4) {
$('#import>table>tbody').sortable({ $('#import>table>tbody').sortable({
selector: 'tr', selector: 'tr',
@@ -485,10 +518,10 @@
$('#export>table>tbody').sortable({ $('#export>table>tbody').sortable({
selector: 'tr', selector: 'tr',
finish: function (e) { finish: function (e) {
var rows = e.list; let rows = e.list;
var shows = []; let shows = [];
for (var i = 0; i < rows.length; i++) { for (let i = 0; i < rows.length; i++) {
var item = $(rows[i]).find("input[name='name']").val(); let item = $(rows[i]).find("input[name='name']").val();
shows.push(item); shows.push(item);
} }
vm.serviceInfo.exports = shows; vm.serviceInfo.exports = shows;
@@ -496,18 +529,11 @@
}); });
} }
else if (this.status == 6) { else if (this.status == 6) {
$('#filter>table>tbody').sortable({ /*$('#filter>table>tbody').sortable({
selector: 'tr', selector: 'tr',
finish: function (e) { trigger: '.icon',
var rows = e.list; finish: function (e) {}
var filterArr = []; });*/
for (var i = 0; i < rows.length; i++) {
var item = $(rows[i]).find("input[name='name']").val();
filterArr.push(item);
}
vm.filterArr = filterArr;
}
});
} }
else { else {
@@ -573,7 +599,14 @@
} }
else if (vm.status == 6) { else if (vm.status == 6) {
let filterData = []; let doms = $("#filter>table>tbody>tr")
let filters = []
for (let i = 0; i < doms.length; i++) {
let item = $(doms[i]).find("input[name='item']").val();
filters.push(JSON.parse(item))
}
filterSave({name: this.service, filters}).then(res => red.showOk())
/*let filterData = [];
for (i in this.filterArr) { for (i in this.filterArr) {
filterData.push(this.filterMap[this.filterArr[i]]); filterData.push(this.filterMap[this.filterArr[i]]);
@@ -582,7 +615,7 @@
red.postX("/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))
}).then(() => showOk()); }).then(() => showOk());*/
} }

View File

@@ -94,9 +94,6 @@
}, },
}, },
mounted: function () { mounted: function () {
red.dbPlats(function (json) {
vm.dbPlats = json;
});
this.tableList(); this.tableList();
} }

View File

@@ -139,6 +139,7 @@
<script> <script>
let {getTableList, tableInfo, itemSort, itemUpdate} = meta; let {getTableList, tableInfo, itemSort, itemUpdate} = meta;
let {showOk} = red let {showOk} = red
let {dbList} = plat
var vm = new Vue({ var vm = new Vue({
el: ".meta-list", el: ".meta-list",
@@ -422,10 +423,9 @@
}, },
mounted: function (){ mounted: function (){
//dbPlats 列表初始化 dbList().then(res => {
red.dbPlats(function (json) { this.dbPlats = res.rows;
vm.dbPlats = json; })
});
this.tableList(); this.tableList();

View File

@@ -147,11 +147,6 @@ var red = {
callback(json); callback(json);
}); });
}, },
dbPlats: function(callBack) {
red.getJSON("/meta/db_plat_list", {}, function (json) {
callBack(json);
});
},
putAll: function(t, s) { putAll: function(t, s) {
t = t || {}; t = t || {};
@@ -191,8 +186,8 @@ var red = {
} }
}, },
replaceAll: function (d, s, t) { replaceAll: function (d, s, t) {
var reg=new RegExp(s,"g"); //创建正则RegExp对象 let reg=new RegExp(s,"g"); //创建正则RegExp对象
var str = JSON.stringify(d); let str = JSON.stringify(d);
str = str.replace(reg, t) str = str.replace(reg, t)
return JSON.parse(str); return JSON.parse(str);
}, },

View File

@@ -302,7 +302,7 @@ public class MetaKit {
.findFirst() .findFirst()
.ifPresent(y -> { .ifPresent(y -> {
filter.set("name", x.get("name")); filter.set("name", x.get("name"));
filter.set("label", y.getLabel()); filter.set("label", x.get("label") != null ? x.get("label") : y.getLabel());
List<Kv> types = new ArrayList<>(); List<Kv> types = new ArrayList<>();
List<String> list = (List) x.get("filterType"); List<String> list = (List) x.get("filterType");
list.forEach(t -> { list.forEach(t -> {

View File

@@ -196,11 +196,11 @@ public class MetadataService extends BaseService { //arango
} }
@RestMapping(name = "filter_update", comment = "查询配置修改") @RestMapping(name = "filter_update", comment = "查询配置修改")
public JBean filterUpdate(@RestParam(name = "serviceKey") String serviceKey, public JBean filterUpdate(@RestParam(name = "name") String name,
@RestParam(name = "filters") String filters, @RestParam(name = "filters") String filters,
@RestParam(name = "platToken") String token) { @RestParam(name = "platToken") String token) {
List _filters = gson.fromJson(filters, List.class); List _filters = gson.fromJson(filters, List.class);
MetaService metaService = MetaKit.getMetaService(serviceKey, token); MetaService metaService = MetaKit.getMetaService(name, token);
metaService.setFilters(_filters); metaService.setFilters(_filters);
metaService.update(); metaService.update();