This commit is contained in:
2019-03-07 10:24:29 +08:00
parent 6c8c683c31
commit e057d613b9
215 changed files with 70917 additions and 118 deletions

229
root/plat/db.html Normal file
View File

@@ -0,0 +1,229 @@
<row class="plat">
<!-- head -->
<div class="col-md-11">
<h3 v-text="cfg.title"></h3>
</div>
<div class="col-md-1">
<div class="input-group pull-right" style="padding-top: 10px">
<span class="input-group-btn">
<button @click="edit({})" class="btn btn-primary" type="button"> 新增数据平台 </button>
</span>
</div>
</div>
<div class="col-md-12">
<table class="table table-bordered table-hover" style="width: 100%">
<thead>
<tr>
<th v-for="field in cfg.cols" v-text="field.label"></th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr v-for="item in list.rows">
<td v-for="field in cfg.cols"
:title="field.title ? field.title(item[field.col]) : ''"
v-html="field.fmt ? field.fmt(item[field.col]) : item[field.col]">
</td>
<td>
<a @click="edit(item)" href="javascript:;">编辑</a> |
<a @click="update({status:1}, item)" v-show="item.status != 1" href="javascript:;">启用</a>
<a @click="update({status:0}, item)" v-show="item.status == 1" href="javascript:;">不启用</a> |
<a @click="update({status:-1}, item)" href="javascript:;">删除</a>
</td>
</tr>
</tbody>
</table>
</div>
<!-- edit.modal -->
<div class="modal fade" id="myModal">
<div class="modal-dialog">
<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">数据中心 - [编辑]</h4>
</div>
<div class="modal-body">
<form class="form-horizontal">
<div class="form-group">
<label for="queryId" class="col-sm-2">平台名称</label>
<div class="col-md-6 col-sm-10">
<input v-model="row.name" class="form-control" id="queryId" placeholder="请输入 平台名称">
</div>
</div>
<div class="form-group">
<label for="url" class="col-sm-2">连接URL</label>
<div class="col-md-6">
<input v-model="row.url" class="form-control" id="url" placeholder="请输入 连接URL">
</div>
</div>
<div class="form-group">
<label for="user" class="col-sm-2">连接账号</label>
<div class="col-md-2">
<input v-model="row.user" class="form-control" id="user" placeholder="用户">
</div>
<div class="col-md-2">
<input v-model="row.pwd" class="form-control" id="pwd" placeholder="连接密码">
</div>
<div class="col-md-2">
<a @click="loadCatalogs" class="btn" href="javascript:;">获取catalogs</a>
</div>
</div>
<div class="form-group">
<label class="col-sm-2">Catalogs</label>
<div class="col-md-6">
<label v-for="item in catalogs" class="checkbox-inline">
<input type="checkbox" v-model="row.catalogs" :value="item"> <span v-text="item"></span>
</label>
</div>
</div>
<div class="form-group">
<label for="remark" class="col-sm-2">备注</label>
<div class="col-md-6 col-sm-10">
<input v-model="row.remark" class="form-control" id="remark" placeholder="请输入 备注">
</div>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
<button @click="save(row)" type="button" class="btn btn-primary">确定</button>
</div>
</div>
</div>
</div>
</row>
<script>
var vm = new Vue({
el: ".plat",
data: {
cfg: {
title: "数据中心 管理",
cols: [
{col: "_id", label: "ID"},
{col: "name", label: "数据平台名称"},
{col: "url", label: "数据平台连接地址"},
{col: "user", label: "用户"},
{col: "remark", label: "备注"},
{col: "pulse", label: "状态", fmt: function (v) {
if (!v) return "";
if (v.status == 0) {
return '<span class="label label-success">连接正常</span>';
}
if (v.status == -1) {
return '<span class="label label-danger">连接失败';
}
},title: function (v) {
if (!v) return "";
if (v.status == 0 && v.time) {
return "最后检测时间:" + red.timeFmt(new Date(v.time), "HH:mm:ss");
}
if (v.status == -1 && v.time) {
return "最后检测时间:" + red.timeFmt(new Date(v.time), "HH:mm:ss");
}
return "";
}},
{col: "status", label: "是否启用", fmt: function (v) {
return {"0":"未启用", "1":"启用", "-1":"删除"}[v] || "";
}},
],
filters: []
},
list: {rows:[], total: 0},
row: {},
catalogs: ["a", "b", "c"]
},
watch: {
},
methods: {
findList: function () {
var para = {
doc:"db_plat",
shows: JSON.stringify(["_id", "name", "url", "user", "pwd", "catalogs", "remark", "status"])
};
red.getJSON("/meta/find", para, function (json) {
for (var i=0; i<json.rows.length; i++) {
json.rows[i]["pulse"] = "";
}
vm.list = json;
})
},
update: function (kv, row) {
red.post("/meta/save", {
_id: row._id,
doc: JSON.stringify(kv)
}, function (json) {
red.showMsg();
red.putAll(row, kv);
vm.findList();
});
},
edit: function (row) {
row["catalogs"] = row["catalogs"] || [];
vm.row = row;
this.loadCatalogs();
$('#myModal').modal({moveable: true});
},
save: function (row) {
red.post("/meta/save", {
_id: row._id || "db_plat",
doc: JSON.stringify(row)
}, function (json) {
red.showMsg();
$('#myModal').modal('hide');
vm.findList();
});
},
loadCatalogs: function () {
vm.catalogs = [];
red.post("/_db/catalogs", {
url: this.row.url,
user: this.row.user,
pwd: this.row.pwd
}, function (json) {
vm.catalogs = json;
});
},
dbPulse: function (row) {
row["check"] = true;
$.getJSON("/_db/pulse", {
dbPlatId: row._id
}, function (json) {
row["pulse"] = json.body;
row["check"] = false;
});
}
},
mounted: function () {
this.findList();
function pulse() {
vm.list.rows.forEach(function (row) {
if (row.status == 1 && !row["check"]) {
vm.dbPulse(row);
}
});
}
//心跳检查
setTimeout(function () {
pulse();
}, 500);
setInterval(function () {
pulse();
}, 30000)
}
});
</script>

