当前位置: 首页 > news >正文

C#MVC返回DataTable到前端展示。

很久没写博客了,闭关太久,失踪人口回归,给诸位道友整点绝活

交代下背景:要做一个行转列的汇总统计,而且,由于是行转列,列的数量不固定,所以,没法使用正常的SqlSugar框架,只能原生sql顶包,这么解决滋生出另外个问题,DataTable序列化以后,究竟如何在前端加载?

先看数据库查询出来的原始数据:

在这里插入图片描述

页面上想要达到的效果:
在这里插入图片描述

设计到以下主要的知识点:

  1. 查询结果需要行转列,
  2. DataTable需要序列化传给前端。
  3. 前端如何加载这些不固定的数据。

首先是数据库行转列:

这是原始sql:

	SELECTb.XXMC AS 学校名称,b.XXLXM AS 学校类型,a.XXLXSM AS 学校类型名称,g.Name AS 指标类型,SUM ( e.Value ) AS 总分,SUM ( f.SchoolScore ) AS 自评分,SUM ( f.Score ) AS 督评分 FROMMB_XXLX aLEFT JOIN XX_XX b ON a.XXLXM = b.XXLXMLEFT JOIN tb_start_index c ON ( c.SchoolType = a.XXLXM OR c.SchoolType = 0 ) AND c.PlanningId = '026fc4b1-1f12-4913-bf75-f6cb6081d68a' AND ( c.Year = 2023 OR c.Year = 0 )LEFT JOIN tb_middle_index d ON d.StartId = c.IdLEFT JOIN tb_end_index e ON e.MiddleId = d.Id AND ( e.SchoolId = '0' OR e.SchoolId = b.XX_ID )LEFT JOIN tb_result f ON f.IndexId = e.Id AND f.SchoolId = b.XX_IDLEFT JOIN tb_index_type g ON g.Id = c.Type WHEREa.XXLXM IN ( 73 ) AND b.SystemId = 1 AND c.DistrictCode = '330402' AND c.SchoolType IN ( 73 ) GROUP BYb.XX_ID,b.XXLXM,a.XXLXSM,b.XXMC,g.Id,g.Name 

这是查询结果:
在这里插入图片描述

行转列以后:

SELECT学校名称,学校类型,学校类型名称,SUM ( CASE WHEN 指标类型 = '基础性指标' THEN 自评分 ELSE 0 END ) * 0.26 AS 基础性指标自评分,SUM ( CASE WHEN 指标类型 = '发展性指标' THEN 自评分 ELSE 0 END ) * 0.34 AS 发展性指标自评分,SUM ( CASE WHEN 指标类型 = '学校特色' THEN 自评分 ELSE 0 END ) AS 学校特色自评分,SUM ( CASE WHEN 指标类型 = '优均创建指标评价' THEN 自评分 ELSE 0 END ) AS 优均创建指标评价自评分,SUM ( CASE WHEN 指标类型 = '优均创建路演' THEN 自评分 ELSE 0 END ) AS 优均创建路演自评分,SUM ( CASE WHEN 指标类型 = '基础性指标' THEN 自评分 ELSE 0 END ) * 0.26 + SUM ( CASE WHEN 指标类型 = '发展性指标' THEN 自评分 ELSE 0 END ) * 0.34 + SUM ( CASE WHEN 指标类型 = '学校特色' THEN 自评分 ELSE 0 END ) + SUM ( CASE WHEN 指标类型 = '优均创建指标评价' THEN 自评分 ELSE 0 END ) + SUM ( CASE WHEN 指标类型 = '优均创建路演' THEN 自评分 ELSE 0 END ) AS 自评总分 
FROM(SELECTb.XXMC AS 学校名称,b.XXLXM AS 学校类型,a.XXLXSM AS 学校类型名称,g.Name AS 指标类型,SUM ( e.Value ) AS 总分,SUM ( f.SchoolScore ) AS 自评分,SUM ( f.Score ) AS 督评分 FROMMB_XXLX aLEFT JOIN XX_XX b ON a.XXLXM = b.XXLXMLEFT JOIN tb_start_index c ON ( c.SchoolType = a.XXLXM OR c.SchoolType = 0 ) AND c.PlanningId = '026fc4b1-1f12-4913-bf75-f6cb6081d68a' AND ( c.Year = 2023 OR c.Year = 0 )LEFT JOIN tb_middle_index d ON d.StartId = c.IdLEFT JOIN tb_end_index e ON e.MiddleId = d.Id AND ( e.SchoolId = '0' OR e.SchoolId = b.XX_ID )LEFT JOIN tb_result f ON f.IndexId = e.Id AND f.SchoolId = b.XX_IDLEFT JOIN tb_index_type g ON g.Id = c.Type WHEREa.XXLXM IN ( 73 ) AND b.SystemId = 1 AND c.DistrictCode = '330402' AND c.SchoolType IN ( 73 ) GROUP BYb.XX_ID,b.XXLXM,a.XXLXSM,b.XXMC,g.Id,g.Name ) AS OriginalResults 
GROUP BY学校类型,学校类型名称, 学校名称 
ORDER BY学校类型,学校类型名称,学校名称;

这是行转列查询后的结果:
在这里插入图片描述

刚才也说了,这个指标类型是不固定的,显然,sql中将指标类型列固定不是上上之选。接下来用代码实现:

先获取指标类型集合:

  //查询指标类型var indexList = db.Queryable<IndexTypeEntity, IndexTypeConversionEntity>((a, b) => new object[]{JoinType.Left,a.Id==b.IndexTypeId &&  b.Year == request.Data.Year}).Where((a, b) => a.DistrictCode == request.Data.districtCode && a.SystemId == request.Data.SystemId).OrderBy((a, b) => a.Id, OrderByType.Asc).Select((a, b) => new OrgIndexType{Id = a.Id,Name = a.Name,Ratio = b.Ratio}).ToList();

