@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);
}
}