C#MVC返回DataTable到前端展示。
很久没写博客了,闭关太久,失踪人口回归,给诸位道友整点绝活。
交代下背景:要做一个行转列的汇总统计,而且,由于是行转列,列的数量不固定,所以,没法使用正常的SqlSugar框架,只能原生sql顶包,这么解决滋生出另外个问题,DataTable序列化以后,究竟如何在前端加载?
先看数据库查询出来的原始数据:
页面上想要达到的效果:
设计到以下主要的知识点:
- 查询结果需要行转列,
- DataTable需要序列化传给前端。
- 前端如何加载这些不固定的数据。
首先是数据库行转列:
这是原始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到前端展示。
很久没写博客了,闭关太久,失踪人口回归,给诸位道友整点绝活。 交代下背景:要做一个行转列的汇总统计,而且,由于是行转列,列的数量不固定,所以,没法使用正常的SqlSugar框…...
HttpUtils工具类(二)Apache HttpClient 5 使用详细教程
目录 一、Apache HttpClient 5介绍 (1)核心特性 (2)Apache HttpClient 5 的新特性 (3)在 Java 项目的主要使用场景及缺点 使用场景: 缺点: 二、在实际项目中的应用 …...

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

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

【C++】C++11新增特性
目录 C11简介: 1、统一的列表初始化: std::initializer_list 2、自动类型推导: auto: decltype: 3、final 和 override final: override: 4、默认成员函数控制: 显示缺省…...

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

第二十三节、血量更新逻辑的实现
一、创建代码 引入命名空间 using UnityEngine.UI; 调用UI必须有这个代码 二、ScriptObject类 1、是一个持久化存储文件的类型 接收所有的事件方法 先继承SO类,然后创建项目菜单 2、进行订阅 放入事件类,关联代码,即可进行广播 传递给这…...
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收集器(Garbage First垃圾优先&#x…...

【iOS】UITableViewCell的重用问题解决方法
我自己在实验中对cell的重用总结如下: 非自定义Cell和非自定义cell的复用情况一样: 第一次加载创建tableView的时候,是屏幕上最多也显示几行cell就先创建几个cell,此时复用池里什么都没有开始下滑tableView,刚开始滑…...
开发一个微信小程序商城需要哪些技术栈
开发一个小程序商城需要掌握以下技术栈: 前端技术:包括HTML、CSS和JavaScript,用于定义商城的页面结构、样式设计和交互功能。 微信小程序专用技术:如WXML、WXSS、JavaScript和JSON,用于描述小程…...

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

Nginx--代理与负载均衡(扩展nginx配置7层协议及4层协议方法、会话保持)
前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除 一、代理原理 1、反向代理产生的背景 单个服务器的处理客户端(用户)请求能力有一个极限,当接入请求过多时&#…...

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

牛客网SQL进阶135 :每个6/7级用户活跃情况
每个67级用户活跃情况_牛客题霸_牛客网 0 问题描述 基于用户信息表user_info、、试卷作答记录表exam_record、题目练习记录表practice_record,统计 每个6/7级用户总活跃月份数、2021年活跃天数、2021年试卷作答活跃天数、2021年答题活跃天数,结果 按照总…...
SQLite3使用接口写入二进制文件
使用接口的方式写入二进制文件 ,有二种方案。 一、全部文件 一次性写下到数据中 使用sqlite3_bind_blob接口 FILE* fpfopen("user.bmp","rb"); iLenfread(buffer,1,65535,fp); fclose(fp);sqlite3_prepare(pDB,"insert into user values …...
在复杂的数据库架构中,如何优化 SQL 查询以提高性能和减少资源消耗?
在优化 SQL 查询以提高性能和减少资源消耗时,可以考虑以下几个方面: 使用索引:为经常被查询的列创建索引,可以大大加快查询速度。同时,避免过多的索引,因为过多的索引会增加写入操作的开销。 编写高效的查…...

【HarmonyOS】端云一体化初始化项目
简介 端云一体化开发是HarmonyOS对云端开发的支持、实现端云联动。云开发服务提供了云函数、云数据库、云存储等服务,可以使开发者专注于应用的业务逻辑开发,无需关注基础设施,例如:服务器、操作系统等问题。 因此,…...
LLM之KG:利用大语言模型(LLM)对文本语料提取概念和概念之间的语义关系进而实现自动构建知识图谱
LLM之KG:利用大语言模型(LLM)对文本语料提取概念和概念之间的语义关系进而实现自动构建知识图谱 目录 ML之KG:基于MovieLens电影评分数据集利用基于知识图谱的推荐算法(networkx+基于路径相似度的方法)实现对用户进行Top电影推荐案例 LLMs之AutoKG:《大型语言模型在知识图…...
Spring Security 6如何使用?
Spring Security 6 是一个功能强大且高度可定制的身份验证和访问控制框架,它专注于为基于Java的应用程序提供全面的安全解决方案。以下是对Spring Security 6的详细解析: 一、核心功能 身份验证(Authentication): 验…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...

《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...

MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...

零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...