获取以后需要根据指标类型,组装指标类型的sql,以及汇总的分数:

  if (indexList.Count() > 0){//督评结果汇总if (request.Data.Code == 1){for (int i = 0; i < indexList.Count(); i++){if (indexList[i].Ratio > 0){str += string.Format(@"SUM(CASE WHEN 指标类型 = '{0}' THEN 督评分 ELSE 0 END)*{1} AS {0}督评分,", indexList[i].Name, indexList[i].Ratio);}else{str += string.Format(@"SUM(CASE WHEN 指标类型 = '{0}' THEN 督评分 ELSE 0 END) AS {0}督评分,", indexList[i].Name);}if (i == indexList.Count() - 1){if (indexList[i].Ratio > 0){pgStr += string.Format(@"SUM(CASE WHEN 指标类型 = '{0}' THEN 督评分 ELSE 0 END)*{1} as 督评总分", indexList[i].Name, indexList[i].Ratio);}else{pgStr += string.Format(@"SUM(CASE WHEN 指标类型 = '{0}' THEN 督评分 ELSE 0 END) as 督评总分", indexList[i].Name);}}else{if (indexList[i].Ratio > 0){pgStr += string.Format(@"SUM(CASE WHEN 指标类型 = '{0}' THEN 督评分 ELSE 0 END)*{1} +", indexList[i].Name, indexList[i].Ratio);}else{pgStr += string.Format(@"SUM(CASE WHEN 指标类型 = '{0}' THEN 督评分 ELSE 0 END) +", indexList[i].Name);}}}}else //自评结果汇总{for (int i = 0; i < indexList.Count(); i++){if (indexList[i].Ratio > 0){str += string.Format(@" SUM(CASE WHEN 指标类型 = '{0}' THEN 自评分 ELSE 0 END)*{1} AS {0}自评分,", indexList[i].Name, indexList[i].Ratio);}else{str += string.Format(@" SUM(CASE WHEN 指标类型 = '{0}' THEN 自评分 ELSE 0 END) AS {0}自评分,", indexList[i].Name);}if (i == indexList.Count() - 1){if (indexList[i].Ratio > 0){pgStr += string.Format(@"SUM(CASE WHEN 指标类型 = '{0}' THEN 自评分 ELSE 0 END)*{1} as 自评总分", indexList[i].Name, indexList[i].Ratio);}else{pgStr += string.Format(@"SUM(CASE WHEN 指标类型 = '{0}' THEN 自评分 ELSE 0 END) as 自评总分", indexList[i].Name);}}else{if (indexList[i].Ratio > 0){pgStr += string.Format(@"SUM(CASE WHEN 指标类型 = '{0}' THEN 自评分 ELSE 0 END)*{1} +", indexList[i].Name, indexList[i].Ratio);}else{pgStr += string.Format(@"SUM(CASE WHEN 指标类型 = '{0}' THEN 自评分 ELSE 0 END) +", indexList[i].Name);}}}}}

然后组装sql查询数据:

 sqlStr = string.Format(@"SELECT学校名称,学校类型,学校类型名称,{0}{6}FROM(SELECTb.XXMC AS 学校名称,b.XXLXM as 学校类型,a.XXLXSM as 学校类型名称,g.Name AS 指标类型,SUM(e.Value) AS 总分,SUM(f.SchoolScore) AS 自评分,SUM(f.Score) AS 督评分FROMMB_XXLX aLEFT JOINXX_XX b ON a.XXLXM = b.XXLXMLEFT JOINtb_start_index c ON (c.SchoolType = a.XXLXM OR c.SchoolType = 0)AND c.PlanningId = '{1}'AND (c.Year = {2} OR c.Year = 0)LEFT JOINtb_middle_index d ON d.StartId = c.IdLEFT JOINtb_end_index e ON e.MiddleId = d.IdAND (e.SchoolId = '0' OR e.SchoolId = b.XX_ID)LEFT JOINtb_result f ON f.IndexId = e.IdAND f.SchoolId = b.XX_IDLEFT JOINtb_index_type g ON g.Id = c.TypeWHEREa.XXLXM IN ({3})AND b.SystemId = {4}AND c.DistrictCode = '{5}'AND c.SchoolType IN ({3}){7}GROUP BYb.XX_ID,b.XXLXM,a.XXLXSM, b.XXMC, g.Id, g.Name) AS OriginalResultsGROUP BY学校类型,学校类型名称, 学校名称 ORDER BY学校类型,学校类型名称,学校名称;", str, request.Data.PlanningId, request.Data.Year, request.Data.SchoolType, request.Data.SystemId, request.Data.districtCode, pgStr,bat);

这一部分的完整代码如下:

        /// <summary>/// 查询各校汇总数据/// </summary>/// <param name="query"></param>/// <returns></returns>public DataTable OriginalResult(RongboRequest<OriginalResultQuery> request){DataTable dt = new DataTable();using (var db = SqlSugarConfig.DB_Select_DbConnection){//查询指标类型var indexList = db.Queryable<IndexTypeEntity, IndexTypeConversionEntity>((a, b) => new object[]{JoinType.Left,a.Id==b.IndexTypeId &&  b.Year == request.Data.Year}).Where((a, b) => a.DistrictCode == request.Data.districtCode && a.SystemId == request.Data.SystemId).OrderBy((a, b) => a.Id, OrderByType.Asc).Select((a, b) => new OrgIndexType{Id = a.Id,Name = a.Name,Ratio = b.Ratio}).ToList();//指标类型var str = string.Empty;//各指标类型的汇总分数var pgStr = string.Empty;//指标类型数量是否大于0if (indexList.Count() > 0){//督评结果汇总if (request.Data.Code == 1){for (int i = 0; i < indexList.Count(); i++){if (indexList[i].Ratio > 0){str += string.Format(@"SUM(CASE WHEN 指标类型 = '{0}' THEN 督评分 ELSE 0 END)*{1} AS {0}督评分,", indexList[i].Name, indexList[i].Ratio);}else{str += string.Format(@"SUM(CASE WHEN 指标类型 = '{0}' THEN 督评分 ELSE 0 END) AS {0}督评分,", indexList[i].Name);}if (i == indexList.Count() - 1){if (indexList[i].Ratio > 0){pgStr += string.Format(@"SUM(CASE WHEN 指标类型 = '{0}' THEN 督评分 ELSE 0 END)*{1} as 督评总分", indexList[i].Name, indexList[i].Ratio);}else{pgStr += string.Format(@"SUM(CASE WHEN 指标类型 = '{0}' THEN 督评分 ELSE 0 END) as 督评总分", indexList[i].Name);}}else{if (indexList[i].Ratio > 0){pgStr += string.Format(@"SUM(CASE WHEN 指标类型 = '{0}' THEN 督评分 ELSE 0 END)*{1} +", indexList[i].Name, indexList[i].Ratio);}else{pgStr += string.Format(@"SUM(CASE WHEN 指标类型 = '{0}' THEN 督评分 ELSE 0 END) +", indexList[i].Name);}}}}else //自评结果汇总{for (int i = 0; i < indexList.Count(); i++){if (indexList[i].Ratio > 0){str += string.Format(@" SUM(CASE WHEN 指标类型 = '{0}' THEN 自评分 ELSE 0 END)*{1} AS {0}自评分,", indexList[i].Name, indexList[i].Ratio);}else{str += string.Format(@" SUM(CASE WHEN 指标类型 = '{0}' THEN 自评分 ELSE 0 END) AS {0}自评分,", indexList[i].Name);}if (i == indexList.Count() - 1){if (indexList[i].Ratio > 0){pgStr += string.Format(@"SUM(CASE WHEN 指标类型 = '{0}' THEN 自评分 ELSE 0 END)*{1} as 自评总分", indexList[i].Name, indexList[i].Ratio);}else{pgStr += string.Format(@"SUM(CASE WHEN 指标类型 = '{0}' THEN 自评分 ELSE 0 END) as 自评总分", indexList[i].Name);}}else{if (indexList[i].Ratio > 0){pgStr += string.Format(@"SUM(CASE WHEN 指标类型 = '{0}' THEN 自评分 ELSE 0 END)*{1} +", indexList[i].Name, indexList[i].Ratio);}else{pgStr += string.Format(@"SUM(CASE WHEN 指标类型 = '{0}' THEN 自评分 ELSE 0 END) +", indexList[i].Name);}}}}}var sqlStr = string.Empty;//是否是模板批次类应用,如果是,sqlStr需新增一段sqlvar bat = string.Empty;if (!string.IsNullOrWhiteSpace(request.Data.BatchId)) {bat = string.Format(@" AND b.XX_ID IN (SELECT system_school_id FROM tb_batch_school WHERE batch_id = '{0}' AND system_school_type IN ({1}))", request.Data.BatchId, request.Data.SchoolType);}if (!string.IsNullOrWhiteSpace(str)){sqlStr = string.Format(@"SELECT学校名称,学校类型,学校类型名称,{0}{6}FROM(SELECTb.XXMC AS 学校名称,b.XXLXM as 学校类型,a.XXLXSM as 学校类型名称,g.Name AS 指标类型,SUM(e.Value) AS 总分,SUM(f.SchoolScore) AS 自评分,SUM(f.Score) AS 督评分FROMMB_XXLX aLEFT JOINXX_XX b ON a.XXLXM = b.XXLXMLEFT JOINtb_start_index c ON (c.SchoolType = a.XXLXM OR c.SchoolType = 0)AND c.PlanningId = '{1}'AND (c.Year = {2} OR c.Year = 0)LEFT JOINtb_middle_index d ON d.StartId = c.IdLEFT JOINtb_end_index e ON e.MiddleId = d.IdAND (e.SchoolId = '0' OR e.SchoolId = b.XX_ID)LEFT JOINtb_result f ON f.IndexId = e.IdAND f.SchoolId = b.XX_IDLEFT JOINtb_index_type g ON g.Id = c.TypeWHEREa.XXLXM IN ({3})AND b.SystemId = {4}AND c.DistrictCode = '{5}'AND c.SchoolType IN ({3}){7}GROUP BYb.XX_ID,b.XXLXM,a.XXLXSM, b.XXMC, g.Id, g.Name) AS OriginalResultsGROUP BY学校类型,学校类型名称, 学校名称 ORDER BY学校类型,学校类型名称,学校名称;", str, request.Data.PlanningId, request.Data.Year, request.Data.SchoolType, request.Data.SystemId, request.Data.districtCode, pgStr,bat);dt = db.Ado.GetDataTable(sqlStr) ?? new DataTable();}return dt;}}

如果不考虑筛选条件,可以直接通过视图传DataTable到前端,源代码:

public IActionResult OriginalResult(){var curr = this.GetCurrentPlan() ?? new GHEntity();var districtCode = this.GetDistrictCodeByPgMode();var schooltypes = _baseConfigService.GetSingle(districtCode, SystemId, BaseConfigKeyEnum.PG_SZXXLX.ToString())?.Value;var OrgResult = _OrigService.OriginalResult(new OriginalResultQuery{districtCode = districtCode,PlanningId = curr.Id,SystemId = SystemIdInt,SchoolType = schooltypes,Year = SystemYear});if (OrgResult.Rows.Count > 0){OrgResult.Columns.Remove("学校类型");ViewBag.IsData = true;}else {ViewBag.IsData = false;}return View(OrgResult);}

前端直接通过Foreach加载数据:

@{ViewData["Title"] = "OriginalResult";Layout = "~/Views/Shared/_Index.cshtml";
}@model System.Data.DataTable<style type="text/css">/*高度为内容高度*/.layui-table-cell {white-space: normal;height: auto !important;word-break: break-all;}.heads {font-weight:bold !important;}
</style><div class="layuimini-container"><div class="layuimini-main"><div style="margin: 10px 10px 10px 10px">@if (ViewBag.IsData){<h2 style="text-align: center; padding: 1%; font-weight: bold;">南湖区考核数据汇总</h2><table class="layui-table"><thead><tr>@foreach (System.Data.DataColumn column in Model.Columns){<th class="heads">@column.ColumnName</th>}</tr></thead><tbody>@foreach (System.Data.DataRow row in Model.Rows){<tr>@foreach (var item in row.ItemArray){<td class="content">@item</td>}</tr>}</tbody></table>}else{<div style=" text-align: center; padding: 5%;font-weight:bold;font-size:20px;"><p><svg t="1723538461678" class="icon" viewBox="0 0 1182 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5877" width="200" height="200"><path d="M427.976033 972.52194v8.297464c0 4.847577-0.464489 11.582669-4.252186 16.624487 0.941646 0.443376 2.656033 1.634157 3.424551 2.364672 3.137413-4.117062 4.2733-9.906286 4.619555-14.969217h7.98499v14.855206h4.138176v-14.855206h6.90822v-3.597679h-18.858258v-5.696325c6.042581-0.464489 12.663662-1.423026 17.262104-2.829161l-2.482905-3.542785c-4.425314 1.579263-12.182282 2.791157-18.744247 3.348544z m-18.858257 40.19942h30.098893v5.371183h-30.098893v-5.371183z m0-3.251424v-4.923584h30.098893v4.923584h-30.098893z m-4.19307-8.407252v22.667068h4.19307v-2.077533h30.098893v1.963522h4.366198v-22.553057h-38.658161z m-7.102461-9.217998l0.367369 3.943935 13.605308-1.47792v5.307844h4.138176v-5.793446l9.040647-1.000763-0.054895-3.348544-8.989975 0.865639v-4.349307h9.332008v-3.61457H415.933098v-3.851037h-4.138176v3.851037H404.151965c1.600376-1.887515 3.251424-4.041055 4.792683-6.350833h16.202224v-3.504781h-13.951563l1.65527-3.095187-4.446427-1.330127c-0.574277 1.520146-1.287902 2.985398-2.001526 4.425314h-8.698614v3.504781h6.621081c-1.228785 1.963522-2.347781 3.504781-2.884055 4.155066-1.055657 1.423026-2.077533 2.385785-3.023402 2.558913 0.540496 1.173891 1.195004 3.19653 1.423026 4.062168 0.540496-0.464489 2.309778-0.810745 4.792683-0.810744h7.161577v4.77157l-13.976899 1.080992z m62.621576-19.322746v4.391533h19.626776c-0.173128 4.307081-0.367369 8.926636-1.07677 13.470184h-22.227915v4.307081h21.40028c-2.428011 10.413001-8.16234 20.150382-22.168798 25.538455 1.135887 0.886752 2.423789 2.482905 3.019179 3.576566 15.260578-6.059471 21.168035-17.257881 23.65094-29.115021h1.233008v20.804889c0 5.44719 1.65527 6.984227 7.811862 6.984227h11.046395c5.675212 0 7.102461-2.482905 7.697851-12.123166-1.309015-0.287139-3.251424-1.07677-4.311303-1.925518-0.308252 8.276351-0.768518 9.661373-3.673686 9.661373h-10.353885c-3.002289 0-3.601902-0.405372-3.601902-2.596916v-20.804889h21.40028v-4.307081h-26.475879c0.650285-4.543548 0.941646-9.103986 1.055657-13.470184h22.054787v-4.391533h-46.111099z m78.570443-3.057183c-1.07677 2.444902-2.964285 6.139701-4.446428 8.331246l2.905168 1.503255c1.541259-2.081756 3.542785-5.198055 5.25295-8.086333l-3.715913-1.748168z m-20.994908 1.748168c1.537037 2.639143 3.137413 6.080585 3.656796 8.276351l3.365435-1.579263c-0.519383-2.250661-2.115537-5.637209-3.770807-8.08211l-3.251424 1.385022z m19.031386 32.10042a26.644784 26.644784 0 0 1-5.502085 8.044106 118.824757 118.824757 0 0 0-6.735092-3.234533c0.827635-1.439916 1.769281-3.057183 2.596917-4.809573h9.64026z m-17.743484 6.42684a93.320083 93.320083 0 0 1 9.120877 4.197292c-3.787697 2.748931-8.352359 4.674449-13.199936 5.810336 0.768518 0.844526 1.731278 2.406898 2.13665 3.483669 5.44719-1.503256 10.467895-3.851037 14.720082-7.313592 1.942409 1.195004 3.732803 2.330891 5.079822 3.348544l2.850274-2.926282c-1.368132-0.962759-3.082519-2.039529-5.024928-3.116299a31.669711 31.669711 0 0 0 7.081348-12.794563l-2.423789-1.004986-0.709402 0.173128h-9.682486l1.292124-3.095187-3.96927-0.713624a42.775223 42.775223 0 0 1-1.591931 3.808811h-8.022994v3.715913h6.194596c-1.233007 2.406898-2.601139 4.619555-3.851037 6.42684z m8.698614-41.550662v11.722016h-12.237176v3.673687h10.869045c-2.829161 3.87215-7.389599 7.56695-11.527775 9.357344 0.886752 0.827635 1.908628 2.364672 2.428011 3.386548 3.618792-1.963522 7.50361-5.295176 10.467895-8.816848v7.258698h4.138176v-8.082111c2.846051 2.077533 6.447953 4.86869 7.925873 6.24949l2.482905-3.209197c-1.423026-1.021876-6.616858-4.349307-9.522026-6.139702h11.177296v-3.673686h-12.064048v-11.722016h-4.138176z m21.99567 0.582723c-1.47792 11.025282-4.138176 21.011798-8.757731 27.24862 0.945869 0.595391 2.677146 2.039529 3.369658 2.748931 1.541259-2.212657 2.846051-4.826464 4.019942-7.735855 1.309015 5.83145 3.023402 11.219523 5.214946 15.936199-3.306318 5.696325-7.925873 10.083636-14.373827 13.259052 0.827635 0.903642 2.077533 2.694037 2.482906 3.656796 6.02569-3.29365 10.586129-7.431826 14.065574-12.701666 2.964285 5.079822 6.621081 9.163103 11.240636 11.992265 0.713624-1.14011 2.018416-2.698259 3.019179-3.547008-4.961588-2.689814-8.867519-7.081347-11.890921-12.583432 3.137413-6.139701 5.155829-13.778436 6.447954-22.97532h4.019942v-4.159289h-16.856732c0.827635-3.386548 1.541259-6.946223 2.077533-10.581906l-4.079059-0.557387z m10.641023 15.298582c-0.941646 7.060234-2.364672 13.199936-4.501321 18.30087-2.23377-5.404964-3.884818-11.684012-5.024928-18.30087h9.526249z m39.891169 20.475524v19.453648h3.910153v-2.23377h18.220641v2.001525h4.062168v-19.221403h-11.392651v-7.389599h13.23794v-3.829924h-13.23794v-7.043344h11.160407v-15.125454h-31.213668v17.874385c0 9.737381-0.536274 22.958429-6.675975 32.560686 1.000763 0.443376 2.829161 1.63838 3.656796 2.292887 4.906694-7.140464 6.561964-17.861717 7.098238-26.729236h11.760019v7.389599h-10.586128z m-0.941646-29.558397h22.650177v7.389599h-22.650177v-7.389599z m0 11.29553h11.527774v7.043344h-11.582669l0.054895-4.294413v-2.748931z m4.851799 31.809058v-9.754271h18.220641v9.754271h-18.220641z m-22.633287-49.704556v12.313184h-7.389599v4.138175h7.389599v13.107038c-3.078296 0.941646-5.924347 1.786172-8.158117 2.385785l1.17389 4.404201 6.984227-2.271774v15.763071c0 0.865639-0.308252 1.097883-1.017653 1.097884-0.713624 0.076007-3.002289 0.076007-5.544311 0 0.519383 1.190781 1.118996 3.019179 1.233008 4.079058 3.732803 0.054894 6.021468-0.118234 7.448716-0.827635 1.47792-0.633394 2.018416-1.887515 2.018416-4.349307v-17.12698l6.794209-2.271774-0.654508-4.079058-6.139701 1.942409v-11.852918h6.675975v-4.138175h-6.675975v-12.313184h-4.138176z m71.472205 32.847825c2.829161 0 5.793446-1.773504 8.217234-5.599205l-3.023402-2.195767c-1.537037 2.770044-3.192307 3.715913-5.079821 3.715913-3.732803 0-6.502847-5.295176-11.69668-5.295176-2.850274 0-5.869453 1.828398-8.238348 5.966574l3.023402 2.115536c1.47792-2.829161 3.13319-4.019942 5.020705-4.019942 3.79192 0 6.561964 5.312066 11.77691 5.312067z" fill="#798298" p-id="5878"></path><path d="M89.608392 0l-35.174492 112.59638h21.265155L110.877771 0H89.608392z" fill="#CED0DB" p-id="5879"></path><path d="M39.46046 13.208381H16.510476 2.047975A2.060643 2.060643 0 0 0 0.004223 15.281691V99.231762c0 1.144332 0.912088 2.07331 2.043752 2.073311h37.412485c1.127442 0 2.043752-0.928978 2.043752-2.073311v-12.608768a2.060643 2.060643 0 0 0-2.043752-2.077533H16.510476V29.96377h22.949984c1.127442 0 2.043752-0.928978 2.043752-2.069088V15.281691a2.060643 2.060643 0 0 0-2.043752-2.07331z" fill="#E4E6EF" p-id="5880"></path><path d="M164.699389 13.208381h-14.462501-22.949984a2.060643 2.060643 0 0 0-2.043752 2.07331v12.612991c0 1.14011 0.91631 2.069088 2.043752 2.069088h22.949984v54.581691h-22.949984a2.060643 2.060643 0 0 0-2.043752 2.077533V99.231762c0 1.144332 0.91631 2.07331 2.043752 2.073311h37.412485c1.131664 0 2.043752-0.928978 2.043752-2.073311v-12.608768V27.894682 15.281691a2.060643 2.060643 0 0 0-2.043752-2.07331z" fill="#E4E6EF" p-id="5881"></path><path d="M1095.49754 735.184901h-37.948759v-131.319514a18.900484 18.900484 0 0 1 18.875148-18.925819h0.198463a18.900484 18.900484 0 0 1 18.875148 18.925819v131.323736z" fill="#00B578" p-id="5882"></path><path d="M1115.381896 767.112192h-38.257011v-68.951295a18.537338 18.537338 0 0 1 18.558451-18.528892h1.144332a18.537338 18.537338 0 0 1 18.554228 18.528892v68.951295zM1058.465091 734.538839h-38.257011v-74.53361a18.503557 18.503557 0 0 1 18.482443-18.528893h1.296347a18.503557 18.503557 0 0 1 18.478221 18.528893v74.53361z" fill="#00B578" p-id="5883"></path><path d="M1015.102922 844.525635c-4.108617 0-7.440271-3.171194-7.44027-7.08557v-98.421018c0-3.910154 3.331654-7.08557 7.44027-7.08557h103.961106c4.11284 0 7.444493 3.175416 7.444494 7.08557v98.421018c0 3.914376-3.331654 7.08557-7.440271 7.08557h-103.965329z" fill="#CAD5EE" p-id="5884"></path><path d="M1070.596702 613.560542q0 0.367369-0.071785 0.726292-0.071785 0.358923-0.211131 0.696733-0.143569 0.33781-0.346256 0.64184-0.206909 0.308252-0.464489 0.565832-0.261803 0.25758-0.565832 0.464489-0.304029 0.202686-0.646062 0.342033-0.33781 0.139347-0.700956 0.211131-0.358923 0.071785-0.726292 0.071785-0.367369 0-0.730515-0.071785-0.358923-0.071785-0.696734-0.211131t-0.646062-0.342033q-0.308252-0.206909-0.565832-0.464489-0.261803-0.25758-0.464489-0.565832-0.202686-0.304029-0.346256-0.64184-0.139347-0.33781-0.211131-0.696733t-0.071785-0.726292q0-0.367369 0.071785-0.726293 0.071785-0.358923 0.211131-0.700956 0.143569-0.33781 0.346256-0.641839t0.464489-0.565832q0.25758-0.25758 0.565832-0.46449 0.304029-0.202686 0.646062-0.33781 0.33781-0.143569 0.696734-0.211131 0.363146-0.076007 0.730515-0.076008t0.726292 0.071785q0.363146 0.071785 0.700956 0.211132 0.33781 0.139347 0.646062 0.346255 0.304029 0.202686 0.565832 0.464489 0.25758 0.253358 0.464489 0.56161 0.202686 0.304029 0.342033 0.641839 0.143569 0.33781 0.211132 0.700956 0.076007 0.358923 0.076007 0.726293zM1090.189697 651.71621q0 0.363146-0.071785 0.726292-0.071785 0.358923-0.211131 0.696733t-0.346256 0.64184q-0.202686 0.308252-0.464489 0.565832-0.25758 0.25758-0.565832 0.464489-0.304029 0.202686-0.646062 0.342033-0.33781 0.139347-0.696734 0.211131-0.363146 0.071785-0.730515 0.071785t-0.726292-0.071785q-0.363146-0.071785-0.700956-0.211131-0.33781-0.139347-0.646062-0.342033-0.304029-0.206909-0.565832-0.464489-0.25758-0.25758-0.464489-0.565832-0.202686-0.304029-0.342033-0.64184-0.143569-0.33781-0.211132-0.696733-0.076007-0.363146-0.076007-0.726292 0-0.367369 0.071785-0.726292 0.071785-0.358923 0.211131-0.700957 0.143569-0.33781 0.346256-0.641839 0.206909-0.304029 0.464489-0.565832 0.261803-0.25758 0.565832-0.464489 0.308252-0.202686 0.646062-0.337811 0.33781-0.143569 0.700956-0.211131 0.358923-0.076007 0.726292-0.076007 0.367369 0 0.730515 0.071784 0.358923 0.071785 0.696734 0.211132t0.646062 0.346255q0.308252 0.202686 0.565832 0.464489 0.261803 0.253358 0.464489 0.56161 0.206909 0.304029 0.346256 0.641839t0.211131 0.700957q0.071785 0.358923 0.071785 0.726292zM1032.339691 670.325332q0 0.367369-0.071785 0.726292-0.071785 0.363146-0.211131 0.700956-0.143569 0.33781-0.346256 0.64184t-0.464489 0.565832q-0.261803 0.25758-0.565832 0.464489-0.304029 0.202686-0.646062 0.33781-0.33781 0.143569-0.700957 0.215354-0.358923 0.071785-0.726292 0.071785-0.367369 0-0.726292-0.071785-0.363146-0.071785-0.700956-0.211131-0.33781-0.139347-0.646062-0.346255-0.304029-0.202686-0.565832-0.46449-0.25758-0.253358-0.464489-0.561609-0.202686-0.304029-0.346256-0.64184-0.139347-0.33781-0.211131-0.700956-0.071785-0.358923-0.071785-0.726292 0-0.363146 0.071785-0.726292 0.071785-0.358923 0.211131-0.696734 0.143569-0.33781 0.346256-0.641839 0.206909-0.304029 0.464489-0.565832 0.261803-0.25758 0.565832-0.464489 0.304029-0.202686 0.646062-0.342033 0.33781-0.139347 0.700956-0.211132 0.358923-0.071785 0.726292-0.071784 0.367369 0 0.726292 0.071784 0.363146 0.071785 0.700957 0.211132 0.33781 0.139347 0.646062 0.342033 0.304029 0.206909 0.565832 0.464489 0.261803 0.261803 0.464489 0.565832 0.202686 0.304029 0.346256 0.641839 0.139347 0.33781 0.211131 0.696734 0.071785 0.363146 0.071785 0.726292zM1050.999485 708.481q0 0.367369-0.071785 0.726292-0.071785 0.363146-0.211132 0.700957-0.139347 0.33781-0.346255 0.641839-0.202686 0.304029-0.464489 0.565832-0.25758 0.25758-0.56161 0.464489-0.308252 0.202686-0.646062 0.337811-0.33781 0.143569-0.700956 0.215354-0.358923 0.071785-0.730515 0.071784-0.367369 0-0.726292-0.071784-0.358923-0.071785-0.700956-0.211132-0.33781-0.139347-0.646062-0.346255-0.304029-0.202686-0.565832-0.464489-0.25758-0.253358-0.464489-0.56161-0.202686-0.304029-0.342033-0.641839t-0.211132-0.700957q-0.071785-0.358923-0.071784-0.726292 0-0.363146 0.071784-0.726292 0.071785-0.358923 0.211132-0.696733t0.346255-0.64184q0.202686-0.308252 0.464489-0.565832 0.25758-0.25758 0.56161-0.464489 0.308252-0.202686 0.646062-0.342033t0.700956-0.211132q0.358923-0.071785 0.726292-0.071784 0.371591 0 0.730515 0.071784 0.358923 0.071785 0.700956 0.211132 0.33781 0.139347 0.646062 0.342033 0.304029 0.206909 0.56161 0.464489 0.261803 0.25758 0.464489 0.565832 0.206909 0.304029 0.346255 0.64184t0.211132 0.696733q0.071785 0.363146 0.071785 0.726292z" fill="#00B578" p-id="5885"></path><path d="M1023.58196 482.152353l103.433277-0.042227a15.919308 15.919308 0 0 0 15.90664-15.931976 15.919308 15.919308 0 0 0-15.919308-15.910863l-103.4375 0.042227a15.919308 15.919308 0 0 0-15.902417 15.931976 15.919308 15.919308 0 0 0 15.919308 15.910863z" fill="#E4E6EF" opacity=".57" p-id="5886"></path><path d="M1062.88196 544.672585l103.538843-0.042226a15.893972 15.893972 0 0 0 15.919308-15.864414 15.88975 15.88975 0 0 0-15.931976-15.851746l-103.538843 0.042226a15.893972 15.893972 0 0 0-15.923531 15.868637 15.893972 15.893972 0 0 0 15.936199 15.847523z" fill="#E4E6EF" opacity=".57" p-id="5887"></path><path d="M1071.736812 482.338148v-0.004222l54.501461-0.025336c-8.749286 0-15.834856 7.051789-15.834855 15.733513 0 8.685946 7.098238 15.725067 15.847523 15.720844l-54.501462 0.021113c8.690169-0.084453 15.703954-7.094015 15.699732-15.733512-0.004223-8.635275-7.026453-15.640615-15.708177-15.708177z" fill="#E4E6EF" opacity=".57" p-id="5888"></path><path d="M418.449784 199.337608a16.890513 16.890513 0 1 1-33.603675-3.449887 16.890513 16.890513 0 0 1 33.603675 3.449887z" fill="#E4E6EF" p-id="5889"></path><path d="M526.95866 137.488773a17.017192 17.017192 0 0 1-18.676684 15.159235 17.000301 17.000301 0 0 1-15.201462-18.630235 17.017192 17.017192 0 0 1 18.676685-15.159235 16.991856 16.991856 0 0 1 15.201461 18.630235zM307.111747 131.311068a17.017192 17.017192 0 0 1-18.680907 15.159235 16.996078 16.996078 0 0 1-15.201461-18.626012 17.017192 17.017192 0 0 1 18.680907-15.159236 16.996078 16.996078 0 0 1 15.201461 18.626013z" fill="#E4E6EF" p-id="5890"></path><path d="M622.736313 176.201828c-1.042989 10.016074-10.092081 17.295885-20.217944 16.269787-10.130085-1.030321-17.494349-9.97807-16.455582-19.989922s10.092081-17.295885 20.217944-16.269786c10.125862 1.030321 17.494349 9.97807 16.455582 19.989921z" fill="#E4E6EF" p-id="5891"></path><path d="M401.875969 199.063137l-0.413818-0.25758-109.741884-69.36089 0.874084-1.410358 109.328066 69.10331 110.734202-62.630021 0.363146 0.143569 94.536199 37.496938-0.599613 1.54126-94.173053-37.349147L401.871746 199.063137z" fill="#E4E6EF" p-id="5892"></path><path d="M141.407372 307.677579m16.421801 0l697.379711 0q16.421801 0 16.421801 16.421801l0 501.289304q0 16.421801-16.421801 16.421801l-697.379711 0q-16.421801 0-16.421801-16.421801l0-501.289304q0-16.421801 16.421801-16.421801Z" fill="#E2E7F2" p-id="5893"></path><path d="M160.966586 283.042766h690.737517c10.801483 0 19.559214 8.542377 19.559213 19.073612v56.82813H141.407372V302.116378c0-10.531235 8.757731-19.069389 19.559214-19.069389z" fill="#393D65" p-id="5894"></path><path d="M169.255605 320.995749a13.960009 13.609531 0 1 0 27.920018 0 13.960009 13.609531 0 1 0-27.920018 0Z" fill="#FFFFFF" p-id="5895"></path><path d="M221.396618 320.995749a13.960009 13.609531 0 1 0 27.920017 0 13.960009 13.609531 0 1 0-27.920017 0Z" fill="#FFFFFF" p-id="5896"></path><path d="M273.550298 320.995749a13.960009 13.609531 0 1 0 27.920018 0 13.960009 13.609531 0 1 0-27.920018 0Z" fill="#FFFFFF" p-id="5897"></path><path d="M383.853792 589.761809l-8.981531-6.5873 8.981531-6.570409 8.98153 6.570409-8.98153 6.5873z" fill="#FFFFFF" p-id="5898"></path><path d="M658.906109 591.468988m-3.135142 3.135141l-67.608579 67.608579q-3.135141 3.135141-6.270283 0l-11.916523-11.916523q-3.135141-3.135141 0-6.270283l67.608579-67.608579q3.135141-3.135141 6.270283 0l11.916523 11.916523q3.135141 3.135141 0 6.270283Z" fill="#B2BED9" p-id="5899"></path><path d="M518.479623 537.519453m0 4.366198l0 95.748094q0 4.366198-4.366198 4.366197l-16.210669 0q-4.366198 0-4.366198-4.366197l0-95.748094q0-4.366198 4.366198-4.366198l16.210669 0q4.366198 0 4.366198 4.366198Z" fill="#B2BED9" p-id="5900"></path><path d="M371.767393 573.562571m3.087368 3.087368l67.704126 67.704126q3.087368 3.087368 0 6.174736l-11.462674 11.462674q-3.087368 3.087368-6.174736 0l-67.704126-67.704126q-3.087368-3.087368 0-6.174736l11.462674-11.462674q3.087368-3.087368 6.174736 0Z" fill="#B2BED9" p-id="5901"></path><path d="M158.352779 632.127438c0-8.867519-0.844526-17.312776-0.844525-25.758032-0.422263-20.690878-2.533577-38.003654-11.401097-54.894167-8.445256-15.623724-30.402923-23.646718-46.871172-26.602557 2.95584 0.422263 9.289782 24.068981 10.134307 27.869346 1.266788 8.445256 1.266788 17.312776 2.95584 25.758032 6.333942 29.558397 27.02482 37.581391 46.026647 53.627378z" fill="#798298" p-id="5902"></path><path d="M787.473705 555.02647c6.891329 5.582314 13.989567 10.239873 20.551532 15.551939 16.341571 12.69322 31.129215 21.949221 49.835458 25.686248 17.456345 3.272537 37.509606-8.74084 50.169045-19.68167-2.187321 2.026862-24.55036-7.930096-28.038251-9.665596-7.355818-4.328194-14.247147-9.910508-21.873214-13.909337-26.957258-13.681315-46.212443-2.65181-70.64457 2.018416z" fill="#798298" p-id="5903"></path><path d="M677.668482 481.903218c7.26292-1.946632 13.998012-4.492876 20.9189-6.34661 16.856732-4.885581 30.571828-10.417224 42.466972-21.387612 10.945052-10.345439 12.697443-30.098894 11.502439-44.236253 0.304029 2.512464-17.680144 12.891684-20.606425 14.420275-6.637971 2.888278-13.905115 4.834909-20.450189 8.073665-22.823305 11.675567-24.854389 30.386032-33.831697 49.476535z" fill="#798298" p-id="5904"></path><path d="M586.121904 240.955831c4.298635 3.479446 8.72395 6.384614 12.815676 9.699377 10.193424 7.913205 19.415644 13.685538 31.078544 16.016429 10.890158 2.039529 23.39336-5.451413 31.289674-12.27518-1.363909 1.266788-15.31125-4.940475-17.48168-6.02569-4.589997-2.702482-8.888632-6.181928-13.643312-8.677501-16.814505-8.529709-28.82366-1.646825-44.058902 1.262565z" fill="#798298" p-id="5905"></path><path d="M201.423587 426.485446c-2.111314 4.222628-3.800365 8.445256-5.489417 12.245621-4.644891 9.712045-7.600731 18.579564-7.600731 29.558397 0.422263 10.134308 9.289782 20.690878 16.46825 27.447084-1.266788-1.266788 1.266788-14.356936 1.689051-16.46825 1.266788-4.222628 3.378103-8.445256 4.644891-13.090148 3.800365-15.623724-4.222628-25.758032-9.712044-39.692704z" fill="#333333" p-id="5906"></path><path d="M903.773331 704.629963c-1.950854-4.302858-4.167734-8.272129-6.059472-11.975373-4.623778-9.72049-9.657151-17.599914-18.186859-24.508134-8.141227-6.051026-21.928108-5.801891-31.695047-4.475986 1.781949-0.185796 10.36233 10.020297 11.738906 11.675567 2.478683 3.644128 4.43376 7.938541 7.24603 11.848695 9.754271 12.786118 22.675513 12.929687 36.960664 17.431009z" fill="#333333" p-id="5907"></path><path d="M1182.340111 236.509404q0 5.28673-0.25758 10.565016-0.261803 5.278285-0.781186 10.53968-0.515161 5.261395-1.292124 10.493231-0.776964 5.227614-1.807285 10.413001-1.030321 5.185387-2.314001 10.31588-1.287902 5.126271-2.820715 10.184979-1.537037 5.058709-3.318986 10.037188-1.777726 4.978479-3.800365 9.859836-2.026862 4.885581-4.285968 9.665596-2.259106 4.780015-4.750457 9.441797-2.491351 4.661782-5.210723 9.196884-2.719373 4.535103-5.658322 8.930859-2.934727 4.391533-6.080584 8.639497-3.150081 4.247964-6.502847 8.335468-3.356989 4.083281-6.90822 8.00188-3.547008 3.918599-7.288256 7.655625-3.737026 3.737026-7.655625 7.288256-3.914376 3.547008-8.001881 6.903997-4.087504 3.352767-8.335468 6.502848-4.243741 3.150081-8.639497 6.084807-4.395756 2.938949-8.930859 5.658322-4.535103 2.71515-9.196884 5.210723-4.661782 2.491351-9.441796 4.750457-4.780015 2.259106-9.661374 4.281745-4.885581 2.026862-9.864059 3.804588-4.978479 1.781949-10.037187 3.318985-5.058709 1.532814-10.184979 2.820716-5.130493 1.283679-10.315881 2.314-5.185387 1.030321-10.413001 1.807285-5.227614 0.776964-10.489008 1.292124-5.261395 0.519383-10.543903 0.781187-5.278285 0.253358-10.565016 0.253357-5.28673 0-10.569238-0.253357-5.278285-0.261803-10.53968-0.781187-5.261395-0.515161-10.493231-1.292124-5.227614-0.776964-10.413001-1.807285-5.185387-1.030321-10.311658-2.314-5.130493-1.287902-10.189202-2.820716-5.058709-1.537037-10.037187-3.318985-4.974256-1.777726-9.859837-3.800366-4.885581-2.026862-9.665596-4.285967-4.775792-2.259106-9.437574-4.750457-4.666004-2.491351-9.196884-5.210723-4.535103-2.719373-8.930858-5.658322-4.395756-2.934727-8.64372-6.080584-4.247964-3.154303-8.331246-6.507071-4.087504-3.352767-8.006103-6.903997-3.914376-3.547008-7.655624-7.288256-3.737026-3.737026-7.288257-7.655625-3.547008-3.918599-6.903997-8.00188-3.352767-4.087504-6.502847-8.335468-3.150081-4.243741-6.084807-8.639497-2.938949-4.395756-5.658322-8.930859-2.71515-4.535103-5.206501-9.196884-2.491351-4.661782-4.754679-9.441797-2.259106-4.780015-4.281745-9.665596-2.026862-4.881358-3.804588-9.859836-1.781949-4.978479-3.314763-10.037188-1.537037-5.058709-2.820716-10.184979-1.283679-5.130493-2.314-10.31588-1.034544-5.185387-1.807285-10.413001-0.776964-5.231836-1.296347-10.493231-0.515161-5.261395-0.776963-10.53968-0.25758-5.278285-0.25758-10.565016 0-5.28673 0.25758-10.569238 0.261803-5.278285 0.776963-10.53968 0.519383-5.261395 1.296347-10.493231 0.772741-5.227614 1.807285-10.413001 1.030321-5.185387 2.314-10.311658 1.283679-5.130493 2.820716-10.189202 1.532814-5.058709 3.314763-10.037187 1.781949-4.978479 3.800365-9.859837 2.026862-4.885581 4.285968-9.665596 2.263329-4.780015 4.754679-9.441797 2.491351-4.661782 5.210724-9.196884 2.71515-4.535103 5.654099-8.930858 2.934727-4.391533 6.084807-8.639498 3.150081-4.247964 6.502847-8.335468 3.352767-4.083281 6.903997-8.00188t7.288257-7.655625q3.741249-3.737026 7.655624-7.288256 3.918599-3.547008 8.006103-6.903997 4.083281-3.352767 8.331246-6.502847 4.247964-3.150081 8.64372-6.084808 4.391533-2.938949 8.930858-5.658321 4.53088-2.71515 9.196884-5.206501 4.661782-2.491351 9.437574-4.754679 4.780015-2.259106 9.665596-4.281745 4.885581-2.026862 9.859837-3.804588 4.982701-1.781949 10.037187-3.314763 5.058709-1.537037 10.189202-2.820716 5.126271-1.283679 10.311658-2.318223 5.185387-1.030321 10.413001-1.803062 5.231836-0.776964 10.493231-1.296347 5.261395-0.519383 10.53968-0.776964T966.986074 21.155367q5.28673 0 10.565016 0.25758 5.278285 0.25758 10.543903 0.776964 5.261395 0.519383 10.489008 1.296347 5.227614 0.772741 10.413001 1.803062 5.185387 1.034544 10.315881 2.318223 5.126271 1.283679 10.184979 2.820716 5.058709 1.532814 10.037187 3.314763 4.978479 1.781949 9.864059 3.800365 4.881358 2.026862 9.661374 4.285968 4.780015 2.259106 9.441796 4.754679 4.661782 2.491351 9.196884 5.206501 4.535103 2.719373 8.930859 5.658321 4.391533 2.934727 8.639497 6.080585 4.247964 3.154303 8.335468 6.50707 4.087504 3.352767 8.001881 6.903997 3.918599 3.547008 7.655625 7.288256 3.737026 3.737026 7.288256 7.655625 3.55123 3.918599 6.903997 8.00188 3.356989 4.087504 6.502847 8.335468 3.150081 4.243741 6.08903 8.639498 2.934727 4.395756 5.654099 8.930858 2.719373 4.535103 5.210723 9.196884 2.491351 4.661782 4.750457 9.441797 2.259106 4.780015 4.285968 9.665596 2.022639 4.881358 3.800365 9.859837 1.781949 4.978479 3.318986 10.037187 1.532814 5.058709 2.820715 10.189202 1.283679 5.126271 2.314001 10.311658 1.030321 5.185387 1.807285 10.413001 0.776964 5.231836 1.292124 10.493231 0.519383 5.261395 0.781186 10.53968 0.253358 5.278285 0.253358 10.569238z" fill="#3662EC" p-id="5908"></path><path d="M35.837445 841.814707m0 0l1054.728066 0q0 0 0 0l0 2.710928q0 0 0 0l-1054.728066 0q0 0 0 0l0-2.710928q0 0 0 0Z" fill="#E5E3EA" p-id="5909"></path><path d="M945.277543 113.263556L842.068065 240.943164l155.067575 125.403611 103.209477-127.679608-155.067574-125.403611z m-60.087999 140.064576l-18.326206-14.981885 26.074729-32.024412 18.326206 14.977662-26.074729 32.024412z m36.449726 29.406383l-18.326206-14.977663 62.697583-77.535898 18.326207 14.977662-62.697584 77.535899z m36.449727 29.410605l-18.326206-14.981885 44.384044-54.780155 18.330429 14.981885-44.388267 54.780155z m36.449726 29.406382l-18.326206-14.977662 77.886377-95.317385 18.330429 14.981884-77.8906 95.313163z" fill="#FFFFFF" p-id="5910"></path><path d="M875.587455 283.672204m0 0l73.018418 59.127039q0 0 0 0l-11.086154 13.690749q0 0 0 0l-73.018418-59.12704q0 0 0 0l11.086154-13.690748q0 0 0 0Z" fill="#FFFFFF" p-id="5911"></path><path d="M99.235985 747.405187c-16.46825 0-29.558397 13.090147-29.558398 29.558397s13.090147 29.558397 29.558398 29.558397 29.558397-13.090147 29.558397-29.558397c0-16.045987-13.090147-29.558397-29.558397-29.558397z m0 44.337596c-8.022994 0-14.779199-6.756205-14.779199-14.779199s6.756205-14.779199 14.779199-14.779199 14.779199 6.756205 14.779198 14.779199c0 8.445256-6.756205 14.779199-14.779198 14.779199z" fill="#CDE1FD" p-id="5912"></path><path d="M301.542101 431.459702a24.803718 24.803718 0 0 0-24.955733 24.959955 24.803718 24.803718 0 0 0 24.955733 24.955732 24.803718 24.803718 0 0 0 24.959955-24.955732c0-13.550414-11.050618-24.955733-24.955733-24.955733z m0 37.437821c-6.773096 0-12.477866-5.700548-12.477867-12.477866 0-6.773096 5.704771-12.477866 12.482089-12.477867 6.773096 0 12.477866 5.700548 12.477866 12.477867a12.401859 12.401859 0 0 1-12.477866 12.477866z" fill="#3662EC" p-id="5913"></path><path d="M677.546026 709.777347a33.384098 33.384098 0 0 0-33.591007 33.591007 33.384098 33.384098 0 0 0 33.591007 33.59523 33.384098 33.384098 0 0 0 33.59523-33.59523c0-18.233308-14.876319-33.591007-33.59523-33.591007z m0 50.388622c-9.116654 0-16.793392-7.676738-16.793392-16.797615 0-9.116654 7.676738-16.793392 16.793392-16.793392 9.120877 0 16.797615 7.676738 16.797615 16.793392 0 9.598034-7.676738 16.797615-16.797615 16.797615z" fill="#3662EC" p-id="5914"></path><path d="M251.630635 684.817392a24.803718 24.803718 0 0 0-24.959955 24.959955 24.803718 24.803718 0 0 0 24.955733 24.955733 24.803718 24.803718 0 0 0 24.959955-24.955733c0-13.550414-11.050618-24.955733-24.955733-24.955732z m0 37.437821c-6.777318 0-12.482089-5.700548-12.482088-12.477866 0-6.773096 5.704771-12.477866 12.477866-12.477866 6.777318 0 12.482089 5.700548 12.482089 12.477866a12.401859 12.401859 0 0 1-12.482089 12.477866z" fill="#B3BAC8" p-id="5915"></path></svg></p><p style="margin-top:2%;">暂未查询到相关考核结果</p></div>}</div></div>
</div>

如果有筛选条件,很明显,这样直接通过视图View传输数据肯定不行,那么,改动一下,通过接口传输:

        /// <summary>/// 返回请求的汇总数据/// </summary>/// <param name="query"></param>/// <returns></returns>public ActionResult GetOriginalResult(RongboRequest<OriginalResultQuery> request) {if (request == null) {request = new RongboRequest<OriginalResultQuery>();}if (request.Data == null) {request.Data = new OriginalResultQuery();}var curr = this.GetCurrentPlan() ?? new GHEntity();if (request.Data.Year == 0) {request.Data.Year = SystemYear;}request.Data.districtCode = this.GetDistrictCodeByPgMode();request.Data.PlanningId = curr.Id;request.Data.SystemId = SystemIdInt;if (string.IsNullOrWhiteSpace(request.Data.SchoolType)) {request.Data.SchoolType = _baseConfigService.GetSingle(request.Data.districtCode, SystemId, BaseConfigKeyEnum.PG_SZXXLX.ToString())?.Value;}var OrgResult = _OrigService.OriginalResult(request);OrgResult.Columns.Remove("学校类型");string dt = JsonConvert.SerializeObject(OrgResult);return Content(dt, "application/json");}

前端需要根据筛选条件请求,动态加载:


<style type="text/css">/*高度为内容高度*/.layui-table-cell {white-space: normal;height: auto !important;word-break: break-all;}.heads {font-weight: bold !important;}
</style><div class="layuimini-container"><div class="layuimini-main"><div style="margin: 10px 10px 10px 10px"><form class="layui-form layui-form-pane" lay-filter="formTest" id="formTest" style="width:100%;margin:20px"><div class="layui-form-item"><div class="layui-inline" id="divDistirctCode"><label class="layui-form-label">地区</label><div class="layui-input-inline"><select id="DistirctCode2" name="DistirctCode2" lay-filter="DistirctCode2">@foreach (var item in ViewBag.DistrictList){<option value="@item.Id">@item.Name</option>}</select></div></div><div class="layui-inline"><label class="layui-form-label layui-required">学年</label><div class="layui-input-inline"><input type="text" name="Year" id="Year" class="layui-input" lay-filter="Year"></div></div><div class="layui-inline"><label class="layui-form-label layui-required">学校类型</label><div class="layui-input-inline"><select name="SchoolType" id="SchoolType" lay-filter="SchoolType"><option value="">全部</option>@foreach (var item in ViewBag.SchoolTypeList){<option value="@item.Id">@item.Name</option>}</select></div></div></div></form><div class="layui-tab layui-tab-brief" lay-filter="docDemoTabBrief"><ul class="layui-tab-title" style="font-size:16px;font-weight:bold;"><li class="GetData layui-this" data-id="1">督评分数汇总</li><li class="GetData" data-id="0">自评分数汇总</li></ul><div class="layui-tab-content"><div class=" layui-tab-item layui-show"><table class="layui-hide" id="currentTable" lay-filter="currentTable" lay-data="{id:'tables'}"></table></div><div class=" layui-tab-item"><table class="layui-hide" id="currentTable1" lay-filter="currentTable1" ></table></div></div></div></div></div>
</div>
<script type="text/javascript">var DistrictCode =@Html.Raw(ViewBag.DistrictCode);var Year = '@ViewBag.Year';var CAN_QUERY_OTHER_DISTRICT =  @Html.Raw(ViewBag.CAN_QUERY_OTHER_DISTRICT);if (CAN_QUERY_OTHER_DISTRICT) {$("#divDistirctCode").show();} else {$("#divDistirctCode").hide();}layui.config({base: '/js/layui-exts/'}).use(['form', 'table', 'cityPicker'], function () {var $ = layui.jquery,form = layui.form,laydate = layui.laydate,table = layui.table;var excel = layui.excel;layui.cityPicker({url: '@(Url.Action("GetRegion", "BasicSetup"))',provinceDom: '#province',cityDom: '#city',areaDom: '#area',code: DistrictCode,});$("#Year").val(Year);form.on('select(DistirctCode2)', function () {Load();});form.on('select(SchoolType)', function () {Load();});$(document).on('click', '.GetData', function () {Load();});//学年laydate.render({elem: '#Year', type: 'year', trigger: "click"//加入click事件, change: function (value, date, endDate) {Year = $("#Year").val();Load();}});Load();function Load() {$.ajax({url: '@Url.Action("GetOriginalResult")',type: 'post',data: {Data: {Year: $("#Year").val(),SchoolType: $("#SchoolType").val(),DistrictCode: $("#DistirctCode2").val(),Code: $(".layui-tab-title > .layui-this").attr("data-id")}},success: function (dt) {LoadData(dt);}});}function LoadData(dt){var code = $(".layui-tab-title > .layui-this").attr("data-id");var cols = [];if (dt.length > 0) {var keys = Object.keys(dt[0]);keys.forEach(function (key) {cols.push({ field: key, title: key, sort: true });});};if (code == 1) {table.render({elem: '#currentTable',toolbar: ['default'], //开启工具栏,此处显示默认图标,可以自定义模板,详见文档cols: [cols],data: dt,page: true,limits: [10, 50, 100, 200, 500, 1000, 5000]// limit: Number.MAX_VALUE});} else{table.render({elem: '#currentTable1',toolbar: ['default'], //开启工具栏,此处显示默认图标,可以自定义模板,详见文档cols: [cols],data: dt,page: true,limits:[10,50,100,200,500,1000,5000]//limit: Number.MAX_VALUE});}table = layui.table;table.render();}});</script>

最后,附一张效果图:

在这里插入图片描述

相关文章:

C#MVC返回DataTable到前端展示。

很久没写博客了&#xff0c;闭关太久&#xff0c;失踪人口回归&#xff0c;给诸位道友整点绝活。 交代下背景&#xff1a;要做一个行转列的汇总统计&#xff0c;而且&#xff0c;由于是行转列&#xff0c;列的数量不固定&#xff0c;所以&#xff0c;没法使用正常的SqlSugar框…...

HttpUtils工具类(二)Apache HttpClient 5 使用详细教程

目录 一、Apache HttpClient 5介绍 &#xff08;1&#xff09;核心特性 &#xff08;2&#xff09;Apache HttpClient 5 的新特性 &#xff08;3&#xff09;在 Java 项目的主要使用场景及缺点 使用场景&#xff1a; 缺点&#xff1a; 二、在实际项目中的应用 &#xf…...

Vue3.0生命周期钩子(包含:Vue 2.0 和 Vue 3.0)

1、Vue 2.0 生命周期钩子 每个应用程序实例在创建时都有一系列的初始化步骤。例如&#xff0c;创建数据绑定、编译模板、将实例挂载到 DOM 并在数据变化时触发 DOM 更新、销毁实例等。在这个过程中会运行一些叫做生命周期钩子的函数&#xff0c;通过这些钩子函数可以定义业务逻…...

遥感之常用各种指数总结大全

目前在遥感领域基本各种研究领域都会用到各种各样的指数&#xff0c;如水体指数&#xff0c;植被指数&#xff0c;农业长势指数&#xff0c;盐分指数&#xff0c;云指数&#xff0c;阴影指数&#xff0c;建筑物指数&#xff0c;水质指数&#xff0c;干旱指数等等众多。 本文对上…...

【C++】C++11新增特性

目录 C11简介&#xff1a; 1、统一的列表初始化&#xff1a; std::initializer_list 2、自动类型推导&#xff1a; auto&#xff1a; decltype&#xff1a; 3、final 和 override final&#xff1a; override&#xff1a; 4、默认成员函数控制&#xff1a; 显示缺省…...

【LeetCode每日一题】——662.二叉树最大宽度

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 广度优先搜索 二【题目难度】 中等 三【题目编号】 662.二叉树最大宽度 四【题目描述】 给…...

第二十三节、血量更新逻辑的实现

一、创建代码 引入命名空间 using UnityEngine.UI; 调用UI必须有这个代码 二、ScriptObject类 1、是一个持久化存储文件的类型 接收所有的事件方法 先继承SO类&#xff0c;然后创建项目菜单 2、进行订阅 放入事件类&#xff0c;关联代码&#xff0c;即可进行广播 传递给这…...

Spring Authorization Server 认证服务器搭建

Spring Authorization Server实现了oauth2和oidc,最近有了解相关技术的需求,所以就尝试着进行了基本的环境搭建和技术测试,目前只测试了授权码模式,做一个记录,后续需要用时方便查找和参考。 1. 版本要求 Spring Authorization Server 版本:1.3.1 JDK 版本:17 Spring B…...

秋招突击——8/15——知识补充——垃圾回收机制

文章目录 引言正文指针引用可达性分析算法垃圾回收算法标记清除算法标记整理算法复制分代收集 垃圾收集器Serial收集器ParNew并行收集器Parallel Scavenge吞吐量优先收集器Serial Old老年代收集器Parallel old收集器CMS收集器G1收集器&#xff08;Garbage First垃圾优先&#x…...

【iOS】UITableViewCell的重用问题解决方法

我自己在实验中对cell的重用总结如下&#xff1a; 非自定义Cell和非自定义cell的复用情况一样&#xff1a; 第一次加载创建tableView的时候&#xff0c;是屏幕上最多也显示几行cell就先创建几个cell&#xff0c;此时复用池里什么都没有开始下滑tableView&#xff0c;刚开始滑…...

开发一个微信小程序商城需要哪些技术栈

开发一个小程序商城需要掌握以下技术栈&#xff1a;‌ 前端技术&#xff1a;‌包括HTML、‌CSS和JavaScript&#xff0c;‌用于定义商城的页面结构、‌样式设计和交互功能。‌ 微信小程序专用技术&#xff1a;‌如WXML、‌WXSS、‌JavaScript和JSON&#xff0c;‌用于描述小程…...

望繁信科技荣膺上海市浦东新区博士后创新实践基地称号

近日&#xff0c;上海望繁信科技有限公司&#xff08;简称“望繁信科技”&#xff09;凭借在大数据流程智能领域的卓越表现&#xff0c;成功入选上海市浦东新区博士后创新实践基地。这一荣誉不仅是对望繁信科技创新能力和技术实力的高度认可&#xff0c;也标志着公司在推动产学…...

Nginx--代理与负载均衡(扩展nginx配置7层协议及4层协议方法、会话保持)

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 一、代理原理 1、反向代理产生的背景 单个服务器的处理客户端&#xff08;用户&#xff09;请求能力有一个极限&#xff0c;当接入请求过多时&#…...

Ubuntu20.4 系统安装后无wifi图标

0. 问题排查 1.检查 BIOS 设置: 有时候&#xff0c;无线网卡可能在 BIOS 中被禁用。重启电脑&#xff0c;进入 BIOS 设置&#xff0c;确保无线网卡选项是启用的。 2.检查硬件开关: 检查您的笔记本电脑是否有物理开关或键盘快捷键来启用或禁用无线网卡。 3.在软件更新中切换…...

牛客网SQL进阶135 :每个6/7级用户活跃情况

每个67级用户活跃情况_牛客题霸_牛客网 0 问题描述 基于用户信息表user_info、、试卷作答记录表exam_record、题目练习记录表practice_record&#xff0c;统计 每个6/7级用户总活跃月份数、2021年活跃天数、2021年试卷作答活跃天数、2021年答题活跃天数&#xff0c;结果 按照总…...

SQLite3使用接口写入二进制文件

使用接口的方式写入二进制文件 &#xff0c;有二种方案。 一、全部文件 一次性写下到数据中 使用sqlite3_bind_blob接口 FILE* fpfopen("user.bmp","rb"); iLenfread(buffer,1,65535,fp); fclose(fp);sqlite3_prepare(pDB,"insert into user values …...

在复杂的数据库架构中,如何优化 SQL 查询以提高性能和减少资源消耗?

在优化 SQL 查询以提高性能和减少资源消耗时&#xff0c;可以考虑以下几个方面&#xff1a; 使用索引&#xff1a;为经常被查询的列创建索引&#xff0c;可以大大加快查询速度。同时&#xff0c;避免过多的索引&#xff0c;因为过多的索引会增加写入操作的开销。 编写高效的查…...

【HarmonyOS】端云一体化初始化项目

简介 端云一体化开发是HarmonyOS对云端开发的支持、实现端云联动。云开发服务提供了云函数、云数据库、云存储等服务&#xff0c;可以使开发者专注于应用的业务逻辑开发&#xff0c;无需关注基础设施&#xff0c;例如&#xff1a;服务器、操作系统等问题。 因此&#xff0c;…...

LLM之KG:利用大语言模型(LLM)对文本语料提取概念和概念之间的语义关系进而实现自动构建知识图谱

LLM之KG:利用大语言模型(LLM)对文本语料提取概念和概念之间的语义关系进而实现自动构建知识图谱 目录 ML之KG:基于MovieLens电影评分数据集利用基于知识图谱的推荐算法(networkx+基于路径相似度的方法)实现对用户进行Top电影推荐案例 LLMs之AutoKG:《大型语言模型在知识图…...

Spring Security 6如何使用?

Spring Security 6 是一个功能强大且高度可定制的身份验证和访问控制框架&#xff0c;它专注于为基于Java的应用程序提供全面的安全解决方案。以下是对Spring Security 6的详细解析&#xff1a; 一、核心功能 身份验证&#xff08;Authentication&#xff09;&#xff1a; 验…...

PyTorch深度学习快速入门教程--学习笔记

目录 P4 PyCharm和Jupyter的对比 P5 PyTorch加载数据 P6 Dataset类代码实现 P7 Tensorboard 写日志 读取日志文件 Tensorboard 读图片 P10 Transforms使用 Transforms用途 常见的Transforms工具 P14 torchvision数据集使用 P15 Dataloader使用 P16 nn.Module模块使…...

SQLALchemy 分组过滤、子查询

SQLALchemy 分组过滤、子查询 分组和过滤(Group By Having)示例:使用ORM示例:使用SQLAlchemy Core子查询(Subquery)SQLAlchemy 是一个流行的 SQL 工具包和对象关系映射(ORM)库,用于 Python 应用程序。它允许你以 Pythonic 的方式使用 SQL 数据库,同时提供了强大的查询…...

华为od(D卷) 环中最长子串/字符成环找偶数LOX

文章目录 题目描述输入描述输出描述示例1示例2示例3思路代码 题目描述 给你一个字符串 s&#xff0c;字符串 s 首尾相连成一个环形&#xff0c;请你在环中找出 ‘l’、‘o’、‘x’ 字符都恰好出现了偶数次最长子字符串的长度。 输入描述 输入是一串小写的字母组成的字符串 …...

机器学习--常见算法总结

有监督学习算法 1. 线性回归算法 概念&#xff1a;线性回归是一种统计方法&#xff0c;用于预测一个变量&#xff08;因变量&#xff09;与一个或多个自变量&#xff08;特征变量&#xff09;之间的关系。目标是通过线性方程建立自变量和因变量之间的关系模型。 作用&#x…...

QT 网络聊天室简易版

视频:qt开发网络聊天w室软件3.4界面开发_哔哩哔哩_bilibili 目录 UI部分 设计稿图 放置控件 界面美化 拖动窗体 设置界面 网络部分 配置对话框 多项目结果和服务器端设计 客户端框架开发 UI部分 设计稿图 放置控件 界面美化 现在我们把窗体自带的标题栏给去了,用我们自…...

Linux_Shell三剑客grep,awk,sed-08

三剑客的概述&#xff1a; awk、grep、sed是linux操作文本的三大利器&#xff0c;合称文本三剑客&#xff0c;也是必须掌握的linux命令之一。三者的功能都是处理文本&#xff0c;但侧重点各不相同&#xff0c;其中属awk功能最强大&#xff0c;但也最复杂。grep更适合单纯的查找…...

uniapp实现足球数据分析平台移动端H5

文章目录 前言一直想做一款足球分析平台&#xff0c;大概内容包括竞彩分析模块&#xff0c;即时预测模块&#xff0c;初盘分析模块&#xff0c;找来找去还是前端铺子的样式感觉比较好看。 一、界面一栏二、注册界面1.代码说明 三、首页界面四、竞彩预测五、即时预测总结 前言 …...

Redis5优化-Redis

1、Redis关键参数 a、客户端最大连接数 maxclients 60000 注意该参数受到操作系统最大文件句柄的限制(ulimit -n) b、响应 repl-ping-slave-period/repl-timeout repl-timeout 60 1&#xff09;、说明&#xff1a;slave 会每隔 repl-ping-slave-period(默认10秒)ping一次mast…...

Element UI【详解】el-scrollbar 滚动条组件

el-scrollbar 滚动条组件用于优化页内滚动条的UI效果&#xff0c;使用时必须指定高度&#xff01; /*el-scrollbar 必须指定高度*/ .scrollMenuBox {height: 200px;width: 100px;border: 1px solid red; } 控制el-scrollbar内滚动条的方法与控制页面的滚动条的方法基本一样&a…...

【精选】基于Python大型购物商城系统(京东购物商城,淘宝购物商城,拼多多购物商城爬虫系统)

目录&#xff1a; 目录&#xff1a; 系统介绍&#xff1a; 系统开发技术 Python语言 Django框架简介 MySQL数据库技术 B/S架构 系统设计 系统总体设计 系统详细界面实现&#xff1a; 系统测试 测试目的 测试用例 本章小结 参考代码&#xff1a; 为什么选择我&…...