pxmhj_home.ss.jsp 20 KB

1
  1. <html> <head> </head> <style> table{ width:100%; word-break: break-all; } fieldset fieldset{ margin-left:0; margin-right:0; margin-bottom:0; border-left:0; border-right:0; } fieldset fieldset{ padding-left:1em; min-width:90%; } fieldset{ min-width:90%; border:1px dashed lightgray; margin:1em; } [rowspan]{ vertical-align: middle; } td,th{ border-bottom:1px solid lightgray; } canvas{ margin:3px; } </style> <body> <%-- 来自 xmsl_gn.jsp,值来自 HDDev_scgl:XmslService.$updateCheck() --%> <equal.ss val="${empty gx}" val2="false"> <%-- 去掉 form/submit,直接用 button。加确认,详细信息移到确认页面。Lin <form action="<serv@ss name='pxmhj_rerls' dest='Info' parm='{pxmhjid:"${pxmhjid}"}'/>" method="post"> --%> 发布不成功(或正在执行): <input type="button" class="list-button" onclick='<serv.ss dlg="true" name="pxmhj_initRerls" dest="pxmhj_rerlsSure" parm="{pxmid:&quot;${pxmid}&quot;,pxmhjid:&quot;${pxmhjid}&quot;}"/>' value="重新发布"/> <div style='font-weight:bold;overflow:hidden;width:100%;white-space:nowrap;text-overflow:ellipsis;'> <txt.ss val='${gx.fbsj}' fmt='MM-dd HH:mm'/>,“${gx.ms}” </div> <%-- 去掉,详细信息移到确认页面。Lin <div id="container" class='gxnr' align="center"> <table> <rpt.ss name="gxnr" id="w"> <tr id="${w.pwjid}" > <td>${w.pwjlb.desc}</td> <td>${w.ycpwjDesc}</td> </tr> <rpt.ss name="${w.xgwjSet}" id="xw"> <tr id="${xw.pwjid}" pId="${w.pwjid}"> <!--<td></td>--> <td>${xw.pwjlb.desc}</td> <td>${xw.ycpwjDesc}</td> </tr> </rpt.ss> </rpt.ss> </table> </div> --%> <%-- 去掉 form/submit,直接用 button。移到 "发布不成功(或正在执行):" 右侧 Lin <div class="bottom-div"> <input type="submit" value="确认" onclick="" class="bottom-button"/> </div> </form> --%> </equal.ss> <equal.ss val="${empty processor}" val2="false"> 正在发布,请稍候 </equal.ss> <fieldset> <legend>环境:<%-- 运行状态:。Lin --%> <input type="button" value="查看环境" class="list-button" onclick='<serv.ss dlg="true" name="pxmhj_ck" dest="objPlay" parm="{pxmhjid:&quot;${pxmhjid}&quot;,ssObjId:&quot;${pxmhjid}&quot;,ssObjName:&quot;pxmhj&quot;}"/>'/> <input type="button" value="查看发布" class="list-button" onclick='<serv.ss dlg="true" name="pxmhj_searchRls" dest="pxmhj_rlsList" parm="{pxmid:&quot;${pxmid}&quot;,pxmhjid:&quot;${pxmhjid}&quot;}"/>'/> <%-- 再改,去掉 ${haveDeploy},只用 ${haveRlsJob}。Lin <equal.ss val="${haveDeploy}" val2="false"> 全部已发布 </equal.ss> --%> <equal.ss val="${haveRlsJob}" val2="false"> 全部已发布 </equal.ss> <%-- 来自 xmsl_gn.jsp,值来自 HDDev_scgl:XmslService.$undeployBusinessCheck(Xmsl pXmsl, Xmsl xmsl) --%> <%-- 再去掉 ${haveDeploy},只用 ${haveRlsJob}。Lin <equal.ss val="${haveDeploy}" val2="true"> --%> <%-- 先去掉,应该是母体到项目时才有用。另,发布业务 改为无需受控(重装)。Lin <input type="button" value="发布业务" class="list-button" onclick='<serv.ss dlg="true" dest="pxmhj_bizRls" parm="{pxmhjid:&quot;${pxmhjid}&quot;,pxmid:&quot;${pxmid}&quot;}"/>'/> --%> <equal.ss val="${haveRlsJob}" val2="true"> <%-- 增加,细化控制。Lin --%> ... <%-- 间开查看按钮和工作按钮。Lin --%> <input type="button" value="发布任务" class="list-button" onclick='<serv.ss dlg="true" name="pxmhj_searchJobRls" dest="pxmhj_jobRls" parm="{pxmhjid:&quot;${pxmhjid}&quot;,pxmid:&quot;${pxmid}&quot;,compatible:&quot;true&quot;}"/>'/> </equal.ss> <%-- 再去掉 ${haveDeploy},只用 ${haveRlsJob}。Lin </equal.ss> --%> <%-- 来自 xmsl_gn.jsp,值来自 HDDev_scgl:XmslService.$execdbcheck() --%> <equal.ss val="${execdb}" val2="true"> <input type="button" value="建数据库" class="list-button" onclick='<serv.ss dlg="true" name="pxmhj_initDbRls" dest="pxmhj_dbRlsSure" parm="{pxmid:&quot;${pxmid}&quot;,pxmhjid:&quot;${pxmhjid}&quot;}"/>'/> </equal.ss> <%-- 再去掉,"部署数据库" 里会自动生成。需要重新生成时,下面有临时的、专门生成 PO 的按钮。Lin <equal@ss val="${execdb}" val2="false"> <input type="button" class="list-button" onclick='<serv@ss dlg="true" name="pxmhj_initDbRls" dest="pxmhj_dbRlsSure" parm="{pxmid:&quot;${pxmid}&quot;,pxmhjid:&quot;${pxmhjid}&quot;}"/>' value="生成 PO"/> </equal.ss> --%> <%-- 增加,把 "建全文库" 从 "更新数据库、生成pojo、初始化全文库" 独立出来 -- 建全文库依赖的是 obj.xml。Lin --%> <equal.ss val="${execFts}" val2="true"> <input type="button" value="建全文库" class="list-button" onclick='<serv.ss dlg="true" name="pxmhj_initFtsMake" dest="pxmhj_ftsMakeSure" parm="{pxmid:&quot;${pxmid}&quot;,pxmhjid:&quot;${pxmhjid}&quot;}"/>'/> </equal.ss> <%-- 增加,把 生成Po 独立出来。改为最后处理包里的 sqlView 文件 -- 建视图时,用到的 系统字段(记录状态码、管理部门ID等) 还没创建。Lin --%> <equal.ss val="${execPo}" val2="true"> <input type="button" value="生成PO" class="list-button" onclick='<serv.ss dlg="true" dest="pxmhj_poJarMakeSure" parm="{pxmid:&quot;${pxmid}&quot;,pxmhjid:&quot;${pxmhjid}&quot;}"/>'/> </equal.ss> <%-- 增加,建 上传 或 富文本编辑器生成 的文件序列号。Lin --%> <equal.ss val="${execPo}" val2="true"> <input type="button" value="建文件序列号" class="list-button" onclick='<serv.ss dlg="true" dest="pxmhj_fileSeqMakeSure" parm="{pxmid:&quot;${pxmid}&quot;,pxmhjid:&quot;${pxmhjid}&quot;}"/>'/> </equal.ss> <%-- 增加,把 "创建系统会议" 从 "更新数据库、生成pojo" 独立出来。Lin --%> <equal.ss val="${execSysNm}" val2="true"> <input type="button" value="建系统会议" class="list-button" onclick='<serv.ss dlg="true" dest="pxmhj_sysNmMakeSure" parm="{pxmid:&quot;${pxmid}&quot;,pxmhjid:&quot;${pxmhjid}&quot;}"/>'/> </equal.ss> <%-- 增加,把 "创建 sys 用户" 从 "更新数据库、生成pojo" 独立出来。Lin --%> <equal.ss val="${execSysUser}" val2="true"> <input type="button" value="建sys用户" class="list-button" onclick='<serv.ss dlg="true" dest="pxmhj_sysUserMakeSure" parm="{pxmid:&quot;${pxmid}&quot;,pxmhjid:&quot;${pxmhjid}&quot;}"/>'/> </equal.ss> <%-- 再去掉,项目到环境不用挑选,用常规的发布功能。Lin 程序、页面先保留,用于母体发布到项目 <equal@ss val="${execCms}" val2="true"> <input type="button" value="发布CMS" class="list-button" onclick='<serv@ss dlg="true" name="pxmhj_initCmsRls" dest="pxmhj_cmsRls" parm="{pxmid:&quot;${pxmid}&quot;,pxmhjid:&quot;${pxmhjid}&quot;}"/>'/> </equal@ss> --%> </legend> <fieldset> <legend>服务器: <%-- 去掉,只是查看。Lin <input type='button' class="list-button" onclick='@service{name:"xmsl_webserver_config_sz",dest:"xmsl_webserver_config",show:"wdDialog",param:{xmid:"${xmid}",xmslid:"${xmslid}"}}@' value="TOMCAT设置启动命令">; --%> <input type="button" class="list-button refresh" onclick="loadStatus()" value="刷新状态"/> <input type="button" value="重启AS" class="list-button" onclick='<serv.ss dlg="true" dest="pxmhj_kubeRestartSure" parm="{pxmid:&quot;${pxmid}&quot;,pxmhjid:&quot;${pxmhjid}&quot;}"/>'/> <input type="button" value="重启DB" class="list-button refresh" onclick="loadStatus()"/> <input type="button" value="重启FTS" class="list-button refresh" onclick="loadStatus()"/> <input type="button" value="重建FTS索引" class="list-button refresh" onclick='<serv.ss dlg="true" name="pxmhj_initFtsIdxRemakePick" dest="pxmhj_ftsIdxRemakePick" parm="{pxmid:&quot;${pxmid}&quot;,pxmhjid:&quot;${pxmhjid}&quot;}"/>'/> </legend> <table> <tr> <td width="15%" style="text-align:right">PMS</td> <td align='center'><span class='status ssh'></span></td> <td>服务器</td> </tr> <tr> <td style="text-align:right">tomcat</td> <td align='center'><span class='status es'></span></td> <td>全文库(大概状态)(<spam class='status host es'></spam>)</td> </tr> <tr> <td >tomcat</td> <td align='center'><span class='status server'></span></td> <td><span class='status host web'></span>:<span class="status port web"></span></td> </tr> <%-- 去掉,只是查看。Lin <wd:equal leftValue="${noconfig}" rightValue="true"> <tr> <td>没设置启动命</td> </tr> </wd:equal> <wd:equal leftValue="${empty noconfig}" rightValue="true"> <tr> <td>操作</td> <td colspan='2'> <input type="button" class="start list-button confirm" _click='@service{name:"xmsl_webserver_start",dest:"sys_info",show:"wdDialog",param:{xmid:"${xmid}",xmslid:"${xmslid}"}}@' value="启动服务器" /> <input type="button" class="restart list-button confirm" _click='@service{name:"xmsl_webserver_restart",dest:"sys_info",show:"wdDialog",param:{xmid:"${xmid}",upload_env:"r",xmslid:"${xmslid}"}}@' value="重启服务器" /> <input type="button" class="stop list-button confirm" _click='@service{name:"xmsl_webserver_stop",dest:"sys_info",show:"wdDialog",param:{xmid:"${xmid}",xmslid:"${xmslid}"}}@' value="关闭服务器" /> </td> </tr> </wd:equal> --%> </table> </fieldset> <%-- 去掉,只是查看。Lin <fieldset class="java"> <legend>其他</legend> <input type="button" class="list-button confirm" _click='@service{name:"xmsl_recompile_dc",dest:"sys_info",show:"wdDialog",param:{xmid:"${xmid}",xmslid:"${xmslid}"}}@' value="重新编译DC" /> <input type="button" class="list-button confirm" _click='@service{name:"xmsl_jar_wd_rebuild",dest:"sys_info",show:"wdDialog",param:{xmid:"${xmid}",upload_env:"r",xmslid:"${xmslid}"}}@' value="重新编译当前WD" /> <input type="button" class="list-button confirm" _click='@service{name:"xmsl_jar_wd_update",dest:"sys_info",show:"wdDialog",param:{xmid:"${xmid}",upload_env:"r",xmslid:"${xmslid}"}}@' value="更新并编译WD" /> </fieldset> --%> <fieldset> <legend>系统资源: <input id='loadbtn' type="button" class='list-button' value="已暂停,点击继续" onclick="continueLoad()"/> </legend> <div><canvas id="cpu"></canvas><canvas id="cpu1"></canvas></div> <div><canvas id="mem"></canvas><canvas id="mem1"></canvas></div> </fieldset> </fieldset> <script> $(".confirm").click(function(){ var $this=$(this); wd.display.confirm("消息",this.value+"?",function(){ eval($this.attr('_click')); }) }); function loadStatus(){ continueLoad(); // 增加,同时 loadSysStatus(。Lin $("span.status").html("状态获取,稍等"); $("span.status.host").html(""); $("input.status").hide(); $("input.refresh").hide(); $(".java input").hide(); $(".start,.restart,.stop").hide(); $.ajax({ url: "<serv.ss name='pxmhj_rdServerState' parm='{pxmhjid:"${pxmhjid}",obj:"check-webserver"}'/>", dataType:"json", success: function (result) { var connect="---√---",connectfailure="---×&nbsp;&nbsp;&nbsp;"; $(".refresh").show(); if(result["ssh-connected"]){ $(".java input").show(); $(".status.ssh").html(connect); if(result["server-started"]){ $(".restart,.stop").show(); $(".start").hide(); $(".status.server").html("已启动"); }else{ $(".restart,.stop").hide(); $(".start").show(); $(".status.server").html("未启动"); } $.ajax({ url: "<serv.ss name='pxmhj_rdServerState' parm='{pxmhjid:"${pxmhjid}",obj:"info-webserver"}'/>", dataType:"json", success:function(result){ $(".status.host.web").html(result["host-server"]); <%-- 改为只有一个 port。Lin var ports=[],ps=result["ports-server"]; for(var i=0;i<ps.length;i++){ ports=ports.concat(ps[i].ports); } $(".status.port.web").html(ports); --%> $(".status.port.web").html(result["ports-server"]); } }) $.ajax({ url: "<serv.ss name='pxmhj_rdServerState' parm='{pxmhjid:"${pxmhjid}",obj:"check-elastic"}'/>", dataType:"json", success:function(result){ if(result['elastic-started']){ $(".status.es").not(".host").html(connect); }else{ $(".status.es").not(".host").html(connectfailure); } } }) $.ajax({ url: "<serv.ss name='pxmhj_rdServerState' parm='{pxmhjid:"${pxmhjid}",obj:"info-elastic"}'/>", dataType:"json", success:function(result){ $(".status.host.es").html(result["host-elastic"]+":"+result["port-elastic"]); } }) }else{ $(".start,.restart,.stop").hide(); $(".java input").hide(); $(".status.ssh").html(connectfailure); $(".status.es").html("-------"); } } }); } loadStatus(); var cpuChar=new CreateMovingLineDiagram("cpu","系统CPU使用率",100,60,300,120); cpuChar.play(); var cpuChar1=new CreateMovingLineDiagram("cpu1","服务器CPU使用率",100,60,300,120); cpuChar1.play(); var memChar=new CreateMovingLineDiagram("mem","系统内存使用",100,100,300,120); memChar.play(); var memChar1=new CreateMovingLineDiagram("mem1","服务器内存使用",100,100,300,120); memChar1.play(); var loading=true; window.top.addEventListener("blur",function(){ loading=false; console.log("blur",loading) }); window.addEventListener("blur",function(){ loading=false; console.log("blur",loading) }); var count=0; // window.onfocus=function(){ // if(!loading){ // count=0; // loadSysStatus(); // } // loading=true; // } window.focus(); loadSysStatus(); function continueLoad(){ loading=true; count=0; loadSysStatus(); } function loadSysStatus(){ $("#loadbtn").hide(); $.ajax({ url: "<serv.ss name='pxmhj_rdSysState' parm='{pxmhjid:"${pxmhjid}"}'/>", dataType:"json", success: function (result) { // console.log(result); // 再去掉,太多信息。Lin if(result.err||result.connect==false){ console.log("err",result) }else{ try { var top=result; var topInf=top.system; cpuChar.push(parseFloat(topInf.userCpu)); cpuChar.render(); var mem_used=parseInt(topInf.useMem); var mem_total=parseInt(topInf.totalMem); memChar.push(mem_used/mem_total*100); memChar.render(); /* 先去掉,不分 system、server -- 看机器(system)的,不看进程的(server)。Lin var topServer; for(var i=0;i< top.server.length;i++){ topServer=top.server[i]; cpuChar1.push(parseFloat(topServer.cpu)); cpuChar1.render(); memChar1.push(parseFloat(topServer.mem)); memChar1.render(); break; } */ } catch (error) { console.err(error); } } count++; if(!loading||count>100){ $("#loadbtn").show(); }else{ loadSysStatus(); } } }); } // var val=Math.random()*100; // cpuChar.push(val); // cpuChar.render(); // val=Math.random()*100; // cpuChar1.push(val); // cpuChar1.render(); // val=0; // while(val<50||val>60){ // val=Math.random()*100; // } // memChar.push(val); // memChar.render(); // val=0; // while(val<50||val>60){ // val=Math.random()*100; // } // memChar1.push(val); // memChar1.render(); function CreateMovingLineDiagram(name, title, maxvalue, segmentationNum, width, height) { let _this = this; //默认参数 _this.SetData = { canvasid: "#" + name,// 画布ID canvaswidth: width || 600,//画布宽度 canvasheight: height || 300,//画布高度 maxvalue: maxvalue || 100, segmentationNum: segmentationNum || 100,//分段数,将画布宽度分割成多少分 title: title || "untitled", } _this.push = function (value) { if (_this.XYAttr.length > _this.segmentation) { _this.XYAttr.shift(); } _this.XYAttr.push(parseFloat(parseFloat(value).toFixed(1))); } _this.drawline = function (x, y, tx, ty, color) { var context = _this.context; context.beginPath(); context.moveTo(x, y); context.lineTo(tx, ty); context.strokeStyle = color; context.stroke(); } _this.render = function () { var count = _this.count = _this.count || 0; _this.count++; var xys = [], context = _this.context, canvas = _this.canvas, datas = _this.XYAttr; var segmentation = _this.segmentation; var maxvalue = _this.maxvalue; for (var i = 0; i < datas.length; i++) { xys.push(datas[i]); } while (xys.length < segmentation + 1) { xys.unshift(0); } context.clearRect(0, 0, canvas.width, canvas.height); var a = canvas.width / segmentation; for (var i = 0; i <= Math.floor(xys.length / 10) + 1; i++) { var x = (i * 10 - count % 10) * a - 1; _this.drawline(x, 0, x, canvas.height, 'lightblue'); } for (var i = 0; i < 10; i++) { var y = (canvas.height / 10 * i) - 1 _this.drawline(0, y, canvas.width, y, 'lightblue'); } context.beginPath(); //清除上一次的绘制参数 开始绘制 context.moveTo(0, canvas.height * (1 - xys[0] / maxvalue) - 1); //线条起点moveToX,moveToY context.fillStyle = "rgba(161,195,255,.65)"; context.strokeStyle = "blue"; for (var i = 1; i < xys.length; i++) { context.lineTo((i) * a, canvas.height * (1 - xys[i] / maxvalue) - 1); } context.lineTo(canvas.width, canvas.height); context.lineTo(0, canvas.height); context.closePath(); context.stroke(); //结束绘制 context.fill(); //多边形填充 context.fillStyle = "rgba(100,100,255,.65)"; context.font="1em bold 宋体"; context.textBaseline = "middle"; context.fillText(_this.SetData.title, 5, 15); context.font="12px bold 宋体"; context.fillStyle = "green"; context.textAligh = "right"; var valll=xys[xys.length-1]; var xxx=canvas.width-35 var yyy=canvas.height * (1 - valll / maxvalue) - 12; if(yyy<0){ yyy=18; }else if(yyy<15){ yyy=canvas.height * (1 - valll / maxvalue) + 12; } context.fillText(valll.toFixed(1)+"%",xxx,yyy); } _this.play = function () { let canvas = _this.canvas = document.querySelector(_this.SetData.canvasid); //获取Canvas元素 canvas.width = _this.SetData.canvaswidth; //设置画布宽 canvas.height = _this.SetData.canvasheight; //设置画布高 canvas.style.border = "1px solid darkblue"; _this.context = canvas.getContext("2d"); //使用Context绘画2D _this.segmentation = _this.SetData.segmentationNum //分段数 _this.XYAttr = []; //分段坐标数组 _this.maxvalue = _this.SetData.maxvalue; _this.render(); } } </script> </body> </html>