@page "/Box/Plan"
@* *@
@code { @inject IPlanDao planDao; @inject DialogService dialogService; @inject NotificationService _message @inject GlobalStateService globalStateService; RadzenDataGrid grid; RadzenDataGrid PlanDetailsGrid; bool isLoading; int count; private IEnumerable? _forecasts; IList? SelectedPlan { get; set; } = new List(); List SelectedPlanDetails = new List(); List drugInfos; async Task LoadData(LoadDataArgs args) { isLoading = true; var result = await planDao.GetAllPlanInfo(); // Update the Data property _forecasts = result.Desserts; count = result.TotalDesserts; SelectedPlan = new List() { _forecasts.FirstOrDefault() }; isLoading = false; drugInfos = result.Other; } // async Task LoadDetailDate(LoadDataArgs args) // { // // SelectedPlan = new List() { await planDao.GetPlanById(SelectedPlan.FirstOrDefault().Id) }; // } async Task reloadGrid() { await grid.Reload(); } void OnUpdatePlanRow(Plan dl) { // Reset(dl); // 数据库更新 planDao.UpdatePlanInfo(dl); grid.Reload(); } void OnCreatePlanRow(Plan dl) { // 数据库添加套餐 planDao.InsertPlanInfo(dl); SelectedPlan.Remove(dl); grid.Reload(); } //新增套餐 async Task InsertPlanRow() { var planInfo = new Plan(); if (_forecasts.Count() <= 0) { _forecasts = new List { new Plan() }; await grid.InsertRow(_forecasts.FirstOrDefault()); } else { await grid.InsertRow(planInfo); } } //修改套餐 async Task EditPlanRow(Plan planInfo) { await grid.EditRow(planInfo); } //删除套餐 async Task DeletePlanRow(Plan planInfo) { if (planInfo.Id > 0) { //弹出确认提示框 var b = await dialogService.OpenAsync( $"删除确认", new Dictionary() { { "confirmInfo", "确认要删除套餐:" + planInfo.Name + "吗?" } }, new DialogOptions() { Width = "45vw", Resizable = true, Draggable = true, ShowClose = false }); if (b) { //查询要删除的套餐下是否有绑定,且绑定有库存 if (!(await planDao.CheckPlanBind(planInfo.Id))) { _message.Notify ( new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"该套餐还有库存绑定且有库存,请先清库存", Duration = 4000 } ); return; } // 数据库删除 if (await planDao.DeletePlanInfo(planInfo.Id)) { _message.Notify ( new NotificationMessage { Severity = NotificationSeverity.Success, Summary = "提示", Detail = $"删除成功", Duration = 4000 } ); } else { _message.Notify ( new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = "删除失败", Duration = 4000 } ); } } await grid.Reload(); } else { grid.CancelEditRow(planInfo); await grid.Reload(); } } //保存套餐信息 async Task SavePlanRow(Plan planInfo) { await grid.UpdateRow(planInfo); } async Task CancelPlanEdit(Plan planInfo) { grid.CancelEditRow(planInfo); await grid.Reload(); await PlanDetailsGrid.Reload(); } void Reset(PlanDetails pd) { SelectedPlanDetails.Remove(pd); } //修改药品 async Task EditRow(PlanDetails planDetail) { // planDetail.DrugId = null; await PlanDetailsGrid.EditRow(planDetail); } //保存修改药品 async Task InsertRow(PlanDetails planDetail) { await PlanDetailsGrid.UpdateRow(planDetail); } //取消修改药品 async Task CancelEdit(PlanDetails planDetail) { PlanDetailsGrid.CancelEditRow(planDetail); SelectedPlan.FirstOrDefault()._PlanDetails.RemoveAll(pd => pd.Id == 0); await PlanDetailsGrid.Reload(); } //删除药品 async Task DeleteRow(PlanDetails planDetail) { // Reset(planDetail); if (planDetail.Id > 0) { //弹出确认提示框 var b = await dialogService.OpenAsync( $"确认删除", new Dictionary() { { "confirmInfo", "确认要删除药品:" + planDetail._DrugInfo.DrugName + "吗?" } }, new DialogOptions() { Width = "45vw", Resizable = true, Draggable = true, ShowClose = false } ); if (b) { //查询要删除的药品是否有绑定且库存大于0 if (!(await planDao.CheckPlanDetailBind(planDetail))) { _message.Notify(new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = "该药品有绑定且库存不为0,请先清库存", Duration = 4000 }); return; } // 数据库删除 if (await planDao.DeletePlanDetail(planDetail)) { _message.Notify(new NotificationMessage { Severity = NotificationSeverity.Success, Summary = "提示", Detail = "删除成功", Duration = 4000 } ); SelectedPlan.FirstOrDefault()._PlanDetails.Remove(planDetail); } else { _message.Notify(new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = "删除失败", Duration = 4000 } ); } await PlanDetailsGrid.Reload(); } } else { PlanDetailsGrid.CancelEditRow(planDetail); } SelectedPlan.FirstOrDefault()._PlanDetails.RemoveAll(pd => pd.Id == 0); } async void OnUpdateRow(PlanDetails planDetail) { // Reset(planDetail); SelectedPlanDetails.Add(planDetail); // 数据库更新 if (await planDao.UpdatePlanDetail(planDetail)) { _message.Notify(new NotificationMessage { Severity = NotificationSeverity.Success, Summary = "提示", Detail = "修改成功", Duration = 4000 } ); } else { _message.Notify(new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = "修改失败", Duration = 4000 } ); } await PlanDetailsGrid.Reload(); } //保存套餐下添加的药品 async void OnCreateRow(PlanDetails planDetail) { if (SelectedPlan.FirstOrDefault() != null) { planDetail.PlanId = SelectedPlan.FirstOrDefault().Id; planDetail.DrugId = planDetail.DrugId == null ? planDetail._DrugInfo.DrugId : planDetail.DrugId; planDetail.UseState = 1; planDetail.OperatorUser = globalStateService.Operator?.Username; planDetail.ReviewerUser = globalStateService.Reviewer?.Username; if (await planDao.AddPlanDetail(planDetail)) { _message.Notify(new NotificationMessage { Severity = NotificationSeverity.Success, Summary = "提示", Detail = "保存成功", Duration = 4000 } ); } else { _message.Notify(new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = "保存失败", Duration = 4000 } ); } } // await grid.Reload(); await PlanDetailsGrid.Reload(); } //新增药品 async Task InsertRow() { var detail = new Pojo.PlanDetails() { PlanId = SelectedPlan.FirstOrDefault().Id }; SelectedPlan.FirstOrDefault()._PlanDetails.Add(detail); await PlanDetailsGrid.InsertRow(detail); } //验证药品是否已存在套餐中 bool ValidatroDrug(PlanDetails planDetail) { if (planDetail.PlanId == 0) { //新增的 planDetail.PlanId = SelectedPlan.FirstOrDefault().Id; } return planDao.CheckDrugById(planDetail); } }