gwbvipvip vor 10 Monaten
Ursprung
Commit
546f1987d6
100 geänderte Dateien mit 3295 neuen und 2242 gelöschten Zeilen
  1. +5
    -1
      backend/BPA.MES.Base.Application/BPA.MES.Base.Application.csproj
  2. +56
    -0
      backend/BPA.MES.Base.Application/BPA.MES.Base.Application.xml
  3. +27
    -0
      backend/BPA.MES.Base.Application/Entitys/KepData/AlarmLog.cs
  4. +33
    -0
      backend/BPA.MES.Base.Application/Entitys/KepData/DataVAlarmLimit.cs
  5. +1
    -1
      backend/BPA.MES.Base.Application/Entitys/KepData/ch1_device1.cs
  6. +15
    -0
      backend/BPA.MES.Base.Application/Services/KepServerDataService/Dto/DataVDataDto.cs
  7. +1
    -0
      backend/BPA.MES.Base.Application/Services/KepServerDataService/Services/IKepDataService.cs
  8. +174
    -1
      backend/BPA.MES.Base.Application/Services/KepServerDataService/Services/KepDataService.cs
  9. +1
    -1
      backend/BPA.MES.Base.Application/Services/SystemService/Services/AuthorizeService.cs
  10. +2
    -1
      backend/BPA.MES.Base.Core/KepServerSqlsugar.cs
  11. +1
    -0
      backend/BPA.MES.Base.Web.Core/Startup.cs
  12. +1
    -0
      backend/BPA.MES.Base.Web.Entry/BPA.MES.Base.Web.Entry.csproj.user
  13. +17
    -0
      backend/BPA.MES.Base.Web.Entry/Properties/PublishProfiles/FolderProfile.pubxml
  14. +11
    -0
      backend/BPA.MES.Base.Web.Entry/Properties/PublishProfiles/FolderProfile.pubxml.user
  15. +5
    -1
      backend/BPA.MES.Base.Web.Entry/Properties/launchSettings.json
  16. +1
    -1
      backend/BPA.MES.Base.Web.Entry/appsettings.json
  17. +1
    -1
      frontend/config/defaultSettings.ts
  18. +12
    -2
      frontend/config/proxy.ts
  19. +78
    -74
      frontend/config/routes.ts
  20. +0
    -138
      frontend/dist/328.f17880dd.async.js
  21. +0
    -1
      frontend/dist/350.709f8a16.async.js
  22. +0
    -1
      frontend/dist/442.1787e5f6.async.js
  23. +0
    -571
      frontend/dist/513.c0788bc6.async.js
  24. +0
    -14
      frontend/dist/555.feee6962.async.js
  25. +0
    -8
      frontend/dist/564.bd853797.async.js
  26. +0
    -925
      frontend/dist/630.bef28f50.async.js
  27. +0
    -2
      frontend/dist/811.2cb513d3.async.js
  28. +0
    -1
      frontend/dist/821.906a96e7.async.js
  29. +0
    -82
      frontend/dist/975.e99a8a0c.async.js
  30. +1
    -1
      frontend/dist/index.html
  31. +0
    -1
      frontend/dist/p__agvbasic__index.5cc3371e.async.js
  32. +0
    -1
      frontend/dist/p__agvline__index.a6a92b45.async.js
  33. +0
    -1
      frontend/dist/p__bucket__index.2314baa2.chunk.css
  34. +0
    -1
      frontend/dist/p__bucket__index.913e05b8.async.js
  35. +0
    -1
      frontend/dist/p__craftInfo__pot.42dafe91.async.js
  36. +0
    -1
      frontend/dist/p__craftInfo__pot.b10f2cd8.chunk.css
  37. +0
    -1
      frontend/dist/p__deviceInfo__index.c5f2452e.async.js
  38. +0
    -1
      frontend/dist/p__deviceProductInfo__index.835c0c6c.chunk.css
  39. +0
    -1
      frontend/dist/p__deviceProductInfo__index.e412b800.async.js
  40. +0
    -1
      frontend/dist/p__dict__index.c0a023dc.async.js
  41. +0
    -1
      frontend/dist/p__final__index.34ba99be.async.js
  42. +0
    -2
      frontend/dist/p__kep__index.306fba2b.async.js
  43. +0
    -1
      frontend/dist/p__kep__index.3368f615.chunk.css
  44. +0
    -1
      frontend/dist/p__logs__alarmlog.2aa921c4.async.js
  45. +0
    -1
      frontend/dist/p__logs__programlog.a237de88.async.js
  46. +0
    -1
      frontend/dist/p__logs__runlog.4b288013.async.js
  47. +0
    -1
      frontend/dist/p__logs__userlog.dcb92815.async.js
  48. +0
    -1
      frontend/dist/p__manufacturing__index.1ac7465e.chunk.css
  49. +0
    -10
      frontend/dist/p__manufacturing__index.911073cb.async.js
  50. +0
    -1
      frontend/dist/p__materials__index.cbff19b7.async.js
  51. +0
    -1
      frontend/dist/p__order__index.60a7403b.async.js
  52. +0
    -1
      frontend/dist/p__recipe__index.ce98549a.async.js
  53. +0
    -1
      frontend/dist/p__report__material__index.d4e49d4e.async.js
  54. +0
    -1
      frontend/dist/p__report__product__index.d8e0e9b9.async.js
  55. +0
    -1
      frontend/dist/p__stock__index.e7816fd4.async.js
  56. +0
    -1
      frontend/dist/p__system__account__index.a39cd6cc.async.js
  57. +0
    -1
      frontend/dist/p__system__authTemplate__index.f6e3c8dc.async.js
  58. +0
    -1
      frontend/dist/p__system__module__index.0a77d9f3.async.js
  59. +0
    -0
     
  60. +0
    -1
      frontend/dist/p__system__role__index.c64fd058.async.js
  61. +0
    -1
      frontend/dist/p__system__user__index.695d982e.chunk.css
  62. +0
    -1
      frontend/dist/p__system__user__index.d813edfa.async.js
  63. +0
    -1
      frontend/dist/p__user__login__index.eda71cb5.async.js
  64. +0
    -10
      frontend/dist/p__welcome__index.a5d7786e.async.js
  65. +0
    -1
      frontend/dist/p__workInfo__index.219f217e.async.js
  66. +0
    -1
      frontend/dist/t__plugin-layout__Layout.74b4118c.chunk.css
  67. +0
    -1
      frontend/dist/t__plugin-layout__Layout.9d4f49df.async.js
  68. +0
    -346
      frontend/dist/umi.eb20ece1.js
  69. +48
    -0
      frontend/src/api/kepService.ts
  70. BIN
     
  71. BIN
     
  72. BIN
     
  73. BIN
     
  74. BIN
     
  75. BIN
     
  76. BIN
     
  77. BIN
     
  78. BIN
     
  79. BIN
     
  80. BIN
     
  81. BIN
     
  82. BIN
     
  83. BIN
     
  84. BIN
     
  85. BIN
     
  86. BIN
     
  87. BIN
     
  88. BIN
     
  89. +110
    -0
      frontend/src/components/KepData/index copy 2.less
  90. +791
    -0
      frontend/src/components/KepData/index copy 2.tsx
  91. +93
    -0
      frontend/src/components/KepData/index copy.less
  92. +463
    -0
      frontend/src/components/KepData/index copy.tsx
  93. +110
    -0
      frontend/src/components/KepData/index.less
  94. +769
    -0
      frontend/src/components/KepData/index.tsx
  95. BIN
     
  96. BIN
     
  97. +233
    -0
      frontend/src/pages/agvbasic copy/index.tsx
  98. +208
    -0
      frontend/src/pages/kep/alarmLimit/index.tsx
  99. +27
    -0
      frontend/src/pages/kep/datav/index.tsx
  100. +0
    -13
      frontend/src/pages/kep/index.tsx

+ 5
- 1
backend/BPA.MES.Base.Application/BPA.MES.Base.Application.csproj Datei anzeigen

@@ -26,11 +26,15 @@

<ItemGroup>
<Folder Include="Services\DeviceService\" />
<Folder Include="Services\KepServerDataService\Dto\" />
<Folder Include="Services\MaterialService\" />
<Folder Include="Services\RecipesService\" />
<Folder Include="Services\CustomCodeService\" />
<Folder Include="Services\SystemService\" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="FreeRedis" Version="1.2.5" />
<PackageReference Include="ServiceStack.Redis" Version="6.11.0" />
</ItemGroup>

</Project>

+ 56
- 0
backend/BPA.MES.Base.Application/BPA.MES.Base.Application.xml Datei anzeigen

@@ -1080,6 +1080,36 @@
负责人
</summary>
</member>
<member name="P:BPA.MES.Base.Application.Entitys.KepData.AlarmLog.Value">
<summary>
当前值
</summary>
</member>
<member name="P:BPA.MES.Base.Application.Entitys.KepData.AlarmLog.ValueStr">
<summary>
报警信息
</summary>
</member>
<member name="T:BPA.MES.Base.Application.Entitys.KepData.DataVAlarmLimit">
<summary>
大屏报警限制
</summary>
</member>
<member name="P:BPA.MES.Base.Application.Entitys.KepData.DataVAlarmLimit.Name">
<summary>
限制名称
</summary>
</member>
<member name="P:BPA.MES.Base.Application.Entitys.KepData.DataVAlarmLimit.MinLimitValue">
<summary>
最小限制值
</summary>
</member>
<member name="P:BPA.MES.Base.Application.Entitys.KepData.DataVAlarmLimit.MaxLimitValue">
<summary>
最大限制值
</summary>
</member>
<member name="T:BPA.MES.Base.Application.Entitys.AlarmLogEntity">
<summary>
名 称 :报警日志
@@ -4588,6 +4618,32 @@
<param name="Id"></param>
<returns></returns>
</member>
<member name="M:BPA.MES.Base.Application.Services.KepServerDataService.Services.KepDataService.AddDataVAlarmLimit(BPA.MES.Base.Application.Entitys.KepData.DataVAlarmLimit)">
<summary>
添加报警限制
</summary>
<param name="inputDto"></param>
<returns></returns>
</member>
<member name="M:BPA.MES.Base.Application.Services.KepServerDataService.Services.KepDataService.UpdateDataVAlarmLimit(BPA.MES.Base.Application.Entitys.KepData.DataVAlarmLimit)">
<summary>
修改报警限制
</summary>
<param name="inputDto"></param>
<returns></returns>
</member>
<member name="M:BPA.MES.Base.Application.Services.KepServerDataService.Services.KepDataService.GetDataVAlarmLimitList(BPA.MES.Base.Core.RequestPage)">
<summary>
获取报警限制
</summary>
<returns></returns>
</member>
<member name="M:BPA.MES.Base.Application.Services.KepServerDataService.Services.KepDataService.DelDataVAlarmLimitList(System.String)">
<summary>
删除报警限制
</summary>
<returns></returns>
</member>
<member name="T:BPA.MES.Base.Application.Services.AlarmLogDto">
<summary>
名 称 :


+ 27
- 0
backend/BPA.MES.Base.Application/Entitys/KepData/AlarmLog.cs Datei anzeigen

@@ -0,0 +1,27 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BPA.MES.Base.Application.Entitys.KepData
{
[SugarTable("DataVAlarmLog")]
public class AlarmLog: DEntityBase
{
public string Name { get; set; }
/// <summary>
/// 当前值
/// </summary>
public string Value { get; set; }

/// <summary>
/// 报警信息
/// </summary>
public string ValueStr{ get; set; }


public DateTime CreateTime { get; set; }
}
}

+ 33
- 0
backend/BPA.MES.Base.Application/Entitys/KepData/DataVAlarmLimit.cs Datei anzeigen

@@ -0,0 +1,33 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BPA.MES.Base.Application.Entitys.KepData
{
/// <summary>
/// 大屏报警限制
/// </summary>
[SugarTable("DataVAlarmLimit")]
public class DataVAlarmLimit: DEntityBase
{
/// <summary>
/// 限制名称
/// </summary>
public string Name { get; set; }

public string Code { get; set; }

/// <summary>
/// 最小限制值
/// </summary>
public decimal MinLimitValue { get; set; }

/// <summary>
/// 最大限制值
/// </summary>
public decimal MaxLimitValue { get; set; }

}
}

+ 1
- 1
backend/BPA.MES.Base.Application/Entitys/KepData/ch1_device1.cs Datei anzeigen

@@ -6,7 +6,7 @@ using System.Threading.Tasks;

namespace BPA.MES.Base.Application.Entitys.KepData
{
[SugarTable("ch1_device1")]
// [SugarTable("ch1_device1")]
public class ch1_device1
{
[SugarColumn(IsPrimaryKey = true)]


+ 15
- 0
backend/BPA.MES.Base.Application/Services/KepServerDataService/Dto/DataVDataDto.cs Datei anzeigen

@@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BPA.MES.Base.Application.Services.KepServerDataService.Dto
{
public class DataVDataDto
{
public string Key { get; set; }

public string Value { get; set; }
}
}

+ 1
- 0
backend/BPA.MES.Base.Application/Services/KepServerDataService/Services/IKepDataService.cs Datei anzeigen

@@ -10,5 +10,6 @@ namespace BPA.MES.Base.Application.Services.KepServerDataService.Services
public interface IKepDataService
{
Task<Dictionary<string, object>> GetList();
Task<string> GetA1();
}
}

+ 174
- 1
backend/BPA.MES.Base.Application/Services/KepServerDataService/Services/KepDataService.cs Datei anzeigen

@@ -1,16 +1,24 @@
using BPA.MES.Base.Application.Entitys.KepData;
using FreeRedis;
using Furion.ClayObject.Extensions;
using Furion.RemoteRequest;
using Newtonsoft.Json;
//using ServiceStack.Redis;
using SqlSugar;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using Yitter.IdGenerator;
using static ServiceStack.Diagnostics.Events;

namespace BPA.MES.Base.Application.Services.KepServerDataService.Services
{
[AllowAnonymous]
[ApiDescriptionSettings("大屏数据", Order = 4, Name = "KepData", Tag = "大屏数据", KeepName = true, SplitCamelCase = true, KeepVerb = true)]
public class KepDataService: KepServerSqlsugar, IKepDataService,ITransient, IDynamicApiController
{
@@ -19,7 +27,6 @@ namespace BPA.MES.Base.Application.Services.KepServerDataService.Services

}
[HttpPost]
[AllowAnonymous]
public async Task<Dictionary<string, object>> GetList()
{
var data =await KepDb.Queryable<ch1_device1>().Where(x=> SqlFunc.DateIsSame(x._TIMESTAMP, DateTime.Now)).Take(1000).ToListAsync();
@@ -36,5 +43,171 @@ namespace BPA.MES.Base.Application.Services.KepServerDataService.Services
var JsonString = JsonConvert.SerializeObject(dic);
return dic;
}

public async Task<string> GetA1()
{
//await using (RedisClient client = new RedisClient("10.2.1.21", 6379, "1178661552398188544", 0))
//{
// if (client == null) return string.Empty;
// string configData = client.Get<string>("ns=2;s=CH1.Device1.A1");
// return configData;

//}
return "";
}


[HttpGet]
[AllowAnonymous]
public Task<bool> CodeFirst()
{
var types = Assembly.Load("BPA.MES.Base.Application").GetTypes()
.Where(x => x.GetCustomAttribute<SugarTable>() != null
&& x.Namespace == "BPA.MES.Base.Application.Entitys.KepData").ToArray();
KepDb.CodeFirst.InitTables(types);
return Task.FromResult(true);
}


/// <summary>
/// 添加报警限制
/// </summary>
/// <param name="inputDto"></param>
/// <returns></returns>
[HttpPost]
[AllowAnonymous]
public async Task<bool> AddDataVAlarmLimit(DataVAlarmLimit inputDto)
{
inputDto.Id = YitIdHelper.NextId().ToString();
var res = await KepDb.Insertable<DataVAlarmLimit>(inputDto).ExecuteCommandAsync();
return res > 0;
}

/// <summary>
/// 修改报警限制
/// </summary>
/// <param name="inputDto"></param>
/// <returns></returns>
[HttpPost]
[AllowAnonymous]
public async Task<bool> UpdateDataVAlarmLimit(DataVAlarmLimit inputDto)
{
var res = await KepDb.Updateable<DataVAlarmLimit>(inputDto).ExecuteCommandAsync();
return res > 0;
}

/// <summary>
/// 获取报警限制
/// </summary>
/// <returns></returns>
[HttpPost]
[AllowAnonymous]
public async Task<SqlSugarPagedList<DataVAlarmLimit>> GetDataVAlarmLimitList(RequestPage input)
{
var entity = await KepDb.Queryable<DataVAlarmLimit>()
.ToPagedListAsync(input.PageIndex, input.PageSize);
SqlSugarPagedList<DataVAlarmLimit> output = entity.Adapt<SqlSugarPagedList<DataVAlarmLimit>>();
return output;
}

/// <summary>
/// 删除报警限制
/// </summary>
/// <returns></returns>
[HttpPost]
[AllowAnonymous]
public async Task<bool> DelDataVAlarmLimitList(string id)
{
var res = await KepDb.Deleteable<DataVAlarmLimit>().Where(x=>x.Id==id).ExecuteCommandAsync();
return res>0;
}

[HttpGet]
[AllowAnonymous]
public Dictionary<string, string> GetDataVList()
{
// var client = new ServiceStack.Redis.RedisClient("10.2.1.21", 6379, "1178661552398188544");

//var client = new RedisClient("10.2.1.21:6379,password=1178661552398188544,defaultDatabase=13");
try
{
var client = new FreeRedis.RedisClient("10.2.1.21:6379,password=1178661552398188544,defaultDatabase=0");
var res = new Dictionary<string, string>();

for (int i = 1; i <= 28; i++)
{
var str = "ns=2;WFZ.Device1.A" + i;
var value = client.Get<string>(str);
if (!string.IsNullOrEmpty(value)&&i!=4)
{
if (value.Length>=4)
{
value = value.Substring(0, 2);
}
}
res.Add("Device1.A" + i, value);
}
for (int i = 1; i <=31; i++)
{
var str = "ns=2;WFZ.Device2.A" + i;
var value = client.Get<string>(str);
if (!string.IsNullOrEmpty(value) )
{
if (value.Length >= 4)
{
value = value.Substring(0, 2);
}
}
res.Add("Device2.A" + i, value);
}
for (int i = 1; i <=7; i++)
{
var str = "ns=2;WFZ.Device3.A" + i;
var value = client.Get<string>(str);
res.Add("Device3.A" + i, value);
}
for (int i = 1; i <= 1; i++)
{
var str = "ns=2;WFZ.Device4.A" + i;
var value = client.Get<string>(str);
res.Add("Device4.A" + i, value);
}
return res;
}
catch (Exception e)
{
var res = new Dictionary<string, string>();
return res;

}
}

[HttpGet]
[AllowAnonymous]
public async Task<List<List<string>>> GetLogsAsync()
{
var result = new List<List<string>>();
var entity = await KepDb.Queryable<AlarmLog>().Where(x=>x.CreateTime.Date==DateTime.Now.Date).ToListAsync();

foreach (var item in entity)
{
var data = new List<string>();
var thisData = new object();

thisData = item.GetType().GetProperty("Name").GetValue(item, null);
data.Add(thisData == null ? "" : thisData.ToString());
thisData = item.GetType().GetProperty("ValueStr").GetValue(item, null);
data.Add(thisData == null ? "" : thisData.ToString());
thisData = item.GetType().GetProperty("CreateTime").GetValue(item, null);
data.Add(thisData == null ? "" : thisData.ToString());

result.Add(data);
}
return result;
}
}
}

+ 1
- 1
backend/BPA.MES.Base.Application/Services/SystemService/Services/AuthorizeService.cs Datei anzeigen

