SiChuanShengErZhong_JZ/MasaBlazorApp3/Pages/StockList.razor

286 lines
11 KiB
Plaintext
Raw Normal View History

2025-10-11 17:30:22 +08:00
@page "/stock/list"
@using MasaBlazorApp3.Report
@using Radzen.Blazor.Rendering
<style>
@@keyframes shake {
0% {
opacity: 1;
color: red;
}
25% {
opacity: 1;
color: orange;
}
50% {
opacity: 0;
color: yellow;
}
75% {
opacity: 1;
color: crimson;
}
100% {
opacity: 1;
color: red;
}
}
.rz-custom-header {
width: 100%;
}
.shaky-text {
animation: shake 2s infinite ease-in-out;
/* <20><><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
transition: color 0.5s linear,opacity 0.5s linear;
}
.my-popup {
display: none;
position: absolute;
overflow: auto;
/* height: 360px; */
width: 900px;
border: var(--rz-panel-border);
background-color: var(--rz-panel-background-color);
box-shadow: var(--rz-panel-shadow);
border-radius: var(--rz-border-radius);
}
</style>
<div class="col-12 mb-4">
@* <form onsubmit="@(() => grid.Reload())">
<RadzenFieldset Text="<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>">
<RadzenStack Orientation="Orientation.Horizontal" Gap="1rem">
<RadzenRow JustifyContent="JustifyContent.End" AlignItems="AlignItems.Center">
<RadzenButton @ref=button Icon="download" Text="ר<><D7A8><EFBFBD>˲ᵼ<CBB2><E1B5BC>" Variant="Variant.Outlined" Click="@(args => popup2.ToggleAsync(button.Element))" />
<Popup @ref=popup2 Lazy=true class="my-popup">
<RadzenStack Orientation="Orientation.Vertical" Gap="1rem" class="rz-h-100 rz-p-4">
<RadzenFieldset Text="<22><><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1>">
<RadzenStack Orientation="Orientation.Horizontal" Gap="1rem">
<RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="4">
<RadzenLabel Text="<22><>ʼ" Component="Start" />
<RadzenLabel Text="ʱ<><CAB1>" Component="Start" />
</RadzenColumn>
<RadzenColumn Size="8">
<RadzenDatePicker DateFormat="yyyy-MM-dd HH:mm:ss" ShowTime="true" @bind-Value="start" Style="width: 100%;" Name="Start" />
</RadzenColumn>
</RadzenRow>
<RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="4">
<RadzenLabel Text="<22><><EFBFBD><EFBFBD>" Component="End" />
<RadzenLabel Text="ʱ<><CAB1>" Component="End" />
</RadzenColumn>
<RadzenColumn Size="8">
<RadzenDatePicker DateFormat="yyyy-MM-dd HH:mm:ss" ShowTime="true" @bind-Value="end" Style="width: 100%;" Name="End" />
</RadzenColumn>
</RadzenRow>
<RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="5">
<RadzenLabel Text="ҩƷ<D2A9><C6B7><EFBFBD><EFBFBD>" Component="drug" />
<RadzenLabel Text="ƴ<><C6B4><EFBFBD><EFBFBD>" Component="drug" />
<RadzenLabel Text="<22><><EFBFBD><EFBFBD>" Component="drug" />
</RadzenColumn>
<RadzenColumn Size="6">
<RadzenAutoComplete Name="drug" Multiline="true" @bind-Value=@drugName Data=@drugInfo TextProperty="@nameof(DrugInfo.DrugNameSpecManufactory)"
Style="width: 100%;" InputAttributes="@(new Dictionary<string, object>() { { "aria-label", "drugInfo" } })" />
</RadzenColumn>
</RadzenRow>
<RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn>
<RadzenButton Click="reloadGrid" Icon="refresh" Text="<22><><EFBFBD><EFBFBD>" ButtonStyle="ButtonStyle.Warning" />
</RadzenColumn>
</RadzenRow>
<RadzenRow JustifyContent="JustifyContent.End" AlignItems="AlignItems.Center">
<RadzenButton Icon="download" Text="<22><><EFBFBD><EFBFBD>" Variant="Variant.Outlined" Click="AccountBookExport" />
</RadzenRow>
</RadzenStack>
</RadzenFieldset>
</RadzenStack>
</Popup>
</RadzenRow>
</RadzenStack>
</RadzenFieldset>
</form> *@
</div>
<div class="col-12 mb-4">
<RadzenDataGrid @ref="grid"
IsLoading="@isLoading"
RowRender="@RowRender"
EmptyText="<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
Data="@_forecasts"
AllowColumnResize="true" AllowAlternatingRows="false"
SelectionMode="DataGridSelectionMode.Single"
ExpandMode="DataGridExpandMode.Single">
@* <HeaderTemplate>
<RadzenRow JustifyContent="JustifyContent.End" AlignItems="AlignItems.Center">
<RadzenButton Icon="download" Text="<22><><EFBFBD><EFBFBD><E6B5BC>" Variant="Variant.Outlined" Click="StockExport" />
<RadzenButton Icon="download" Text="ר<><D7A8><EFBFBD>˲ᵼ<CBB2><E1B5BC>" Variant="Variant.Outlined" Click="AccountBookExport" />
</RadzenRow>
</HeaderTemplate> *@
<Template Context="di">
<RadzenDataGrid Data="@di.Stocks" EmptyText="<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>">
<Columns>
<RadzenDataGridColumn Title="<22><>λ" Property="DrawerNo">
<Template Context="s">
@if (s.MachineId == "DM5")
{
switch (s.DrawerNo)
{
case 99:
@("<22><><EFBFBD><EFBFBD>ҩ<EFBFBD><D2A9>")
break;
case 111:
@("<22>ָ<EFBFBD><D6B8><EFBFBD>ҩ<EFBFBD><D2A9>")
break;
case 31:
@("θ<><CEB8>ҩ<EFBFBD><D2A9>")
break;
case 32:
@("<22><><EFBFBD><EFBFBD>ҩ<EFBFBD><D2A9>")
break;
case 33:
@("<22><>ֳҩ<D6B3><D2A9>")
break;
case 34:
@("<22><><EFBFBD><EFBFBD>ҩ<EFBFBD><D2A9>")
break;
default:
@* @($"{s.DrawerNo}-{(s.ColNo == 1 ? '<27><>' : '<27><>')}") *@
@("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҩ<EFBFBD><D2A9>")
break;
}
}
else
{
@($"{s.DrawerNo}-{s.ColNo}")
}
</Template>
</RadzenDataGridColumn>
<RadzenDataGridColumn Title="<22><><EFBFBD><EFBFBD>" Property="Quantity">
</RadzenDataGridColumn>
<RadzenDataGridColumn Title="<22><><EFBFBD><EFBFBD>" Property="ManuNo"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="Ч<><D0A7>" Property="EffDate">
<Template Context="s">
@{
DateTime dateTime;
bool success = DateTime.TryParse(s.EffDate, out dateTime);
// if (success && dateTime <= DateTime.Now.AddMonths(3))
// {
// @s.EffDate
// <p class="shaky-text"><3E><>Ч<EFBFBD><D0A7>ҩƷ<D2A9><C6B7></p>
// }
// else
//{
@s.EffDate
//}
}
</Template>
</RadzenDataGridColumn>
</Columns>
</RadzenDataGrid>
</Template>
<Columns>
<RadzenDataGridColumn Frozen="true" Width="200px" Title="ҩƷ<D2A9><C6B7><EFBFBD><EFBFBD>" Property="DrugName"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="<22><><EFBFBD><EFBFBD>" Property="DrugSpec"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="<22>ܿ<EFBFBD><DCBF><EFBFBD>" Property="StockQuantity">
<Template Context="s">
@* @if (s.StockQuantity < 10)
{
@s.StockQuantity
<p class="shaky-text"><3E><><EFBFBD><EFBFBD>Ԥ<EFBFBD><D4A4><EFBFBD><EFBFBD></p>
}
else
{ *@
@s.StockQuantity
@* } *@
</Template>
</RadzenDataGridColumn>
</Columns>
</RadzenDataGrid>
</div>
@code {
@inject IDrugInfoDao drugInfoDao;
@inject DialogService dialogService;
@inject IReportDataDao reportDataDao;
RadzenDataGrid<DrugInfo> grid;
bool isLoading;
int count;
private IEnumerable<DrugInfo>? _forecasts;
DateTime? start;
DateTime? end;
string drugName;
RadzenButton button;
Popup popup2;
IEnumerable<DrugInfo> drugInfo;
protected override async Task OnInitializedAsync()
{
await base.OnInitializedAsync();
isLoading = true;
var result = await drugInfoDao.GetAllDrugAndStock();
// Update the Data property
_forecasts = result;
drugInfo = await drugInfoDao.GetAllDrug();
isLoading = false;
}
protected override async Task OnAfterRenderAsync(bool firstRender)
{
base.OnAfterRender(firstRender);
if (firstRender)
{
await grid.ExpandRows(grid.PagedView.Where(di => di.Stocks.Count > 0));
}
}
void RowRender(RowRenderEventArgs<DrugInfo> args)
{
args.Expandable = args.Data.Stocks.Count > 0;
}
// //<2F><><EFBFBD><EFBFBD><E6B5BC>
// async Task StockExport()
// {
// PageData<ReportStockDateInfo> pageData = await reportDataDao.GetStockExportData(drugName);
// GridReportUtil.PrintReport("stock_template.grf", pageData);
// }
//ר<><D7A8><EFBFBD>˲ᵼ<CBB2><E1B5BC>
async Task AccountBookExport()
{
// string drugId = drugName != null ? drugName.Split('/').Last().Trim():"";
// GridReportUtil gridReportUtil = new GridReportUtil();
PageData<ReportAccountDateInfo> pageData = await reportDataDao.GetAccountExportData(start, end, drugName);
GridReportUtil.PrintReport("account_book_temp.grf", pageData);
}
//<2F><><EFBFBD><EFBFBD>
async Task reloadGrid()
{
start = DateTime.MinValue;
end = DateTime.MinValue;
drugName = string.Empty;
await grid.Reload();
}
}