支持查询条件自定义名称
This commit is contained in:
@@ -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}) {
|
||||||
|
|||||||
@@ -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) {
|
//添加新增的
|
||||||
|
a:for (let i in v) {
|
||||||
|
b:for (let j in filters) {
|
||||||
|
if (v[i] == filters[j]['name']) {
|
||||||
|
if (!filters[j]['label']) {
|
||||||
|
filters[j]['label'] = this.getFieldLabel(v[i])
|
||||||
|
}
|
||||||
|
continue a
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let label = this.getFieldLabel(v[i])
|
||||||
|
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.serviceInfo.filters = _filters
|
||||||
|
/*for(j in v) {
|
||||||
let k = v[j];
|
let k = v[j];
|
||||||
map[k] = this.filterMap[k];
|
|
||||||
if (!map[k]) {
|
|
||||||
for (i in vm.serviceInfo.filters) {
|
for (i in vm.serviceInfo.filters) {
|
||||||
if (vm.serviceInfo.filters[i]["name"] == k) {
|
if (vm.serviceInfo.filters[i]["name"] == k) {
|
||||||
map[k] = vm.serviceInfo.filters[i];
|
map[k] = vm.serviceInfo.filters[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (!map[k]) { //新增
|
||||||
|
let label = this.getFieldLabel(k)
|
||||||
|
map[k] = {name: k, label, filterType:["EQUAL"], checked: false};//构造filter 对象
|
||||||
}
|
}
|
||||||
if (!map[k]) {
|
}*/
|
||||||
map[k] = {name: k, filterType:["EQUAL"], checked: false};//构造filter 对象
|
//this.filterMap = map;
|
||||||
}
|
//vm.serviceInfo.filters = map;
|
||||||
}
|
|
||||||
this.filterMap = 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());*/
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -94,9 +94,6 @@
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
mounted: function () {
|
mounted: function () {
|
||||||
red.dbPlats(function (json) {
|
|
||||||
vm.dbPlats = json;
|
|
||||||
});
|
|
||||||
|
|
||||||
this.tableList();
|
this.tableList();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -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 -> {
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
Reference in New Issue
Block a user