From da106d4e007f926623ab2eb781e0c596e0630d50 Mon Sep 17 00:00:00 2001 From: dell Date: Fri, 31 Mar 2023 11:06:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=80=E6=9C=89=E6=97=B6=E9=97=B4=E7=AD=9B?= =?UTF-8?q?=E9=80=89=E6=B7=BB=E5=8A=A0=E5=BF=AB=E6=8D=B7=E7=AD=9B=E9=80=89?= =?UTF-8?q?=EF=BC=8C=E5=BF=AB=E6=8D=B7=E7=AD=9B=E9=80=89=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=98=A8=E6=97=A5=E4=B8=8E=E4=BB=8A=E6=97=A5=E5=BF=AB=E6=8D=B7?= =?UTF-8?q?=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Views/HistoryCharts/Index.cshtml | 348 ++++++++++++++++- .../Views/HistoryReport/Index.cshtml | 83 +++- .../Views/MetaTagAlarm/Index.cshtml | 366 +++++++++++++++++- HT.Cloud.Web/Views/Home/Default.cshtml | 2 +- HT.Cloud.Web/appsettings.json | 2 +- .../wwwroot/report/Report20230331085834.xlsx | Bin 0 -> 54761 bytes 6 files changed, 784 insertions(+), 17 deletions(-) create mode 100644 HT.Cloud.Web/wwwroot/report/Report20230331085834.xlsx diff --git a/HT.Cloud.Web/Areas/ChartsManage/Views/HistoryCharts/Index.cshtml b/HT.Cloud.Web/Areas/ChartsManage/Views/HistoryCharts/Index.cshtml index d7fcd4c..e39f66c 100644 --- a/HT.Cloud.Web/Areas/ChartsManage/Views/HistoryCharts/Index.cshtml +++ b/HT.Cloud.Web/Areas/ChartsManage/Views/HistoryCharts/Index.cshtml @@ -23,6 +23,295 @@ //权限控制(js是值传递) //toolbarDemo.innerHTML = common.authorizeButtonNew(toolbarDemo.innerHTML); + form.on('select(quickTime)', function (data) { + var selectValue = data.value; + + function getFormatDate(date) { + let year = date.getFullYear(); + let month = date.getMonth() + 1; + let day = date.getDate(); + let hour = date.getHours(); + let minutes = date.getMinutes(); + let seconds = date.getSeconds(); + month = (month < 10) ? '0' + month : month; + day = (day < 10) ? '0' + day : day; + hour = (hour < 10) ? '0' + hour : hour; + minutes = (minutes < 10) ? '0' + minutes : minutes; + seconds = (seconds < 10) ? '0' + seconds : seconds; + let currentDate = year + "-" + month + "-" + day + + " " + hour + ":" + minutes + ":" + seconds; + return currentDate; + } + /** + * 获取今日零点时间戳 + * returns {number} + */ + function todayStartTimestamp() { + const timestamp = Math.floor(new Date(new Date().setHours(0, 0, 0, 0)).getTime() / 1000) + return timestamp + } + /** + * 获取昨日开始、结束时间戳 + * param num + * returns {number[昨日开始时间戳, 昨日结束时间戳]} + */ + function yesterdayTimestamp(num = 1) { + const MillisecondsADay = 24 * 60 * 60 * num + // 今日零点时间戳 + const timestamp = Math.floor(new Date(new Date().setHours(0, 0, 0, 0)).getTime() / 1000) + // 昨日开始时间戳 + const yesterdayStartTime = timestamp - MillisecondsADay + // 昨日结束时间戳 + const yesterdayEndTime = timestamp - 1 + return [yesterdayStartTime, yesterdayEndTime] + } + /** + * 本周开始时间戳 + * returns {number} + */ + function weekStartTimestamp() { + // 一天的秒数 + const MillisecondsADay = 24 * 60 * 60 + // 今日零点时间戳 + const timestamp = Math.floor(new Date(new Date().setHours(0, 0, 0, 0)).getTime() / 1000) + const weekDay = new Date().getDay() === 0 ? (7 - 1) : (new Date().getDay() - 1) + const weekTimeStamp = timestamp - MillisecondsADay * weekDay + return weekTimeStamp + } + /** + * 上周开始、结束时间戳 + * returns {number[上周开始时间戳, 上周结束时间戳]} + */ + function lastWeekTimetamp() { + // 一天的秒数 + const MillisecondsADay = 24 * 60 * 60 + // 今日零点时间戳 + const timestamp = Math.floor(new Date(new Date().setHours(0, 0, 0, 0)).getTime() / 1000) + const weekDay = new Date().getDay() === 0 ? (7 - 1) : (new Date().getDay() - 1) + // 本周开始时间戳 + const weekTimeStamp = timestamp - MillisecondsADay * weekDay + // 上周开始时间戳 + const lastWeekStart = weekTimeStamp - MillisecondsADay * 7 + // 上周结束时间戳 + const lastWeekEnd = weekTimeStamp - 1 + return [lastWeekStart, lastWeekEnd] + } + + /** + * 当月开始时间戳 + * returns {number} + */ + function monthStartTimestamp() { + const date = new Date() + date.setDate(1) + date.setHours(0, 0, 0, 0) + const timeStamp = date.getTime() / 1000 + return timeStamp + } + /** + * 获取上月开始、结束时间戳 + * returns {number[上月开始时间戳,上月结束时间戳]} + */ + function lastMonthTimetamp() { + // 一天的秒数 + const MillisecondsADay = 24 * 60 * 60 + + const date = new Date() + date.setDate(1) + date.setHours(0, 0, 0, 0) + // 当月开始时间戳 + const timeStamp = date.getTime() / 1000 + // 上个月的天数 + const days = lastMonthDats() + // 上月开始时间戳 + const lastMonthStart = timeStamp - (MillisecondsADay * days) + // 上月结束时间戳 + const lastMonthEnd = timeStamp - 1 + return [lastMonthStart, lastMonthEnd] + } + /** + * 上月天数 + * returns {number} + */ + function lastMonthDats() { + const date = new Date() + const year = date.getFullYear() + // 上个月月份 + let month = (date.getMonth() + 1) - 1 // 0-11 表示 1月-12月 + // 0 表示12月 + month = month || 12 + // 30天的月份 + const arr30 = [4, 6, 9, 11] + // 31天的月份 + const arr31 = [1, 3, 5, 7, 8, 10, 12] + if (arr30.indexOf(month) !== -1) { + // 上个月是 30 天 + return 30 + } else if (arr31.indexOf(month) !== -1) { + // 上个月是 31 天 + return 31 + } else { + // 2月 + if (isRunYear(year)) { + return 29 + } else { + return 28 + } + } + } + /** + * 是否为闰年 + * param year + * returns {boolean} + */ + function isRunYear(year) { + // 条件:能被4整除并且不能被100整除,或者被400整除的 + let flag = false + if (year % 4 === 0 && year % 100 !== 0 || year % 400 === 0) { + flag = true + } + return flag + } + + var laydate = layui.laydate; + if (selectValue == "toDay") { + var toDayStartDate = todayStartTimestamp(); + var timef1 = getFormatDate(new Date(toDayStartDate * 1000)); + lay('#dateReStartTime').each(function () { + laydate.render({ + elem: this, + trigger: 'click', + format: "yyyy-MM-dd HH:mm:ss", + //value: "2023-02-23 13:56:25", + value: timef1, + }); + }); + var timef2 = getFormatDate(new Date(Date.now())); + lay('#dateReEndTime').each(function () { + laydate.render({ + elem: this, + trigger: 'click', + format: "yyyy-MM-dd HH:mm:ss", + //value: "2023-02-23 13:56:25", + value: timef2, + }); + }); + } else if (selectValue == "yesterDay") { + var yesterDayDate = yesterdayTimestamp(1); + var timef1 = getFormatDate(new Date(yesterDayDate[0] * 1000)); + lay('#dateReStartTime').each(function () { + laydate.render({ + elem: this, + trigger: 'click', + format: "yyyy-MM-dd HH:mm:ss", + //value: "2023-02-23 13:56:25", + value: timef1, + }); + }); + var timef2 = getFormatDate(new Date(yesterDayDate[1] * 1000)); + lay('#dateReEndTime').each(function () { + laydate.render({ + elem: this, + trigger: 'click', + format: "yyyy-MM-dd HH:mm:ss", + //value: "2023-02-23 13:56:25", + value: timef2, + }); + }); + } else if (selectValue == "thisWeek") { + var weekStartDate = weekStartTimestamp(); + var timef1 = getFormatDate(new Date(weekStartDate * 1000)); + lay('#dateReStartTime').each(function () { + laydate.render({ + elem: this, + trigger: 'click', + format: "yyyy-MM-dd HH:mm:ss", + //value: "2023-02-23 13:56:25", + value: timef1, + }); + }); + var timef2 = getFormatDate(new Date(Date.now())); + lay('#dateReEndTime').each(function () { + laydate.render({ + elem: this, + trigger: 'click', + format: "yyyy-MM-dd HH:mm:ss", + //value: "2023-02-23 13:56:25", + value: timef2, + }); + }); + + } else if (selectValue == "lastWeek") { + var lastWeekDate = lastWeekTimetamp(); + var timef1 = getFormatDate(new Date(lastWeekDate[0] * 1000)); + lay('#dateReStartTime').each(function () { + laydate.render({ + elem: this, + trigger: 'click', + format: "yyyy-MM-dd HH:mm:ss", + //value: "2023-02-23 13:56:25", + value: timef1, + }); + }); + var timef2 = getFormatDate(new Date(lastWeekDate[1] * 1000)); + lay('#dateReEndTime').each(function () { + laydate.render({ + elem: this, + trigger: 'click', + format: "yyyy-MM-dd HH:mm:ss", + //value: "2023-02-23 13:56:25", + value: timef2, + }); + }); + } else if (selectValue == "thisMonth") { + var monthStartDate = monthStartTimestamp(); + var timef = getFormatDate(new Date(monthStartDate * 1000)); + lay('#dateReStartTime').each(function () { + laydate.render({ + elem: this, + trigger: 'click', + format: "yyyy-MM-dd HH:mm:ss", + //value: "2023-02-23 13:56:25", + value: timef, + }); + }); + var timef2 = getFormatDate(new Date(Date.now())); + lay('#dateReEndTime').each(function () { + laydate.render({ + elem: this, + trigger: 'click', + format: "yyyy-MM-dd HH:mm:ss", + //value: "2023-02-23 13:56:25", + value: timef2, + }); + }); + + } else if (selectValue == "lastMonth") { + //lastMonthTimetamp() + var lastMonthDate = lastMonthTimetamp(); + var timef1 = getFormatDate(new Date(lastMonthDate[0] * 1000)); + lay('#dateReStartTime').each(function () { + laydate.render({ + elem: this, + trigger: 'click', + format: "yyyy-MM-dd HH:mm:ss", + //value: "2023-02-23 13:56:25", + value: timef1, + }); + }); + var timef2 = getFormatDate(new Date(lastMonthDate[1] * 1000)); + lay('#dateReEndTime').each(function () { + laydate.render({ + elem: this, + trigger: 'click', + format: "yyyy-MM-dd HH:mm:ss", + //value: "2023-02-23 13:56:25", + value: timef2, + }); + }); + } else { } + }); + GetAllSubsystemTag(); var starttime = new Date(new Date().setHours(0, 0, 0, 0)); @@ -30,7 +319,23 @@ var endtime = new Date(); endtime.setDate(endtime.getDate()) var endtimeString = endtime.getFullYear() + "-" + parseInt(endtime.getMonth() + 1) + "-" + endtime.getDate() + " " + (endtime.getHours()) + ":" + endtime.getMinutes() + ":" + endtime.getSeconds(); - layui.use('laydate', function () { + function getFormatDateone(date) { + let year = date.getFullYear(); + let month = date.getMonth() + 1; + let day = date.getDate(); + let hour = date.getHours(); + let minutes = date.getMinutes(); + let seconds = date.getSeconds(); + month = (month < 10) ? '0' + month : month; + day = (day < 10) ? '0' + day : day; + hour = (hour < 10) ? '0' + hour : hour; + minutes = (minutes < 10) ? '0' + minutes : minutes; + seconds = (seconds < 10) ? '0' + seconds : seconds; + let currentDate = year + "-" + month + "-" + day + + " " + hour + ":" + minutes + ":" + seconds; + return currentDate; + } + layui.use('laydate', function () { var laydate = layui.laydate; lay('#dateReStartTime').each(function () { laydate.render({ @@ -38,7 +343,7 @@ trigger: 'click', format: "yyyy-MM-dd HH:mm:ss", //value: "2023-02-23 13:56:25", - value: starttimeString, + value: getFormatDateone(starttime), }); }); lay('#dateReEndTime').each(function () { @@ -47,7 +352,7 @@ trigger: 'click', format: "yyyy-MM-dd HH:mm:ss", //value: "2023-02-23 13:56:25", - value: endtimeString, + value: getFormatDateone(endtime), }); }); }); @@ -518,6 +823,41 @@
+
+ +
+ + + +
+
+
+
-
+
diff --git a/HT.Cloud.Web/Areas/ReportManage/Views/HistoryReport/Index.cshtml b/HT.Cloud.Web/Areas/ReportManage/Views/HistoryReport/Index.cshtml index 97e4e1a..b07f73d 100644 --- a/HT.Cloud.Web/Areas/ReportManage/Views/HistoryReport/Index.cshtml +++ b/HT.Cloud.Web/Areas/ReportManage/Views/HistoryReport/Index.cshtml @@ -73,6 +73,12 @@ + + @@ -207,9 +213,32 @@ return currentDate; } /** - * 本周开始时间戳 - * returns {number} - */ + * 获取今日零点时间戳 + * returns {number} + */ + function todayStartTimestamp() { + const timestamp = Math.floor(new Date(new Date().setHours(0, 0, 0, 0)).getTime() / 1000) + return timestamp + } + /** + * 获取昨日开始、结束时间戳 + * param num + * returns {number[昨日开始时间戳, 昨日结束时间戳]} + */ + function yesterdayTimestamp(num = 1) { + const MillisecondsADay = 24 * 60 * 60 * num + // 今日零点时间戳 + const timestamp = Math.floor(new Date(new Date().setHours(0, 0, 0, 0)).getTime() / 1000) + // 昨日开始时间戳 + const yesterdayStartTime = timestamp - MillisecondsADay + // 昨日结束时间戳 + const yesterdayEndTime = timestamp - 1 + return [yesterdayStartTime, yesterdayEndTime] + } + /** + * 本周开始时间戳 + * returns {number} + */ function weekStartTimestamp() { // 一天的秒数 const MillisecondsADay = 24 * 60 * 60 @@ -315,9 +344,51 @@ } var laydate = layui.laydate; - if (selectValue == "thisWeek"){ - - + if(selectValue == "toDay"){ + var toDayStartDate = todayStartTimestamp(); + var timef1 = getFormatDate(new Date(toDayStartDate * 1000)); + lay('#dateReStartTime').each(function () { + laydate.render({ + elem: this, + trigger: 'click', + format: "yyyy-MM-dd HH:mm:ss", + //value: "2023-02-23 13:56:25", + value: timef1, + }); + }); + var timef2 = getFormatDate(new Date(Date.now())); + lay('#dateReEndTime').each(function () { + laydate.render({ + elem: this, + trigger: 'click', + format: "yyyy-MM-dd HH:mm:ss", + //value: "2023-02-23 13:56:25", + value: timef2, + }); + }); + }else if(selectValue == "yesterDay"){ + var yesterDayDate = yesterdayTimestamp(1); + var timef1 = getFormatDate(new Date(yesterDayDate[0] * 1000)); + lay('#dateReStartTime').each(function () { + laydate.render({ + elem: this, + trigger: 'click', + format: "yyyy-MM-dd HH:mm:ss", + //value: "2023-02-23 13:56:25", + value: timef1, + }); + }); + var timef2 = getFormatDate(new Date(yesterDayDate[1] * 1000)); + lay('#dateReEndTime').each(function () { + laydate.render({ + elem: this, + trigger: 'click', + format: "yyyy-MM-dd HH:mm:ss", + //value: "2023-02-23 13:56:25", + value: timef2, + }); + }); + }else if (selectValue == "thisWeek"){ var weekStartDate = weekStartTimestamp(); var timef1 = getFormatDate(new Date(weekStartDate*1000)); lay('#dateReStartTime').each(function () { diff --git a/HT.Cloud.Web/Areas/ReportManage/Views/MetaTagAlarm/Index.cshtml b/HT.Cloud.Web/Areas/ReportManage/Views/MetaTagAlarm/Index.cshtml index 52cdd0b..8a6ae49 100644 --- a/HT.Cloud.Web/Areas/ReportManage/Views/MetaTagAlarm/Index.cshtml +++ b/HT.Cloud.Web/Areas/ReportManage/Views/MetaTagAlarm/Index.cshtml @@ -23,6 +23,295 @@ //权限控制(js是值传递) //toolbarDemo.innerHTML = common.authorizeButtonNew(toolbarDemo.innerHTML); + form.on('select(quickTime)', function (data) { + var selectValue = data.value; + + function getFormatDate(date) { + let year = date.getFullYear(); + let month = date.getMonth() + 1; + let day = date.getDate(); + let hour = date.getHours(); + let minutes = date.getMinutes(); + let seconds = date.getSeconds(); + month = (month < 10) ? '0' + month : month; + day = (day < 10) ? '0' + day : day; + hour = (hour < 10) ? '0' + hour : hour; + minutes = (minutes < 10) ? '0' + minutes : minutes; + seconds = (seconds < 10) ? '0' + seconds : seconds; + let currentDate = year + "-" + month + "-" + day + + " " + hour + ":" + minutes + ":" + seconds; + return currentDate; + } + /** + * 获取今日零点时间戳 + * returns {number} + */ + function todayStartTimestamp() { + const timestamp = Math.floor(new Date(new Date().setHours(0, 0, 0, 0)).getTime() / 1000) + return timestamp + } + /** + * 获取昨日开始、结束时间戳 + * param num + * returns {number[昨日开始时间戳, 昨日结束时间戳]} + */ + function yesterdayTimestamp(num = 1) { + const MillisecondsADay = 24 * 60 * 60 * num + // 今日零点时间戳 + const timestamp = Math.floor(new Date(new Date().setHours(0, 0, 0, 0)).getTime() / 1000) + // 昨日开始时间戳 + const yesterdayStartTime = timestamp - MillisecondsADay + // 昨日结束时间戳 + const yesterdayEndTime = timestamp - 1 + return [yesterdayStartTime, yesterdayEndTime] + } + /** + * 本周开始时间戳 + * returns {number} + */ + function weekStartTimestamp() { + // 一天的秒数 + const MillisecondsADay = 24 * 60 * 60 + // 今日零点时间戳 + const timestamp = Math.floor(new Date(new Date().setHours(0, 0, 0, 0)).getTime() / 1000) + const weekDay = new Date().getDay() === 0 ? (7 - 1) : (new Date().getDay() - 1) + const weekTimeStamp = timestamp - MillisecondsADay * weekDay + return weekTimeStamp + } + /** + * 上周开始、结束时间戳 + * returns {number[上周开始时间戳, 上周结束时间戳]} + */ + function lastWeekTimetamp() { + // 一天的秒数 + const MillisecondsADay = 24 * 60 * 60 + // 今日零点时间戳 + const timestamp = Math.floor(new Date(new Date().setHours(0, 0, 0, 0)).getTime() / 1000) + const weekDay = new Date().getDay() === 0 ? (7 - 1) : (new Date().getDay() - 1) + // 本周开始时间戳 + const weekTimeStamp = timestamp - MillisecondsADay * weekDay + // 上周开始时间戳 + const lastWeekStart = weekTimeStamp - MillisecondsADay * 7 + // 上周结束时间戳 + const lastWeekEnd = weekTimeStamp - 1 + return [lastWeekStart, lastWeekEnd] + } + + /** + * 当月开始时间戳 + * returns {number} + */ + function monthStartTimestamp() { + const date = new Date() + date.setDate(1) + date.setHours(0, 0, 0, 0) + const timeStamp = date.getTime() / 1000 + return timeStamp + } + /** + * 获取上月开始、结束时间戳 + * returns {number[上月开始时间戳,上月结束时间戳]} + */ + function lastMonthTimetamp() { + // 一天的秒数 + const MillisecondsADay = 24 * 60 * 60 + + const date = new Date() + date.setDate(1) + date.setHours(0, 0, 0, 0) + // 当月开始时间戳 + const timeStamp = date.getTime() / 1000 + // 上个月的天数 + const days = lastMonthDats() + // 上月开始时间戳 + const lastMonthStart = timeStamp - (MillisecondsADay * days) + // 上月结束时间戳 + const lastMonthEnd = timeStamp - 1 + return [lastMonthStart, lastMonthEnd] + } + /** + * 上月天数 + * returns {number} + */ + function lastMonthDats() { + const date = new Date() + const year = date.getFullYear() + // 上个月月份 + let month = (date.getMonth() + 1) - 1 // 0-11 表示 1月-12月 + // 0 表示12月 + month = month || 12 + // 30天的月份 + const arr30 = [4, 6, 9, 11] + // 31天的月份 + const arr31 = [1, 3, 5, 7, 8, 10, 12] + if (arr30.indexOf(month) !== -1) { + // 上个月是 30 天 + return 30 + } else if (arr31.indexOf(month) !== -1) { + // 上个月是 31 天 + return 31 + } else { + // 2月 + if (isRunYear(year)) { + return 29 + } else { + return 28 + } + } + } + /** + * 是否为闰年 + * param year + * returns {boolean} + */ + function isRunYear(year) { + // 条件:能被4整除并且不能被100整除,或者被400整除的 + let flag = false + if (year % 4 === 0 && year % 100 !== 0 || year % 400 === 0) { + flag = true + } + return flag + } + + var laydate = layui.laydate; + if (selectValue == "toDay") { + var toDayStartDate = todayStartTimestamp(); + var timef1 = getFormatDate(new Date(toDayStartDate * 1000)); + lay('#dateReStartTime').each(function () { + laydate.render({ + elem: this, + trigger: 'click', + format: "yyyy-MM-dd HH:mm:ss", + //value: "2023-02-23 13:56:25", + value: timef1, + }); + }); + var timef2 = getFormatDate(new Date(Date.now())); + lay('#dateReEndTime').each(function () { + laydate.render({ + elem: this, + trigger: 'click', + format: "yyyy-MM-dd HH:mm:ss", + //value: "2023-02-23 13:56:25", + value: timef2, + }); + }); + } else if (selectValue == "yesterDay") { + var yesterDayDate = yesterdayTimestamp(1); + var timef1 = getFormatDate(new Date(yesterDayDate[0] * 1000)); + lay('#dateReStartTime').each(function () { + laydate.render({ + elem: this, + trigger: 'click', + format: "yyyy-MM-dd HH:mm:ss", + //value: "2023-02-23 13:56:25", + value: timef1, + }); + }); + var timef2 = getFormatDate(new Date(yesterDayDate[1] * 1000)); + lay('#dateReEndTime').each(function () { + laydate.render({ + elem: this, + trigger: 'click', + format: "yyyy-MM-dd HH:mm:ss", + //value: "2023-02-23 13:56:25", + value: timef2, + }); + }); + } else if (selectValue == "thisWeek") { + var weekStartDate = weekStartTimestamp(); + var timef1 = getFormatDate(new Date(weekStartDate * 1000)); + lay('#dateReStartTime').each(function () { + laydate.render({ + elem: this, + trigger: 'click', + format: "yyyy-MM-dd HH:mm:ss", + //value: "2023-02-23 13:56:25", + value: timef1, + }); + }); + var timef2 = getFormatDate(new Date(Date.now())); + lay('#dateReEndTime').each(function () { + laydate.render({ + elem: this, + trigger: 'click', + format: "yyyy-MM-dd HH:mm:ss", + //value: "2023-02-23 13:56:25", + value: timef2, + }); + }); + + } else if (selectValue == "lastWeek") { + var lastWeekDate = lastWeekTimetamp(); + var timef1 = getFormatDate(new Date(lastWeekDate[0] * 1000)); + lay('#dateReStartTime').each(function () { + laydate.render({ + elem: this, + trigger: 'click', + format: "yyyy-MM-dd HH:mm:ss", + //value: "2023-02-23 13:56:25", + value: timef1, + }); + }); + var timef2 = getFormatDate(new Date(lastWeekDate[1] * 1000)); + lay('#dateReEndTime').each(function () { + laydate.render({ + elem: this, + trigger: 'click', + format: "yyyy-MM-dd HH:mm:ss", + //value: "2023-02-23 13:56:25", + value: timef2, + }); + }); + } else if (selectValue == "thisMonth") { + var monthStartDate = monthStartTimestamp(); + var timef = getFormatDate(new Date(monthStartDate * 1000)); + lay('#dateReStartTime').each(function () { + laydate.render({ + elem: this, + trigger: 'click', + format: "yyyy-MM-dd HH:mm:ss", + //value: "2023-02-23 13:56:25", + value: timef, + }); + }); + var timef2 = getFormatDate(new Date(Date.now())); + lay('#dateReEndTime').each(function () { + laydate.render({ + elem: this, + trigger: 'click', + format: "yyyy-MM-dd HH:mm:ss", + //value: "2023-02-23 13:56:25", + value: timef2, + }); + }); + + } else if (selectValue == "lastMonth") { + //lastMonthTimetamp() + var lastMonthDate = lastMonthTimetamp(); + var timef1 = getFormatDate(new Date(lastMonthDate[0] * 1000)); + lay('#dateReStartTime').each(function () { + laydate.render({ + elem: this, + trigger: 'click', + format: "yyyy-MM-dd HH:mm:ss", + //value: "2023-02-23 13:56:25", + value: timef1, + }); + }); + var timef2 = getFormatDate(new Date(lastMonthDate[1] * 1000)); + lay('#dateReEndTime').each(function () { + laydate.render({ + elem: this, + trigger: 'click', + format: "yyyy-MM-dd HH:mm:ss", + //value: "2023-02-23 13:56:25", + value: timef2, + }); + }); + } else { } + }); + GetAllSubsystemTag(); var starttime = new Date(new Date().setHours(0, 0, 0, 0)); @@ -30,7 +319,23 @@ var endtime = new Date(); endtime.setDate(endtime.getDate()) var endtimeString = endtime.getFullYear() + "-" + parseInt(endtime.getMonth() + 1) + "-" + endtime.getDate() + " " + (endtime.getHours()) + ":" + endtime.getMinutes() + ":" + endtime.getSeconds(); - layui.use('laydate', function () { + function getFormatDateone(date) { + let year = date.getFullYear(); + let month = date.getMonth() + 1; + let day = date.getDate(); + let hour = date.getHours(); + let minutes = date.getMinutes(); + let seconds = date.getSeconds(); + month = (month < 10) ? '0' + month : month; + day = (day < 10) ? '0' + day : day; + hour = (hour < 10) ? '0' + hour : hour; + minutes = (minutes < 10) ? '0' + minutes : minutes; + seconds = (seconds < 10) ? '0' + seconds : seconds; + let currentDate = year + "-" + month + "-" + day + + " " + hour + ":" + minutes + ":" + seconds; + return currentDate; + } + layui.use('laydate', function () { var laydate = layui.laydate; lay('#dateReStartTime').each(function () { laydate.render({ @@ -38,7 +343,7 @@ trigger: 'click', format: "yyyy-MM-dd HH:mm:ss", //value: "2023-02-23 13:56:25", - value: starttimeString, + value: getFormatDateone(starttime), }); }); lay('#dateReEndTime').each(function () { @@ -47,7 +352,7 @@ trigger: 'click', format: "yyyy-MM-dd HH:mm:ss", //value: "2023-02-23 13:56:25", - value: endtimeString, + value: getFormatDateone(endtime), }); }); }); @@ -68,6 +373,21 @@ return currentDate; } + //right_content + var rootpath = window.location.host; + //在页面未加载完毕之前显示的loading Html自定义内容 + var _LoadingHtml = ''; + //呈现loading效果 + document.getElementById("gridpanel").innerHTML += _LoadingHtml; + //移除loading效果 + function completeLoading() { + document.getElementById("loadingDiv").style.display = "none"; + } + //展示loading效果 + function showLoading() { + document.getElementById("loadingDiv").style.display = "block"; + } + function json_array(data) { var len = eval(data).length; var arr = []; @@ -162,6 +482,7 @@ showTable = async function(){ + showLoading(); var showdata = await GetAlarmRecordValue(); table.render({ elem: '#result', @@ -185,7 +506,7 @@ page:true, limit:20, }); - + completeLoading(); } @@ -291,7 +612,42 @@
-
+
+
+ +
+ + + +
+
+
+
diff --git a/HT.Cloud.Web/Views/Home/Default.cshtml b/HT.Cloud.Web/Views/Home/Default.cshtml index 7b6d1ed..3238c3c 100644 --- a/HT.Cloud.Web/Views/Home/Default.cshtml +++ b/HT.Cloud.Web/Views/Home/Default.cshtml @@ -656,7 +656,7 @@ var option = myChart.getOption(); let xData = data.RtTime; let yData = data.HT_GMJ_VP; - option.series[0].data.push(yData); + //option.series[0].data.push(yData); if (option.xAxis[0].data.length > 34) { option.xAxis[0].data.shift(); option.series[0].data.shift(); diff --git a/HT.Cloud.Web/appsettings.json b/HT.Cloud.Web/appsettings.json index 673bce8..05af286 100644 --- a/HT.Cloud.Web/appsettings.json +++ b/HT.Cloud.Web/appsettings.json @@ -17,7 +17,7 @@ "CacheProvider": "Memory", // 缓存使用方式 Redis/Memory "RedisConnectionString": "127.0.0.1:6379", //docker部署 172.17.0.1 "TokenName": "WC-Token", //api Token名称 - "LoginExpire": 1, //登录缓存过期时间(小时) + "LoginExpire": 12, //登录缓存过期时间(小时) "HomePage": "../Home/Default", //登录主页地址 "MainDbNumber": "0", //主程序数据库 "LocalLAN": false, //是否局域网 diff --git a/HT.Cloud.Web/wwwroot/report/Report20230331085834.xlsx b/HT.Cloud.Web/wwwroot/report/Report20230331085834.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..7d8cdd5304b91302219b7f68afa786f94ede1243 GIT binary patch literal 54761 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ηv8?1T5~^=-kE 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 z z#xQ1J@fXJAGv3iXEX&%jiJzTG+dEiqxn@6dVq@_fx1|KqX9 zeV>uQV_@hQ3#_;2BMZ!|Xp6n@kC1mWFwcZF#f5}loyQ{LY_?N#)n~ReuC*+U>piB% zb=O_sU1VuoSIEOX@NtjG6)lxmq}gZW=XR$@&-w-S2EkOFgo^|UMAn&O=@qdEaj;T0h1$6=_ z`sv<%F!XS*Bn!t^Fdd2aGsu93JCS2WL4Q7Gn+yNWZ?3=u!rbAbI;4Z5m)R{)jE!hau zGifT?4UdSeJR1Nc-2E*FrxO@8S-vY|fspxFmx(S_k^W|N3t&pUf_ZnZc&xX1_~i_M z`RrVBju>y*89z#JGhhk8jmr~QWE{&i>v6@#pg6wZ(qxeHJJ%7<&^2hA*ljxMs1j0r z&!{o553&q-_a#|g!k?^$213R=@J@EaB8;3H(2un=Y(d>u0B*)0SI=XwbtS5M9wJs5 zVe+TQuhcxoDoj?$wpH#Ak4V=koA;n_E=!Ev)G%G$EQ$N&E5%$gB4Y67MgHI`|Y9m_K9 zj)6m09oZUiVWSkSWZ;mi zBP*{FmnA+D{)?~qKetpkQAZ#6{$JK}i{0G=EZ-Qo!@(aS64)PsZ)_AEHYUm}%>G3NA%Dkb1Rtj?#g%3)Ny1`_acFDmh zIP~U0hQN?({n3_X5arC3ZACfLT4^f!2}F6+x1PbA)7`0h-GjNOErI_LxNGE7@pU@^ ztv20tI1Si#%YTc9Gfg%EOhGrH(yR4E0oxUDYmW0Sr=Bi1MqLsL5ZFHocYe=#lM&<` zI@JY0}Z%bT99Zf_t1=?Ih!;Sss?H|z)6 zkPSG8!s|8b&`K-mrBKwId+fOVmg1Vj}=Vz#LT{@a_~ zFY+u`3)Z{I1~6tHBl38p8(c5)cqkB~sKM{2Z<--RatWB*Utv1Q0mnlOpsd)AJE#FN%(tI5$ zxIo^sQExxXSx>eBR1si-=)kwoqp}s?sErVev$Hx;eo zCxgU34ifv(p0?Ld#!=RLj9B<~yxK(JoWJ?4T%vUS7}L3MKRz>k(%;{a>D1V|6%KQ_ zh#j9$6DzaIMP=GuB9A~Zt_O3(kkcI0Rt)6qG_bo>@=LZ`2i zy42R6+gDJ`zKVx~dZ)BbLpt|^zOw&-<1)ppnTqauWBx}A_z4yD=_foa{?~|`TRigY zI;_&%dy^_&KNkKhbp_<|HPYZ^eSo6Wiv|z)e+Bmv0i53~2t2hNXKEJr?QCQ=$o`v- zThT7MNfrVlv@>5FtIEGz6t3+kNZbE73uT;y+&HYGpVR_3o`qP=(UYYElgN7wlUf#D zo)VZ&G%}hFYX1I6ys_}4%WbL%BG2o_ypsYWs-zWwW5hhh-P1870=ClP99ytfJQoR4tN~u}V zZt*t$Q32{S(m(wEV*vg?iV{TF*j1LvF`3t+$;4Vtaj^L@U?9!T0((>^*PLbN=l`#- zFM)@uZT}w(#u{QQAv-aYeTza;St4Ol%-A*7tYwQ~h_NL5R+b1eWn?M4AtXzdMx`jS zS0pMV{qNyf-skzf@89R+)R{T=a?ZKV?Yh3->wBFxsLN*RP5i?+PaskS+DM7#=K)+& zYj6$=z0K5sHUUW`rYGr{PS`9JN%swBo`Vurskt(H#!Zc7{Uk&{aX(CW1Sq~>vUI#W zC!kQ1-(|WP#eGeghHLD}d@w&%5ZY^;W}_Iagf-0YHaU(sBS6OJL-Eg0=}B)d#Id_T zjX$?{C|o)sqEhZ%HQhXX=b>4+5E_DCum4Wom%w0^?#c|bs!}kL08pGYLkLU|V)s7k z4k+~GTEC=pp&1U4!Jht^Hc1g(U@%r`G+uzGsW|t)04@JJ{8yCaUQk94nmp@s;sHh1I;2qmBjzCYT7)g1u zt41`P3Dd6!QgIB(4rBuQPcSO=5Rj$lm*7LdTD z+k%SCT9T1bAO+F?hdYE259Z52`a&`wy`?6bhNLqKiY<3w;X zA&m=>AHD-RUmi~4*lD1PBx4Godr7QJ)*mI1UN?X)5=)7N?P}*@&~>SDq}`$+gcVRU zg#7QKAyAf&i!>Fgf7tD-2FAWU@8e%aI~$9hwZwLrUgDza^Ts*IK)9|}470|2Ji*!* zPVuSSa)Uj*v`ltvxO!ft;Ds>pluq%=tMzjt71e7RFu1B$!{^JN479P5H(vmEyT-!e z^TL_0@1?|%B3b@6;>i11AX@#SatJt4P(K7zL*|`V1(NHbPuygTfelbp^WFryYTNu& zP;w8=UJKgxU9!^xjEy+*Rm*s;=GjId6cnXGf0fM^^!jm1`bFQ-QH^lv-v`LWadxtr z0_P|1FqMBtTYUdstu=Z&pu9s%l~Xg?aFf&eqapG>uR|S83}tI~M+V__#*;?F5Lxc+ zSCWu+7Q^aL7eUR>Hs+5oSO3Z1(NRdsk*-QAv2tN3yoe)}>$$=Mo84Y;!0V3$xd1>d z?21sKC_*-o2e&F5V#S57vxvk+LoP;fY0nK2bDMuJVwh-NkPKur`@>SaEm9K+C{TO*+=vYLymD z$+~Rz@qPix7VO|~H~aRL;$gy=F_nER7C5h-TonGzX1`nr1=NR;30A3sQiI8{jQ_qm2ZaSjPI1$)D_7U0?DL(pjik-b8#;T3h-uti@a;|7XMZ}5Nn@m>-Fe56Gf+` zBU2?0fF zaF1j{fLV|1YVvjq;Y5`d+lV|$Y3$0BR>`lo#OZZjzL@b-PG2GDyC7J5wLt!A2nA5L zy_5@VplA)KdUV$5;P|i{IjcLUHZLLJA!<)9nfEy1VM@}W(|^k)!N4Hf&pvgO5PlM{ z>J}n~;IDB%{XlPPm#b<>+R^>y$h5mQh4uk`&DJg{4Qa!m%+rCqo=U2Qv!(c}TcFFk zb>FC=B4X*6P{U}Yu~P4L$7rq|vk2=KNg4;c7kKtr*@C-v?G&Z5=6|UT90D|C%cp&p^UHCjiY*{9yY!*Ub+N)?n-`X~v-V|bXovm^(W+rN&zmRH z^bRM;UFtnkEYheCiKuzV#bJgf4}zZ?X}+VKn=vecIoxYwBts$vTJ zK}iM_D9La~n-6H%kFD$p$TFi*fk3}bzhN~G{Ll(}nCqHUA`?OB+OXmU+I9RY zL7^Kc6M=GdJK^Vy$)CH94X+5Da%byxpZig3l`UbnEAgvx><-i_d`P2izkvIOW#2tk zoy{wTYZ6Np2~!n?8<#p^@SmbSXQpQlb=~z9mQfF$+By%A)W_UQvGRbM@z53N;H4^R z)PgpCW3-zjwY}wx+Y&l|Sm~acsVeT_MBFOP^yKOL)+zJVY_!a)>#-^Qz;b-fy*nA_ zN}o%tUCaqZ4cR=b<;q}WLO_0YGMr>kad&FT&U)UK`w;5!jEgu!=Q``o1ZPdjEy&%! z4OeI3ARanHD!0s=fPmr_2XckAv8uB$>&k%IDj{r!Mb&^u7MdQX=G`iZ)SC*yd<$f< z4&CApQOw=sjMDtIS$wB*?)Ee2yO5oRak(~)%F@IIHvdySY5?THo zK+>6Lhu6zcvPrKGvj5k&u^TyP`ip~hB*V9if&0jywA-0tD`j= z##o&9w!*8HcZ_nsyQY=nI=YbTxWNncP&rwZNk=md6}x=!#iKz^5>NB-rd24*z-c|j zZl?wHlBR+0^a6wIWc>ymE)MygcO+cdhv(8JuLoJy3p9`Sf2~`~XUe>mRYz06lo{pY zaZqbNVok|ITkG)2fxbey*Lgk~;c17CpBkuPE+bl5p z0l4o07V}|rlRvNE*h|@Jq<$yF`L-6#GqY8?A5JuWVt~)(hwo#vS+MBZv0g9NdiT-I zn_R5UmhysPWe>!<%pHD0 znm)H)QT*FZjWuehaw)&CGaWKed0sswJU%E;5hXsy&N(C8`z8eSb$p<7q41*Jy28&j z$#IHshf+ui>C3n4Iwf2OkGC!5ZJtnzCVlyNyK(cCkvFI3#ZVaD=v)>y<&yM`F1RD!h}W}&_yc6+AWrvq}AU>JuUz8fW$S<+?V}&~m1fW~ll6mufWv1==a%Y%KXVexhq?#Ufe~JM zPHa^o%erADCpgKN8|VxXvaBA~3JaC9o~#@8VzOr9BHj{1N*a>RB%m{1FkvNr0AE(E zDaS`ivduy9$IFZ2YEZc`zh$iav~GDQtUljpOHmt2aE8Gn6yV2n@X_E~s`aCwax#|^ zXU!M#>0#F9?#*2@=o|%aChOC)XqQGjC~T58eIpsolgN1>9UEJc(coa>uAwarD}HNt z4vtr%S7Eh>HqM8)w^7EhfG&uud_svs-208`Q!NOmj??@ zfXY1=L+J`()~7)Z{%_aZb-RYJ02%pf4ImKJ3dM>98@#>)m>JEa1z~EXVeC6W3U|BM zev6IUXFECDWlu+10SM#-jrC~=k&6*2$xPZW_ncl#ZUleJ%$HbOGl-qQlm%hCg>uzo3u}Y>P-hv_}SxCNP zN8X7(^@#~mO}8kb-CuMzLwCRu_Fikd9xdR2tbiX`+g_C(1s9B zgPhT@`jse_y!=ZSxk*bkGXyX*FjK7l2YCg0eA8o)Kgy0)1uB)fyB9p1An>O~FTJ6l zV2?GQYfP+ia`N56*+g$P$;htK1G$+Gg=i34r&>z1Jmxj&5NpOS83GuPb8o5UP4lOD zS7aNFI-4xI8{0MrY}Bij*+uejE5ruK1SCVjX;ZiO{7Ke};Dl*U-)~vuL#xKC99ox} zQWzXj9CJ>Fp73bQJ}=GAKl}DH1TSmnl4n^1CFO$3!#}DfB>EiO1Dxi}^L=9(C>p8) z=SP{`zHlZln7jCDKcpv}TIom!^rzTb{HeDyyeSEEL@8!!+=u~=aQyC$IZ~U3cqKGJ zgz%t>jrD#;q{E@{^o8h1?zqO`irk9aYyt#6m@;855oxINkTt>Y$T7W6uC+i2 zi}ZWJk^Sw(S&KZ4GtLqL1iMIzGYvej*NkHe*yG@Vxpes*rUhi(=+dZ#cEJ7cNE}^- z=0b{T-&B8BP4~@^D?|vG3O~|xn}hs*#sGrX#Wz+gp7iM3`i+k2YcHM_%7C|H{D3s9 z;ElL+q~TXGu6wxSJH$GTZucgEXaJ1U)>ILkeDpJfD8)p|m1tM;x;5Jje@la0peV$1 z*nM5JX5%6vuf06^ND`@fiiAl(TP518p*M9ZC%X1sKmLuKT*;3$bjiE=%(QGq z9Wl2P;_)OF-DUd^=cOAJZHPHb`r==`v3Oydo;>{_Vv@e;$4~Su9yn0=YC-0L8VH%0 zIq8uGw#)7<7co~HscJ}intv(mBB1og?|Psa1(NwJuK-WUKazdcT~q&DS%6AGivd*m z+l|&5Bhsm5_A|WX;s;(ex5sn?q>yFnjNS7FQNNai|PSi=@;-$=j@B{>F%c|}3sXRS_VMH%{xVrpm~ z)pQk4LkK5ntdnSo7>Mcfk)ZXKlh+Ez_cIA51xgR-qQp#-GRW(Dm1$+fU(;%FIEc=V0h6KM0@ee zgRx{Q=|-z6jwE+x-N;yq%z9<`;x;sQOt-zVf)#Q8z)t;N%eZQ4l+}Lf#NdPTDhd8V zRq`H8+zG*&kzJ#PY2!6P5BvpR94V;_ED)cNW+Y)0=m>Mk9CsCFlG*mRPpcYyfLIUE z5Oc{+pX{|EEC#2O7Yjqd!kG(2s)D20(Nh}eO`axZ!ZpbSWm37l$;6035NWE-e!Z!se+v`}{2yHxaBWw&s@+id~MpRkde zFRLObKfso%-^uByw6a6@Y(nV-1dr-2L%RS~kK3ROdUO05Ed<|KKM>NW?$?<(7DQdu zON!+NejrJLUYGY#k&FMkh}&1Y(ve7)1(08IDa}WC+A;etpIb2fuB+f=3P;z$NGA>Z z`2A;gSMe74`xlTb=sI9~E2uYO_vW|s;?A{4y<=d*=$>TN+Hkm(%b%m zQweHTX5$O}2Th@P0mFMF83Wq&%5&OhN##ar%I7}Zl~qBQ9@(&!yKUS+_ic!XQO?ns z5JP(1Lf2iu;%Z_y2bFeO+-*9KoK@MN2_U-4*p7Vp`n~kZeH|>N3_Oos_O7c$#k=-` za>q&ICz!4CGz>^dTnJ3O|M?r&Uu&zU2D!n$h7A{{^1eFtcH}%1Z|k*kmBy_01gXET z5EqZmVM!Wl2QLGJ!4C`cOByzFy!iSQl(;e?ZA`Ff&O9BR5us~*sX)f0K?wu9pI>$C z#_W$)dXkxiRp14HO`}gj4RI{sJSQT+U{XOIn}K|I1At;_IfkThL2^g$T}^ecj-TxI z8#&^9T+KEcmRV1CeOsKgAlao5IT2n+3q7T49h`~ zb{yzHVDR*R8N33F)X3dVTc^Xg6MEj`xme}z$R(jjiVM|w`Sd}`^6LS(|MeDCM>>+D z{Jg>|vE}H-ICS5&y9aC1qNqph`QmL*CHZE{5lyNNr$YEBB>QBrz$mnoP5gW zX!~ZEADvSb^T63>7T&(ZfqrdFYLo#3@ET}wYk}e?JiA*;sRG%tuCKi#w!evup451r z0p1p`ZE*A56B=T&GO0GNhlZG_&4eEAd%h+*X>~Y~0>t7iZS^)yhD4yzeb3-jtk+<< zNl#knx$QYAtd;)C-a%6<-SJ(1qG$xp-x1#f$0w{&k(5T6wk0kjSkRRSis2>?^BX0Z zPqf6ylQt_;8gxh7k^ysdtMnqf3 z>WxQ`8>qkvZBpY4AtYI*CqygoNmb(s25VkWmj2GD(Uew%o76WoI{ZC6Ln5(2uDz<9 zbNmxuzFS3n-pFtVcZ^zTNz?%AQvlcW0IKd6EEyG;v#k(x7$2bVVownMmB|34a&3t+i@}4lS}=?IzQ`3->j{K*>M+!FwVglWZj4Wn&D% zE!e&U93xr7iS#@zfmdA;i38f5T~!M-pWj)}`%A+{`W>=;GF@Y$bnBl}&*qFSdMqgu zMPAVOspgh1?+Sl!W0#HszPXe*kogo^#9!ex8VugBstgFI5{dw*ON&Pq3ZO2S)>#{X zy10JJ*tEJnXM+hd+OFhiTZ-PU-1n8B`?Sh&*6zSWChD7B1m&I?$0tiBWOxGVTP&)m zVkdRxHp=4l9OOmbUw8{!TS8ra6B_?`-;yv^em*s#pS^8Kd7JqdFaFN$F4R{!?lzX7 zl^^71ylueboHV($+-M?rxCMN!Fd^S|$+tOb-Z7B}BLQ_!T96&MYV*tOOa8&=Zw=bO zH!-UQwILg>{Yd|O1NBWaA_GGk{Ho4taCAIwaQoT${_$k+585C=GE^dQ!zyL_S$ZpQ z#zFUgIOE&0bMK~Y$XqXz1MDZS6c3JP4hr6=81}GUyUnvo&`p)VP2M#mey}%FzY)K$nbRZH?W>dE0MM|$jrI%)%UbePmXxAA5a#i z)cNPGJeEX;=L0)mu$)!7qt?xI*4=8r*~dY@CKr$!FyL^P4LkN1h{E=jUk#2G`Hu33 zh&56SORkL1q!gh(ixGA4r1G=hbJ=qbCdQUZsWn={hifp$zE6j3n=M@Y2_u{pMVzmZ zW_E~Ty70~M0>JyVW9k+wx*xE1ES123Q@-?S5^K1&HQl;3-arc@JQpSE#*wxJJC^+a zxr3iAbJh4>n+8sWGxKuV$&|Ue-QzlX^PiK&8ZK@mI9yTbRzy_t2fsLIR_pvI5#uYr zu#IBHXUX^X_)3-!CsX)}#+{Jo59Qu}C@ADPDd@&t!_!&Jc;YVil!F9LZ7jHjmU|ga z)a@f}Av&o>o!qR;)rp)7 zpZ8LslbP9TCajNy?fCX$NluwK)lXV?G-4%)#;QIk3wqw@6srp5-wQaEh@wwPvFF*x zZaN|j5**kX1c{=Zq;k(1WJ_=Qc5K&Mluy#DBSd6h155plpM}e!ul$4;d-_>fu5W>0 zGxm>Q^DrO$o!QSl1QEsh7ly*Oi=ikYmZvlKdhP-qO6_W;K&&b{{gtp7%x_?eb@_Pb zYL@FS^o$xKes*rcvR*va@L+F&qDXAlyBFId06OH)j5-IPLuEvC5^z#nk+E$>a<2^> zo{$)vky78hfHO`Va?cqDLjsqa57gXjDt7lWHkxt&Z0a^W%LlJ~{jrPmrRCZ%=+|W} zuTa%4(UOyLDJZ!k_KddCMQyOZeRm!{bAq#LpJ#Oson7_jC1Zy5= zhqrxh9)28kkrWHe9^mcIPG^6e@dLb(oXX&#EHR|PS2$wnreS%clad(nOZ$7J`m3{Z zTpdFMh1^ZZ)$Yp+)=f~4r(B5qG?j!i$}vt&xs8Jbuj7)fep=(FQqP*5csVYOG+5#w zCx$5A2W|=ixGAyFy@_xkJ_Roa&~hSjDNRk{hNM_QvVb4xO-St2S8@w$NVX1>3E1T% ziW>d#9kA|6&9Aivq*w{Ez^y;OdulvkFAG5NCIk5sB;WT(uCnS7a*yZ1;AamBk@b(w zcv*-ck8TEE0P_%|_Vvn1AUIJZys)C~6^9NO!TvjYEP6PssUUc!5kV9+CdDGiz^<*6 z)mU~%-@SCjW?q?HRB&ABi0=ALr+IBCa7M;ovXg-`GFN9zbwpTd;e=p;?7sw)hh5w4kS z3Els{F+nk8*wrtf759KcZ6)U}DOYdwP(!9}0026|-<)$@ZWFKzQ`s-SBeGML6+oGi&3BFj>I= z9xT}cM9+UL)*!|N$O)9?KwfX#wJwbA^)paBMcRO5KB2g9+=ol(gGu4_vl&TaD*K7U zR{#Vaj~@OqKFHgyC~9na;{?@=)f+yTf;(nDw~+;dC;#{qA%>iZD2X@2qb;fme%LAI zpNQk~P`M9;Y*E_&?Mbk)Yzd@OIy%V$t11N>c3J?}K-n@bvQ?4K(wWhe#OHf9^ij zKmbVxt2zfd6h}HGqjQ4i?>tMD4u;0=o#QR4O>`+6iW`04x}_BO0c%d2t1C3F)bAVD zJbBYeKQT#IiNHaFP&sRE_$Z&*z;(uj3_aRz$K5-Jvr3g z(p54I^GFaQ9!emUK|6Byc6vpKdKvYG$nE-3L6M2O#{74tC5R+$uQRZ|ZU6$h#<--B zd?Sb&=?2I$Bdw08*izyuytTh~@>onz9iCK%=qUbiOtmXuI_r~-Wu1|9 zv5Qq;=z!~lDbf<|V0sAPZE0b(*;IHtljk_nlGeeLDMrkUI3>FTtOW{m1A z2fW4fWBKrS(;#^{%>XG8yy>bBwl*Hj4yL=`kAZnuvO842-9FE*W2!I=oABUuFg+d9 zMbH*E`Z#WY)L5(0L|P`GP2=y%1|SA*Y#z}Cbd7{NC&C`*8#=X+{xjn-Yk+hq9&M_L z#eGP)a11OEPmyM8xWr`i@O}fil(|qhLz0vM>9IdJ<^opLw>W%)QJtNMPCntaykq>C%G;DV8bDceDV(HwQwnxih-hlhfLVAcPyAFYrmH% zla=nlav$d4L3vnXen8)q0L1U!NK;?7-*NzM`TRJh!fcnCT>of_WcXNUuxSas2Ahuv z#4)I%XrACo^fHPq;_yasvI^lJn1w3YAIg-G@P;^=%$yic8f)K}Hl@}l5In$Gu$E*w zCo?Z?nWM+NAaKG@Gl#`dhG70Y{YaiHfcK4t{kYq}$a0`741TkL5r3~ITE~z>+d0&) z$D#Q|8|LtVv}l(XVKO2hmqA9qe-rI)9lHH&L8ooHbf!G2U{ka)!!~>R+jjUc3G-%w zWzC`F@NjL=CXX(9Gs9wy7kSi!wSu=tYtH6vNj55HGHzQ|ku7vWuH3g5r@i&uRSEh<_Z3zO6N0uwd>>Y=T#<)v7pEaASBr( zUvne8p|?@1o?S~5=Z2mRHwJBFTnVzy<4CVK1WbNTTasXZ~m;hR`IHFr8m|8d6i#jN$9nR zjB_AVOhFk^L&Yf@i$6j|%{95j@0%1EYMm44rWMmy0@sYqt_#vvb>=3DXU67}^SjiL zI8+9Ao2+Jpl@h4=p>~gH;%^pb!|LBGP6RG3=F#2ne@2Vd%FyVEpW&phT~*jWSoug0 zv36e+Y@1f_-sI_%6PK#Z6N&&D%$n>WAC)5qoOk(~royQWkNXi%Ga{U3%GRl|VuoPb z8P%vd8jyl<+6CD6tc@h7SDuW@0Ch3`1U^8R2;h$hE3QYU?|UuwXJ_*eTNax~oR_e3 zwcy%{sDn(e@d>OUW|h!Aq3fIBFAZwK1Q@1V3bF+_b_78Anl{J99vloP|L*4pYRhDn zWV@Two>ZV=`8cQ2a5BiPOjgQ&pAg0jr+80Y0nRgTBl)cAOgbt9+9rD?!V0{#2IrNd z(mQ!ubYZfdmwlo<$yBk8>N6+oxYcXoQB#*@X4c)U4CUm~xT0MHE#~|q`5tdKEv87( z;3;#bjsrov*jA^nJ%k`ZW8F&&m{BoZj4;q0?(q~Fj(q(NDCooMAnH8bU$#7tZQI8td+*qUL57@*K?EwJ$yv&>$B`@pD)q;K|@;i z?sA5bf6tXv} zMhV>KPrl;2^w32kmT)}ybv*?139715iZu0a^1?&fYXbw0tP<>fo?L~R5?AK?_)T_r z%$^5tTJ?S3|9>nGFnPc7 z#3QX>fAWtYU2@lUSxC7e?U-{+NKogkV`TExaerbm`+3*c*lLFN=$m&dg zUQf;+dJ_hu*`p&VuW68`4Ctxdd=d>9$#K_c=|Kd#mr4Qwt^hFFc3`wL)@fS$M@H?S zAQt3K!LYW|ZkEG)OG~EujqNf^reKQvW2@1JCWJ)YXXYY1(m#UHKYM4U#lkdPx z!{iW#ceuz)6FC9yR#s2Ozp$wg&Ur1v#wmtEZ-x0q5&4z}WV$@mqX{@tE>zf{2Eb*e znJ9~ivz1}~BI1o1<5}*I-)I%0ZO_utQ`?o`{!4X%?6G_N3dz*;5EOW#)85;dVo|Dq zzqm8&ymBkl&2_QNlIR7%x?I6F40sf09>n8OssKxx0S9Xx=a|(79j(f(0h@i@T-!#i zLl0g+bQ*NsLv5me=g5nvF@+`rU(O8i6>spwdG+%kiE5V^v!a&y{6SqQUNeUdL$snO zD=6XAQ&oQD+XKsz>vrjBaOUPzLkRvh-&T=;`{77Ke}AtXB|JS~v4L43+IIoEqdfcD zvBMTZ`6(9x@d@$};%SMoG?|)uLqwiy8oX34bT9CuqR?~yK%qh42O-?1vDRTgve6I$ zPp%3hVK~rT&p<+ye0wEOepvD&c{(Z0HM61TLnE!&+B+h?8Qls6j0-AR_OqQ?8AO4Urx#=P7#v)(*{xm$6ghXsNk5=P z&WN?xR%;uOq;`2k0eU0_LUbLcB?>SiRhdcVuXg<6EFaNRxx~#|PY2?oyUY3Zu(=ma zi#P~e^)h{rCKM5g^LntQ46Qb1zwe~5fE3Hz)@lxFLdaFvTFwpedS0}iKT1p{tm}Fa3SV6;D=8q39^0C z?>uwm+YMo<7}YBBW`cBWb?fNE+-!$Ry8oWO_0cB8$;h&l9)H|t&dbq0Nks? zRKO_oIu7uZ4iv!-kovJx7fnt52nD!g;Sj^%BN#RH<9@4B2j)4<_{$Q^!Ac(xh7NUl zF%$;QJtR(ysCI*7dt#R`ToQ^g#CWkC|8~&4C7LwO+JRBdLQDRY{K4_>pVT= zMgwwt9kIjZF!d;$_tWG`bjINrfF*SM$pj42f*Ghxf^^{ED|piQTT!eRvqP%p<#Aik z_cip~$gnT>{^~4rT~4}ut>B%9flg=C(+|05>m%1w5#c}6Hp}KHAnn8cbe>I{x}W71 zfSF-^zNZ5u@AH~09T*>JzJGfbq%;}+mC_Wso6-~s>NgxdyUd~IncHl40>(m_69Y<{ zP@-_iXm5Uo2#A!}53)Ga-5_y`sd7usn}PI&MX$^KL4Kk{H5?VcxOXaEQ+B00@%^^l za3S}P02s@Qw4dh|&L&CS|Kv7pgUpy?c3G8sc+*~Znu|0p(S`wK?2^6`)KbCgfi|hH zcab4}W(|l!6*ayb`SdVO8Tv+p>QLN`m{|NY$Z_}N@Z-K;PpW)_-ZqBG0`I|(s5gc^3!G~I#f2^hT}t%6uFk2Y-Uw?YPZe&c_{20yJjvxi^6K%&h%Qh$i+VYk zU#h=_#Zl|VH!4}C2?`lel+rI&Sd7<$F4-4_G#K+2n+rcsIN>^7OZJYlYr%DupsarBFV4ca{K* zx!Y#WQ8}O#!zndBBHX%EydnE1zWl|CiZ6qcdp95xhBNi|-KaDcWWMV4OqV|lw=&=% zI3QrCRY4|*SDOVb|RZIUr$^hU1w@#EdBFH zRXK*C3;LD^d3UAX#Bd`4;cUL$H$_m02h<>S_)6pV1chYkj((AVWmU`g#jq|PZTE_o zw5?0i8?p$)G}(KnqXp;Z3(r!nDNGOUd-A$kXN$Gv%*M0NTpX<(?5+v(xV+aR@?a_@ zPk%l=25-S+p#m>N;FNCx#n=wLr*&tA|0%{_XY@Qxg*F}-0XDA>Ot(#6^$uA!f?n8} zf_I`OZ*NdYfXu_90)eZsR?}-*(p7c5%HC_!D(i!dox<!TPLb3+&)QJN3fhr{x|({6}lP@MyOCYF_cYnyNeK>kU+ zz4EtXOt$%#W1O?fGd2n!<*+{?ypv{C2k(IrO9MzX@5cL8P+SG6VB3R0E!Q&W}fgYr;~^(D%!N-sF< zdT)=3gi*v>l~$+(Ab3#!z?6Y0156p5hYQMKbjBbX4E3Zs+}#YWSfu`1`+lP8g)oZK z_YC;Mxi6jh+Dt&?`>4~sjHSb7V@J@33)ruZ6t0h9=fQ$`0n;)ws%U&N(r{v^ng&FI z2iV-gnsYXIc&=ZV_y+XsmZ68#PH%M;O>b1DOcQhysa!SdJOx0A3V^)Z1VdUKm)s(_y1gGS|@f zg{QoWRm-SqOQL0|W}R7Df|)IQ+^Fgtoh8RB7u1wV&0^isdnkB&Q+NojL`GWrhJDfa z-9GtDs>AF6ULm!zKw(fmP@}Y7nKB}mfBUulI(rY2?cDNuyDsST(sv%VD0t(0ghz_~ zs>*me_;U_E1+RVbU$1;Vyz4bF#Xu!CB)r2t&ym$b5nLC zN+92*E=#CW;SxOt?WU?gJ5dd;r7fuX496m4K>q?L_GlRZnRI&Qj;Ln{R4R zwVQ7`LMR;S?tionR;}m6pasgx&gP?i2X))FR@YM6en0xX{bjN0pnb%~&v(B!^L}q^ zpp*-98(y^SeD=`|-@sd&&gQ-O`sSV2&aXSq)X%Q3yvy);AiQwwl1`?N{p9HNYn$e+ z*TPMI&whKfb+}D;t!eGe&d$4toi{z#!#1`@ufL7h8bImpd{_&TD= zcaH6B8}t8O`!N6f;P17p>)UVQ4*uTO%aH5YyuZ`m^ZfVLvFEtS>l@psW54I-4_@E- zvbb~aH{qB(d}DR=tbX{hh_Qpe54Qc<{BZC2orvwlnw>HAV~aw^!hg7BX#dXs{cCmf z_tvcO_Ren_b7LA>c?dUz0S1FWAfk}aTTewpXdsX%dI)4c_~f5I7Y%&816;fVQ0K4t zy7=2ET=nw&cL)3JTU}^D2k&Sh5SD+muAzfKP<}3+{)ZK)+kZDS`Khgt4;pbYKp^}6 z(QpoYa@F&2u#caIqmPfre;YMQH$7_&G-?DL2>hdQ71M6xy@CI;i~l-_C8_6k`oO8H z@&Ehur@_g9Nd&mNc)9Ft7602r=!DCI??WMw(?Spk+dn2U$+_Esf50_Q7ytj(^zPss zcN4e^mIw&AA^-VP58rF*?%?O*Y#HEp+1u^E_Mq*hWK0GP^}+QQ|IZE}B?otVpq{_K zyNgSJ|KYt0vb(c;BLDSrJYe}1-vl~C@IWBa|LCw(WVb_KFqZ%qKTDT@0P3U;|7%}S z!SS;9zi%{1QTIOuI<=+V?0y7&J8s!rp7 literal 0 HcmV?d00001