|
|
@@ -1,7 +1,7 @@
|
|
|
<% layout('/layouts/default.html', {title: '通用客户端版本管理', libs: ['dataGrid']}){ %>
|
|
|
<div class="main-content"><div class="box box-main">
|
|
|
<div class="box-header"><div class="box-title"><i class="fa icon-notebook"></i> 通用客户端版本管理</div><div class="box-tools pull-right">
|
|
|
-<% if(hasPermi('mes:clientVersion:edit')){ %><a href="javascript:openVersionForm()" class="btn btn-default btnTool"><i class="fa fa-plus"></i> 新增版本</a><% } %>
|
|
|
+<% if(hasPermi('mes:clientVersion:edit')){ %><a href="${ctx}/mes/clientVersion/form" class="btn btn-default btnTool"><i class="fa fa-plus"></i> 新增版本</a><% } %>
|
|
|
<a href="#" class="btn btn-default" id="btnSetting"><i class="fa fa-navicon"></i></a></div></div>
|
|
|
<div class="box-body">
|
|
|
<ul class="nav nav-tabs" role="tablist">
|
|
|
@@ -20,6 +20,10 @@
|
|
|
<table id="dataGrid"></table><div id="dataGridPage"></div>
|
|
|
</div>
|
|
|
<div id="runtimePanel" class="tab-pane">
|
|
|
+ <div style="margin-bottom:8px">
|
|
|
+ <button type="button" class="btn btn-sm btn-primary" onclick="$('#runtimeGrid').trigger('reloadGrid')"><i class="fa fa-refresh"></i> 刷新</button>
|
|
|
+ <span style="color:#888;margin-left:8px;font-size:12px">列表每次切到本页也会自动刷新</span>
|
|
|
+ </div>
|
|
|
<table id="runtimeGrid"></table><div id="runtimeGridPage"></div>
|
|
|
</div>
|
|
|
</div></div></div></div>
|
|
|
@@ -33,34 +37,32 @@ $('#dataGrid').dataGrid({
|
|
|
searchForm: $('#searchForm'),
|
|
|
columnModel: [
|
|
|
{header:'客户端类型', name:'clientType', width:120, formatter:function(v){return clientTypeName(v);}},
|
|
|
- {header:'版本号', name:'ver', width:90, formatter:function(v,o,row){return '<a href="javascript:openVersionForm(\''+row.id+'\')" class="btnList">'+(v||row.id)+'</a>';}},
|
|
|
+ {header:'版本号', name:'ver', width:90, formatter:function(v,o,row){return '<a href="${ctx}/mes/clientVersion/form?id='+row.id+'" class="btnList">'+(v||row.id)+'</a>';}},
|
|
|
{header:'更新内容', name:'content', width:250},
|
|
|
{header:'状态', name:'state', width:80, formatter:function(v){return js.getDictLabel(${@DictUtils.getDictListJson('mes_app_status')},v,'未知',true);}},
|
|
|
{header:'更新时间', name:'updateDate', width:150},
|
|
|
- {header:'操作', name:'actions', width:100, formatter:function(v,o,row){return '<a href="javascript:openVersionForm(\''+row.id+'\')" class="btnList"><i class="fa fa-pencil"></i> 编辑</a>';}}
|
|
|
+ {header:'操作', name:'actions', width:100, formatter:function(v,o,row){return '<a href="${ctx}/mes/clientVersion/form?id='+row.id+'" class="btnList"><i class="fa fa-pencil"></i> 编辑</a>';}}
|
|
|
]
|
|
|
});
|
|
|
|
|
|
-// 用 layer 弹窗打开版本表单,保存后自动刷新 grid(替代原 tab 打开)
|
|
|
-function openVersionForm(id){
|
|
|
- var url = '${ctx}/mes/clientVersion/form' + (id ? '?id='+id : '');
|
|
|
- top.layer.open({
|
|
|
- type: 2, title: id ? '编辑版本' : '新增版本',
|
|
|
- area: ['680px', '560px'], content: url,
|
|
|
- end: function(){ $('#dataGrid').trigger('reloadGrid'); }
|
|
|
- });
|
|
|
-}
|
|
|
+// 表单页保存后通过 localStorage 通知列表刷新
|
|
|
+window.addEventListener('storage', function(e){
|
|
|
+ if(e.key === 'mesClientVersion.reload') $('#dataGrid').trigger('reloadGrid');
|
|
|
+});
|
|
|
|
|
|
// —— 客户端监控 grid ——
|
|
|
+function pad2(n){return (n<10?'0':'')+n;}
|
|
|
function heartbeatCell(v){
|
|
|
if(!v) return '<span class="label label-default">未知</span>';
|
|
|
- var t = new Date(v.replace(' ','T')).getTime();
|
|
|
+ var t = new Date(String(v).replace(' ','T')).getTime();
|
|
|
if(isNaN(t)) return '<span class="label label-default">'+v+'</span>';
|
|
|
var gap = (Date.now()-t)/1000, lab;
|
|
|
if(gap<60) lab='<span class="label label-success">在线</span>';
|
|
|
else if(gap<180) lab='<span class="label label-warning">疑似离线</span>';
|
|
|
else lab='<span class="label label-default">离线</span>';
|
|
|
- return lab + ' <span style="color:#888">'+v+'</span>';
|
|
|
+ var d = new Date(t);
|
|
|
+ var short = pad2(d.getMonth()+1)+'-'+pad2(d.getDate())+' '+pad2(d.getHours())+':'+pad2(d.getMinutes());
|
|
|
+ return lab + ' <span style="color:#888">'+short+'</span>';
|
|
|
}
|
|
|
|
|
|
$('#runtimeGrid').dataGrid({
|
|
|
@@ -73,9 +75,7 @@ $('#runtimeGrid').dataGrid({
|
|
|
{header:'IP', name:'hostIp', width:140},
|
|
|
{header:'JAR版本', name:'jarVersion', width:90},
|
|
|
{header:'配置版本', name:'configVersion', width:90},
|
|
|
- {header:'心跳/在线', name:'lastHeartbeat', width:260, formatter:function(v){return heartbeatCell(v);}},
|
|
|
- {header:'目标JAR', name:'desiredJarVersion', width:90},
|
|
|
- {header:'目标配置', name:'desiredConfigVersion', width:90},
|
|
|
+ {header:'心跳/在线', name:'lastHeartbeat', width:200, formatter:function(v){return heartbeatCell(v);}},
|
|
|
{header:'操作', name:'actions', width:130, formatter:function(v,o,row){return '<a href="javascript:openRuntimeDialog(\''+row.id+'\')" class="btn btn-xs btn-primary"><i class="fa fa-cog"></i> 配置/升级</a>';}}
|
|
|
]
|
|
|
});
|