@using AntDesign.TableModels @using System.ComponentModel.DataAnnotations @using EFCoreDatabase.Entities @page "/material/main_material" @inject IGoodsRepository _GoodsRepository @* *@ 编 辑 @* Delete *@
@inject ModalService ModalService; @inject ConfirmService ConfirmService; @code { List mockDb = new(); IEnumerable _selectedRows = []; ITable _table; List _dataSource; int _total; void OnChange(QueryModel query) { _total = mockDb.AsQueryable().ExecuteTableQuery(query).Count(); _dataSource = mockDb.AsQueryable().ExecuteTableQuery(query).CurrentPagedRecords(query).ToList(); } void StartEdit(MaterialData row) { var data = row == null ? new() : row with { }; ModalRef modalRef = default; IForm form = default; modalRef = ModalService.CreateModal(new() { Title = data.GOODS_ID > 0 ? "Edit" : "New", Content = @
, OnOk = async (e) => { if (!form.Validate()) { return; } // save db and refresh modalRef.SetConfirmLoading(true); if (data.GOODS_ID > 0) { var index = mockDb.FindIndex(x => x.GOODS_ID == data.GOODS_ID); mockDb[index] = data; //更新物料主数据 var goodsMain = new GOODS_MAIN() { GOODS_CODE = data.GOODS_CODE, GOODS_NAME = data.GOODS_NAME, GOODS_UNITS = data.GOODS_UNITS, GOODS_CONST_PROPERTY1 = data.GOODS_CONST_PROPERTY1, GOODS_CONST_PROPERTY2 = data.GOODS_CONST_PROPERTY2 }; _GoodsRepository.UpdateGoodsMain(goodsMain); } else { data.GOODS_ID = mockDb.Max(x => x.GOODS_ID) + 1; mockDb.Add(data); //新增物料主数据信息 var goodsMain = new GOODS_MAIN() { GOODS_CODE = data.GOODS_CODE, GOODS_NAME = data.GOODS_NAME, GOODS_UNITS = data.GOODS_UNITS, GOODS_CONST_PROPERTY1 = data.GOODS_CONST_PROPERTY1, GOODS_CONST_PROPERTY2 = data.GOODS_CONST_PROPERTY2 }; _GoodsRepository.AddGoodsMain(goodsMain); } await Task.Delay(1000); await modalRef.CloseAsync(); _table.ReloadData(); StateHasChanged(); }, OnCancel = async (e) => { if (form.IsModified && (!await Confirm("The form have been updated, are you sure quit?"))) { return; } await modalRef.CloseAsync(); } }); } async Task DeleteAll() { if (!await Confirm($"Are you sure delete {_selectedRows.Count()} rows?")) return; mockDb = mockDb.Except(_selectedRows).ToList(); _selectedRows = []; _table.ReloadData(); } async Task Delete(MaterialData row) { if (!await Confirm($"Are you sure delete [{row.GOODS_NAME}]?")) return; mockDb = mockDb.Except(new[] { row }).ToList(); _table.ReloadData(); } protected override void OnInitialized() { //tlt:获取主数据信息 var goodsList = _GoodsRepository.GetGoodsMains(); mockDb = Enumerable.Range(0, goodsList.Count).Select(i => new MaterialData { GOODS_ID = goodsList[i].GOODS_ID,GOODS_CODE = goodsList[i].GOODS_CODE,GOODS_NAME =goodsList[i].GOODS_NAME,GOODS_UNITS = goodsList[i].GOODS_UNITS,GOODS_CONST_PROPERTY1 = goodsList[i].GOODS_CONST_PROPERTY1,GOODS_CONST_PROPERTY2 = goodsList[i].GOODS_CONST_PROPERTY2}).ToList(); } private async Task Confirm(string message) { return await ConfirmService.Show(message, "Confirm", ConfirmButtons.YesNo, ConfirmIcon.Warning) == ConfirmResult.Yes; } // public record MaterialData // { // public int GOODS_ID { get; set; } // [Required] // public string GOODS_CODE { get; set; } // public string GOODS_NAME { get; set; } // public string GOODS_UNITS { get; set; } // public string GOODS_CONST_PROPERTY1 { get; set; } // public string GOODS_CONST_PROPERTY2 { get; set; } // } }