@using AntDesign.TableModels
@using System.ComponentModel.DataAnnotations
@using EFCoreDatabase.Entities
@page "/material/main_material"
@inject IGoodsRepository _GoodsRepository
@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; }
// }
}