using AntDesign; using AntDesign.Charts; using Microsoft.AspNetCore.Components; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text.Json; using System.Threading.Tasks; using wispro.sp.share; using wispro.sp.web.Services; namespace wispro.sp.web.Pages.Report { public partial class AppealTrend { private int iType = 3; private DateTime? start = new DateTime(DateTime.Now.Year, 1, 1); private DateTime? end = DateTime.Now; internal class TJType { public string Name { get; set; } public int value { get; set; } } List Types = new List { new TJType { value = 3,Name = "申诉人统计" }, new TJType { value = 4,Name = "申诉类型统计" }, new TJType { value = 4,Name = "部门申诉统计" }, }; share.ChartDatas Datas = new share.ChartDatas() { Title = "初始化标题", Datas = new List() { new share.ChartData(){ type ="部门一", value =1, year="2022-01", CustomerType ="", CustomerYear=""}, new share.ChartData(){ type ="部门一",value =5, year="2022-02",CustomerType ="", CustomerYear=""}, new share.ChartData(){ type ="部门二", value =3, year="2022-01", CustomerType ="", CustomerYear=""}, new share.ChartData(){ type ="部门二",value =4, year="2022-02",CustomerType ="", CustomerYear=""}, new share.ChartData(){ type ="部门三",value =2.5, year="2022-02",CustomerType ="", CustomerYear=""} }, ATitle = "部门", BTitle = "申诉月份" }; LineConfig config = new LineConfig { Title = new AntDesign.Charts.Title { Visible = true, Text = "带数据点的折线图" }, ForceFit = true, Padding = "auto", XField = "year", YField = "value", SeriesField = "type", Point = new LineViewConfigPoint { Visible = true }, Label = new Label { Visible = true, Type = "point" }, Legend = new Legend { Visible = false, Position = "bottom", }, XAxis = new ValueCatTimeAxis { Type="time", //Visible= true, //Label = new BaseAxisLabel() //{ // AutoRotate = true //}, //Title = new BaseAxisTitle() //{ // Text = "绩效月份", // AutoRotate = true //} }, YAxis = new ValueAxis { Label = new BaseAxisLabel() { AutoRotate=true }, Title = new BaseAxisTitle() { Visible=true, Text = "申诉数量" } } }; [Inject] ReportService reportService { get; set; } [Inject] MessageService msgService { get; set; } private AntDesign.Charts.IChartComponent chart; private void OnTimeRangeChange(DateRangeChangedEventArgs args) { msgService.Info($"Selected Time: {JsonSerializer.Serialize(args.Dates)}"); Console.WriteLine($"Selected Time: {JsonSerializer.Serialize(args.Dates)}"); Console.WriteLine($"Formatted Selected Time: {JsonSerializer.Serialize(args.DateStrings)}"); if (args.Dates?.Length > 0) { Console.WriteLine(args.Dates[0]); start = args.Dates[0]; } if (args.Dates?.Length > 1) { Console.WriteLine(args.Dates[1]); end = args.Dates[1]; } } private bool _noIconLoading; private async Task OnButtonClick() { _noIconLoading = true; Datas = await reportService.GetAppealReportData(iType, start, end, null); if (Datas != null) { config.Title.Text = Datas.Title; config.XField = Datas.ATitle; await chart.ChangeData(Datas.Datas); await chart.UpdateChart(config); StateHasChanged(); } _noIconLoading = false; } protected async override Task OnInitializedAsync() { //Datas = await reportService.GetAppealReportData(iType, DateTime.Parse("2022-01-01"), DateTime.Now, null); if (Datas != null) { config.Title.Text = Datas.Title; await chart.ChangeData(Datas.Datas); await chart.UpdateChart(config); StateHasChanged(); } await base.OnInitializedAsync(); } private List GetColumns(List chartDatas) { List retColumns = new List(); foreach(var cData in chartDatas) { if (!retColumns.Contains(cData.year)) { retColumns.Add(cData.year); } } retColumns.Sort(); return retColumns; } private DataTable GetTableData(ChartDatas chartDatas) { DataTable retTable = new DataTable(); List Columns = GetColumns(chartDatas.Datas); retTable.Columns.Add(chartDatas.ATitle); foreach(string col in Columns) { retTable.Columns.Add(col); } foreach(var cData in chartDatas.Datas) { int iIndex = Columns.IndexOf(cData.year); DataRow row = null; foreach(DataRow temRow in retTable.Rows) { if(temRow[chartDatas.ATitle].ToString()== cData.type) { row = temRow; break; } } if (row!= null) { row[cData.year] = cData.value; } else { row = retTable.NewRow(); row[chartDatas.ATitle] = cData.type; row[cData.year] = cData.value; retTable.Rows.Add(row); } } return retTable; } } }