From 86cbb1d54aeb697b42137bb728d3efbdbc207430 Mon Sep 17 00:00:00 2001 From: dell Date: Sat, 12 Oct 2024 11:15:47 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=85=B4=E4=B8=8A=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ReportManage/HistoryReportPathEntity.cs | 30 + .../ReportManage/HistoryReportService.cs | 30 +- .../StatisticalSettingController.cs | 142 ++ .../Views/StatisticalSetting/Index.cshtml | 165 ++ .../PenMeiHistoryTechCharts/Index_blue.cshtml | 1304 ++++++++++++++ .../PenMeiRtTechCharts/Index_blue.cshtml | 1098 ++++++++++++ .../PenMeiHistoryAlarmNewController.cs | 2 + .../PenMeiHistoryAlarmNewNewController.cs | 2 + .../Views/PenMeiHistoryReport/Index.cshtml | 3 + .../PenMeiHistoryReport/Index_blue.cshtml | 1580 +++++++++++++++++ .../Views/PenMeiNetWorkStateNew/Index.cshtml | 7 +- HT.Cloud.Web/Views/Home/Index.cshtml | 223 +++ HT.Cloud.Web/Views/Shared/_Index.cshtml | 3 + HT.Cloud.Web/WaterCloud.Web.xml | 12 + HT.Cloud.Web/appsettings.json | 4 +- HT.Cloud.Web/wwwroot/css/layuicustom.css | 41 + HT.Cloud.Web/wwwroot/css/layuimini.css | 6 +- HT.Cloud.Web/wwwroot/css/watercloud.css | 2 +- .../js/lay-module/layuimini/miniTheme.js | 4 +- .../{wwwroot.rar => wwwroot240925.rar} | Bin 50069259 -> 50081194 bytes 20 files changed, 4643 insertions(+), 15 deletions(-) create mode 100644 HT.Cloud.Domain/Entity/ReportManage/HistoryReportPathEntity.cs create mode 100644 HT.Cloud.Web/Areas/DataStatisticalManage/Controllers/StatisticalSettingController.cs create mode 100644 HT.Cloud.Web/Areas/DataStatisticalManage/Views/StatisticalSetting/Index.cshtml create mode 100644 HT.Cloud.Web/Areas/PenMeiChartsManage/Views/PenMeiHistoryTechCharts/Index_blue.cshtml create mode 100644 HT.Cloud.Web/Areas/PenMeiChartsManage/Views/PenMeiRtTechCharts/Index_blue.cshtml create mode 100644 HT.Cloud.Web/Areas/PenMeiReportManage/Views/PenMeiHistoryReport/Index_blue.cshtml create mode 100644 HT.Cloud.Web/wwwroot/css/layuicustom.css rename HT.Cloud.Web/{wwwroot.rar => wwwroot240925.rar} (99%) diff --git a/HT.Cloud.Domain/Entity/ReportManage/HistoryReportPathEntity.cs b/HT.Cloud.Domain/Entity/ReportManage/HistoryReportPathEntity.cs new file mode 100644 index 0000000..ea12e16 --- /dev/null +++ b/HT.Cloud.Domain/Entity/ReportManage/HistoryReportPathEntity.cs @@ -0,0 +1,30 @@ +using System; +using System.ComponentModel.DataAnnotations; +using SqlSugar; + +namespace HT.Cloud.Domain.Entity.ReportManage +{ + /// + /// 创 建:cdl + /// 日 期:2023-03-30 14:52 + /// 描 述:实时报表SQL转换实体类 + /// + [SugarTable("HT_HISTORY_REPORTPATH")] + [Tenant("1")] + public class HistoryReportPathEntity + { + + + /// + /// + /// + [SugarColumn(ColumnName = "ID", ColumnDescription = "", ColumnDataType = "int(10)")] + public int Id { get; set; } + /// + /// 显示名称 + /// + [SugarColumn(ColumnName = "ReportPath", ColumnDescription = "", ColumnDataType = "nvarchar(256)", IsNullable = true)] + public string ReportPath { get; set; } + + } +} diff --git a/HT.Cloud.Service/ReportManage/HistoryReportService.cs b/HT.Cloud.Service/ReportManage/HistoryReportService.cs index a1a8b19..7588f1a 100644 --- a/HT.Cloud.Service/ReportManage/HistoryReportService.cs +++ b/HT.Cloud.Service/ReportManage/HistoryReportService.cs @@ -21,6 +21,8 @@ using System.Data; using iTextSharp.text; using Serenity.Data; using Quartz; +using static iTextSharp.text.pdf.XfaForm; +using HT.Cloud.Domain.Entity.ReportManage; namespace HT.Cloud.Service.ReportManage { @@ -227,16 +229,20 @@ namespace HT.Cloud.Service.ReportManage public async Task GetReportDownLoad(DateTime startTime, DateTime endTime ,int interval, string systemName) { var groupName = _context.AsTenant().QueryableWithAttr().Where(x => x.GroupDescription == systemName).First().GroupName; + var driverId = _context.AsTenant().QueryableWithAttr().Where(x => x.GroupDescription == systemName).First().DriverID; + var driverName = _context.AsTenant().QueryableWithAttr().Where(x => x.DriverID == driverId).First().DriverName; + var list = _context.AsTenant().GetConnection(dataDBNumber).Ado.SqlQuery($"SELECT * FROM HT_{driverName}_{groupName}_REPORTPATH"); + var f3dpath = list.First().ReportPath; - var listSub = TimeInOneDay(startTime, endTime); + var listSub = TimeInOneDay(startTime, endTime); var pathroot = Directory.GetCurrentDirectory(); string fileurl = "报表 " + startTime.ToString("yyyy年MM月dd日 HH.mm.ss") + "至" + endTime.ToString("yyyy年MM月dd日 HH.mm.ss") + "(" + "时间间隔" + interval.ToString() + "秒" + ")" + "_" + DateTime.Now.ToString("yyyy年MM月dd日 HH.mm.ss") + "导出" + ".xlsx"; //var fileurl = $"电子报表2023_01_03_11_19_53.xlsx"; var path = pathroot + "\\wwwroot\\report\\" + fileurl;//{StartTime}-{EndTime} - + var path3d = @f3dpath + fileurl; var sheets = new Dictionary(); - + var sheets3D = new Dictionary(); try { for (int i = 0; i < listSub.Count; i++) @@ -279,7 +285,7 @@ namespace HT.Cloud.Service.ReportManage //MiniExcel.SaveAs(path, reader, true, sheetName, ExcelType.XLSX, null, false); sheets.Add(sheetName, reader); - + sheets3D.Add(sheetName, reader); //sqlConnection.Close(); } } @@ -287,7 +293,21 @@ namespace HT.Cloud.Service.ReportManage { Console.WriteLine(ex.ToString()); } - MiniExcel.SaveAs(path, sheets); + try + { + //var sheets3d = new Dictionary(sheets.ToDictionary(pair => pair.Key, pair => pair.Value)); + + + //await Task.Delay(1000); + MiniExcel.SaveAs(path, sheets); + + File.Copy(path, path3d, true); + } + catch (Exception ex) + { + Console.WriteLine(ex.ToString()); + } + //await Task.WhenAll(taskCloud, task3D); //bool a = true; ////MiniExcel.SaveAs(path, reader); //while (a) diff --git a/HT.Cloud.Web/Areas/DataStatisticalManage/Controllers/StatisticalSettingController.cs b/HT.Cloud.Web/Areas/DataStatisticalManage/Controllers/StatisticalSettingController.cs new file mode 100644 index 0000000..9c3a2e8 --- /dev/null +++ b/HT.Cloud.Web/Areas/DataStatisticalManage/Controllers/StatisticalSettingController.cs @@ -0,0 +1,142 @@ +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; +using HT.Cloud.Domain.DevicesManage; + +namespace HT.Cloud.Web.Areas.ChartsManage.Controllers +{ + /// + /// 创 建:cdl + /// 日 期:2023-02-23 11:10 + /// 描 述:历史趋势控制器类 + /// + [Area("DataStatisticalManage")] + //[HandlerLogin(needLogin: false)] + //[HandlerAuthorize(needAuth: false)] + public class StatisticalSettingController : BaseController + { + public HistoryTechChartsService _historyTechChartsService { get;set;} + /// + /// 绑定数据仓库的数据库ID + /// + private string systemDescription = GlobalContext.SystemConfig.SystemDescription; + [HttpPost] + public async Task GetAllTagList(ChartTagType chartTagType) + { + + var data = await _historyTechChartsService.GetAllTagList(systemDescription, chartTagType.ChartTagTypeName); + return Content(data); + } + + [HttpGet] + public async Task GetDriverGroupList() + { + var data = await _historyTechChartsService.GetDriverGroupList(); + return Content(data); + } + [HttpPost] + public async Task GetGroupSubsystemTag(ChartGroupDescription chartGroupDescription) + { + + var data = await _historyTechChartsService.GetGroupSubsystemTag(chartGroupDescription.GroupDescription); + return Content(data); + } + [HttpGet] + public async Task GetAllSubsystemTag() + { + + var data = await _historyTechChartsService.GetAllSubsystemTag(); + return Content(data); + } + + [HttpPost] + public async Task GetSubsystemAllTag(ChartSubsysytemName chartSubsysytemName) + { + var data = await _historyTechChartsService.GetSubsystemAllTag(chartSubsysytemName.SubsysytemName, chartSubsysytemName.GroupDescription); + return Content(data); + } + + [HttpPost] + public async Task GetChartsTagValue(Charts_Params charts_Params) + { + var Table = charts_Params.Table; + var TagName = charts_Params.TagName; + var StartTime = Gettime(charts_Params.StartTime); + var EndTime = Gettime(charts_Params.EndTime); + var Interval =int.Parse(charts_Params.Interval); + + var data = await _historyTechChartsService.GetChartsTagValue(Table,TagName, StartTime, EndTime, Interval); + 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 class ChartTagType + { + public string ChartTagTypeName { get;set; } + } + + + 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 GroupDescription { get; set; } + public string SubsysytemName { get; set; } + + } + public class ChartGroupDescription + { + public string GroupDescription { 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 Charts_Params + { + public string Table { get; set; } + public string TagName { get; set; } + public string StartTime { get; set; } + public string EndTime { get; set; } + public string Interval { get; set; } + } + + } +} diff --git a/HT.Cloud.Web/Areas/DataStatisticalManage/Views/StatisticalSetting/Index.cshtml b/HT.Cloud.Web/Areas/DataStatisticalManage/Views/StatisticalSetting/Index.cshtml new file mode 100644 index 0000000..6403002 --- /dev/null +++ b/HT.Cloud.Web/Areas/DataStatisticalManage/Views/StatisticalSetting/Index.cshtml @@ -0,0 +1,165 @@ +@{ + ViewBag.Title = "Index"; + Layout = "~/Views/Shared/_Index.cshtml"; +} + + + + + + +
+
+
生产统计参数
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+ +
+
+ + +
+
+
+
+
+
+
峰谷电时段设置
+
+
+ +
+
+ +
+ +
+
+
+ +
+
+ +
+ +
+
+
+ +
+
+ +
+ +
+
+
+ +
+
+ +
+ +
+
+
+ +
+
+ + +
+
+
+
+
+
+
手自动参数设置
+
+
    +
  • Content list
  • +
  • Content list
  • +
+
+
+
+
折叠面板的标题
+
+

折叠面板的内容

+
+
+
+ + diff --git a/HT.Cloud.Web/Areas/PenMeiChartsManage/Views/PenMeiHistoryTechCharts/Index_blue.cshtml b/HT.Cloud.Web/Areas/PenMeiChartsManage/Views/PenMeiHistoryTechCharts/Index_blue.cshtml new file mode 100644 index 0000000..3ffe367 --- /dev/null +++ b/HT.Cloud.Web/Areas/PenMeiChartsManage/Views/PenMeiHistoryTechCharts/Index_blue.cshtml @@ -0,0 +1,1304 @@ +@{ + ViewBag.Title = "Index"; + Layout = "~/Views/Shared/_Index.cshtml"; +} + + + + + + + @* + *@ + + @*
    +
  • 重要数据趋势
  • +
  • 其他数据趋势
  • +
+
+
+
+
*@ +
+ @* *@ +
+
+
+ @*
    *@ +
    + @*
    *@ + + +
    +
    +
    +
    + @*
    *@ + +
    +
    +
    +
    + @*
    +
    +
    +
    +
    *@ + +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + + + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + + diff --git a/HT.Cloud.Web/Areas/PenMeiChartsManage/Views/PenMeiRtTechCharts/Index_blue.cshtml b/HT.Cloud.Web/Areas/PenMeiChartsManage/Views/PenMeiRtTechCharts/Index_blue.cshtml new file mode 100644 index 0000000..5968831 --- /dev/null +++ b/HT.Cloud.Web/Areas/PenMeiChartsManage/Views/PenMeiRtTechCharts/Index_blue.cshtml @@ -0,0 +1,1098 @@ +@{ + ViewBag.Title = "Index"; + Layout = "~/Views/Shared/_Index.cshtml"; +} + + + + + + + +
    +
    +
    +
    + @*
      *@ +
      + @*
      *@ + + +
      +
      +
      +
      + @*
      *@ + +
      +
      +
      +
      + +
      +
      + +
      +
      +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      + +
      +
      +
      +
      +
      +
      +
      +
      +
      + + diff --git a/HT.Cloud.Web/Areas/PenMeiReportManage/Controllers/PenMeiHistoryAlarmNewController.cs b/HT.Cloud.Web/Areas/PenMeiReportManage/Controllers/PenMeiHistoryAlarmNewController.cs index 097660d..ae6a586 100644 --- a/HT.Cloud.Web/Areas/PenMeiReportManage/Controllers/PenMeiHistoryAlarmNewController.cs +++ b/HT.Cloud.Web/Areas/PenMeiReportManage/Controllers/PenMeiHistoryAlarmNewController.cs @@ -19,6 +19,8 @@ namespace HT.Cloud.Web.Areas.ReportManage.Controllers /// 描 述:历史趋势控制器类 /// [Area("PenMeiReportManage")] + [HandlerLogin(needLogin: false)] + [HandlerAuthorize(needAuth: false)] public class PenMeiHistoryAlarmNewController : BaseController { public HistoryAlarmService _historyAlarmService { get;set;} diff --git a/HT.Cloud.Web/Areas/PenMeiReportManage/Controllers/PenMeiHistoryAlarmNewNewController.cs b/HT.Cloud.Web/Areas/PenMeiReportManage/Controllers/PenMeiHistoryAlarmNewNewController.cs index 88d82dd..c7a6b66 100644 --- a/HT.Cloud.Web/Areas/PenMeiReportManage/Controllers/PenMeiHistoryAlarmNewNewController.cs +++ b/HT.Cloud.Web/Areas/PenMeiReportManage/Controllers/PenMeiHistoryAlarmNewNewController.cs @@ -21,6 +21,8 @@ namespace HT.Cloud.Web.Areas.ReportManage.Controllers /// 描 述:历史趋势控制器类 /// [Area("PenMeiReportManage")] + [HandlerLogin(needLogin: false)] + [HandlerAuthorize(needAuth: false)] public class PenMeiHistoryAlarmNewNewController : BaseController { public HistoryAlarmService _historyAlarmService { get;set;} diff --git a/HT.Cloud.Web/Areas/PenMeiReportManage/Views/PenMeiHistoryReport/Index.cshtml b/HT.Cloud.Web/Areas/PenMeiReportManage/Views/PenMeiHistoryReport/Index.cshtml index 24c78c4..0f1ed22 100644 --- a/HT.Cloud.Web/Areas/PenMeiReportManage/Views/PenMeiHistoryReport/Index.cshtml +++ b/HT.Cloud.Web/Areas/PenMeiReportManage/Views/PenMeiHistoryReport/Index.cshtml @@ -1055,6 +1055,9 @@ //async: false, data: DownLaodPara, success:function (downRes) { + + notify.success("导出报表数据完成,请查看浏览器或下载目录查看报表文件", "vcenter"); + var ddfileName = JSON.parse(downRes); var fileNewDownloadUrl = "/report/" + ddfileName; diff --git a/HT.Cloud.Web/Areas/PenMeiReportManage/Views/PenMeiHistoryReport/Index_blue.cshtml b/HT.Cloud.Web/Areas/PenMeiReportManage/Views/PenMeiHistoryReport/Index_blue.cshtml new file mode 100644 index 0000000..aca319b --- /dev/null +++ b/HT.Cloud.Web/Areas/PenMeiReportManage/Views/PenMeiHistoryReport/Index_blue.cshtml @@ -0,0 +1,1580 @@ +@{ + ViewBag.Title = "Index"; + Layout = "~/Views/Shared/_Index.cshtml"; +} + + + + + + + + + 表单设计器代码 + + + + + + + + + + + +
      +
      +
      + @*
      +
      + +
      + +
      +
      +
      *@ +
      +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +
      +
      + +
      + + + +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +
      + +
      + +
      +
      +
      +
      + +
      + @*
      *@ + @*
      +
      +
      *@ +
      +
      + @*
      *@ +
      + @**@ + +@* + *@ + + + + + + \ No newline at end of file diff --git a/HT.Cloud.Web/Areas/PenMeiReportManage/Views/PenMeiNetWorkStateNew/Index.cshtml b/HT.Cloud.Web/Areas/PenMeiReportManage/Views/PenMeiNetWorkStateNew/Index.cshtml index 3a9fb82..1089c19 100644 --- a/HT.Cloud.Web/Areas/PenMeiReportManage/Views/PenMeiNetWorkStateNew/Index.cshtml +++ b/HT.Cloud.Web/Areas/PenMeiReportManage/Views/PenMeiNetWorkStateNew/Index.cshtml @@ -691,8 +691,9 @@ // group.add(line13_name); - + var dev0att = devlist.filter(item => item.DeviceName === "dev0")[0]; const image_exchange = new LeaferUI.Image({ + id: "dev0", x: 800, y: 250 + 75, url: '/imagesnet/交换机.png', @@ -705,7 +706,7 @@ y: 250 + 75 + 160 + 10, width: 134, fill: fill_top_name, - text: '交换机', + text: dev0att.DeviceDESCRIPTION, textAlign: 'center', verticalAlign: 'middle', textWrap: 'none', @@ -718,7 +719,7 @@ y: 250 + 75 + 160 + 25, width: 134, fill: fill_top_name, - text: '192.168.100.1', + text: dev0att.DeviceIP, textAlign: 'center', verticalAlign: 'middle', textWrap: 'none', diff --git a/HT.Cloud.Web/Views/Home/Index.cshtml b/HT.Cloud.Web/Views/Home/Index.cshtml index 1655336..90094b4 100644 --- a/HT.Cloud.Web/Views/Home/Index.cshtml +++ b/HT.Cloud.Web/Views/Home/Index.cshtml @@ -20,6 +20,229 @@ + @*style="background: url(/images/bgs.jpg)"*@ diff --git a/HT.Cloud.Web/Views/Shared/_Index.cshtml b/HT.Cloud.Web/Views/Shared/_Index.cshtml index 49a5d11..2fe26f2 100644 --- a/HT.Cloud.Web/Views/Shared/_Index.cshtml +++ b/HT.Cloud.Web/Views/Shared/_Index.cshtml @@ -19,7 +19,10 @@ + + + @RenderBody() diff --git a/HT.Cloud.Web/WaterCloud.Web.xml b/HT.Cloud.Web/WaterCloud.Web.xml index 9109fbd..def84f9 100644 --- a/HT.Cloud.Web/WaterCloud.Web.xml +++ b/HT.Cloud.Web/WaterCloud.Web.xml @@ -28,6 +28,18 @@ 绑定数据仓库的数据库ID + + + 创 建:cdl + 日 期:2023-02-23 11:10 + 描 述:历史趋势控制器类 + + + + + 绑定数据仓库的数据库ID + + 创 建:cdl diff --git a/HT.Cloud.Web/appsettings.json b/HT.Cloud.Web/appsettings.json index 4035e00..545398f 100644 --- a/HT.Cloud.Web/appsettings.json +++ b/HT.Cloud.Web/appsettings.json @@ -13,7 +13,7 @@ "LoginMultiple": false, // 是否允许一个账户在多处登录 "AllowCorsSite": "http://localhost:8058", // 允许的其他站点访问Api "DBProvider": "SqlServer", //SqlServer //Oracle - "DBConnectionString": "Zk48ARnbLq1Lk+lzxvCij6YiQpV5DIw6JRzXXsYlzoJ+bUF4h97SyChJobnKFm1EOA4aBGj+/Aje1MD7G13GOXplGKNnRzOB6qvav/vGq4xLAOc1EyKCHAMDCgWSEpu5uXl7LYv8gGNRQzIjv6UkUBLzX1Jetj7Hf9iYws19sCoRXI/1Vm5bZIVwLQThEctF8imcaVDPhGNcPCH1kr+h5A==", + "DBConnectionString": "Zk48ARnbLq1Lk+lzxvCij1zzENjv04mu23Y8D8hdM3VxApXnvB2iA7xm5JfYWNkbDScUWuGK1+hd9AH5U4eo6l9A0lA/+WhXv9LiWTyuYMFt8OAffhgQu1MWiiwb1GDz8EurwhrLAsGpelKSfZmZGbVTRgW4/RUDv9wtBdQIA11dlm4eCG6zDm9rjJk4f+AM8Pdm1D5aIiWLuRZJXPSkSg==", "DBCommandTimeout": 180, // 数据库超时时间,单位秒 "CacheProvider": "Memory", // 缓存使用方式 Redis/Memory "RedisConnectionString": "127.0.0.1:6379", //docker部署 172.17.0.1 @@ -34,7 +34,7 @@ { "DBNumber": "1", "DBProvider": "SqlServer", //MySql //Oracle - "DBConnectionString": "Zk48ARnbLq1Lk+lzxvCij6YiQpV5DIw6JRzXXsYlzoJ+bUF4h97SyChJobnKFm1EOA4aBGj+/Aje1MD7G13GOXplGKNnRzOB6qvav/vGq4xLAOc1EyKCHAMDCgWSEpu5uXl7LYv8gGNRQzIjv6UkUBLzX1Jetj7Hf9iYws19sCoRXI/1Vm5bZIVwLQThEctF8imcaVDPhGNcPCH1kr+h5A==" + "DBConnectionString": "Zk48ARnbLq1Lk+lzxvCij1zzENjv04mu23Y8D8hdM3VxApXnvB2iA7xm5JfYWNkbDScUWuGK1+hd9AH5U4eo6l9A0lA/+WhXv9LiWTyuYMFt8OAffhgQu1MWiiwb1GDz8EurwhrLAsGpelKSfZmZGbVTRgW4/RUDv9wtBdQIA11dlm4eCG6zDm9rjJk4f+AM8Pdm1D5aIiWLuRZJXPSkSg==" } ], "RabbitMq": { diff --git a/HT.Cloud.Web/wwwroot/css/layuicustom.css b/HT.Cloud.Web/wwwroot/css/layuicustom.css new file mode 100644 index 0000000..4032cce --- /dev/null +++ b/HT.Cloud.Web/wwwroot/css/layuicustom.css @@ -0,0 +1,41 @@ + +.layui-bg-custom-1 { + background-color: #00eaff !important; + color: #fff !important; +} + +.layui-bg-custom-2 { + background-color: #013fa3 !important; + color: #fff !important; +} + +.layui-bg-custom-3 { + background-color: #04216a !important; + color: #fff !important; +} + +.layui-bg-custom-4 { + background-color: #060f23 !important; + color: #fff !important; +} + +.layui-bg-custom-5 { + background-color: #041544 !important; /*#041544*/ + color: #fff !important; +} + +.layui-bg-custom-6 { + background-color: #001756e6 !important; + color: #fff !important; +} + +.layui-bg-custom-7 { + background-color: #001655 !important; + color: #fff !important; +} + +.layui-bg-custom-8 { + background-color: #0c2e57 !important; + color: #fff !important; +} + diff --git a/HT.Cloud.Web/wwwroot/css/layuimini.css b/HT.Cloud.Web/wwwroot/css/layuimini.css index ea7596e..9378779 100644 --- a/HT.Cloud.Web/wwwroot/css/layuimini.css +++ b/HT.Cloud.Web/wwwroot/css/layuimini.css @@ -145,7 +145,7 @@ .layuimini-tab .layui-tab-title { border: none; border: 1px solid whitesmoke; - background-color: white; + background-color:#0083a1; } .layuimini-tab .layui-tab-title li { @@ -876,12 +876,14 @@ .layui-nav-tree .layui-nav-item > a .layui-nav-more { padding: 0px 0; } + .layui-table { width: 100%; margin: 10px 0; background-color: #fff; color: black; } + .layui-tab-control > ul > .layui-nav-item.layui-this { background-color: none; -} \ No newline at end of file +} diff --git a/HT.Cloud.Web/wwwroot/css/watercloud.css b/HT.Cloud.Web/wwwroot/css/watercloud.css index c42ef59..822a6fc 100644 --- a/HT.Cloud.Web/wwwroot/css/watercloud.css +++ b/HT.Cloud.Web/wwwroot/css/watercloud.css @@ -1,5 +1,5 @@ body { - margin: 5px 5px 5px 5px; + margin: 0px 0px 0px 0px; background: #f2f2f2; } .form-group-bottom { diff --git a/HT.Cloud.Web/wwwroot/js/lay-module/layuimini/miniTheme.js b/HT.Cloud.Web/wwwroot/js/lay-module/layuimini/miniTheme.js index e8b04fd..6fa7ad7 100644 --- a/HT.Cloud.Web/wwwroot/js/lay-module/layuimini/miniTheme.js +++ b/HT.Cloud.Web/wwwroot/js/lay-module/layuimini/miniTheme.js @@ -318,6 +318,8 @@ layui.define(["jquery", "layer"], function (exports) { '.layui-header .layui-nav .layui-nav-more {\n' + ' border-top-color: ' + bgcolorData.headerRightNavMore + ' !important;\n' + '}\n' + + '.layui-layout-admin .layui-header .layuimini-tool i {\n' + + ' color: ' + bgcolorData.headerRightToolColor + ';\n' + '\n' + '/*头部右侧更多下拉颜色 headerRightNavMore */\n' + '.layui-header .layui-nav .layui-nav-mored, .layui-header .layui-nav-itemed > a .layui-nav-more {\n' + @@ -331,8 +333,6 @@ layui.define(["jquery", "layer"], function (exports) { '}\n' + '\n' + '/*头部缩放按钮样式 headerRightToolColor */\n' + - '.layui-layout-admin .layui-header .layuimini-tool i {\n' + - ' color: ' + bgcolorData.headerRightToolColor + ';\n' + '}\n' + '\n' + '/*logo背景颜色 headerLogoBg */\n' + diff --git a/HT.Cloud.Web/wwwroot.rar b/HT.Cloud.Web/wwwroot240925.rar similarity index 99% rename from HT.Cloud.Web/wwwroot.rar rename to HT.Cloud.Web/wwwroot240925.rar index ecdef5f1145dbdbf586518bb8ed64028272ee4e2..65aac13f8e984b41b7357c010fda1948c45c4863 100644 GIT binary patch delta 24499 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 HF2=tA(M!sC delta 12571 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�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