160 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			160 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			C#
		
	
	
	
using DM_Weight.msg;
 | 
						||
using DM_Weight.Report;
 | 
						||
using DM_Weight.util;
 | 
						||
using Prism.Commands;
 | 
						||
using Prism.Events;
 | 
						||
using Prism.Mvvm;
 | 
						||
using Prism.Regions;
 | 
						||
using System;
 | 
						||
using System.Collections.Generic;
 | 
						||
using System.Linq;
 | 
						||
using DM_Weight.Models;
 | 
						||
using Prism.Services.Dialogs;
 | 
						||
using System.Threading.Tasks;
 | 
						||
 | 
						||
namespace DM_Weight.ViewModels
 | 
						||
{
 | 
						||
    public class AccountWindowForDrugViewModel : BindableBase, INavigationAware, IRegionMemberLifetime
 | 
						||
    {
 | 
						||
        public static AccountWindowForDrugViewModel vm;
 | 
						||
        private DateTime? _startDate = DateTime.Now;
 | 
						||
 | 
						||
 | 
						||
        public DateTime? StartDate
 | 
						||
        {
 | 
						||
            get => _startDate;
 | 
						||
            set
 | 
						||
            {
 | 
						||
                SetProperty(ref _startDate, value);
 | 
						||
            }
 | 
						||
        }
 | 
						||
 | 
						||
        private DateTime? _endDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 23, 59, 59);
 | 
						||
 | 
						||
        public DateTime? EndDate
 | 
						||
        {
 | 
						||
            get => _endDate;
 | 
						||
            set
 | 
						||
            {
 | 
						||
                SetProperty(ref _endDate, value);
 | 
						||
            }
 | 
						||
        }
 | 
						||
        IEventAggregator _eventAggregator;
 | 
						||
        IDialogService _dialogService;
 | 
						||
        public AccountWindowForDrugViewModel(IEventAggregator eventAggregator, IDialogService dialogService)
 | 
						||
        {
 | 
						||
            _eventAggregator = eventAggregator;
 | 
						||
            _dialogService = dialogService;
 | 
						||
            vm = this;
 | 
						||
        }
 | 
						||
        /// <summary>
 | 
						||
        /// 导出账册
 | 
						||
        /// </summary>
 | 
						||
        public DelegateCommand DownloadAccountBook
 | 
						||
        {
 | 
						||
            get => new DelegateCommand(() =>
 | 
						||
            {
 | 
						||
                if (DrugInfo == null || string.IsNullOrEmpty(DrugInfo.DrugId))
 | 
						||
                {
 | 
						||
                    AlertMsg alertMsg = new AlertMsg
 | 
						||
                    {
 | 
						||
                        Message = $"请选择药品!",
 | 
						||
                        Type = MsgType.ERROR,
 | 
						||
                    };
 | 
						||
                    _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
 | 
						||
                    return;
 | 
						||
                }
 | 
						||
                GridReportUtil.PrintReportAccountBook(StartDate, EndDate, DrugInfo.DrugId);
 | 
						||
 | 
						||
            });
 | 
						||
        }
 | 
						||
 | 
						||
        public bool KeepAlive => false;
 | 
						||
 | 
						||
        public bool IsNavigationTarget(NavigationContext navigationContext)
 | 
						||
        {
 | 
						||
            return true;
 | 
						||
        }
 | 
						||
 | 
						||
        public void OnNavigatedFrom(NavigationContext navigationContext)
 | 
						||
        {
 | 
						||
        }
 | 
						||
 | 
						||
        public void OnNavigatedTo(NavigationContext navigationContext)
 | 
						||
        {
 | 
						||
            //药品信息
 | 
						||
            GetAllDrugInfos();
 | 
						||
        }
 | 
						||
        /// <summary>
 | 
						||
        /// 药品
 | 
						||
        /// </summary>
 | 
						||
        private List<DrugInfo>? _drugInfos;
 | 
						||
 | 
						||
        public List<DrugInfo>? DrugInfos
 | 
						||
        {
 | 
						||
            get => _drugInfos;
 | 
						||
            set => SetProperty(ref _drugInfos, value);
 | 
						||
        }
 | 
						||
        private DrugInfo? _drugInfo;
 | 
						||
 | 
						||
        public DrugInfo? DrugInfo
 | 
						||
        {
 | 
						||
            get => _drugInfo;
 | 
						||
            set
 | 
						||
            {
 | 
						||
                SetProperty(ref _drugInfo, value);
 | 
						||
            }
 | 
						||
        }
 | 
						||
        private void GetAllDrugInfos()
 | 
						||
        {
 | 
						||
            var list = SqlSugarHelper.Db.Queryable<DrugInfo>().Includes<DrugManuNo>(di => di.DrugManuNos).OrderBy(di => di.DrugId).ToList();
 | 
						||
            DrugInfos = list;
 | 
						||
            DrugInfo = list[0];
 | 
						||
        }
 | 
						||
        public void UpdateComboBoxItems(string text)
 | 
						||
        {
 | 
						||
            string str = @"SELECT d.drug_id,d.py_code,d.drug_barcode,d.drug_name,d.drug_brand_name,d.drug_spec,d.dosage,d.pack_unit,
 | 
						||
                        d.manufactory,d.max_stock,CONCAT(drug_name,'  ',drug_spec)as DrugName FROM `drug_info` d";
 | 
						||
            if (string.IsNullOrEmpty(text))
 | 
						||
            {
 | 
						||
                DrugInfos = SqlSugarHelper.Db.SqlQueryable<DrugInfo>(str).OrderBy(di => di.DrugName).OrderBy(di => di.DrugId).ToList();
 | 
						||
                return;
 | 
						||
            }
 | 
						||
            if (DrugInfos != null)
 | 
						||
            {
 | 
						||
                DrugInfos.Clear();
 | 
						||
            }
 | 
						||
            DrugInfos = SqlSugarHelper.Db.SqlQueryable<DrugInfo>(str).Where(di => di.DrugName.Contains(text) || di.PyCode.Contains(text)).OrderBy(di => di.DrugName).OrderBy(di => di.DrugId).ToList();
 | 
						||
        }
 | 
						||
        public DelegateCommand<string> SelectTimeAction
 | 
						||
        {
 | 
						||
            get => new DelegateCommand<string>(async (s) =>
 | 
						||
            {
 | 
						||
                // 此处延时1毫秒,等待页面渲染
 | 
						||
                await Task.Delay(TimeSpan.FromMilliseconds(1));
 | 
						||
                DialogParameters dialogParameters = new DialogParameters();
 | 
						||
                dialogParameters.Add("DateTime", StartDate);
 | 
						||
                dialogParameters.Add("Type", s);
 | 
						||
                DialogServiceExtensions.ShowDialogHost(_dialogService, "DatetimeDialog", dialogParameters, DoDialogResult, "RootDialog");
 | 
						||
            });
 | 
						||
        }
 | 
						||
        private void DoDialogResult(IDialogResult dialogResult)
 | 
						||
        {
 | 
						||
            // 委托   被动执行     被子窗口执行
 | 
						||
            // dialogResult  第一方面可以拿到任意参数   第二方面   可判断关闭状态
 | 
						||
            if (dialogResult.Result == ButtonResult.OK)
 | 
						||
            {
 | 
						||
                if (dialogResult.Parameters.GetValue<string?>("Type").Equals("1"))
 | 
						||
                {
 | 
						||
                    StartDate = dialogResult.Parameters.GetValue<DateTime?>("DateTime");
 | 
						||
                }
 | 
						||
                else
 | 
						||
                {
 | 
						||
                    EndDate = dialogResult.Parameters.GetValue<DateTime?>("DateTime");
 | 
						||
                }
 | 
						||
            }
 | 
						||
            //MessageBox.Show("返回值:" + dialogResult.Result.ToString());
 | 
						||
        }
 | 
						||
    }
 | 
						||
}
 |