//窗口大小变化时延时刷新图表大小 $(window).resize(function () { var bodyWidth = $(window).width() var bodyHeight = $(window).height() $("#provinceChart").width(bodyWidth / 2 < 600 ? 600 : bodyWidth / 2 - 20) $("#industryChart").width(bodyWidth / 2 < 600 ? 600 : bodyWidth / 2 - 20) $("#industryOneChart").width(bodyWidth / 2 < 600 ? 600 : bodyWidth / 2 - 20) $("#provinceChart").height(bodyHeight / 2 - 40) $("#industryChart").height(bodyHeight / 2 - 40) $("#industryOneChart").height(bodyHeight / 2 - 40) $("#cityTable").width(bodyWidth / 2 < 600 ? 600 : bodyWidth / 2 - 20) $("#cityTable").height(bodyHeight / 2 - 40) }) //初始化加载 $(document).ready(function () { var bodyWidth = $(window).width() var bodyHeight = $(window).height() $("#provinceChart").width(bodyWidth / 2 < 600 ? 600 : bodyWidth / 2 - 20) $("#industryChart").width(bodyWidth / 2 < 600 ? 600 : bodyWidth / 2 - 20) $("#industryOneChart").width(bodyWidth / 2 < 600 ? 600 : bodyWidth / 2 - 20) $("#provinceChart").height(bodyHeight / 2 - 40) $("#industryChart").height(bodyHeight / 2 - 40) $("#industryOneChart").height(bodyHeight / 2 - 40) $("#cityTable").width(bodyWidth / 2 < 600 ? 600 : bodyWidth / 2 - 20) $("#cityTable").height(bodyHeight / 2 - 40) setDate() getIndustry() }) //初始化日期 function setDate() { var current = new Date() var today = new Date(current.getFullYear(), current.getMonth(), current.getDate()).format("yyyy-MM-dd") var yesterday = new Date(current.getFullYear(), current.getMonth(), current.getDate() - 1).format("yyyy-MM-dd") var beforeday = new Date(current.getFullYear(), current.getMonth(), current.getDate() - 2).format("yyyy-MM-dd") $("#date1").datebox("setValue", today) $("#date2").datebox("setValue", yesterday) $("#date3").datebox("setValue", beforeday) queryProvinceData() updateProvinceData() } //每5分钟更新省级图表 function updateProvinceData() { var interval = window.setInterval(loadData, 300000) function loadData() { queryProvinceData() } } var industryCount //行业数量 //初始一级下拉框 function getIndustry() { ajax({ url: "/web/industry/getTopIndustryComboData.json", dataType: "json", success: function (data) { industryCount = data.length for (var i in data) { if (!isNaN(i)) { $("#industry").append("") } } queryIndustryData(0) getSecondIndustryComboData() }, error: function () { error.apply(this, arguments) }, }) } //加载二级行业下拉框 var secondIdustryCount function getSecondIndustryComboData() { var industryCode = $("#industry").find("option:selected").val() ajax({ url: "/web/industry/getIndustryComboDataByParent.json", dataType: "json", data: { industryCode: industryCode }, success: function (data) { $("#industry1").empty() secondIdustryCount = data.length for (var i in data) { if (!isNaN(i)) { $("#industry1").append("") } } if (secondIdustryCount > 0) { querySecondIdustryData(0) getTableData(0) } //加载定时任务,刷新图表数据 updateCityDistrictData(secondIdustryCount) }, error: function () { error.apply(this, arguments) }, }) } var industryIndex = 0 //市级下拉框下标 //每隔30秒切换地区和行业 function updateCityDistrictData(count) { var secondIdustryIndex = 0 //区县级下拉框下标 var interval = window.setInterval(loadData, 30000) function loadData() { secondIdustryIndex += 1 if (secondIdustryIndex >= secondIdustryCount || count == 0) { //如果区县循环完毕,切换市级下拉框选项 industryIndex += 1 if (industryIndex == industryCount) { industryIndex = 0 } secondIdustryIndex = 0 $("#industry").get(0).selectedIndex = industryIndex queryIndustryData(industryIndex) getSecondIndustryComboData() //重新加载区县下拉框 window.clearInterval(interval) //停止定时任务 } else { $("#industry1").get(0).selectedIndex = secondIdustryIndex querySecondIdustryData(secondIdustryIndex) getTableData(secondIdustryIndex) } } } function transform(data) { if (data) { var transformData = [] $.each(data, function (i, n) { if (n["y"] == -9999) { n["y"] = null } if (new Date(n["x"]).getMinutes() % 10 == 0) { transformData.push(n) } }) return transformData } return data } //查询省级的负荷 function queryProvinceData() { var date1 = $("#date1").datebox("getValue").replace(/-/g, "") var date2 = $("#date2").datebox("getValue").replace(/-/g, "") var date3 = $("#date3").datebox("getValue").replace(/-/g, "") var first = $("#date1").datebox("getValue") var second = $("#date2").datebox("getValue") var third = $("#date3").datebox("getValue") ajax({ url: "/web/flucatuationLoad/getOneCityLoadData.json", type: "POST", dataType: "JSON", beforeSend: function () { $("#provinceChart").mask("数据加载中....") }, data: { city: 0, date1: date1, date2: date2, date3: date3, }, success: function (jsonData) { //省级查询完成后查询市级数据 $("#provinceChart").unmask() if (jsonData.status == 1) { var data = jsonData.data var today = {} var yesterday = {} var beforeday = {} today["name"] = first yesterday["name"] = second beforeday["name"] = third today["data"] = {} yesterday["data"] = {} beforeday["data"] = {} if (null == data) { showDayChart("provinceChart", [today, yesterday, beforeday], { title: { text: "单位:(万千瓦)" } }, "【宁夏】") return } chartData = data.chartData today["data"] = transform(chartData.date1) yesterday["data"] = transform(chartData.date2) beforeday["data"] = transform(chartData.date3) showDayChart("provinceChart", [today, yesterday, beforeday], { title: { text: "单位:(万千瓦)" } }, "【宁夏】") } }, error: function () { $("#provinceChart").unmask() alert("服务存在异常,请稍后再试") }, }) } //查询一级行业的负荷 function queryIndustryData(index) { $("#industry").get(0).selectedIndex = index var industry = $("#industry").find("option:selected").val() var industryName = $("#industry").find("option:selected").text() var date1 = $("#date1").datebox("getValue").replace(/-/g, "") var date2 = $("#date2").datebox("getValue").replace(/-/g, "") var date3 = $("#date3").datebox("getValue").replace(/-/g, "") var first = $("#date1").datebox("getValue") var second = $("#date2").datebox("getValue") var third = $("#date3").datebox("getValue") ajax({ url: "/web/flucatuationLoad/getOneIndustryLoadData.json", type: "POST", dataType: "JSON", beforeSend: function () { $("#industryChart").mask("数据加载中....") }, data: { date1: date1, date2: date2, date3: date3, industry: industry, }, success: function (jsonData) { $("#industryChart").unmask() if (jsonData.status == 1) { var data = jsonData.data var today = {} var yesterday = {} var beforeday = {} today["name"] = first yesterday["name"] = second beforeday["name"] = third today["data"] = {} yesterday["data"] = {} beforeday["data"] = {} if (null == data) { showDayChart("industryChart", [today, yesterday, beforeday], { title: { text: "单位:(万千瓦)" } }, "【" + industryName + "】") return } chartData = data.chartData today["data"] = transform(chartData.date1) yesterday["data"] = transform(chartData.date2) beforeday["data"] = transform(chartData.date3) showDayChart("industryChart", [today, yesterday, beforeday], { title: { text: "单位:(万千瓦)" } }, "【" + industryName + "】") } }, error: function () { $("#industryChart").unmask() alert("服务存在异常,请稍后再试") }, }) } //查询二级行业的负荷 function querySecondIdustryData(index) { $("#industry1").get(0).selectedIndex = index var industry = $("#industry1").find("option:selected").val() var industryName = $("#industry1").find("option:selected").text() $("#tableTitle").html("【" + industryName + "】企业负荷详情") var date1 = $("#date1").datebox("getValue").replace(/-/g, "") var date2 = $("#date2").datebox("getValue").replace(/-/g, "") var date3 = $("#date3").datebox("getValue").replace(/-/g, "") var first = $("#date1").datebox("getValue") var second = $("#date2").datebox("getValue") var third = $("#date3").datebox("getValue") ajax({ url: "/web/flucatuationLoad/getOneIndustryLoadData.json", type: "POST", dataType: "JSON", beforeSend: function () { $("#industryOneChart").mask("数据加载中....") }, data: { date1: date1, date2: date2, date3: date3, industry: industry, }, success: function (jsonData) { $("#industryChart").unmask() if (jsonData.status == 1) { var data = jsonData.data var today = {} var yesterday = {} var beforeday = {} today["name"] = first yesterday["name"] = second beforeday["name"] = third today["data"] = {} yesterday["data"] = {} beforeday["data"] = {} if (null == data) { showDayChart("industryOneChart", [today, yesterday, beforeday], { title: { text: "单位:(万千瓦)" } }, "【" + industryName + "】") return } chartData = data.chartData today["data"] = transform(chartData.date1) yesterday["data"] = transform(chartData.date2) beforeday["data"] = transform(chartData.date3) showDayChart("industryOneChart", [today, yesterday, beforeday], { title: { text: "单位:(万千瓦)" } }, "【" + industryName + "】") } }, error: function () { $("#industryOneChart").unmask() alert("服务存在异常,请稍后再试") }, }) } /** * 企业负荷波动详情 */ function getTableData(index) { $("#industry1").get(0).selectedIndex = index var industry = $("#industry1").find("option:selected").val() var date = $("#date1").datebox("getValue").replace(/-/g, "") + "000000" ajax({ url: "/web/flucatuationLoad/getIndustryFlucatuationLoadDetail.json", type: "POST", dataType: "JSON", data: { industry: industry, time: date, }, success: function (jsonData) { if (jsonData.data != null) { $("#flick-table").datagrid("loadData", jsonData.data) } }, error: function () { alert("数据查询出错了!") }, }) } function showDayChart(id, series, yAxis, title) { $("#" + id).highcharts({ title: { text: title + "负荷波动情况", x: -20, }, xAxis: { type: "datetime", tickInterval: 3 * 3600 * 1000, gridLineWidth: 0, // 默认是0,即在图上没有纵轴间隔线 // 自定义x刻度上显示的时间格式,根据间隔大小,以下面预设的小时/分钟/日的格式来显示 dateTimeLabelFormats: { hour: "%H:%M", day: "00:00", }, }, yAxis: yAxis, tooltip: { crosshairs: { width: 1, color: "gray", }, headerFormat: '时间:{point.key}
', pointFormat: '{series.name}: {point.y}
', valueDecimals: 2, // 数据值保留小数位数 xDateFormat: "%H:%M", shared: true, }, legend: { borderWidth: 1, align: "center", //水平方向位置 verticalAlign: "top", //垂直方向位置 y: 30, //距离Y轴的距离 }, plotOptions: { column: { dataLabels: { enabled: false, color: (Highcharts.theme && Highcharts.theme.dataLabelsColor) || "white", }, }, series: { connectNulls: true, }, }, series: series, }) } //扩展Date的format方法 Date.prototype.format = function (format) { 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(format)) { format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)) } for (var k in o) { if (new RegExp("(" + k + ")").test(format)) { format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length)) } } return format }