Home.razor 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. @page "/"
  2. @using AI.Platform.Core.Util
  3. @attribute [ReuseTabsPage(Title = "主页", Pin = true, Closable = false, Order = 0)]
  4. <GridContent>
  5. <Row Type="flex" Gutter="24">
  6. <AntDesign.Col Xs="24" Sm="12" Md="12" Lg="12" Xl="6" Style="margin-bottom: 24px;">
  7. <AI.Platform.Web.Components.Pages.Dashboard.Components.Charts.ChartCard Title="Total Sales"
  8. Total="$ 126,560"
  9. ContentHeight="46">
  10. <ChildContent>
  11. <AI.Platform.Web.Components.Pages.Dashboard.Components.Trend Flag="up">
  12. WoW Change
  13. <span class="trendText">12%</span>
  14. </AI.Platform.Web.Components.Pages.Dashboard.Components.Trend>
  15. <AI.Platform.Web.Components.Pages.Dashboard.Components.Trend Flag="down">
  16. DoD Change
  17. <span class="trendText">11%</span>
  18. </AI.Platform.Web.Components.Pages.Dashboard.Components.Trend>
  19. </ChildContent>
  20. <Footer>
  21. <AI.Platform.Web.Components.Pages.Dashboard.Components.Charts.Field Label="Daily Sale" Value="$12,423" />
  22. </Footer>
  23. </AI.Platform.Web.Components.Pages.Dashboard.Components.Charts.ChartCard>
  24. </AntDesign.Col>
  25. <AntDesign.Col Xs="24" Sm="12" Md="12" Lg="12" Xl="6" Style="margin-bottom: 24px;">
  26. <AI.Platform.Web.Components.Pages.Dashboard.Components.Charts.ChartCard Title="今日Api访问次数"
  27. Total="@SystemStatistics.ApiDaily.ToString()"
  28. ContentHeight="46">
  29. <Footer>
  30. <AI.Platform.Web.Components.Pages.Dashboard.Components.Charts.Field Label="Api访问总数" Value="@SystemStatistics.ApiTotal.ToString()" />
  31. </Footer>
  32. </AI.Platform.Web.Components.Pages.Dashboard.Components.Charts.ChartCard>
  33. </AntDesign.Col>
  34. <AntDesign.Col Xs="24" Sm="12" Md="12" Lg="12" Xl="6" Style="margin-bottom: 24px;">
  35. <AI.Platform.Web.Components.Pages.Dashboard.Components.Charts.ChartCard Title="Payments"
  36. Total="6560"
  37. ContentHeight="46">
  38. <ChildContent>
  39. <AI.Platform.Web.Components.Pages.Dashboard.Components.Charts.MiniBar />
  40. </ChildContent>
  41. <Footer>
  42. <AI.Platform.Web.Components.Pages.Dashboard.Components.Charts.Field Label="Conversion Rate" Value="60%" />
  43. </Footer>
  44. </AI.Platform.Web.Components.Pages.Dashboard.Components.Charts.ChartCard>
  45. </AntDesign.Col>
  46. <AntDesign.Col Xs="24" Sm="12" Md="12" Lg="12" Xl="6" Style="margin-bottom: 24px;">
  47. <AI.Platform.Web.Components.Pages.Dashboard.Components.Charts.ChartCard Title="Operational Effect"
  48. Total="78%"
  49. ContentHeight="46">
  50. <ChildContent>
  51. <AI.Platform.Web.Components.Pages.Dashboard.Components.Charts.MiniProgress Percent="78"
  52. StrokeWidth="8"
  53. Target="80"
  54. Color="#13C2C2" />
  55. </ChildContent>
  56. <Footer>
  57. <AI.Platform.Web.Components.Pages.Dashboard.Components.Charts.Field Label="Conversion Rate" Value="60%" />
  58. </Footer>
  59. </AI.Platform.Web.Components.Pages.Dashboard.Components.Charts.ChartCard>
  60. </AntDesign.Col>
  61. </Row>
  62. <div class="salesCard">
  63. <Card>
  64. <Tabs TabBarStyle="margin-bottom: 24px;">
  65. <TabPane Key="1" Tab="服务管理">
  66. <Descriptions Bordered>
  67. <DescriptionsItem Title="Mysql服务" Span="3">
  68. <Badge Status="@MySqlStatus" Text="@MySqlText"></Badge>
  69. </DescriptionsItem>
  70. <DescriptionsItem Title="账号异常更新状态服务" Span="3">
  71. <Badge Status="BadgeStatus.Success" Text="运行中"></Badge>
  72. </DescriptionsItem>
  73. </Descriptions>
  74. </TabPane>
  75. <TabPane Key="2" Tab="服务器信息">
  76. <Descriptions Bordered>
  77. <DescriptionsItem Title="服务器名称" Span="3">@Environment.MachineName</DescriptionsItem>
  78. <DescriptionsItem Title="操作系统" Span="3">@System.Runtime.InteropServices.RuntimeInformation.OSDescription</DescriptionsItem>
  79. <DescriptionsItem Title="系统架构" Span="3">@System.Runtime.InteropServices.RuntimeInformation.OSArchitecture</DescriptionsItem>
  80. <DescriptionsItem Title="已使用内存/总内存" Span="3">@ComputerInfo.RAMUsage</DescriptionsItem>
  81. <DescriptionsItem Title="内存使用率" Span="3">
  82. <Badge Status="@RAMStatus" Text="@ComputerInfo.RAMUsageRate"></Badge>
  83. </DescriptionsItem>
  84. <DescriptionsItem Title="系统盘占用/系统盘总空间" Span="3">@ComputerInfo.SystemDiskUsage</DescriptionsItem>
  85. <DescriptionsItem Title="系统盘使用率" Span="3">
  86. <Badge Status="@SystemDiskStatus" Text="@ComputerInfo.SystemDiskUsageRate"></Badge>
  87. </DescriptionsItem>
  88. </Descriptions>
  89. </TabPane>
  90. <TabPane Key="3" Tab="项目框架">
  91. <Descriptions Bordered>
  92. <DescriptionsItem Title="环境变量" Span="3">@Environment.MachineName</DescriptionsItem>
  93. <DescriptionsItem Title=".Net版本" Span="3">@System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription</DescriptionsItem>
  94. <DescriptionsItem Title="启动时间" Span="3">@System.Diagnostics.Process.GetCurrentProcess().StartTime.ToString("yyyy-MM-dd HH:mm:ss")</DescriptionsItem>
  95. </Descriptions>
  96. </TabPane>
  97. </Tabs>
  98. </Card>
  99. </div>
  100. </GridContent>
  101. @inject NavigationManager NavigationManager;
  102. @inject IMessageService MessageService;
  103. @inject IJSRuntime IJSRuntime;
  104. @code {
  105. protected override async Task OnAfterRenderAsync(bool firstRender)
  106. {
  107. if (firstRender)
  108. {
  109. await NavigationManager.RedirectLogin(IJSRuntime);
  110. await Statistics();
  111. await Information();
  112. await ServiceStatistics();
  113. }
  114. }
  115. private async Task ServiceStatistics()
  116. {
  117. try
  118. {
  119. using var con = Sql.Connect();
  120. await con.Queryable<SystemUser>().FirstAsync();
  121. MySqlStatus = BadgeStatus.Success;
  122. MySqlText = "运行中";
  123. }
  124. catch (Exception ex)
  125. {
  126. MySqlStatus = BadgeStatus.Error;
  127. MySqlText = $"服务异常({ex.Message})";
  128. }
  129. StateHasChanged();
  130. }
  131. private async Task Statistics()
  132. {
  133. SystemStatistics.ApiDaily = await Cache.Get<int>($"request_{DateTime.Now.ToString("yyyyMMdd")}");
  134. SystemStatistics.ApiTotal = await Cache.Get<int>($"request_total");
  135. }
  136. private async Task Information()
  137. {
  138. //windows环境
  139. ComputerInfo = Computer.GetComputerInfo();
  140. switch (ComputerInfo.RAMStatus)
  141. {
  142. default:
  143. case ComputerStatus.Normal: RAMStatus = BadgeStatus.Success; break;
  144. case ComputerStatus.Error: RAMStatus = BadgeStatus.Error; break;
  145. case ComputerStatus.Warning: RAMStatus = BadgeStatus.Warning; break;
  146. }
  147. switch (ComputerInfo.SystemDiskStatus)
  148. {
  149. default:
  150. case ComputerStatus.Normal: SystemDiskStatus = BadgeStatus.Success; break;
  151. case ComputerStatus.Error: SystemDiskStatus = BadgeStatus.Error; break;
  152. case ComputerStatus.Warning: SystemDiskStatus = BadgeStatus.Warning; break;
  153. }
  154. }
  155. IChartComponent chart1;
  156. private async Task OnTabChanged(string activeKey)
  157. {
  158. if (activeKey == "1")
  159. {
  160. }
  161. // await _saleChart.ChangeData(data.SalesData);
  162. //else
  163. // await _visitChart.ChangeData(data.SalesData);
  164. }
  165. private async Task onChart1_FirstRender(IChartComponent chart)
  166. {
  167. //var data1 = await ChartsDemoData.FireworksSalesAsync(NavigationManager, HttpClient);
  168. //chart1.ChangeData(data1);
  169. }
  170. readonly AreaConfig config1 = new AreaConfig()
  171. {
  172. XField = "Date",
  173. YField = "scales",
  174. XAxis = new ValueCatTimeAxis()
  175. {
  176. Range = new[] { 0, 1 },
  177. TickCount = 5
  178. },
  179. AreaStyle = new GraphicStyle()
  180. {
  181. Fill = "l(270) 0:#ffffff 0.5:#7ec2f3 1:#1890ff"
  182. }
  183. };
  184. /// <summary>
  185. ///
  186. /// </summary>
  187. private SystemStatistics SystemStatistics = new SystemStatistics();
  188. /// <summary>
  189. ///
  190. /// </summary>
  191. private ComputerInfo ComputerInfo = new ComputerInfo();
  192. /// <summary>
  193. ///
  194. /// </summary>
  195. private BadgeStatus RAMStatus { get; set; }
  196. /// <summary>
  197. ///
  198. /// </summary>
  199. private BadgeStatus SystemDiskStatus { get; set; }
  200. /// <summary>
  201. ///
  202. /// </summary>
  203. private BadgeStatus MySqlStatus { get; set; }
  204. /// <summary>
  205. ///
  206. /// </summary>
  207. private string MySqlText { get; set; }
  208. }