You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
154 lines
5.8 KiB
154 lines
5.8 KiB
@using AntDesign.TableModels
|
|
@using System.ComponentModel.DataAnnotations
|
|
@using EFCoreDatabase.Entities
|
|
@page "/material/main_material"
|
|
@inject IGoodsRepository _GoodsRepository
|
|
|
|
<PageContainer Title="主数据">
|
|
<Table @ref="_table" TItem="MaterialData" PageSize="10" Total="_total" DataSource="_dataSource" @bind-SelectedRows="_selectedRows" OnChange="OnChange" Title="物料信息表汇总">
|
|
<TitleTemplate>
|
|
<Flex Justify="FlexJustify.Left" Gap="@("10")">
|
|
<Button Type="ButtonType.Primary" OnClick="() => StartEdit(default)">新 增</Button>
|
|
@* <Button Disabled="!_selectedRows.Any()" Danger OnClick="DeleteAll">Delete</Button> *@
|
|
</Flex>
|
|
</TitleTemplate>
|
|
<ColumnDefinitions Context="row">
|
|
<Selection />
|
|
<GenerateColumns Definitions="@((n,c) => { c.Filterable = true; c.Sortable = true; })" />
|
|
<ActionColumn Title="操 作">
|
|
<a @onclick="() => StartEdit(row)">编 辑</a>
|
|
@* <a @onclick="() => Delete(row)">Delete</a> *@
|
|
</ActionColumn>
|
|
</ColumnDefinitions>
|
|
</Table>
|
|
|
|
</PageContainer>
|
|
|
|
|
|
@inject ModalService ModalService;
|
|
@inject ConfirmService ConfirmService;
|
|
@code {
|
|
|
|
List<MaterialData> mockDb = new();
|
|
IEnumerable<MaterialData> _selectedRows = [];
|
|
ITable _table;
|
|
List<MaterialData> _dataSource;
|
|
int _total;
|
|
|
|
void OnChange(QueryModel<MaterialData> 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<bool> modalRef = default;
|
|
IForm form = default;
|
|
modalRef = ModalService.CreateModal<bool>(new()
|
|
{
|
|
Title = data.GOODS_ID > 0 ? "Edit" : "New",
|
|
Content = @<Form @ref="form" Model="data" OnFinish="()=> modalRef.OkAsync(true)" LabelColSpan="6" WrapperColSpan="18">
|
|
<GenerateFormItem NotGenerate="@(x=> x == "GOODS_ID")" />
|
|
</Form>
|
|
,
|
|
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<bool> 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; }
|
|
// }
|
|
}
|