5
root/plat/dev.html Normal file
View File

@@ -0,0 +1,5 @@
<row class="dev">
<div style="width: 13%;height: 80px;background-color: #fff;">
sdaf
</div>
</row>

144
root/plat/index.html Normal file
View File

@@ -0,0 +1,144 @@
<row class="plat">
<!-- head -->
<div class="col-md-11">
<h3 v-text="cfg.title"></h3>
</div>
<div class="col-md-1">
<div class="input-group pull-right" style="padding-top: 10px">
<span class="input-group-btn">
<button @click="edit({})" class="btn btn-primary" type="button"> 新增业务平台 </button>
</span>
</div>
</div>
<div class="col-md-12">
<table class="table table-bordered table-hover" style="width: 100%">
<thead>
<tr>
<th v-for="field in cfg.cols" v-text="field.label"></th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr v-for="item in list.rows">
<td v-for="field in cfg.cols" v-title="item[field.col]" v-text="field.fmt ? field.fmt(item[field.col]) : item[field.col]"></td>
<td>
<a @click="edit(item)" href="javascript:;">编辑</a> |
<a @click="update({status:1}, item)" v-show="item.status != 1" href="javascript:;">启用</a>
<a @click="update({status:0}, item)" v-show="item.status == 1" href="javascript:;">不启用</a> |
<a @click="update({status:-1}, item)" href="javascript:;">删除</a>
</td>
</tr>
</tbody>
</table>
</div>
<!-- edit.modal -->
<div class="modal fade" id="myModal">
<div class="modal-dialog">
<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">业务平台 - [编辑]</h4>
</div>
<div class="modal-body">
<form class="form-horizontal">
<div class="form-group">
<label for="queryId" class="col-md-2">平台名称</label>
<div class="col-md-8">
<input v-model="row.name" class="form-control" id="queryId" placeholder="请输入 平台名称">
</div>
</div>
<div class="form-group">
<label for="token" class="col-md-2">平台 Token</label>
<div class="col-md-8 col-sm-10">
<input v-model="row.token" class="form-control" id="token" placeholder="请输入 Token">
</div>
</div>
<div class="form-group">
<label for="remark" class="col-md-2">备注</label>
<div class="col-md-8 col-sm-10">
<input v-model="row.remark" class="form-control" id="remark" placeholder="请输入 备注">
</div>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
<button @click="save(row)" type="button" class="btn btn-primary">确定</button>
</div>
</div>
</div>
</div>
</row>
<script>
var vm = new Vue({
el: ".plat",
data: {
cfg: {
title: "业务平台 管理",
cols: [
{col: "_id", label: "ID"},
{col: "name", label: "业务名称"},
{col: "token", label: "Token"},
{col: "remark", label: "说明"},
{col: "status", label: "状态", fmt: function (v) {
return {"0":"未启用", "1":"启用", "-1":"删除"}[v] || "";
}},
],
filters: []
},
list: {rows:[], total: 0},
row: {}
},
watch: {
},
methods: {
findList: function () {
var para = {
doc:"sys_plat",
shows: JSON.stringify(["_id", "_key", "name", "token","remark", "status"]),
filter: JSON.stringify([{col:"status",type:"!=",value:-1}]),
};
red.getJSON("/meta/find", para, function (json) {
vm.list = json;
red.setData("sysPlats", json.rows);
})
},
update: function (kv, row) {
red.post("/meta/save", {
_id: row._id,
doc: JSON.stringify(kv)
}, function (json) {
red.showMsg();
red.putAll(row, kv);
vm.findList();
});
},
edit: function (row) {
vm.row = row;
console.log(this.row);
$('#myModal').modal({moveable: true});
},
save: function (row) {
red.post("/meta/save", {
_id: row._id || "sys_plat",
doc: JSON.stringify(row)
}, function (json) {
red.showMsg();
$('#myModal').modal('hide');
vm.findList();
});
}
},
mounted: function () {
this.findList();
}
});
</script>