1、表单配置
2、新增业务预览-表单渲染
This commit is contained in:
@@ -74,6 +74,10 @@ const meta = {
|
|||||||
details = red.replace$(details);
|
details = red.replace$(details);
|
||||||
return red.postX('/meta/detailsave', {name, details: JSON.stringify(details)})
|
return red.postX('/meta/detailsave', {name, details: JSON.stringify(details)})
|
||||||
},
|
},
|
||||||
|
editSave({name, edits}) {
|
||||||
|
edits = red.replace$(edits);
|
||||||
|
return red.postX('/meta/editsave', {name, edits: JSON.stringify(edits)})
|
||||||
|
},
|
||||||
|
|
||||||
// Meta-Table
|
// Meta-Table
|
||||||
tableList() {
|
tableList() {
|
||||||
|
|||||||
@@ -87,7 +87,10 @@
|
|||||||
<td v-for="field in cfg.shows" v-title="dealFieldFmt(row, field.col)" v-text="dealFieldFmt(row, field.col)"></td>
|
<td v-for="field in cfg.shows" v-title="dealFieldFmt(row, field.col)" v-text="dealFieldFmt(row, field.col)"></td>
|
||||||
-->
|
-->
|
||||||
<td v-for="fieldFmt in cfg.shows" v-title="dealFieldFmt(row, fieldFmt)" v-html="dealFieldFmt(row, fieldFmt)"></td>
|
<td v-for="fieldFmt in cfg.shows" v-title="dealFieldFmt(row, fieldFmt)" v-html="dealFieldFmt(row, fieldFmt)"></td>
|
||||||
<td> <a href="javascript:;" @click="detailData=row; detail()">详情</a></td>
|
<td>
|
||||||
|
<a href="javascript:;" @click="detailData=row; detail()">详情</a>
|
||||||
|
<a href="javascript:;" @click="detailData=row; edit()">编辑</a>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
@@ -164,6 +167,44 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- edit -->
|
||||||
|
<div class="modal fade" id="edit">
|
||||||
|
<div class="modal-dialog modal-lg">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">关闭</span></button>
|
||||||
|
<h4 class="modal-title" v-text="cfg.title + ' - [编辑]'"> </h4>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body" style="padding-right: 50px">
|
||||||
|
<form class="form-horizontal">
|
||||||
|
<div class="col-sm-6" v-for="item in cfg.edits">
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-5" v-text="item.label"></label>
|
||||||
|
<div class="col-sm-7">
|
||||||
|
<input v-if="item.inType == 'INPUT' || item.inType == '' || !item.inType" v-model="detailData[item.col]" class="form-control" :placeholder="`请输入 ${item.label}`">
|
||||||
|
<input v-if="item.inType == 'INPUT_DT'" v-model="detailData[item.col]" class="form-control" :placeholder="`请输入 ${item.label}`">
|
||||||
|
<select v-if="item.inType == 'SELECT_EXT'" v-model="detailData[item.col]" class="form-control">
|
||||||
|
<option value="选项一">选项一</option>
|
||||||
|
<option value="选项二">选项二</option>
|
||||||
|
<option value="山东省">山东省</option>
|
||||||
|
<!--
|
||||||
|
<option v-for="x in inTypes" :value="x">{{x}}</option>
|
||||||
|
-->
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-12" style="height: 5px"></div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<div class="clearfix"></div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
|
||||||
|
<button @click="" type="button" class="btn btn-primary">确定</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</row>
|
</row>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
@@ -376,6 +417,9 @@
|
|||||||
detail() {
|
detail() {
|
||||||
$('#detail').modal({moveable: true});
|
$('#detail').modal({moveable: true});
|
||||||
},
|
},
|
||||||
|
edit() {
|
||||||
|
$('#edit').modal({moveable: true});
|
||||||
|
},
|
||||||
showInfo() {
|
showInfo() {
|
||||||
$('#f-info').modal({moveable: true})
|
$('#f-info').modal({moveable: true})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -66,6 +66,9 @@
|
|||||||
<span class="input-group-btn">
|
<span class="input-group-btn">
|
||||||
<button @click="status='detail'" :class="['btn',{'btn-primary':status=='detail'}]" type="button"> 详情配置</button>
|
<button @click="status='detail'" :class="['btn',{'btn-primary':status=='detail'}]" type="button"> 详情配置</button>
|
||||||
</span>
|
</span>
|
||||||
|
<span class="input-group-btn">
|
||||||
|
<button @click="status='edit'" :class="['btn',{'btn-primary':status=='form'}]" type="button"> 表单配置</button>
|
||||||
|
</span>
|
||||||
|
|
||||||
<span class="input-group-btn" style="padding-left: 10px">
|
<span class="input-group-btn" style="padding-left: 10px">
|
||||||
<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>
|
||||||
@@ -112,6 +115,7 @@
|
|||||||
<td v-show="status==5"><input type="checkbox" v-model="showFields" :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-show="status==6"><input type="checkbox" v-model="filterArr" :value="sheet + '$' + item.name"></td>
|
||||||
<td v-show="status=='detail'"><input type="checkbox" v-model="detailArr" :value="sheet + '$' + item.name"></td>
|
<td v-show="status=='detail'"><input type="checkbox" v-model="detailArr" :value="sheet + '$' + item.name"></td>
|
||||||
|
<td v-show="status=='edit'"><input type="checkbox" v-model="editArr" :value="sheet + '$' + item.name"></td>
|
||||||
|
|
||||||
<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>
|
||||||
@@ -249,10 +253,42 @@
|
|||||||
<input type="hidden" name="item" :value="JSON.stringify(item)">
|
<input type="hidden" name="item" :value="JSON.stringify(item)">
|
||||||
</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 style="padding: 1px;"><input v-model="item.label" class="form-control"
|
<td style="padding: 1px;"><input v-model="item.label" class="form-control" style="width: 130px;padding: 0px"></td>
|
||||||
style="width: 130px;padding: 0px"></td>
|
<td style="padding: 1px;"><input v-model="item.fmt" class="form-control" style="width: 130px;padding: 0px"></td>
|
||||||
<td style="padding: 1px;"><input v-model="item.fmt" class="form-control"
|
</tr>
|
||||||
style="width: 130px;padding: 0px"></td>
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- edits -->
|
||||||
|
<div id="edit" v-show="status=='edit'">
|
||||||
|
<div style="padding-left: 10px;background-color: #ccc;width: 100%"> 表单配置</div>
|
||||||
|
<table class="table table-bordered table-auto">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th></th>
|
||||||
|
<th>数据字段</th>
|
||||||
|
<th>展示名称</th>
|
||||||
|
<th>表单组件</th>
|
||||||
|
<th>数据格式化</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr v-for="(item, index) in serviceInfo.edits">
|
||||||
|
<td class="icon icon-move">
|
||||||
|
<input type="hidden" name="item" :value="JSON.stringify(item)">
|
||||||
|
</td>
|
||||||
|
<td v-text="item.col" style="background-color: rgb(235, 235, 228);"></td>
|
||||||
|
<td style="padding: 1px;"><input v-model="item.label" class="form-control" style="width: 130px;padding: 0px"></td>
|
||||||
|
<td style="padding: 1px;">
|
||||||
|
<select v-model="item.inType" class="form-control" style="width: 130px">
|
||||||
|
<option></option>
|
||||||
|
<option v-for="x in inTypes" :value="x">{{x}}</option>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
<td style="padding: 1px;">
|
||||||
|
<input v-model="item.fmt" class="form-control" style="width: 130px;padding: 0px">
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
@@ -304,7 +340,7 @@
|
|||||||
</row>
|
</row>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
let {getServiceInfo, getServiceDetail, getServiceList, tableLinkList, serviceSave, showSave, filterSave, exportSave, detailSave} = meta;
|
let {getServiceInfo, getServiceDetail, getServiceList, tableLinkList, serviceSave, showSave, filterSave, exportSave, detailSave, editSave} = meta;
|
||||||
let {showOk} = red
|
let {showOk} = red
|
||||||
|
|
||||||
var vm = new Vue({
|
var vm = new Vue({
|
||||||
@@ -326,6 +362,7 @@
|
|||||||
imports: [],
|
imports: [],
|
||||||
filters: [{name: '', label: '', filterType: ['']}],
|
filters: [{name: '', label: '', filterType: ['']}],
|
||||||
details: [],
|
details: [],
|
||||||
|
edits: [],
|
||||||
},
|
},
|
||||||
serviceDetail: {tables: {a: {items: []}}},
|
serviceDetail: {tables: {a: {items: []}}},
|
||||||
|
|
||||||
@@ -343,7 +380,7 @@
|
|||||||
|
|
||||||
filters: [],//查询配置
|
filters: [],//查询配置
|
||||||
|
|
||||||
status: 0, //页面默认状态 0:默认 3:导出 4:导入 5:列表配置 6:查询配置 detail:详情配置 form:表单配置 del:删除策略配置
|
status: 0, //页面默认状态 0:默认 3:导出 4:导入 5:列表配置 6:查询配置 detail:详情配置 edit:表单配置 del:删除策略配置
|
||||||
services: [],//业务列表
|
services: [],//业务列表
|
||||||
service: "", //页面选择的业务类型
|
service: "", //页面选择的业务类型
|
||||||
table: "",//表别名
|
table: "",//表别名
|
||||||
@@ -363,6 +400,9 @@
|
|||||||
|
|
||||||
//details
|
//details
|
||||||
detailArr: [],
|
detailArr: [],
|
||||||
|
|
||||||
|
//edits
|
||||||
|
editArr: [],
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
status: function (v) {
|
status: function (v) {
|
||||||
@@ -405,6 +445,13 @@
|
|||||||
detailArr.push(v['details'][i]['col'])
|
detailArr.push(v['details'][i]['col'])
|
||||||
}
|
}
|
||||||
this.detailArr = detailArr
|
this.detailArr = detailArr
|
||||||
|
|
||||||
|
//edits
|
||||||
|
let editArr = []
|
||||||
|
for (let i in v['edits']) {
|
||||||
|
editArr.push(v['edits'][i]['col'])
|
||||||
|
}
|
||||||
|
this.editArr = editArr
|
||||||
},
|
},
|
||||||
serviceDetail: function (v) {
|
serviceDetail: function (v) {
|
||||||
let arr = [];
|
let arr = [];
|
||||||
@@ -542,7 +589,7 @@
|
|||||||
// 新的
|
// 新的
|
||||||
let label = this.getFieldLabel(v[i])
|
let label = this.getFieldLabel(v[i])
|
||||||
let fmt = this.getFiledInExt(v[i])
|
let fmt = this.getFiledInExt(v[i])
|
||||||
c:for (let j in details) {
|
/*c:for (let j in details) {
|
||||||
if (v[i] == details[j]['col']) {
|
if (v[i] == details[j]['col']) {
|
||||||
if (details[j]['label']) {
|
if (details[j]['label']) {
|
||||||
label = details[j]['label']
|
label = details[j]['label']
|
||||||
@@ -553,7 +600,7 @@
|
|||||||
}
|
}
|
||||||
continue c
|
continue c
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
details.push({col: v[i], label: label, fmt: fmt})
|
details.push({col: v[i], label: label, fmt: fmt})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -569,7 +616,42 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.serviceInfo.details = _details
|
this.serviceInfo.details = _details
|
||||||
}
|
},
|
||||||
|
editArr(v) {
|
||||||
|
let edits = this.serviceInfo.edits
|
||||||
|
|
||||||
|
//添加新增的
|
||||||
|
a:for (let i in v) {
|
||||||
|
b:for (let j in edits) {
|
||||||
|
if (v[i] == edits[j]['col']) {
|
||||||
|
if (!edits[j]['label']) {
|
||||||
|
edits[j]['label'] = this.getFieldLabel(v[i])
|
||||||
|
}
|
||||||
|
if (!edits[j]['fmt']) {
|
||||||
|
edits[j]['fmt'] = this.getFiledInExt(v[i])
|
||||||
|
}
|
||||||
|
continue a
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 新的
|
||||||
|
let label = this.getFieldLabel(v[i])
|
||||||
|
let fmt = this.getFiledInExt(v[i]) || ""
|
||||||
|
edits.push({col: v[i], label: label, fmt: fmt})
|
||||||
|
}
|
||||||
|
|
||||||
|
//去除删除的
|
||||||
|
let _edits = []
|
||||||
|
a:for (let i in edits) {
|
||||||
|
b:for (let j in v) {
|
||||||
|
if (edits[i]['col'] == v[j]) {
|
||||||
|
_edits.push(edits[i])
|
||||||
|
continue a;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.serviceInfo.edits = _edits
|
||||||
|
},
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
loadInfo(name) {
|
loadInfo(name) {
|
||||||
@@ -624,6 +706,7 @@
|
|||||||
#show>table>tbody,
|
#show>table>tbody,
|
||||||
#export>table>tbody,
|
#export>table>tbody,
|
||||||
#detail>table>tbody,
|
#detail>table>tbody,
|
||||||
|
#edit>table>tbody,
|
||||||
#show>table>tbody`).sortable({
|
#show>table>tbody`).sortable({
|
||||||
selector: 'tr',
|
selector: 'tr',
|
||||||
trigger: '.icon',
|
trigger: '.icon',
|
||||||
@@ -737,8 +820,16 @@
|
|||||||
let item = $(doms[i]).find("input[name='item']").val();
|
let item = $(doms[i]).find("input[name='item']").val();
|
||||||
details.push(JSON.parse(item))
|
details.push(JSON.parse(item))
|
||||||
}
|
}
|
||||||
console.log(details)
|
|
||||||
detailSave({name: this.service, details}).then(res => red.showOk())
|
detailSave({name: this.service, details}).then(res => red.showOk())
|
||||||
|
} else if (vm.status == 'edit') {
|
||||||
|
let doms = $("#edit>table>tbody>tr")
|
||||||
|
let edits = []
|
||||||
|
for (let i = 0; i < doms.length; i++) {
|
||||||
|
let item = $(doms[i]).find("input[name='item']").val();
|
||||||
|
edits.push(JSON.parse(item))
|
||||||
|
}
|
||||||
|
console.log(edits)
|
||||||
|
editSave({name: this.service, edits}).then(res => red.showOk())
|
||||||
} else if (vm.status == 7) {
|
} else if (vm.status == 7) {
|
||||||
console.log(vm.row);
|
console.log(vm.row);
|
||||||
red.postX("/meta/dbplatupdate", vm.row).then(() => showOk())
|
red.postX("/meta/dbplatupdate", vm.row).then(() => showOk())
|
||||||
|
|||||||
@@ -201,7 +201,7 @@ public final class MetaKit {
|
|||||||
Kv<String, MetaTable> metaTables = getMetaTables(metaService, false);
|
Kv<String, MetaTable> metaTables = getMetaTables(metaService, false);
|
||||||
|
|
||||||
List<Map<String, String>> shows = metaService.getShows();
|
List<Map<String, String>> shows = metaService.getShows();
|
||||||
//List<Map> edits = metaService.getEdits();
|
List<Map<String, String>> edits = metaService.getEdits();
|
||||||
List<Map<String, String>> details = metaService.getDetails();
|
List<Map<String, String>> details = metaService.getDetails();
|
||||||
List<Filter> filters = metaService.getFilters();
|
List<Filter> filters = metaService.getFilters();
|
||||||
String comment = metaService.getComment();
|
String comment = metaService.getComment();
|
||||||
@@ -264,7 +264,7 @@ public final class MetaKit {
|
|||||||
});
|
});
|
||||||
|
|
||||||
//edits
|
//edits
|
||||||
List _edits = new ArrayList();//edits;
|
//List _edits = new ArrayList();//edits;
|
||||||
/*edits.forEach(x -> {
|
/*edits.forEach(x -> {
|
||||||
Kv kv = Kv.of();
|
Kv kv = Kv.of();
|
||||||
kv.set("col", x);
|
kv.set("col", x);
|
||||||
@@ -305,7 +305,7 @@ public final class MetaKit {
|
|||||||
.set("items", _items2)
|
.set("items", _items2)
|
||||||
.set("shows", shows)
|
.set("shows", shows)
|
||||||
.set("filters", _filters)
|
.set("filters", _filters)
|
||||||
.set("edits", _edits)
|
.set("edits", edits)
|
||||||
.set("details", details);
|
.set("details", details);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -172,6 +172,17 @@ public class MetadataService extends BaseService { //arango
|
|||||||
return JBean.OK;
|
return JBean.OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RestMapping(name = "editsave", comment = "表单配置保存")
|
||||||
|
public JBean editSave(String name, List<Map<String, String>> edits, @RestParam(name = "platToken") String token) {
|
||||||
|
if (edits == null || edits.size() == 0) return null;
|
||||||
|
|
||||||
|
MetaService metaService = MetaKit.getMetaService(name, token);
|
||||||
|
metaService.setEdits(edits);
|
||||||
|
|
||||||
|
MetaKit.save(metaService);
|
||||||
|
return JBean.OK;
|
||||||
|
}
|
||||||
|
|
||||||
@RestMapping(name = "importsort", comment = "导入字段保存")
|
@RestMapping(name = "importsort", comment = "导入字段保存")
|
||||||
public JBean importSort(String serviceKey, List<String> items, @RestParam(name = "platToken") String token) {
|
public JBean importSort(String serviceKey, List<String> items, @RestParam(name = "platToken") String token) {
|
||||||
if (isEmpty.test(items)) return null;
|
if (isEmpty.test(items)) return null;
|
||||||
|
|||||||
Reference in New Issue
Block a user