Esempio n. 1
0
        /// <summary>
        /// 热定排行榜
        /// </summary>
        /// <param name="app"></param>
        /// <param name="title"></param>
        /// <returns></returns>
        private async Task <ChartViewConfig> HotOrderRankingPage_Chart(Module app, string title)
        {
            ChartViewConfig chartData = null;

            try
            {
                var result = await _reportingService.GetHotOrderRankingAsync(0, Settings.UserId, 0, 0, DateTime.Now.AddDays(-15), DateTime.Now, this.ForceRefresh, new System.Threading.CancellationToken());

                if (result != null && result.Any())
                {
                    var series = result.ToList();
                    if (series.Count > 50)
                    {
                        series = result.Take(50).ToList();
                    }

                    chartData = new ChartViewConfig()
                    {
                        BackgroundColor = Color.White,
                        ChartConfig     = new ChartConfig
                        {
                            type = Wesley.ChartJS.ChartTypes.Bar,
                            data = ChartDataProvider.GetHotOrderRanking(series)
                        }
                    };
                }
                return(chartData);
            }
            catch (Exception ex)
            {
                Crashes.TrackError(ex);
                return(chartData);
            }
        }
Esempio n. 2
0
        public void Refresh(List <BrandRanking> analysis)
        {
            if (analysis == null || analysis.Count == 0)
            {
                return;
            }

            analysis.ForEach(b =>
            {
                b.Percentage *= 100;
            });

            RankSeries      = new ObservableCollection <BrandRanking>(analysis.OrderByDescending(b => b.Percentage));
            TotalAmount     = analysis.Select(s => s.NetAmount ?? 0).Sum();
            TotalPercentage = analysis.Select(s => s.Percentage ?? 0).Sum();

            var ranks = analysis.ToList();

            if (ranks.Count > 10)
            {
                ranks = ranks.Take(10).ToList();
            }

            var data = new ChartViewConfig()
            {
                BackgroundColor = Color.White,
                ChartConfig     = new ChartConfig
                {
                    type = Wesley.ChartJS.ChartTypes.Bar,
                    data = ChartDataProvider.GetBrandRanking(ranks)
                }
            };

            ChartConfig = data;
        }
Esempio n. 3
0
        /// <summary>
        /// 销量走势图
        /// </summary>
        /// <param name="app"></param>
        /// <param name="title"></param>
        /// <returns></returns>
        private async Task <ChartViewConfig> SaleTrendChatPage_Chart(Module app, string title)
        {
            ChartViewConfig chartData = null;

            try
            {
                var result = await _reportingService.GetSaleTrendingAsync("day", this.ForceRefresh, new System.Threading.CancellationToken());

                if (result != null && result.Any())
                {
                    var series = result.ToList();
                    if (series.Count > 50)
                    {
                        series = result.Take(50).ToList();
                    }

                    chartData = new ChartViewConfig()
                    {
                        BackgroundColor = Color.White,
                        ChartConfig     = new ChartConfig
                        {
                            type = DCMS.ChartJS.ChartTypes.Line,
                            data = ChartDataProvider.GetSaleTrendChat(series),
                        }
                    };
                }
                return(chartData);
            }
            catch (Exception ex)
            {
                Crashes.TrackError(ex);
                return(chartData);
            }
        }
