@page "/take/self"
@* *@
@code { @inject IChannelListDao channelListDao; @inject IDrugInfoDao drugInfoDao; @inject NotificationService _message @inject DialogService dialogService; RadzenDataGrid grid; List orderDetails = new(); List drugInfos = new(); List detailsToInsert = new(); List detailsToUpdate = new(); OrderInfo orderInfo = new OrderInfo() { OrderDate = DateTime.Now }; void Reset() { detailsToInsert.Clear(); detailsToUpdate.Clear(); } void Reset(OrderDetail orderDetail) { detailsToInsert.Remove(orderDetail); detailsToUpdate.Remove(orderDetail); } async Task InsertRow() { Reset(); var orderDetail = new OrderDetail(); detailsToInsert.Add(orderDetail); await grid.InsertRow(orderDetail); } async Task EditRow(OrderDetail orderDetail) { Reset(); detailsToUpdate.Add(orderDetail); await grid.EditRow(orderDetail); } async Task SaveRow(OrderDetail orderDetail) { await grid.UpdateRow(orderDetail); } void CancelEdit(OrderDetail orderDetail) { Reset(orderDetail); grid.CancelEditRow(orderDetail); grid.Reload(); } async Task DeleteRow(OrderDetail orderDetail) { Reset(orderDetail); orderDetails.Remove(orderDetail); grid.CancelEditRow(orderDetail); await grid.Reload(); } void OnUpdateRow(OrderDetail orderDetail) { Reset(orderDetail); grid.Reload(); } void OnCreateRow(OrderDetail orderDetail) { // 数据库添加用户 detailsToInsert.Remove(orderDetail); orderDetails.Add(orderDetail); grid.Reload(); } async void Submit(OrderInfo orderInfo) { if (orderDetails.Count == 0) { _message.Notify( new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"请添加用药详情", Duration = 3000 } ); } else { //弹出待取药品所在库位、库存信息 var b = await dialogService.OpenAsync( $"取药详情", new Dictionary() { { "order", orderInfo }, { "orderDetails", orderDetails } }, new DialogOptions() { Width = "85vw", Resizable = true, Draggable = true, ShowClose = false } ); if (b) { _message.Notify( new NotificationMessage { Severity = NotificationSeverity.Success, Summary = "提示", Detail = $"取药完成", Duration = 3000 } ); } } } async Task reloadGrid() { await grid.Reload(); } bool ValidateDrug(DrugInfo drugInfo) { return !orderDetails.Any(od => od.Drug.DrugId.Equals(drugInfo?.DrugId)); } protected override async Task OnInitializedAsync() { drugInfos = await drugInfoDao.GetAllDrugAndStock(); base.OnInitializedAsync(); } void OnCurrentDateChanged(DateTime args) { orderInfo.OrderDate = new DateTime(args.Year, args.Month, args.Day, args.Hour, args.Minute, args.Second); } }