1、metaTable中加入字段主键设置
2、添加删除策略配置 3、列表配置中加入"HIDDEN"配置,以及预览中加入解析逻辑
This commit is contained in:
@@ -19,9 +19,9 @@ const meta = {
|
||||
getServiceInfo({name}, callback) {
|
||||
red.getJSON("/meta/service_info",{name}, res => {
|
||||
|
||||
let {name, comment, table, edits, imports, shows, exports, filters, details} = red.replacePoint(res)
|
||||
let {name, comment, table, edits, imports, shows, exports, filters, details, dels} = red.replacePoint(res)
|
||||
|
||||
callback({name, comment, table, edits, imports, shows, exports, filters, details});
|
||||
callback({name, comment, table, edits, imports, shows, exports, filters, details, dels});
|
||||
});
|
||||
},
|
||||
getServiceDetail({name}, callback) {
|
||||
@@ -78,6 +78,10 @@ const meta = {
|
||||
edits = red.replace$(edits);
|
||||
return red.postX('/meta/editsave', {name, edits: JSON.stringify(edits)})
|
||||
},
|
||||
delSave({name, dels}) {
|
||||
dels = red.replace$(dels);
|
||||
return red.postX('/meta/delsave', {name, dels: JSON.stringify(dels)})
|
||||
},
|
||||
|
||||
// Meta-Table
|
||||
tableList() {
|
||||
@@ -99,6 +103,10 @@ const meta = {
|
||||
} else if (cate == 'json') {
|
||||
|
||||
}
|
||||
},
|
||||
|
||||
del({name, id}) {
|
||||
return red.postX('/data/del', {name, data: JSON.stringify({id})})
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -6,6 +6,6 @@ const qtask = {
|
||||
return red.postX('_qtask/save',{task})
|
||||
},
|
||||
qtaskDebug({task}) {
|
||||
return red.postX('_qtask/debug',{task})
|
||||
return red.postX('_qtask/debug',{task:JSON.stringify(task)})
|
||||
}
|
||||
}
|
||||
@@ -74,9 +74,11 @@
|
||||
<table class="table table-bordered table-hover" style="width: 100%">
|
||||
<thead>
|
||||
<tr>
|
||||
<!-- 'sort':field.order>0 -->
|
||||
<th v-for="field in cfg.shows"
|
||||
v-if="field.fmt != 'HIDDEN'"
|
||||
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}"
|
||||
:class="{'sort':1, 'sort-up':field.col==order.col && order.desc==1, 'sort-down':field.col==order.col && order.desc!=1}"
|
||||
@click="sortEvent(field.col)"></th>
|
||||
<th>操作</th>
|
||||
</tr>
|
||||
@@ -86,10 +88,14 @@
|
||||
<!--
|
||||
<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="field in cfg.shows"
|
||||
v-if="field.fmt != 'HIDDEN'"
|
||||
v-title="dealFieldFmt(row, field)"
|
||||
v-html="dealFieldFmt(row, field)"></td>
|
||||
<td>
|
||||
<a href="javascript:;" @click="detailData=row; detail()">详情</a>
|
||||
<a href="javascript:;" @click="detailData=row; edit()">编辑</a>
|
||||
<a href="javascript:;" @click="detailData=row; del()">删除</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
@@ -223,7 +229,8 @@
|
||||
return {1:"男",2:"女"}[v] || "未知性别"
|
||||
}
|
||||
|
||||
let {getServiceList, getCfg, getDataList, exportData} = meta;
|
||||
let {getServiceList, getCfg, getDataList, exportData, del} = meta
|
||||
let {showOk} = red
|
||||
var vm = new Vue({
|
||||
el:".data-list",
|
||||
data: {
|
||||
@@ -237,11 +244,12 @@
|
||||
services: [],
|
||||
service: "",
|
||||
|
||||
addFilter: "recompany",
|
||||
addFilter: "",
|
||||
para: {},
|
||||
list: {rows: [], total: 0},
|
||||
limit: {pn: 1, ps: 10, total: 0},
|
||||
order: {col: "id", desc: 1},
|
||||
pk: "",
|
||||
detailData: {}
|
||||
},
|
||||
watch: {
|
||||
@@ -271,7 +279,6 @@
|
||||
this.list = {rows:[], total:0};
|
||||
let fbean = this.buildFBean();
|
||||
getDataList(fbean, json => {
|
||||
console.log(json)
|
||||
vm.list = json;
|
||||
});
|
||||
},
|
||||
@@ -420,6 +427,12 @@
|
||||
edit() {
|
||||
$('#edit').modal({moveable: true});
|
||||
},
|
||||
del() {
|
||||
let name = this.service
|
||||
let pk = this.detailData[this.cfg.pk]
|
||||
|
||||
del({name, id: pk}).then(res => showOk)
|
||||
},
|
||||
showInfo() {
|
||||
$('#f-info').modal({moveable: true})
|
||||
}
|
||||
|
||||
@@ -67,7 +67,10 @@
|
||||
<button @click="status='detail'" :class="['btn',{'btn-primary':status=='detail'}]" type="button"> 详情配置</button>
|
||||
</span>
|
||||
<span class="input-group-btn">
|
||||
<button @click="status='edit'" :class="['btn',{'btn-primary':status=='form'}]" type="button"> 表单配置</button>
|
||||
<button @click="status='edit'" :class="['btn',{'btn-primary':status=='edit'}]" type="button"> 表单配置</button>
|
||||
</span>
|
||||
<span class="input-group-btn">
|
||||
<button @click="status='del'" :class="['btn',{'btn-primary':status=='del'}]" type="button"> 删除配置</button>
|
||||
</span>
|
||||
|
||||
<span class="input-group-btn" style="padding-left: 10px">
|
||||
@@ -137,7 +140,8 @@
|
||||
<th></th>
|
||||
<th>数据字段</th>
|
||||
<th>表头名称</th>
|
||||
<th>格式化</th>
|
||||
<th>格式化类型</th>
|
||||
<th>附加参数</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tr v-for="(item, index) in serviceInfo.shows">
|
||||
@@ -146,7 +150,19 @@
|
||||
</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;" title="格式化类型为:funs或qtask的时候需要填写附加参数">
|
||||
<input v-show="item.inType == 'FUNC' || item.inType == 'QTASK' || item.inType == 'DICT'" v-model="item.inExt" class="form-control" style="width: 130px;padding: 0px">
|
||||
<input disabled v-show="item.inType != 'FUNC' && item.inType != 'QTASK' && item.inType != 'DICT'" v-model="item.inExt" class="form-control" style="width: 130px;padding: 0px">
|
||||
</td>
|
||||
<!--
|
||||
<td style="padding: 1px;"><input v-model="item.fmt" class="form-control" style="width: 130px;padding: 0px"></td>
|
||||
-->
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
@@ -293,6 +309,49 @@
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- del -->
|
||||
<div id="del" v-show="status=='del'">
|
||||
<div style="padding-left: 10px;background-color: #ccc;width: 100%"> 删除策略</div>
|
||||
<div class="panel-body" style="overflow:auto;">
|
||||
<form class="form-horizontal">
|
||||
<!--
|
||||
<label class="radio-inline">
|
||||
<input type="radio" v-model="serviceInfo.dels.cate" value="UP_FIELD"> 策略一(更新主表字段)
|
||||
</label>
|
||||
-->
|
||||
<label class="radio-inline">
|
||||
<input type="radio" v-model="serviceInfo.dels.cate" value="SQL"> 策略一(执行完整SQL)
|
||||
</label>
|
||||
<label class="radio-inline">
|
||||
<input disabled type="radio" v-model="serviceInfo.dels.cate" value="QTASK"> 策略二(执行QTask)
|
||||
</label>
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<div v-show="serviceInfo.dels.cate == 'UP_FIELD'" class="form-group">
|
||||
<label for="name" class="col-md-2">SQL</label>
|
||||
<div class="col-md-8">
|
||||
<textarea v-model="serviceInfo.dels.sql1" disabled style="width: 100%;" rows="5"></textarea>
|
||||
<!--
|
||||
<input v-model="serviceInfo.dels.name" class="form-control" id="name" placeholder="请输入Table名称">
|
||||
-->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div v-show="serviceInfo.dels.cate == 'SQL'" class="form-group">
|
||||
<label for="name" class="col-md-2">SQL</label>
|
||||
<div class="col-md-8">
|
||||
<textarea v-model="serviceInfo.dels.sql" style="width: 100%;" rows="5"></textarea>
|
||||
<!--
|
||||
<input v-model="serviceInfo.dels.name" class="form-control" id="name" placeholder="请输入Table名称">
|
||||
-->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -340,7 +399,7 @@
|
||||
</row>
|
||||
|
||||
<script>
|
||||
let {getServiceInfo, getServiceDetail, getServiceList, tableLinkList, serviceSave, showSave, filterSave, exportSave, detailSave, editSave} = meta;
|
||||
let {getServiceInfo, getServiceDetail, getServiceList, tableLinkList, serviceSave, showSave, filterSave, exportSave, detailSave, editSave, delSave} = meta;
|
||||
let {showOk} = red
|
||||
|
||||
var vm = new Vue({
|
||||
@@ -350,7 +409,7 @@
|
||||
sheetArr: ["a"],//别名
|
||||
sheet: "a",//别名
|
||||
|
||||
inTypes: ["INPUT", "SELECT_EXT", "INPUT_DT"],
|
||||
inTypes: ["INPUT", "DICT", "INPUT_DAY", "INPUT_TIME", "FUNC", "QTASK", "HIDDEN"],
|
||||
dataTypes: ["bigint(20)", "varchar(255)", "varchar(64)", "varchar(32)", "varchar(16)", "int(11)", "int(3)", "int(2)", "datetime"],
|
||||
filterCate: ["EQUAL", "NOTEQUAL", "LIKE", "IN"],
|
||||
serviceInfo: {
|
||||
@@ -363,6 +422,7 @@
|
||||
filters: [{name: '', label: '', filterType: ['']}],
|
||||
details: [],
|
||||
edits: [],
|
||||
dels: {cate: "", sql: "", qtask: ""}
|
||||
},
|
||||
serviceDetail: {tables: {a: {items: []}}},
|
||||
|
||||
@@ -403,6 +463,8 @@
|
||||
|
||||
//edits
|
||||
editArr: [],
|
||||
|
||||
//del
|
||||
},
|
||||
watch: {
|
||||
status: function (v) {
|
||||
@@ -460,6 +522,18 @@
|
||||
}
|
||||
this.sheetArr = arr;//别名
|
||||
this.sheet = arr[0];
|
||||
|
||||
// 处理dels 策略
|
||||
let dels = this.serviceInfo["dels"] || {}
|
||||
//console.log("dels", dels)
|
||||
let cate = dels["cate"] || "UP_FIELD"
|
||||
let sql1 = dels["sql1"] || "update #(table) set status=9 where id=#(id);"
|
||||
let sql = dels["sql"] || `update ${v['tables'][this.serviceInfo.table]['name']} set status=9 where id=#(id);`
|
||||
let qtask = dels["qtask"] || ""
|
||||
|
||||
let serviceInfo = this.serviceInfo
|
||||
serviceInfo["dels"] = {cate, sql1, sql, qtask}
|
||||
this.serviceInfo = serviceInfo
|
||||
},
|
||||
sheet: function (v) {
|
||||
this.table = v;
|
||||
@@ -656,6 +730,7 @@
|
||||
methods: {
|
||||
loadInfo(name) {
|
||||
getServiceInfo({name}, (json) => {
|
||||
json.dels = json.dels || {cate:"", sql1:"", sql:"", qtask:""}
|
||||
this.serviceInfo = json;
|
||||
})
|
||||
},
|
||||
@@ -830,6 +905,11 @@
|
||||
}
|
||||
console.log(edits)
|
||||
editSave({name: this.service, edits}).then(res => red.showOk())
|
||||
} else if (vm.status == 'del') {
|
||||
let dels = this.serviceInfo.dels
|
||||
|
||||
console.log(dels)
|
||||
delSave({name: this.service, dels}).then(res => red.showOk())
|
||||
} else if (vm.status == 7) {
|
||||
console.log(vm.row);
|
||||
red.postX("/meta/dbplatupdate", vm.row).then(() => showOk())
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
<th>数据类型</th>
|
||||
<th>输入类型</th>
|
||||
<th>附加属性</th>
|
||||
<th>备注</th>
|
||||
<th>主键</th>
|
||||
</tr>
|
||||
<tr v-for="(item, index) in meta.items" class="item">
|
||||
<td v-show="status==1" class="icon icon-move"></td>
|
||||
@@ -81,9 +81,12 @@
|
||||
<td v-show="status!=2" v-text="item.type"></td>
|
||||
<td v-show="status!=2" v-text="item.inType"></td>
|
||||
<td v-show="status!=2" v-text="item.inExt"></td>
|
||||
<td v-show="status!=2" v-text="item.remark"></td>
|
||||
<td v-show="status!=2">
|
||||
<i v-if="item.pk" class="icon icon-check"></i>
|
||||
</td>
|
||||
|
||||
<td v-show="status==2">
|
||||
<input type="hidden" name="item" :value="JSON.stringify(item)">
|
||||
<input v-model="item" type="hidden">
|
||||
<input :value="item.name" disabled class="form-control">
|
||||
<input v-model="item.name" type="hidden">
|
||||
@@ -98,7 +101,11 @@
|
||||
</select>
|
||||
</td>
|
||||
<td v-show="status==2"><input v-model="item.inExt" class="form-control"></td>
|
||||
<td v-show="status==2"><input v-model="item.remark" class="form-control"></td>
|
||||
<td v-show="status==2" style="text-align: center">
|
||||
<label>
|
||||
<input v-model="item.pk" type="checkbox">
|
||||
</label>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
@@ -204,7 +211,7 @@
|
||||
let itemOv = this.oldItems || [];
|
||||
if (itemOv.length == 0) return;
|
||||
|
||||
let attr = ["label", "name", "remark", "type", "inType","inExt"];
|
||||
let attr = ["label", "name", "pk", "type", "inType","inExt"];
|
||||
let itemEdit = [];
|
||||
a:for (let i = 0; i < itemOv.length; i++) {
|
||||
for (let j = 0; j < attr.length; j++) {
|
||||
|
||||
Reference in New Issue
Block a user