Esempio n. 4
0
        private static string BuildChartJavascript(ChartViewConfig config)
        {
            var jsonConfig = GetChartConfigJSON(config.ChartConfig);

            return($@"
             <script>
                var chartConfig = { jsonConfig };
                var loadChartCalled = false;
                var chart;

                function loadChart(config) {{
                    if (loadChartCalled) {{
                        chart.destroy();
                    }}

                    loadChartCalled = true;
                    chart = new Chart(
                        document.getElementById('chartCanvas'),
                        config
                    );
                }};

                function changeChartBackgroundColor(color) {{
                    document.body.style.backgroundColor = color;
                }};

                window.onload = function() {{
                    if (!loadChartCalled) {{
                        loadChart(chartConfig);
                    }}
                }};
            </script>
            ");
        }
Esempio n. 5
0
        public void Refresh(List <UnSaleRanking> series)
        {
            RankSeries           = new ObservableCollection <UnSaleRanking>(series);
            TotalSumReturnAmount = series.Select(s => s.TotalSumReturnAmount).Sum();
            TotalSumNetAmount    = series.Select(s => s.TotalSumNetAmount).Sum();


            var ranks = series.ToList();

            if (ranks.Count > 10)
            {
                ranks = ranks.Take(10).ToList();
            }

            var data = new ChartViewConfig()
            {
                BackgroundColor = Color.White,
                ChartConfig     = new ChartConfig
                {
                    type = Wesley.ChartJS.ChartTypes.Line,
                    data = ChartDataProvider.GetUnsalable(ranks),
                }
            };

            ChartConfig = data;
        }
Esempio n. 6
0
        private void RefreshData(List <BusinessVisitRank> analysis)
        {
            if (analysis == null)
            {
                return;
            }

            RankSeries = new ObservableCollection <BusinessVisitRank>(analysis);
            SubTotal   = analysis.Select(s => s.VisitedCount).Sum();
            Total      = analysis.Select(s => s.CustomerCount).Sum();

            var ranks = analysis.ToList();

            if (ranks.Count > 10)
            {
                ranks = ranks.Take(10).ToList();
            }

            var data = new ChartViewConfig()
            {
                BackgroundColor = Color.White,
                ChartConfig     = new ChartConfig
                {
                    type = Wesley.ChartJS.ChartTypes.Bar,
                    data = ChartDataProvider.GetCustomerVisitRank(ranks)
                }
            };

            ChartConfig = data;
        }
Esempio n. 7
0
        public void Refresh(List <BusinessRanking> analysis)
        {
            RankSeries       = new ObservableCollection <BusinessRanking>(analysis);
            SaleAmount       = analysis.Select(s => s.SaleAmount).Sum();
            SaleReturnAmount = analysis.Select(s => s.SaleReturnAmount).Sum();
            NetAmount        = analysis.Select(s => s.NetAmount).Sum();

            var ranks = analysis.ToList();

            if (ranks.Count > 10)
            {
                ranks = ranks.Take(10).ToList();
            }

            var data = new ChartViewConfig()
            {
                BackgroundColor = Color.White,
                ChartConfig     = new ChartConfig
                {
                    type = Wesley.ChartJS.ChartTypes.Bar,
                    data = ChartDataProvider.GetSalesRanking(ranks)
                }
            };

            ChartConfig = data;
        }
Esempio n. 8
0
        /// <summary>
        /// 新增客户分析
        /// </summary>
        /// <param name="app"></param>
        /// <param name="title"></param>
        /// <returns></returns>
        private async Task <ChartViewConfig> NewCustomersPage_Chart(Module app, string title)
        {
            ChartViewConfig chartData = null;

            try
            {
                var result = await _reportingService.GetNewCustomerAnalysisAsync(Filter.BusinessUserId, this.ForceRefresh, new System.Threading.CancellationToken());

                if (result != null && result.ChartDatas != null)
                {
                    var series = result.ChartDatas.ToList();
                    if (series.Count == 0)
                    {
                        return(null);
                    }

                    chartData = new ChartViewConfig()
                    {
                        BackgroundColor = Color.White,
                        ChartConfig     = new ChartConfig
                        {
                            type = Wesley.ChartJS.ChartTypes.Line,
                            data = ChartDataProvider.GetNewCustomers(result)
                        }
                    };
                }
                return(chartData);
            }
            catch (Exception ex)
            {
                Crashes.TrackError(ex);
                return(chartData);
            }
        }
Esempio n. 9
0
        /// <summary>
        /// 客户活跃度
        /// </summary>
        /// <param name="app"></param>
        /// <param name="title"></param>
        /// <returns></returns>
        private async Task <ChartViewConfig> CustomerActivityPage_Chart(Module app, string title)
        {
            ChartViewConfig chartData = null;

            try
            {
                var result = await _terminalService.GetCustomerActivityRankingAsync(Settings.UserId, 0, this.ForceRefresh, new System.Threading.CancellationToken());

                if (result != null && result.Any())
                {
                    var series = result.ToList();
                    if (series.Count > 50)
                    {
                        series = result.Take(50).ToList();
                    }

                    chartData = new ChartViewConfig()
                    {
                        BackgroundColor = Color.White,
                        ChartConfig     = new ChartConfig
                        {
                            type = Wesley.ChartJS.ChartTypes.Line,
                            data = ChartDataProvider.GetCustomerActivity(series),
                        }
                    };
                }
                return(chartData);
            }
            catch (Exception ex)
            {
                Crashes.TrackError(ex);
                return(chartData);
            }
        }
Esempio n. 10
0
        /// <summary>
        /// 客户拜访分析
        /// </summary>
        /// <param name="app"></param>
        /// <param name="title"></param>
        /// <returns></returns>
        private async Task <ChartViewConfig> VisitingRatePage_Chart(Module app, string title)
        {
            ChartViewConfig chartData = null;

            try
            {
                var result = await _reportingService.GetCustomerVistAnalysisAsync(Settings.UserId, this.ForceRefresh, new System.Threading.CancellationToken());

                if (result != null)
                {
                    chartData = new ChartViewConfig()
                    {
                        BackgroundColor = Color.White,
                        ChartConfig     = new ChartConfig
                        {
                            type = Wesley.ChartJS.ChartTypes.Pie,
                            data = ChartDataProvider.GetVisitingRate(result)
                        }
                    };
                }
                return(chartData);
            }
            catch (Exception ex)
            {
                Crashes.TrackError(ex);
                return(chartData);
            }
        }
Esempio n. 11
0
        private void RefreshData(List <CostProfitRanking> analysis)
        {
            RankSeries          = new ObservableCollection <CostProfitRanking>(analysis);
            TotalSumNetQuantity = analysis.Select(s => s.TotalSumNetQuantity).Sum();
            TotalSumNetAmount   = analysis.Select(s => s.TotalSumNetAmount).Sum();
            TotalSumProfit      = analysis.Select(s => s.TotalSumProfit).Sum();

            var ranks = analysis.ToList();

            if (ranks.Count > 10)
            {
                ranks = ranks.Take(10).ToList();
            }

            var data = new ChartViewConfig()
            {
                BackgroundColor = Color.White,
                ChartConfig     = new ChartConfig
                {
                    type = Wesley.ChartJS.ChartTypes.Bar,
                    data = ChartDataProvider.GetSalesProfitRanking(ranks)
                }
            };

            ChartConfig = data;
        }
        private void RefreshData(List <HotSaleRanking> analysis)
        {
            RankSeries           = new ObservableCollection <HotSaleRanking>(analysis);
            TotalSumReturnAmount = analysis.Select(s => s.TotalSumReturnAmount ?? 0).Sum();
            TotalSumNetAmount    = analysis.Select(s => s.TotalSumNetAmount ?? 0).Sum();

            var ranks = analysis.ToList();

            if (ranks.Count > 10)
            {
                ranks = ranks.Take(10).ToList();
            }

            var data = new ChartViewConfig()
            {
                BackgroundColor = Color.White,
                ChartConfig     = new ChartConfig
                {
                    type = DCMS.ChartJS.ChartTypes.Bar,
                    data = ChartDataProvider.GetHotSalesRanking(ranks)
                }
            };

            ChartConfig = data;
        }
Esempio n. 13
0
        public void Refresh(List <CustomerRanking> analysis)
        {
            RankSeries = new ObservableCollection <CustomerRanking>(analysis);
            SubTotal   = analysis.Select(s => s.VisitSum).Sum();
            Total      = analysis.Select(s => s.NetAmount).Sum();

            var ranks = analysis.ToList();

            if (ranks.Count > 10)
            {
                ranks = ranks.Take(10).ToList();
            }

            var data = new ChartViewConfig()
            {
                BackgroundColor = Color.White,
                ChartConfig     = new ChartConfig
                {
                    type = Wesley.ChartJS.ChartTypes.Bar,
                    data = ChartDataProvider.GetCustomerRanking(ranks)
                }
            };

            ChartConfig = data;
        }
Esempio n. 14
0
        private void RefreshData(List <SaleTrending> series)
        {
            int    i      = 0;
            Random random = new Random();

            if (series == null || series.Count == 0)
            {
                for (i = 1; i <= DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month); i++)
                {
                    series.Add(new SaleTrending()
                    {
                        DateType = "DAY", NetAmount = random.Next(200), SaleAmount = random.Next(200), SaleDateName = DateTime.Now.AddDays(i).ToString("yyyy-MM-dd"), SaleReturnAmount = random.Next(200), SaleDate = DateTime.Now.AddDays(i)
                    });
                }
            }

            string[] weekdays = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
            series.ForEach(d =>
            {
                if ("DAY" == d.DateType.ToUpper())
                {
                    d.SaleDateName = d.SaleDate.ToString("yyyy/MM/dd");
                }
                else if ("WEEK" == d.DateType.ToUpper())
                {
                    d.SaleDateName = weekdays[Convert.ToInt32(d.SaleDate.DayOfWeek)];
                }
                else if ("MONTH" == d.DateType.ToUpper())
                {
                    d.SaleDateName = d.SaleDate.ToString("yyyy-MM");
                }
            });

            RankSeries  = new ObservableCollection <SaleTrending>(series);
            TotalAmount = RankSeries.Select(s => s.NetAmount).Sum();

            var ranks = series.ToList();

            if (ranks.Count > 10)
            {
                ranks = ranks.Take(10).ToList();
            }
            var data = new ChartViewConfig()
            {
                BackgroundColor = Color.White,
                ChartConfig     = new ChartConfig
                {
                    type = DCMS.ChartJS.ChartTypes.Line,
                    data = ChartDataProvider.GetSaleTrendChat(ranks),
                }
            };

            ChartConfig = data;
        }
