大版本更新推送

This commit is contained in:
dell
2023-11-06 21:26:55 +08:00
parent b94dc66092
commit 17b4e899ff
36 changed files with 3491 additions and 377 deletions

View File

@ -691,6 +691,7 @@
//bool变量取消平滑采取折线
let issmooth = !(StaticSelectTagList[si].Units ==='Y/N')
let seriesdata = {
symbol: "none",
data: yDataArr[si],
// 曲线名
name: JSON.parse(JSON.stringify(StaticSelectTagList[si].Description)),
@ -872,7 +873,7 @@
<div id="ReEndTime" class="layui-form-item active" data-id="ReEndTime"
data-tag="date" data-index="0">
<label class="layui-form-label layui-form-required" style="width: 80px;">
结束间:
结束间:
</label>
<div class="layui-input-block" style="width:calc(100% - 110px);margin-left: 110px;">
<input id="dateReEndTime" name="ndateReEndTime" lay-verify="required" class="layui-input icon-date widget-date "

View File

@ -285,6 +285,7 @@
//bool变量取消平滑采取折线
let issmooth = !(StaticSelectTagList[si].Units === 'Y/N')
let seriesdata = {
symbol: "none",
data: yDataArr[si],
// 曲线名
name: JSON.parse(JSON.stringify(StaticSelectTagList[si].Description)),

View File

@ -20,8 +20,10 @@ namespace HT.Cloud.Web.Areas.ChartsManage.Controllers
/// 描 述:历史趋势控制器类
/// </summary>
[Area("PenMeiChartsManage")]
public class PenMeiHistoryChartsController : BaseController
{
[HandlerLogin(needLogin:false)]
[HandlerAuthorize(needAuth:false)]
public class PenMeiHistoryChartsController : BaseController //BaseController
{
public HistoryChartsService _historyChartsService { get;set;}
/// <summary>
/// 绑定数据仓库的数据库ID

View File

@ -20,7 +20,9 @@ namespace HT.Cloud.Web.Areas.ChartsManage.Controllers
/// 描 述:历史趋势控制器类
/// </summary>
[Area("PenMeiChartsManage")]
public class PenMeiHistoryTechChartsController : BaseController
[HandlerLogin(needLogin: false)]
[HandlerAuthorize(needAuth: false)]
public class PenMeiHistoryTechChartsController : BaseController
{
public HistoryTechChartsService _historyTechChartsService { get;set;}
/// <summary>

View File

@ -20,7 +20,9 @@ namespace HT.Cloud.Web.Areas.ChartsManage.Controllers
/// 描 述:历史趋势控制器类
/// </summary>
[Area("PenMeiChartsManage")]
public class PenMeiRtTechChartsController : BaseController
[HandlerLogin(needLogin: false)]
[HandlerAuthorize(needAuth: false)]
public class PenMeiRtTechChartsController : BaseController
{
public RtTechChartsService _rtTechChartsService { get;set;}
/// <summary>
@ -65,10 +67,10 @@ namespace HT.Cloud.Web.Areas.ChartsManage.Controllers
}
[HttpPost]
public async Task<ActionResult> GetChartsTagValueInit(string[] charts_TagNames)
public async Task<ActionResult> GetChartsTagValueInit(string[] charts_TagNames, string[] Tables)
{
var systemName = "喷煤系统";
var data = await _rtTechChartsService.GetChartsTagValueInit(charts_TagNames, systemName);
var data = await _rtTechChartsService.GetChartsTagValueInit(charts_TagNames, Tables, systemName);
return Content(data);
}

View File

@ -691,6 +691,7 @@
//bool变量取消平滑采取折线
let issmooth = !(StaticSelectTagList[si].Units ==='Y/N')
let seriesdata = {
symbol: "none",
data: yDataArr[si],
// 曲线名
name: JSON.parse(JSON.stringify(StaticSelectTagList[si].Description)),
@ -872,7 +873,7 @@
<div id="ReEndTime" class="layui-form-item active" data-id="ReEndTime"
data-tag="date" data-index="0">
<label class="layui-form-label layui-form-required" style="width: 80px;">
结束间:
结束间:
</label>
<div class="layui-input-block" style="width:calc(100% - 110px);margin-left: 110px;">
<input id="dateReEndTime" name="ndateReEndTime" lay-verify="required" class="layui-input icon-date widget-date "

View File

@ -869,7 +869,7 @@
<div id="ReEndTime" class="layui-form-item active" data-id="ReEndTime"
data-tag="date" data-index="0">
<label class="layui-form-label layui-form-required" style="width: 80px;">
结束间:
结束间:
</label>
<div class="layui-input-block" style="width:calc(100% - 110px);margin-left: 110px;">
<input id="dateReEndTime" name="ndateReEndTime" lay-verify="required" class="layui-input icon-date widget-date "

View File

@ -816,6 +816,7 @@
//bool变量取消平滑采取折线
let issmooth = !(StaticSelectTagList[si].Units ==='Y/N')
let seriesdata = {
symbol: "none",
data: yDataArr[si],
// 曲线名
name: JSON.parse(JSON.stringify(StaticSelectTagList[si].Description)),
@ -1029,7 +1030,7 @@
<div id="ReEndTime" class="layui-form-item active" data-id="ReEndTime"
data-tag="date" data-index="0">
<label class="layui-form-label layui-form-required" style="width: 80px;">
结束间:
结束间:
</label>
<div class="layui-input-block" style="width:calc(100% - 110px);margin-left: 110px;">
<input id="dateReEndTime" name="ndateReEndTime" lay-verify="required" class="layui-input icon-date widget-date "

View File

@ -478,18 +478,22 @@
//获取tagvalue
async function GetChartsTagValue() {
var chardatalist = new Array();
var tablesArr = [];
SelectTagNamelist.splice(0, SelectTagNamelist.length)
for (var si = 0; si < StaticSelectTagList.length; si++) {
SelectTagNamelist.push(StaticSelectTagList[si].TagName);
debugger;
tablesArr.push(StaticSelectTagList[si].Table);
}
myajax = await $.ajax({
url: "/PenMeiChartsManage/PenMeiRtTechCharts/GetChartsTagValueInit",
type: "Post",
dataType: "json",
traditional: true,//这里设置为true
data: { charts_TagNames: SelectTagNamelist },
data: { charts_TagNames: SelectTagNamelist, Tables: tablesArr },
success: function (redata) { }
});
debugger;
@ -508,319 +512,6 @@
}
//showchart = async function () {
// //(document.getElementById('echarts-records'), 'walden');
// var myChart = echarts.init(document.getElementById('result'),'walden');
// myChart.hideLoading();
// myChart.showLoading();
// var chardatalist = await GetChartsTagValue();
// var unitsrc = new Array();
// var unitnames = new Array();
// var unitcolor = new Array();
// for(var ddi = 0;ddi<StaticSelectTagList.length;ddi++){
// var unit_now = StaticSelectTagList[ddi].Units;
// if (unitsrc.indexOf(unit_now) == -1) {
// debugger;
// unitsrc.push(unit_now);
// unitnames.push(StaticSelectTagList[ddi].UnitType + "(" + StaticSelectTagList[ddi].Units + ")");
// unitcolor.push(StaticSelectTagList[ddi].HTRGB);
// }
// }
// debugger;
// myChart.dispose();
// var xDataArr = new Array();
// var yDataArr = new Array();
// for (var listindex = 0; listindex < chardatalist.length; listindex++) {
// let ydata = chardatalist[listindex].map(x => { return x.value });
// let xdata = chardatalist[listindex].map(x => { return x.name });
// xDataArr.push(xdata);
// yDataArr.push(ydata);
// }
// var lightwhite = 0;
// if (unitsrc.length > 0) {
// lightwhite = (unitsrc.length ) * 40;
// }
// //var lightwhite = (chardatalist.length) * 100;
// var color = new Array();
// for (var colori = 0; colori < StaticSelectTagList.length; colori++) {
// //color.push(roundrgb())
// color.push(StaticSelectTagList[colori].HTRGB);
// //color.push("#000000");
// }
// var yAxis = new Array();
// debugger;
// var maxYs = unitsrc.length;
// for (var ci = 0; ci < unitsrc.length; ci++) {
// if (ci == 0)
// {
// let yAxisdata = {
// name: JSON.parse(JSON.stringify(unitnames[ci])),
// nameLocation: 'center',
// type: 'value',
// //position:'left',
// //坐标轴两边留白策略设置max、min后失效
// boundaryGap: ['5%', '2%'],
// // max: 700,
// // min: 0,
// // 让表格的刻度向靠里侧显示
// axisTick: {
// inside: true
// },
// axisLabel: {
// inside: true,
// align: 'left',
// verticalAlign: 'bottom',
// },
// // 设置刻度线的颜色等样式
// axisLine: {
// show: true,
// onZero: true,
// onZeroAxisIndex:0,
// lineStyle: {
// //color: color[ci],
// color: unitcolor[ci],
// width: 3
// }
// },
// splitLine: {
// show: true, //想要不显示网格线改为false
// lineStyle: {
// // 设置网格为虚线
// type: 'dashed'
// }
// },
// //offset: (ci - 1) * 100
// }
// yAxis.push(yAxisdata);
// }
// else {
// let yAxisdata = {
// name: JSON.parse(JSON.stringify(unitnames[ci])),
// nameLocation: 'center',
// // max: 800,
// // min: 0,
// type: 'value',
// position: 'left',
// //坐标轴两边留白策略设置max、min后失效
// boundaryGap: ['5%', '2%'],
// axisLabel: {
// inside: true,
// align: 'left',
// verticalAlign: 'bottom',
// },
// axisLine: {
// show: true,
// onZero: false,
// lineStyle: {
// //color: color[ci],
// color: unitcolor[ci],
// width: 3
// }
// },
// splitLine: {
// show: false //想要不显示网格线改为false
// },
// // 设置坐标轴偏移位置
// offset: (ci) * 40
// //offset: (ci) * 100
// }
// yAxis.push(yAxisdata);
// }
// }
// //for (var ci = 0; ci < StaticSelectTagList.length; ci++) {
// // if (ci == 0) {
// // let yAxisdata = {
// // name: JSON.parse(JSON.stringify(StaticSelectTagList[ci].Description)),
// // nameLocation: 'center',
// // type: 'value',
// // //坐标轴两边留白策略设置max、min后失效
// // boundaryGap: ['5%', '2%'],
// // // max: 700,
// // // min: 0,
// // // 让表格的刻度向靠里侧显示
// // axisTick: {
// // inside: true
// // },
// // axisLabel: {
// // inside: true,
// // align: 'left',
// // verticalAlign: 'bottom',
// // },
// // // 设置刻度线的颜色等样式
// // axisLine: {
// // show: true,
// // lineStyle: {
// // //color: color[ci],
// // color: StaticSelectTagList[ci].HTRGB,
// // width: 3
// // }
// // },
// // splitLine: {
// // show: true, //想要不显示网格线改为false
// // lineStyle: {
// // // 设置网格为虚线
// // type: 'dashed'
// // }
// // }
// // }
// // yAxis.push(yAxisdata);
// // }
// // else {
// // let yAxisdata = {
// // name: JSON.parse(JSON.stringify(StaticSelectTagList[ci].Description)),
// // nameLocation: 'center',
// // // max: 800,
// // // min: 0,
// // type: 'value',
// // //坐标轴两边留白策略设置max、min后失效
// // boundaryGap: ['5%', '2%'],
// // axisLabel: {
// // inside: true,
// // align: 'right',
// // verticalAlign: 'bottom',
// // },
// // axisLine: {
// // show: true,
// // lineStyle: {
// // //color: color[ci],
// // color: StaticSelectTagList[ci].HTRGB,
// // width: 3
// // }
// // },
// // splitLine: {
// // show: false //想要不显示网格线改为false
// // },
// // // 设置坐标轴偏移位置
// // offset: (ci - 1) * 100
// // //offset: (ci) * 100
// // }
// // yAxis.push(yAxisdata);
// // }
// //}
// var series = new Array();
// for (var si = 0; si < StaticSelectTagList.length; si++) {
// var unitIndex = 0;
// var unitss = StaticSelectTagList[si].Units;
// for(var ui = 0;ui<unitsrc.length;ui++){
// if (unitsrc[ui].Units == unitss){
// unitIndex = ui;
// break;
// }
// }
// debugger;
// //bool变量取消平滑采取折线
// let issmooth = !(StaticSelectTagList[si].Units ==='Y/N')
// let seriesdata = {
// data: yDataArr[si],
// // 曲线名
// name: JSON.parse(JSON.stringify(StaticSelectTagList[si].Description)),
// // 设置参数对应的y坐标轴的索引
// yAxisIndex: unitIndex,
// type: 'line',
// // 曲线平滑设置
// smooth: issmooth
// }
// series.push(seriesdata);
// }
// // 设置鼠标hover时的提示信息
// var tooltip = {
// trigger: 'axis', // 有3个属性值 axis item none
// axisPointer: {
// type: 'cross',
// label: {
// backgroundColor: '#6a7985' //配置展示方块的背景颜色
// }
// }
// }
// // 调整表格两边的空白的区
// var grid = {
// //left:'20px'
// // 左侧
// //x: '150px',
// x: lightwhite+'px',
// // 上部
// y: 25,
// // 右侧
// //x2: lightwhite + 'px',
// x2:10,
// // 下部
// // y2: 35
// }
// var letest = ['tg', 'fe', 'wdf'];
// // 调整图样的名称 // 定义图样和每条曲线的颜色
// var legend = new Array();
// for (var li = 0; li < StaticSelectTagList.length; li++) {
// debugger;
// let legenddata = StaticSelectTagList[li].Description;
// legend.push(JSON.parse(JSON.stringify(legenddata)));
// }
// var dataZoom = {
// //type: 'slider'
// type: 'inside'
// }
// var option = {
// xAxis: {
// name: '时间',
// type: 'category',
// position: 'bottom',
// data: xDataArr[0],
// // boundaryGap: false, //x下标在刻度处显示
// splitLine: {
// show: true, //想要不显示网格线改为false
// lineStyle: {
// // 设置网格为虚线
// type: 'dashed'
// }
// },
// axisTick:{
// show:true,
// //alignWithLabel:true,
// //interval:'1'
// },
// // splitArea: { show: true }, //保留网格区域
// // 设置刻度线的颜色等样式
// axisLine: {
// onZero: false,
// lineStyle: {
// color: 'black',
// width: 3
// }
// }
// },
// yAxis: yAxis,
// series: series,
// tooltip: tooltip,
// grid: grid,
// legend: {
// data: legend,
// top: 'top',
// bottom: 'auto',
// left: 'center',
// right: 'auto'
// },
// dataZoom: dataZoom,
// color: color
// };
// setTimeout(bulidchart(option), 500);
//}
showchart = async function () {
//(document.getElementById('echarts-records'), 'walden');
var myChart = echarts.init(document.getElementById('result'), 'walden');
@ -1079,6 +770,7 @@
//bool变量取消平滑采取折线
let issmooth = !(StaticSelectTagList[si].Units === 'Y/N')
let seriesdata = {
symbol: "none",
data: yDataArr[si],
// 曲线名
name: JSON.parse(JSON.stringify(StaticSelectTagList[si].Description)),

View File

@ -60,7 +60,7 @@
async function GetAllSubsystemTag() {
debugger;
$.ajax({
url: "/ChartsManage/Rtcharts/GetAllSubsystemTag",
url: "/PenMeiChartsManage/PenMeiRtcharts/GetAllSubsystemTag",
type: "Get",
//dataType: "json",
//async: false,
@ -85,7 +85,7 @@
//var subsystemAllTag = await Call(api.DataHistoryCharts.GetSubsystemAllTag, para);
debugger;
myajax = $.ajax({
url: "/ChartsManage/Rtcharts/GetSubsystemAllTag",
url: "/PenMeiChartsManage/PenMeiRtcharts/GetSubsystemAllTag",
type: "Post",
//dataType: "json",
data: para,
@ -154,7 +154,7 @@
//});
//debugger;
myajax = await $.ajax({
url: "/ChartsManage/Rtcharts/GetChartsTagValueInit",
url: "/PenMeiChartsManage/PenMeiRtcharts/GetChartsTagValueInit",
type: "Post",
dataType: "json",
traditional: true,//这里设置为true
@ -285,6 +285,7 @@
//bool变量取消平滑采取折线
let issmooth = !(StaticSelectTagList[si].Units === 'Y/N')
let seriesdata = {
symbol: "none",
data: yDataArr[si],
// 曲线名
name: JSON.parse(JSON.stringify(StaticSelectTagList[si].Description)),
@ -395,7 +396,7 @@
var RtData = new Array();
myajax = await $.ajax({
url: "/ChartsManage/Rtcharts/GetChartsTagValue",
url: "/PenMeiChartsManage/PenMeiRtcharts/GetChartsTagValue",
type: "Post",
dataType: "json",
traditional: true,//这里设置为true

View File

@ -103,21 +103,66 @@ namespace HT.Cloud.Web.Areas.ReportManage.Controllers
return (dt.ToString("yyyy/MM/dd HH:mm:ss"));
}
//public class SubAllTagReturn
//{
// //x.TagID, x.Description, x.Units
// public short TagID { get; set; }
// public string Description { get; set; }
// public string Units { get; set; }
//}
public string Gettime_(string longtime)
{
long jsTimeStamp = long.Parse(longtime);
System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 当地时区
DateTime dt = startTime.AddMilliseconds(jsTimeStamp);
return (dt.ToString("yyyy-MM-dd HH:mm:ss"));
}
//public class SubsysytemNameList
//{
// public string Lable { get; set; }
// public string Value { get; set; }
//}
public class ChartSubsysytemName
[HttpPost]
public async Task<ActionResult> GetAlarmACC(Alarm_ACC_Params alarm_ACC_Params)
{
string systemName = "喷煤系统";
var StartTime = Gettime(alarm_ACC_Params.StartTime);
var EndTime = Gettime(alarm_ACC_Params.EndTime);
var data = await _historyAlarmService.GetAlarm_ACC(StartTime, EndTime, systemName);
return Content(data);
}
[HttpPost]
public async Task<ActionResult> GetAlarmHistogram(Alarm_Histogram_Params alarm_Histogram_Params)
{
string systemName = "喷煤系统";
var StartTime = Gettime_(alarm_Histogram_Params.StartTime);
var EndTime = Gettime_(alarm_Histogram_Params.EndTime);
var data = await _historyAlarmService.GetAlarm_Histogram(StartTime, EndTime, systemName);
return Content(data);
}
[HttpPost]
public async Task<ActionResult> GetAlarmPie(Alarm_Pie_Params alarm_Pie_Params)
{
string systemName = "喷煤系统";
var StartTime = Gettime(alarm_Pie_Params.StartTime);
var EndTime = Gettime(alarm_Pie_Params.EndTime);
var data = await _historyAlarmService.GetAlarm_Pie(StartTime, EndTime, systemName);
return Content(data);
}
//public class SubAllTagReturn
//{
// //x.TagID, x.Description, x.Units
// public short TagID { get; set; }
// public string Description { get; set; }
// public string Units { get; set; }
//}
//public class SubsysytemNameList
//{
// public string Lable { get; set; }
// public string Value { get; set; }
//}
public class ChartSubsysytemName
{
public string SubsysytemName { get; set; }
}
@ -153,5 +198,22 @@ namespace HT.Cloud.Web.Areas.ReportManage.Controllers
public string Hhour { get; set; }
}
public class Alarm_ACC_Params
{
public string StartTime { get; set; }
public string EndTime { get; set; }
}
public class Alarm_Histogram_Params
{
public string StartTime { get; set; }
public string EndTime { get; set; }
}
public class Alarm_Pie_Params
{
public string StartTime { get; set; }
public string EndTime { get; set; }
}
}
}

View File

@ -0,0 +1,236 @@
using System;
using System.Linq;
using System.Threading.Tasks;
using System.Collections.Generic;
using Microsoft.AspNetCore.Mvc;
using HT.Cloud.Code;
using HT.Cloud.Domain.ChartsManage;
using HT.Cloud.Service;
using Microsoft.AspNetCore.Authorization;
using HT.Cloud.Service.ChartsManage;
using HT.Cloud.Service.ReportManage;
using Serenity.Services;
namespace HT.Cloud.Web.Areas.ReportManage.Controllers
{
/// <summary>
/// 创 建cdl
/// 日 期2023-02-23 11:10
/// 描 述:历史趋势控制器类
/// </summary>
[Area("PenMeiReportManage")]
public class PenMeiHistoryAlarmNewController : BaseController
{
public HistoryAlarmService _historyAlarmService { get;set;}
/// <summary>
/// 绑定数据仓库的数据库ID
/// </summary>
private string groupDescription = GlobalContext.SystemConfig.GroupDescription;
[HttpGet]
public async Task<ActionResult> GetDriverGroupList()
{
var data = await _historyAlarmService.GetDriverGroupList();
return Content(data);
}
[HttpGet]
public async Task<ActionResult> GetAllSubsystemTag()
{
string systemName = "喷煤系统";
var data = await _historyAlarmService.GetAllSubsystemTag(systemName);
return Content(data);
}
[HttpPost]
public async Task<ActionResult> GetSubsystemAllTag(ChartSubsysytemName chartSubsysytemName)
{
string systemName = "喷煤系统";
var data = await _historyAlarmService.GetSubsystemAllTag(chartSubsysytemName.SubsysytemName, systemName);
return Content(data);
}
[HttpPost]
public async Task<ActionResult> GetAlarmRecord(Alarm_Params charts_Params)
{
string systemName = "喷煤系统";
short TagID = short.Parse(charts_Params.TagID);
var StartTime = Gettime(charts_Params.StartTime);
var EndTime = Gettime(charts_Params.EndTime);
var data = await _historyAlarmService.GetAlarmRecord(TagID, StartTime, EndTime, systemName);
return Content(data);
}
[HttpPost]
public async Task<ActionResult> GetAlarmRecordQuick(Alarm_Quick_Params alarm_Quick_Params)
{
string systemName = "喷煤系统";
var Alarmtype = alarm_Quick_Params.Alarmtype;
var StartTime = Gettime(alarm_Quick_Params.StartTime);
var EndTime = Gettime(alarm_Quick_Params.EndTime);
var data = await _historyAlarmService.GetAlarmRecordQuick(Alarmtype, StartTime, EndTime, systemName);
return Content(data);
}
[HttpPost]
public async Task<ActionResult> GetAlarmRecordQuickDesc(Alarm_Quick_Desc_Params alarm_Quick_Desc_Params)
{
string systemName = "喷煤系统";
var hhour = alarm_Quick_Desc_Params.Hhour;
var data = await _historyAlarmService.GetAlarmRecordQuickDesc(hhour, systemName);
return Content(data);
}
[HttpPost]
public async Task<ActionResult> GetAlarmSubSystem(SubSystem_Params subSystem_Params)
{
string systemName = "喷煤系统";
var AlarmName = subSystem_Params.AlarmName;
var data = await _historyAlarmService.GetAlarmSubSystem(AlarmName,systemName);
return Content(data);
}
public string Gettime(string longtime)
{
long jsTimeStamp = long.Parse(longtime);
System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 当地时区
DateTime dt = startTime.AddMilliseconds(jsTimeStamp);
return (dt.ToString("yyyy/MM/dd HH:mm:ss"));
}
public string Gettime_(string longtime)
{
long jsTimeStamp = long.Parse(longtime);
System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 当地时区
DateTime dt = startTime.AddMilliseconds(jsTimeStamp);
return (dt.ToString("yyyy-MM-dd HH:mm:ss"));
}
[HttpPost]
public async Task<ActionResult> GetAlarmACC(Alarm_ACC_Params alarm_ACC_Params)
{
string systemName = "喷煤系统";
var StartTime = Gettime(alarm_ACC_Params.StartTime);
var EndTime = Gettime(alarm_ACC_Params.EndTime);
var data = await _historyAlarmService.GetAlarm_ACC(StartTime, EndTime, systemName);
return Content(data);
}
[HttpPost]
public async Task<ActionResult> GetAlarmHistogram(Alarm_Histogram_Params alarm_Histogram_Params)
{
string systemName = "喷煤系统";
var StartTime = Gettime_(alarm_Histogram_Params.StartTime);
var EndTime = Gettime_(alarm_Histogram_Params.EndTime);
var data = await _historyAlarmService.GetAlarm_Histogram(StartTime, EndTime, systemName);
return Content(data);
}
[HttpPost]
public async Task<ActionResult> GetAlarmPie(Alarm_Pie_Params alarm_Pie_Params)
{
string systemName = "喷煤系统";
var StartTime = Gettime(alarm_Pie_Params.StartTime);
var EndTime = Gettime(alarm_Pie_Params.EndTime);
var data = await _historyAlarmService.GetAlarm_Pie(StartTime, EndTime, systemName);
return Content(data);
}
/*
* 一
* 1、重绘管理系统所有趋势曲线曲线的数据点上不在绘制图形圆点。
* 2、实时趋势开放拖动和JS代码添加可向前加载数据集的动态方法。
* 二
* 1、后台服务在获取实时趋势初始化数据时进行向前的数据获取为初始数据集添加一段历史数据。
* 2、参加公司组织的拍摄技术培训。
* 三
* 1、使用异步和函数回调来执行历史数据查询在实时数据获取后进行时间戳对其避免出现重复时间和漏掉时间。
* 2、报警分析柱图优化单日柱状图从堆叠图修改为平铺柱状图。
* 四
* 1、柱状图添加工具条可支持堆叠图、平铺图、折线图切换显示并支持下载功能。
* 2、添加图表联动功能增加柱状图和饼图的点击事件在柱状区域或饼状区域内点击可跳转至该报警信息的详细查询。
* 五
* 1、
* 2、整理管理系统以前相关的设计、宣传素材编写管理系统演示用ppt。
*/
//public class SubAllTagReturn
//{
// //x.TagID, x.Description, x.Units
// public short TagID { get; set; }
// public string Description { get; set; }
// public string Units { get; set; }
//}
//public class SubsysytemNameList
//{
// public string Lable { get; set; }
// public string Value { get; set; }
//}
public class ChartSubsysytemName
{
public string SubsysytemName { get; set; }
}
//public class HDATETIMEVALUE
//{
// public String HDATETIME { get; set; }
// public decimal VALUE { get; set; }
//}
//public class ChartData
//{
// public decimal value { get; set; }
// public String name { get; set; }
//}
public class SubSystem_Params
{
public string AlarmName { get; set; }
}
public class Alarm_Params
{
public string TagID { get; set; }
public string StartTime { get; set; }
public string EndTime { get; set; }
}
public class Alarm_Quick_Params
{
public string Alarmtype { get; set; }
public string StartTime { get; set; }
public string EndTime { get; set; }
}
public class Alarm_Quick_Desc_Params
{
public string Hhour { get; set; }
}
public class Alarm_ACC_Params
{
public string StartTime { get; set; }
public string EndTime { get; set; }
}
public class Alarm_Histogram_Params
{
public string StartTime { get; set; }
public string EndTime { get; set; }
}
public class Alarm_Pie_Params
{
public string StartTime { get; set; }
public string EndTime { get; set; }
}
}
}

View File

@ -15,7 +15,9 @@ using HT.Cloud.Code;
namespace HT.Cloud.Web.Areas.PenMeiReportManage.Controllers
{
[Area("PenMeiReportManage")]
public class PenMeiHistoryReportController : BaseController
[HandlerLogin(needLogin: false)]
[HandlerAuthorize(needAuth: false)]
public class PenMeiHistoryReportController : BaseController
{
public HistoryReportService _historyReportService { get; set; }
/// <summary>

View File

@ -701,6 +701,60 @@
value: getFormatDateone(endtime),
});
});
lay('#dateReStartTimeSD').each(function () {
laydate.render({
elem: this,
trigger: 'click',
format: "yyyy-MM-dd HH:mm:ss",
//value: "2023-02-23 13:56:25",
value: getFormatDateone(starttime),
});
});
lay('#dateReEndTimeSD').each(function () {
laydate.render({
elem: this,
trigger: 'click',
format: "yyyy-MM-dd HH:mm:ss",
//value: "2023-02-23 13:56:25",
value: getFormatDateone(endtime),
});
});
lay('#dateReStartTimeZhu').each(function () {
laydate.render({
elem: this,
trigger: 'click',
format: "yyyy-MM-dd HH:mm:ss",
//value: "2023-02-23 13:56:25",
value: getFormatDateone(starttime),
});
});
lay('#dateReEndTimeZhu').each(function () {
laydate.render({
elem: this,
trigger: 'click',
format: "yyyy-MM-dd HH:mm:ss",
//value: "2023-02-23 13:56:25",
value: getFormatDateone(endtime),
});
});
lay('#dateReStartTimeBing').each(function () {
laydate.render({
elem: this,
trigger: 'click',
format: "yyyy-MM-dd HH:mm:ss",
//value: "2023-02-23 13:56:25",
value: getFormatDateone(starttime),
});
});
lay('#dateReEndTimeBing').each(function () {
laydate.render({
elem: this,
trigger: 'click',
format: "yyyy-MM-dd HH:mm:ss",
//value: "2023-02-23 13:56:25",
value: getFormatDateone(endtime),
});
});
});
function getFormatDate(date) {
let year = date.getFullYear();
@ -1157,8 +1211,239 @@
return result;
}
ShowSDChart = async function() {
var alarmlist = new Array();
debugger;
let datetimestart = $('#dateReStartTimeSD')[0].value;
let datetimeend = $('#dateReEndTimeSD')[0].value;
//getChecked
//var checkRow = $('#subsystemTagList').datalist("getChecked");
let datapa = { "StartTime": Date.parse(new Date(datetimestart)), "EndTime": Date.parse(new Date(datetimeend)) };
let result;
debugger;
myajax = await $.ajax({
url: "/PenMeiReportManage/PenMeiHistoryAlarm/GetAlarmACC",
type: "Post",
//dataType: "json",
data: datapa,
success: function (redata) {
debugger;
result = JSON.parse(redata);
var myChart = echarts.init(document.getElementById('resultsandian'), 'walden');
myChart.dispose();
myChart = echarts.init(document.getElementById('resultsandian'), 'walden');
myChart.hideLoading();
myChart.showLoading();
var sdata = [];
var ldata = [];
// for (var i = 0; i < result.length; i++) {
for (var i = 0; i < 10; i++) {
sdata.push({
name: result[i].Description,
data:[result[i].hcount, result[i].hztime],
symbolSize: 50,
type:'scatter'
});
ldata.push(result[i].Description);
}
var option = {
xAxis: {
name: '报警次数',
nameGap: 16,
nameTextStyle: {
fontSize: 16
},
//max: 31,
splitLine: {
show: true
}
},
yAxis: {
name: '报警总时长',
nameLocation: 'end',
nameGap: 20,
nameTextStyle: {
fontSize: 16
},
splitLine: {
show: true
}
},
legend: {
data:ldata
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross'
}
},
series:sdata,
// series: [{
// SymbolSize:20,
// data:data,
// type:'scatter',
// },
//]
}
myChart.hideLoading();
myChart.setOption(JSON.parse(JSON.stringify(option)));
}
});
}
ShowZhuChart = async function () {
var alarmlist = new Array();
debugger;
let datetimestart = $('#dateReStartTimeZhu')[0].value;
let datetimeend = $('#dateReEndTimeZhu')[0].value;
//getChecked
//var checkRow = $('#subsystemTagList').datalist("getChecked");
let datapa = { "StartTime": Date.parse(new Date(datetimestart)), "EndTime": Date.parse(new Date(datetimeend)) };
let result;
debugger;
myajax = await $.ajax({
url: "/PenMeiReportManage/PenMeiHistoryAlarm/GetAlarmHistogram",
type: "Post",
//dataType: "json",
data: datapa,
success: function (redata) {
debugger;
var data = JSON.parse(redata);
var myChart = echarts.init(document.getElementById('resultzhu'));
myChart.dispose();
myChart = echarts.init(document.getElementById('resultzhu'));
myChart.hideLoading();
myChart.showLoading();
let date = []; //x轴日期
let lenged = []; //series的个数
let s = [];
data.map((item) => {
date.push(item['HDATE']);
lenged.push(item['Description']);
});
debugger;
date = [...new Set(date)]; //去重
lenged = [...new Set(lenged)];
console.log(date, lenged);
let series = [];
lenged.map((item) => {
//生成 series
let obj = {
name: item,
type: 'bar',
stack: 'As',
emphasis: {
focus: 'series'
},
data: []
};
series.push(obj);
});
data.map((item) => {
//对series 的data进行处理
series.map((item1) => {
if (item1.name == item['Description'] && date.indexOf(item['HDATE']) > -1) {
item1.data[date.indexOf(item['HDATE'])] = item['hztime'];
}
});
});
var option = {
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
legend: {},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
xAxis: [
{
type: 'category',
data: date
}
],
yAxis: [
{
type: 'value'
}
],
series: series
};
myChart.hideLoading();
option && myChart.setOption(option);
// myChart.setOption(JSON.parse(JSON.stringify(option)));
}
});
}
ShowBingChart = async function () {
var alarmlist = new Array();
debugger;
let datetimestart = $('#dateReStartTimeBing')[0].value;
let datetimeend = $('#dateReEndTimeBing')[0].value;
//getChecked
//var checkRow = $('#subsystemTagList').datalist("getChecked");
let datapa = { "StartTime": Date.parse(new Date(datetimestart)), "EndTime": Date.parse(new Date(datetimeend)) };
let result;
debugger;
myajax = await $.ajax({
url: "/PenMeiReportManage/PenMeiHistoryAlarm/GetAlarmPie",
type: "Post",
//dataType: "json",
data: datapa,
success: function (redata) {
debugger;
result = JSON.parse(redata);
var myChart = echarts.init(document.getElementById('resultbing'), 'walden');
myChart.dispose();
myChart = echarts.init(document.getElementById('resultbing'), 'walden');
myChart.hideLoading();
myChart.showLoading();
var data = [];
for (var i = 0; i < result.length; i++) {
data.push({ value: result[i].Hpercent, name: result[i].Description + "\n" + result[i].Hpercent + "%" });
}
debugger;
var option = {
title: {
text: '报警时长占比统计',
// subtext: '纯属虚构',
left: 'center'
},
series:[
{
type: 'pie',
data:data
}
]
}
myChart.hideLoading();
myChart.setOption(JSON.parse(JSON.stringify(option)));
}
});
}
});
@ -1166,15 +1451,297 @@
</script>
<html style="height:100%">
<body style="height:100%">
<script type="text/javascript" src="~/lib/echarts-5.3.0/dist/echarts.js"></script>
<div class="layui-tab layui-tab-card" lay-filter="Chang" style="height:100%" id="tab1">
@*<script type="text/javascript" src="~/lib/echarts-5.3.0/dist/echarts.js"></script>*@
<ul class="layui-tab-title">
<li class="layui-this" lay-id ="11">报警汇总</li>
<li class="layui-this" lay-id="sanding">散点图</li>
<li lay-id="zhu">柱状图</li>
<li lay-id="bing">饼图图</li>
<li lay-id ="11">报警汇总</li>
<li lay-id ="22">报警查询</li>
</ul>
<div class="layui-tab-content" style="height:90%">
<div class="layui-tab-item layui-show" style="height:100%">
<div class="layui-fluid" style="padding:0 0px;height:100%">
<div class="layui-row layui-col-space5" style="height:100%">
<div class="layui-col-md12 layui-col-xs12" style="height:100%">
<form class="layui-form" style="height:auto;" id="formPreviewFormSD">
<div id="grid_31" class="layui-form-item layui-row grid active" data-id="grid_31"
data-tag="grid" data-index="0">
<div class="layui-col-md3 widget-col-list column1" data-index="0" data-parentindex="0">
<div id="ReStartTimeSD" class="layui-form-item active" data-id="ReStartTimeSD"
data-tag="date" data-index="0">
<label class="layui-form-label layui-form-required" style="width: 80px;">
开始时间:
</label>
<div class="layui-input-block" style="width:calc(100% - 110px);margin-left: 110px;">
<input id="dateReStartTimeSD" name="ndateReStartTimeSD" lay-verify="required"
class="layui-input icon-date widget-date " style="line-height: 40px;">
</div>
</div>
</div>
<div class="layui-col-md3 widget-col-list column2" data-index="2" data-parentindex="0">
<div id="ReEndTimeSD" class="layui-form-item active" data-id="ReEndTimeSD"
data-tag="date" data-index="0">
<label class="layui-form-label layui-form-required" style="width: 80px;">
结束时间:
</label>
<div class="layui-input-block" style="width:calc(100% - 110px);margin-left: 110px;">
<input id="dateReEndTimeSD" name="ndateReEndTimeSD" lay-verify="required" class="layui-input icon-date widget-date "
style="line-height: 40px;">
</div>
</div>
</div>
<div class="layui-col-md2 widget-col-list column4" data-index="2" data-parentindex="0" id="recentMdSD">
<div id="select_11SD" class="layui-form-item active" data-id="select_11SD" data-tag="select"
data-index="0">
<label class="layui-form-label layui-form-required" style="width: 110px;">
速查范围:
</label>
<div class="layui-input-block layui-form" lay-filter="select_4" style="margin-left: 140px;">
<select name="selectquick" lay-filter="quickTime" lay-verify="required" id="selectRecentQuickSD">
<option value="onlyOneHour" selected="">
一小时内
</option>
<option value="onlyThreeHour">
三小时内
</option>
<option value="onlyEightHour">
八小时内
</option>
<option value="onlyTwelveHour">
十二小时内
</option>
<option value="onlyOneDay">
一天内
</option>
</select>
</div>
</div>
</div>
<div class="layui-col-md2 widget-col-list column4" data-index="4" data-parentindex="0">
<div id="bottom_51SD" class="layui-form-item active" data-id="bottom_51SD" data-tag="bottom"
data-index="0">
<div class="layui-input-block" style="margin-left: 30px;">
<button id="btn_searchSD" type="button" class="layui-btn custom-zc" ; onclick="ShowSDChart()">
<i class="layui-icon ">
</i>
确定
</button>
</div>
</div>
</div>
</div>
</form>
<form class="layui-form" style="height:calc(100% - 55px);width:100%" id="tablepanelsandian">
<div class="layui-panel" id="gridpanelsandian" style="width:100%;height: 100%;margin-bottom: 10px; ">
<div id="resultsandian" class="echart" style="width: 100%; height: 100% "></div>
</div>
</form>
</div>
</div>
</div>
</div>
<div class="layui-tab-item" style="height:100%">
<div class="layui-fluid" style="padding:0 0px;height:100%">
<div class="layui-row layui-col-space5" style="height:100%">
<div class="layui-col-md12 layui-col-xs12" style="height:100%">
<form class="layui-form" style="height:auto;" id="formPreviewFormZhu">
<div id="grid_21Zhu" class="layui-form-item layui-row grid active" data-id="grid_21Zhu"
data-tag="grid" data-index="0">
<div class="layui-col-md3 widget-col-list column1" data-index="1" data-parentindex="0">
<div id="ReStartTimeZhu" class="layui-form-item active" data-id="ReStartTimeZhu"
data-tag="date" data-index="0">
<label class="layui-form-label layui-form-required" style="width: 80px;">
开始时间:
</label>
<div class="layui-input-block" style="width:calc(100% - 110px);margin-left: 110px;">
<input id="dateReStartTimeZhu" name="ndateReStartTime" lay-verify="required"
class="layui-input icon-date widget-date " style="line-height: 40px;">
</div>
</div>
</div>
<div class="layui-col-md3 widget-col-list column2" data-index="2" data-parentindex="0">
<div id="ReEndTimeZhu" class="layui-form-item active" data-id="ReEndTimeZhu"
data-tag="date" data-index="0">
<label class="layui-form-label layui-form-required" style="width: 80px;">
结束时间:
</label>
<div class="layui-input-block" style="width:calc(100% - 110px);margin-left: 110px;">
<input id="dateReEndTimeZhu" name="ndateReEndTime" lay-verify="required" class="layui-input icon-date widget-date "
style="line-height: 40px;">
</div>
</div>
</div>
<div class="layui-col-md2 widget-col-list column4" data-index="2" data-parentindex="0" id="recentMdZhu">
<div id="select_11Zhu" class="layui-form-item active" data-id="select_11Zhu" data-tag="select"
data-index="0">
<label class="layui-form-label layui-form-required" style="width: 110px;">
速查范围:
</label>
<div class="layui-input-block layui-form" lay-filter="select_4" style="margin-left: 140px;">
<select name="selectquick" lay-filter="quickTime" lay-verify="required" id="selectRecentQuickZhu">
<option value="onlyOneHour" selected="">
一小时内
</option>
<option value="onlyThreeHour">
三小时内
</option>
<option value="onlyEightHour">
八小时内
</option>
<option value="onlyTwelveHour">
十二小时内
</option>
<option value="onlyOneDay">
一天内
</option>
</select>
</div>
</div>
</div>
<div class="layui-col-md2 widget-col-list column4" data-index="4" data-parentindex="0">
<div id="bottom_51Zhu" class="layui-form-item active" data-id="bottom_51Zhu" data-tag="bottom"
data-index="0">
<div class="layui-input-block" style="margin-left: 30px;">
<button id="btn_searchZhu" type="button" class="layui-btn custom-zc" ; onclick="ShowZhuChart()">
<i class="layui-icon ">
</i>
确定
</button>
</div>
</div>
</div>
</div>
</form>
<form class="layui-form" style="height:calc(100% - 55px);width:100%" id="tablepanelZhu">
<div class="layui-panel" id="gridpanelzhu" style="width:100%;height: 100%;margin-bottom: 10px; ">
<div id="resultzhu" class="echart" style="width: 100%; height: 100% "></div>
</div>
</form>
</div>
</div>
</div>
</div>
<div class="layui-tab-item" style="height:100%">
<div class="layui-fluid" style="padding:0 0px;height:100%">
<div class="layui-row layui-col-space5" style="height:100%">
<div class="layui-col-md12 layui-col-xs12" style="height:100%">
<form class="layui-form" style="height:auto;" id="formPreviewFormBing">
<div id="grid_21Bing" class="layui-form-item layui-row grid active" data-id="grid_21Bing"
data-tag="grid" data-index="0">
<div class="layui-col-md3 widget-col-list column1" data-index="1" data-parentindex="0">
<div id="ReStartTimeBing" class="layui-form-item active" data-id="ReStartTimeBing"
data-tag="date" data-index="0">
<label class="layui-form-label layui-form-required" style="width: 80px;">
开始时间:
</label>
<div class="layui-input-block" style="width:calc(100% - 110px);margin-left: 110px;">
<input id="dateReStartTimeBing" name="ndateReStartTime" lay-verify="required"
class="layui-input icon-date widget-date " style="line-height: 40px;">
</div>
</div>
</div>
<div class="layui-col-md3 widget-col-list column2" data-index="2" data-parentindex="0">
<div id="ReEndTimeBing" class="layui-form-item active" data-id="ReEndTimeBing"
data-tag="date" data-index="0">
<label class="layui-form-label layui-form-required" style="width: 80px;">
结束时间:
</label>
<div class="layui-input-block" style="width:calc(100% - 110px);margin-left: 110px;">
<input id="dateReEndTimeBing" name="ndateReEndTime" lay-verify="required" class="layui-input icon-date widget-date "
style="line-height: 40px;">
</div>
</div>
</div>
<div class="layui-col-md2 widget-col-list column4" data-index="2" data-parentindex="0" id="recentMdBing">
<div id="select_11Bing" class="layui-form-item active" data-id="select_11Bing" data-tag="select"
data-index="0">
<label class="layui-form-label layui-form-required" style="width: 110px;">
速查范围:
</label>
<div class="layui-input-block layui-form" lay-filter="select_4" style="margin-left: 140px;">
<select name="selectquick" lay-filter="quickTime" lay-verify="required" id="selectRecentQuickBing">
<option value="onlyOneHour" selected="">
一小时内
</option>
<option value="onlyThreeHour">
三小时内
</option>
<option value="onlyEightHour">
八小时内
</option>
<option value="onlyTwelveHour">
十二小时内
</option>
<option value="onlyOneDay">
一天内
</option>
</select>
</div>
</div>
</div>
<div class="layui-col-md2 widget-col-list column4" data-index="4" data-parentindex="0">
<div id="bottom_51Bing" class="layui-form-item active" data-id="bottom_51Bing" data-tag="bottom"
data-index="0">
<div class="layui-input-block" style="margin-left: 30px;">
<button id="btn_searchBing" type="button" class="layui-btn custom-zc" ; onclick="ShowBingChart()">
<i class="layui-icon ">
</i>
确定
</button>
</div>
</div>
</div>
</div>
</form>
<form class="layui-form" style="height:calc(100% - 55px);width:100%" id="tablepanelBing">
<div class="layui-panel" id="gridpanelbing" style="width:100%;height: 100%;margin-bottom: 10px; ">
<div id="resultbing" class="echart" style="width: 100%; height: 100% "></div>
</div>
</form>
</div>
</div>
</div>
</div>
<div class="layui-tab-item" style="height:100%">
<div class="layui-fluid" style="padding:0 0px;height:100%">
<div class="layui-row layui-col-space5" style="height:100%">
@*<div class="layui-col-md2 layui-col-xs3" style="height:100%;padding-right:12px;">
@ -1277,7 +1844,7 @@
<div id="ReEndTime1" class="layui-form-item active" data-id="ReEndTime1"
data-tag="date" data-index="0">
<label class="layui-form-label layui-form-required" style="width: 80px;">
结束间:
结束间:
</label>
<div class="layui-input-block" style="width:calc(100% - 110px);margin-left: 110px;">
<input id="dateReEndTime1" name="ndateReEndTime" lay-verify="required" class="layui-input icon-date widget-date "
@ -1429,7 +1996,7 @@
<div id="ReEndTime" class="layui-form-item active" data-id="ReEndTime"
data-tag="date" data-index="0">
<label class="layui-form-label layui-form-required" style="width: 80px;">
结束间:
结束间:
</label>
<div class="layui-input-block" style="width:calc(100% - 110px);margin-left: 110px;">
<input id="dateReEndTime" name="ndateReEndTime" lay-verify="required" class="layui-input icon-date widget-date "

File diff suppressed because it is too large Load Diff

View File

@ -75,7 +75,7 @@
<div id="ReEndTime" class="layui-form-item active" data-id="ReEndTime"
data-tag="date" data-index="0">
<label class="layui-form-label layui-form-required" style="width: 110px;">
结束间:
结束间:
</label>
<div class="layui-input-block" style="width:calc(100% - 150px);margin-left: 110px;">
<input id="dateReEndTime" name="ndateReEndTime" lay-verify="required" class="layui-input icon-date widget-date "

View File

@ -75,7 +75,7 @@
<div id="ReEndTime" class="layui-form-item active" data-id="ReEndTime"
data-tag="date" data-index="0">
<label class="layui-form-label layui-form-required" style="width: 110px;">
结束间:
结束间:
</label>
<div class="layui-input-block" style="width:calc(100% - 110px);margin-left: 110px;">
<input id="dateReEndTime" name="ndateReEndTime" lay-verify="required" class="layui-input icon-date widget-date "

View File

@ -1279,7 +1279,7 @@
<div id="ReEndTime1" class="layui-form-item active" data-id="ReEndTime1"
data-tag="date" data-index="0">
<label class="layui-form-label layui-form-required" style="width: 80px;">
结束间:
结束间:
</label>
<div class="layui-input-block" style="width:calc(100% - 110px);margin-left: 110px;">
<input id="dateReEndTime1" name="ndateReEndTime" lay-verify="required" class="layui-input icon-date widget-date "
@ -1431,7 +1431,7 @@
<div id="ReEndTime" class="layui-form-item active" data-id="ReEndTime"
data-tag="date" data-index="0">
<label class="layui-form-label layui-form-required" style="width: 80px;">
结束间:
结束间:
</label>
<div class="layui-input-block" style="width:calc(100% - 110px);margin-left: 110px;">
<input id="dateReEndTime" name="ndateReEndTime" lay-verify="required" class="layui-input icon-date widget-date "

View File

@ -0,0 +1,402 @@
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Index.cshtml";
}
@inject Microsoft.AspNetCore.Hosting.IWebHostEnvironment env
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<style>
.layui-card {
border: 1px solid #f2f2f2;
border-radius: 5px;
}
.icon {
margin-right: 10px;
color: #1aa094;
}
.icon-cray {
color: #ffb800 !important;
}
.icon-blue {
color: #1e9fff !important;
}
.icon-tip {
color: #ff5722 !important;
}
.layuimini-qiuck-module {
text-align: center;
margin-top: 10px
}
.layuimini-qiuck-module a i {
display: inline-block;
width: 100%;
height: 60px;
line-height: 60px;
text-align: center;
border-radius: 2px;
font-size: 30px;
background-color: #F8F8F8;
color: #333;
transition: all .3s;
-webkit-transition: all .3s;
}
.layuimini-qiuck-module a cite {
position: relative;
top: 2px;
display: block;
color: #666;
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
font-size: 14px;
}
.welcome-module {
width: 100%;
height: 210px;
}
.panel {
background-color: #fff;
border: 1px solid transparent;
border-radius: 3px;
-webkit-box-shadow: 0 1px 1px rgba(0,0,0,.05);
box-shadow: 0 1px 1px rgba(0,0,0,.05)
}
.panel-body {
padding: 10px
}
.panel-title {
margin-top: 0;
margin-bottom: 0;
font-size: 12px;
color: inherit
}
.label {
display: inline;
padding: .2em .6em .3em;
font-size: 75%;
font-weight: 700;
line-height: 1;
color: #fff;
text-align: center;
white-space: nowrap;
vertical-align: baseline;
border-radius: .25em;
margin-top: .3em;
}
.label {
display: inline;
padding: .2em .6em .3em;
font-size: 75%;
font-weight: 700;
line-height: 1;
color: #fff;
text-align: center;
white-space: nowrap;
vertical-align: baseline;
border-radius: .25em;
margin-top: .3em;
}
.layui-red {
color: red
}
.main_btn > p {
height: 40px;
}
.layui-bg-number {
background-color: #F8F8F8;
}
.layuimini-notice:hover {
background: #f6f6f6;
}
.layuimini-notice {
padding: 7px 16px;
clear: both;
font-size: 12px !important;
cursor: pointer;
position: relative;
transition: background 0.2s ease-in-out;
}
.layuimini-notice-title, .layuimini-notice-label {
padding-right: 70px !important;
text-overflow: ellipsis !important;
overflow: hidden !important;
white-space: nowrap !important;
}
.layuimini-notice-title {
line-height: 28px;
font-size: 14px;
}
.layuimini-notice-extra {
position: absolute;
top: 50%;
margin-top: -8px;
right: 16px;
display: inline-block;
height: 16px;
color: #999;
}
</style>
<script>
layui.use(['layer', 'echarts', 'common'], function () {
var $ = layui.jquery,
layer = layui.layer,
common = layui.common,
echarts = layui.echarts;
common = layui.common;
common.iframeInterval(function () {
loadInfo();
}, 10000); //指定10秒刷新一次
$(function () {
loadInfo();
loadChart();
});
wcLoading.close();
function loadInfo() {
$.ajax({
url: "/SystemSecurity/ServerMonitoring/GetServerDataJson?v=" + new Date().Format("yyyy-MM-dd hh:mm:ss"),
dataType: "json",
success: function (data) {
$('#cpucout').html(data.CPU + "%");
$('#armcout').html(data.ARM + "%");
$('#TotalRAM').html(data.TotalRAM);
$('#OutIP').html(data.IP);
}
});
}
function loadChart() {
var myChart = echarts.init(document.getElementById('echarts-records'), 'walden');
var xData = [];
var armData = [];
var cpuData = [];
common.ajax({
url: "/SystemSecurity/ServerMonitoring/GetServerData",
dataType: "json",
async: false,
success: function (data) {
var length = data.length;
for (var i = 0; i < length; i++) {
if (data[i]['F_Date'] !== null) {
xData.push(new Date(data[i]['F_Date']).Format("yyyy-MM-dd"));
}
if (data[i]['F_ARM'] !== null) {
armData.push(data[i]['F_ARM']);
}
if (data[i]['F_CPU'] !== null) {
cpuData.push(data[i]['F_CPU']);
}
}
}
});
option = {
tooltip: {
trigger: 'axis'
},
legend: {
data: ['CPU使用率', 'ARM使用率']
},
xAxis: {
type: 'category',
boundaryGap: false,
data: xData
},
yAxis: {
type: 'value'
},
series: [
{
name: 'CPU使用率', type: 'line',
data: cpuData,
lineStyle: {
normal: {
width: 2
}
},
smooth: true,
symbol: 'circle',
symbolSize: 10,
showAllSymbol: true,
color: '#2499F8',
},
{
name: 'ARM使用率', type: 'line',
data: armData,
lineStyle: {
normal: {
width: 2
}
},
smooth: true,
symbol: 'circle',
symbolSize: 10,
showAllSymbol: true,
color: '#F90',
}
]
};
myChart.setOption(option);
// echarts 窗口缩放自适应
window.onresize = function () {
myChart.resize();
}
};
})
</script>
<div class="layuimini-container">
<div class="layuimini-main">
<div class="layui-row layui-col-space15">
<div class="layui-col-md6">
<div class="layui-card">
<div class="layui-card-header"><i class="fa fa-warning icon"></i>状态信息</div>
<div class="layui-card-body">
<div class="welcome-module">
<div class="layui-row layui-col-space10">
<div class="layui-col-xs6">
<div class="panel layui-bg-number" style="height:200px">
<div class="panel-body">
<div class="panel-title">
<span class="label pull-right layui-bg-blue">实时</span>
<h5>CPU使用率</h5>
</div>
<div class="panel-content">
<h1 class="no-margins" id="cpucout"></h1>
<small>当前记录</small>
</div>
</div>
</div>
</div>
<div class="layui-col-xs6">
<div class="panel layui-bg-number" style="height:200px">
<div class="panel-body">
<div class="panel-title">
<span class="label pull-right layui-bg-cyan">实时</span>
<h5>ARM使用率</h5>
</div>
<div class="panel-content">
<h1 class="no-margins" id="armcout"></h1>
<small>当前记录</small>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="layui-col-md6">
<div class="layui-card">
<div class="layui-card-header"><i class="fa fa-line-chart icon"></i>报表统计</div>
<div class="layui-card-body">
<div id="echarts-records" style="width: 100%;min-height:220px"></div>
</div>
</div>
</div>
<div class="layui-col-md6">
<div class="layui-card">
<div class="layui-card-header"><i class="fa fa-fire icon"></i>服务器信息</div>
<div class="layui-card-body layui-text">
<table class="layui-table">
<colgroup>
<col width="100">
<col>
</colgroup>
<tbody>
<tr>
<td>服务器名称</td>
<td>
@Environment.MachineName
</td>
</tr>
<tr>
<td>总内存</td>
<td><span id="TotalRAM"></span></td>
</tr>
<tr>
<td>操作系统</td>
<td>@System.Runtime.InteropServices.RuntimeInformation.OSDescription</td>
</tr>
<tr>
<td>系统架构</td>
<td>@System.Runtime.InteropServices.RuntimeInformation.OSArchitecture</td>
</tr>
<tr>
<td>外网IP</td>
<td>
<span id="OutIP"></span>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="layui-col-md6">
<div class="layui-card">
<div class="layui-card-header"><i class="fa fa-fire icon"></i>.NET信息</div>
<div class="layui-card-body layui-text">
<table class="layui-table">
<colgroup>
<col width="100">
<col>
</colgroup>
<tbody>
<tr>
<td>环境变量</td>
<td>@Html.Raw(env.EnvironmentName)</td>
</tr>
<tr>
<td>ContentRootPath</td>
<td>
@Html.Raw(env.ContentRootPath)
</td>
</tr>
<tr>
<td>WebRootPath</td>
<td>@Html.Raw(env.WebRootPath)</td>
</tr>
<tr>
<td>.NET版本</td>
<td>
@Html.Raw(System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription)
</td>
</tr>
<tr>
<td>启动时间</td>
<td>
@System.Diagnostics.Process.GetCurrentProcess().StartTime.ToString("yyyy-MM-dd HH:mm:ss")
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>