|
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="<?php echo $cfg_soft_lang; ?>">
- <title>系统概况</title>
- <meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no">
- <base target="_self">
- <link rel="stylesheet" href="../static/css/bootstrap.min.css">
- <link rel="stylesheet" href="../static/font-awesome/css/font-awesome.min.css">
- <link rel="stylesheet" href="css/base.css">
- <link rel="stylesheet" href="css/indexbody.css">
- <script src="../static/js/jquery.js"></script>
- <script src="../static/js/bootstrap.bundle.js"></script>
- <script src="../static/js/webajax.js"></script>
- <script src="../static/js/chart.min.js"></script>
- <script src="js/indexbody.js"></script>
- <script src="js/main.js"></script>
- <style>
- table.stattable td{padding:.6rem;border-bottom:1px solid #dee2e6;text-align:right;vertical-align:middle}
- .table{margin-bottom:0}
- .stattable{width:100%}
- .web-info{padding:10px;background:#f6f6f6;border-radius:.2rem;text-align:center}
- .web-info p{margin-bottom:10px}
- </style>
- </head>
- <body>
- <div class="container-fluid">
- <div class="row">
- <div id="__testEvn" class="col-md-12"></div>
- <div class="col-md-12 mt-3 mb-3">
- <div class="card">
- <div class="card-header"><a title="点击查看流量统计图" href="#statChart"><i class="fa fa-line-chart"></i></a> 流量统计表</div>
- <div class="card-body">
- <table class="stattable">
- <tbody>
- <tr class="title">
- <td width="10%"></td>
- <td width="20%">浏览次数(PV)</td>
- <td width="20%">独立访客(UV)</td>
- <td width="20%">IP</td>
- <td width="18%" >访问次数</td>
- </tr>
- <tr class="bg-white">
- <td class="today">今日</td>
- <td class="today" id="today_pv"></td>
- <td class="today" id="today_uv"></td>
- <td class="today" id="today_ip"></td>
- <td class="today" id="today_vv"></td>
- </tr>
- <tr class="bg-white">
- <td>昨日</td>
- <td id="yestoday_pv"></td>
- <td id="yestoday_uv"></td>
- <td id="yestoday_ip"></td>
- <td id="yestoday_vv"></td>
- </tr>
- <tr class="bg-white grey9 hide" style="display:table-row">
- <td>历史累计</td>
- <td id="total_pv"></td>
- <td id="total_uv"></td>
- <td id="total_ip"></td>
- <td id="total_vv"></td>
- </tr>
- </tbody>
- </table>
- </div>
- </div>
- </div>
- <div class="col-md-6 mt-3 mb-3 updatenews">
- <div class="card">
- <div class="card-header"><i class="fa fa-gear"></i> 系统信息</div>
- <div class="card-body">
- <div id="updateinfos">
- <?php echo "<iframe name='stafrm' src='{$offUrl}&uptime={$oktime}' frameborder='0' id='stafrm' style='width:98%;height:70px;padding:.6rem'></iframe>"; ?>
- </div>
- <table width="98%" class="table table-borderless">
- <tr>
- <td>
- <div class="web-info">
- <p>操作系统</p>
- <span><?php echo PHP_OS; ?></span>
- </div>
- </td>
- <td>
- <div class="web-info">
- <p>Web服务器</p>
- <span><?php echo $_SERVER['SERVER_SOFTWARE']; ?></span>
- </div>
- </td>
- <td>
- <div class="web-info">
- <p>服务器IP</p>
- <span><?php echo gethostbyname($_SERVER['SERVER_NAME']); ?></span>
- </div>
- </td>
- <td>
- <div class="web-info">
- <p>PHP版本</p>
- <span><?php echo @phpversion(); ?></span>
- </div>
- </td>
- </tr>
- </table>
- </div>
- </div>
- </div>
- <div class="col-md-6 mt-3 mb-3">
- <div class="card">
- <div class="card-header"><i class="fa fa-database"></i> 版本授权</div>
- <div class="card-body" id="_systeminfo">正在载入</div>
- </div>
- </div>
- <div class="col-md-6 mt-3 mb-3">
- <div class="card">
- <div class="card-header"><a name="statChart"><i class="fa fa-bar-chart"></i> 流量统计图</a></div>
- <div class="card-body">
- <canvas id="statChart"></canvas>
- </div>
- </div>
- </div>
- <div class="col-md-6 mt-3 mb-3">
- <div class="card">
- <div class="card-header"><i class="fa fa-file-word-o"></i> 最新文档</div>
- <div class="card-body" id="newarticles">正在载入</div>
- </div>
- </div>
- </div>
- </div>
- <div class="footer mt-2">
- <div id="loaddiv" style="display:none">
- <p align="center"><img src="images/loadinglit.gif">请稍后,正在下载更新文件列表</p>
- </div>
- <div id="editTab">
- <span id="editTabBody">请稍候,正在载入</span>
- </div>
- <div id="addTab">
- <form name="addform" action="index_body.php">
- <input type="hidden" name="dopost" value="addnew">
- <table width="100%" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td height="30" colspan="3" background="images/tbg.gif">
- <div style="float:left;margin-left:10px">增加快捷操作项</div>
- <div style="float:right;padding:2px 10px 0 0">
- <a href="javascript:CloseTab('addTab')"><img src="images/close.gif"></a>
- </div>
- </td>
- </tr>
- <tr>
- <td colspan="2" style="height:10px;border-top:1px solid #8DA659"></td>
- </tr>
- <tr>
- <td width="22%" height="26" align="right">链接标题:</td>
- <td width="78%"><input name="title" type="text" class="pubinputs" style="margin-bottom:10px;width:260px"></td>
- </tr>
- <tr>
- <td width="22%" height="26" align="right">链接网址:</td>
- <td width="78%"><input name="link" type="text" class="pubinputs" style="width:260px"></td>
- </tr>
- <tr>
- <td height="36"></td>
- <td><input type="submit" name="Submit" value="保存项目" class="np coolbg"></td>
- </tr>
- </table>
- </form>
- </div>
- </div>
- <script>
- $(function(){
- $.get("index_testenv.php", function (data){
- if (data !== ''){
- $("#__testEvn").html(data);
- }
- });
- $.get("index_body.php?dopost=get_articles", function (data){
- if (data !== ''){
- $("#newarticles").html(data);
- }
- });
- });
- </script>
- <script>
- var dedebizInfo;
- function ViewDedeBIZ(){
- console.log(dedebizInfo);
- ShowMsg(`
- <table width="100%" class="table table-borderless">
- <tbody>
- <tr>
- <td style="width:50%">版本号:</td>
- <td>V${dedebizInfo.result.server_version}</td>
- </tr>
- <tr>
- <td style="width:50%">运行时间:</td>
- <td>${dedebizInfo.result.server_run_time}</td>
- </tr>
- <tr>
- <td style="width:50%">服务器系统:</td>
- <td>${dedebizInfo.result.server_goos}(${dedebizInfo.result.server_goarch})</td>
- </tr>
- <tr>
- <td style="width:50%">内存占用:</td>
- <td>${dedebizInfo.result.server_memory_usage}%</td>
- </tr>
- </tbody>
- </table>
- `);
- }
- function LoadServer(){
- $.get("index_body.php?dopost=system_info", function(data){
- let rsp = JSON.parse(data);
- if (rsp.code === 200){
- let infoStr = `<table width="100%" class="table table-borderless"><tbody>`;
- if (typeof rsp.result.domain !== "undefined"){
- infoStr += `
- <tr>
- <td style="width:50%">授权域名:</td>
- <td>${rsp.result.domain} <a href="<?php echo $cfg_biz_dedebizUrl;?>/auth/?domain=${rsp.result.domain}" class="btn btn-success btn-sm">查看</a></td>
- </tr>
- `;
- }
- if (typeof rsp.result.title !== "undefined"){
- infoStr += `
- <tr>
- <td style="width:50%">站点名称:</td>
- <td>${rsp.result.title}</td>
- </tr>
- `;
- }
- if (typeof rsp.result.stype !== "undefined"){
- infoStr += `
- <tr>
- <td style="width:50%">站点类型:</td>
- <td>${rsp.result.stype}</td>
- </tr>
- `;
- }
- if (typeof rsp.result.auth_version !== "undefined" && typeof rsp.result.auth_at !== "undefined"){
- infoStr += `
- <tr>
- <td style="width:50%">授权版本:</td>
- <td>V${rsp.result.auth_version}.x.x(时间:${rsp.result.auth_at})</td>
- </tr>
- `;
- }
- if (rsp.result.core === null || rsp.result.core.code != 200){
- //下面是DedeBIZ Core组件信息
- infoStr += `
- <tr>
- <td style="width:50%">版本组件:</td>
- <td><a href="<?php echo $cfg_biz_dedebizUrl;?>/start?code=-1008" target="_blank" class="btn btn-danger btn-sm">如何启动组件</a></td>
- </tr>
- `;
- } else {
- dedebizInfo = JSON.parse(rsp.result.core.data);
- infoStr += `
- <tr>
- <td style="width:50%">版本组件:</td>
- <td><a href="javascript:ViewDedeBIZ()" class="btn btn-success btn-sm">查看组件信息</a></td>
- </tr>
- `;
- }
- infoStr += "</tbody></table>";
- $("#_systeminfo").html(infoStr);
- } else {
- $("#_systeminfo").html(`
- <table width="100%" class="table table-borderless">
- <tbody>
- <tr>
- <td style="width:60%">尚未启动商业版服务,原因:${rsp.msg}</td>
- <td style="text-align:right">当前版本:社区版<a href="<?php echo $cfg_biz_dedebizUrl;?>/start?code=${rsp.code}" target="_blank" class="btn btn-success btn-sm" style="margin-left:10px">升级商业版</a></td>
- </tr>
- <tr>
- <td colspan="2">如果您已购买商业版授权,您可以在我们的授权中心查询到相信关授权信息,如果查询结果与实际授权不符,则说明您可能购买了非法商业授权,请及时与我们取得联系,谢谢。</td>
- </tr>
- </tbody>
- </table>
- `);
- }
- });
- }
- Date.prototype.Format = function (fmt) { //author: meizz
- var o = {
- "M+": this.getMonth() + 1, //月份
- "d+": this.getDate(), //日
- "h+": this.getHours(), //小时
- "m+": this.getMinutes(), //分
- "s+": this.getSeconds(), //秒
- "q+": Math.floor((this.getMonth() + 3) / 3), //季度
- "S": this.getMilliseconds() //毫秒
- };
- if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
- for (var k in o)
- if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
- return fmt;
- }
- function LoadStat() {
- $.get("index_body.php?dopost=get_statistics", function(data){
- let rsp = JSON.parse(data);
- if (rsp.code == 200) {
- var tpv = parseInt(rsp.result.pv);
- var tuv = parseInt(rsp.result.uv);
- var tip = parseInt(rsp.result.ip);
- var tvv = parseInt(rsp.result.vv);
- $("#today_pv").html(tpv);
- $("#today_uv").html(tuv);
- $("#today_ip").html(tip);
- $("#today_vv").html(tvv);
- $.get("index_body.php?dopost=get_statistics&sdate=-1", function(data){
- let rsp = JSON.parse(data);
- if (rsp.code == 200) {
- $("#total_pv").html(parseInt(rsp.result.pv)+tpv);
- $("#total_uv").html(parseInt(rsp.result.uv)+tuv);
- $("#total_ip").html(parseInt(rsp.result.ip)+tip);
- $("#total_vv").html(parseInt(rsp.result.vv)+tvv);
- }
- });
- }
- });
- var d = new Date();
- d.setDate(d.getDate() - 1);
- var s = d.Format("yyyy-MM-dd");
- s = s.replaceAll("-","");
- $.get("index_body.php?dopost=get_statistics&sdate="+s, function(data){
- let rsp = JSON.parse(data);
- if (rsp.code == 200) {
- $("#yestoday_pv").html(rsp.result.pv);
- $("#yestoday_uv").html(rsp.result.uv);
- $("#yestoday_ip").html(rsp.result.ip);
- $("#yestoday_vv").html(rsp.result.vv);
- }
- });
- }
- async function LoadStatChart() {
- const ctx = document.getElementById('statChart').getContext('2d');
- let labels = [];
- let pvs = [];
- let ips = [];
- let uvs = [];
- let vvs = [];
- for (let i = 15; i > 0; i--) {
- var d = new Date();
- d.setDate(d.getDate() - i);
- var s = d.Format("yyyy-MM-dd");
- labels.push(d.Format("MM-dd"));
- s = s.replaceAll("-","");
- let resp = await fetch("index_body.php?dopost=get_statistics&sdate="+s);
- let data = await resp.json();
- if (data.code == 200) {
- pvs.push(typeof data.result.pv=="undefined"? 0 : data.result.pv);
- ips.push(typeof data.result.ip=="undefined"? 0 : data.result.ip);
- uvs.push(typeof data.result.uv=="undefined"? 0 : data.result.uv);
- vvs.push(typeof data.result.vv=="undefined"? 0 : data.result.vv);
- }
- }
- const myChart = new Chart(ctx, {
- type: 'line',
- options: {
- responsive: true,
- plugins: {
- legend: {
- position: 'top',
- },
- title: {
- display: true,
- text: '<?php echo $cfg_webname; ?>流量统计图'
- }
- }
- },
- data: {
- labels: labels,
- datasets: [{
- label: 'IP',
- data: ips,
- borderColor: 'rgba(255, 99, 132, 1)',
- backgroundColor :'rgba(255, 99, 132, 0.2)',
- borderWidth: 1
- },
- {
- label: 'PV',
- data: pvs,
- borderColor: 'rgba(54, 162, 235, 1)',
- backgroundColor :'rgba(54, 162, 235, 0.2)',
- borderWidth: 1
- },{
- label: 'UV',
- data: uvs,
- borderColor: 'rgba(255, 206, 86, 1)',
- backgroundColor: 'rgba(255, 206, 86, 0.2)',
- borderWidth: 1
- },{
- label: '访问次数',
- data: vvs,
- borderColor: 'rgba(75, 192, 192, 1)',
- backgroundColor: 'rgba(75, 192, 192, 0.2)',
- borderWidth: 1
- }
- ]
- },
- });
- }
- $(document).ready(function(){
- LoadServer();
- LoadStat();
- LoadStatChart();
- setInterval(function(){
- LoadServer();
- }, 60000)
- });
- </script>
- </body>
- </html>
|