@@ -55,7 +55,7 @@
_httpContextAccessor.HttpContext.SigninToSwagger(accessToken);
// 生成刷新Token令牌
var refreshToken =
JWTEncryption.GenerateRefreshToken(accessToken, 25);
JWTEncryption.GenerateRefreshToken(accessToken, int.MaxValue);

_httpContextAccessor.HttpContext.Response.Headers["access-token"] = accessToken;
// 设置刷新Token令牌


+ 2
- 1
backend/BPA.MES.Base.Core/KepServerSqlsugar.cs Datei anzeigen

@@ -22,13 +22,14 @@ namespace BPA.MES.Base.Core
//如果是跨服务器分库,也需要动态配置的,因为库的IP会变
//参考业务库用法
string configId = "configId";
var dbs = App.GetConfig<List<ConnectionConfig>>("ConnectionConfigs")[0];
if (!Db.IsAnyConnection(configId))
{ //用非默认ConfigId进行测试
//添加业务库只在当前上下文有效(原理:SqlSugarScope模式入门文档去看)
Db.AddConnection(new ConnectionConfig()
{
ConfigId = configId,
ConnectionString = "server=10.2.1.254;Database=kepserver_data;Uid=root;Pwd=BapAdmin123456.;Allow Zero Datetime=True;Convert Zero Datetime=True;",
ConnectionString = dbs.ConnectionString,
DbType = DbType.MySql,
IsAutoCloseConnection = true,
InitKeyType = InitKeyType.Attribute


+ 1
- 0
backend/BPA.MES.Base.Web.Core/Startup.cs Datei anzeigen

@@ -87,6 +87,7 @@ public class Startup : AppStartup

services.AddControllers()
.AddInjectWithUnifyResult();

}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)


+ 1
- 0
backend/BPA.MES.Base.Web.Entry/BPA.MES.Base.Web.Entry.csproj.user Datei anzeigen

@@ -5,5 +5,6 @@
</PropertyGroup>
<PropertyGroup>
<ActiveDebugProfile>BPA.MES.Base.Web.Entry</ActiveDebugProfile>
<NameOfLastUsedPublishProfile>D:\Work\WFZ.MES\backend\BPA.MES.Base.Web.Entry\Properties\PublishProfiles\FolderProfile.pubxml</NameOfLastUsedPublishProfile>
</PropertyGroup>
</Project>

+ 17
- 0
backend/BPA.MES.Base.Web.Entry/Properties/PublishProfiles/FolderProfile.pubxml Datei anzeigen

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
https://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project>
<PropertyGroup>
<DeleteExistingFiles>false</DeleteExistingFiles>
<ExcludeApp_Data>false</ExcludeApp_Data>
<LaunchSiteAfterPublish>true</LaunchSiteAfterPublish>
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<PublishProvider>FileSystem</PublishProvider>
<PublishUrl>bin\Release\net6.0\publish\</PublishUrl>
<WebPublishMethod>FileSystem</WebPublishMethod>
<_TargetId>Folder</_TargetId>
</PropertyGroup>
</Project>

+ 11
- 0
backend/BPA.MES.Base.Web.Entry/Properties/PublishProfiles/FolderProfile.pubxml.user Datei anzeigen

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
https://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project>
<PropertyGroup>
<_PublishTargetUrl>D:\Work\WFZ.MES\backend\BPA.MES.Base.Web.Entry\bin\Release\net6.0\publish\</_PublishTargetUrl>
<History>True|2023-11-21T18:21:39.5146403Z;False|2023-11-22T02:20:54.9725149+08:00;True|2023-11-22T02:03:13.7452019+08:00;</History>
<LastFailureDetails />
</PropertyGroup>
</Project>

+ 5
- 1
backend/BPA.MES.Base.Web.Entry/Properties/launchSettings.json Datei anzeigen

@@ -12,6 +12,10 @@
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"WebApplication1": {
"...": null,
"applicationUrl": "http://localhost:5001"
},
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
@@ -22,7 +26,7 @@
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "http://localhost:5002",
"applicationUrl": "http://localhost:5001",
"dotnetRunMessages": true
},
"Docker": {


+ 1
- 1
backend/BPA.MES.Base.Web.Entry/appsettings.json Datei anzeigen

@@ -10,7 +10,7 @@
"AllowedHosts": "*",
"ConnectionConfigs": [
{
"ConnectionString": "server=10.2.1.254;Port=3306;Database=bpa_pztj_mes;Uid=root;Pwd=BapAdmin123456.;",
"ConnectionString": "server=10.2.1.254;Port=3306;Database=bpa_wfz;Uid=root;Pwd=BapAdmin123456.;",
"DbType": "MySql",
"IsAutoCloseConnection": true
}


+ 1
- 1
frontend/config/defaultSettings.ts Datei anzeigen

@@ -15,7 +15,7 @@ const Settings: LayoutSettings & {
fixedHeader: false,
fixSiderbar: true,
colorWeak: false,
title: "胖子天骄中控管理系统",
title: "中控管理系统",
menu: {
locale: false, // 禁用多语言功能
},


+ 12
- 2
frontend/config/proxy.ts Datei anzeigen

@@ -6,11 +6,21 @@
export default {
dev: {
'/api/': {
target: 'http://localhost:5002',
target: 'http://localhost:5001',
pathRewrite: {
'/api': '/api'
},
changeOrigin: true,
}
}
},
pre: {
'/api/': {
target: 'http://localhost:5000',
changeOrigin: true,
secure: false,
pathRewrite: {
'/api': ''
},
},
},
};

+ 78
- 74
frontend/config/routes.ts Datei anzeigen

@@ -1,87 +1,91 @@
export default [
{ path: '/user', layout: false, routes: [{ path: '/user/login', component: './user/login' }] },
{ path: '/', icon: 'SmileOutlined', component: './welcome', name: '数据看板' },
{
icon: 'SettingOutlined',
path: '/system',
name: '系统管理',
routes: [
// { path: '/system/account', name: '账号管理', component: './system/account' },
{ path: '/system/user', name: '人员管理', component: './system/user' },
{ path: '/system/role', name: '角色管理', component: './system/role' },
{ path: '/system/module', name: '模块管理', component: './system/module' },
{ path: '/system/authTemplate', name: '权限管理', component: './system/authTemplate' },
],
},
{
path: '/wmx', icon: 'SettingOutlined', name: '设备产品管理',
routes: [{
name: '产品管理',
path: '/wmx/deviceProduct',
component: './deviceProductInfo/index',
},
// { path: '/', icon: 'SmileOutlined', component: './welcome', name: '数据看板' },
// {
// icon: 'SettingOutlined',
// path: '/system',
// name: '系统管理',
// routes: [
// // { path: '/system/account', name: '账号管理', component: './system/account' },
// { path: '/system/user', name: '人员管理', component: './system/user' },
// { path: '/system/role', name: '角色管理', component: './system/role' },
// { path: '/system/module', name: '模块管理', component: './system/module' },
// { path: '/system/authTemplate', name: '权限管理', component: './system/authTemplate' },
// ],
// },
// {
// path: '/wmx', icon: 'SettingOutlined', name: '设备产品管理',
// routes: [{
// name: '产品管理',
// path: '/wmx/deviceProduct',
// component: './deviceProductInfo/index',
// },
]
},
// ]
// },
{
path: '/kep', icon: 'SettingOutlined', name: '大屏数据',
routes: [{
routes: [ {
name: '数据看板',
path: '/kep',
component: './kep',
path: '/kep/datav',
component: './kep/datav',
},
]
},
{
path: '/base', icon: 'SettingOutlined', name: '基础数据管理',
routes: [{ path: '/base/deviceinfo', name: '设备管理', component: './deviceInfo/index' },
{ path: '/base/stock', name: '料仓管理', component: './stock/index' },
{ path: '/base/materials', name: '原料管理', component: './materials/index' },
{ path: '/base/bucket', name: '桶管理', component: './bucket/index' },
{ path: '/base/final', name: '成品管理', component: './final/index' },
{ path: '/base/dict',name:'数据字典',component:'./dict/index'}
{
name: '报警限制',
path: '/kep/alarmLimit',
component: './kep/alarmLimit',
}
]
},
// {
// path: '/base', icon: 'SettingOutlined', name: '基础数据管理',
// routes: [{ path: '/base/deviceinfo', name: '设备管理', component: './deviceInfo/index' },
// { path: '/base/stock', name: '料仓管理', component: './stock/index' },
// { path: '/base/materials', name: '原料管理', component: './materials/index' },
// { path: '/base/bucket', name: '桶管理', component: './bucket/index' },
// { path: '/base/final', name: '成品管理', component: './final/index' },
// { path: '/base/dict',name:'数据字典',component:'./dict/index'}
// ]
// },
{
path: '/line', icon: 'SettingOutlined', name: '产线管理',
routes: [
{ path: '/line/manufacturing', name: '产线设备管理', component: './manufacturing/index' },
]
},
{
path: '/recipeCraft', icon: 'SettingOutlined', name: '配方工艺管理',
routes: [
{ path: '/recipeCraft/recipe', name: '配方管理', component: './recipe/index' },
{ path: '/recipeCraft/pot', name: '炒锅工艺', component: './craftInfo/pot' }
]
},
{ path: '/work', icon: 'SettingOutlined', name: '工单管理', component: './workInfo/index' },
{
path: '/data', icon: 'SettingOutlined', name: '数据服务',
routes: [
{ path: '/data/userlog', name: '操作日志', component: './logs/userlog' },
{ path: '/data/runlog', name: '运行日志', component: './logs/runlog' },
{ path: '/data/alarmlog', name: '报警日志', component: './logs/alarmlog' },
{ path: '/data/programlog', name: '系统日志', component: './logs/programlog' }
]
},
{
path:'/agv',icon:'SettingOutlined',name:'agv管理',
routes:[
{path:'/agv/agvbasic',name:'agv基础数据',component:'./agvbasic/index'},
{path:'/agv/agvline',name:'agv线路管理',component:'./agvline/index'}
]
},
{ path: '/order', icon: 'SettingOutlined', name: '订单管理', component: './order/index' },
{
path: '/report', icon: 'SettingOutlined', name: '统计报表',
routes: [
{ path: '/report/product', name: '成品统计', component: './report/product' },
{ path: '/report/material', name: '原料统计', component: './report/material' },
]
},
// {
// path: '/line', icon: 'SettingOutlined', name: '产线管理',
// routes: [
// { path: '/line/manufacturing', name: '产线设备管理', component: './manufacturing/index' },
// ]
// },
// {
// path: '/recipeCraft', icon: 'SettingOutlined', name: '配方工艺管理',
// routes: [
// { path: '/recipeCraft/recipe', name: '配方管理', component: './recipe/index' },
// { path: '/recipeCraft/pot', name: '炒锅工艺', component: './craftInfo/pot' }
// ]
// },
// { path: '/work', icon: 'SettingOutlined', name: '工单管理', component: './workInfo/index' },
// {
// path: '/data', icon: 'SettingOutlined', name: '数据服务',
// routes: [
// { path: '/data/userlog', name: '操作日志', component: './logs/userlog' },
// { path: '/data/runlog', name: '运行日志', component: './logs/runlog' },
// { path: '/data/alarmlog', name: '报警日志', component: './logs/alarmlog' },
// { path: '/data/programlog', name: '系统日志', component: './logs/programlog' }
// ]
// },
// {
// path:'/agv',icon:'SettingOutlined',name:'agv管理',
// routes:[
// {path:'/agv/agvbasic',name:'agv基础数据',component:'./agvbasic/index'},
// {path:'/agv/agvline',name:'agv线路管理',component:'./agvline/index'}
// ]
// },
// { path: '/order', icon: 'SettingOutlined', name: '订单管理', component: './order/index' },
// {
// path: '/report', icon: 'SettingOutlined', name: '统计报表',
// routes: [
// { path: '/report/product', name: '成品统计', component: './report/product' },
// { path: '/report/material', name: '原料统计', component: './report/material' },
// ]
// },
{ path: '*', layout: false, component: './404' },
];

+ 0
- 138
frontend/dist/328.f17880dd.async.js
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 0
- 1
frontend/dist/350.709f8a16.async.js
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 0
- 1
frontend/dist/442.1787e5f6.async.js
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 0
- 571
frontend/dist/513.c0788bc6.async.js
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 0
- 14
frontend/dist/555.feee6962.async.js
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 0
- 8
frontend/dist/564.bd853797.async.js
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 0
- 925
frontend/dist/630.bef28f50.async.js
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 0
- 2
frontend/dist/811.2cb513d3.async.js
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 0
- 1
frontend/dist/821.906a96e7.async.js
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 0
- 82
frontend/dist/975.e99a8a0c.async.js
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 1
- 1
frontend/dist/index.html Datei anzeigen

@@ -6,6 +6,6 @@
</head>
<body>
<div id="root"></div>
<script src="/umi.eb20ece1.js"></script>
<script src="/umi.21356be0.js"></script>

</body></html>

+ 0
- 1
frontend/dist/p__agvbasic__index.5cc3371e.async.js
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 0
- 1
frontend/dist/p__agvline__index.a6a92b45.async.js
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 0
- 1
frontend/dist/p__bucket__index.2314baa2.chunk.css Datei anzeigen

@@ -1 +0,0 @@
.qrcodebox{display:flex;flex-direction:column;text-align:center;align-items:center}.btn1{display:block}

+ 0
- 1
frontend/dist/p__bucket__index.913e05b8.async.js
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 0
- 1
frontend/dist/p__craftInfo__pot.42dafe91.async.js
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 0
- 1
frontend/dist/p__craftInfo__pot.b10f2cd8.chunk.css Datei anzeigen

@@ -1 +0,0 @@
.box .rowBgColor{background-color:#cfd0d1}.box .ant-table-tbody>tr.ant-table-row:hover>td{background:none!important}

+ 0
- 1
frontend/dist/p__deviceInfo__index.c5f2452e.async.js
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 0
- 1
frontend/dist/p__deviceProductInfo__index.835c0c6c.chunk.css Datei anzeigen

@@ -1 +0,0 @@
.sss{color:red}

+ 0
- 1
frontend/dist/p__deviceProductInfo__index.e412b800.async.js
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 0
- 1
frontend/dist/p__dict__index.c0a023dc.async.js
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 0
- 1
frontend/dist/p__final__index.34ba99be.async.js
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 0
- 2
frontend/dist/p__kep__index.306fba2b.async.js
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 0
- 1
frontend/dist/p__kep__index.3368f615.chunk.css
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 0
- 1
frontend/dist/p__logs__alarmlog.2aa921c4.async.js Datei anzeigen

@@ -1 +0,0 @@
"use strict";(self.webpackChunkant_design_pro=self.webpackChunkant_design_pro||[]).push([[522],{90503:function(A,s,d){d.d(s,{DH:function(){return c},Xk:function(){return p},n5:function(){return P},xu:function(){return g}});var f=d(97857),r=d.n(f),t=d(12578),p={Add:function(e){return(0,t.request)("/api/alarmlog/add",{method:"POST",data:r()({},e)})},Del:function(e){return(0,t.request)("/api/alarmlog/del",{method:"POST",data:r()({},e)})},Update:function(e){return(0,t.request)("/api/alarmlog/update",{method:"POST",data:r()({},e)})},Detail:function(e){return(0,t.request)("/api/alarmlog/detail?id=".concat(e),{method:"GET"})},List:function(e){return(0,t.request)("/api/alarmlog/list",{method:"POST",data:r()({},e)})},PagedList:function(e){return(0,t.request)("/api/alarmlog/pagedlist",{method:"POST",data:r()({},e)})}},c={Add:function(e){return(0,t.request)("/api/programlog/add",{method:"POST",data:r()({},e)})},Del:function(e){return(0,t.request)("/api/programlog/del",{method:"POST",data:r()({},e)})},Update:function(e){return(0,t.request)("/api/programlog/update",{method:"POST",data:r()({},e)})},Detail:function(e){return(0,t.request)("/api/programlog/detail?id=".concat(e),{method:"GET"})},List:function(e){return(0,t.request)("/api/programlog/list",{method:"POST",data:r()({},e)})},PagedList:function(e){return(0,t.request)("/api/programlog/pagedlist",{method:"POST",data:r()({},e)})}},P={Add:function(e){return(0,t.request)("/api/userlog/add",{method:"POST",data:r()({},e)})},Del:function(e){return(0,t.request)("/api/userlog/del",{method:"POST",data:r()({},e)})},Update:function(e){return(0,t.request)("/api/userlog/update",{method:"POST",data:r()({},e)})},Detail:function(e){return(0,t.request)("/api/userlog/detail?id=".concat(e),{method:"GET"})},List:function(e){return(0,t.request)("/api/userlog/list",{method:"POST",data:r()({},e)})},PagedList:function(e){return(0,t.request)("/api/userlog/pagedlist",{method:"POST",data:r()({},e)})}},g={Add:function(e){return(0,t.request)("/api/runlog/add",{method:"POST",data:r()({},e)})},Del:function(e){return(0,t.request)("/api/runlog/del",{method:"POST",data:r()({},e)})},Update:function(e){return(0,t.request)("/api/runlog/update",{method:"POST",data:r()({},e)})},Detail:function(e){return(0,t.request)("/api/runlog/detail?id=".concat(e),{method:"GET"})},List:function(e){return(0,t.request)("/api/runlog/list",{method:"POST",data:r()({},e)})},PagedList:function(e){return(0,t.request)("/api/runlog/pagedlist",{method:"POST",data:r()({},e)})}}},48350:function(A,s,d){d.r(s);var f=d(15009),r=d.n(f),t=d(99289),p=d.n(t),c=d(5574),P=d.n(c),g=d(67286),a=d(15513),e=d(71577),i=d(45360),E=d(67294),T=d(90503),_=d(85893);s.default=function(){var b=(0,E.useState)("table"),M=P()(b,2),D=M[0],O=M[1],h=(0,E.useRef)(),S=(0,E.useRef)(),L=function(){var n,o;(n=h.current)===null||n===void 0||n.resetFields(),(o=S.current)===null||o===void 0||o.reload()},R=[{title:"\u4E3B\u952E",dataIndex:"id",hideInForm:!0,search:!1},{title:"\u8BBE\u5907\u540D\u79F0",dataIndex:"deviceName",ellipsis:!0},{title:"\u62A5\u8B66\u7B49\u7EA7",dataIndex:"grade",ellipsis:!0},{title:"\u62A5\u8B66\u503C",dataIndex:"value",search:!1},{title:"\u62A5\u8B66\u4FE1\u606F",dataIndex:"msgInfo",search:!1}];return(0,_.jsx)(_.Fragment,{children:(0,_.jsxs)(g.Z,{children:[D==="form"?(0,_.jsx)(e.ZP,{type:"link",onClick:function(){var n;(n=h.current)===null||n===void 0||n.resetFields(),O("table")},children:"\u2B05\u8FD4\u56DE"}):"",(0,_.jsx)(a.Z,{columns:R,type:D,formRef:h,actionRef:S,onSubmit:function(n){console.log(n),D==="form"&&(n.id?T.Xk.Update(n).then(function(o){o.statusCode===200?(i.ZP.info("\u66F4\u65B0\u6210\u529F!"),O("table"),L()):i.ZP.error(o.errors)}):T.Xk.Add(n).then(function(o){o.statusCode===200?(i.ZP.info("\u65B0\u589E\u6210\u529F!"),O("table"),L()):i.ZP.error(o.errors)}))},request:p()(r()().mark(function l(){var n,o,m,v=arguments;return r()().wrap(function(u){for(;;)switch(u.prev=u.next){case 0:return n=v.length>0&&v[0]!==void 0?v[0]:{},o={pageIndex:n.current||1,pageSize:n.pageSize||10,msgInfo:n.msgInfo,value:n.value,grade:n.grade,deviceName:n.deviceName},u.next=4,T.Xk.PagedList(o);case 4:if(m=u.sent,m.statusCode!==200){u.next=9;break}return u.abrupt("return",{data:m.data.items,success:!0,total:m.data.total});case 9:return u.abrupt("return",{data:[],success:!1,total:0});case 10:case"end":return u.stop()}},l)})),pagination:{pageSize:5},rowKey:"id",dateFormatter:"string",headerTitle:"\u5217\u8868",toolBarRender:!1})]})})}}}]);

+ 0
- 1
frontend/dist/p__logs__programlog.a237de88.async.js Datei anzeigen

@@ -1 +0,0 @@
"use strict";(self.webpackChunkant_design_pro=self.webpackChunkant_design_pro||[]).push([[309],{90503:function(A,s,n){n.d(s,{DH:function(){return P},Xk:function(){return p},n5:function(){return g},xu:function(){return c}});var f=n(97857),r=n.n(f),t=n(12578),p={Add:function(e){return(0,t.request)("/api/alarmlog/add",{method:"POST",data:r()({},e)})},Del:function(e){return(0,t.request)("/api/alarmlog/del",{method:"POST",data:r()({},e)})},Update:function(e){return(0,t.request)("/api/alarmlog/update",{method:"POST",data:r()({},e)})},Detail:function(e){return(0,t.request)("/api/alarmlog/detail?id=".concat(e),{method:"GET"})},List:function(e){return(0,t.request)("/api/alarmlog/list",{method:"POST",data:r()({},e)})},PagedList:function(e){return(0,t.request)("/api/alarmlog/pagedlist",{method:"POST",data:r()({},e)})}},P={Add:function(e){return(0,t.request)("/api/programlog/add",{method:"POST",data:r()({},e)})},Del:function(e){return(0,t.request)("/api/programlog/del",{method:"POST",data:r()({},e)})},Update:function(e){return(0,t.request)("/api/programlog/update",{method:"POST",data:r()({},e)})},Detail:function(e){return(0,t.request)("/api/programlog/detail?id=".concat(e),{method:"GET"})},List:function(e){return(0,t.request)("/api/programlog/list",{method:"POST",data:r()({},e)})},PagedList:function(e){return(0,t.request)("/api/programlog/pagedlist",{method:"POST",data:r()({},e)})}},g={Add:function(e){return(0,t.request)("/api/userlog/add",{method:"POST",data:r()({},e)})},Del:function(e){return(0,t.request)("/api/userlog/del",{method:"POST",data:r()({},e)})},Update:function(e){return(0,t.request)("/api/userlog/update",{method:"POST",data:r()({},e)})},Detail:function(e){return(0,t.request)("/api/userlog/detail?id=".concat(e),{method:"GET"})},List:function(e){return(0,t.request)("/api/userlog/list",{method:"POST",data:r()({},e)})},PagedList:function(e){return(0,t.request)("/api/userlog/pagedlist",{method:"POST",data:r()({},e)})}},c={Add:function(e){return(0,t.request)("/api/runlog/add",{method:"POST",data:r()({},e)})},Del:function(e){return(0,t.request)("/api/runlog/del",{method:"POST",data:r()({},e)})},Update:function(e){return(0,t.request)("/api/runlog/update",{method:"POST",data:r()({},e)})},Detail:function(e){return(0,t.request)("/api/runlog/detail?id=".concat(e),{method:"GET"})},List:function(e){return(0,t.request)("/api/runlog/list",{method:"POST",data:r()({},e)})},PagedList:function(e){return(0,t.request)("/api/runlog/pagedlist",{method:"POST",data:r()({},e)})}}},95690:function(A,s,n){n.r(s);var f=n(15009),r=n.n(f),t=n(99289),p=n.n(t),P=n(5574),g=n.n(P),c=n(67286),a=n(15513),e=n(71577),i=n(45360),E=n(67294),T=n(90503),_=n(85893);s.default=function(){var b=(0,E.useState)("table"),S=g()(b,2),D=S[0],O=S[1],h=(0,E.useRef)(),v=(0,E.useRef)(),L=function(){var o,d;(o=h.current)===null||o===void 0||o.resetFields(),(d=v.current)===null||d===void 0||d.reload()},R=[{title:"\u4E3B\u952E",dataIndex:"id",search:!1},{title:"\u65E5\u5FD7\u7C7B\u522B",dataIndex:"logType"},{title:"\u65E5\u5FD7\u6D88\u606F",dataIndex:"msgInfo"}];return(0,_.jsx)(_.Fragment,{children:(0,_.jsxs)(c.Z,{children:[D==="form"?(0,_.jsx)(e.ZP,{type:"link",onClick:function(){var o;(o=h.current)===null||o===void 0||o.resetFields(),O("table")},children:"\u2B05\u8FD4\u56DE"}):"",(0,_.jsx)(a.Z,{columns:R,type:D,formRef:h,actionRef:v,onSubmit:function(o){console.log(o),D==="form"&&(o.id?T.DH.Update(o).then(function(d){d.statusCode===200?(i.ZP.info("\u66F4\u65B0\u6210\u529F!"),O("table"),L()):i.ZP.error(d.errors)}):T.DH.Add(o).then(function(d){d.statusCode===200?(i.ZP.info("\u65B0\u589E\u6210\u529F!"),O("table"),L()):i.ZP.error(d.errors)}))},request:p()(r()().mark(function l(){var o,d,m,M=arguments;return r()().wrap(function(u){for(;;)switch(u.prev=u.next){case 0:return o=M.length>0&&M[0]!==void 0?M[0]:{},d={pageIndex:o.current||1,pageSize:o.pageSize||10,logType:o.logType,msgInfo:o.msgInfo},u.next=4,T.DH.PagedList(d);case 4:if(m=u.sent,m.statusCode!==200){u.next=9;break}return u.abrupt("return",{data:m.data.items,success:!0,total:m.data.total});case 9:return u.abrupt("return",{data:[],success:!1,total:0});case 10:case"end":return u.stop()}},l)})),pagination:{pageSize:5},rowKey:"id",dateFormatter:"string",headerTitle:"\u5217\u8868",toolBarRender:!1})]})})}}}]);

+ 0
- 1
frontend/dist/p__logs__runlog.4b288013.async.js Datei anzeigen

@@ -1 +0,0 @@
"use strict";(self.webpackChunkant_design_pro=self.webpackChunkant_design_pro||[]).push([[675],{90503:function(A,s,n){n.d(s,{DH:function(){return P},Xk:function(){return p},n5:function(){return g},xu:function(){return c}});var f=n(97857),r=n.n(f),t=n(12578),p={Add:function(e){return(0,t.request)("/api/alarmlog/add",{method:"POST",data:r()({},e)})},Del:function(e){return(0,t.request)("/api/alarmlog/del",{method:"POST",data:r()({},e)})},Update:function(e){return(0,t.request)("/api/alarmlog/update",{method:"POST",data:r()({},e)})},Detail:function(e){return(0,t.request)("/api/alarmlog/detail?id=".concat(e),{method:"GET"})},List:function(e){return(0,t.request)("/api/alarmlog/list",{method:"POST",data:r()({},e)})},PagedList:function(e){return(0,t.request)("/api/alarmlog/pagedlist",{method:"POST",data:r()({},e)})}},P={Add:function(e){return(0,t.request)("/api/programlog/add",{method:"POST",data:r()({},e)})},Del:function(e){return(0,t.request)("/api/programlog/del",{method:"POST",data:r()({},e)})},Update:function(e){return(0,t.request)("/api/programlog/update",{method:"POST",data:r()({},e)})},Detail:function(e){return(0,t.request)("/api/programlog/detail?id=".concat(e),{method:"GET"})},List:function(e){return(0,t.request)("/api/programlog/list",{method:"POST",data:r()({},e)})},PagedList:function(e){return(0,t.request)("/api/programlog/pagedlist",{method:"POST",data:r()({},e)})}},g={Add:function(e){return(0,t.request)("/api/userlog/add",{method:"POST",data:r()({},e)})},Del:function(e){return(0,t.request)("/api/userlog/del",{method:"POST",data:r()({},e)})},Update:function(e){return(0,t.request)("/api/userlog/update",{method:"POST",data:r()({},e)})},Detail:function(e){return(0,t.request)("/api/userlog/detail?id=".concat(e),{method:"GET"})},List:function(e){return(0,t.request)("/api/userlog/list",{method:"POST",data:r()({},e)})},PagedList:function(e){return(0,t.request)("/api/userlog/pagedlist",{method:"POST",data:r()({},e)})}},c={Add:function(e){return(0,t.request)("/api/runlog/add",{method:"POST",data:r()({},e)})},Del:function(e){return(0,t.request)("/api/runlog/del",{method:"POST",data:r()({},e)})},Update:function(e){return(0,t.request)("/api/runlog/update",{method:"POST",data:r()({},e)})},Detail:function(e){return(0,t.request)("/api/runlog/detail?id=".concat(e),{method:"GET"})},List:function(e){return(0,t.request)("/api/runlog/list",{method:"POST",data:r()({},e)})},PagedList:function(e){return(0,t.request)("/api/runlog/pagedlist",{method:"POST",data:r()({},e)})}}},48098:function(A,s,n){n.r(s);var f=n(15009),r=n.n(f),t=n(99289),p=n.n(t),P=n(5574),g=n.n(P),c=n(67286),a=n(15513),e=n(71577),i=n(45360),E=n(67294),T=n(90503),_=n(85893);s.default=function(){var b=(0,E.useState)("table"),S=g()(b,2),D=S[0],O=S[1],h=(0,E.useRef)(),v=(0,E.useRef)(),L=function(){var o,d;(o=h.current)===null||o===void 0||o.resetFields(),(d=v.current)===null||d===void 0||d.reload()},R=[{title:"\u4E3B\u952E",dataIndex:"id",search:!1},{title:"\u65E5\u5FD7\u7C7B\u522B",dataIndex:"logType"},{title:"\u65E5\u5FD7\u6D88\u606F",dataIndex:"msgInfo"}];return(0,_.jsx)(_.Fragment,{children:(0,_.jsxs)(c.Z,{children:[D==="form"?(0,_.jsx)(e.ZP,{type:"link",onClick:function(){var o;(o=h.current)===null||o===void 0||o.resetFields(),O("table")},children:"\u2B05\u8FD4\u56DE"}):"",(0,_.jsx)(a.Z,{columns:R,type:D,formRef:h,actionRef:v,onSubmit:function(o){console.log(o),D==="form"&&(o.id?T.xu.Update(o).then(function(d){d.statusCode===200?(i.ZP.info("\u66F4\u65B0\u6210\u529F!"),O("table"),L()):i.ZP.error(d.errors)}):T.xu.Add(o).then(function(d){d.statusCode===200?(i.ZP.info("\u65B0\u589E\u6210\u529F!"),O("table"),L()):i.ZP.error(d.errors)}))},request:p()(r()().mark(function l(){var o,d,m,M=arguments;return r()().wrap(function(u){for(;;)switch(u.prev=u.next){case 0:return o=M.length>0&&M[0]!==void 0?M[0]:{},d={pageIndex:o.current||1,pageSize:o.pageSize||10,logType:o.logType,msgInfo:o.msgInfo},u.next=4,T.xu.PagedList(d);case 4:if(m=u.sent,m.statusCode!==200){u.next=9;break}return u.abrupt("return",{data:m.data.items,success:!0,total:m.data.total});case 9:return u.abrupt("return",{data:[],success:!1,total:0});case 10:case"end":return u.stop()}},l)})),pagination:{pageSize:5},rowKey:"id",dateFormatter:"string",headerTitle:"\u5217\u8868",toolBarRender:!1})]})})}}}]);

+ 0
- 1
frontend/dist/p__logs__userlog.dcb92815.async.js Datei anzeigen

@@ -1 +0,0 @@
"use strict";(self.webpackChunkant_design_pro=self.webpackChunkant_design_pro||[]).push([[464],{90503:function(A,_,n){n.d(_,{DH:function(){return P},Xk:function(){return p},n5:function(){return c},xu:function(){return g}});var f=n(97857),r=n.n(f),t=n(12578),p={Add:function(e){return(0,t.request)("/api/alarmlog/add",{method:"POST",data:r()({},e)})},Del:function(e){return(0,t.request)("/api/alarmlog/del",{method:"POST",data:r()({},e)})},Update:function(e){return(0,t.request)("/api/alarmlog/update",{method:"POST",data:r()({},e)})},Detail:function(e){return(0,t.request)("/api/alarmlog/detail?id=".concat(e),{method:"GET"})},List:function(e){return(0,t.request)("/api/alarmlog/list",{method:"POST",data:r()({},e)})},PagedList:function(e){return(0,t.request)("/api/alarmlog/pagedlist",{method:"POST",data:r()({},e)})}},P={Add:function(e){return(0,t.request)("/api/programlog/add",{method:"POST",data:r()({},e)})},Del:function(e){return(0,t.request)("/api/programlog/del",{method:"POST",data:r()({},e)})},Update:function(e){return(0,t.request)("/api/programlog/update",{method:"POST",data:r()({},e)})},Detail:function(e){return(0,t.request)("/api/programlog/detail?id=".concat(e),{method:"GET"})},List:function(e){return(0,t.request)("/api/programlog/list",{method:"POST",data:r()({},e)})},PagedList:function(e){return(0,t.request)("/api/programlog/pagedlist",{method:"POST",data:r()({},e)})}},c={Add:function(e){return(0,t.request)("/api/userlog/add",{method:"POST",data:r()({},e)})},Del:function(e){return(0,t.request)("/api/userlog/del",{method:"POST",data:r()({},e)})},Update:function(e){return(0,t.request)("/api/userlog/update",{method:"POST",data:r()({},e)})},Detail:function(e){return(0,t.request)("/api/userlog/detail?id=".concat(e),{method:"GET"})},List:function(e){return(0,t.request)("/api/userlog/list",{method:"POST",data:r()({},e)})},PagedList:function(e){return(0,t.request)("/api/userlog/pagedlist",{method:"POST",data:r()({},e)})}},g={Add:function(e){return(0,t.request)("/api/runlog/add",{method:"POST",data:r()({},e)})},Del:function(e){return(0,t.request)("/api/runlog/del",{method:"POST",data:r()({},e)})},Update:function(e){return(0,t.request)("/api/runlog/update",{method:"POST",data:r()({},e)})},Detail:function(e){return(0,t.request)("/api/runlog/detail?id=".concat(e),{method:"GET"})},List:function(e){return(0,t.request)("/api/runlog/list",{method:"POST",data:r()({},e)})},PagedList:function(e){return(0,t.request)("/api/runlog/pagedlist",{method:"POST",data:r()({},e)})}}},46730:function(A,_,n){n.r(_);var f=n(15009),r=n.n(f),t=n(99289),p=n.n(t),P=n(5574),c=n.n(P),g=n(67286),a=n(15513),e=n(71577),i=n(45360),E=n(67294),T=n(90503),s=n(85893);_.default=function(){var b=(0,E.useState)("table"),S=c()(b,2),D=S[0],O=S[1],h=(0,E.useRef)(),v=(0,E.useRef)(),L=function(){var d,o;(d=h.current)===null||d===void 0||d.resetFields(),(o=v.current)===null||o===void 0||o.reload()},R=[{title:"\u4E3B\u952E",dataIndex:"id",hideInForm:!0,search:!1},{title:"\u6743\u9650",dataIndex:"permission",ellipsis:!0,search:!1},{title:"\u7528\u6237\u540D",dataIndex:"userName"},{title:"\u65E5\u5FD7\u6D88\u606F",dataIndex:"msgInfo",width:120}];return(0,s.jsx)(s.Fragment,{children:(0,s.jsxs)(g.Z,{children:[D==="form"?(0,s.jsx)(e.ZP,{type:"link",onClick:function(){var d;(d=h.current)===null||d===void 0||d.resetFields(),O("table")},children:"\u2B05\u8FD4\u56DE"}):"",(0,s.jsx)(a.Z,{columns:R,type:D,formRef:h,actionRef:v,onSubmit:function(d){console.log(d),D==="form"&&(d.id?T.n5.Update(d).then(function(o){o.statusCode===200?(i.ZP.info("\u66F4\u65B0\u6210\u529F!"),O("table"),L()):i.ZP.error(o.errors)}):T.n5.Add(d).then(function(o){o.statusCode===200?(i.ZP.info("\u65B0\u589E\u6210\u529F!"),O("table"),L()):i.ZP.error(o.errors)}))},request:p()(r()().mark(function l(){var d,o,m,M=arguments;return r()().wrap(function(u){for(;;)switch(u.prev=u.next){case 0:return d=M.length>0&&M[0]!==void 0?M[0]:{},o={pageIndex:d.current||1,pageSize:d.pageSize||10,userName:d.userName,msgInfo:d.msgInfo},u.next=4,T.n5.PagedList(o);case 4:if(m=u.sent,m.statusCode!==200){u.next=9;break}return u.abrupt("return",{data:m.data.items,success:!0,total:m.data.total});case 9:return u.abrupt("return",{data:[],success:!1,total:0});case 10:case"end":return u.stop()}},l)})),pagination:{pageSize:5},rowKey:"id",dateFormatter:"string",headerTitle:"\u5217\u8868",toolBarRender:!1})]})})}}}]);

+ 0
- 1
frontend/dist/p__manufacturing__index.1ac7465e.chunk.css Datei anzeigen

@@ -1 +0,0 @@
.tag___uiPjc{height:100%;width:100%}.tag_item___gsaqa{padding:0 5px 0 20px;height:72px;position:relative;cursor:pointer;display:flex;align-items:center}.tag_item_active___IY6iJ{position:absolute;width:3px;height:72px;left:0;top:0;background-color:#13c2c2}.tag_item_activeItem___aLzBU{background-color:#f7f8fa}.tag_item_editicon___qJMP7{position:absolute;right:0;top:0;bottom:0;display:flex;align-items:center}

+ 0
- 10
frontend/dist/p__manufacturing__index.911073cb.async.js
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 0
- 1
frontend/dist/p__materials__index.cbff19b7.async.js
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 0
- 1
frontend/dist/p__order__index.60a7403b.async.js
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 0
- 1
frontend/dist/p__recipe__index.ce98549a.async.js
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 0
- 1
frontend/dist/p__report__material__index.d4e49d4e.async.js Datei anzeigen

@@ -1 +0,0 @@
"use strict";(self.webpackChunkant_design_pro=self.webpackChunkant_design_pro||[]).push([[496],{76704:function(P,r,e){var u=e(97857),a=e.n(u),d=e(12578);r.Z={PagedList:function(n){return(0,d.request)("/api/report/getproductreport",{method:"POST",data:a()({},n)})},PagedMaterialList:function(n){return(0,d.request)("/api/report/getmaterialsreport",{method:"POST",data:a()({},n)})}}},7780:function(P,r,e){e.r(r);var u=e(15009),a=e.n(u),d=e(99289),s=e.n(d),n=e(67294),c=e(71577),p=e(15513),T=e(76704),l=e(85893);r.default=function(){var M=(0,n.useRef)(),f=[{title:"materialId",dataIndex:"materialId",hideInSearch:!0,hideInTable:!0,align:"center"},{title:"\u6210\u54C1\u540D\u79F0",dataIndex:"materialName",align:"center"},{title:"\u751F\u4EA7\u6570\u91CF",dataIndex:"count",hideInSearch:!0,align:"center"},{title:"\u751F\u4EA7\u65F6\u95F4",dataIndex:"dateTime",valueType:"dateRange",hideInTable:!0,align:"center"}];return(0,l.jsx)(p.Z,{columns:f,actionRef:M,cardBordered:!0,request:s()(a()().mark(function m(){var t,E,o,i=arguments;return a()().wrap(function(_){for(;;)switch(_.prev=_.next){case 0:return t=i.length>0&&i[0]!==void 0?i[0]:{},E={endTime:t.dateTime?t.dateTime[1]:void 0,startTime:t.dateTime?t.dateTime[0]:void 0,productName:t.productName||""},_.next=4,T.Z.PagedMaterialList(E);case 4:if(o=_.sent,o.statusCode!==200){_.next=9;break}return _.abrupt("return",{data:o.data,success:!0,total:1});case 9:return _.abrupt("return",{data:[],success:!1,total:0});case 10:case"end":return _.stop()}},m)})),rowKey:"productId",pagination:{pageSize:10},dateFormatter:"string",headerTitle:"\u5DE5\u5355\u5217\u8868",toolBarRender:function(){return[(0,l.jsx)(c.ZP,{type:"primary",onClick:function(){},children:"\u65B0\u5EFA\u5DE5\u5355"},"button")]}},"myTable")}}}]);

+ 0
- 1
frontend/dist/p__report__product__index.d8e0e9b9.async.js Datei anzeigen

@@ -1 +0,0 @@
"use strict";(self.webpackChunkant_design_pro=self.webpackChunkant_design_pro||[]).push([[926],{76704:function(P,r,e){var u=e(97857),a=e.n(u),d=e(12578);r.Z={PagedList:function(n){return(0,d.request)("/api/report/getproductreport",{method:"POST",data:a()({},n)})},PagedMaterialList:function(n){return(0,d.request)("/api/report/getmaterialsreport",{method:"POST",data:a()({},n)})}}},47667:function(P,r,e){e.r(r);var u=e(15009),a=e.n(u),d=e(99289),s=e.n(d),n=e(67294),c=e(71577),p=e(15513),T=e(76704),l=e(85893);r.default=function(){var M=(0,n.useRef)(),f=[{title:"productId",dataIndex:"productId",hideInSearch:!0,hideInTable:!0,align:"center"},{title:"\u6210\u54C1\u540D\u79F0",dataIndex:"productName",align:"center"},{title:"\u751F\u4EA7\u6570\u91CF",dataIndex:"count",hideInSearch:!0,align:"center"},{title:"\u751F\u4EA7\u65F6\u95F4",dataIndex:"dateTime",valueType:"dateRange",hideInTable:!0,align:"center"}];return(0,l.jsx)(p.Z,{columns:f,actionRef:M,cardBordered:!0,request:s()(a()().mark(function m(){var t,E,o,i=arguments;return a()().wrap(function(_){for(;;)switch(_.prev=_.next){case 0:return t=i.length>0&&i[0]!==void 0?i[0]:{},E={endTime:t.dateTime?t.dateTime[1]:void 0,startTime:t.dateTime?t.dateTime[0]:void 0,productName:t.productName||""},_.next=4,T.Z.PagedList(E);case 4:if(o=_.sent,o.statusCode!==200){_.next=9;break}return _.abrupt("return",{data:o.data,success:!0,total:1});case 9:return _.abrupt("return",{data:[],success:!1,total:0});case 10:case"end":return _.stop()}},m)})),rowKey:"productId",pagination:{pageSize:10},dateFormatter:"string",headerTitle:"\u5DE5\u5355\u5217\u8868",toolBarRender:function(){return[(0,l.jsx)(c.ZP,{type:"primary",onClick:function(){},children:"\u65B0\u5EFA\u5DE5\u5355"},"button")]}},"myTable")}}}]);

+ 0
- 1
frontend/dist/p__stock__index.e7816fd4.async.js
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 0
- 1
frontend/dist/p__system__account__index.a39cd6cc.async.js
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 0
- 1
frontend/dist/p__system__authTemplate__index.f6e3c8dc.async.js
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 0
- 1
frontend/dist/p__system__module__index.0a77d9f3.async.js
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 0
- 0
Datei anzeigen


+ 0
- 1
frontend/dist/p__system__role__index.c64fd058.async.js Datei anzeigen

@@ -1 +0,0 @@
"use strict";(self.webpackChunkant_design_pro=self.webpackChunkant_design_pro||[]).push([[24],{56160:function(b,M,e){var h=e(97857),_=e.n(h),E=e(12578);M.Z={CreateRole:function(u){return(0,E.request)("/api/authorize/AddRole",{method:"POST",data:_()({},u)})},DeleteRole:function(u){return(0,E.request)("/api/authorize/RemoveRole/".concat(u),{method:"GET"})},ModifyRole:function(u){return(0,E.request)("/api/authorize/EditRole",{method:"POST",data:_()({},u)})},GetRoleList:function(){return(0,E.request)("/api/authorize/GetRoleList",{method:"GET"})},GetRolePagedList:function(u){return(0,E.request)("/api/authorize/QueryRole",{method:"POST",data:_()({},u)})}}},36056:function(b,M,e){e.r(M);var h=e(15009),_=e.n(h),E=e(99289),d=e.n(E),u=e(5574),v=e.n(u),p=e(67294),f=e(12029),B=e(42075),I=e(86738),c=e(45360),C=e(71577),L=e(5914),O=e(12096),D=e(56160),g=e(51042),K=e(15513),r=e(85893),S=function(){var y=(0,p.useState)({id:"",name:"",description:""}),j=v()(y,2),F=j[0],Z=j[1],U=(0,p.useState)(!1),A=v()(U,2),W=A[0],P=A[1],x=f.Z.useForm(),G=v()(x,1),T=G[0],z=[{title:"\u89D2\u8272\u540D\u79F0",dataIndex:"name",key:"name"},{title:"\u89D2\u8272\u63CF\u8FF0",dataIndex:"description",key:"description",search:!1},{title:"\u64CD\u4F5C",search:!1,key:"action",render:function(t,n){return(0,r.jsxs)(B.Z,{size:"middle",children:[(0,r.jsx)("a",{onClick:function(){return $(n)},children:"\u7F16\u8F91"}),(0,r.jsx)(I.Z,{title:"\u786E\u5B9A\u8981\u5220\u9664\u6B64\u89D2\u8272\u5417\uFF1F",onConfirm:function(){return J(n)},okText:"\u786E\u5B9A",cancelText:"\u53D6\u6D88",children:(0,r.jsx)("a",{children:"\u5220\u9664"})})]})}}],$=function(t){var n;Z(t),T.setFieldsValue(t),P(!0),(n=R.current)===null||n===void 0||n.reload()},J=function(){var o=d()(_()().mark(function t(n){var s,m;return _()().wrap(function(l){for(;;)switch(l.prev=l.next){case 0:return l.next=2,D.Z.DeleteRole(n.id);case 2:s=l.sent,s.statusCode===200?(c.ZP.success("\u5220\u9664\u6210\u529F"),(m=R.current)===null||m===void 0||m.reload()):c.ZP.error(s.msg||"\u5220\u9664\u5931\u8D25");case 4:case"end":return l.stop()}},t)}));return function(n){return o.apply(this,arguments)}}(),V=function(){var o=d()(_()().mark(function t(n){var s,m,a,l;return _()().wrap(function(i){for(;;)switch(i.prev=i.next){case 0:if(!n.id){i.next=7;break}return i.next=3,D.Z.ModifyRole(n);case 3:s=i.sent,s.statusCode===200?(c.ZP.success("\u66F4\u65B0\u89D2\u8272\u4FE1\u606F\u6210\u529F"),P(!1),(m=R.current)===null||m===void 0||m.reload()):c.ZP.error(s.msg||"\u66F4\u65B0\u89D2\u8272\u4FE1\u606F\u5931\u8D25"),i.next=11;break;case 7:return i.next=9,D.Z.CreateRole(n);case 9:a=i.sent,a.statusCode===200?(c.ZP.success("\u521B\u5EFA\u89D2\u8272\u6210\u529F"),P(!1),(l=R.current)===null||l===void 0||l.reload()):c.ZP.error(a.msg||"\u521B\u5EFA\u89D2\u8272\u5931\u8D25");case 11:case"end":return i.stop()}},t)}));return function(n){return o.apply(this,arguments)}}(),N=function(){Z({id:"",name:"",description:""}),T.resetFields(),P(!0)},R=(0,p.useRef)();return(0,r.jsxs)("div",{children:[(0,r.jsx)(K.Z,{columns:z,actionRef:R,cardBordered:!0,request:d()(_()().mark(function o(){var t,n,s=arguments;return _()().wrap(function(a){for(;;)switch(a.prev=a.next){case 0:return t=s.length>0&&s[0]!==void 0?s[0]:{},a.next=3,D.Z.GetRolePagedList({keyword:t.name,sortName:"",sortByAsc:!1,pageIndex:t.current||1,pageSize:t.pageSize||10});case 3:if(n=a.sent,n.statusCode!==200){a.next=8;break}return a.abrupt("return",{data:n.data.items,success:!0,total:n.data.total});case 8:return c.ZP.error(n.errors||"\u83B7\u53D6\u89D2\u8272\u5217\u8868\u5931\u8D25"),a.abrupt("return",{data:[],success:!1,total:0});case 10:case"end":return a.stop()}},o)})),rowKey:"id",pagination:{pageSize:10},dateFormatter:"string",headerTitle:"\u89D2\u8272\u5217\u8868",toolBarRender:function(){return[(0,r.jsx)(C.ZP,{icon:(0,r.jsx)(g.Z,{}),type:"primary",onClick:N,children:"\u6DFB\u52A0"},"button")]}}),(0,r.jsx)(L.Z,{footer:null,title:F.id===""?"\u6DFB\u52A0\u89D2\u8272":"\u7F16\u8F91\u89D2\u8272",open:W,onCancel:function(){return P(!1)},children:(0,r.jsxs)(f.Z,{name:"basic",form:T,onFinish:V,children:[(0,r.jsx)(f.Z.Item,{label:"id",name:"id",hidden:!0,children:(0,r.jsx)(O.Z,{})}),(0,r.jsx)(f.Z.Item,{label:"\u540D\u79F0",name:"name",rules:[{required:!0,message:"\u8BF7\u8F93\u5165\u89D2\u8272\u540D\u79F0\uFF01"}],children:(0,r.jsx)(O.Z,{})}),(0,r.jsx)(f.Z.Item,{label:"\u63CF\u8FF0",name:"description",rules:[{required:!0,message:"\u8BF7\u8F93\u5165\u89D2\u8272\u63CF\u8FF0\uFF01"}],children:(0,r.jsx)(O.Z,{})}),(0,r.jsx)(f.Z.Item,{children:(0,r.jsx)(C.ZP,{type:"primary",htmlType:"submit",children:"\u786E\u5B9A"})})]})})]})};M.default=S}}]);

+ 0
- 1
frontend/dist/p__system__user__index.695d982e.chunk.css Datei anzeigen

@@ -1 +0,0 @@
.tab_navbar_card___TM3Di{display:flex;align-items:center;box-shadow:0 4px 8px 1px #07111b26;height:100px;border-radius:5px;background-color:#fff}.tab_navbar_active___PLvNu{position:relative;color:#546bf0}.tab_navbar_active___PLvNu:after{position:absolute;content:"";bottom:-10px;left:0;width:70px;height:2px;background-color:#546bf0}.tab_navbar_item___FaQZn{cursor:pointer;margin:0 20px;font-size:18px}.tab_navbar_item___FaQZn:hover{transition:all .3s;color:#546bf0;transform:scale(1.1)}.log_head_card___e4OFg{padding:20px;box-shadow:0 4px 8px 1px #07111b26}.log_head_card_text____MQ82{font-size:18px;font-weight:700;margin-bottom:30px}.log_card_data___Uhh4q{padding:0 40px;display:flex;flex-wrap:wrap;justify-content:space-between}.log_data_pos___M3M6A{text-align:center;margin-bottom:20px}.log_data_number___Fh2Z2{color:#546bf0;font-size:20px;margin-bottom:5px}.log_data_text___ApoMe{font-size:16px;color:#222}.log_list_title___l0YtY{font-size:18px;font-weight:700;margin:20px 0;color:#222}.log_detail_row___B6WKE{display:flex;align-items:center;justify-content:space-between}.log_detail_item___JgTlO{display:flex;align-items:center;flex-grow:1;flex-shrink:0;border:1px solid #dedede;border-bottom:none;height:50px;box-sizing:border-box;font-size:16px}.log_detail_half___bh7yF{width:50%}.log_detail_item___JgTlO:nth-child(2){border-left:none}.log_detail_item_last___w0ouH{border-bottom:1px solid #dedede}.log_detail_title____90Pu{display:flex;align-items:center;flex-shrink:0;background-color:#fafafa;width:100px;color:#222;height:100%;border-right:1px solid #dedede;padding-left:10px}.log_detail_content___nhonA{display:flex;align-items:center;padding-left:10px}.tab_navbar_btn___yQEXt{margin-left:auto;margin-right:50px}.person_list___ZO8Fs{display:flex;flex-wrap:wrap;justify-content:space-between;padding:20px 0}.person_list_item___HkHZR{position:relative;height:300px;width:200px;display:flex;flex-direction:column;justify-content:space-around;align-items:center;box-shadow:0 2px 8px #07111b26;background-color:#fff}.person_list_btn___ZGGz9{position:absolute;bottom:10px;right:10px}.person_list_item___HkHZR .item_content___btVdX{width:150px;display:flex;align-items:center;justify-content:flex-start}

+ 0
- 1
frontend/dist/p__system__user__index.d813edfa.async.js
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 0
- 1
frontend/dist/p__user__login__index.eda71cb5.async.js
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 0
- 10
frontend/dist/p__welcome__index.a5d7786e.async.js
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 0
- 1
frontend/dist/p__workInfo__index.219f217e.async.js
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 0
- 1
frontend/dist/t__plugin-layout__Layout.74b4118c.chunk.css Datei anzeigen

@@ -1 +0,0 @@
@media screen and (max-width: 480px){.umi-plugin-layout-container{width:100%!important}.umi-plugin-layout-container>*{border-radius:0!important}}.umi-plugin-layout-menu .anticon{margin-right:8px}.umi-plugin-layout-menu .ant-dropdown-menu-item{min-width:160px}.umi-plugin-layout-right{display:flex!important;float:right;height:100%;margin-left:auto;overflow:hidden}.umi-plugin-layout-right .umi-plugin-layout-action{display:flex;align-items:center;height:100%;padding:0 12px;cursor:pointer;transition:all .3s}.umi-plugin-layout-right .umi-plugin-layout-action>i{color:#ffffffd9;vertical-align:middle}.umi-plugin-layout-right .umi-plugin-layout-action:hover{background:rgba(0,0,0,.025)}.umi-plugin-layout-right .umi-plugin-layout-action:global(.opened){background:rgba(0,0,0,.025)}.umi-plugin-layout-right .umi-plugin-layout-search{padding:0 12px}.umi-plugin-layout-right .umi-plugin-layout-search:hover{background:transparent}.umi-plugin-layout-name{margin-left:8px}

+ 0
- 1
frontend/dist/t__plugin-layout__Layout.9d4f49df.async.js
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 0
- 346
frontend/dist/umi.eb20ece1.js
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 48
- 0
frontend/src/api/kepService.ts Datei anzeigen

@@ -0,0 +1,48 @@
import { request } from '@umijs/max';


export default {

Getdatavalarmlimitpage(params) {
return request('/api/kepdata/getdatavalarmlimitlist', {
method: 'POST',
data: {
...params
}
});
},
Adddatavalarmlimit(params) {
return request('/api/kepdata/adddatavalarmlimit', {
method: 'POST',
data: {
...params
}
});
},
Updatedatavalarmlimit(params) {
return request('/api/kepdata/updatedatavalarmlimit', {
method: 'POST',
data: {
...params
}
});
},
Del(parms) {
return request(`/api/kepdata/deldatavalarmlimitlist/`+parms, {
method: 'POST',
});
},
getdatavData() {
return request(`/api/kepdata/getdatavlist`, {
method: 'GET',
});
},
getlogs() {
return request(`/api/kepdata/getlogs`, {
method: 'GET',
});
}
}





















+ 110
- 0
frontend/src/components/KepData/index copy 2.less Datei anzeigen

@@ -0,0 +1,110 @@
#data-view {
width: 100%;
height: 100%;
background-color: #030409;
color: #fff;

#dv-full-screen-container {
background-image: url('./img/bg.png');
box-shadow: 0 0 3px blue;
display: flex;
flex-direction: column;
}


.main-header {
background-image: url('./img/top.png');
/* 背景图垂直、水平均居中 */
background-position: center center;
/* 背景图不平铺 */
background-repeat: no-repeat;
/* 当内容高度大于图片高度时,背景图像的位置相对于viewport固定 */
background-attachment: fixed;
/* 让背景图基于容器大小伸缩 */
background-size: cover;
height: 50px;
display: flex;
justify-content: space-between;
align-items: flex-end;

.mh-left {
font-size: 20px;
color: rgb(1, 134, 187);

a:visited {
color: rgb(1, 134, 187);
}
}

.mh-middle {
font-size: 30px;
}

.mh-left,
.mh-right {
width: 480px;
}
.dateclass{
font-size: 22px;
text-align: center;
}
}

.main-container {
height: calc(~'100% - 80px');
.mc-top,
.mc-bottom {
display: flex;
}

.mc-top {
height: 33%;
}
.mc-bottom {
height: 66%;
}
.main-container_dev{
height: 100%;
width: 100%;
}
.qpj{
// background-image: url('./img/555.png');
}
.mc-bottom1{
width: 75%;
}
.mc-bottom2{
width: 25%;
}
}
.titlebak{
background-image: url('./img/title1.png');
/* 背景图垂直、水平均居中 */
background-position: center center;
/* 背景图不平铺 */
background-repeat: no-repeat;
text-align: center;
}

.main-container_c{
height: 100%;
// border: 1px red solid;
}
.main-container_s{
height: 33.3%;
width: 100%;
//border: 1px red solid;
}
.main-container_z{
height: 33.3%;
width: 100%;
// border: 1px red solid;
}
.main-container_x{
height: 33.3%;
width: 100%;
//border: 1px red solid;
}
}

+ 791
- 0
frontend/src/components/KepData/index copy 2.tsx Datei anzeigen

@@ -0,0 +1,791 @@
import React, { useState, useEffect } from 'react';
import { Col, Row, Statistic } from 'antd';
import './index.less'
import {
FullScreenContainer,
Decoration9,
BorderBox10,
BorderBox1,
ScrollBoard,
} from '@jiaminghi/data-view-react'
import Api from "@/api/kepService"
const KepData: React.FC = () => {

const [thisdate, setThisdate] = useState({ timeStr: '' })

const [dataVData, setDataVData] = useState({ "A1": "AA" })
const [logData, setLogData] = useState({
header: ['报警设备', '报警信息', '报警时间'],
rowNum: 5,
headerBGC: "#000724",
oddRowBGC: "#000724",
evenRowBGC: "#000724",
data: [[]]
})

const initScript = () => {
let script = document.createElement('script')
script.type = 'text/javascript'
script.async = true
script.src = './index.js'//这个代表的是script 的src
document.head.appendChild(script)
}

useEffect(() => {
const id = setInterval(() => {
getdatavData();
}, 1000 * 5);

return () => {
clearInterval(0); //组件卸载时清除定时器
};

}, [])

const getdatavData = async () => {
const response = await Api.getdatavData();
if (response.statusCode === 200) {
setDataVData(response.data);
}

Api.getlogs().then((r) => {
setLogData({
header: ['报警设备', '报警信息', '报警时间'],
rowNum: 5,
headerBGC: "#000724",
oddRowBGC: "#000724",
evenRowBGC: "#000724",
data: r.data
});
});
}

const style = { width: '5px', height: '45%' }

const style2 = {
width: '120px',
height: '50px',
lineHeight: '50px',
textAlign: 'center',
marginLeft: '200px',
}
function setTimingFn() {
setInterval(() => {
let dateYear = formatTime(new Date(), 'yyyy-MM-dd');
let dateDay = formatTime(new Date(), 'HH: mm: ss');
setThisdate({ timeStr: `${dateYear} ${dateDay} ` });
}, 1000);
}
function formatTime(time: string | number | Date, fmt: string) {
if (!time) return '';
else {
const date = new Date(time);
const o = {
'M+': date.getMonth() + 1,
'd+': date.getDate(),
'H+': date.getHours(),
'm+': date.getMinutes(),
's+': date.getSeconds(),
'q+': Math.floor((date.getMonth() + 3) / 3),
S: date.getMilliseconds(),
};
if (/(y+)/.test(fmt))
fmt = fmt.replace(
RegExp.$1,
(date.getFullYear() + '').substr(4 - RegExp.$1.length)
);
for (const k in o) {
if (new RegExp('(' + k + ')').test(fmt)) {
fmt = fmt.replace(
RegExp.$1,
RegExp.$1.length === 1
? o[k]
: ('00' + o[k]).substr(('' + o[k]).length)
);
}
}
return fmt;
}
}


return (
<div id="data-view">
<FullScreenContainer>

<div className="main-header">
<div className="mh-left"> </div>
<div className="mh-middle">
五芳斋数据大屏
</div>
<div className="mh-right">
<div className='dateclass' >
{thisdate.timeStr}
</div>
</div>
</div>
<div className="main-container">
<div className='main-container_c'>
<div className='main-container_s'>
<div style={{ width: "33%", height: "100%", float: "left", textAlign: "center" }}>
<BorderBox1>
<div style={{ height: "15%" }}>
<div style={{ height: "30%", width: "100%", textAlign: "center" }}>
<div style={{ height: "50px", width: "90%", display: "block", margin: " 0 auto", textAlign: "center" }} className='titlebak'>
<h2 style={{ color: "#34CDE1" }}>&nbsp;&nbsp;1#浸泡间</h2>
</div>
</div>
</div>
<div style={{ height: "21.2%", textAlign: "center" }}>
<div style={{ width: "190px", float: "left", marginLeft: "20px" }}>
<BorderBox10 >
<div>

<span style={{ fontSize: 12, color: "#50B15D" }}>限量提升机频率:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
<div style={{ width: "170px", float: "left", marginLeft: "20px" }}>
<BorderBox10 >
<div>

<span style={{ fontSize: 12, color: "#50B15D" }}>浸泡机温度:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
<div style={{ width: "190px", float: "left", marginLeft: "20px" }}>
<BorderBox10 >
<div>

<span style={{ fontSize: 12, color: "#50B15D" }}>浸泡出缓存提升:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
</div>
<div style={{ height: "21.2%", textAlign: "center" }}>
<div style={{ width: "190px", float: "left", marginLeft: "20px" }}>
<BorderBox10 >
<div>

<span style={{ fontSize: 12, color: "#50B15D" }}>限量提升机频率:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
<div style={{ width: "190px", float: "left", marginLeft: "15px" }}>
<BorderBox10 >
<div>

<span style={{ fontSize: 12, color: "#50B15D" }}>防滑板频率频率:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
<div style={{ width: "190px", float: "left", marginLeft: "15px" }}>
<BorderBox10 >
<div>

<span style={{ fontSize: 12, color: "#50B15D" }}>脱水称重提升机:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
</div>
<div style={{ height: "21.2%", textAlign: "center" }}>
<div style={{ width: "195px", float: "left", marginLeft: "20px" }}>
<BorderBox10 >
<div>

<span style={{ fontSize: 12, color: "#50B15D" }}>伸缩试进料机频率:</span>
<span style={{ fontSize: 18 }}>999</span>
</div>
</BorderBox10>
</div>
<div style={{ width: "180px", float: "left", marginLeft: "15px" }}>
<BorderBox10 >
<div>

<span style={{ fontSize: 12, color: "#50B15D" }}>离心电机频率:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
<div style={{ width: "190px", float: "left", marginLeft: "15px" }}>
<BorderBox10 >
<div>

<span style={{ fontSize: 12, color: "#50B15D" }}>浸泡出料机频率:</span>
<span style={{ fontSize: 18 }}>999</span>
</div>
</BorderBox10>
</div>
</div>
<div style={{ height: "21.2%", textAlign: "center" }}>
<div style={{ width: "290px", float: "left", marginLeft: "20px" }}>
<BorderBox10 >
<div>

<span style={{ fontSize: 12, color: "#50B15D" }}>称重提升机预置速度:</span>
<span style={{ fontSize: 18 }}>10</span>
{/* <span style={{ fontSize: 18 }}>°C</span> */}
</div>
</BorderBox10>
</div>
<div style={{ width: "290px", float: "left", marginLeft: "10px" }}>
<BorderBox10 >
<div>

<span style={{ fontSize: 12, color: "#50B15D" }}>称重提升机预置频率:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
</div>
</BorderBox1>
</div>
<div style={{ width: "33%", height: "100%", float: "left", textAlign: "center" }}>
<BorderBox1 >
<div style={{ height: "25%" }}>
<div style={{ height: "30%", width: "100%", textAlign: "center" }}>
<div style={{ height: "50px", width: "90%", display: "block", margin: " 0 auto", textAlign: "center" }} className='titlebak'>
<h2 style={{ color: "#34CDE1" }}>&nbsp;&nbsp;油炸间</h2>
</div>
</div>
</div>
<div style={{ height: "25%", textAlign: "center" }}>
<div style={{ width: "190px", float: "left", marginLeft: "20px" }}>
<BorderBox10 >
<div>

<span style={{ fontSize: 12, color: "#50B15D" }}>一区温度测量值:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
<div style={{ width: "190px", float: "left", marginLeft: "10px" }}>
<BorderBox10 >
<div>

<span style={{ fontSize: 12, color: "#50B15D" }}>二区温度测量值:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
<div style={{ width: "190px", float: "left", marginLeft: "10px" }}>
<BorderBox10 >
<div>

<span style={{ fontSize: 12, color: "#50B15D" }}>二区温度测量值:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
</div>
<div style={{ height: "25%", textAlign: "center" }}>
<div style={{ width: "190px", float: "left", marginLeft: "20px" }}>
<BorderBox10 >
<div>

<span style={{ fontSize: 12, color: "#50B15D" }}>一区温度设定值:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
<div style={{ width: "190px", float: "left", marginLeft: "10px" }}>
<BorderBox10 >
<div>

<span style={{ fontSize: 12, color: "#50B15D" }}>二区温度设定值:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
<div style={{ width: "190px", float: "left", marginLeft: "10px" }}>
<BorderBox10 >
<div>

<span style={{ fontSize: 12, color: "#50B15D" }}>三区温度设定值:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
</div>
<div style={{ height: "25%", textAlign: "center" }}>
<div style={{ width: "290px", float: "left", marginLeft: "20px" }}>
<BorderBox10 >
<div>

<span style={{ fontSize: 12, color: "#50B15D" }}>刮渣关时间:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
<div style={{ width: "290px", float: "left", marginLeft: "10px" }}>
<BorderBox10 >
<div>

<span style={{ fontSize: 12, color: "#50B15D" }}>刮渣开时间:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
</div>
</BorderBox1>
<BorderBox1>
<div style={{ height: "15%", textAlign: "center" }}>
</div>
<div style={{ height: "21.2%", textAlign: "center" }}>
<div style={{ width: "94%", float: "left", marginLeft: "20px" }}>
<BorderBox10 >
<div>
<span style={{ fontSize: 12, color: "#50B15D" }}>跨线提升机频率</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
</div>
<div style={{ height: "39.2%", textAlign: "center" }}>
</div>
<div style={{ height: "21.2%", textAlign: "center" }}>
<div style={{ width: "190px", float: "left", marginLeft: "20px" }}>
<BorderBox10 >
<div>

<span style={{ fontSize: 12, color: "#50B15D" }}>储油暂存罐温度:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
<div style={{ width: "170px", float: "left", marginLeft: "20px" }}>
<BorderBox10 >
<div>

<span style={{ fontSize: 12, color: "#50B15D" }}>储油暂存罐压力:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
<div style={{ width: "190px", float: "left", marginLeft: "20px" }}>
<BorderBox10 >
<div>

<span style={{ fontSize: 12, color: "#50B15D" }}>原油罐称重重里:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
</div>
</BorderBox1>
</div>
<div style={{ width: "33%", height: "100%", float: "left", textAlign: "center" }}>
<BorderBox1>
<div style={{ height: "14%" }}>
<div style={{ height: "30%", width: "100%", textAlign: "center" }}>
<div style={{ height: "50px", width: "90%", display: "block", margin: " 0 auto", textAlign: "center" }} className='titlebak'>
<h2 style={{ color: "#34CDE1" }}>&nbsp;&nbsp;搅拌间</h2>
</div>
</div>
</div>
<div style={{ height: "17.2%", textAlign: "center" }}>
<div style={{ width: "290px", float: "left", marginLeft: "20px" }}>
<BorderBox10 >
<div>

<span style={{ fontSize: 12, color: "#50B15D" }}>1#称重提升机预置重量:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
<div style={{ width: "290px", float: "left", marginLeft: "10px" }}>
<BorderBox10 >
<div>

<span style={{ fontSize: 12, color: "#50B15D" }}>2#称重提升机预置重量:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
</div>
<div style={{ height: "17.2%", textAlign: "center" }}>
<div style={{ width: "290px", float: "left", marginLeft: "20px" }}>
<BorderBox10 >
<div>

<span style={{ fontSize: 12, color: "#50B15D" }}>1#称重提升机预置次数:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
<div style={{ width: "290px", float: "left", marginLeft: "10px" }}>
<BorderBox10 >
<div>

<span style={{ fontSize: 12, color: "#50B15D" }}>2#称重提升机预置次数:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
</div>
<div style={{ height: "17.2%", textAlign: "center" }}>
<div style={{ width: "290px", float: "left", marginLeft: "20px" }}>
<BorderBox10 >
<div>

<span style={{ fontSize: 12, color: "#50B15D" }}>1#脱油称重提升机频率:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
<div style={{ width: "290px", float: "left", marginLeft: "10px" }}>
<BorderBox10 >
<div>

<span style={{ fontSize: 12, color: "#50B15D" }}>2#脱油称重提升机频率:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
</div>
<div style={{ height: "17.2%", textAlign: "center" }}>
<div style={{ width: "290px", float: "left", marginLeft: "20px" }}>
<BorderBox10 >
<div>

<span style={{ fontSize: 12, color: "#50B15D" }}>1#伸缩式进料机频率:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
<div style={{ width: "290px", float: "left", marginLeft: "10px" }}>
<BorderBox10 >
<div>

<span style={{ fontSize: 12, color: "#50B15D" }}>2#伸缩式进料机频率:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
</div>
<div style={{ height: "17.2%", textAlign: "center" }}>
<div style={{ width: "187px", float: "left", marginLeft: "20px" }}>
<BorderBox10 >
<div>
<span style={{ fontSize: 12, color: "#50B15D" }}>1#离心电机频率:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
<div style={{ width: "187px", float: "left", marginLeft: "7px" }}>
<BorderBox10 >
<div>
<span style={{ fontSize: 12, color: "#50B15D" }}>2#离心电机频率:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
<div style={{ width: "205px", float: "left", marginLeft: "7px" }}>
<BorderBox10 >
<div>
<span style={{ fontSize: 12, color: "#50B15D" }}>主转盘旋转电机频率:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
</div>
</BorderBox1>
</div>
</div>
<div className='main-container_z'>
<BorderBox1>
<img style={{ width: "100%", height: "100%" }} src={require('./img/20231113174659.png')}></img>
</BorderBox1>
</div>
<div className='main-container_x'>
<div style={{ width: "33%", height: "100%", float: "left" }}>
<BorderBox1>
<div style={{ height: "15%" }}>
<div style={{ height: "30%", width: "100%", textAlign: "center" }}>
<div style={{ height: "50px", width: "90%", display: "block", margin: " 0 auto", textAlign: "center" }} className='titlebak'>
<h2 style={{ color: "#34CDE1" }}>&nbsp;&nbsp;2#浸泡间</h2>
</div>
</div>
</div>
<div style={{ height: "21.2%", textAlign: "center" }}>
<div style={{ width: "190px", float: "left", marginLeft: "20px" }}>
<BorderBox10 >
<div>

<span style={{ fontSize: 12, color: "#50B15D" }}>限量提升机频率:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
<div style={{ width: "170px", float: "left", marginLeft: "20px" }}>
<BorderBox10 >
<div>

<span style={{ fontSize: 12, color: "#50B15D" }}>浸泡机温度:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
<div style={{ width: "190px", float: "left", marginLeft: "20px" }}>
<BorderBox10 >
<div>

<span style={{ fontSize: 12, color: "#50B15D" }}>浸泡出缓存提升:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
</div>
<div style={{ height: "21.2%", textAlign: "center" }}>
<div style={{ width: "190px", float: "left", marginLeft: "20px" }}>
<BorderBox10 >
<div>

<span style={{ fontSize: 12, color: "#50B15D" }}>限量提升机频率:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
<div style={{ width: "190px", float: "left", marginLeft: "15px" }}>
<BorderBox10 >
<div>

<span style={{ fontSize: 12, color: "#50B15D" }}>防滑板频率频率:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
<div style={{ width: "190px", float: "left", marginLeft: "15px" }}>
<BorderBox10 >
<div>

<span style={{ fontSize: 12, color: "#50B15D" }}>脱水称重提升机:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
</div>
<div style={{ height: "21.2%", textAlign: "center" }}>
<div style={{ width: "195px", float: "left", marginLeft: "20px" }}>
<BorderBox10 >
<div>

<span style={{ fontSize: 12, color: "#50B15D" }}>伸缩试进料机频率:</span>
<span style={{ fontSize: 18 }}>999</span>
</div>
</BorderBox10>
</div>
<div style={{ width: "180px", float: "left", marginLeft: "15px" }}>
<BorderBox10 >
<div>

<span style={{ fontSize: 12, color: "#50B15D" }}>离心电机频率:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
<div style={{ width: "190px", float: "left", marginLeft: "15px" }}>
<BorderBox10 >
<div>

<span style={{ fontSize: 12, color: "#50B15D" }}>浸泡出料机频率:</span>
<span style={{ fontSize: 18 }}>999</span>
</div>
</BorderBox10>
</div>
</div>
<div style={{ height: "21.2%", textAlign: "center" }}>
<div style={{ width: "290px", float: "left", marginLeft: "20px" }}>
<BorderBox10 >
<div>

<span style={{ fontSize: 12, color: "#50B15D" }}>称重提升机预置速度:</span>
<span style={{ fontSize: 18 }}>10</span>
{/* <span style={{ fontSize: 18 }}>°C</span> */}
</div>
</BorderBox10>
</div>
<div style={{ width: "290px", float: "left", marginLeft: "10px" }}>
<BorderBox10 >
<div>

<span style={{ fontSize: 12, color: "#50B15D" }}>称重提升机预置频率:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
</div>
</BorderBox1>
</div>
<div style={{ width: "33%", height: "100%", float: "left" }}>
<BorderBox1>
<div style={{ width: '93%', height: '100%', display: "block", margin: " 0 auto", }}>
<div style={{ height: "15%" }}>
<div style={{ height: "30%", width: "100%", textAlign: "center" }}>
<div style={{ height: "50px", width: "90%", display: "block", margin: " 0 auto", textAlign: "center" }} className='titlebak'>
<h2 style={{ color: "#34CDE1" }}>&nbsp;&nbsp;报警信息</h2>
</div>
</div>
</div>
<ScrollBoard config={logData} style={{ width: '100%', height: '80%' }} />
</div>
</BorderBox1>
</div>
<div style={{ width: "33%", height: "100%", float: "left" }}>
<BorderBox1>
<div style={{ height: "14%" }}>
<div style={{ height: "30%", width: "100%", textAlign: "center" }}>
<div style={{ height: "50px", width: "90%", display: "block", margin: " 0 auto", textAlign: "center" }} className='titlebak'>
<h2 style={{ color: "#34CDE1" }}>&nbsp;&nbsp;搅拌间</h2>
</div>
</div>
</div>
<div style={{ height: "17.2%", textAlign: "center" }}>
<div style={{ width: "180px", float: "left", marginLeft: "20px" }}>
<BorderBox10 >
<div>

<span style={{ fontSize: 12, color: "#50B15D" }}>称重输送机预置重量:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
<div style={{ width: "200px", float: "left", marginLeft: "10px" }}>
<BorderBox10 >
<div>

<span style={{ fontSize: 12, color: "#50B15D" }}>承重输送机预预置次数:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
<div style={{ width: "210px", float: "left", marginLeft: "10px" }}>
<BorderBox10 >
<div>
<span style={{ fontSize: 12, color: "#50B15D" }}>承重输送机预预置次数:</span>
<span style={{ fontSize: 18 }}>100</span>
</div>
</BorderBox10>
</div>
</div>
<div style={{ height: "17.2%", textAlign: "center" }}>
<div style={{ width: "190px", float: "left", marginLeft: "20px" }}>
<BorderBox10 >
<div>
<span style={{ fontSize: 12, color: "#50B15D" }}>抖料机预置出料秒:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
<div style={{ width: "190px", float: "left", marginLeft: "10px" }}>
<BorderBox10 >
<div>
<span style={{ fontSize: 12, color: "#50B15D" }}>抖料机预置拌料分:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
<div style={{ width: "190px", float: "left", marginLeft: "10px" }}>
<BorderBox10 >
<div>
<span style={{ fontSize: 12, color: "#50B15D" }}>投辅料预置停滞秒:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
</div>
<div style={{ height: "17.2%", textAlign: "center" }}>
<div style={{ width: "190px", float: "left", marginLeft: "20px" }}>
<BorderBox10 >
<div>
<span style={{ fontSize: 12, color: "#50B15D" }}>抖料高位提升机频率:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
<div style={{ width: "190px", float: "left", marginLeft: "10px" }}>
<BorderBox10 >
<div>
<span style={{ fontSize: 12, color: "#50B15D" }}>抖料称重输送机频率:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
<div style={{ width: "190px", float: "left", marginLeft: "10px" }}>
<BorderBox10 >
<div>
<span style={{ fontSize: 12, color: "#50B15D" }}>抖料伸缩式进料机频率:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
</div>
<div style={{ height: "17.2%", textAlign: "center" }}>
<div style={{ width: "190px", float: "left", marginLeft: "20px" }}>
<BorderBox10 >
<div>
<span style={{ fontSize: 12, color: "#50B15D" }}>双向输送机频率:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
<div style={{ width: "190px", float: "left", marginLeft: "10px" }}>
<BorderBox10 >
<div>
<span style={{ fontSize: 12, color: "#50B15D" }}>风冷输送机频率:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
<div style={{ width: "190px", float: "left", marginLeft: "10px" }}>
<BorderBox10 >
<div>
<span style={{ fontSize: 12, color: "#50B15D" }}>1#转拌料电机频率:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
</div>
<div style={{ height: "17.2%", textAlign: "center" }}>
<div style={{ width: "190px", float: "left", marginLeft: "20px" }}>
<BorderBox10 >
<div>
<span style={{ fontSize: 12, color: "#50B15D" }}>2#转拌料电机频率:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
<div style={{ width: "190px", float: "left", marginLeft: "10px" }}>
<BorderBox10 >
<div>
<span style={{ fontSize: 12, color: "#50B15D" }}>3#转拌料电机频率:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
<div style={{ width: "190px", float: "left", marginLeft: "10px" }}>
<BorderBox10 >
<div>
<span style={{ fontSize: 12, color: "#50B15D" }}>4#转拌料电机频率:</span>
<span style={{ fontSize: 18 }}>10</span>
</div>
</BorderBox10>
</div>
</div>
</BorderBox1>
</div>
</div>
</div>

</div>
</FullScreenContainer>
</div>
)
}
export default KepData;

+ 93
- 0
frontend/src/components/KepData/index copy.less Datei anzeigen

@@ -0,0 +1,93 @@
#data-view {
width: 100%;
height: 100%;
background-color: #030409;
color: #fff;

#dv-full-screen-container {
background-image: url('./img/bg.png');
box-shadow: 0 0 3px blue;
display: flex;
flex-direction: column;
}


.main-header {
background-image: url('./img/top.png');
/* 背景图垂直、水平均居中 */
background-position: center center;
/* 背景图不平铺 */
background-repeat: no-repeat;
/* 当内容高度大于图片高度时,背景图像的位置相对于viewport固定 */
background-attachment: fixed;
/* 让背景图基于容器大小伸缩 */
background-size: cover;
height: 50px;
display: flex;
justify-content: space-between;
align-items: flex-end;

.mh-left {
font-size: 20px;
color: rgb(1, 134, 187);

a:visited {
color: rgb(1, 134, 187);
}
}

.mh-middle {
font-size: 30px;
}

.mh-left,
.mh-right {
width: 480px;
}
.dateclass{
font-size: 22px;
text-align: center;
}
}

.main-container {
height: calc(~'100% - 80px');
.mc-top,
.mc-bottom {
display: flex;
}

.mc-top {
height: 33%;
}
.mc-bottom {
height: 66%;
}
.main-container_dev{
height: 100%;
width: 25%;
}
.mc-bottom1{
width: 75%;
}
.mc-bottom2{
width: 25%;
}
}
.main-container_dev1{
width: 33.3%;
float: left;
}
.main-container_dev2{
float: left;
}
.titlebak{
background-image: url('./img/title1.png');
/* 背景图垂直、水平均居中 */
background-position: center center;
/* 背景图不平铺 */
background-repeat: no-repeat;
text-align: center;
}
}

+ 463
- 0
frontend/src/components/KepData/index copy.tsx Datei anzeigen

@@ -0,0 +1,463 @@
import React, { useState, useEffect } from 'react';
import { Col, Row, Statistic } from 'antd';
import './index.less'
import {
FullScreenContainer,
ScrollBoard,
Decoration3,
BorderBox12,
Decoration4,
} from '@jiaminghi/data-view-react'
const KepData: React.FC = () => {

const [thisdate, setThisdate] = useState({ timeStr: '' })

useEffect(() => {
setTimingFn();

}, [])


const style = { width: '5px', height: '45%' }

const style2 = {
width: '120px',
height: '50px',
lineHeight: '50px',
textAlign: 'center',
marginLeft: '200px',
}
function setTimingFn() {
setInterval(() => {
let dateYear = formatTime(new Date(), 'yyyy-MM-dd');
let dateDay = formatTime(new Date(), 'HH: mm: ss');
setThisdate({ timeStr: `${dateYear} ${dateDay} ` });
}, 1000);
}
function formatTime(time: string | number | Date, fmt: string) {
if (!time) return '';
else {
const date = new Date(time);
const o = {
'M+': date.getMonth() + 1,
'd+': date.getDate(),
'H+': date.getHours(),
'm+': date.getMinutes(),
's+': date.getSeconds(),
'q+': Math.floor((date.getMonth() + 3) / 3),
S: date.getMilliseconds(),
};
if (/(y+)/.test(fmt))
fmt = fmt.replace(
RegExp.$1,
(date.getFullYear() + '').substr(4 - RegExp.$1.length)
);
for (const k in o) {
if (new RegExp('(' + k + ')').test(fmt)) {
fmt = fmt.replace(
RegExp.$1,
RegExp.$1.length === 1
? o[k]
: ('00' + o[k]).substr(('' + o[k]).length)
);
}
}
return fmt;
}
}


return (
<div id="data-view">
<FullScreenContainer>

<div className="main-header">
<div className="mh-left"> </div>
<div className="mh-middle">
五芳斋数据大屏
</div>
<div className="mh-right">
<div className='dateclass' >
{thisdate.timeStr}
</div>
</div>
</div>
&nbsp;&nbsp;&nbsp;
<div className="main-container">
<div className="mc-top">
<BorderBox12 className='main-container_dev'>
<div style={{ height: "30%", width: "100%", textAlign: "center" }}>
<div style={{ height: "50px", width: "90%", display: "block", margin: " 0 auto", textAlign: "center" }} className='titlebak'>
<h2 style={{ color: "#34CDE1" }}>&nbsp;&nbsp;浸泡机数一</h2>
</div>
<span style={{ color: "red" }}>&nbsp;&nbsp;&nbsp;&nbsp;警告:</span>
{/* <span style={{ color: "red" }}>&nbsp;&nbsp;冷水罐温度过高</span> */}
</div>
<div style={{ height: "70%", width: "100%" }}>
<div style={{ width: "40%", height: "100%", float: "left", whiteSpace: "nowrap" }} >
<div style={{ height: "30%" }}>
&nbsp;&nbsp;&nbsp;&nbsp;
<img style={{ opacity: 1, height: 30 }} src={require('./img/aaaa.png')}></img>
<span style={{ fontSize: 15, color: "#50B15D" }}>冷水罐温度:</span>
<span style={{ fontSize: 18 }}>10</span>
<span style={{ marginLeft: '10px', fontSize: 18 }}>°C</span>
</div>
<div style={{ height: "30%" }}>
&nbsp;&nbsp;&nbsp;&nbsp;
<img style={{ opacity: 1, height: 30 }} src={require('./img/aaaa.png')}></img>
<span style={{ fontSize: 15, color: "#50B15D" }}>冷水罐温度:</span>
<span style={{ fontSize: 18 }}>10</span>
<span style={{ fontSize: 18 }}>°C</span>
</div>
<div style={{ height: "30%" }}>
&nbsp;&nbsp;&nbsp;&nbsp;
<img style={{ opacity: 1, height: 30 }} src={require('./img/aaaa.png')}></img>
<span style={{ fontSize: 15, color: "#50B15D" }}>冷水罐温度:</span>
<span style={{ fontSize: 18 }}>10</span>
<span style={{ marginLeft: '10px', fontSize: 18 }}>°C</span>
</div>

</div>
<div style={{ width: "60%", height: "100%", float: "left", textAlign: "center" }}>
<img src={require('./img/313x289.png')} style={{ width: "99%", height: "80%", float: "right" }} />
<h3 style={{ color: "green" }}>运行中</h3>
</div>

</div>
</BorderBox12>
<BorderBox12 className='main-container_dev'>
<div style={{ height: "30%", width: "100%", textAlign: "center" }}>
<div style={{ height: "50px", width: "90%", display: "block", margin: " 0 auto", textAlign: "center" }} className='titlebak'>
<h2 style={{ color: "#34CDE1" }}>&nbsp;&nbsp;浸泡机数一</h2>
</div>
<span style={{ color: "red" }}>&nbsp;&nbsp;&nbsp;&nbsp;警告:</span><span style={{ color: "red" }}>&nbsp;&nbsp;冷水罐温度过高</span>
</div>
<div style={{ height: "70%", width: "100%" }}>
<div style={{ width: "40%", height: "100%", float: "left", whiteSpace: "nowrap" }} >
<div style={{ height: "30%" }}>
&nbsp;&nbsp;&nbsp;&nbsp;
<img style={{ opacity: 1, height: 30 }} src={require('./img/aaaa.png')}></img>
<span style={{ fontSize: 15, color: "#50B15D" }}>冷水罐温度:</span>
<span style={{ fontSize: 18 }}>10</span>
<span style={{ marginLeft: '10px', fontSize: 18 }}>°C</span>
</div>
<div style={{ height: "30%" }}>
&nbsp;&nbsp;&nbsp;&nbsp;
<img style={{ opacity: 1, height: 30 }} src={require('./img/aaaa.png')}></img>
<span style={{ fontSize: 15, color: "#50B15D" }}>冷水罐温度:</span>
<span style={{ fontSize: 18 }}>10</span>
<span style={{ fontSize: 18 }}>°C</span>
</div>
<div style={{ height: "30%" }}>
&nbsp;&nbsp;&nbsp;&nbsp;
<img style={{ opacity: 1, height: 30 }} src={require('./img/aaaa.png')}></img>
<span style={{ fontSize: 15, color: "#50B15D" }}>冷水罐温度:</span>
<span style={{ fontSize: 18 }}>10</span>
<span style={{ marginLeft: '10px', fontSize: 18 }}>°C</span>
</div>

</div>
<div style={{ width: "60%", height: "100%", float: "left", textAlign: "center" }}>
<img src={require('./img/313x289.png')} style={{ width: "99%", height: "80%", float: "right" }} />
<h3 style={{ color: "green" }}>运行中</h3>
</div>

</div>
</BorderBox12>
<BorderBox12 className='main-container_dev'> <div style={{ height: "30%", width: "100%", textAlign: "center" }}>
<div style={{ height: "50px", width: "90%", display: "block", margin: " 0 auto", textAlign: "center" }} className='titlebak'>
<h2 style={{ color: "#34CDE1" }}>&nbsp;&nbsp;浸泡机数一</h2>
</div>
<span style={{ color: "red" }}>&nbsp;&nbsp;&nbsp;&nbsp;警告:</span><span style={{ color: "red" }}>&nbsp;&nbsp;冷水罐温度过高</span>
</div>
<div style={{ height: "70%", width: "100%" }}>
<div style={{ width: "40%", height: "100%", float: "left", whiteSpace: "nowrap" }} >
<div style={{ height: "30%" }}>
&nbsp;&nbsp;&nbsp;&nbsp;
<img style={{ opacity: 1, height: 30 }} src={require('./img/aaaa.png')}></img>
<span style={{ fontSize: 15, color: "#50B15D" }}>冷水罐温度:</span>
<span style={{ fontSize: 18 }}>10</span>
<span style={{ marginLeft: '10px', fontSize: 18 }}>°C</span>
</div>
<div style={{ height: "30%" }}>
&nbsp;&nbsp;&nbsp;&nbsp;
<img style={{ opacity: 1, height: 30 }} src={require('./img/aaaa.png')}></img>
<span style={{ fontSize: 15, color: "#50B15D" }}>冷水罐温度:</span>
<span style={{ fontSize: 18 }}>10</span>
<span style={{ fontSize: 18 }}>°C</span>
</div>
<div style={{ height: "30%" }}>
&nbsp;&nbsp;&nbsp;&nbsp;
<img style={{ opacity: 1, height: 30 }} src={require('./img/aaaa.png')}></img>
<span style={{ fontSize: 15, color: "#50B15D" }}>冷水罐温度:</span>
<span style={{ fontSize: 18 }}>10</span>
<span style={{ marginLeft: '10px', fontSize: 18 }}>°C</span>
</div>

</div>
<div style={{ width: "60%", height: "100%", float: "left", textAlign: "center" }}>
<img src={require('./img/313x289.png')} style={{ width: "99%", height: "80%", float: "right" }} />
<h3 style={{ color: "green" }}>运行中</h3>
</div>

</div></BorderBox12>
<BorderBox12 className='main-container_dev'> <div style={{ height: "30%", width: "100%", textAlign: "center" }}>
<div style={{ height: "50px", width: "90%", display: "block", margin: " 0 auto", textAlign: "center" }} className='titlebak'>
<h2 style={{ color: "#34CDE1" }}>&nbsp;&nbsp;浸泡机数一</h2>
</div>
<span style={{ color: "red" }}>&nbsp;&nbsp;&nbsp;&nbsp;警告:</span><span style={{ color: "red" }}>&nbsp;&nbsp;冷水罐温度过高</span>
</div>
<div style={{ height: "70%", width: "100%" }}>
<div style={{ width: "40%", height: "100%", float: "left", whiteSpace: "nowrap" }} >
<div style={{ height: "30%" }}>
&nbsp;&nbsp;&nbsp;&nbsp;
<img style={{ opacity: 1, height: 30 }} src={require('./img/aaaa.png')}></img>
<span style={{ fontSize: 15, color: "#50B15D" }}>冷水罐温度:</span>
<span style={{ fontSize: 18 }}>10</span>
<span style={{ marginLeft: '10px', fontSize: 18 }}>°C</span>
</div>
<div style={{ height: "30%" }}>
&nbsp;&nbsp;&nbsp;&nbsp;
<img style={{ opacity: 1, height: 30 }} src={require('./img/aaaa.png')}></img>
<span style={{ fontSize: 15, color: "#50B15D" }}>冷水罐温度:</span>
<span style={{ fontSize: 18 }}>10</span>
<span style={{ fontSize: 18 }}>°C</span>
</div>
<div style={{ height: "30%" }}>
&nbsp;&nbsp;&nbsp;&nbsp;
<img style={{ opacity: 1, height: 30 }} src={require('./img/aaaa.png')}></img>
<span style={{ fontSize: 15, color: "#50B15D" }}>冷水罐温度:</span>
<span style={{ fontSize: 18 }}>10</span>
<span style={{ marginLeft: '10px', fontSize: 18 }}>°C</span>
</div>

</div>
<div style={{ width: "60%", height: "100%", float: "left", textAlign: "center" }}>
<img src={require('./img/313x289.png')} style={{ width: "99%", height: "80%", float: "right" }} />
<h3 style={{ color: "green" }}>运行中</h3>
</div>

</div></BorderBox12>
</div>
<div className="mc-bottom">
<div className="mc-bottom1">
<div style={{ height: "50%" }}>
<BorderBox12 className='main-container_dev1'>
<div style={{ height: "30%", width: "100%", textAlign: "center" }}>
<div style={{ height: "50px", width: "90%", display: "block", margin: " 0 auto", textAlign: "center" }} className='titlebak'>
<h2 style={{ color: "#34CDE1" }}>&nbsp;&nbsp;储存罐一</h2>
</div>
<span style={{ color: "red" }}>&nbsp;&nbsp;&nbsp;&nbsp;警告:</span><span style={{ color: "red" }}>&nbsp;&nbsp;冷水罐温度过高</span>
</div>
<div style={{ height: "70%", width: "100%" }}>
<div style={{ height: "70%", width: "100%", justifyContent: "center", display: "flex", position: "absolute", textAlign: "center", alignItems: "center" }}>
<div>
<div style={{ float: "left" }}>

<img style={{ opacity: 1, height: 25 }} src={require('./img/aaaa.png')}></img>
<span style={{ fontSize: 15, color: "#50B15D" }}>温度:</span>
<span style={{ fontSize: 18 }}>10</span>
<span style={{ marginLeft: '10px', fontSize: 18 }}>°C</span>
</div>
<div style={{ float: "left" }}>
&nbsp; &nbsp; &nbsp; &nbsp;
</div>
<div style={{ float: "left" }}>

{/* <img style={{ opacity: 1, height: 25 }} src={require('./img/aaaa.png')}></img> */}
<span style={{ fontSize: 15, color: "#50B15D" }}>液位:</span>
<span style={{ fontSize: 18 }}>10</span>
<span style={{ marginLeft: '10px', fontSize: 18 }}>mm</span>
</div>

</div>
</div>
<img src={require('./img/屏幕截图 20.png')} style={{ height: "100%", width: "100%" }} />
</div>
</BorderBox12>
<BorderBox12 className='main-container_dev1'> <div style={{ height: "30%", width: "100%", textAlign: "center" }}>
<div style={{ height: "50px", width: "90%", display: "block", margin: " 0 auto", textAlign: "center" }} className='titlebak'>
<h2 style={{ color: "#34CDE1" }}>&nbsp;&nbsp;储存罐一</h2>
</div>
<span style={{ color: "red" }}>&nbsp;&nbsp;&nbsp;&nbsp;警告:</span><span style={{ color: "red" }}>&nbsp;&nbsp;冷水罐温度过高</span>
</div>
<div style={{ height: "70%", width: "100%" }}>
<div style={{ height: "70%", width: "100%", justifyContent: "center", display: "flex", position: "absolute", textAlign: "center", alignItems: "center" }}>
<div>
<div style={{ float: "left" }}>

<img style={{ opacity: 1, height: 25 }} src={require('./img/aaaa.png')}></img>
<span style={{ fontSize: 15, color: "#50B15D" }}>温度:</span>
<span style={{ fontSize: 18 }}>10</span>
<span style={{ marginLeft: '10px', fontSize: 18 }}>°C</span>
</div>
<div style={{ float: "left" }}>
&nbsp; &nbsp; &nbsp; &nbsp;
</div>
<div style={{ float: "left" }}>

{/* <img style={{ opacity: 1, height: 25 }} src={require('./img/aaaa.png')}></img> */}
<span style={{ fontSize: 15, color: "#50B15D" }}>液位:</span>
<span style={{ fontSize: 18 }}>10</span>
<span style={{ marginLeft: '10px', fontSize: 18 }}>mm</span>
</div>

</div>
</div>
<img src={require('./img/屏幕截图 20.png')} style={{ height: "100%", width: "100%" }} />
</div></BorderBox12>
<BorderBox12 className='main-container_dev1'> <div style={{ height: "30%", width: "100%", textAlign: "center" }}>
<div style={{ height: "50px", width: "90%", display: "block", margin: " 0 auto", textAlign: "center" }} className='titlebak'>
<h2 style={{ color: "#34CDE1" }}>&nbsp;&nbsp;储存罐一</h2>
</div>
<span style={{ color: "red" }}>&nbsp;&nbsp;&nbsp;&nbsp;警告:</span><span style={{ color: "red" }}>&nbsp;&nbsp;冷水罐温度过高</span>
</div>
<div style={{ height: "70%", width: "100%" }}>
<div style={{ height: "70%", width: "100%", justifyContent: "center", display: "flex", position: "absolute", textAlign: "center", alignItems: "center" }}>
<div>
<div style={{ float: "left" }}>

<img style={{ opacity: 1, height: 25 }} src={require('./img/aaaa.png')}></img>
<span style={{ fontSize: 15, color: "#50B15D" }}>温度:</span>
<span style={{ fontSize: 18 }}>10</span>
<span style={{ marginLeft: '10px', fontSize: 18 }}>°C</span>
</div>
<div style={{ float: "left" }}>
&nbsp; &nbsp; &nbsp; &nbsp;
</div>
<div style={{ float: "left" }}>

{/* <img style={{ opacity: 1, height: 25 }} src={require('./img/aaaa.png')}></img> */}
<span style={{ fontSize: 15, color: "#50B15D" }}>液位:</span>
<span style={{ fontSize: 18 }}>10</span>
<span style={{ marginLeft: '10px', fontSize: 18 }}>mm</span>
</div>

</div>
</div>
<img src={require('./img/屏幕截图 20.png')} style={{ height: "100%", width: "100%" }} />
</div></BorderBox12>
</div>
<div style={{ height: "50%" }}>
<BorderBox12 className='main-container_dev2' style={{ width: "33.3%" }}> <div style={{ height: "30%", width: "100%", textAlign: "center" }}>
<div style={{ height: "50px", width: "90%", display: "block", margin: " 0 auto", textAlign: "center" }} className='titlebak'>
<h2 style={{ color: "#34CDE1" }}>&nbsp;&nbsp;储存罐一</h2>
</div>
<span style={{ color: "red" }}>&nbsp;&nbsp;&nbsp;&nbsp;警告:</span><span style={{ color: "red" }}>&nbsp;&nbsp;冷水罐温度过高</span>
</div>
<div style={{ height: "70%", width: "100%" }}>
<div style={{ height: "70%", width: "100%", justifyContent: "center", display: "flex", position: "absolute", textAlign: "center", alignItems: "center" }}>
<div>
<div style={{ float: "left" }}>

<img style={{ opacity: 1, height: 25 }} src={require('./img/aaaa.png')}></img>
<span style={{ fontSize: 15, color: "#50B15D" }}>温度:</span>
<span style={{ fontSize: 18 }}>10</span>
<span style={{ marginLeft: '10px', fontSize: 18 }}>°C</span>
</div>
<div style={{ float: "left" }}>
&nbsp; &nbsp; &nbsp; &nbsp;
</div>
<div style={{ float: "left" }}>

{/* <img style={{ opacity: 1, height: 25 }} src={require('./img/aaaa.png')}></img> */}
<span style={{ fontSize: 15, color: "#50B15D" }}>液位:</span>
<span style={{ fontSize: 18 }}>10</span>
<span style={{ marginLeft: '10px', fontSize: 18 }}>mm</span>
</div>

</div>
</div>
<img src={require('./img/屏幕截图 20.png')} style={{ height: "100%", width: "100%" }} />
</div></BorderBox12>
<BorderBox12 className='main-container_dev2' style={{ width: "66.6%" }}>
<div style={{ height: "20%", width: "100%", textAlign: "center" }}>
<div style={{ height: "50px", width: "90%", display: "block", margin: " 0 auto", textAlign: "center" }} className='titlebak'>
<h2 style={{ color: "#34CDE1" }}>&nbsp;&nbsp;报警记录</h2>
</div>
{/* <span style={{ color: "red" }}>&nbsp;&nbsp;&nbsp;&nbsp;警告:</span><span style={{ color: "red" }}>&nbsp;&nbsp;冷水罐温度过高</span> */}
</div>
<div style={{ height: "80%", width: "100%", textAlign: "center" }}>
<div style={{ width: '95%', height: '100%', display: "block", margin: " 0 auto", }}>
<ScrollBoard config={{
header: ['报警设备', '报警信息', '报警时间'],
headerBGC:"#000724",
oddRowBGC:"#000724",
evenRowBGC:"#000724",
data: [
['沁泡机', '维度过高', '2023-01-18'],
['传送带', '停止运行', '2023-01-18']
]
}} style={{ width: '100%', height: '100%' }} />
</div>
</div>
</BorderBox12>
</div>
</div>
<div className="mc-bottom2">
<BorderBox12>
<div style={{ height: "15%", width: "100%", textAlign: "center" }}>
<div style={{ height: "50px", width: "90%", display: "block", margin: " 0 auto", textAlign: "center" }} className='titlebak'>
<h2 style={{ color: "#34CDE1" }}>&nbsp;&nbsp;传输带</h2>
</div>
<span style={{ color: "red" }}>&nbsp;&nbsp;&nbsp;&nbsp;警告:</span><span style={{ color: "red" }}>&nbsp;&nbsp;冷水罐温度过高</span>
</div>
<div style={{ height: "85%", width: "100%" }}>
<div style={{ width: "50%", float: "left", height: "100%", }}>
<div style={{ height: "30%", width: "100%" }}>
<img style={{ width: "100%", height: "90%" }} src={require('./img/R-C.gif')}></img>
</div>
<div style={{ height: "70%", width: "100%" }}>
<div style={{ height: "20%" }}>
&nbsp;&nbsp;&nbsp;&nbsp;
<img style={{ opacity: 1, height: 30 }} src={require('./img/aaaa.png')}></img>
<span style={{ fontSize: 15, color: "#50B15D" }}>冷水罐温度:</span>
<span style={{ fontSize: 18 }}>10</span>
<span style={{ marginLeft: '10px', fontSize: 18 }}>°C</span>
</div>
<div style={{ height: "20%" }}>
&nbsp;&nbsp;&nbsp;&nbsp;
<img style={{ opacity: 1, height: 30 }} src={require('./img/aaaa.png')}></img>
<span style={{ fontSize: 15, color: "#50B15D" }}>冷水罐温度:</span>
<span style={{ fontSize: 18 }}>10</span>
<span style={{ marginLeft: '10px', fontSize: 18 }}>°C</span>
</div>
<div style={{ height: "20%" }}>
&nbsp;&nbsp;&nbsp;&nbsp;
<img style={{ opacity: 1, height: 30 }} src={require('./img/aaaa.png')}></img>
<span style={{ fontSize: 15, color: "#50B15D" }}>冷水罐温度:</span>
<span style={{ fontSize: 18 }}>10</span>
<span style={{ marginLeft: '10px', fontSize: 18 }}>°C</span>
</div>
<div style={{ height: "20%" }}>
&nbsp;&nbsp;&nbsp;&nbsp;
<img style={{ opacity: 1, height: 30 }} src={require('./img/aaaa.png')}></img>
<span style={{ fontSize: 15, color: "#50B15D" }}>冷水罐温度:</span>
<span style={{ fontSize: 18 }}>10</span>
<span style={{ marginLeft: '10px', fontSize: 18 }}>°C</span>
</div>
<div style={{ height: "20%" }}>
&nbsp;&nbsp;&nbsp;&nbsp;
<img style={{ opacity: 1, height: 30 }} src={require('./img/aaaa.png')}></img>
<span style={{ fontSize: 15, color: "#50B15D" }}>冷水罐温度:</span>
<span style={{ fontSize: 18 }}>10</span>
<span style={{ marginLeft: '10px', fontSize: 18 }}>°C</span>
</div>
</div>


</div>
<div style={{ width: "50%", height: "100%", float: "left", textAlign: "center" }}>
<img style={{ width: "100%", height: "90%" }} src={require('./img/ssssx.png')}></img>
<h3 style={{ color: "green" }}>运行中</h3>
</div>
</div>
</BorderBox12>
</div>
</div>
</div>
</FullScreenContainer>
</div>
)
}
export default KepData;

+ 110
- 0
frontend/src/components/KepData/index.less Datei anzeigen

@@ -0,0 +1,110 @@
#data-view {
width: 100%;
height: 100%;
background-color: #030409;
color: #fff;

#dv-full-screen-container {
background-image: url('./img/bg.png');
box-shadow: 0 0 3px blue;
display: flex;
flex-direction: column;
}


.main-header {
background-image: url('./img/top.png');
/* 背景图垂直、水平均居中 */
background-position: center center;
/* 背景图不平铺 */
background-repeat: no-repeat;
/* 当内容高度大于图片高度时,背景图像的位置相对于viewport固定 */
background-attachment: fixed;
/* 让背景图基于容器大小伸缩 */
background-size: cover;
height: 50px;
display: flex;
justify-content: space-between;
align-items: flex-end;

.mh-left {
font-size: 20px;
color: rgb(1, 134, 187);

a:visited {
color: rgb(1, 134, 187);
}
}

.mh-middle {
font-size: 30px;
}

.mh-left,
.mh-right {
width: 480px;
}
.dateclass{
font-size: 22px;
text-align: center;
}
}

.main-container {
height: calc(~'100% - 80px');
.mc-top,
.mc-bottom {
display: flex;
}

.mc-top {
height: 33%;
}
.mc-bottom {
height: 66%;
}
.main-container_dev{
height: 100%;
width: 100%;
}
.qpj{
// background-image: url('./img/555.png');
}
.mc-bottom1{
width: 75%;
}
.mc-bottom2{
width: 25%;
}
}
.titlebak{
background-image: url('./img/title1.png');
/* 背景图垂直、水平均居中 */
background-position: center center;
/* 背景图不平铺 */
background-repeat: no-repeat;
text-align: center;
}

.main-container_c{
height: 100%;
// border: 1px red solid;
}
.main-container_s{
height: 33.3%;
width: 100%;
//border: 1px red solid;
}
.main-container_z{
height: 33.3%;
width: 100%;
// border: 1px red solid;
}
.main-container_x{
height: 33.3%;
width: 100%;
//border: 1px red solid;
}
}

+ 769
- 0
frontend/src/components/KepData/index.tsx Datei anzeigen

@@ -0,0 +1,769 @@
import React, { useState, useEffect } from 'react';
import { Col, Row, Statistic } from 'antd';
import './index.less'
import {
FullScreenContainer,
BorderBox6,
BorderBox10,
BorderBox1,
ScrollBoard,
BorderBox4,
} from '@jiaminghi/data-view-react'
import Api from "@/api/kepService"
const KepData: React.FC = () => {

const [thisdate, setThisdate] = useState({ timeStr: '' })

const [dataVData, setDataVData] = useState({ "A1": "AA" })
const [logData, setLogData] = useState({
header: ['报警设备', '报警信息', '报警时间'],
rowNum: 5,
headerBGC: "#000724",
oddRowBGC: "#000724",
evenRowBGC: "#000724",
data: [[]]
})

const initScript = () => {
let script = document.createElement('script')
script.type = 'text/javascript'
script.async = true
script.src = './index.js'//这个代表的是script 的src
document.head.appendChild(script)
}

useEffect(() => {
const id = setInterval(() => {
getdatavData();
}, 1000*1);

return () => {
clearInterval(0); //组件卸载时清除定时器
};

}, [])

const getdatavData = async () => {
const response = await Api.getdatavData();
if (response.statusCode === 200) {
setDataVData(response.data);
}

Api.getlogs().then((r) => {
setLogData({
header: ['报警设备', '报警信息', '报警时间'],
rowNum: 5,
headerBGC: "#000724",
oddRowBGC: "#000724",
evenRowBGC: "#000724",
data: r.data
});
});
}

const style = { width: '5px', height: '45%' }

const style2 = {
width: '120px',
height: '50px',
lineHeight: '50px',
textAlign: 'center',
marginLeft: '200px',
}
function setTimingFn() {
setInterval(() => {
let dateYear = formatTime(new Date(), 'yyyy-MM-dd');
let dateDay = formatTime(new Date(), 'HH: mm: ss');
setThisdate({ timeStr: `${dateYear} ${dateDay} ` });
}, 1000);
}
function formatTime(time: string | number | Date, fmt: string) {
if (!time) return '';
else {
const date = new Date(time);
const o = {
'M+': date.getMonth() + 1,
'd+': date.getDate(),
'H+': date.getHours(),
'm+': date.getMinutes(),
's+': date.getSeconds(),
'q+': Math.floor((date.getMonth() + 3) / 3),
S: date.getMilliseconds(),
};
if (/(y+)/.test(fmt))
fmt = fmt.replace(
RegExp.$1,
(date.getFullYear() + '').substr(4 - RegExp.$1.length)
);
for (const k in o) {
if (new RegExp('(' + k + ')').test(fmt)) {
fmt = fmt.replace(
RegExp.$1,
RegExp.$1.length === 1
? o[k]
: ('00' + o[k]).substr(('' + o[k]).length)
);
}
}
return fmt;
}
}


return (
<div id="data-view">
<FullScreenContainer>

<div className="main-header">
<div className="mh-left"> </div>
<div className="mh-middle">
五芳斋数据大屏
</div>
<div className="mh-right">
<div className='dateclass' >
{thisdate.timeStr}
</div>
</div>
</div>
<div className="main-container">
<div className='main-container_c'>
<div className='main-container_s'>
<div style={{ width: "33%", height: "100%", float: "left", textAlign: "center" }}>
<BorderBox1>
<div style={{ height: "15%" }}>
<div style={{ height: "30%", width: "100%", textAlign: "center" }}>
<div style={{ height: "50px", width: "90%", display: "block", margin: " 0 auto", textAlign: "center" }} className='titlebak'>
<h2 style={{ color: "#34CDE1" }}>&nbsp;&nbsp;1#浸泡间</h2>
</div>
</div>
</div>
<div style={{ float: "left", width: "33.3%" }}>
<div style={{ height: "55px", width: "90%", marginLeft: "15px" }}>
<BorderBox10 >
<div ><h4>1#浸泡机</h4> </div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>温度:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device1.A1"]}</span>
</div>
</BorderBox10>
</div>
<div style={{ height: "55px", width: "90%", marginLeft: "15px", marginTop: "10px" }}>
<BorderBox10 >
<div ><h4 >1#称重提升机</h4> </div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>重量:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device1.A5"]}</span>
</div>
</BorderBox10>
</div>
<div style={{ height: "55px", width: "90%", marginLeft: "15px", marginTop: "10px" }}>
<BorderBox10 >
<div ><h4>1#限量提升机</h4> </div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>频率:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device1.A9"]}</span>
</div>
</BorderBox10>
</div>
<div style={{ height: "80px", width: "90%", marginLeft: "15px", marginTop: "10px" }}>
<BorderBox10 >
<div ><h4>储油暂存罐</h4> </div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>温度:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device1.A3"]}</span>
</div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>压力:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device1.A4"]}</span>
</div>
</BorderBox10>
</div>
</div>
<div style={{ float: "left", width: "33.3%" }}>
<div style={{ height: "55px", width: "90%", marginLeft: "15px" }}>
<BorderBox10 >
<div ><h4>1#防浮链板</h4> </div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>频率:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device1.A14"]}</span>
</div>
</BorderBox10>
</div>
<div style={{ height: "55px", width: "90%", marginLeft: "15px", marginTop: "10px" }}>
<BorderBox10 >
<div ><h4>1#浸泡出缓存提升机</h4> </div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>频率:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device1.A16"]}</span>
</div>
</BorderBox10>
</div>
<div style={{ height: "55px", width: "90%", marginLeft: "15px", marginTop: "10px" }}>
<BorderBox10 >
{/* <div ><h4>1#脱水称重提升机</h4> </div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>频率:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device1.A18"]}</span>
</div> */}
<div ><h4>1#浸泡出料机</h4> </div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>频率:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device1.A25"]}</span>
</div>
</BorderBox10>
</div>
<div style={{ height: "80px", width: "90%", marginLeft: "15px", marginTop: "10px" }}>
<BorderBox10 >
<div ><h4>1#称重提升机</h4> </div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>预置重量:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device1.A8"]}</span>
</div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>预置次数:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device1.A10"]}</span>
</div>
</BorderBox10>
</div>
</div>
<div style={{ float: "left", width: "33.3%" }}>
<div style={{ height: "55px", width: "90%", marginLeft: "15px" }}>
<BorderBox10 >
<div ><h4>1#伸缩式进料机</h4> </div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>频率:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device1.A20"]}</span>
</div>
</BorderBox10>
</div>
<div style={{ height: "55px", width: "90%", marginLeft: "15px", marginTop: "10px" }}>
<BorderBox10 >
<div ><h4>1#离心电机</h4> </div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>频率:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device1.A22"]}</span>
</div>
</BorderBox10>
</div>
<div style={{ height: "55px", width: "90%", marginLeft: "15px", marginTop: "10px" }}>
<BorderBox10 >
<div ><h4>跨线提升机</h4> </div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>频率:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device1.A24"]}</span>
</div>
</BorderBox10>
</div>
<div style={{ height: "80px", width: "90%", marginLeft: "15px", marginTop: "10px" }}>
<BorderBox10 >
{/* <div ><h4>1#浸泡出料机</h4> </div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>频率:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device1.A25"]}</span>
</div> */}
<div ><h4>1#脱水称重提升机</h4> </div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>频率:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device1.A18"]}</span>
</div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>备料次数:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device1.A27"]}</span>
</div>
</BorderBox10>
</div>
</div>
</BorderBox1>
</div>
<div style={{ width: "33%", height: "100%", float: "left", textAlign: "center" }}>
<BorderBox1>
<div style={{ height: "15%" }}>
<div style={{ height: "30%", width: "100%", textAlign: "center" }}>
<div style={{ height: "50px", width: "90%", display: "block", margin: " 0 auto", textAlign: "center" }} className='titlebak'>
<h2 style={{ color: "#34CDE1" }}>&nbsp;&nbsp;油炸间</h2>
</div>
</div>
</div>
<div style={{ float: "left", width: "50%" }}>
<div style={{ height: "58px", width: "90%", marginLeft: "15px" }}>
<BorderBox10 >
<div ><h4>一区温度测量</h4> </div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>测量值:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device2.A1"]}</span>
</div>
</BorderBox10>
</div>
<div style={{ height: "58px", width: "90%", marginLeft: "15px", marginTop: "10px" }}>
<BorderBox10 >
<div ><h4>二区温度测量</h4> </div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>测量值:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device2.A2"]}</span>
</div>
</BorderBox10>
</div>
<div style={{ height: "58px", width: "90%", marginLeft: "15px", marginTop: "10px" }}>
<BorderBox10 >
<div ><h4>三区温度测量</h4> </div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>测量值:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device2.A3"]}</span>
</div>
</BorderBox10>
</div>
<div style={{ height: "58px", width: "90%", marginLeft: "15px", marginTop: "10px" }}>
<BorderBox10 >
<div ><h4>刮渣开</h4> </div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>时间</span>
<span style={{ fontSize: 12 }}>{dataVData["Device2.A7"]}</span>
</div>
</BorderBox10>
</div>
</div>
<div style={{ float: "left", width: "50%" }}>
<div style={{ height: "58px", width: "90%", marginLeft: "15px" }}>
<BorderBox10 >
<div ><h4>一区温度测量</h4> </div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>测量值:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device2.A4"]}</span>
</div>
</BorderBox10>
</div>
<div style={{ height: "58px", width: "90%", marginLeft: "15px", marginTop: "10px" }}>
<BorderBox10 >
<div ><h4>二区温度测量</h4> </div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>测量值:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device2.A5"]}</span>
</div>
</BorderBox10>
</div>
<div style={{ height: "58px", width: "90%", marginLeft: "15px", marginTop: "10px" }}>
<BorderBox10 >
<div ><h4>三区温度测量</h4> </div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>测量值:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device2.A6"]}</span>
</div>
</BorderBox10>
</div>
<div style={{ height: "58px", width: "90%", marginLeft: "15px", marginTop: "10px" }}>
<BorderBox10 >
<div ><h4>刮渣关</h4> </div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>时间</span>
<span style={{ fontSize: 12 }}>{dataVData["Device2.A8"]}</span>
</div>
</BorderBox10>
</div>
</div>
</BorderBox1>
</div>
<div style={{ width: "33%", height: "100%", float: "left", textAlign: "center" }}>
<BorderBox1>
<div style={{ height: "14%" }}>
<div style={{ height: "30%", width: "100%", textAlign: "center" }}>
<div style={{ height: "50px", width: "90%", display: "block", margin: " 0 auto", textAlign: "center" }} className='titlebak'>
<h2 style={{ color: "#34CDE1" }}>&nbsp;&nbsp;搅拌间</h2>
</div>
</div>
</div>
<div style={{ float: "left", width: "33.3%" }}>
<div style={{ height: "98px", width: "90%", marginLeft: "15px", marginTop: "10px" }}>
<BorderBox10 >
<div ><h4>称重输送机</h4> </div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>预置重量:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device2.A5"]}</span>
</div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>预置次数:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device2.A6"]}</span>
</div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>预实时重量:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device2.A28"]}</span>
</div>
</BorderBox10>
</div>
<div style={{ height: "55px", width: "90%", marginLeft: "15px", marginTop: "10px" }}>
<BorderBox10 >
<div ><h4>1#离心机</h4> </div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>重量:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device2.A16"]}</span>
</div>
</BorderBox10>
</div>
<div style={{ height: "80px", width: "90%", marginLeft: "15px", marginTop: "10px" }}>
<BorderBox10 >
<div ><h4>1#称重提升机</h4> </div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>重量:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device2.A1"]}</span>
</div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>次数:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device2.A2"]}</span>
</div>
</BorderBox10>
</div>
</div>
<div style={{ float: "left", width: "33.3%" }}>
<div style={{ height: "55px", width: "90%", marginLeft: "15px", marginTop: "10px" }}>
<BorderBox10 >
{/* <div ><h4>1#脱油称重提升机</h4> </div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>频率:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device3.A12"]}</span>
</div> */}
<div ><h4>主转盘旋转电机</h4> </div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>频率:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device3.A25"]}</span>
</div>
</BorderBox10>
</div>
<div style={{ height: "55px", width: "90%", marginLeft: "15px", marginTop: "10px" }}>
<BorderBox10 >
<div ><h4>1#伸缩式进料机</h4> </div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>频率:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device2.A14"]}</span>
</div>
</BorderBox10>
</div>
<div style={{ height: "110px", width: "90%", marginLeft: "15px", marginTop: "10px" }}>
<BorderBox10 >
<div ><h4>抖料机</h4> </div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>预置出料秒:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device2.A7"]}</span>
</div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>预置出料分:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device2.A8"]}</span>
</div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>投料预置停滞秒:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device2.A9"]}</span>
</div>
</BorderBox10>
</div>
</div>
<div style={{ float: "left", width: "33.3%" }}>
<div style={{ height: "55px", width: "90%", marginLeft: "15px" , marginTop: "10px"}}>
<BorderBox10 >
<div ><h4>拌料高位提升机</h4> </div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>频率:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device2.A18"]}</span>
</div>
</BorderBox10>
</div>
<div style={{ height: "55px", width: "90%", marginLeft: "15px", marginTop: "10px" }}>
<BorderBox10 >
<div ><h4>拌料称重输送机</h4> </div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>频率:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device2.A19"]}</span>
</div>
</BorderBox10>
</div>
{/* <div style={{ height: "55px", width: "90%", marginLeft: "15px", marginTop: "10px" }}>
<BorderBox10 >
<div ><h4>拌料称伸缩式进料机</h4> </div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>频率:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device3.A20"]}</span>
</div>
</BorderBox10>
</div> */}
<div style={{ height: "98px", width: "90%", marginLeft: "15px", marginTop: "10px" }}>
<BorderBox10 >
<div ><h4>1#脱油称重提升机</h4> </div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>频率:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device2.A12"]}</span>
</div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>实时重量</span>
<span style={{ fontSize: 12 }}>{dataVData["Device2.A26"]}</span>
</div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>备料次数</span>
<span style={{ fontSize: 12 }}>{dataVData["Device2.A29"]}</span>
</div>
</BorderBox10>
</div>
</div>
</BorderBox1>
</div>
</div>
<div className='main-container_z'>
<BorderBox1>
<img style={{ width: "100%", height: "100%" }} src={require('./img/20231113174659.png')}></img>
</BorderBox1>
</div>
<div className='main-container_x'>
<div style={{ width: "33%", height: "100%", float: "left", textAlign: "center" }}>
<BorderBox1>
<div style={{ height: "15%" }}>
<div style={{ height: "30%", width: "100%", textAlign: "center" }}>
<div style={{ height: "50px", width: "90%", display: "block", margin: " 0 auto", textAlign: "center" }} className='titlebak'>
<h2 style={{ color: "#34CDE1" }}>&nbsp;&nbsp;2#浸泡间</h2>
</div>
</div>
</div>
<div style={{ float: "left", width: "33.3%" }}>
<div style={{ height: "55px", width: "90%", marginLeft: "15px" }}>
<BorderBox10 >
<div ><h4>2#浸泡机</h4> </div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>温度:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device1.A2"]}</span>
</div>
</BorderBox10>
</div>
<div style={{ height: "55px", width: "90%", marginLeft: "15px", marginTop: "10px" }}>
<BorderBox10 >
<div ><h4 >2#称重提升机</h4> </div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>重量:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device1.A6"]}</span>
</div>
</BorderBox10>
</div>
{/* <div style={{ height: "55px", width: "90%", marginLeft: "15px", marginTop: "10px" }}>
<BorderBox10 >
<div ><h4 >原油罐</h4> </div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>称重重量:</span>
<span style={{ fontSize: 12 }}>10</span>
</div>
</BorderBox10>
</div> */}
<div style={{ height: "55px", width: "90%", marginLeft: "15px", marginTop: "10px" }}>
<BorderBox10 >
<div ><h4>2#限量提升机</h4> </div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>频率:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device1.A13"]}</span>
</div>
</BorderBox10>
</div>
<div style={{ height: "55px", width: "90%", marginLeft: "15px", marginTop: "10px" }}>
<BorderBox10 >
<div ><h4>原油罐称重:</h4> </div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>重量:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device1.A7"]}</span>
</div>
</BorderBox10>
</div>
</div>
<div style={{ float: "left", width: "33.3%" }}>
<div style={{ height: "55px", width: "90%", marginLeft: "15px" }}>
<BorderBox10 >
<div ><h4>2#防浮链板</h4> </div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>频率:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device1.A15"]}</span>
</div>
</BorderBox10>
</div>
<div style={{ height: "55px", width: "90%", marginLeft: "15px", marginTop: "10px" }}>
<BorderBox10 >
<div ><h4>2#浸泡出缓存提升机</h4> </div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>频率:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device1.A17"]}</span>
</div>
</BorderBox10>
</div>
<div style={{ height: "55px", width: "90%", marginLeft: "15px", marginTop: "10px" }}>
<BorderBox10 >
<div ><h4>2#脱水称重提升机</h4> </div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>频率:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device1.A19"]}</span>
</div>
</BorderBox10>
</div>
<div style={{ height: "80px", width: "90%", marginLeft: "15px", marginTop: "10px" }}>
<BorderBox10 >
<div ><h4>2#承重提升机</h4> </div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>预置重量:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device1.A9"]}</span>
</div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>预置次数:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device1.A11"]}</span>
</div>
</BorderBox10>
</div>
</div>
<div style={{ float: "left", width: "33.3%" }}>

<div style={{ height: "55px", width: "90%", marginLeft: "15px" }}>
<BorderBox10 >
<div ><h4>2#伸缩式进料机</h4> </div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>频率:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device1.A21"]}</span>
</div>
</BorderBox10>
</div>
<div style={{ height: "55px", width: "90%", marginLeft: "15px", marginTop: "10px" }}>
<BorderBox10 >
<div ><h4>2#离心电机</h4> </div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>频率:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device1.A23"]}</span>
</div>
</BorderBox10>
</div>
<div style={{ height: "55px", width: "90%", marginLeft: "15px", marginTop: "10px" }}>
<BorderBox10 >
<div ><h4>2#浸泡出料机</h4> </div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>频率:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device1.A26"]}</span>
</div>
</BorderBox10>
</div>
<div style={{ height: "55px", width: "90%", marginLeft: "15px", marginTop: "10px" }}>
<BorderBox10 >
<div ><h4>跨线提升机</h4> </div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>频率:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device1.A24"]}</span>
</div>
</BorderBox10>
</div>
</div>
</BorderBox1>
</div>
<div style={{ width: "33%", height: "100%", float: "left", textAlign: "center" }}>
<BorderBox1>
<div style={{ width: '93%', height: '99%', display: "block", margin: " 0 auto", }}>
<div style={{ height: "15%" }}>
<div style={{ height: "30%", width: "100%", textAlign: "center" }}>
<div style={{ height: "50px", width: "90%", display: "block", margin: " 0 auto", textAlign: "center" }} className='titlebak'>
<h2 style={{ color: "#34CDE1" }}>&nbsp;&nbsp;报警信息</h2>
</div>
</div>
</div>
<ScrollBoard config={logData} style={{ width: '98%', height: '80%' }} />
</div>
</BorderBox1>
</div>
<div style={{ width: "33%", height: "100%", float: "left", textAlign: "center" }}>
<BorderBox1>
<div style={{ height: "14%" }}>
<div style={{ height: "30%", width: "100%", textAlign: "center" }}>
<div style={{ height: "50px", width: "90%", display: "block", margin: " 0 auto", textAlign: "center" }} className='titlebak'>
<h2 style={{ color: "#34CDE1" }}>&nbsp;&nbsp;搅拌间</h2>
</div>
</div>
</div>
<div style={{ float: "left", width: "33.3%" }}>
<div style={{ height: "80px", width: "90%", marginLeft: "15px", marginTop: "10px" }}>
<BorderBox10 >
<div ><h4>2#称重提升机</h4></div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>重量:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device2.A2"]}</span>
</div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>次数:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device2.A4"]}</span>
</div>
</BorderBox10>
</div>
<div style={{ height: "55px", width: "90%", marginLeft: "15px", marginTop: "10px" }}>
<BorderBox10 >
<div ><h4>2#伸缩式进料机</h4></div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>频率:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device2.A15"]}</span>
</div>
</BorderBox10>
</div>
</div>
<div style={{ float: "left", width: "33.3%" }}>
<div style={{ height: "80px", width: "90%", marginLeft: "15px", marginTop: "10px" }}>
<BorderBox10 >
<div ><h4>2#脱油称重提升机</h4></div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>频率:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device2.A13"]}</span>
</div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>实时重量</span>
<span style={{ fontSize: 12 }}>{dataVData["Device2.A27"]}</span>
</div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>备料次数:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device2.A30"]}</span>
</div>
</BorderBox10>
</div>
<div style={{ height: "55px", width: "90%", marginLeft: "15px", marginTop: "10px" }}>
<BorderBox10 >
<div ><h4>2#离心电机</h4></div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>频率:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device2.A17"]}</span>
</div>
</BorderBox10>
</div>
</div>
<div style={{ float: "left", width: "33.3%" }}>
<div style={{ height: "130px", width: "90%", marginLeft: "15px", marginTop: "10px" }}>
<BorderBox10 >
<div ><h4>旋转抖料电机</h4> </div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>1#频率:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device2.A21"]}</span>
</div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>2#频率:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device2.A22"]}</span>
</div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>3#频率:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device2.A23"]}</span>
</div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>4#频率:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device2.A24"]}</span>
</div>
</BorderBox10>
</div>
<div style={{ height: "55px", width: "90%", marginLeft: "15px", marginTop: "10px" }}>
<BorderBox10 >
<div ><h4>拌料称伸缩式进料机</h4> </div>
<div >
<span style={{ fontSize: 10, color: "#50B15D" }}>频率:</span>
<span style={{ fontSize: 12 }}>{dataVData["Device2.A20"]}</span>
</div>
</BorderBox10>
</div>
</div>
</BorderBox1>
</div>
</div>
</div>

</div>
</FullScreenContainer>
</div>
)
}
export default KepData;



+ 233
- 0
frontend/src/pages/agvbasic copy/index.tsx Datei anzeigen

@@ -0,0 +1,233 @@
// agv基础数据页面
import type { ActionType, ProColumns } from '@ant-design/pro-components';
import { ProTable } from '@ant-design/pro-components';
import { Button, Modal, Form, Input, message, Popconfirm, Tag} from 'antd';
import { useEffect, useRef, useState } from 'react';

import agvbasicInfoAPI from '@/api/agvbasicService'
const AgvPoint = () => {


// 2.定义编辑/新增的弹窗

const [isModalOpen, setIsModalOpen] = useState(false);
// 3.定义表单
const [typeForm] = Form.useForm();
const [modelTitle, setModelTitle] = useState<string>();
const actionRef = useRef<ActionType>();

// 1.定义列
const columns: ProColumns<AgvbasicInfoTypes.Info>[] = [
{
title: 'id',
dataIndex: 'id',
tip: '规则名称是唯一的 key',
hideInSearch: true,
hideInTable: true,

},
{
title: '点位名称',
dataIndex: 'name',
ellipsis: true,
align: 'center'
},

{
title: '点位编码',
dataIndex: 'code',
hideInSearch: true,
ellipsis: true,
align: 'center'
},
{
title: '操作',
valueType: 'option',
key: 'option',
align: 'center',
// 4.操作内有两个按钮
render: (_, record) => [
<Button
key="edit"
type="primary" ghost
onClick={async () => {
setIsModalOpen(true);
setModelTitle('编辑点位');
const copyFormData = JSON.parse(JSON.stringify(record));
typeForm.setFieldsValue(copyFormData);
}}
>编辑
</Button>,

// 删除
<Popconfirm
key="del"
title="确定要删除此条数据吗?"
onConfirm={() => {

const EnablejsonData: AgvbasicInfoTypes.Info = {
id: record.id,
name: '',
code: ''
};

agvbasicInfoAPI.Del(EnablejsonData).then((r: MyResponse.Content) => {
if (r.statusCode === 200) {
message.success(r.statusCode === 200 ? '删除成功' : r.message);
actionRef.current?.reload()
}
});
}}
onCancel={() => {
message.info('已取消删除');
}}
okText="确认"
cancelText="关闭"
>
<Button type="primary" danger ghost>删除</Button>
</Popconfirm>,
]

},
];

useEffect(() => {

}, []);



// 7.定义表单提交
// 表单提交
const OnSubmit = async (values: AgvbasicInfoTypes.Info) => {

if (values.id) {
const response = await agvbasicInfoAPI.Update(values);
if (response.statusCode === 200) {
message.success('修改成功');
actionRef.current?.reload();
setIsModalOpen(false);
} else {
message.error(JSON.stringify(response.errors) || '修改失败');
}
} else {
const response = await agvbasicInfoAPI.Add(values);
console.log('response', response);
if (response.statusCode === 200) {
message.success('添加成功');
actionRef.current?.reload();
setIsModalOpen(false);
} else {
message.error(JSON.stringify(response.errors) || '添加失败');
}
}
};
return (
<>
<ProTable<AgvbasicInfoTypes.Info>
key="myTable"
actionRef={actionRef}
cardBordered
request={async (params = {}) => {
const jsonData: AgvbasicInfoTypes.Page = {
pageIndex: params.current || 1,
pageSize: params.pageSize || 10,
name: params.name || '',
// id: '',
// code: ''
};
const response = await agvbasicInfoAPI.PagedList(jsonData);
if (response.statusCode === 200) {
return {
data: response.data.items,
success: true,
total: response.data.total,
};
} else {
return {
data: [],
success: false,
total: 0,
};
}
}}
rowKey="id"
pagination={{
pageSize: 10,
}}
dateFormatter="string"
headerTitle="点位列表"
columns={columns}
toolBarRender={() => [
<Button
key="button"
type="primary"
onClick={() => {
typeForm.resetFields();
setIsModalOpen(true);
setModelTitle('新增点位');

}}
>
新增点位
</Button>,
]}


/>
{/* 弹窗 */}
<Modal
key="01"
width={800}
title={<Tag color="#cd201f">{modelTitle}</Tag>}
open={isModalOpen}
onCancel={() => {
setIsModalOpen(false);
}}
footer={[
<Button
key="back"
onClick={() => {
setIsModalOpen(false);

}}
>
返回
</Button>,
<Button key="submit" form="agvbasicForm" type="primary" htmlType="submit">
提交
</Button>,
]}
>
{/* 弹窗内的表单 */}
<Form
form={typeForm}
name="basic"
id="agvbasicForm"
labelAlign='right'
// lCol={{ span: 4 }}
wrapperCol={{ span: 12 }}
onFinish={OnSubmit}
autoComplete="off"
>
<Form.Item label="id" name="id" hidden>
<Input />
</Form.Item>

<Form.Item
label="点位名称"
name="name"
rules={[{ required: true, message: '此项为必填项!' }]}
>
<Input />
</Form.Item>
<Form.Item label="点位编码" name="code" rules={[{ required: true, message: '此项为必填项!' }]} >
<Input />
</Form.Item>
</Form>
</Modal>
</>
)
}

export default AgvPoint

+ 208
- 0
frontend/src/pages/kep/alarmLimit/index.tsx Datei anzeigen

@@ -0,0 +1,208 @@
import { EllipsisOutlined, PlusOutlined } from '@ant-design/icons';
import type { ActionType, ProColumns } from '@ant-design/pro-components';
import { ProTable, TableDropdown } from '@ant-design/pro-components';
import { Button, message, Space, Modal, Form, Input, Alert ,Popconfirm, InputNumber } from 'antd';
import { useRef, useState,useEffect } from 'react';
import request from 'umi-request';
import Api from "@/api/kepService"

export default () => {
const actionRef = useRef<ActionType>();
const [current, setSurrent] = useState({});
const [isModalVisible, setIsModalVisible] = useState(false);
const [form] = Form.useForm();
var timer = 0;

const columns: ProColumns[] = [
{
title: 'id',
dataIndex: 'id',
key: 'id',
hideInSearch: true,
},
{
title: '名称',
dataIndex: 'name',
key: 'name',
},
{
title: '代码',
dataIndex: 'code',
key: 'code',
},
{
title: '最小区间值',
dataIndex: 'minLimitValue',
key: 'minLimitValue',
hideInSearch: true,
},
{
title: '最大区间值',
dataIndex: 'maxLimitValue',
key: 'maxLimitValue',
hideInSearch: true,
},
{
title: '操作',
valueType: 'option',
key: 'option',
render: (text, record, _, action) => [
<a
key="editable"
onClick={() => {
setSurrent(record);
form.setFieldsValue(record);
setIsModalVisible(true);
}}
>
编辑
</a>,
<Popconfirm
key='del'
title="确定要删除吗?"
onConfirm={async () =>{
const response = await Api.Del(record.id);
if (response.data) {
message.success('删除成功');
actionRef.current?.reload();
} else {
message.error(response.msg || '删除失败');
}
}}
okText="确定"
cancelText="取消"
>
<a>删除</a>
</Popconfirm>
],
},
];

return (
<>
<ProTable
columns={columns}
actionRef={actionRef}
cardBordered
rowKey="id"
request={async (params = {}, sort, filter) => {
console.log(sort, filter);
const response = await Api.Getdatavalarmlimitpage({
pageIndex: params.current || 1,
pageSize: params.pageSize || 10
});
if (response.statusCode === 200) {
return {
data: response.data.items,
success: true,
total: response.data.total
}
} else {
message.error(response.errors || '获取列表失败');
return {
data: [],
success: false,
total: 0
}
}
}}
search={{
labelWidth: 'auto',
}}
options={{
setting: {
listsHeight: 400,
},
}}
headerTitle="大屏配置"
toolBarRender={() => [
<Button
key="button"
icon={<PlusOutlined />}
onClick={() => {
form.resetFields();
setIsModalVisible(true);
}}
type="primary"
>
新建
</Button>
]}
/>

<Modal footer={null} title={current.id === '' ? '添加' : '编辑'} open={isModalVisible}
onCancel={() => setIsModalVisible(false)}>
<Form
name="basic"
form={form}
onFinish={async (item) => {
if (item.id) {
const response = await Api.Updatedatavalarmlimit(item);
if (response.data) {
message.success('更新信息成功');
setIsModalVisible(false);
actionRef.current?.reload();
} else {
message.error(response.msg || '更新信息失败');
}
} else {
const response = await Api.Adddatavalarmlimit(item);
if (response.data) {
message.success('创建成功');
setIsModalVisible(false);
actionRef.current?.reload();
} else {
message.error(response.msg || '创建失败');
}
}

}}
>
<Form.Item label="id" name="id" hidden={true} >
<Input />
</Form.Item>

<Form.Item
label="名称"
name="name"
rules={[{ required: true, message: '请输入名称!' }]}
>
<Input />
</Form.Item>

<Form.Item
label="代码"
name="code"
rules={[{ required: true, message: '请输入代码!' }]}
>
<Input />
</Form.Item>


<Form.Item
label="最小区间值"
name="minLimitValue"
rules={[{ required: true, message: '请输入值!' }]}
>
<Input />
</Form.Item>
<Form.Item
label="最大区间值"
name="maxLimitValue"
rules={[{ required: true, message: '请输入值!' }]}
>
<Input />
</Form.Item>

<Form.Item >
<Button type="primary" htmlType="submit">
确定
</Button>
</Form.Item>
</Form>
</Modal>
</>

);
};

+ 27
- 0
frontend/src/pages/kep/datav/index.tsx Datei anzeigen

@@ -0,0 +1,27 @@
import { Card } from 'antd';
import React,{ useState, useEffect } from 'react';
// import DataV from '../../components/datav'
import KepData from '../../../components/KepData'
const Kep: React.FC = () => {

useEffect( () => {
// const timer = window.setInterval(() => {
// KepServiceAPI.List().then((t)=>{
// console.log(JSON.stringify(t.data))
// })
// }, 1000);
// return () => {
// clearInterval(timer);
// };
// KepServiceAPI.List().then((t)=>{
// console.log(JSON.stringify(t.data[0]))
// })
},[])
return (
<div id="app">
<KepData />
</div>
);
};

export default Kep;

+ 0
- 13
frontend/src/pages/kep/index.tsx Datei anzeigen

@@ -1,13 +0,0 @@
import { Card } from 'antd';
import React from 'react';
import { PageContainer } from '@ant-design/pro-components';
import DataV from '../../components/datav'
const Kep: React.FC = () => {
return (
<div id="app">
<DataV />
</div>
);
};

export default Kep;

Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.

Laden…
Abbrechen
Speichern