1、新增 “业务预览-数据保存”功能逻辑
2、修改保存数据解析sql的bug
This commit is contained in:
@@ -105,8 +105,12 @@ const meta = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
del({name, id}) {
|
dataDel({name, id}) {
|
||||||
return red.postX('/data/del', {name, data: JSON.stringify({id})})
|
return red.postX('/data/del', {name, data: JSON.stringify({id})})
|
||||||
|
},
|
||||||
|
|
||||||
|
dataSave({name, data}) {
|
||||||
|
return red.postX('/data/save', {name, data: JSON.stringify(data)})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -76,7 +76,7 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<!-- 'sort':field.order>0 -->
|
<!-- 'sort':field.order>0 -->
|
||||||
<th v-for="field in cfg.shows"
|
<th v-for="field in cfg.shows"
|
||||||
v-if="field.fmt != 'HIDDEN'"
|
v-if="field.inType != 'HIDDEN'"
|
||||||
v-text="field.label || getFieldLabel(field.col)"
|
v-text="field.label || getFieldLabel(field.col)"
|
||||||
:class="{'sort':1, '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>
|
@click="sortEvent(field.col)"></th>
|
||||||
@@ -89,7 +89,7 @@
|
|||||||
<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="field in cfg.shows"
|
<td v-for="field in cfg.shows"
|
||||||
v-if="field.fmt != 'HIDDEN'"
|
v-if="field.inType != 'HIDDEN'"
|
||||||
v-title="dealFieldFmt(row, field)"
|
v-title="dealFieldFmt(row, field)"
|
||||||
v-html="dealFieldFmt(row, field)"></td>
|
v-html="dealFieldFmt(row, field)"></td>
|
||||||
<td>
|
<td>
|
||||||
@@ -184,15 +184,15 @@
|
|||||||
<div class="modal-body" style="padding-right: 50px">
|
<div class="modal-body" style="padding-right: 50px">
|
||||||
<form class="form-horizontal">
|
<form class="form-horizontal">
|
||||||
<div class="col-sm-6" v-for="item in cfg.edits">
|
<div class="col-sm-6" v-for="item in cfg.edits">
|
||||||
<div class="form-group">
|
<div v-show="item.inType != 'HIDDEN'" class="form-group">
|
||||||
<label class="col-sm-5" v-text="item.label"></label>
|
<label class="col-sm-5" v-text="item.label"></label>
|
||||||
<div class="col-sm-7">
|
<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 || 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}`">
|
<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">
|
<select v-if="item.inType == 'DICT'" v-model="detailData[item.col]" class="form-control">
|
||||||
<option value="选项一">选项一</option>
|
<option value="1">选项一</option>
|
||||||
<option value="选项二">选项二</option>
|
<option value="2">选项二</option>
|
||||||
<option value="山东省">山东省</option>
|
<option value="3">山东省</option>
|
||||||
<!--
|
<!--
|
||||||
<option v-for="x in inTypes" :value="x">{{x}}</option>
|
<option v-for="x in inTypes" :value="x">{{x}}</option>
|
||||||
-->
|
-->
|
||||||
@@ -206,7 +206,7 @@
|
|||||||
<div class="clearfix"></div>
|
<div class="clearfix"></div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
|
<button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
|
||||||
<button @click="" type="button" class="btn btn-primary">确定</button>
|
<button @click="save()" type="button" class="btn btn-primary">确定</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -229,7 +229,7 @@
|
|||||||
return {1:"男",2:"女"}[v] || "未知性别"
|
return {1:"男",2:"女"}[v] || "未知性别"
|
||||||
}
|
}
|
||||||
|
|
||||||
let {getServiceList, getCfg, getDataList, exportData, del} = meta
|
let {getServiceList, getCfg, getDataList, exportData, dataDel, dataSave} = meta
|
||||||
let {showOk} = red
|
let {showOk} = red
|
||||||
var vm = new Vue({
|
var vm = new Vue({
|
||||||
el:".data-list",
|
el:".data-list",
|
||||||
@@ -320,7 +320,12 @@
|
|||||||
else {
|
else {
|
||||||
v = bean[colFmt["col"]]
|
v = bean[colFmt["col"]]
|
||||||
}
|
}
|
||||||
return v + " -> "+colFmt.inType
|
|
||||||
|
if (colFmt.inType && colFmt.inType != "INPUT") {
|
||||||
|
v += " -> "+colFmt.inType
|
||||||
|
}
|
||||||
|
|
||||||
|
return v
|
||||||
|
|
||||||
/*if (colFmt["fmt"]) {
|
/*if (colFmt["fmt"]) {
|
||||||
let fmt = colFmt["fmt"]
|
let fmt = colFmt["fmt"]
|
||||||
@@ -454,7 +459,23 @@
|
|||||||
let name = this.service
|
let name = this.service
|
||||||
let pk = this.detailData[this.cfg.pk]
|
let pk = this.detailData[this.cfg.pk]
|
||||||
|
|
||||||
del({name, id: pk}).then(res => showOk)
|
dataDel({name, id: pk}).then(res => showOk())
|
||||||
|
},
|
||||||
|
save() {
|
||||||
|
// 表单保存
|
||||||
|
let row = this.detailData
|
||||||
|
let edits = this.cfg.edits
|
||||||
|
|
||||||
|
let name = this.service
|
||||||
|
let data = {}
|
||||||
|
for (let i in edits) {
|
||||||
|
data[edits[i].col] = row[edits[i].col]
|
||||||
|
}
|
||||||
|
|
||||||
|
dataSave({name, data}).then(res => {
|
||||||
|
showOk()
|
||||||
|
$('#edit').modal('hide')
|
||||||
|
})
|
||||||
},
|
},
|
||||||
showInfo() {
|
showInfo() {
|
||||||
$('#f-info').modal({moveable: true})
|
$('#f-info').modal({moveable: true})
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package net.tccn.dbq.jdbc.api;
|
package net.tccn.dbq.jdbc.api;
|
||||||
|
|
||||||
|
import net.tccn.base.CfgException;
|
||||||
import net.tccn.base.Kv;
|
import net.tccn.base.Kv;
|
||||||
|
|
||||||
import java.sql.*;
|
import java.sql.*;
|
||||||
@@ -154,8 +155,7 @@ public class DbSourceMysql implements DbSource {
|
|||||||
ps.execute();
|
ps.execute();
|
||||||
//ps.executeUpdate();
|
//ps.executeUpdate();
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
e.printStackTrace();
|
throw new CfgException("SQL 执行失败:", sql);
|
||||||
|
|
||||||
} finally {
|
} finally {
|
||||||
release(connection);
|
release(connection);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -176,6 +176,8 @@ public class ParseMysql implements Parser {
|
|||||||
String alias = mainTable.getAlias();
|
String alias = mainTable.getAlias();
|
||||||
String[] pks = mainTable.pk();
|
String[] pks = mainTable.pk();
|
||||||
|
|
||||||
|
// 异常 sql: update `user2` set `aa.name`='null',`aa.deptId`='null',`aa.id`='null' where `id` = '1';
|
||||||
|
|
||||||
// 取出有效的数据key
|
// 取出有效的数据key
|
||||||
List<String> keys = data.keySet()
|
List<String> keys = data.keySet()
|
||||||
.stream()
|
.stream()
|
||||||
@@ -197,8 +199,8 @@ public class ParseMysql implements Parser {
|
|||||||
StringBuffer vs = new StringBuffer();// `v1`,`v2`,`v3`, ...
|
StringBuffer vs = new StringBuffer();// `v1`,`v2`,`v3`, ...
|
||||||
|
|
||||||
for (String k : keys) {
|
for (String k : keys) {
|
||||||
ks.append(String.format("`%s`,", k));
|
ks.append(String.format("`%s`,", k.substring(k.indexOf(".") + 1)));
|
||||||
vs.append(String.format("'%s',", data.get(alias + "." + k)));
|
vs.append(String.format("'%s',", data.get(k)));
|
||||||
}
|
}
|
||||||
if (ks.length() > 0) {
|
if (ks.length() > 0) {
|
||||||
ks.deleteCharAt(ks.length() - 1);
|
ks.deleteCharAt(ks.length() - 1);
|
||||||
@@ -214,7 +216,7 @@ public class ParseMysql implements Parser {
|
|||||||
String pk = pks[0];
|
String pk = pks[0];
|
||||||
|
|
||||||
for (String k : keys) {
|
for (String k : keys) {
|
||||||
kvs.append(String.format("`%s`='%s',", k, data.get(alias + "." + k)));
|
kvs.append(String.format("`%s`='%s',", k.substring(k.indexOf(".") + 1), data.get(k)));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (kvs.length() > 0) {
|
if (kvs.length() > 0) {
|
||||||
|
|||||||
@@ -1,9 +1,6 @@
|
|||||||
package net.tccn.service;
|
package net.tccn.service;
|
||||||
|
|
||||||
import net.tccn.base.JBean;
|
import net.tccn.base.*;
|
||||||
import net.tccn.base.Kv;
|
|
||||||
import net.tccn.base.MetaKit;
|
|
||||||
import net.tccn.base.PageBean;
|
|
||||||
import net.tccn.dbq.DbExecutors;
|
import net.tccn.dbq.DbExecutors;
|
||||||
import net.tccn.dbq.fbean.FBean;
|
import net.tccn.dbq.fbean.FBean;
|
||||||
import org.redkale.net.http.HttpScope;
|
import org.redkale.net.http.HttpScope;
|
||||||
@@ -43,13 +40,15 @@ public class DataService extends BaseService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@RestMapping(name = "save", comment = "数据保存")
|
@RestMapping(name = "save", comment = "数据保存")
|
||||||
public JBean save(String name, Map data, @RestParam(name = "platToken") String token) {
|
public JBean save(String name, Map<String, String> data, @RestParam(name = "platToken") String token) {
|
||||||
//MetaTable metaTable = MetaKit.getMetaTable(ks, token);
|
JBean jBean = new JBean();
|
||||||
|
try {
|
||||||
|
DbExecutors.save(name, data, token);
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new CfgException("保存数据失败");
|
||||||
|
}
|
||||||
|
|
||||||
//String sql = metaTable.buildSaveSql(data);
|
return jBean;
|
||||||
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Comment("数据导出excel")
|
@Comment("数据导出excel")
|
||||||
|
|||||||
Reference in New Issue
Block a user