Esempio n. 15
0
 public MixedChartsPage()
 {
     LineBarConfig = RandomChartBuilder.GetChartConfig(new List <string> {
         ChartTypes.Line, ChartTypes.Bar
     }, Color.White);
     LinePieConfig = RandomChartBuilder.GetChartConfig(new List <string> {
         ChartTypes.Line, ChartTypes.Pie
     }, Color.White);
     InitializeComponent();
     BindingContext = this;
 }
Esempio n. 16
0
 public ChartTypesViewModel()
 {
     LineConfig      = RandomChartBuilder.GetChartConfig(Plugin.XamarinChartJS.ChartTypes.Line, Color.White);
     BarConfig       = RandomChartBuilder.GetChartConfig(Plugin.XamarinChartJS.ChartTypes.Bar, Color.White);
     RadarConfig     = RandomChartBuilder.GetChartConfig(Plugin.XamarinChartJS.ChartTypes.Radar, Color.White);
     DoughnutConfig  = RandomChartBuilder.GetChartConfig(Plugin.XamarinChartJS.ChartTypes.Doughnut, Color.White);
     PieConfig       = RandomChartBuilder.GetChartConfig(Plugin.XamarinChartJS.ChartTypes.Pie, Color.White);
     PolarAreaConfig = RandomChartBuilder.GetChartConfig(Plugin.XamarinChartJS.ChartTypes.PolarArea, Color.White);
     BubbleConfig    = RandomChartBuilder.GetBubbleChartConfig(Color.White);
     ScatterConfig   = RandomChartBuilder.GetScatterChartConfig(Color.White);
 }
Esempio n. 17
0
        private void BuildChartInWebView(ChartViewConfig config)
        {
            var htmlSource = new HtmlWebViewSource();

            htmlSource.Html = ChartBuilder.BuildHTML(config);

            if (Device.RuntimePlatform == Device.Android)
            {
                htmlSource.BaseUrl = string.Empty;
            }

            Source = htmlSource;
        }
Esempio n. 18
0
        public static string BuildHTML(ChartViewConfig config)
        {
            var parentHtmlStyles = new Dictionary <string, string>
            {
                { "width", "100%" },
                { "height", "100%" },
                { "overflow", "hidden" },
            };

            var bodyStyles = new Dictionary <string, string>
            {
                { "overflow", "hidden" },
                { "background-color", GetRGBColor(config.BackgroundColor) }
            };

            var contentDivStyles = new Dictionary <string, string>
            {
                { "height", "100%" },
                { "width", "100%" }
            };

            var chartJsScript = $"<script type=\"text/javascript\" src=\"{ GetChartJSLocalPath() }\"></script>";
            var viewportMeta  = "<meta name='viewport' content='width=device-width,initial-scale=1,maximum-scale=1'/>";

            var canvasStyles = new Dictionary <string, string>
            {
                { "width", "100" },
                { "height", "100" }
            };

            return($@"
            <html style=""{ GetStyleString(parentHtmlStyles) }"">
              <head>
                {chartJsScript}
                {viewportMeta}
              </head>
              <body style=""{ GetStyleString(bodyStyles) }"">
                <div style=""{ GetStyleString(contentDivStyles) }"">
                  <canvas id=""chartCanvas"" style=""{ GetStyleString(canvasStyles) }"">
                  </canvas>
                </div>
                { BuildChartJavascript(config) }
              </body>
            </html>");
        }
Esempio n. 19
0
        /// <summary>
        /// 销售额分析
        /// </summary>
        /// <param name="app"></param>
        /// <param name="title"></param>
        /// <returns></returns>
        private async Task <ChartViewConfig> SalesRatePage_Chart(Module app, string title)
        {
            ChartViewConfig chartData = null;

            try
            {
                var result = await _reportingService.GetSaleAnalysisAsync(0, 0, 0, 0, this.ForceRefresh, new System.Threading.CancellationToken());

                if (result != null)
                {
                    var cdata = result;
                }
                return(chartData);
            }
            catch (Exception ex)
            {
                Crashes.TrackError(ex);
                return(chartData);
            }
        }
Esempio n. 20
0
        public void Refresh(List <CustomerActivityRanking> analysis)
        {
            RankSeries = new ObservableCollection <CustomerActivityRanking>(analysis);

            var ranks = analysis.ToList();

            if (ranks.Count > 10)
            {
                ranks = ranks.Take(10).ToList();
            }
            var data = new ChartViewConfig()
            {
                BackgroundColor = Color.White,
                ChartConfig     = new ChartConfig
                {
                    type = Wesley.ChartJS.ChartTypes.Line,
                    data = ChartDataProvider.GetCustomerActivity(ranks),
                }
            };

            ChartConfig = data;
        }
Esempio n. 21
0
        public NewOrderPageViewModel(INavigationService navigationService,
                                     IProductService productService,
                                     IUserService userService,
                                     ITerminalService terminalService,
                                     IWareHousesService wareHousesService,
                                     IAccountingService accountingService,
                                     IReportingService reportingService,
                                     IDialogService dialogService
                                     ) : base(navigationService,
                                              productService,
                                              terminalService,
                                              userService,
                                              wareHousesService,
                                              accountingService,
                                              dialogService)
        {
            Title = "今日新增订单";

            _reportingService = reportingService;

            this.WhenAnyValue(x => x.Data)
            .Subscribe(x =>
            {
                this.IsNull = (x == null);
            }).DisposeWith(DeactivateWith);

            this.WhenAnyValue(x => x.Filter.BusinessUserId)
            .Where(x => x > 0)
            .Subscribe(x =>
            {
                ((ICommand)Load)?.Execute(null);
            }).DisposeWith(DeactivateWith);


            this.Load = ReactiveCommand.CreateFromTask(() => Task.Run(async() =>
            {
                var analysis = await _reportingService.GetNewOrderAnalysisAsync(Filter.BusinessUserId, this.ForceRefresh, new System.Threading.CancellationToken());

                if (analysis != null)
                {
                    this.Data = analysis;

                    var data = new ChartViewConfig()
                    {
                        BackgroundColor = Color.White,
                        ChartConfig     = new ChartConfig
                        {
                            type = Wesley.ChartJS.ChartTypes.Line,
                            data = GetChartData(analysis)
                        }
                    };
                    LineConfig = data;
                }
            }));

            //历史记录选择
            this.ViewDetailCommand = ReactiveCommand.Create <object>(async e =>
            {
                if (e != null)
                {
                    int.TryParse(e.ToString(), out int type);
                    switch (type)
                    {
                    //今日订单
                    case 1:
                        Filter.StartTime = DateTime.Now;
                        Filter.EndTime   = DateTime.Now;
                        break;

                    //昨天订单
                    case 2:
                        Filter.StartTime = DateTime.Now.AddDays(-1);
                        Filter.EndTime   = DateTime.Now;
                        break;

                    //前天订单
                    case 3:
                        Filter.StartTime = DateTime.Now.AddDays(-2);
                        Filter.EndTime   = DateTime.Now;
                        break;

                    //上周订单
                    case 4:
                        Filter.StartTime = DateTime.Now.AddDays(0 - Convert.ToInt16(DateTime.Now.DayOfWeek) - 6);
                        Filter.EndTime   = DateTime.Now.AddDays(6 - Convert.ToInt16(DateTime.Now.DayOfWeek) - 6);
                        break;

                    //本周订单
                    case 5:
                        Filter.StartTime = DateTime.Now.AddDays(0 - Convert.ToInt16(DateTime.Now.DayOfWeek) + 1);
                        Filter.EndTime   = DateTime.Now.AddDays(6 - Convert.ToInt16(DateTime.Now.DayOfWeek) + 1);
                        break;

                    //上月订单
                    case 6:
                        Filter.StartTime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(-1);
                        Filter.EndTime   = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddDays(-1);
                        break;

                    //本月订单
                    case 7:
                        Filter.StartTime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01"));
                        Filter.EndTime   = DateTime.Now;
                        break;

                    //本年订单
                    case 8:
                        Filter.StartTime = new DateTime(DateTime.Now.Year, 1, 1);
                        Filter.EndTime   = DateTime.Now;
                        break;
                    }
                    await this.NavigateAsync("SaleOrderSummeryPage", ("Filter", Filter), ("Reference", this.PageName));
                }
            });

            this.BindBusyCommand(Load);
        }
Esempio n. 22
0
 public LayoutExamplesViewModel()
 {
     LineConfig = RandomChartBuilder.GetChartConfig(Plugin.XamarinChartJS.ChartTypes.Line, Color.White);
     BarConfig  = RandomChartBuilder.GetChartConfig(Plugin.XamarinChartJS.ChartTypes.Bar, Color.White);
     PieConfig  = RandomChartBuilder.GetChartConfig(Plugin.XamarinChartJS.ChartTypes.Pie, Color.White);
 }
Esempio n. 23
0
        public VisitingRatePageViewModel(INavigationService navigationService,
                                         IReportingService reportingService,
                                         IDialogService dialogService
                                         ) : base(navigationService, dialogService)
        {
            Title             = "客户拜访分析";
            _reportingService = reportingService;


            this.WhenAnyValue(x => x.Filter.BusinessUserId)
            .Where(x => x > 0)
            .Subscribe(x =>
            {
                ((ICommand)Load)?.Execute(null);
            }).DisposeWith(DeactivateWith);


            this.Load = ReactiveCommand.CreateFromTask(() => Task.Run(async() =>
            {
                var analysis = await _reportingService.GetCustomerVistAnalysisAsync(Filter.BusinessUserId, this.ForceRefresh, new System.Threading.CancellationToken());
                if (analysis != null)
                {
                    Data = analysis;

                    var data = new ChartViewConfig()
                    {
                        BackgroundColor = Color.White,
                        ChartConfig     = new ChartConfig
                        {
                            type = Wesley.ChartJS.ChartTypes.Bar,
                            data = GetChartData(analysis)
                        }
                    };
                    BarConfig = data;
                }
                return(this.Data);
            }));

            //历史记录选择
            this.HistoryCommand = ReactiveCommand.Create <object>(async e =>
            {
                int tag = 0;
                int.TryParse(e.ToString(), out int type);
                switch (type)
                {
                //今日拜访
                case 1:
                    //Filter.StartTime = DateTime.Now;
                    //Filter.EndTime = DateTime.Now;
                    tag = 1;
                    break;

                //昨天拜访
                case 3:
                    //Filter.StartTime = DateTime.Now.AddDays(-1);
                    //Filter.EndTime = DateTime.Now;
                    tag = 3;
                    break;

                //前天拜访
                case 4:
                    //Filter.StartTime = DateTime.Now.AddDays(-2);
                    //Filter.EndTime = DateTime.Now;
                    tag = 4;
                    break;

                //上周拜访
                case 5:
                    //Filter.StartTime = DateTime.Now.AddDays(0 - Convert.ToInt16(DateTime.Now.DayOfWeek) - 6);
                    //Filter.EndTime = DateTime.Now.AddDays(6 - Convert.ToInt16(DateTime.Now.DayOfWeek) - 6);
                    tag = 5;
                    break;

                //本周拜访
                case 6:
                    //Filter.StartTime = DateTime.Now.AddDays(0 - Convert.ToInt16(DateTime.Now.DayOfWeek) + 1);
                    //Filter.EndTime = DateTime.Now.AddDays(6 - Convert.ToInt16(DateTime.Now.DayOfWeek) + 1);
                    tag = 6;
                    break;

                //上月拜访
                case 7:
                    //Filter.StartTime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(-1);
                    //Filter.EndTime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddDays(-1);
                    tag = 7;
                    break;

                //本月拜访
                case 8:
                    //Filter.StartTime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01"));
                    //Filter.EndTime = DateTime.Now;
                    tag = 8;
                    break;

                //本年拜访
                case 9:
                    //Filter.StartTime = new DateTime(DateTime.Now.Year, 1, 1);
                    //Filter.EndTime = DateTime.Now;
                    tag = 9;
                    break;
                }
                //VisitReportPage
                //await this.NavigateAsync($"{nameof(VisitRecordsPage)}", ("Filter", Filter));
                await this.NavigateAsync("VisitReportPage", ("Tag", tag));
            });

            this.BindBusyCommand(Load);
        }
Esempio n. 24
0
        public VisitReportPageViewModel(INavigationService navigationService,
                                        IProductService productService,
                                        IReportingService reportingService,
                                        IDialogService dialogService
                                        ) : base(navigationService,
                                                 productService,
                                                 reportingService,
                                                 dialogService)
        {
            Title = "业务拜访统计";

            this.Load = ReactiveCommand.CreateFromTask <int>((t) => Task.Run(() =>
            {
                try
                {
                    //今日 1  昨天 3 前天 4 本月 8
                    var tag = t;
                    if (tag == 0)
                    {
                        tag = 8;
                    }
                    _reportingService.Rx_GetBusinessAnalysis(tag, new System.Threading.CancellationToken())
                    .Subscribe((results) =>
                    {
                        if (results != null && results?.Code >= 0)
                        {
                            var analysis = results?.Data;
                            var data     = new ChartViewConfig()
                            {
                                BackgroundColor = Color.White,
                                ChartConfig     = new ChartConfig
                                {
                                    type    = Wesley.ChartJS.ChartTypes.Bar,
                                    data    = GetChartData(analysis),
                                    options = new ChartOptions
                                    {
                                        indexAxis = "y",
                                        scales    = new Scales
                                        {
                                            xAxes = new XAxes[]
                                            {
                                                new XAxes
                                                {
                                                    ticks = new Ticks
                                                    {
                                                        beginAtZero = true
                                                    },
                                                    position = "top"
                                                }
                                            }
                                        }
                                    }
                                }
                            };
                            ChartConfig = data;
                        }
                    });
                }
                catch (Exception ex)
                {
                    Crashes.TrackError(ex);
                }
            }));

            //绑定页面菜单
            //BindFilterDateMenus(true);
            _popupMenu = new PopupMenu(this, new Dictionary <MenuEnum, Action <SubMenu, ViewModelBase> >
            {
                { MenuEnum.TODAY, (m, vm) => {
                      ((ICommand)Load)?.Execute(1);
                  } },
                { MenuEnum.YESTDAY, (m, vm) => {
                      ((ICommand)Load)?.Execute(3);
                  } },
                { MenuEnum.THISWEEBK, (m, vm) => {
                      ((ICommand)Load)?.Execute(6);
                  } },
                { MenuEnum.LASTMONTH, (m, vm) => {
                      ((ICommand)Load)?.Execute(7);
                  } },
                { MenuEnum.MONTH, (m, vm) => {
                      ((ICommand)Load)?.Execute(8);
                  } },
                { MenuEnum.YEAR, (m, vm) => {
                      ((ICommand)Load)?.Execute(9);
                  } }
            });
            this.BindBusyCommand(Load);
        }
Esempio n. 25
0
        public SalesRatePageViewModel(INavigationService navigationService,
                                      IProductService productService,
                                      IUserService userService,
                                      ITerminalService terminalService,
                                      IWareHousesService wareHousesService,
                                      IAccountingService accountingService,
                                      IReportingService reportingService,
                                      IDialogService dialogService) : base(navigationService,
                                                                           productService,
                                                                           terminalService,
                                                                           userService,
                                                                           wareHousesService,
                                                                           accountingService,
                                                                           dialogService)
        {
            Title             = "今日销售净额";
            _reportingService = reportingService;

            this.WhenAnyValue(x => x.Data)
            .Subscribe(x => { this.IsNull = (x == null); })
            .DisposeWith(DeactivateWith);


            this.WhenAnyValue(
                x => x.Filter.BusinessUserId,
                x => x.Filter.BrandId,
                x => x.Filter.ProductId,
                x => x.Filter.CatagoryId)
            .Where(a => a.Item1 > 0 || a.Item2 > 0 || a.Item3 > 0 || a.Item4 > 0)
            .Subscribe(x =>
            {
                ((ICommand)Load)?.Execute(null);
            }).DisposeWith(DeactivateWith);

            this.Load = ReactiveCommand.CreateFromTask(() => Task.Run(async() =>
            {
                var businessUserId = Filter.BusinessUserId == 0 ? Settings.UserId : Filter.BusinessUserId;
                var analysis       = await _reportingService.GetSaleAnalysisAsync(businessUserId,
                                                                                  Filter.BrandId,
                                                                                  Filter.ProductId,
                                                                                  Filter.CatagoryId,
                                                                                  true,
                                                                                  new System.Threading.CancellationToken());

                if (analysis != null)
                {
                    Data = analysis;

                    var data = new ChartViewConfig()
                    {
                        BackgroundColor = Color.White,
                        ChartConfig     = new ChartConfig
                        {
                            type = Wesley.ChartJS.ChartTypes.Doughnut,
                            data = GetChartData(analysis)
                        }
                    };
                    DoughnutConfig = data;
                }
            }));


            //历史记录选择
            this.ViewDetailCommand = ReactiveCommand.Create <object>(async e =>
            {
                if (e != null)
                {
                    int.TryParse(e.ToString(), out int type);
                    switch (type)
                    {
                    //今日
                    case 1:
                        Filter.StartTime = DateTime.Now;
                        Filter.EndTime   = DateTime.Now;
                        break;

                    //昨天
                    case 2:
                        Filter.StartTime = DateTime.Now.AddDays(-1);
                        Filter.EndTime   = DateTime.Now;
                        break;

                    //前天
                    case 3:
                        Filter.StartTime = DateTime.Now.AddDays(-2);
                        Filter.EndTime   = DateTime.Now;
                        break;

                    //上周
                    case 4:
                        Filter.StartTime = DateTime.Now.AddDays(0 - Convert.ToInt16(DateTime.Now.DayOfWeek) - 6);
                        Filter.EndTime   = DateTime.Now.AddDays(6 - Convert.ToInt16(DateTime.Now.DayOfWeek) - 6);
                        break;

                    //本周
                    case 5:
                        Filter.StartTime = DateTime.Now.AddDays(0 - Convert.ToInt16(DateTime.Now.DayOfWeek) + 1);
                        Filter.EndTime   = DateTime.Now.AddDays(6 - Convert.ToInt16(DateTime.Now.DayOfWeek) + 1);
                        break;

                    //上月
                    case 6:
                        Filter.StartTime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(-1);
                        Filter.EndTime   = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddDays(-1);
                        break;

                    //本月
                    case 7:
                        Filter.StartTime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01"));
                        Filter.EndTime   = DateTime.Now;
                        break;

                    //本季
                    case 8:
                        var s            = DateTime.Now.AddMonths(0 - (DateTime.Now.Month - 1) % 3).AddDays(1 - DateTime.Now.Day);
                        Filter.StartTime = s;                          //本季度初
                        Filter.EndTime   = s.AddMonths(3).AddDays(-1); //本季度末
                        break;

                    //本年
                    case 9:
                        Filter.StartTime = new DateTime(DateTime.Now.Year, 1, 1);
                        Filter.EndTime   = DateTime.Now;
                        break;
                    }
                    await this.NavigateAsync("SaleSummeryPage", ("Filter", Filter), ("Reference", this.PageName));
                }
            });

            this.BindBusyCommand(Load);
        }
Esempio n. 26
0
 public ChartView(ChartViewConfig config) : base()
 {
     this.Config = config;
 }
Esempio n. 27
0
        public NewCustomersPageViewModel(INavigationService navigationService,
                                         IProductService productService,
                                         IUserService userService,
                                         ITerminalService terminalService,
                                         IWareHousesService wareHousesService,
                                         IAccountingService accountingService,
                                         IReportingService reportingService,
                                         IDialogService dialogService
                                         ) : base(navigationService,
                                                  productService,
                                                  terminalService,
                                                  userService,
                                                  wareHousesService,
                                                  accountingService,
                                                  dialogService)
        {
            Title = "今日新增客户";

            _reportingService = reportingService;

            this.WhenAnyValue(x => x.Data)
            .Subscribe(x => { this.IsNull = (x == null); })
            .DisposeWith(DeactivateWith);

            this.WhenAnyValue(x => x.Filter.BusinessUserId)
            .Where(x => x > 0)
            .Subscribe(x =>
            {
                ((ICommand)Load)?.Execute(null);
            }).DisposeWith(DeactivateWith);

            this.Load = ReactiveCommand.CreateFromTask(() => Task.Run(async() =>
            {
                var analysis = await _reportingService.GetNewCustomerAnalysisAsync(Filter.BusinessUserId,
                                                                                   this.ForceRefresh,
                                                                                   new System.Threading.CancellationToken());

                if (analysis != null)
                {
                    this.Data = analysis;

                    var data = new ChartViewConfig()
                    {
                        BackgroundColor = Color.White,
                        ChartConfig     = new ChartConfig
                        {
                            type = DCMS.ChartJS.ChartTypes.Line,
                            data = GetChartData(analysis)
                        }
                    };
                    LineConfig = data;
                }
            }));



            //历史记录选择
            this.HistoryCommand = ReactiveCommand.Create <object>(async e => await this.NavigateAsync($"{nameof(CustomerArchivesPage)}", null));

            this.BindBusyCommand(Load);
        }
 public ChartLoadStressTest()
 {
     Config = RandomChartBuilder.GetChartConfig(ChartTypes.Line, Color.White);
     InitializeComponent();
     BindingContext = this;
 }