添加多语言功能

This commit is contained in:
马巧 2025-08-11 14:58:39 +08:00
parent f4c09d52a1
commit 289a1491f3
47 changed files with 1359 additions and 564 deletions

View File

@ -9,6 +9,6 @@ namespace MasaBlazorApp3.DataAccess.Dao
{ {
interface ISettingManuDao interface ISettingManuDao
{ {
public Task<List<SettingManu>> GetMenuItemsAsync(); public Task<List<SettingManu>> GetMenuItemsAsync(string culture);
} }
} }

View File

@ -9,6 +9,7 @@ using System.Collections.Generic;
using System.Data.Common; using System.Data.Common;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace MasaBlazorApp3.DataAccess.Impl namespace MasaBlazorApp3.DataAccess.Impl
@ -24,9 +25,9 @@ namespace MasaBlazorApp3.DataAccess.Impl
_connection = connection; _connection = connection;
_setting = setting.Value; _setting = setting.Value;
} }
public async Task<List<SettingManu>> GetMenuItemsAsync() public async Task<List<SettingManu>> GetMenuItemsAsync(string culture)
{ {
var query = _connection.SettingManu.AsQueryable(); var query = _connection.SettingManu.AsQueryable().Where(it=>it.Culture==culture);
return await query return await query

View File

@ -43,6 +43,7 @@
<PackageReference Include="System.IO.Ports" Version="8.0.0" /> <PackageReference Include="System.IO.Ports" Version="8.0.0" />
<PackageReference Include="System.Management" Version="8.0.0" /> <PackageReference Include="System.Management" Version="8.0.0" />
<PackageReference Include="System.Speech" Version="8.0.0" /> <PackageReference Include="System.Speech" Version="8.0.0" />
<PackageReference Include="Toolbelt.Blazor.I18nText" Version="14.0.1" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
@ -57,10 +58,6 @@
</Content> </Content>
</ItemGroup> </ItemGroup>
<ItemGroup>
<None Remove="i18ntext\MyText.zh.json" />
</ItemGroup>
<ItemGroup> <ItemGroup>
<None Remove="i18ntext\MyText.en.json" /> <None Remove="i18ntext\MyText.en.json" />
</ItemGroup> </ItemGroup>

View File

@ -43,7 +43,7 @@
LoadData="@LoadData" LoadData="@LoadData"
IsLoading="@isLoading" IsLoading="@isLoading"
Count="@count" Count="@count"
EmptyText="无数据" EmptyText="@myText.NoDate"
Data="@channels" Data="@channels"
AllowColumnResize="true" AllowAlternatingRows="false" AllowColumnResize="true" AllowAlternatingRows="false"
CellClick="@((DataGridCellMouseEventArgs<ChannelStock> args) => OnCellClick(args))" CellClick="@((DataGridCellMouseEventArgs<ChannelStock> args) => OnCellClick(args))"
@ -52,34 +52,34 @@
<RadzenRow JustifyContent="JustifyContent.End"> <RadzenRow JustifyContent="JustifyContent.End">
@if (status < 3) @if (status < 3)
{ {
<RadzenButton IsBusy="@(status>0)" BusyText="抽屉已打开。。。" ButtonStyle="ButtonStyle.Warning" Variant="Variant.Flat" Shade="Shade.Light" Text="开抽屉" Click="@OpenDrawer" /> <RadzenButton IsBusy="@(status > 0)" BusyText="@myText.DrawOpened" ButtonStyle="ButtonStyle.Warning" Variant="Variant.Flat" Shade="Shade.Light" Text="@myText.OpenDraw" Click="@OpenDrawer" />
} }
@if (status > 0 && status <= 3) @if (status > 0 && status <= 3)
{ {
<RadzenButton Visible="@CancleIsEnable" Variant="Variant.Flat" Text="取消" Click="@Cancel" Style="width: 120px" /> <RadzenButton Visible="@CancleIsEnable" Variant="Variant.Flat" Text="@myText.Cancel" Click="@Cancel" Style="width: 120px" />
} }
</RadzenRow> </RadzenRow>
</HeaderTemplate> </HeaderTemplate>
<Columns> <Columns>
<RadzenDataGridColumn Width="70px" Title="库位" Property="ColNo"></RadzenDataGridColumn> <RadzenDataGridColumn Width="70px" Title="@myText.StorageLocation" Property="ColNo"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="药品名称" Property="Drug.DrugName"> <RadzenDataGridColumn Title="@myText.DrugName" Property="Drug.DrugName">
<Template Context="channel"> <Template Context="channel">
<RadzenText TextStyle="TextStyle.Subtitle2" class="mb-0">@channel.Drug?.DrugName</RadzenText> <RadzenText TextStyle="TextStyle.Subtitle2" class="mb-0">@channel.Drug?.DrugName</RadzenText>
<RadzenText TextStyle="TextStyle.Caption">@channel.Drug?.DrugSpec</RadzenText> <RadzenText TextStyle="TextStyle.Caption">@channel.Drug?.DrugSpec</RadzenText>
</Template> </Template>
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenDataGridColumn Title="批次" Property="ManuNo"> <RadzenDataGridColumn Title="@myText.Batch" Property="ManuNo">
<Template Context="channel"> <Template Context="channel">
<RadzenText TextStyle="TextStyle.Subtitle2" class="mb-0">@channel.drugManuNo?.ManuNo</RadzenText> <RadzenText TextStyle="TextStyle.Subtitle2" class="mb-0">@channel.drugManuNo?.ManuNo</RadzenText>
<RadzenText TextStyle="TextStyle.Caption">@channel.drugManuNo?.EffDate.ToString().Substring(0,10)</RadzenText> <RadzenText TextStyle="TextStyle.Caption">@channel.drugManuNo?.EffDate.ToString().Substring(0,10)</RadzenText>
</Template> </Template>
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenDataGridColumn Title="库存" Property="Quantity"> <RadzenDataGridColumn Title="@myText.Inventory" Property="Quantity">
<Template Context="cs"> <Template Context="cs">
<RadzenButton ButtonStyle="ButtonStyle.Info" Variant="Variant.Flat" Shade="Shade.Lighter" class="m-1" Text="@cs.Quantity.ToString()" /> <RadzenButton ButtonStyle="ButtonStyle.Info" Variant="Variant.Flat" Shade="Shade.Lighter" class="m-1" Text="@cs.Quantity.ToString()" />
</Template> </Template>
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenGridColumn Title="状态" Property="BiaoDingStatus"> <RadzenGridColumn Title="@myText.State" Property="BiaoDingStatus">
</RadzenGridColumn> </RadzenGridColumn>
</Columns> </Columns>
@ -92,6 +92,8 @@
@inject NotificationService _message @inject NotificationService _message
@inject IOptions<DrawerConfig> setting; @inject IOptions<DrawerConfig> setting;
@inject DialogService dialogService; @inject DialogService dialogService;
@inject Toolbelt.Blazor.I18nText.I18nText I18nText;
private I18nText.local myText = new I18nText.local();
int status = 0; int status = 0;
int drawerNo = 0; int drawerNo = 0;
RadzenDataGrid<ChannelStock> grid; RadzenDataGrid<ChannelStock> grid;
@ -158,7 +160,7 @@
else else
{ {
_message.Notify( _message.Notify(
new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"抽屉【{drawerNo}】打开失败,请检测硬件", Duration = 4000 } new NotificationMessage { Severity = NotificationSeverity.Error, Summary =myText.Tips, Detail = $"抽屉【{drawerNo}】打开失败,请检测硬件", Duration = 4000 }
); );
logger.Info($"抽屉打开失败"); logger.Info($"抽屉打开失败");
RestData(); RestData();
@ -211,7 +213,7 @@
{ {
logger.Info($"标定药品发生错误,{e.Message}"); logger.Info($"标定药品发生错误,{e.Message}");
_message.Notify( _message.Notify(
new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"发生错误,{e.Message}", Duration = 4000 } new NotificationMessage { Severity = NotificationSeverity.Error, Summary = myText.Tips, Detail = $"发生错误,{e.Message}", Duration = 4000 }
); );
if (setting.Value.single != null && setting.Value.single.Contains(this.drawerNo)) if (setting.Value.single != null && setting.Value.single.Contains(this.drawerNo))
{ {
@ -253,4 +255,12 @@
// } // }
} }
} }
protected override async Task OnInitializedAsync()
{
myText = await I18nText.GetTextTableAsync<I18nText.local>(this);
base.OnInitializedAsync();
}
} }

View File

@ -34,6 +34,8 @@
@inject Radzen.DialogService dialogService; @inject Radzen.DialogService dialogService;
@inject NotificationService _message @inject NotificationService _message
@inject PortUtil PortUtil; @inject PortUtil PortUtil;
@inject Toolbelt.Blazor.I18nText.I18nText I18nText;
private I18nText.local myText = new I18nText.local();
[Parameter] public ChannelStock channelStockInfo { get; set; } [Parameter] public ChannelStock channelStockInfo { get; set; }
PromiseUtil<object> promiseUtil = new PromiseUtil<object>(); PromiseUtil<object> promiseUtil = new PromiseUtil<object>();
@ -47,6 +49,7 @@
int iClearFinish = 1; int iClearFinish = 1;
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
myText = await I18nText.GetTextTableAsync<I18nText.local>(this);
if(channelStockInfo!=null&&channelStockInfo.Quantity<=0) if(channelStockInfo!=null&&channelStockInfo.Quantity<=0)
{ {
//库存为零,直接进行清空操作 //库存为零,直接进行清空操作
@ -93,7 +96,7 @@
{ {
_message.Notify( _message.Notify(
new NotificationMessage new NotificationMessage
{ Severity = NotificationSeverity.Success, Summary = "提示", Detail = "清空操作成功", Duration = 3000 } { Severity = NotificationSeverity.Success, Summary = myText.Tips, Detail = "清空操作成功", Duration = 3000 }
); );
PortUtil.speechSynthesizer.SpeakAsyncCancelAll(); PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
@ -147,7 +150,7 @@
status = 0; status = 0;
_message.Notify( _message.Notify(
new NotificationMessage new NotificationMessage
{ Severity = NotificationSeverity.Success, Summary = "提示", Detail = "标定成功", Duration = 3000 } { Severity = NotificationSeverity.Success, Summary = myText.Tips, Detail = "标定成功", Duration = 3000 }
); );
PortUtil.speechSynthesizer.SpeakAsyncCancelAll(); PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
@ -173,7 +176,7 @@
logger.Error($"标定异常{ex.Message}"); logger.Error($"标定异常{ex.Message}");
_message.Notify( _message.Notify(
new NotificationMessage new NotificationMessage
{ Severity = NotificationSeverity.Error, Summary = "提示", Detail = "标定异常", Duration = 3000 } { Severity = NotificationSeverity.Error, Summary = myText.Tips, Detail = "标定异常", Duration = 3000 }
); );
} }
} }
@ -181,7 +184,7 @@
{ {
_message.Notify( _message.Notify(
new NotificationMessage new NotificationMessage
{ Severity = NotificationSeverity.Error, Summary = "提示", Detail = "请输入标定数量", Duration = 3000 }); { Severity = NotificationSeverity.Error, Summary = myText.Tips, Detail = "请输入标定数量", Duration = 3000 });
} }
} }
// 取消 // 取消

View File

@ -44,38 +44,38 @@
<RadzenDataGrid @ref="grid" RowSelect="@OnRowSelect" TItem="ChannelList" <RadzenDataGrid @ref="grid" RowSelect="@OnRowSelect" TItem="ChannelList"
RowRender="@RowRender" RowRender="@RowRender"
EmptyText="无数据" EmptyText="@myText.NoDate"
Data="@_forecasts" @bind-Value=@selectedChannelLists Data="@_forecasts" @bind-Value=@selectedChannelLists
AllowColumnResize="true" AllowAlternatingRows="false" AllowColumnResize="true" AllowAlternatingRows="false"
SelectionMode="DataGridSelectionMode.Single" LoadData="@LoadData" IsLoading="@isLoading" SelectionMode="DataGridSelectionMode.Single" LoadData="@LoadData" IsLoading="@isLoading"
Count="@count" AllowPaging="true" PageSize="10" PagerHorizontalAlign="HorizontalAlign.Left" ShowPagingSummary="true" PagingSummaryFormat="{0}/{1} 共{2}条数据" Count="@count" AllowPaging="true" PageSize="10" PagerHorizontalAlign="HorizontalAlign.Left" ShowPagingSummary="true" PagingSummaryFormat="{0}/{1} 共{2}条数据"
ExpandMode="DataGridExpandMode.Multiple"> ExpandMode="DataGridExpandMode.Multiple">
<Template Context="cs"> <Template Context="cs">
<RadzenDataGrid Data="@cs.ChannelStocks" EmptyText="无数据"> <RadzenDataGrid Data="@cs.ChannelStocks" EmptyText="@myText.NoDate">
<Columns> <Columns>
<RadzenDataGridColumn Title="药品名称" Property="Drug.DrugName"> <RadzenDataGridColumn Title="@myText.DrugName" Property="Drug.DrugName">
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenDataGridColumn Title="规格" Property="Drug.DrugSpec"> <RadzenDataGridColumn Title="@myText.Spec" Property="Drug.DrugSpec">
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenDataGridColumn Title="厂家" Property="Drug.Manufactory"> <RadzenDataGridColumn Title="@myText.Factory" Property="Drug.Manufactory">
</RadzenDataGridColumn> </RadzenDataGridColumn>
@* <RadzenDataGridColumn Title="批次" Property="ManuNo"></RadzenDataGridColumn> @* <RadzenDataGridColumn Title="批次" Property="ManuNo"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="效期" Property="EffDate"> <RadzenDataGridColumn Title="效期" Property="EffDate">
</RadzenDataGridColumn> *@ </RadzenDataGridColumn> *@
<RadzenDataGridColumn Title="基数" Property="BaseQuantity"> <RadzenDataGridColumn Title="@myText.BaseQuantity" Property="BaseQuantity">
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenDataGridColumn Title="需补药数" Property="NeedQuantity"> <RadzenDataGridColumn Title="@myText.NeedAddQuantity" Property="NeedQuantity">
</RadzenDataGridColumn> </RadzenDataGridColumn>
</Columns> </Columns>
</RadzenDataGrid> </RadzenDataGrid>
</Template> </Template>
<Columns> <Columns>
<RadzenDataGridColumn Frozen="true" Width="200px" Title="药箱号" Property="DrawerNo"> <RadzenDataGridColumn Frozen="true" Width="200px" Title="@myText.BoxNum" Property="DrawerNo">
<Template Context="DrawerNo"> <Template Context="DrawerNo">
@DrawerNo.DrawerNo 号药箱 @DrawerNo.DrawerNo @myText.BoxNum
</Template> </Template>
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenDataGridColumn Title="总库存" Property="TotalQuantity"></RadzenDataGridColumn> <RadzenDataGridColumn Title="@myText.TotalStock" Property="TotalQuantity"></RadzenDataGridColumn>
</Columns> </Columns>
</RadzenDataGrid> </RadzenDataGrid>
</div> </div>
@ -83,6 +83,8 @@
@code { @code {
@inject IChannelListDao channelStockDao; @inject IChannelListDao channelStockDao;
@inject DialogService dialogService; @inject DialogService dialogService;
@inject Toolbelt.Blazor.I18nText.I18nText I18nText;
private I18nText.local myText = new I18nText.local();
RadzenDataGrid<ChannelList> grid; RadzenDataGrid<ChannelList> grid;
bool isLoading; bool isLoading;
int count; int count;
@ -94,6 +96,7 @@
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
myText = await I18nText.GetTextTableAsync<I18nText.local>(this);
await base.OnInitializedAsync(); await base.OnInitializedAsync();
} }

View File

@ -43,38 +43,38 @@
<RadzenDataGrid @ref="grid" RowSelect="@OnRowSelect" TItem="ChannelList" <RadzenDataGrid @ref="grid" RowSelect="@OnRowSelect" TItem="ChannelList"
RowRender="@RowRender" RowRender="@RowRender"
EmptyText="无数据" EmptyText="@myText.NoDate"
Data="@_forecasts" @bind-Value=@selectedChannelLists Data="@_forecasts" @bind-Value=@selectedChannelLists
AllowColumnResize="true" AllowAlternatingRows="false" AllowColumnResize="true" AllowAlternatingRows="false"
SelectionMode="DataGridSelectionMode.Single" SelectionMode="DataGridSelectionMode.Single"
ExpandMode="DataGridExpandMode.Multiple" LoadData="@LoadData" IsLoading="@isLoading" Count="@count" ExpandMode="DataGridExpandMode.Multiple" LoadData="@LoadData" IsLoading="@isLoading" Count="@count"
AllowPaging="true" PageSize="10" PagerHorizontalAlign="HorizontalAlign.Left" ShowPagingSummary="true" PagingSummaryFormat="{0}/{1} 共{2}条数据"> AllowPaging="true" PageSize="10" PagerHorizontalAlign="HorizontalAlign.Left" ShowPagingSummary="true" PagingSummaryFormat="{0}/{1} 共{2}条数据">
<Template Context="cs"> <Template Context="cs">
<RadzenDataGrid Data="@cs.ChannelStocks" EmptyText="无数据"> <RadzenDataGrid Data="@cs.ChannelStocks" EmptyText="@myText.NoDate">
<Columns> <Columns>
<RadzenDataGridColumn Title="药品名称" Property="Drug.DrugName"> <RadzenDataGridColumn Title="@myText.DrugName" Property="Drug.DrugName">
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenDataGridColumn Title="规格" Property="Drug.DrugSpec"> <RadzenDataGridColumn Title="@myText.Spec" Property="Drug.DrugSpec">
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenDataGridColumn Title="厂家" Property="Drug.Manufactory"> <RadzenDataGridColumn Title="@myText.Factory" Property="Drug.Manufactory">
</RadzenDataGridColumn> </RadzenDataGridColumn>
@* <RadzenDataGridColumn Title="批次" Property="ManuNo"></RadzenDataGridColumn> @* <RadzenDataGridColumn Title="批次" Property="ManuNo"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="效期" Property="EffDate"> <RadzenDataGridColumn Title="效期" Property="EffDate">
</RadzenDataGridColumn> *@ </RadzenDataGridColumn> *@
<RadzenDataGridColumn Title="基数" Property="BaseQuantity"> <RadzenDataGridColumn Title="@myText.BaseQuantity" Property="BaseQuantity">
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenDataGridColumn Title="需补药数" Property="NeedQuantity"> <RadzenDataGridColumn Title="@myText.NeedAddQuantity" Property="NeedQuantity">
</RadzenDataGridColumn> </RadzenDataGridColumn>
</Columns> </Columns>
</RadzenDataGrid> </RadzenDataGrid>
</Template> </Template>
<Columns> <Columns>
<RadzenDataGridColumn Frozen="true" Width="200px" Title="药箱号" Property="DrawerNo"> <RadzenDataGridColumn Frozen="true" Width="200px" Title="@myText.BoxNum" Property="DrawerNo">
<Template Context="DrawerNo"> <Template Context="DrawerNo">
@DrawerNo.DrawerNo 号药箱 @DrawerNo.DrawerNo @myText.BoxNum
</Template> </Template>
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenDataGridColumn Title="总库存" Property="TotalQuantity"></RadzenDataGridColumn> <RadzenDataGridColumn Title="@myText.TotalStock" Property="TotalQuantity"></RadzenDataGridColumn>
</Columns> </Columns>
</RadzenDataGrid> </RadzenDataGrid>
</div> </div>
@ -82,6 +82,8 @@
@code { @code {
@inject IChannelListDao channelStockDao; @inject IChannelListDao channelStockDao;
@inject DialogService dialogService; @inject DialogService dialogService;
@inject Toolbelt.Blazor.I18nText.I18nText I18nText;
private I18nText.local myText = new I18nText.local();
RadzenDataGrid<ChannelList> grid; RadzenDataGrid<ChannelList> grid;
bool isLoading; bool isLoading;
int count; int count;
@ -93,6 +95,7 @@
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
myText = await I18nText.GetTextTableAsync<I18nText.local>(this);
await base.OnInitializedAsync(); await base.OnInitializedAsync();
} }

View File

@ -12,39 +12,39 @@
<RadzenRow> <RadzenRow>
<RadzenColumn Size="8" Class="rz-text-truncate"> <RadzenColumn Size="8" Class="rz-text-truncate">
<b class="rz-pr-3">@(channel.DrawerNo)</b> <b class="rz-pr-3">@(channel.DrawerNo)</b>
<b>号手术间</b> <b>@myText.Box</b>
</RadzenColumn> </RadzenColumn>
<RadzenColumn Size="4" Class="rz-text-align-end"> <RadzenColumn Size="4" Class="rz-text-align-end">
@if (channel.TotalQuantity == 0) @if (channel.TotalQuantity == 0)
{ {
<RadzenButton ButtonStyle="ButtonStyle.Secondary" Variant="Variant.Outlined" Size="ButtonSize.Small" Click="@(() => EditChannel(channel))" Text="绑定/解绑" /> <RadzenButton ButtonStyle="ButtonStyle.Secondary" Variant="Variant.Outlined" Size="ButtonSize.Small" Click="@(() => EditChannel(channel))" Text="@myText.BindUnBind" />
} }
</RadzenColumn> </RadzenColumn>
</RadzenRow> </RadzenRow>
<hr style="border: none; background-color: rgba(0,0,0,.2); height: 1px; margin: 1rem 0;" /> <hr style="border: none; background-color: rgba(0,0,0,.2); height: 1px; margin: 1rem 0;" />
<RadzenStack Orientation="Orientation.Horizontal" AlignItems="AlignItems.Center"> <RadzenStack Orientation="Orientation.Horizontal" AlignItems="AlignItems.Center">
<RadzenStack Gap="0"> <RadzenStack Gap="0">
<RadzenText TextStyle="TextStyle.Overline" class="rz-display-flex rz-mt-2 rz-my-0">套餐</RadzenText> <RadzenText TextStyle="TextStyle.Overline" class="rz-display-flex rz-mt-2 rz-my-0">@myText.SetMenu</RadzenText>
@if (channel.DrugId == null || channel.TotalQuantity == 0) @if (channel.DrugId == null || channel.TotalQuantity == 0)
{ {
<RadzenDropDownDataGrid AllowVirtualization="true" Name="planName" TValue="Plan" @bind-Value="channel.PlanInfo" Data="@plans" <RadzenDropDownDataGrid AllowVirtualization="true" Name="planName" TValue="Plan" @bind-Value="channel.PlanInfo" Data="@plans"
Style="width:100%; display: block;" AllowFilteringByAllStringColumns="true" TextProperty="Name"> Style="width:100%; display: block;" AllowFilteringByAllStringColumns="true" TextProperty="Name">
<Columns> <Columns>
<RadzenDropDownDataGridColumn Property="Name" Title="套餐名称" Sortable="false" /> <RadzenDropDownDataGridColumn Property="Name" Title="@myText.MenuName" Sortable="false" />
<RadzenDropDownDataGridColumn Property="Description" Width="120px" Title="套餐描述" Sortable="false" /> <RadzenDropDownDataGridColumn Property="Description" Width="120px" Title="@myText.MenuDescrip" Sortable="false" />
</Columns> </Columns>
</RadzenDropDownDataGrid> </RadzenDropDownDataGrid>
<RadzenCustomValidator Component="planName" Validator="@(()=>(channel.PlanInfo.Id>0))" Popup=true Text="请先选择套餐再点击绑定按钮" /> <RadzenCustomValidator Component="planName" Validator="@(() => (channel.PlanInfo.Id > 0))" Popup=true Text="@myText.SelectMenu" />
} }
else else
{ {
<RadzenText TextStyle="TextStyle.Body1"><b>@(channel.PlanInfo.Name)</b></RadzenText> <RadzenText TextStyle="TextStyle.Body1"><b>@(channel.PlanInfo.Name)</b></RadzenText>
} }
<RadzenText TextStyle="TextStyle.Overline" class="rz-display-flex rz-mt-4 rz-mb-0">总库存</RadzenText> <RadzenText TextStyle="TextStyle.Overline" class="rz-display-flex rz-mt-4 rz-mb-0">@myText.TotalStock</RadzenText>
<RadzenText TextStyle="TextStyle.Body1"><b>@(channel.TotalQuantity)</b></RadzenText> <RadzenText TextStyle="TextStyle.Body1"><b>@(channel.TotalQuantity)</b></RadzenText>
</RadzenStack> </RadzenStack>
</RadzenStack> </RadzenStack>
@ -60,6 +60,8 @@
@inject IDrugInfoDao drugInfoDao; @inject IDrugInfoDao drugInfoDao;
@inject DialogService dialogService; @inject DialogService dialogService;
@inject NotificationService _message @inject NotificationService _message
@inject Toolbelt.Blazor.I18nText.I18nText I18nText;
private I18nText.local myText = new I18nText.local();
RadzenDataList<ChannelList> grid; RadzenDataList<ChannelList> grid;
bool isLoading; bool isLoading;
int count; int count;
@ -77,6 +79,7 @@
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
myText = await I18nText.GetTextTableAsync<I18nText.local>(this);
await base.OnInitializedAsync(); await base.OnInitializedAsync();
//drugInfos = await drugInfoDao.GetAllDrug(); //drugInfos = await drugInfoDao.GetAllDrug();

View File

@ -9,17 +9,17 @@
<RadzenStack Gap="1rem" Orientation="Orientation.Vertical" Style="height: 100%;"> <RadzenStack Gap="1rem" Orientation="Orientation.Vertical" Style="height: 100%;">
<RadzenStack> <RadzenStack>
<RadzenStack class="rz-p-4 rz-border-radius-1" Style="border: var(--rz-grid-cell-border)" Orientation="Orientation.Horizontal" Gap="1rem"> <RadzenStack class="rz-p-4 rz-border-radius-1" Style="border: var(--rz-grid-cell-border)" Orientation="Orientation.Horizontal" Gap="1rem">
<RadzenText Class="rz-mt-2 rz-my-0" Style="color: var(--rz-text-tertiary-color);">药名:</RadzenText> <RadzenText Class="rz-mt-2 rz-my-0" Style="color: var(--rz-text-tertiary-color);">@myText.DrugName:</RadzenText>
<RadzenText Class="rz-text-truncate"><b>@(channelStock.Drug.DrugName)</b></RadzenText> <RadzenText Class="rz-text-truncate"><b>@(channelStock.Drug.DrugName)</b></RadzenText>
<RadzenText Class="rz-mt-2 rz-my-0" Style="color: var(--rz-text-tertiary-color);">规格:</RadzenText> <RadzenText Class="rz-mt-2 rz-my-0" Style="color: var(--rz-text-tertiary-color);">@myText.Spec:</RadzenText>
<RadzenText TextStyle="TextStyle.Body1" Class="rz-text-truncate"><b>@(channelStock.Drug.DrugSpec)</b></RadzenText> <RadzenText TextStyle="TextStyle.Body1" Class="rz-text-truncate"><b>@(channelStock.Drug.DrugSpec)</b></RadzenText>
<RadzenText Class="rz-mt-2 rz-my-0" Style="color: var(--rz-text-tertiary-color);">批次:</RadzenText> <RadzenText Class="rz-mt-2 rz-my-0" Style="color: var(--rz-text-tertiary-color);">@myText.Batch:</RadzenText>
<RadzenText TextStyle="TextStyle.Body1" Class="rz-text-truncate"><b>@(channelStock.ManuNo)</b></RadzenText> <RadzenText TextStyle="TextStyle.Body1" Class="rz-text-truncate"><b>@(channelStock.ManuNo)</b></RadzenText>
<RadzenText Class="rz-mt-2 rz-my-0" Style="color: var(--rz-text-tertiary-color);">效期:</RadzenText> <RadzenText Class="rz-mt-2 rz-my-0" Style="color: var(--rz-text-tertiary-color);">@myText.Expiration:</RadzenText>
<RadzenText TextStyle="TextStyle.Body1" Class="rz-text-truncate"><b>@(channelStock.EffDate)</b></RadzenText> <RadzenText TextStyle="TextStyle.Body1" Class="rz-text-truncate"><b>@(channelStock.EffDate)</b></RadzenText>
<RadzenText Class="rz-mt-2 rz-my-0" Style="color: var(--rz-text-tertiary-color);">库存:</RadzenText> <RadzenText Class="rz-mt-2 rz-my-0" Style="color: var(--rz-text-tertiary-color);">@myText.Inventory:</RadzenText>
<RadzenText TextStyle="TextStyle.Body1" Class="rz-text-truncate"><b>@(channelStock.Quantity)</b></RadzenText> <RadzenText TextStyle="TextStyle.Body1" Class="rz-text-truncate"><b>@(channelStock.Quantity)</b></RadzenText>
<RadzenText Class="rz-mt-2 rz-my-0" Style="color: var(--rz-text-tertiary-color);">交换药箱:</RadzenText> <RadzenText Class="rz-mt-2 rz-my-0" Style="color: var(--rz-text-tertiary-color);">@myText.ReplaceDrug:</RadzenText>
<RadzenDropDown @bind-Value="SelectedDrawerNo" Data="@DrawerNos" Style="display: block;" Change="@(args => SelectedDrawerChange(args))" Name="DropDownChangeEvent"> <RadzenDropDown @bind-Value="SelectedDrawerNo" Data="@DrawerNos" Style="display: block;" Change="@(args => SelectedDrawerChange(args))" Name="DropDownChangeEvent">
<RadzenText TextStyle="TextStyle.Subtitle2" class="mb-0">@(SelectedDrawerNo)</RadzenText> <RadzenText TextStyle="TextStyle.Subtitle2" class="mb-0">@(SelectedDrawerNo)</RadzenText>
@ -27,21 +27,21 @@
</RadzenDropDown> </RadzenDropDown>
</RadzenStack> </RadzenStack>
<RadzenDataGrid @ref="grid" Data="@selectedDrawerData" AllowAlternatingRows="true" LoadData="@LoadData" IsLoading="@isLoading" Count="@count" EmptyText="无数据" <RadzenDataGrid @ref="grid" Data="@selectedDrawerData" AllowAlternatingRows="true" LoadData="@LoadData" IsLoading="@isLoading" Count="@count" EmptyText="@myText.NoDate"
CellClick="@((DataGridCellMouseEventArgs<ChannelStock> args) => OnCellClick(args))" CellClick="@((DataGridCellMouseEventArgs<ChannelStock> args) => OnCellClick(args))"
AllowPaging="true" PageSize="10" PagerHorizontalAlign="HorizontalAlign.Left" ShowPagingSummary="true" PagingSummaryFormat="{0}/{1} 共{2}条数据"> AllowPaging="true" PageSize="10" PagerHorizontalAlign="HorizontalAlign.Left" ShowPagingSummary="true" PagingSummaryFormat="{0}/{1} 共{2}条数据">
<Columns> <Columns>
<RadzenDataGridColumn Property="DrawerNo" Title="药箱号"> <RadzenDataGridColumn Property="DrawerNo" Title="@myText.Box">
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenDataGridColumn Property="Drug.DrugName" Title="药品" /> <RadzenDataGridColumn Property="Drug.DrugName" Title="@myText.DrugName" />
<RadzenDataGridColumn Property="Drug.DrugSpec" Title="规格" /> <RadzenDataGridColumn Property="Drug.DrugSpec" Title="@myText.Spec" />
<RadzenDataGridColumn Property="ChannelStock.ManuNo" Title="批次" /> <RadzenDataGridColumn Property="ChannelStock.ManuNo" Title="@myText.Batch" />
<RadzenDataGridColumn Property="ChannelStock.EffDate" Title="效期" /> <RadzenDataGridColumn Property="ChannelStock.EffDate" Title="@myText.Expiration" />
<RadzenDataGridColumn Property="Quantity" Title="库存" /> <RadzenDataGridColumn Property="Quantity" Title="@myText.Inventory" />
<RadzenDataGridColumn MinWidth="100px" Title="交换数量" Property="AddQuantity"> <RadzenDataGridColumn MinWidth="100px" Title="@myText.ExchangeNum" Property="AddQuantity">
<EditTemplate Context="cs"> <EditTemplate Context="cs">
<RadzenNumeric Min="0" Style="display: block" Max=@cs.Quantity Name="Quantity" @bind-Value=@cs.AddQuantity /> <RadzenNumeric Min="0" Style="display: block" Max=@cs.Quantity Name="Quantity" @bind-Value=@cs.AddQuantity />
<RadzenNumericRangeValidator Style="position: absolute;z-index: 9999;" Min="0" Text="请填写正确的交换数量" Component="Quantity" Popup="true" /> <RadzenNumericRangeValidator Style="position: absolute;z-index: 9999;" Min="0" Text="@myText.InputCorrectNum" Component="Quantity" Popup="true" />
</EditTemplate> </EditTemplate>
</RadzenDataGridColumn> </RadzenDataGridColumn>
</Columns> </Columns>
@ -50,9 +50,9 @@
</RadzenStack> </RadzenStack>
<RadzenStack Orientation="Orientation.Horizontal" JustifyContent="JustifyContent.Center" Gap="0.5rem"> <RadzenStack Orientation="Orientation.Horizontal" JustifyContent="JustifyContent.Center" Gap="0.5rem">
<RadzenButton Click="@Save" ButtonStyle="ButtonStyle.Success" Variant="Variant.Flat" Text="保存" Style="width: 120px" /> <RadzenButton Click="@Save" ButtonStyle="ButtonStyle.Success" Variant="Variant.Flat" Text="@myText.SaveSet" Style="width: 120px" />
<RadzenButton Click="@Cancel" Variant="Variant.Flat" Text="取消" Style="width: 120px" /> <RadzenButton Click="@Cancel" Variant="Variant.Flat" Text="@myText.Cancel" Style="width: 120px" />
</RadzenStack> </RadzenStack>
</RadzenStack> </RadzenStack>
@ -63,6 +63,8 @@
@inject IOptions<SettingConfig> setting; @inject IOptions<SettingConfig> setting;
@inject NotificationService _message @inject NotificationService _message
@inject PortUtil PortUtil; @inject PortUtil PortUtil;
@inject Toolbelt.Blazor.I18nText.I18nText I18nText;
private I18nText.local myText = new I18nText.local();
private readonly ILog logger = LogManager.GetLogger(typeof(OrderDetailDialog)); private readonly ILog logger = LogManager.GetLogger(typeof(OrderDetailDialog));
int status; int status;
@ -86,8 +88,9 @@
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
myText = await I18nText.GetTextTableAsync<I18nText.local>(this);
DrawerNos = await channelListDao.GetDrawerNum(channelStock); DrawerNos = await channelListDao.GetDrawerNum(channelStock);
base.OnInitializedAsync(); await base.OnInitializedAsync();
} }
async Task LoadData(LoadDataArgs args) async Task LoadData(LoadDataArgs args)
{ {
@ -127,18 +130,18 @@
{ {
if (selectedDrawerData.Where(cs => cs.AddQuantity != 0).Sum(cs => cs.Quantity) > channelStock.Quantity) if (selectedDrawerData.Where(cs => cs.AddQuantity != 0).Sum(cs => cs.Quantity) > channelStock.Quantity)
{ {
_message.Notify(new NotificationMessage { Severity = NotificationSeverity.Warning, Summary = "提示", Detail = $"交换总数量不能大于库存", Duration = 4000 }); _message.Notify(new NotificationMessage { Severity = NotificationSeverity.Warning, Summary = myText.Tips, Detail = $"交换总数量不能大于库存", Duration = 4000 });
return; return;
} }
var b = await channelListDao.BoxReplaceFinish(channelStock,selectedDrawerData.Where(cl => cl.AddQuantity != 0).ToList()); var b = await channelListDao.BoxReplaceFinish(channelStock,selectedDrawerData.Where(cl => cl.AddQuantity != 0).ToList());
if (!b) if (!b)
{ {
_message.Notify(new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"数据保存失败", Duration = 4000 }); _message.Notify(new NotificationMessage { Severity = NotificationSeverity.Error, Summary = myText.Tips, Detail = $"数据保存失败", Duration = 4000 });
logger.Error($"药箱药品替换保存数据库失败,数据{JsonConvert.SerializeObject(selectedDrawerData.Where(cl => cl.AddQuantity != 0).ToList())}"); logger.Error($"药箱药品替换保存数据库失败,数据{JsonConvert.SerializeObject(selectedDrawerData.Where(cl => cl.AddQuantity != 0).ToList())}");
} }
else else
{ {
_message.Notify(new NotificationMessage { Severity = NotificationSeverity.Success, Summary = "提示", Detail = $"交换完成", Duration = 4000 }); _message.Notify(new NotificationMessage { Severity = NotificationSeverity.Success, Summary = myText.Tips, Detail = $"交换完成", Duration = 4000 });
// 关闭弹窗 // 关闭弹窗
dialogService.Close(true); dialogService.Close(true);
@ -148,7 +151,7 @@
} }
else else
{ {
_message.Notify(new NotificationMessage { Severity = NotificationSeverity.Warning, Summary = "提示", Detail = $"无可交换数据或未输入交换数量", Duration = 4000 }); _message.Notify(new NotificationMessage { Severity = NotificationSeverity.Warning, Summary = myText.Tips, Detail = $"无可交换数据或未输入交换数量", Duration = 4000 });
return; return;
} }
} }

View File

@ -90,29 +90,29 @@
<RadzenColumn Size="12" SizeMD="6" SizeLG="2"> <RadzenColumn Size="12" SizeMD="6" SizeLG="2">
@if (manuNo == 0) @if (manuNo == 0)
{ {
<RadzenText TextStyle="TextStyle.H6" TagName="TagName.H5" class="rz-mb-0">批次</RadzenText> <RadzenText TextStyle="TextStyle.H6" TagName="TagName.H5" class="rz-mb-0">@myText.Batch</RadzenText>
} }
<RadzenText TextStyle="TextStyle.Body2">@(manuInfo.ManuNo)</RadzenText> <RadzenText TextStyle="TextStyle.Body2">@(manuInfo.ManuNo)</RadzenText>
</RadzenColumn> </RadzenColumn>
<RadzenColumn Size="12" SizeMD="6" SizeLG="2"> <RadzenColumn Size="12" SizeMD="6" SizeLG="2">
@if (manuNo == 0) @if (manuNo == 0)
{ {
<RadzenText TextStyle="TextStyle.H6" TagName="TagName.H5" class="rz-mb-0">效期</RadzenText> <RadzenText TextStyle="TextStyle.H6" TagName="TagName.H5" class="rz-mb-0">@myText.Expiration</RadzenText>
} }
<RadzenText TextStyle="TextStyle.Body2">@(manuInfo.EffDate)</RadzenText> <RadzenText TextStyle="TextStyle.Body2">@(manuInfo.EffDate)</RadzenText>
</RadzenColumn> </RadzenColumn>
<RadzenColumn Size="12" SizeMD="6" SizeLG="2"> <RadzenColumn Size="12" SizeMD="6" SizeLG="2">
@if (manuNo == 0) @if (manuNo == 0)
{ {
<RadzenText TextStyle="TextStyle.H6" TagName="TagName.H5" class="rz-mb-0">库存</RadzenText> <RadzenText TextStyle="TextStyle.H6" TagName="TagName.H5" class="rz-mb-0">@myText.Inventory</RadzenText>
} }
<RadzenText TextStyle="TextStyle.Body2">@(manuInfo.Quantity)</RadzenText> <RadzenText TextStyle="TextStyle.Body2">@(manuInfo.Quantity)</RadzenText>
</RadzenColumn> </RadzenColumn>
<RadzenColumn Size="12" SizeLG="2" class="rz-p-4"> <RadzenColumn Size="12" SizeLG="2" class="rz-p-4">
<RadzenButton Text="替换药品" Style="width: 100%" Click="@(() => replaceClick(manuInfo))" /> <RadzenButton Text="@myText.ReplaceDrug" Style="width: 100%" Click="@(() => replaceClick(manuInfo))" />
</RadzenColumn> </RadzenColumn>
<RadzenColumn Size="12" SizeLG="2" class="rz-p-4"> <RadzenColumn Size="12" SizeLG="2" class="rz-p-4">
<RadzenButton Text="移出药品" Style="width: 100%" Click="@(() => removeClick(manuInfo))" /> <RadzenButton Text="@myText.RemoveDrug" Style="width: 100%" Click="@(() => removeClick(manuInfo))" />
</RadzenColumn> </RadzenColumn>
</RadzenRow> </RadzenRow>
} }
@ -120,7 +120,7 @@
{ {
<RadzenRow Gap="0"> <RadzenRow Gap="0">
<RadzenColumn Size="12" SizeMD="6" SizeLG="2"> <RadzenColumn Size="12" SizeMD="6" SizeLG="2">
<RadzenText TextStyle="TextStyle.H6" TagName="TagName.H5" class="rz-mb-0">未绑定批次</RadzenText> <RadzenText TextStyle="TextStyle.H6" TagName="TagName.H5" class="rz-mb-0">@myText.NotBind</RadzenText>
</RadzenColumn> </RadzenColumn>
</RadzenRow> </RadzenRow>
} }
@ -140,6 +140,8 @@
@inject DialogService dialogService; @inject DialogService dialogService;
@inject Microsoft.Extensions.Options.IOptions<Pojo.Config.SettingConfig> setting; @inject Microsoft.Extensions.Options.IOptions<Pojo.Config.SettingConfig> setting;
@inject NotificationService _message @inject NotificationService _message
@inject Toolbelt.Blazor.I18nText.I18nText I18nText;
private I18nText.local myText = new I18nText.local();
private IEnumerable<PlanDetails>? _forecasts; private IEnumerable<PlanDetails>? _forecasts;
bool allowRowSelectOnRowClick = true; bool allowRowSelectOnRowClick = true;
@ -159,6 +161,11 @@
this.drawerNo = drawerNo; this.drawerNo = drawerNo;
grid.Reload(); grid.Reload();
} }
protected override async Task OnInitializedAsync()
{
myText = await I18nText.GetTextTableAsync<I18nText.local>(this);
await base.OnInitializedAsync();
}
// void OnCurrentDateChanged(DateTime args) // void OnCurrentDateChanged(DateTime args)
// { // {
// OrderDate = new DateTime(args.Year, args.Month, args.Day); // OrderDate = new DateTime(args.Year, args.Month, args.Day);
@ -209,7 +216,7 @@
{ {
//库存为0无法操作 //库存为0无法操作
_message.Notify( _message.Notify(
new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"库存为0无法替换", Duration = 4000 } new NotificationMessage { Severity = NotificationSeverity.Error, Summary = myText.Tips, Detail = $"库存为0无法替换", Duration = 4000 }
); );
} }
} }
@ -232,7 +239,7 @@
{ {
//库存为0无法操作 //库存为0无法操作
_message.Notify( _message.Notify(
new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"库存为0没有要移出的药品", Duration = 4000 } new NotificationMessage { Severity = NotificationSeverity.Error, Summary = myText.Tips, Detail = $"库存为0没有要移出的药品", Duration = 4000 }
); );
} }
} }

View File

@ -17,30 +17,30 @@
@if (userI == 1) @if (userI == 1)
{ {
<RadzenText TextStyle="TextStyle.H5" class="rz-color-white"> <RadzenText TextStyle="TextStyle.H5" class="rz-color-white">
请交班操作人 @FromOperator?.NickName @myText.HandoverOperator1 @FromOperator?.NickName
<p>登录验证</p> <p>@myText.LoginCheck</p>
</RadzenText> </RadzenText>
} }
else if (userI == 2) else if (userI == 2)
{ {
<RadzenText TextStyle="TextStyle.H5" class="rz-color-white"> <RadzenText TextStyle="TextStyle.H5" class="rz-color-white">
请交班复核人 @FromRviewer?.NickName @myText.HandoverChecker1 @FromRviewer?.NickName
<p>登录验证</p> <p>@myText.LoginCheck</p>
</RadzenText> </RadzenText>
} }
else else
@if (userI == 3) @if (userI == 3)
{ {
<RadzenText TextStyle="TextStyle.H5" class="rz-color-white"> <RadzenText TextStyle="TextStyle.H5" class="rz-color-white">
请接班操作人 @ToOperator?.NickName @myText.HandoverOperator2 @ToOperator?.NickName
<p>登录验证</p> <p>@myText.LoginCheck</p>
</RadzenText> </RadzenText>
} }
else if (userI == 4) else if (userI == 4)
{ {
<RadzenText TextStyle="TextStyle.H5" class="rz-color-white"> <RadzenText TextStyle="TextStyle.H5" class="rz-color-white">
请接班复核人 @ToReviewer?.NickName @myText.HandoverChecker2 @ToReviewer?.NickName
<p>登录验证</p> <p>@myText.LoginCheck</p>
</RadzenText> </RadzenText>
} }
</RadzenCard> </RadzenCard>
@ -48,29 +48,29 @@
<RadzenColumn Size="12" SizeMD="7"> <RadzenColumn Size="12" SizeMD="7">
<RadzenCard Class="rz-shadow-0 rz-border-radius-0 rz-p-12" Style="width:100%;height:100%"> <RadzenCard Class="rz-shadow-0 rz-border-radius-0 rz-p-12" Style="width:100%;height:100%">
<RadzenText TextStyle="TextStyle.H5" TagName="TagName.H2" class="rz-mb-6"> <RadzenText TextStyle="TextStyle.H5" TagName="TagName.H2" class="rz-mb-6">
登录 @myText.Login
</RadzenText> </RadzenText>
<RadzenTemplateForm Data="@loginModel" Submit="@((Pojo.User args) => { Submit(args); })" Style="width:100%;height:100%"> <RadzenTemplateForm Data="@loginModel" Submit="@((Pojo.User args) => { Submit(args); })" Style="width:100%;height:100%">
<div class="rz-form-row"> <div class="rz-form-row">
<label class="rz-label" for="username">账号</label> <label class="rz-label" for="username">@myText.Account</label>
<div class="rz-form-input-wrapper"> <div class="rz-form-input-wrapper">
<!--@onfocusin="@(() => Util.VirtualKeyboardHelper.ShowVirtualKeyboard())"--> <!--@onfocusin="@(() => Util.VirtualKeyboardHelper.ShowVirtualKeyboard())"-->
<RadzenTextBox id="username" Name="Username" @bind-Value="@loginModel.Username" Style="width:100%" /> <RadzenTextBox id="username" Name="Username" @bind-Value="@loginModel.Username" Style="width:100%" />
<RadzenRequiredValidator Component="Username" Text="请填写用户名" /> <RadzenRequiredValidator Component="Username" Text="@myText.loginTips1" />
</div> </div>
</div> </div>
<div class="rz-form-row"> <div class="rz-form-row">
<label class="rz-label" for="password">密码</label> <label class="rz-label" for="password">密码</label>
<div class="rz-form-input-wrapper"> <div class="rz-form-input-wrapper">
<RadzenPassword id="password" Name="Password" @bind-Value="@loginModel.Password" Style="width:100%" /> <RadzenPassword id="password" Name="Password" @bind-Value="@loginModel.Password" Style="width:100%" />
<RadzenRequiredValidator Component="Password" Text="请填写密码" /> <RadzenRequiredValidator Component="Password" Text="@myText.loginTips2" />
</div> </div>
</div> </div>
<div class="rz-form-row"> <div class="rz-form-row">
<label class="rz-label"></label> <label class="rz-label"></label>
<div class="rz-form-input-wrapper rz-login-buttons"> <div class="rz-form-input-wrapper rz-login-buttons">
<RadzenButton Style="background:#255dd4;color:white;width:110px" ButtonType="ButtonType.Submit" Text="登录" /> <RadzenButton Style="background:#255dd4;color:white;width:110px" ButtonType="ButtonType.Submit" Text="@myText.Login" />
<RadzenButton Style="border-color:#255dd4;width:110px" Variant="Variant.Outlined" Text="取消" Click="@Exit" /> <RadzenButton Style="border-color:#255dd4;width:110px" Variant="Variant.Outlined" Text="@myText.Cancel" Click="@Exit" />
</div> </div>
</div> </div>
@ -90,6 +90,8 @@
@inject GlobalStateService globalStateService; @inject GlobalStateService globalStateService;
@inject IUserDao userDao; @inject IUserDao userDao;
@inject Microsoft.Extensions.Options.IOptions<Pojo.Config.SettingConfig> setting; @inject Microsoft.Extensions.Options.IOptions<Pojo.Config.SettingConfig> setting;
@inject Toolbelt.Blazor.I18nText.I18nText I18nText;
private I18nText.local myText = new I18nText.local();
@ -110,8 +112,9 @@
private Pojo.User loginModel = new(); private Pojo.User loginModel = new();
protected override Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
myText = await I18nText.GetTextTableAsync<I18nText.local>(this);
FingerprintUtil.axCZKEM1.OnAttTransactionEx += axCZKEM1_OnAttTransactionEx; FingerprintUtil.axCZKEM1.OnAttTransactionEx += axCZKEM1_OnAttTransactionEx;
loginMode = setting.Value.loginMode; loginMode = setting.Value.loginMode;
@ -127,7 +130,7 @@
{ {
FromRviewer = userDao.GetByUsername(hkcChange.FromRviewer); FromRviewer = userDao.GetByUsername(hkcChange.FromRviewer);
} }
return base.OnInitializedAsync(); await base.OnInitializedAsync();
} }
private async Task SetUser(Pojo.User user) private async Task SetUser(Pojo.User user)

View File

@ -5,11 +5,11 @@
<div class="col-12 mb-4"> <div class="col-12 mb-4">
<form onsubmit="@(() => grid.Reload())"> <form onsubmit="@(() => grid.Reload())">
<RadzenFieldset Text="查询"> <RadzenFieldset Text="@myText.Search">
<RadzenStack Orientation="Orientation.Horizontal" Gap="1rem"> <RadzenStack Orientation="Orientation.Horizontal" Gap="1rem">
<RadzenRow AlignItems="AlignItems.Center"> <RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="4"> <RadzenColumn Size="4">
<RadzenLabel Text="开始时间" Component="Start" /> <RadzenLabel Text="@myText.StartDate" Component="Start" />
</RadzenColumn> </RadzenColumn>
<RadzenColumn Size="8"> <RadzenColumn Size="8">
<RadzenDatePicker DateFormat="yyyy-MM-dd HH:mm:ss" ShowTime="true" @bind-Value="start" Style="width: 100%;" Name="Start" /> <RadzenDatePicker DateFormat="yyyy-MM-dd HH:mm:ss" ShowTime="true" @bind-Value="start" Style="width: 100%;" Name="Start" />
@ -17,7 +17,7 @@
</RadzenRow> </RadzenRow>
<RadzenRow AlignItems="AlignItems.Center"> <RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="4"> <RadzenColumn Size="4">
<RadzenLabel Text="结束时间" Component="End" /> <RadzenLabel Text="@myText.EndDate" Component="End" />
</RadzenColumn> </RadzenColumn>
<RadzenColumn Size="8"> <RadzenColumn Size="8">
<RadzenDatePicker DateFormat="yyyy-MM-dd HH:mm:ss" ShowTime="true" @bind-Value="end" Style="width: 100%;" Name="End" /> <RadzenDatePicker DateFormat="yyyy-MM-dd HH:mm:ss" ShowTime="true" @bind-Value="end" Style="width: 100%;" Name="End" />
@ -26,8 +26,8 @@
<RadzenRow AlignItems="AlignItems.Center"> <RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="12"> <RadzenColumn Size="12">
<RadzenButton Size="ButtonSize.Large" ButtonType="ButtonType.Submit" IsBusy="isLoading" Icon="search" Text="查询" /> <RadzenButton Size="ButtonSize.Large" ButtonType="ButtonType.Submit" IsBusy="isLoading" Icon="search" Text="@myText.Search" />
<RadzenButton Size="ButtonSize.Large" Click="reloadGrid" IsBusy="isLoading" Icon="refresh" Text="重置" ButtonStyle="ButtonStyle.Warning" /> <RadzenButton Size="ButtonSize.Large" Click="reloadGrid" IsBusy="isLoading" Icon="refresh" Text="@myText.Restore" ButtonStyle="ButtonStyle.Warning" />
</RadzenColumn> </RadzenColumn>
</RadzenRow> </RadzenRow>
</RadzenStack> </RadzenStack>
@ -40,36 +40,36 @@
LoadData="@LoadData" LoadData="@LoadData"
IsLoading="@isLoading" IsLoading="@isLoading"
Count="@count" Count="@count"
EmptyText="无数据" EmptyText="@myText.NoDate"
Data="@_forecasts" Data="@_forecasts"
AllowColumnResize="true" AllowAlternatingRows="false" AllowColumnResize="true" AllowAlternatingRows="false"
SelectionMode="DataGridSelectionMode.Single" SelectionMode="DataGridSelectionMode.Single"
AllowPaging="true" PageSize="10" PagerHorizontalAlign="HorizontalAlign.Left" ShowPagingSummary="true" PagingSummaryFormat="{0}/{1} 共{2}条数据"> AllowPaging="true" PageSize="10" PagerHorizontalAlign="HorizontalAlign.Left" ShowPagingSummary="true" PagingSummaryFormat="{0}/{1} 共{2}条数据">
<Columns> <Columns>
<RadzenDataGridColumn Title="日期" Property="optDate"> <RadzenDataGridColumn Title="@myText.Date" Property="optDate">
<Template Context="mr"> <Template Context="mr">
@mr.optDate.ToString("yyyy-MM-dd") @mr.optDate.ToString("yyyy-MM-dd")
</Template> </Template>
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenDataGridColumn Title="交班发药人" Property="FromOperator"></RadzenDataGridColumn> <RadzenDataGridColumn Title="@myText.HandoverOperator1" Property="FromOperator"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="交班审核人" Property="FromRviewer"></RadzenDataGridColumn> <RadzenDataGridColumn Title="@myText.HandoverChecker1" Property="FromRviewer"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="接班发药人" Property="ToOperator"></RadzenDataGridColumn> <RadzenDataGridColumn Title="@myText.HandoverOperator2" Property="ToOperator"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="接班审核人" Property="ToReviewer"></RadzenDataGridColumn> <RadzenDataGridColumn Title="@myText.HandoverChecker2" Property="ToReviewer"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="接班日期" Property="ToDate"> <RadzenDataGridColumn Title="@myText.HandoverDate" Property="ToDate">
<Template Context="mr"> <Template Context="mr">
@mr.ToDate.ToString("yyyy-MM-dd") @mr.ToDate.ToString("yyyy-MM-dd")
</Template> </Template>
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenDataGridColumn Title="当班状态" Property="State"> <RadzenDataGridColumn Title="@myText.HandoverState" Property="State">
<Template Context="state"> <Template Context="state">
@if(state.State=="0") @if(state.State=="0")
{ {
<RadzenText>值班中</RadzenText> <RadzenText>@myText.OnDuty</RadzenText>
} }
else else
{ {
<RadzenText>已交班</RadzenText> <RadzenText>@myText.NotDuty</RadzenText>
} }
</Template> </Template>
</RadzenDataGridColumn> </RadzenDataGridColumn>
@ -84,6 +84,10 @@
@inject DialogService dialogService; @inject DialogService dialogService;
@inject NavigationManager navigate; @inject NavigationManager navigate;
@inject Toolbelt.Blazor.I18nText.I18nText I18nText;
private I18nText.local myText = new I18nText.local();
RadzenDataGrid<HkcChangeShifts> grid; RadzenDataGrid<HkcChangeShifts> grid;
bool isLoading; bool isLoading;
int count; int count;
@ -120,4 +124,9 @@
end = DateTime.MinValue; end = DateTime.MinValue;
await grid.Reload(); await grid.Reload();
} }
protected override async Task OnInitializedAsync()
{
myText = await I18nText.GetTextTableAsync<I18nText.local>(this);
await base.OnInitializedAsync();
}
} }

View File

@ -13,11 +13,11 @@
</div> </div>
<div class="col-9 mb-4"> <div class="col-9 mb-4">
<form onsubmit="@(() => grid.Reload())"> <form onsubmit="@(() => grid.Reload())">
<RadzenFieldset Text="查询"> <RadzenFieldset Text="@myText.Search">
<RadzenStack Orientation="Orientation.Horizontal" Gap="1rem"> <RadzenStack Orientation="Orientation.Horizontal" Gap="1rem">
<RadzenRow AlignItems="AlignItems.Center"> <RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="4"> <RadzenColumn Size="4">
<RadzenLabel Text="处方号" Component="OrderNo" /> <RadzenLabel Text="@myText.OrderNo" Component="OrderNo" />
</RadzenColumn> </RadzenColumn>
<RadzenColumn Size="8"> <RadzenColumn Size="8">
<RadzenTextBox @bind-Value="OrderNo" Style="width: 100%;" Name="OrderNo"></RadzenTextBox> <RadzenTextBox @bind-Value="OrderNo" Style="width: 100%;" Name="OrderNo"></RadzenTextBox>
@ -25,7 +25,7 @@
</RadzenRow> </RadzenRow>
<RadzenRow AlignItems="AlignItems.Center"> <RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="4"> <RadzenColumn Size="4">
<RadzenLabel Text="处方时间" Component="OrderDate" /> <RadzenLabel Text="@myText.OrderDate" Component="OrderDate" />
</RadzenColumn> </RadzenColumn>
<RadzenColumn Size="8"> <RadzenColumn Size="8">
<RadzenDatePicker DateFormat="yyyy-MM-dd" CurrentDateChanged="@OnCurrentDateChanged" @bind-Value="OrderDate" Style="width: 100%;" Name="OrderDate" /> <RadzenDatePicker DateFormat="yyyy-MM-dd" CurrentDateChanged="@OnCurrentDateChanged" @bind-Value="OrderDate" Style="width: 100%;" Name="OrderDate" />
@ -34,18 +34,18 @@
<RadzenRow AlignItems="AlignItems.Center"> <RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="12"> <RadzenColumn Size="12">
<RadzenButton Size="ButtonSize.Medium" ButtonType="ButtonType.Submit" IsBusy="isLoading" Icon="search" Text="查询" /> <RadzenButton Size="ButtonSize.Medium" ButtonType="ButtonType.Submit" IsBusy="isLoading" Icon="search" Text="@myText.Search" />
<RadzenButton Size="ButtonSize.Medium" Click="reloadGrid" IsBusy="isLoading" Icon="refresh" Text="重置" ButtonStyle="ButtonStyle.Warning" /> <RadzenButton Size="ButtonSize.Medium" Click="reloadGrid" IsBusy="isLoading" Icon="refresh" Text="@myText.Restore" ButtonStyle="ButtonStyle.Warning" />
</RadzenColumn> </RadzenColumn>
</RadzenRow> </RadzenRow>
</RadzenStack> </RadzenStack>
</RadzenFieldset> </RadzenFieldset>
<RadzenButton Size="ButtonSize.Medium" Click="Confirm" ButtonType="ButtonType.Button" IsBusy="isLoading" Icon="check_circle" Text="确认" Style="margin:0.5rem" /> <RadzenButton Size="ButtonSize.Medium" Click="Confirm" ButtonType="ButtonType.Button" IsBusy="isLoading" Icon="check_circle" Text="@myText.Confirm" Style="margin:0.5rem" />
</form> </form>
<RadzenDataGrid @ref="grid" AllowRowSelectOnRowClick="@allowRowSelectOnRowClick" AllowFiltering="true" LoadData="@LoadData" <RadzenDataGrid @ref="grid" AllowRowSelectOnRowClick="@allowRowSelectOnRowClick" AllowFiltering="true" LoadData="@LoadData"
FilterPopupRenderMode="PopupRenderMode.OnDemand" FilterCaseSensitivity="FilterCaseSensitivity.CaseInsensitive" FilterPopupRenderMode="PopupRenderMode.OnDemand" FilterCaseSensitivity="FilterCaseSensitivity.CaseInsensitive"
Data="@orderInfos" ColumnWidth="200px" IsLoading="@isLoading" Count="@count" EmptyText="无数据" Data="@orderInfos" ColumnWidth="200px" IsLoading="@isLoading" Count="@count" EmptyText="@myText.NoDate"
SelectionMode="DataGridSelectionMode.Multiple" @bind-Value=@selectedOrderInfos SelectionMode="DataGridSelectionMode.Multiple" @bind-Value=@selectedOrderInfos
AllowPaging="true" PageSize="10" PagerHorizontalAlign="HorizontalAlign.Left" ShowPagingSummary="true" PagingSummaryFormat="{0}/{1} 共{2}条数据"> AllowPaging="true" PageSize="10" PagerHorizontalAlign="HorizontalAlign.Left" ShowPagingSummary="true" PagingSummaryFormat="{0}/{1} 共{2}条数据">
<Columns> <Columns>
@ -60,10 +60,10 @@
TValue="bool" Change="@(args => { if (!allowRowSelectOnRowClick) { grid.SelectRow(data); } })" /> TValue="bool" Change="@(args => { if (!allowRowSelectOnRowClick) { grid.SelectRow(data); } })" />
</Template> </Template>
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenDataGridColumn Property="PatientName" Title="姓名" Sortable="false" Filterable="false" Width="4rem" /> <RadzenDataGridColumn Property="PatientName" Title="@myText.Name" Sortable="false" Filterable="false" Width="4rem" />
<RadzenDataGridColumn Property="Sex" Title="性别" Sortable="false" Filterable="false" Width="2rem" /> <RadzenDataGridColumn Property="Sex" Title="@myText.Sex" Sortable="false" Filterable="false" Width="2rem" />
<RadzenDataGridColumn Property="OrderNo" Title="单号" Sortable="false" Filterable="false" Width="8rem" /> <RadzenDataGridColumn Property="OrderNo" Title="@myText.OrderNo" Sortable="false" Filterable="false" Width="8rem" />
<RadzenDataGridColumn Property="Detail.Drug.DrugName" Title="药品名称" FormatString="{0:d}" Sortable="false" Filterable="false" Width="8rem"> <RadzenDataGridColumn Property="Detail.Drug.DrugName" Title="@myText.DrugName" FormatString="{0:d}" Sortable="false" Filterable="false" Width="8rem">
<Template Context="DetailList"> <Template Context="DetailList">
@for (int i = 0; i < DetailList.DetailList.Count; i++) @for (int i = 0; i < DetailList.DetailList.Count; i++)
{ {
@ -72,7 +72,7 @@
} }
</Template> </Template>
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenDataGridColumn Property="Detail.SetManuNo" Title="药品批次" Sortable="false" Filterable="false" Width="8rem"> <RadzenDataGridColumn Property="Detail.SetManuNo" Title="@myText.Batch" Sortable="false" Filterable="false" Width="8rem">
<Template Context="DetailList"> <Template Context="DetailList">
@for (int i = 0; i < DetailList.DetailList.Count; i++) @for (int i = 0; i < DetailList.DetailList.Count; i++)
{ {
@ -81,7 +81,7 @@
} }
</Template> </Template>
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenDataGridColumn Property="Detail.Quantity" Title="数量" Sortable="false" Filterable="false" Width="2rem"> <RadzenDataGridColumn Property="Detail.Quantity" Title="@myText.Quantity" Sortable="false" Filterable="false" Width="2rem">
<Template Context="DetailList"> <Template Context="DetailList">
@for (int i = 0; i < DetailList.DetailList.Count; i++) @for (int i = 0; i < DetailList.DetailList.Count; i++)
{ {
@ -98,6 +98,8 @@
@inject IOrderInfoDao orderInfoDao; @inject IOrderInfoDao orderInfoDao;
@inject DialogService dialogService; @inject DialogService dialogService;
@inject Microsoft.Extensions.Options.IOptions<Pojo.Config.SettingConfig> setting; @inject Microsoft.Extensions.Options.IOptions<Pojo.Config.SettingConfig> setting;
@inject Toolbelt.Blazor.I18nText.I18nText I18nText;
private I18nText.local myText = new I18nText.local();
bool allowRowSelectOnRowClick = true; bool allowRowSelectOnRowClick = true;
IEnumerable<OrderInfo> orderInfos; IEnumerable<OrderInfo> orderInfos;
@ -146,6 +148,11 @@
DrawerNos = await orderInfoDao.GetDrawerNum(setting.Value.boxMachineId); DrawerNos = await orderInfoDao.GetDrawerNum(setting.Value.boxMachineId);
} }
protected override async Task OnInitializedAsync()
{
myText = await I18nText.GetTextTableAsync<I18nText.local>(this);
await base.OnInitializedAsync();
}
// protected override async Task OnInitializedAsync() // protected override async Task OnInitializedAsync()
// { // {
// await base.OnInitializedAsync(); // await base.OnInitializedAsync();

View File

@ -40,7 +40,7 @@
LoadData="@LoadData" LoadData="@LoadData"
IsLoading="@isLoading" IsLoading="@isLoading"
Count="@count" Count="@count"
EmptyText="无数据" EmptyText="@myText.NoDate"
Data="@channels" Data="@channels"
AllowColumnResize="true" AllowAlternatingRows="false" AllowColumnResize="true" AllowAlternatingRows="false"
CellClick="@((DataGridCellMouseEventArgs<ChannelStock> args) => OnCellClick(args))" CellClick="@((DataGridCellMouseEventArgs<ChannelStock> args) => OnCellClick(args))"
@ -49,27 +49,27 @@
<RadzenRow JustifyContent="JustifyContent.End"> <RadzenRow JustifyContent="JustifyContent.End">
@if (status < 3) @if (status < 3)
{ {
<RadzenButton IsBusy="@(status>0)" BusyText="加药中。。。" ButtonStyle="ButtonStyle.Warning" Variant="Variant.Flat" Shade="Shade.Light" Text="加药" Click="@OpenDrawer" /> <RadzenButton IsBusy="@(status > 0)" BusyText="@myText.Adding" ButtonStyle="ButtonStyle.Warning" Variant="Variant.Flat" Shade="Shade.Light" Text="@myText.Add" Click="@OpenDrawer" />
} }
@if (status == 3) @if (status == 3)
{ {
<RadzenButton Visible="@CompleteIsEnable" ButtonStyle="ButtonStyle.Warning" Variant="Variant.Flat" Shade="Shade.Light" Text="完成" Click="@AddFinish" /> <RadzenButton Visible="@CompleteIsEnable" ButtonStyle="ButtonStyle.Warning" Variant="Variant.Flat" Shade="Shade.Light" Text="@myText.Complete" Click="@AddFinish" />
} }
@if (status > 0 && status <= 3) @if (status > 0 && status <= 3)
{ {
<RadzenButton Visible="@CancleIsEnable" Variant="Variant.Flat" Text="取消" Click="@Cancel" Style="width: 120px" /> <RadzenButton Visible="@CancleIsEnable" Variant="Variant.Flat" Text="@myText.Cancel" Click="@Cancel" Style="width: 120px" />
} }
</RadzenRow> </RadzenRow>
</HeaderTemplate> </HeaderTemplate>
<Columns> <Columns>
<RadzenDataGridColumn Width="70px" Title="库位" Property="ColNo"></RadzenDataGridColumn> <RadzenDataGridColumn Width="70px" Title="@myText.StorageLocation" Property="ColNo"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="药品名称" Property="Drug.DrugName"> <RadzenDataGridColumn Title="@myText.DrugName" Property="Drug.DrugName">
<Template Context="channel"> <Template Context="channel">
<RadzenText TextStyle="TextStyle.Subtitle2" class="mb-0">@channel.Drug?.DrugName</RadzenText> <RadzenText TextStyle="TextStyle.Subtitle2" class="mb-0">@channel.Drug?.DrugName</RadzenText>
<RadzenText TextStyle="TextStyle.Caption">@channel.Drug?.DrugSpec</RadzenText> <RadzenText TextStyle="TextStyle.Caption">@channel.Drug?.DrugSpec</RadzenText>
</Template> </Template>
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenDataGridColumn Title="批次" Property="ManuNo"> <RadzenDataGridColumn Title="@myText.Batch" Property="ManuNo">
<Template Context="channel"> <Template Context="channel">
<RadzenText TextStyle="TextStyle.Subtitle2" class="mb-0">@channel.drugManuNo?.ManuNo</RadzenText> <RadzenText TextStyle="TextStyle.Subtitle2" class="mb-0">@channel.drugManuNo?.ManuNo</RadzenText>
@ -120,7 +120,7 @@
</RadzenStack> </RadzenStack>
</ValueTemplate> </ValueTemplate>
</RadzenDropDown> </RadzenDropDown>
<RadzenRequiredValidator Text="请选择批次" Component="ManuNo" Popup="true" /> <RadzenRequiredValidator Text="@myText.SelectBatch" Component="ManuNo" Popup="true" />
} }
else else
{ {
@ -130,12 +130,12 @@
} }
</EditTemplate> </EditTemplate>
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenDataGridColumn Title="库存" Property="Quantity"> <RadzenDataGridColumn Title="@myText.Inventory" Property="Quantity">
<Template Context="cs"> <Template Context="cs">
<RadzenButton ButtonStyle="ButtonStyle.Info" Variant="Variant.Flat" Shade="Shade.Lighter" class="m-1" Text="@cs.Quantity.ToString()" /> <RadzenButton ButtonStyle="ButtonStyle.Info" Variant="Variant.Flat" Shade="Shade.Lighter" class="m-1" Text="@cs.Quantity.ToString()" />
</Template> </Template>
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenDataGridColumn MinWidth="100px" Title="加药数量" Property="AddQuantity"> <RadzenDataGridColumn MinWidth="100px" Title="@myText.AddQuantity" Property="AddQuantity">
<EditTemplate Context="cs"> <EditTemplate Context="cs">
@if (cs.BoardType.ToString().Contains("2") || cs.BoardType.ToString().Contains("3")) @if (cs.BoardType.ToString().Contains("2") || cs.BoardType.ToString().Contains("3"))
{ {
@ -144,7 +144,7 @@
else else
{ {
<RadzenNumeric Min="0" Style="display: block" Name="Quantity" @bind-Value=@cs.AddQuantity /> <RadzenNumeric Min="0" Style="display: block" Name="Quantity" @bind-Value=@cs.AddQuantity />
<RadzenNumericRangeValidator Style="position: absolute;z-index: 9999;" Min="0" Text="请填写正确的添加数量" Component="Quantity" Popup="true" /> <RadzenNumericRangeValidator Style="position: absolute;z-index: 9999;" Min="0" Text="@myText.InputCorrectNum" Component="Quantity" Popup="true" />
} }
</EditTemplate> </EditTemplate>
</RadzenDataGridColumn> </RadzenDataGridColumn>
@ -158,6 +158,8 @@
@inject PortUtil PortUtil; @inject PortUtil PortUtil;
@inject NotificationService _message @inject NotificationService _message
@inject IOptions<DrawerConfig> setting; @inject IOptions<DrawerConfig> setting;
@inject Toolbelt.Blazor.I18nText.I18nText I18nText;
private I18nText.local myText = new I18nText.local();
int status = 0; int status = 0;
int drawerNo = 1; int drawerNo = 1;
RadzenDataGrid<ChannelStock> grid; RadzenDataGrid<ChannelStock> grid;
@ -517,4 +519,9 @@
{ {
registration?.Dispose(); registration?.Dispose();
} }
protected override async Task OnInitializedAsync()
{
myText = await I18nText.GetTextTableAsync<I18nText.local>(this);
await base.OnInitializedAsync();
}
} }

View File

@ -40,7 +40,7 @@
LoadData="@LoadData" LoadData="@LoadData"
IsLoading="@isLoading" IsLoading="@isLoading"
Count="@count" Count="@count"
EmptyText="无数据" EmptyText="@myText.NoDate"
Data="@channels" Data="@channels"
AllowColumnResize="true" AllowAlternatingRows="false" AllowColumnResize="true" AllowAlternatingRows="false"
CellClick="@((DataGridCellMouseEventArgs<ChannelStock> args) => OnCellClick(args))" CellClick="@((DataGridCellMouseEventArgs<ChannelStock> args) => OnCellClick(args))"
@ -49,38 +49,38 @@
<RadzenRow JustifyContent="JustifyContent.End"> <RadzenRow JustifyContent="JustifyContent.End">
@if (status < 3) @if (status < 3)
{ {
<RadzenButton IsBusy="@(status>0)" BusyText="取药中。。。" ButtonStyle="ButtonStyle.Warning" Variant="Variant.Flat" Shade="Shade.Light" Text="取药" Click="@OpenDrawer" /> <RadzenButton IsBusy="@(status > 0)" BusyText="@myText.Taking" ButtonStyle="ButtonStyle.Warning" Variant="Variant.Flat" Shade="Shade.Light" Text="@myText.Take" Click="@OpenDrawer" />
} }
@if (status == 3) @if (status == 3)
{ {
<RadzenButton Visible="@CompleteIsEnable" ButtonStyle="ButtonStyle.Warning" Variant="Variant.Flat" Shade="Shade.Light" Text="完成" Click="@TakeFinish" /> <RadzenButton Visible="@CompleteIsEnable" ButtonStyle="ButtonStyle.Warning" Variant="Variant.Flat" Shade="Shade.Light" Text="@myText.Complete" Click="@TakeFinish" />
} }
@if (status > 0 && status <= 3) @if (status > 0 && status <= 3)
{ {
<RadzenButton Visible="@CancleIsEnable" Variant="Variant.Flat" Text="取消" Click="@Cancel" Style="width: 120px" /> <RadzenButton Visible="@CancleIsEnable" Variant="Variant.Flat" Text="@myText.Cancel" Click="@Cancel" Style="width: 120px" />
} }
</RadzenRow> </RadzenRow>
</HeaderTemplate> </HeaderTemplate>
<Columns> <Columns>
<RadzenDataGridColumn Width="70px" Title="库位" Property="ColNo"></RadzenDataGridColumn> <RadzenDataGridColumn Width="70px" Title="@myText.StorageLocation" Property="ColNo"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="药品名称" Property="Drug.DrugName"> <RadzenDataGridColumn Title="@myText.DrugName" Property="Drug.DrugName">
<Template Context="channel"> <Template Context="channel">
<RadzenText TextStyle="TextStyle.Subtitle2" class="mb-0">@channel.Drug.DrugName</RadzenText> <RadzenText TextStyle="TextStyle.Subtitle2" class="mb-0">@channel.Drug.DrugName</RadzenText>
<RadzenText TextStyle="TextStyle.Caption">@channel.Drug.DrugSpec</RadzenText> <RadzenText TextStyle="TextStyle.Caption">@channel.Drug.DrugSpec</RadzenText>
</Template> </Template>
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenDataGridColumn Title="批次" Property="ManuNo"> <RadzenDataGridColumn Title="@myText.Batch" Property="ManuNo">
<Template Context="channel"> <Template Context="channel">
<RadzenText TextStyle="TextStyle.Subtitle2" class="mb-0">@channel.ManuNo</RadzenText> <RadzenText TextStyle="TextStyle.Subtitle2" class="mb-0">@channel.ManuNo</RadzenText>
<RadzenText TextStyle="TextStyle.Caption">@channel.EffDate</RadzenText> <RadzenText TextStyle="TextStyle.Caption">@channel.EffDate</RadzenText>
</Template> </Template>
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenDataGridColumn Title="库存" Property="Quantity"> <RadzenDataGridColumn Title="@myText.Inventory" Property="Quantity">
<Template Context="channel"> <Template Context="channel">
<RadzenButton ButtonStyle="ButtonStyle.Info" Size="ButtonSize.Medium" Variant="Variant.Flat" Shade="Shade.Lighter" class="m-1" Text="@channel.Quantity.ToString()" /> <RadzenButton ButtonStyle="ButtonStyle.Info" Size="ButtonSize.Medium" Variant="Variant.Flat" Shade="Shade.Lighter" class="m-1" Text="@channel.Quantity.ToString()" />
</Template> </Template>
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenDataGridColumn MinWidth="120px" Title="取药数量" Property="TakeQuantity"> <RadzenDataGridColumn MinWidth="120px" Title="@myText.TakeQuantity" Property="TakeQuantity">
<EditTemplate Context="channel"> <EditTemplate Context="channel">
@if (channel.BoardType.ToString().Contains("2") || channel.BoardType.ToString().Contains("3")) @if (channel.BoardType.ToString().Contains("2") || channel.BoardType.ToString().Contains("3"))
{ {
@ -103,6 +103,8 @@
@inject PortUtil PortUtil; @inject PortUtil PortUtil;
@inject NotificationService _message @inject NotificationService _message
@inject IOptions<DrawerConfig> setting; @inject IOptions<DrawerConfig> setting;
@inject Toolbelt.Blazor.I18nText.I18nText I18nText;
private I18nText.local myText = new I18nText.local();
int status = 0; int status = 0;
int drawerNo = 1; int drawerNo = 1;
RadzenDataGrid<ChannelStock> grid; RadzenDataGrid<ChannelStock> grid;
@ -120,7 +122,11 @@
bool CancleIsEnable = true; bool CancleIsEnable = true;
private readonly ILog logger = LogManager.GetLogger(typeof(DrawerTake)); private readonly ILog logger = LogManager.GetLogger(typeof(DrawerTake));
protected override async Task OnInitializedAsync()
{
myText = await I18nText.GetTextTableAsync<I18nText.local>(this);
await base.OnInitializedAsync();
}
async Task LoadData(LoadDataArgs args) async Task LoadData(LoadDataArgs args)
{ {
isLoading = true; isLoading = true;
@ -173,7 +179,7 @@
else else
{ {
_message.Notify( _message.Notify(
new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"抽屉【{drawerNo}】打开失败,请检测硬件", Duration = 4000 } new NotificationMessage { Severity = NotificationSeverity.Error, Summary = myText.Tips, Detail = $"抽屉【{drawerNo}】打开失败,请检测硬件", Duration = 4000 }
); );
logger.Info($"抽屉打开失败"); logger.Info($"抽屉打开失败");
RestData(); RestData();
@ -397,7 +403,7 @@
var b = await channelListDao.DrawerOperationFinish(channels.Where(cl => cl.TakeQuantity != 0).ToList(), 2); var b = await channelListDao.DrawerOperationFinish(channels.Where(cl => cl.TakeQuantity != 0).ToList(), 2);
if (!b) if (!b)
{ {
_message.Notify(new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"数据保存失败", Duration = 4000 }); _message.Notify(new NotificationMessage { Severity = NotificationSeverity.Error, Summary = myText.Tips, Detail = $"数据保存失败", Duration = 4000 });
logger.Error($"抽屉取药保存数据库失败,数据{JsonConvert.SerializeObject(channels)}"); logger.Error($"抽屉取药保存数据库失败,数据{JsonConvert.SerializeObject(channels)}");
} }
else else

View File

@ -10,11 +10,11 @@
<div class="col-12 mb-4"> <div class="col-12 mb-4">
<form onsubmit="@(() => grid.Reload())"> <form onsubmit="@(() => grid.Reload())">
<RadzenFieldset Text="查询"> <RadzenFieldset Text="@myText.Search">
<RadzenStack Orientation="Orientation.Horizontal" Gap="1rem"> <RadzenStack Orientation="Orientation.Horizontal" Gap="1rem">
<RadzenRow AlignItems="AlignItems.Center"> <RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="4"> <RadzenColumn Size="4">
<RadzenLabel Text="药品编码" Component="DrugId" /> <RadzenLabel Text="@myText.DrugCode" Component="DrugId" />
</RadzenColumn> </RadzenColumn>
<RadzenColumn Size="8"> <RadzenColumn Size="8">
<RadzenTextBox @bind-Value="DrugId" Style="width: 100%;" Name="DrugId"></RadzenTextBox> <RadzenTextBox @bind-Value="DrugId" Style="width: 100%;" Name="DrugId"></RadzenTextBox>
@ -22,7 +22,7 @@
</RadzenRow> </RadzenRow>
<RadzenRow AlignItems="AlignItems.Center"> <RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="4"> <RadzenColumn Size="4">
<RadzenLabel Text="药品名称" Component="DrugName" /> <RadzenLabel Text="@myText.DrugName" Component="DrugName" />
</RadzenColumn> </RadzenColumn>
<RadzenColumn Size="8"> <RadzenColumn Size="8">
<RadzenTextBox @bind-Value="DrugName" Style="width: 100%;" Name="DrugName"></RadzenTextBox> <RadzenTextBox @bind-Value="DrugName" Style="width: 100%;" Name="DrugName"></RadzenTextBox>
@ -31,9 +31,9 @@
<RadzenRow AlignItems="AlignItems.Center"> <RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="12"> <RadzenColumn Size="12">
<RadzenButton Size="ButtonSize.Large" ButtonType="ButtonType.Submit" IsBusy="isLoading" Icon="search" Text="查询" /> <RadzenButton Size="ButtonSize.Large" ButtonType="ButtonType.Submit" IsBusy="isLoading" Icon="search" Text="@myText.Search" />
<RadzenButton Size="ButtonSize.Large" Click="reloadGrid" IsBusy="isLoading" Icon="refresh" Text="重置" ButtonStyle="ButtonStyle.Warning" /> <RadzenButton Size="ButtonSize.Large" Click="reloadGrid" IsBusy="isLoading" Icon="refresh" Text="@myText.Restore" ButtonStyle="ButtonStyle.Warning" />
<RadzenButton Size="ButtonSize.Large" ButtonStyle="ButtonStyle.Success" Icon="add_circle_outline" Click="@InsertDrugRow" Text="新增药品" /> <RadzenButton Size="ButtonSize.Large" ButtonStyle="ButtonStyle.Success" Icon="add_circle_outline" Click="@InsertDrugRow" Text="@myText.AddDrug" />
</RadzenColumn> </RadzenColumn>
</RadzenRow> </RadzenRow>
</RadzenStack> </RadzenStack>
@ -46,38 +46,38 @@
@bind-Value="@SelectedDrugs" @bind-Value="@SelectedDrugs"
IsLoading="@isLoading" IsLoading="@isLoading"
Count="@count" Count="@count"
EmptyText="无数据" EmptyText="@myText.NoDate"
Data="@_forecasts" Data="@_forecasts"
AllowColumnResize="true" AllowAlternatingRows="false" AllowColumnResize="true" AllowAlternatingRows="false"
SelectionMode="DataGridSelectionMode.Single" RowUpdate="@((DrugInfo di)=>{OnDrugUpdateRow(di);})" RowCreate="@((DrugInfo di)=>{OnDrugCreateRow(di);})" SelectionMode="DataGridSelectionMode.Single" RowUpdate="@((DrugInfo di)=>{OnDrugUpdateRow(di);})" RowCreate="@((DrugInfo di)=>{OnDrugCreateRow(di);})"
AllowPaging="true" PageSize="10" PagerHorizontalAlign="HorizontalAlign.Left" ColumnWidth="100px" ShowPagingSummary="true" PagingSummaryFormat="{0}/{1} ¹²{2}ÌõÊý¾Ý"> AllowPaging="true" PageSize="10" PagerHorizontalAlign="HorizontalAlign.Left" ColumnWidth="100px" ShowPagingSummary="true" PagingSummaryFormat="{0}/{1} ¹²{2}ÌõÊý¾Ý">
<Columns> <Columns>
<RadzenDataGridColumn Frozen="true" Title="编码" Property="DrugId"> <RadzenDataGridColumn Frozen="true" Title="@myText.DrugCode" Property="DrugId">
<EditTemplate Context="drugInfo"> <EditTemplate Context="drugInfo">
<RadzenTextBox Name="DrugId" @bind-Value="drugInfo.DrugId" Style="width:100%; display: block;" /> <RadzenTextBox Name="DrugId" @bind-Value="drugInfo.DrugId" Style="width:100%; display: block;" />
<RadzenRequiredValidator Text="请填写编码" Component="DrugId" Popup="true" /> <RadzenRequiredValidator Text="@myText.InputCode" Component="DrugId" Popup="true" />
</EditTemplate> </EditTemplate>
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenDataGridColumn Width="200px" Title="药品名称" Property="DrugName"> <RadzenDataGridColumn Width="200px" Title="@myText.DrugName" Property="DrugName">
<EditTemplate Context="drugInfo"> <EditTemplate Context="drugInfo">
<RadzenTextBox Name="DrugName" @bind-Value="drugInfo.DrugName" Style="width:100%;display:block;" /> <RadzenTextBox Name="DrugName" @bind-Value="drugInfo.DrugName" Style="width:100%;display:block;" />
<RadzenRequiredValidator Text="请填写药品名称" Component="DrugName" Popup="true"/> <RadzenRequiredValidator Text="@myText.InputDrugName" Component="DrugName" Popup="true" />
</EditTemplate> </EditTemplate>
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenDataGridColumn Title="规格" Property="DrugSpec"> <RadzenDataGridColumn Title="@myText.Spec" Property="DrugSpec">
<EditTemplate Context="drugInfo"> <EditTemplate Context="drugInfo">
<RadzenTextBox Name="DrugSpec" @bind-Value="drugInfo.DrugSpec" Style="width:100%;display:block;" /> <RadzenTextBox Name="DrugSpec" @bind-Value="drugInfo.DrugSpec" Style="width:100%;display:block;" />
<RadzenRequiredValidator Text="请填写规格" Component="DrugSpec" Popup="true"/> <RadzenRequiredValidator Text="@myText.InputDrugSpec" Component="DrugSpec" Popup="true" />
</EditTemplate> </EditTemplate>
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenDataGridColumn Width="200px" Title="厂家" Property="Manufactory"> <RadzenDataGridColumn Width="200px" Title="@myText.Factory" Property="Manufactory">
<EditTemplate Context="drugInfo"> <EditTemplate Context="drugInfo">
<RadzenTextBox Name="Manufactory" @bind-Value="drugInfo.Manufactory" Style="width:100%;display:block;" /> <RadzenTextBox Name="Manufactory" @bind-Value="drugInfo.Manufactory" Style="width:100%;display:block;" />
<RadzenRequiredValidator Text="请填写厂家" Component="Manufactory" Popup="true"/> <RadzenRequiredValidator Text="@myText.InputDrugFactory" Component="Manufactory" Popup="true"/>
</EditTemplate> </EditTemplate>
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenDataGridColumn Context="drugInfo" Title="操作" Filterable="false" Sortable="false" TextAlign="TextAlign.Left" Frozen="true" FrozenPosition="FrozenColumnPosition.Right"> <RadzenDataGridColumn Context="drugInfo" Title="@myText.Operate" Filterable="false" Sortable="false" TextAlign="TextAlign.Left" Frozen="true" FrozenPosition="FrozenColumnPosition.Right">
<Template Context="drugInfo"> <Template Context="drugInfo">
<RadzenButton Icon="edit" ButtonStyle="ButtonStyle.Light" Variant="Variant.Flat" Size="ButtonSize.Medium" Click="@(args => EditDrugRow(drugInfo))" @onclick:stopPropagation="true"> <RadzenButton Icon="edit" ButtonStyle="ButtonStyle.Light" Variant="Variant.Flat" Size="ButtonSize.Medium" Click="@(args => EditDrugRow(drugInfo))" @onclick:stopPropagation="true">
</RadzenButton> </RadzenButton>
@ -160,6 +160,8 @@
@inject IDrugInfoDao drugInfoDao; @inject IDrugInfoDao drugInfoDao;
@inject DialogService dialogService; @inject DialogService dialogService;
@inject IDrugManuNoDao drugManuNoDao; @inject IDrugManuNoDao drugManuNoDao;
@inject Toolbelt.Blazor.I18nText.I18nText I18nText;
private I18nText.local myText = new I18nText.local();
RadzenDataGrid<DrugInfo> grid; RadzenDataGrid<DrugInfo> grid;
RadzenDataGrid<DrugManuNo> ManusGrid; RadzenDataGrid<DrugManuNo> ManusGrid;
@ -335,5 +337,10 @@
manuNoToInsert.Remove(dm); manuNoToInsert.Remove(dm);
ManusGrid.Reload(); ManusGrid.Reload();
} }
protected override async Task OnInitializedAsync()
{
myText = await I18nText.GetTextTableAsync<I18nText.local>(this);
await base.OnInitializedAsync();
}
} }

View File

@ -7,7 +7,7 @@
<div class="top-row px-4"> <div class="top-row px-4">
<RadzenButton Icon="account_circle" Style="margin-left: auto;" Click="@SaveMethod"> <RadzenButton Icon="account_circle" Style="margin-left: auto;" Click="@SaveMethod">
<ChildContent> <ChildContent>
保存设置 @myText.SaveSet
</ChildContent> </ChildContent>
</RadzenButton> </RadzenButton>
</div> </div>
@ -16,24 +16,24 @@
<RadzenCard class="rz-my-6"> <RadzenCard class="rz-my-6">
<RadzenStack Orientation="Orientation.Horizontal" AlignItems="AlignItems.Start" Wrap="FlexWrap.Wrap"> <RadzenStack Orientation="Orientation.Horizontal" AlignItems="AlignItems.Start" Wrap="FlexWrap.Wrap">
<RadzenStack Orientation="Orientation.Vertical" Gap="4px"> <RadzenStack Orientation="Orientation.Vertical" Gap="4px">
冰箱温度区间 @myText.TemperRange
<RadzenTextBox Placeholder="2-8" Value="@temperatureRange" Change="@(args=>temperatureRange=args)"></RadzenTextBox> <RadzenTextBox Placeholder="2-8" Value="@temperatureRange" Change="@(args=>temperatureRange=args)"></RadzenTextBox>
</RadzenStack> </RadzenStack>
<RadzenStack Orientation="Orientation.Vertical" Gap="4px"> <RadzenStack Orientation="Orientation.Vertical" Gap="4px">
冰箱状态 @myText.FridgeState
<RadzenRadioButtonList Value=@fridgeStateValue TValue="int" Change=@(args => fridgeStateValue = args)> <RadzenRadioButtonList Value=@fridgeStateValue TValue="int" Change=@(args => fridgeStateValue = args)>
<Items> <Items>
<RadzenRadioButtonListItem Text="" Value="0" /> <RadzenRadioButtonListItem Text="@myText.Open" Value="0" />
<RadzenRadioButtonListItem Text="" Value="1" /> <RadzenRadioButtonListItem Text="@myText.Close" Value="1" />
</Items> </Items>
</RadzenRadioButtonList> </RadzenRadioButtonList>
</RadzenStack> </RadzenStack>
<RadzenStack Orientation="Orientation.Vertical" Gap="4px"> <RadzenStack Orientation="Orientation.Vertical" Gap="4px">
报警状态 @myText.AlertState
<RadzenRadioButtonList Value="@alertStateValue" TValue="int" Change="@(args=>alertStateValue=args)"> <RadzenRadioButtonList Value="@alertStateValue" TValue="int" Change="@(args=>alertStateValue=args)">
<Items> <Items>
<RadzenRadioButtonListItem Text="开" Value="0"/> <RadzenRadioButtonListItem Text="@myText.Open" Value="0"/>
<RadzenRadioButtonListItem Text="" Value="1"/> <RadzenRadioButtonListItem Text="@myText.Close" Value="1"/>
</Items> </Items>
</RadzenRadioButtonList> </RadzenRadioButtonList>
</RadzenStack> </RadzenStack>
@ -46,18 +46,22 @@
@inject Microsoft.Extensions.Options.IOptions<Pojo.Config.fridgeConfig> setting; @inject Microsoft.Extensions.Options.IOptions<Pojo.Config.fridgeConfig> setting;
@inject PortUtil port; @inject PortUtil port;
@inject NotificationService _message @inject NotificationService _message
@inject Toolbelt.Blazor.I18nText.I18nText I18nText;
@code { @code {
private I18nText.local myText = new I18nText.local();
private readonly ILog logger = LogManager.GetLogger(typeof(LoginDialog)); private readonly ILog logger = LogManager.GetLogger(typeof(LoginDialog));
int fridgeStateValue = 1; int fridgeStateValue = 1;
int alertStateValue = 1; int alertStateValue = 1;
string temperatureRange = "2-8"; string temperatureRange = "2-8";
protected override void OnInitialized()
protected override async Task OnInitializedAsync()
{ {
myText = await I18nText.GetTextTableAsync<I18nText.local>(this);
fridgeStateValue = setting.Value.fridgeState; fridgeStateValue = setting.Value.fridgeState;
alertStateValue = setting.Value.alertState; alertStateValue = setting.Value.alertState;
temperatureRange = setting.Value.temperatureRange; temperatureRange = setting.Value.temperatureRange;
base.OnInitialized(); await base.OnInitializedAsync();
} }
//保存 //保存
async Task SaveMethod() async Task SaveMethod()

View File

@ -45,6 +45,12 @@
</RadzenColumn> </RadzenColumn>
<RadzenColumn Size="8"> <RadzenColumn Size="8">
<RadzenRow Style="height: 100%;width:100%" Orientation="Orientation.Horizontal" JustifyContent="JustifyContent.End" AlignItems="AlignItems.Center"> <RadzenRow Style="height: 100%;width:100%" Orientation="Orientation.Horizontal" JustifyContent="JustifyContent.End" AlignItems="AlignItems.Center">
<RadzenColumn Size="3">
<RadzenStack Orientation="Orientation.Horizontal" AlignItems="AlignItems.Center" JustifyContent="JustifyContent.Center" Gap="0.5rem" class="rz-p-sm-12">
<RadzenIcon Icon="language" Style="font-size:3rem;cursor: pointer;margin-left:-60px" class="rz-ripple" IconColor="white" />
<RadzenDropDown TValue="string" Value=@SelectedCulture Data=@languageNames Change="@(args => LanguageClick(args))" Style="width: 100%; max-width: 400px;" Name="DropDownChangeEvent" />
</RadzenStack>
</RadzenColumn>
<RadzenColumn Size="2"> <RadzenColumn Size="2">
@if (globalStateService.Operator != null) @if (globalStateService.Operator != null)
{ {
@ -53,12 +59,12 @@
<RadzenProfileMenu prefix="" Click="MenuClick" Style="background-color:transparent;z-index:99"> <RadzenProfileMenu prefix="" Click="MenuClick" Style="background-color:transparent;z-index:99">
<Template> <Template>
<RadzenText Style="" class="rz-color-white" TextStyle="TextStyle.H5" TextAlign="TextAlign.Center">操作人@globalStateService.Operator.NickName</RadzenText> <RadzenText Style="" class="rz-color-white" TextStyle="TextStyle.H5" TextAlign="TextAlign.Center">@myText.Operator @globalStateService.Operator.NickName</RadzenText>
</Template> </Template>
<ChildContent> <ChildContent>
<RadzenProfileMenuItem Text="录入指纹" Value="11" Icon="fingerprint"></RadzenProfileMenuItem> <RadzenProfileMenuItem Text="@myText.EnterFingerprint" Value="11" Icon="fingerprint"></RadzenProfileMenuItem>
<RadzenProfileMenuItem Text="录入签名" Value="21" Icon="line_weight"></RadzenProfileMenuItem> <RadzenProfileMenuItem Text="@myText.EnterSign" Value="21" Icon="line_weight"></RadzenProfileMenuItem>
<RadzenProfileMenuItem Text="修改密码" Value="31" Icon="password"></RadzenProfileMenuItem> <RadzenProfileMenuItem Text="@myText.UpdatePassword" Value="31" Icon="password"></RadzenProfileMenuItem>
</ChildContent> </ChildContent>
</RadzenProfileMenu> </RadzenProfileMenu>
} }
@ -68,12 +74,12 @@
//<RadzenText onclick="@(() => { EditPassword(2); })" Style="" class="rz-color-white" TextStyle="TextStyle.H5" TextAlign="TextAlign.Center">复核人:@globalStateService.Reviewer.NickName</RadzenText> //<RadzenText onclick="@(() => { EditPassword(2); })" Style="" class="rz-color-white" TextStyle="TextStyle.H5" TextAlign="TextAlign.Center">复核人:@globalStateService.Reviewer.NickName</RadzenText>
<RadzenProfileMenu prefix="" Click="MenuClick" Style="background-color:transparent"> <RadzenProfileMenu prefix="" Click="MenuClick" Style="background-color:transparent">
<Template> <Template>
<RadzenText Style="" class="rz-color-white" TextStyle="TextStyle.H5" TextAlign="TextAlign.Center">复核人@globalStateService.Reviewer.NickName</RadzenText> <RadzenText Style="" class="rz-color-white" TextStyle="TextStyle.H5" TextAlign="TextAlign.Center">@myText.Checker@globalStateService.Reviewer.NickName</RadzenText>
</Template> </Template>
<ChildContent> <ChildContent>
<RadzenProfileMenuItem Text="录入指纹" Value="12" Icon="fingerprint"></RadzenProfileMenuItem> <RadzenProfileMenuItem Text="@myText.EnterFingerprint" Value="12" Icon="fingerprint"></RadzenProfileMenuItem>
<RadzenProfileMenuItem Text="录入签名" Value="22" Icon="line_weight"></RadzenProfileMenuItem> <RadzenProfileMenuItem Text="@myText.EnterSign" Value="22" Icon="line_weight"></RadzenProfileMenuItem>
<RadzenProfileMenuItem Text="修改密码" Value="32" Icon="password"></RadzenProfileMenuItem> <RadzenProfileMenuItem Text="@myText.UpdatePassword" Value="32" Icon="password"></RadzenProfileMenuItem>
</ChildContent> </ChildContent>
</RadzenProfileMenu> </RadzenProfileMenu>
} }
@ -81,7 +87,7 @@
<RadzenColumn Size="3"> <RadzenColumn Size="3">
<div @onclick="@(() => { changeShifts(); })"> <div @onclick="@(() => { changeShifts(); })">
<RadzenIcon Icon="compare_arrows" Style="font-size:3rem;cursor: pointer;" class="rz-ripple" IconColor="white" /> <RadzenIcon Icon="compare_arrows" Style="font-size:3rem;cursor: pointer;" class="rz-ripple" IconColor="white" />
<div>交接班</div> <div>@myText.Handover</div>
</div> </div>
<div style="clear:both"></div> <div style="clear:both"></div>
</RadzenColumn> </RadzenColumn>
@ -95,7 +101,7 @@
<RadzenStack Style="height: 100%;width:41%" Gap="20"> <RadzenStack Style="height: 100%;width:41%" Gap="20">
<RadzenStack class="home-menu rz-background-color-info-lighter rz-ripple" JustifyContent="JustifyContent.Center" Style="height: 50%" @onclick="@(() => jump2Page(1))"> <RadzenStack class="home-menu rz-background-color-info-lighter rz-ripple" JustifyContent="JustifyContent.Center" Style="height: 50%" @onclick="@(() => jump2Page(1))">
<RadzenText Style="" class="rz-color-white" TextStyle="TextStyle.H2" TextAlign="TextAlign.Center">出库</RadzenText> <RadzenText Style="" class="rz-color-white" TextStyle="TextStyle.H2" TextAlign="TextAlign.Center">@myText.Outbound</RadzenText>
@if (globalStateService.Operator != null) @if (globalStateService.Operator != null)
{ {
@if (!globalStateService.Operator.role.permissionIds.Any(id => id - 10 < 10)) @if (!globalStateService.Operator.role.permissionIds.Any(id => id - 10 < 10))
@ -108,7 +114,7 @@
</RadzenStack> </RadzenStack>
<RadzenStack Orientation="Orientation.Horizontal" Style="height: 50%;width:100%"> <RadzenStack Orientation="Orientation.Horizontal" Style="height: 50%;width:100%">
<RadzenStack class="home-menu rz-background-color-success-light rz-text-white rz-ripple" JustifyContent="JustifyContent.Center" @onclick="@(() => jump2Page(2))" Style="height: 100%;width:50%"> <RadzenStack class="home-menu rz-background-color-success-light rz-text-white rz-ripple" JustifyContent="JustifyContent.Center" @onclick="@(() => jump2Page(2))" Style="height: 100%;width:50%">
<RadzenText class="rz-color-white" TextStyle="TextStyle.H2" TextAlign="TextAlign.Center">入库</RadzenText> <RadzenText class="rz-color-white" TextStyle="TextStyle.H2" TextAlign="TextAlign.Center">@myText.FillStorage</RadzenText>
@if (globalStateService.Operator != null) @if (globalStateService.Operator != null)
{ {
@if (!globalStateService.Operator.role.permissionIds.Any(id => id - 20 > 0 && id - 20 < 10)) @if (!globalStateService.Operator.role.permissionIds.Any(id => id - 20 > 0 && id - 20 < 10))
@ -120,7 +126,7 @@
} }
</RadzenStack> </RadzenStack>
<RadzenStack class="home-menu rz-background-color-danger-lighter rz-text-white rz-ripple" JustifyContent="JustifyContent.Center" @onclick="@(() => jump2Page(6))" Style="height: 100%;width:50%"> <RadzenStack class="home-menu rz-background-color-danger-lighter rz-text-white rz-ripple" JustifyContent="JustifyContent.Center" @onclick="@(() => jump2Page(6))" Style="height: 100%;width:50%">
<RadzenText class="rz-color-white" TextStyle="TextStyle.H2" TextAlign="TextAlign.Center">药箱管理</RadzenText> <RadzenText class="rz-color-white" TextStyle="TextStyle.H2" TextAlign="TextAlign.Center">@myText.BoxManage</RadzenText>
@if (globalStateService.Operator != null) @if (globalStateService.Operator != null)
{ {
@if (!globalStateService.Operator.role.permissionIds.Any(id => id - 60 > 0 && id - 60 < 10)) @if (!globalStateService.Operator.role.permissionIds.Any(id => id - 60 > 0 && id - 60 < 10))
@ -135,7 +141,7 @@
</RadzenStack> </RadzenStack>
<RadzenStack Style="height: 100%;width:59%" Gap="20"> <RadzenStack Style="height: 100%;width:59%" Gap="20">
<RadzenStack class="home-menu rz-background-color-series-2 rz-text-white rz-ripple" JustifyContent="JustifyContent.Center" @onclick="@(() => jump2Page(3))" Style="height: 43%;width:100%"> <RadzenStack class="home-menu rz-background-color-series-2 rz-text-white rz-ripple" JustifyContent="JustifyContent.Center" @onclick="@(() => jump2Page(3))" Style="height: 43%;width:100%">
<RadzenText class="rz-color-white" TextStyle="TextStyle.H2" TextAlign="TextAlign.Center">归还</RadzenText> <RadzenText class="rz-color-white" TextStyle="TextStyle.H2" TextAlign="TextAlign.Center">@myText.Return</RadzenText>
@if (globalStateService.Operator != null) @if (globalStateService.Operator != null)
{ {
@if (!globalStateService.Operator.role.permissionIds.Any(id => id - 30 > 0 && id - 30 < 10)) @if (!globalStateService.Operator.role.permissionIds.Any(id => id - 30 > 0 && id - 30 < 10))
@ -148,7 +154,7 @@
</RadzenStack> </RadzenStack>
<RadzenStack Orientation="Orientation.Horizontal" Style="height: 57%;width:100%"> <RadzenStack Orientation="Orientation.Horizontal" Style="height: 57%;width:100%">
<RadzenStack class="home-menu rz-background-color-primary rz-text-white rz-ripple" JustifyContent="JustifyContent.Center" @onclick="@(() => jump2Page(4))" Style="height: 100%;width:50%"> <RadzenStack class="home-menu rz-background-color-primary rz-text-white rz-ripple" JustifyContent="JustifyContent.Center" @onclick="@(() => jump2Page(4))" Style="height: 100%;width:50%">
<RadzenText class="rz-color-white" TextStyle="TextStyle.H2" TextAlign="TextAlign.Center">库存管理</RadzenText> <RadzenText class="rz-color-white" TextStyle="TextStyle.H2" TextAlign="TextAlign.Center">@myText.StockManage</RadzenText>
@if (globalStateService.Operator != null) @if (globalStateService.Operator != null)
{ {
@if (!globalStateService.Operator.role.permissionIds.Any(id => id - 40 > 0 && id - 40 < 10)) @if (!globalStateService.Operator.role.permissionIds.Any(id => id - 40 > 0 && id - 40 < 10))
@ -160,7 +166,7 @@
} }
</RadzenStack> </RadzenStack>
<RadzenStack class="home-menu rz-background-color-success-lighter rz-text-white rz-ripple" JustifyContent="JustifyContent.Center" @onclick="@(() => jump2Page(5))" Style="height: 100%;width:50%"> <RadzenStack class="home-menu rz-background-color-success-lighter rz-text-white rz-ripple" JustifyContent="JustifyContent.Center" @onclick="@(() => jump2Page(5))" Style="height: 100%;width:50%">
<RadzenText class="rz-color-white" TextStyle="TextStyle.H2" TextAlign="TextAlign.Center">系统管理</RadzenText> <RadzenText class="rz-color-white" TextStyle="TextStyle.H2" TextAlign="TextAlign.Center">@myText.SystemManage</RadzenText>
@if (globalStateService.Operator != null) @if (globalStateService.Operator != null)
{ {
@if (!globalStateService.Operator.role.permissionIds.Any(id => id - 50 > 0 && id - 50 < 10)) @if (!globalStateService.Operator.role.permissionIds.Any(id => id - 50 > 0 && id - 50 < 10))
@ -186,21 +192,25 @@
private List<Premission> userPremissions { get; set; } = new(); private List<Premission> userPremissions { get; set; } = new();
@inject GlobalStateService globalStateService; @inject GlobalStateService globalStateService;
@inject Toolbelt.Blazor.I18nText.I18nText I18nText;
Timer timer; Timer timer;
@inject PortUtil _portUtil; @inject PortUtil _portUtil;
private readonly ILog logger = LogManager.GetLogger(typeof(Home)); private readonly ILog logger = LogManager.GetLogger(typeof(Home));
@inject Microsoft.Extensions.Options.IOptions<Pojo.Config.SettingConfig> setting; @inject Microsoft.Extensions.Options.IOptions<Pojo.Config.SettingConfig> setting;
bool currentPage = true; bool currentPage = true;
public static I18nText.local myText = new I18nText.local();
protected override void OnInitialized() IEnumerable<string> languageNames;
private string culture;
private string SelectedCulture
{ {
// timer = new Timer(state => get => culture;
// { set { }
// var now = DateTime.Now; }
protected override async Task OnInitializedAsync()
{
// InvokeAsync(StateHasChanged); languageNames = new List<string> { "简体中文", "English" };
// }, null, 0, 1000); myText = await I18nText.GetTextTableAsync<I18nText.local>(this);
if (setting.Value.autoOutLog > 0) if (setting.Value.autoOutLog > 0)
{ {
// 是否需要自动退出 // 是否需要自动退出
@ -245,9 +255,67 @@
} }
}); });
} }
base.OnInitialized(); culture = I18nText.GetCurrentLanguageAsync().Result == "en-US" ? "English" : "简体中文";
base.OnInitializedAsync();
} }
// protected override void OnInitialized()
// {
// // timer = new Timer(state =>
// // {
// // var now = DateTime.Now;
// // InvokeAsync(StateHasChanged);
// // }, null, 0, 1000);
// if (setting.Value.autoOutLog > 0)
// {
// // 是否需要自动退出
// var promiseUtil = new PromiseUtil<object>();
// promiseUtil.taskAsyncLoop(500, null, async (data, next, stop) =>
// {
// if (globalStateService.Operator == null || !currentPage)
// {
// logger.Info($"Home页自动退出循环停止{globalStateService.Operator == null},{!currentPage}");
// stop();
// }
// else
// {
// try
// {
// //没有在操作抽屉
// if (!_portUtil.Operate)
// {
// // 无人操作鼠标键盘
// if ((DateTime.Now - _portUtil.dateTime).TotalSeconds > setting.Value.autoOutLog && CheckComputerFreeState.GetLastInputTime() > setting.Value.autoOutLog)
// {
// logger.Info($"设备{setting.Value.autoOutLog}内无人操作,用户【{globalStateService.Operator?.NickName}】自动退出登录,_portUtil.Operate:{_portUtil.Operate},totalSecond:{(DateTime.Now - _portUtil.dateTime).TotalSeconds},lastInputTime:{CheckComputerFreeState.GetLastInputTime()},autoOutLog:{setting.Value.autoOutLog}");
// globalStateService.Operator = null;
// globalStateService.Reviewer = null;
// stop();
// }
// else
// {
// next();
// }
// }
// else
// {
// next();
// }
// }
// catch (Exception ex)
// {
// logger.Info($"检查是否自动退出循环异常:{ex.Message}");
// next();
// }
// }
// });
// }
// base.OnInitialized();
// }
public void Dispose() public void Dispose()
{ {
timer?.Dispose(); timer?.Dispose();
@ -403,4 +471,20 @@
new DialogOptions() { Width = "55vw", Resizable = false, Draggable = false, ShowClose = false, ShowTitle = false }); new DialogOptions() { Width = "55vw", Resizable = false, Draggable = false, ShowClose = false, ShowTitle = false });
} }
async void LanguageClick(object item)
{
string culture = string.Empty;// new System.Globalization.CultureInfo(item.Value);
switch (item.ToString())
{
case "简体中文":
culture = "zh-CN";
break;
case "English":
culture = "en-US";
break;
}
await I18nText.SetCurrentLanguageAsync(culture);
}
} }

View File

@ -8,7 +8,7 @@
<RadzenStack AlignItems="AlignItems.Center" Gap="2rem" class="rz-p-12"> <RadzenStack AlignItems="AlignItems.Center" Gap="2rem" class="rz-p-12">
<RadzenImage Path="images/community.svg" Style="width: 200px;" AlternateText="community" /> <RadzenImage Path="images/community.svg" Style="width: 200px;" AlternateText="community" />
<RadzenText TextStyle="TextStyle.H6">加载程序必要连接中,请稍等。。。</RadzenText> <RadzenText TextStyle="TextStyle.H6">@myText.Loading</RadzenText>
<RadzenText TextStyle="TextStyle.H6">@msg</RadzenText> <RadzenText TextStyle="TextStyle.H6">@msg</RadzenText>
<RadzenText TextStyle="TextStyle.H6">@errMsg</RadzenText> <RadzenText TextStyle="TextStyle.H6">@errMsg</RadzenText>
</RadzenStack> </RadzenStack>
@ -22,6 +22,8 @@
@inject GlobalStateService globalStateService; @inject GlobalStateService globalStateService;
@inject IOptions<PortConfig> portSetting; @inject IOptions<PortConfig> portSetting;
@inject Toolbelt.Blazor.I18nText.I18nText I18nText;
private I18nText.local myText = new I18nText.local();
string msg; string msg;
string errMsg; string errMsg;
@ -31,7 +33,7 @@
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
myText = await I18nText.GetTextTableAsync<I18nText.local>(this);
base.OnInitializedAsync(); base.OnInitializedAsync();
} }
@ -42,69 +44,69 @@
if (firstRender) if (firstRender)
{ {
await Task.Delay(15); await Task.Delay(15);
msg = "开始连接指纹模块"; msg = myText.ConnectFinger;
InvokeAsync(StateHasChanged); InvokeAsync(StateHasChanged);
try try
{ {
bool flag=await FingerprintUtil.ConnectionMain(); bool flag=await FingerprintUtil.ConnectionMain();
if (flag) if (flag)
{ {
msg = "指纹模块连接成功"; msg = myText.FingerConnected;
} }
else else
{ {
msg = "指纹模块连接失败"; msg = myText.FingerFailed;
} }
InvokeAsync(StateHasChanged); InvokeAsync(StateHasChanged);
} catch (Exception e) } catch (Exception e)
{ {
msg = "指纹模块连接失败"; msg = myText.FingerFailed;
errMsg += "【指纹模块连接失败】"; errMsg += "【" + myText .FingerFailed+ "】";
InvokeAsync(StateHasChanged); InvokeAsync(StateHasChanged);
} }
await Task.Delay(500); await Task.Delay(500);
msg = "开始连接抽屉串口"; msg = myText.ConnectDrawer;
InvokeAsync(StateHasChanged); InvokeAsync(StateHasChanged);
try try
{ {
PortUtil.drawerSerial.Open(); PortUtil.drawerSerial.Open();
logger.Info($"抽屉串口打开结果【{PortUtil.drawerSerial.IsOpen}】"); logger.Info($"抽屉串口打开结果【{PortUtil.drawerSerial.IsOpen}】");
msg = "抽屉串口连接成功"; msg = myText.DrawerConnected;
InvokeAsync(StateHasChanged); InvokeAsync(StateHasChanged);
} catch (Exception e) } catch (Exception e)
{ {
msg = "抽屉串口连接失败"; msg = myText.DrawerFailed;
errMsg += "【抽屉串口连接失败】"; errMsg += "【"+myText.DrawerFailed+"】";
InvokeAsync(StateHasChanged); InvokeAsync(StateHasChanged);
} }
await Task.Delay(500); await Task.Delay(500);
msg = "开始连接CanBus模块"; msg = myText.ConnectCan;
InvokeAsync(StateHasChanged); InvokeAsync(StateHasChanged);
try try
{ {
PortUtil.canBusSerial.Open(); PortUtil.canBusSerial.Open();
logger.Info($"CanBus模块打开结果【{PortUtil.canBusSerial.IsOpen}】"); logger.Info($"CanBus模块打开结果【{PortUtil.canBusSerial.IsOpen}】");
msg = "CanBus模块连接成功"; msg = myText.CanConnected;
InvokeAsync(StateHasChanged); InvokeAsync(StateHasChanged);
} catch (Exception e) } catch (Exception e)
{ {
msg = "CanBus模块连接失败"; msg = myText.CanFailed;
errMsg += "【CanBus模块连接失败】"; errMsg += "【"+myText.CanFailed+"】";
InvokeAsync(StateHasChanged); InvokeAsync(StateHasChanged);
} }
await Task.Delay(500); await Task.Delay(500);
msg = "开始连接条码扫描模块"; msg = myText.ConnectScanCode;
InvokeAsync(StateHasChanged); InvokeAsync(StateHasChanged);
try try
{ {
PortUtil.scanCodeSerial.Open(); PortUtil.scanCodeSerial.Open();
logger.Info($"条码扫描模块打开结果【{PortUtil.scanCodeSerial.IsOpen}】"); logger.Info($"条码扫描模块打开结果【{PortUtil.scanCodeSerial.IsOpen}】");
msg = "条码扫描模块连接成功"; msg = myText.ScanCodeConnected;
InvokeAsync(StateHasChanged); InvokeAsync(StateHasChanged);
} catch (Exception e) } catch (Exception e)
{ {
msg = "条码扫描模块连接失败"; msg = myText.ScanCodeFailed;
errMsg += "【条码扫描模块连接失败】"; errMsg += "【" + myText.ScanCodeFailed + "】";
InvokeAsync(StateHasChanged); InvokeAsync(StateHasChanged);
} }
if (portSetting.Value.fridgePortExist) if (portSetting.Value.fridgePortExist)
@ -113,13 +115,13 @@
{ {
PortUtil.fridgeSerial.Open(); PortUtil.fridgeSerial.Open();
logger.Info($"冰箱串口打开结果【{PortUtil.fridgeSerial.IsOpen}】"); logger.Info($"冰箱串口打开结果【{PortUtil.fridgeSerial.IsOpen}】");
msg = "冰箱串口连接成功"; msg = myText.FridgeConnected;
InvokeAsync(StateHasChanged); InvokeAsync(StateHasChanged);
} }
catch (Exception) catch (Exception)
{ {
msg = "冰箱串口打开失败"; msg = myText.FridgeFailed;
errMsg += "【冰箱串口打开失败】"; errMsg += "【"+ myText.FridgeFailed+"】";
InvokeAsync(StateHasChanged); InvokeAsync(StateHasChanged);
} }
} }

View File

@ -6,11 +6,11 @@
<div class="col-12 mb-4"> <div class="col-12 mb-4">
<form onsubmit="@(() => grid.Reload())"> <form onsubmit="@(() => grid.Reload())">
<RadzenFieldset Text="查询"> <RadzenFieldset Text="@myText.Search">
<RadzenStack Orientation="Orientation.Horizontal" Gap="1rem"> <RadzenStack Orientation="Orientation.Horizontal" Gap="1rem">
<RadzenRow AlignItems="AlignItems.Center"> <RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="4"> <RadzenColumn Size="4">
<RadzenLabel Text="单据号" Component="InvoiceNo" /> <RadzenLabel Text="@myText.InvoiceNo" Component="InvoiceNo" />
</RadzenColumn> </RadzenColumn>
<RadzenColumn Size="8"> <RadzenColumn Size="8">
<RadzenTextBox @bind-Value="InvoiceNo" Style="width: 100%;" Name="InvoiceNo"></RadzenTextBox> <RadzenTextBox @bind-Value="InvoiceNo" Style="width: 100%;" Name="InvoiceNo"></RadzenTextBox>
@ -18,7 +18,7 @@
</RadzenRow> </RadzenRow>
<RadzenRow AlignItems="AlignItems.Center"> <RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="4"> <RadzenColumn Size="4">
<RadzenLabel Text="请领日期" Component="InvoiceDate" /> <RadzenLabel Text="@myText.ApplyDate" Component="InvoiceDate" />
</RadzenColumn> </RadzenColumn>
<RadzenColumn Size="8"> <RadzenColumn Size="8">
<RadzenDatePicker DateFormat="yyyy-MM-dd" CurrentDateChanged="@OnCurrentDateChanged" @bind-Value="InvoiceDate" Style="width: 100%;" Name="InvoiceDate" /> <RadzenDatePicker DateFormat="yyyy-MM-dd" CurrentDateChanged="@OnCurrentDateChanged" @bind-Value="InvoiceDate" Style="width: 100%;" Name="InvoiceDate" />
@ -27,8 +27,8 @@
<RadzenRow AlignItems="AlignItems.Center"> <RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="12"> <RadzenColumn Size="12">
<RadzenButton Size="ButtonSize.Large" ButtonType="ButtonType.Submit" IsBusy="isLoading" Icon="search" Text="查询" /> <RadzenButton Size="ButtonSize.Large" ButtonType="ButtonType.Submit" IsBusy="isLoading" Icon="search" Text="@myText.Search" />
<RadzenButton Size="ButtonSize.Large" Click="reloadGrid" IsBusy="isLoading" Icon="refresh" Text="重置" ButtonStyle="ButtonStyle.Warning" /> <RadzenButton Size="ButtonSize.Large" Click="reloadGrid" IsBusy="isLoading" Icon="refresh" Text="@myText.Restore" ButtonStyle="ButtonStyle.Warning" />
</RadzenColumn> </RadzenColumn>
</RadzenRow> </RadzenRow>
</RadzenStack> </RadzenStack>
@ -42,16 +42,16 @@
RowSelect="@((InOutInvoice oi) => { InvoiceSelected(oi); })" RowSelect="@((InOutInvoice oi) => { InvoiceSelected(oi); })"
IsLoading="@isLoading" IsLoading="@isLoading"
Count="@count" Count="@count"
EmptyText="无数据" EmptyText="@myText.NoDate"
Data="@_forecasts" Data="@_forecasts"
AllowColumnResize="true" AllowAlternatingRows="false" AllowColumnResize="true" AllowAlternatingRows="false"
SelectionMode="DataGridSelectionMode.Single" SelectionMode="DataGridSelectionMode.Single"
AllowPaging="true" PageSize="10" PagerHorizontalAlign="HorizontalAlign.Left" ShowPagingSummary="true" PagingSummaryFormat="{0}/{1} ¹²{2}ÌõÊý¾Ý"> AllowPaging="true" PageSize="10" PagerHorizontalAlign="HorizontalAlign.Left" ShowPagingSummary="true" PagingSummaryFormat="{0}/{1} ¹²{2}ÌõÊý¾Ý">
<Columns> <Columns>
<RadzenDataGridColumn Frozen="true" Title="单据号" Property="InvoiceNo"></RadzenDataGridColumn> <RadzenDataGridColumn Frozen="true" Title="@myText.InvoiceNo" Property="InvoiceNo"></RadzenDataGridColumn>
<RadzenDataGridColumn Width="170px" Title="时间" Property="InvoiceDate"></RadzenDataGridColumn> <RadzenDataGridColumn Width="170px" Title="@myText.Date" Property="InvoiceDate"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="请领药房" Property="InPharmacyId"></RadzenDataGridColumn> <RadzenDataGridColumn Title="@myText.ApplyPharmacy" Property="InPharmacyId"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="出库药房" Property="OutPharmacyId"></RadzenDataGridColumn> <RadzenDataGridColumn Title="@myText.SendPharamacy" Property="OutPharmacyId"></RadzenDataGridColumn>
</Columns> </Columns>
</RadzenDataGrid> </RadzenDataGrid>
</div> </div>
@ -61,13 +61,19 @@
@code { @code {
@inject IInOutInvoiceDao inOutInvoiceDao; @inject IInOutInvoiceDao inOutInvoiceDao;
@inject DialogService dialogService; @inject DialogService dialogService;
@inject Toolbelt.Blazor.I18nText.I18nText I18nText;
private I18nText.local myText = new I18nText.local();
RadzenDataGrid<InOutInvoice> grid; RadzenDataGrid<InOutInvoice> grid;
bool isLoading; bool isLoading;
int count; int count;
private IEnumerable<InOutInvoice>? _forecasts; private IEnumerable<InOutInvoice>? _forecasts;
string InvoiceNo; string InvoiceNo;
DateTime InvoiceDate = DateTime.MinValue; DateTime InvoiceDate = DateTime.MinValue;
protected override async Task OnInitializedAsync()
{
myText = await I18nText.GetTextTableAsync<I18nText.local>(this);
base.OnInitializedAsync();
}
void OnCurrentDateChanged(DateTime args) void OnCurrentDateChanged(DateTime args)
{ {
InvoiceDate = new DateTime(args.Year, args.Month, args.Day); InvoiceDate = new DateTime(args.Year, args.Month, args.Day);
@ -97,7 +103,7 @@
{ {
var b = await dialogService.OpenAsync<InvoiceAddDialog>( var b = await dialogService.OpenAsync<InvoiceAddDialog>(
$"调拨入库详情", myText.InvoiceInDetail,
new Dictionary<string, object>() { { "invoice", oi } }, new Dictionary<string, object>() { { "invoice", oi } },
new DialogOptions() { Width = "85vw", Resizable = true, Draggable = true, ShowClose = false } new DialogOptions() { Width = "85vw", Resizable = true, Draggable = true, ShowClose = false }
); );

View File

@ -6,11 +6,11 @@
<div class="col-12 mb-4"> <div class="col-12 mb-4">
<form onsubmit="@(() => grid.Reload())"> <form onsubmit="@(() => grid.Reload())">
<RadzenFieldset Text="查询"> <RadzenFieldset Text="@myText.Search">
<RadzenStack Orientation="Orientation.Horizontal" Gap="1rem"> <RadzenStack Orientation="Orientation.Horizontal" Gap="1rem">
<RadzenRow AlignItems="AlignItems.Center"> <RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="4"> <RadzenColumn Size="4">
<RadzenLabel Text="单据号" Component="InvoiceNo" /> <RadzenLabel Text="@myText.InvoiceNo" Component="InvoiceNo" />
</RadzenColumn> </RadzenColumn>
<RadzenColumn Size="8"> <RadzenColumn Size="8">
<RadzenTextBox @bind-Value="InvoiceNo" Style="width: 100%;" Name="InvoiceNo"></RadzenTextBox> <RadzenTextBox @bind-Value="InvoiceNo" Style="width: 100%;" Name="InvoiceNo"></RadzenTextBox>
@ -18,7 +18,7 @@
</RadzenRow> </RadzenRow>
<RadzenRow AlignItems="AlignItems.Center"> <RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="4"> <RadzenColumn Size="4">
<RadzenLabel Text="请领日期" Component="InvoiceDate" /> <RadzenLabel Text="@myText.ApplyDate" Component="InvoiceDate" />
</RadzenColumn> </RadzenColumn>
<RadzenColumn Size="8"> <RadzenColumn Size="8">
<RadzenDatePicker DateFormat="yyyy-MM-dd" CurrentDateChanged="@OnCurrentDateChanged" @bind-Value="InvoiceDate" Style="width: 100%;" Name="InvoiceDate" /> <RadzenDatePicker DateFormat="yyyy-MM-dd" CurrentDateChanged="@OnCurrentDateChanged" @bind-Value="InvoiceDate" Style="width: 100%;" Name="InvoiceDate" />
@ -27,8 +27,8 @@
<RadzenRow AlignItems="AlignItems.Center"> <RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="12"> <RadzenColumn Size="12">
<RadzenButton Size="ButtonSize.Medium" ButtonType="ButtonType.Submit" IsBusy="isLoading" Icon="search" Text="查询" /> <RadzenButton Size="ButtonSize.Medium" ButtonType="ButtonType.Submit" IsBusy="isLoading" Icon="search" Text="@myText.Search" />
<RadzenButton Size="ButtonSize.Medium" Click="reloadGrid" IsBusy="isLoading" Icon="refresh" Text="重置" ButtonStyle="ButtonStyle.Warning" /> <RadzenButton Size="ButtonSize.Medium" Click="reloadGrid" IsBusy="isLoading" Icon="refresh" Text="@myText.Restore" ButtonStyle="ButtonStyle.Warning" />
</RadzenColumn> </RadzenColumn>
</RadzenRow> </RadzenRow>
</RadzenStack> </RadzenStack>
@ -42,16 +42,16 @@
RowSelect="@((InOutInvoice oi) => { InvoiceSelected(oi); })" RowSelect="@((InOutInvoice oi) => { InvoiceSelected(oi); })"
IsLoading="@isLoading" IsLoading="@isLoading"
Count="@count" Count="@count"
EmptyText="无数据" EmptyText="@myText.NoDate"
Data="@_forecasts" Data="@_forecasts"
AllowColumnResize="true" AllowAlternatingRows="false" AllowColumnResize="true" AllowAlternatingRows="false"
SelectionMode="DataGridSelectionMode.Single" SelectionMode="DataGridSelectionMode.Single"
AllowPaging="true" PageSize="10" PagerHorizontalAlign="HorizontalAlign.Left" ShowPagingSummary="true" PagingSummaryFormat="{0}/{1} ¹²{2}ÌõÊý¾Ý"> AllowPaging="true" PageSize="10" PagerHorizontalAlign="HorizontalAlign.Left" ShowPagingSummary="true" PagingSummaryFormat="{0}/{1} ¹²{2}ÌõÊý¾Ý">
<Columns> <Columns>
<RadzenDataGridColumn Frozen="true" Title="单据号" Property="InvoiceNo"></RadzenDataGridColumn> <RadzenDataGridColumn Frozen="true" Title="@myText.InvoiceNo" Property="InvoiceNo"></RadzenDataGridColumn>
<RadzenDataGridColumn Width="170px" Title="时间" Property="InvoiceDate"></RadzenDataGridColumn> <RadzenDataGridColumn Width="170px" Title="@myText.Date" Property="InvoiceDate"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="请领药房" Property="InPharmacyId"></RadzenDataGridColumn> <RadzenDataGridColumn Title="@myText.ApplyPharmacy" Property="InPharmacyId"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="出库药房" Property="OutPharmacyId"></RadzenDataGridColumn> <RadzenDataGridColumn Title="@myText.SendPharamacy" Property="OutPharmacyId"></RadzenDataGridColumn>
</Columns> </Columns>
</RadzenDataGrid> </RadzenDataGrid>
</div> </div>
@ -61,6 +61,8 @@
@code { @code {
@inject IInOutInvoiceDao inOutInvoiceDao; @inject IInOutInvoiceDao inOutInvoiceDao;
@inject DialogService dialogService; @inject DialogService dialogService;
@inject Toolbelt.Blazor.I18nText.I18nText I18nText;
private I18nText.local myText = new I18nText.local();
RadzenDataGrid<InOutInvoice> grid; RadzenDataGrid<InOutInvoice> grid;
bool isLoading; bool isLoading;
int count; int count;
@ -68,6 +70,11 @@
string InvoiceNo; string InvoiceNo;
DateTime InvoiceDate = DateTime.MinValue; DateTime InvoiceDate = DateTime.MinValue;
protected override async Task OnInitializedAsync()
{
myText = await I18nText.GetTextTableAsync<I18nText.local>(this);
base.OnInitializedAsync();
}
void OnCurrentDateChanged(DateTime args) void OnCurrentDateChanged(DateTime args)
{ {
InvoiceDate = new DateTime(args.Year, args.Month, args.Day); InvoiceDate = new DateTime(args.Year, args.Month, args.Day);
@ -97,7 +104,7 @@
{ {
var b = await dialogService.OpenAsync<InvoiceOutDialog>( var b = await dialogService.OpenAsync<InvoiceOutDialog>(
$"调拨出库详情", myText.InvoiceDetail,
new Dictionary<string, object>() { { "invoice", oi } }, new Dictionary<string, object>() { { "invoice", oi } },
new DialogOptions() { Width = "85vw", Resizable = true, Draggable = true, ShowClose = false } new DialogOptions() { Width = "85vw", Resizable = true, Draggable = true, ShowClose = false }
); );

View File

@ -17,37 +17,37 @@
<RadzenCard class="rz-shadow-0 rz-border-radius-0 rz-text-align-center rz-p-12 align-items-center justify-content-center" Style="height: 100%; background: var(--rz-primary-light) no-repeat 100% 70% fixed url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIwNCIgaGVpZ2h0PSIxNDU4IiB2aWV3Qm94PSIwIDAgMTIwNCAxNDU4IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8ZyBvcGFjaXR5PSIwLjUiIGZpbHRlcj0idXJsKCNmaWx0ZXIwX2ZfNDkzXzEwMTM0KSI+CjxjaXJjbGUgY3g9IjcyMi4xMjgiIGN5PSI4MzkuMDIiIHI9IjQ4MS40MTkiIGZpbGw9InVybCgjcGFpbnQwX3JhZGlhbF80OTNfMTAxMzQpIi8+CjwvZz4KPGcgb3BhY2l0eT0iMC41IiBmaWx0ZXI9InVybCgjZmlsdGVyMV9mXzQ5M18xMDEzNCkiPgo8Y2lyY2xlIGN4PSI0NzAuMzMzIiBjeT0iNTcwLjMzMyIgcj0iNDcwLjMzMyIgZmlsbD0idXJsKCNwYWludDFfcmFkaWFsXzQ5M18xMDEzNCkiLz4KPC9nPgo8ZyBvcGFjaXR5PSIwLjUiIGZpbHRlcj0idXJsKCNmaWx0ZXIyX2ZfNDkzXzEwMTM0KSI+CjxjaXJjbGUgY3g9IjY5MS41MTEiIGN5PSI1MjIuMjk3IiByPSIzMzEuNTAzIiBmaWxsPSJ1cmwoI3BhaW50Ml9yYWRpYWxfNDkzXzEwMTM0KSIvPgo8L2c+CjxnIG9wYWNpdHk9IjAuNSIgZmlsdGVyPSJ1cmwoI2ZpbHRlcjNfZl80OTNfMTAxMzQpIj4KPGNpcmNsZSBjeD0iNjA4LjI0NCIgY3k9IjEwNzkuOTciIHI9IjMzMS41MDMiIHRyYW5zZm9ybT0icm90YXRlKC04MS4yMjQ0IDYwOC4yNDQgMTA3OS45NykiIGZpbGw9InVybCgjcGFpbnQzX3JhZGlhbF80OTNfMTAxMzQpIi8+CjwvZz4KPGRlZnM+CjxmaWx0ZXIgaWQ9ImZpbHRlcjBfZl80OTNfMTAxMzQiIHg9IjE0MC43MDkiIHk9IjI1Ny42MDEiIHdpZHRoPSIxMTYyLjg0IiBoZWlnaHQ9IjExNjIuODQiIGZpbHRlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPSJzUkdCIj4KPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT0iMCIgcmVzdWx0PSJCYWNrZ3JvdW5kSW1hZ2VGaXgiLz4KPGZlQmxlbmQgbW9kZT0ibm9ybWFsIiBpbj0iU291cmNlR3JhcGhpYyIgaW4yPSJCYWNrZ3JvdW5kSW1hZ2VGaXgiIHJlc3VsdD0ic2hhcGUiLz4KPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iNTAiIHJlc3VsdD0iZWZmZWN0MV9mb3JlZ3JvdW5kQmx1cl80OTNfMTAxMzQiLz4KPC9maWx0ZXI+CjxmaWx0ZXIgaWQ9ImZpbHRlcjFfZl80OTNfMTAxMzQiIHg9Ii0xMDAiIHk9IjAiIHdpZHRoPSIxMTQwLjY3IiBoZWlnaHQ9IjExNDAuNjciIGZpbHRlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPSJzUkdCIj4KPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT0iMCIgcmVzdWx0PSJCYWNrZ3JvdW5kSW1hZ2VGaXgiLz4KPGZlQmxlbmQgbW9kZT0ibm9ybWFsIiBpbj0iU291cmNlR3JhcGhpYyIgaW4yPSJCYWNrZ3JvdW5kSW1hZ2VGaXgiIHJlc3VsdD0ic2hhcGUiLz4KPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iNTAiIHJlc3VsdD0iZWZmZWN0MV9mb3JlZ3JvdW5kQmx1cl80OTNfMTAxMzQiLz4KPC9maWx0ZXI+CjxmaWx0ZXIgaWQ9ImZpbHRlcjJfZl80OTNfMTAxMzQiIHg9IjI2MC4wMDgiIHk9IjkwLjc5MzkiIHdpZHRoPSI4NjMuMDA2IiBoZWlnaHQ9Ijg2My4wMDYiIGZpbHRlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPSJzUkdCIj4KPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT0iMCIgcmVzdWx0PSJCYWNrZ3JvdW5kSW1hZ2VGaXgiLz4KPGZlQmxlbmQgbW9kZT0ibm9ybWFsIiBpbj0iU291cmNlR3JhcGhpYyIgaW4yPSJCYWNrZ3JvdW5kSW1hZ2VGaXgiIHJlc3VsdD0ic2hhcGUiLz4KPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iNTAiIHJlc3VsdD0iZWZmZWN0MV9mb3JlZ3JvdW5kQmx1cl80OTNfMTAxMzQiLz4KPC9maWx0ZXI+CjxmaWx0ZXIgaWQ9ImZpbHRlcjNfZl80OTNfMTAxMzQiIHg9IjE3Ni42OTQiIHk9IjY0OC40MjMiIHdpZHRoPSI4NjMuMSIgaGVpZ2h0PSI4NjMuMSIgZmlsdGVyVW5pdHM9InVzZXJTcGFjZU9uVXNlIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9InNSR0IiPgo8ZmVGbG9vZCBmbG9vZC1vcGFjaXR5PSIwIiByZXN1bHQ9IkJhY2tncm91bmRJbWFnZUZpeCIvPgo8ZmVCbGVuZCBtb2RlPSJub3JtYWwiIGluPSJTb3VyY2VHcmFwaGljIiBpbjI9IkJhY2tncm91bmRJbWFnZUZpeCIgcmVzdWx0PSJzaGFwZSIvPgo8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSI1MCIgcmVzdWx0PSJlZmZlY3QxX2ZvcmVncm91bmRCbHVyXzQ5M18xMDEzNCIvPgo8L2ZpbHRlcj4KPHJhZGlhbEdyYWRpZW50IGlkPSJwYWludDBfcmFkaWFsXzQ5M18xMDEzNCIgY3g9IjAiIGN5PSIwIiByPSIxIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSg3MjIuMTI4IDgzOS4wMikgcm90YXRlKDkwKSBzY2FsZSg0ODEuNDE5KSI+CjxzdG9wIHN0b3AtY29sb3I9IiNGRjFBNkMiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjRkYxQTZDIiBzdG9wLW9wYWNpdHk9IjAiLz4KPC9yYWRpYWxHcmFkaWVudD4KPHJhZGlhbEdyYWRpZW50IGlkPSJwYWludDFfcmFkaWFsXzQ5M18xMDEzNCIgY3g9IjAiIGN5PSIwIiByPSIxIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSg0NzAuMzMzIDU3MC4zMzMpIHJvdGF0ZSg5MCkgc2NhbGUoNDcwLjMzMykiPgo8c3RvcCBzdG9wLWNvbG9yPSIjM0FBQ0ZGIi8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzNBOTVGRiIgc3RvcC1vcGFjaXR5PSIwIi8+CjwvcmFkaWFsR3JhZGllbnQ+CjxyYWRpYWxHcmFkaWVudCBpZD0icGFpbnQyX3JhZGlhbF80OTNfMTAxMzQiIGN4PSIwIiBjeT0iMCIgcj0iMSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjkxLjUxMSA1MjIuMjk3KSByb3RhdGUoOTApIHNjYWxlKDMzMS41MDMpIj4KPHN0b3Agc3RvcC1jb2xvcj0iIzQ4M0FGRiIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM0ODNBRkYiIHN0b3Atb3BhY2l0eT0iMCIvPgo8L3JhZGlhbEdyYWRpZW50Pgo8cmFkaWFsR3JhZGllbnQgaWQ9InBhaW50M19yYWRpYWxfNDkzXzEwMTM0IiBjeD0iMCIgY3k9IjAiIHI9IjEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDYwOC4yNDQgMTA3OS45Nykgcm90YXRlKDkwKSBzY2FsZSgzMzEuNTAzKSI+CjxzdG9wIHN0b3AtY29sb3I9IiNGRkM4M0EiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjRkZDODNBIiBzdG9wLW9wYWNpdHk9IjAiLz4KPC9yYWRpYWxHcmFkaWVudD4KPC9kZWZzPgo8L3N2Zz4K')"> <RadzenCard class="rz-shadow-0 rz-border-radius-0 rz-text-align-center rz-p-12 align-items-center justify-content-center" Style="height: 100%; background: var(--rz-primary-light) no-repeat 100% 70% fixed url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIwNCIgaGVpZ2h0PSIxNDU4IiB2aWV3Qm94PSIwIDAgMTIwNCAxNDU4IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8ZyBvcGFjaXR5PSIwLjUiIGZpbHRlcj0idXJsKCNmaWx0ZXIwX2ZfNDkzXzEwMTM0KSI+CjxjaXJjbGUgY3g9IjcyMi4xMjgiIGN5PSI4MzkuMDIiIHI9IjQ4MS40MTkiIGZpbGw9InVybCgjcGFpbnQwX3JhZGlhbF80OTNfMTAxMzQpIi8+CjwvZz4KPGcgb3BhY2l0eT0iMC41IiBmaWx0ZXI9InVybCgjZmlsdGVyMV9mXzQ5M18xMDEzNCkiPgo8Y2lyY2xlIGN4PSI0NzAuMzMzIiBjeT0iNTcwLjMzMyIgcj0iNDcwLjMzMyIgZmlsbD0idXJsKCNwYWludDFfcmFkaWFsXzQ5M18xMDEzNCkiLz4KPC9nPgo8ZyBvcGFjaXR5PSIwLjUiIGZpbHRlcj0idXJsKCNmaWx0ZXIyX2ZfNDkzXzEwMTM0KSI+CjxjaXJjbGUgY3g9IjY5MS41MTEiIGN5PSI1MjIuMjk3IiByPSIzMzEuNTAzIiBmaWxsPSJ1cmwoI3BhaW50Ml9yYWRpYWxfNDkzXzEwMTM0KSIvPgo8L2c+CjxnIG9wYWNpdHk9IjAuNSIgZmlsdGVyPSJ1cmwoI2ZpbHRlcjNfZl80OTNfMTAxMzQpIj4KPGNpcmNsZSBjeD0iNjA4LjI0NCIgY3k9IjEwNzkuOTciIHI9IjMzMS41MDMiIHRyYW5zZm9ybT0icm90YXRlKC04MS4yMjQ0IDYwOC4yNDQgMTA3OS45NykiIGZpbGw9InVybCgjcGFpbnQzX3JhZGlhbF80OTNfMTAxMzQpIi8+CjwvZz4KPGRlZnM+CjxmaWx0ZXIgaWQ9ImZpbHRlcjBfZl80OTNfMTAxMzQiIHg9IjE0MC43MDkiIHk9IjI1Ny42MDEiIHdpZHRoPSIxMTYyLjg0IiBoZWlnaHQ9IjExNjIuODQiIGZpbHRlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPSJzUkdCIj4KPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT0iMCIgcmVzdWx0PSJCYWNrZ3JvdW5kSW1hZ2VGaXgiLz4KPGZlQmxlbmQgbW9kZT0ibm9ybWFsIiBpbj0iU291cmNlR3JhcGhpYyIgaW4yPSJCYWNrZ3JvdW5kSW1hZ2VGaXgiIHJlc3VsdD0ic2hhcGUiLz4KPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iNTAiIHJlc3VsdD0iZWZmZWN0MV9mb3JlZ3JvdW5kQmx1cl80OTNfMTAxMzQiLz4KPC9maWx0ZXI+CjxmaWx0ZXIgaWQ9ImZpbHRlcjFfZl80OTNfMTAxMzQiIHg9Ii0xMDAiIHk9IjAiIHdpZHRoPSIxMTQwLjY3IiBoZWlnaHQ9IjExNDAuNjciIGZpbHRlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPSJzUkdCIj4KPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT0iMCIgcmVzdWx0PSJCYWNrZ3JvdW5kSW1hZ2VGaXgiLz4KPGZlQmxlbmQgbW9kZT0ibm9ybWFsIiBpbj0iU291cmNlR3JhcGhpYyIgaW4yPSJCYWNrZ3JvdW5kSW1hZ2VGaXgiIHJlc3VsdD0ic2hhcGUiLz4KPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iNTAiIHJlc3VsdD0iZWZmZWN0MV9mb3JlZ3JvdW5kQmx1cl80OTNfMTAxMzQiLz4KPC9maWx0ZXI+CjxmaWx0ZXIgaWQ9ImZpbHRlcjJfZl80OTNfMTAxMzQiIHg9IjI2MC4wMDgiIHk9IjkwLjc5MzkiIHdpZHRoPSI4NjMuMDA2IiBoZWlnaHQ9Ijg2My4wMDYiIGZpbHRlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPSJzUkdCIj4KPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT0iMCIgcmVzdWx0PSJCYWNrZ3JvdW5kSW1hZ2VGaXgiLz4KPGZlQmxlbmQgbW9kZT0ibm9ybWFsIiBpbj0iU291cmNlR3JhcGhpYyIgaW4yPSJCYWNrZ3JvdW5kSW1hZ2VGaXgiIHJlc3VsdD0ic2hhcGUiLz4KPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iNTAiIHJlc3VsdD0iZWZmZWN0MV9mb3JlZ3JvdW5kQmx1cl80OTNfMTAxMzQiLz4KPC9maWx0ZXI+CjxmaWx0ZXIgaWQ9ImZpbHRlcjNfZl80OTNfMTAxMzQiIHg9IjE3Ni42OTQiIHk9IjY0OC40MjMiIHdpZHRoPSI4NjMuMSIgaGVpZ2h0PSI4NjMuMSIgZmlsdGVyVW5pdHM9InVzZXJTcGFjZU9uVXNlIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9InNSR0IiPgo8ZmVGbG9vZCBmbG9vZC1vcGFjaXR5PSIwIiByZXN1bHQ9IkJhY2tncm91bmRJbWFnZUZpeCIvPgo8ZmVCbGVuZCBtb2RlPSJub3JtYWwiIGluPSJTb3VyY2VHcmFwaGljIiBpbjI9IkJhY2tncm91bmRJbWFnZUZpeCIgcmVzdWx0PSJzaGFwZSIvPgo8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSI1MCIgcmVzdWx0PSJlZmZlY3QxX2ZvcmVncm91bmRCbHVyXzQ5M18xMDEzNCIvPgo8L2ZpbHRlcj4KPHJhZGlhbEdyYWRpZW50IGlkPSJwYWludDBfcmFkaWFsXzQ5M18xMDEzNCIgY3g9IjAiIGN5PSIwIiByPSIxIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSg3MjIuMTI4IDgzOS4wMikgcm90YXRlKDkwKSBzY2FsZSg0ODEuNDE5KSI+CjxzdG9wIHN0b3AtY29sb3I9IiNGRjFBNkMiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjRkYxQTZDIiBzdG9wLW9wYWNpdHk9IjAiLz4KPC9yYWRpYWxHcmFkaWVudD4KPHJhZGlhbEdyYWRpZW50IGlkPSJwYWludDFfcmFkaWFsXzQ5M18xMDEzNCIgY3g9IjAiIGN5PSIwIiByPSIxIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSg0NzAuMzMzIDU3MC4zMzMpIHJvdGF0ZSg5MCkgc2NhbGUoNDcwLjMzMykiPgo8c3RvcCBzdG9wLWNvbG9yPSIjM0FBQ0ZGIi8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzNBOTVGRiIgc3RvcC1vcGFjaXR5PSIwIi8+CjwvcmFkaWFsR3JhZGllbnQ+CjxyYWRpYWxHcmFkaWVudCBpZD0icGFpbnQyX3JhZGlhbF80OTNfMTAxMzQiIGN4PSIwIiBjeT0iMCIgcj0iMSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjkxLjUxMSA1MjIuMjk3KSByb3RhdGUoOTApIHNjYWxlKDMzMS41MDMpIj4KPHN0b3Agc3RvcC1jb2xvcj0iIzQ4M0FGRiIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM0ODNBRkYiIHN0b3Atb3BhY2l0eT0iMCIvPgo8L3JhZGlhbEdyYWRpZW50Pgo8cmFkaWFsR3JhZGllbnQgaWQ9InBhaW50M19yYWRpYWxfNDkzXzEwMTM0IiBjeD0iMCIgY3k9IjAiIHI9IjEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDYwOC4yNDQgMTA3OS45Nykgcm90YXRlKDkwKSBzY2FsZSgzMzEuNTAzKSI+CjxzdG9wIHN0b3AtY29sb3I9IiNGRkM4M0EiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjRkZDODNBIiBzdG9wLW9wYWNpdHk9IjAiLz4KPC9yYWRpYWxHcmFkaWVudD4KPC9kZWZzPgo8L3N2Zz4K')">
@if (loginMode == 2) @if (loginMode == 2)
{ {
<RadzenText TextStyle="TextStyle.H6" class="rz-color-white">操作人@globalStateService.Operator?.NickName</RadzenText> <RadzenText TextStyle="TextStyle.H6" class="rz-color-white">@myText.Operator@globalStateService.Operator?.NickName</RadzenText>
<RadzenText TextStyle="TextStyle.H6" class="rz-color-white">复核人@globalStateService.Reviewer?.NickName</RadzenText> <RadzenText TextStyle="TextStyle.H6" class="rz-color-white">@myText.Checker@globalStateService.Reviewer?.NickName</RadzenText>
} }
</RadzenCard> </RadzenCard>
</RadzenColumn> </RadzenColumn>
<RadzenColumn Size="12" SizeMD="7"> <RadzenColumn Size="12" SizeMD="7">
<RadzenCard Class="rz-shadow-0 rz-border-radius-0 rz-p-12" Style="width:100%;height:100%"> <RadzenCard Class="rz-shadow-0 rz-border-radius-0 rz-p-12" Style="width:100%;height:100%">
<RadzenText TextStyle="TextStyle.H5" TagName="TagName.H2" class="rz-mb-6"> <RadzenText TextStyle="TextStyle.H5" TagName="TagName.H2" class="rz-mb-6">
登录 @myText.Login
</RadzenText> </RadzenText>
<RadzenTemplateForm Data="@loginModel" Submit="@((Pojo.User args) => { Submit(args); })" Style="width:100%;height:100%"> <RadzenTemplateForm Data="@loginModel" Submit="@((Pojo.User args) => { Submit(args); })" Style="width:100%;height:100%">
<div class="rz-form-row"> <div class="rz-form-row">
<label class="rz-label" for="username">账号</label> <label class="rz-label" for="username">@myText.Account</label>
<div class="rz-form-input-wrapper"> <div class="rz-form-input-wrapper">
<!--@onfocusin="@(() => Util.VirtualKeyboardHelper.ShowVirtualKeyboard())"--> <!--@onfocusin="@(() => Util.VirtualKeyboardHelper.ShowVirtualKeyboard())"-->
<RadzenTextBox id="username" Name="Username" @bind-Value="@loginModel.Username" Style="width:100%" /> <RadzenTextBox id="username" Name="Username" @bind-Value="@loginModel.Username" Style="width:100%" />
<RadzenRequiredValidator Component="Username" Text="请填写用户名" /> <RadzenRequiredValidator Component="Username" Text=@myText.loginTips1 />
</div> </div>
</div> </div>
<div class="rz-form-row"> <div class="rz-form-row">
<label class="rz-label" for="password">密码</label> <label class="rz-label" for="password">@myText.Password</label>
<div class="rz-form-input-wrapper"> <div class="rz-form-input-wrapper">
<RadzenPassword id="password" Name="Password" @bind-Value="@loginModel.Password" Style="width:100%" /> <RadzenPassword id="password" Name="Password" @bind-Value="@loginModel.Password" Style="width:100%" />
<RadzenRequiredValidator Component="Password" Text="请填写密码" /> <RadzenRequiredValidator Component="Password" Text=@myText.loginTips2 />
</div> </div>
</div> </div>
<div class="rz-form-row"> <div class="rz-form-row">
<label class="rz-label"></label> <label class="rz-label"></label>
<div class="rz-form-input-wrapper rz-login-buttons"> <div class="rz-form-input-wrapper rz-login-buttons">
<RadzenButton Style="background:#255dd4;color:white;width:110px" ButtonType="ButtonType.Submit" Text="登录" /> <RadzenButton Style="background:#255dd4;color:white;width:110px" ButtonType="ButtonType.Submit" Text=@myText.Login />
<RadzenButton Style="border-color:#255dd4;width:110px" Variant="Variant.Outlined" Text="取消" Click="@Exit" /> <RadzenButton Style="border-color:#255dd4;width:110px" Variant="Variant.Outlined" Text=@myText.Cancel Click="@Exit" />
</div> </div>
</div> </div>
@ -69,6 +69,8 @@
@inject Microsoft.Extensions.Options.IOptions<Pojo.Config.SettingConfig> setting; @inject Microsoft.Extensions.Options.IOptions<Pojo.Config.SettingConfig> setting;
@inject Toolbelt.Blazor.I18nText.I18nText I18nText;
private I18nText.local myText = new I18nText.local();
private readonly ILog logger = LogManager.GetLogger(typeof(LoginDialog)); private readonly ILog logger = LogManager.GetLogger(typeof(LoginDialog));
@ -81,14 +83,15 @@
private Pojo.User loginModel = new(); private Pojo.User loginModel = new();
protected override Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
myText = await I18nText.GetTextTableAsync<I18nText.local>(this);
FingerprintUtil.axCZKEM1.OnAttTransactionEx += axCZKEM1_OnAttTransactionEx; FingerprintUtil.axCZKEM1.OnAttTransactionEx += axCZKEM1_OnAttTransactionEx;
loginMode = setting.Value.loginMode; loginMode = setting.Value.loginMode;
opFirst = setting.Value.opFirst; opFirst = setting.Value.opFirst;
return base.OnInitializedAsync(); base.OnInitializedAsync();
} }
private void SetUser(Pojo.User user) private void SetUser(Pojo.User user)

View File

@ -7,7 +7,7 @@
<div class="top-row px-4"> <div class="top-row px-4">
<RadzenButton Icon="account_circle" Style="margin-left: auto;" Click="@SaveMethod"> <RadzenButton Icon="account_circle" Style="margin-left: auto;" Click="@SaveMethod">
<ChildContent> <ChildContent>
保存设置 @myText.SaveSet
</ChildContent> </ChildContent>
</RadzenButton> </RadzenButton>
</div> </div>
@ -15,11 +15,11 @@
<RadzenCard class="rz-my-6"> <RadzenCard class="rz-my-6">
<RadzenStack Orientation="Orientation.Horizontal" AlignItems="AlignItems.Start" Wrap="FlexWrap.Wrap"> <RadzenStack Orientation="Orientation.Horizontal" AlignItems="AlignItems.Start" Wrap="FlexWrap.Wrap">
<RadzenStack Orientation="Orientation.Vertical" Gap="4px"> <RadzenStack Orientation="Orientation.Vertical" Gap="4px">
登录模式 @myText.LoginMode
<RadzenRadioButtonList Value=@loginValue TValue="int" Change=@(args => loginValue = args)> <RadzenRadioButtonList Value=@loginValue TValue="int" Change=@(args => loginValue = args)>
<Items> <Items>
<RadzenRadioButtonListItem Text="单人登录" Value="1" /> <RadzenRadioButtonListItem Text="@myText.SingleLogin" Value="1" />
<RadzenRadioButtonListItem Text="双人登录" Value="2" /> <RadzenRadioButtonListItem Text="@myText.MultiLogin" Value="2" />
</Items> </Items>
</RadzenRadioButtonList> </RadzenRadioButtonList>
</RadzenStack> </RadzenStack>
@ -40,17 +40,20 @@
@inject Microsoft.Extensions.Options.IOptions<Pojo.Config.setting> setting; @inject Microsoft.Extensions.Options.IOptions<Pojo.Config.setting> setting;
@inject Microsoft.Extensions.Options.IOptions<Pojo.Config.SettingConfig> setting; @inject Microsoft.Extensions.Options.IOptions<Pojo.Config.SettingConfig> setting;
@inject NotificationService _message @inject NotificationService _message
@inject Toolbelt.Blazor.I18nText.I18nText I18nText;
@code { @code {
private I18nText.local myText = new I18nText.local();
private readonly ILog logger = LogManager.GetLogger(typeof(LoginDialog)); private readonly ILog logger = LogManager.GetLogger(typeof(LoginDialog));
int loginValue = 1; int loginValue = 1;
// int preValue = 1; // int preValue = 1;
protected override void OnInitialized() protected override async Task OnInitializedAsync()
{ {
loginValue = setting.Value.loginMode; loginValue = setting.Value.loginMode;
base.OnInitialized(); myText = await I18nText.GetTextTableAsync<I18nText.local>(this);
base.OnInitializedAsync();
} }
//保存 //保存
async Task SaveMethod() async Task SaveMethod()
@ -67,7 +70,7 @@
var options = new JsonSerializerOptions { WriteIndented = true }; var options = new JsonSerializerOptions { WriteIndented = true };
File.WriteAllText(filePath, jsonNode.ToString(Newtonsoft.Json.Formatting.Indented)); File.WriteAllText(filePath, jsonNode.ToString(Newtonsoft.Json.Formatting.Indented));
_message.Notify( _message.Notify(
new NotificationMessage { Severity = NotificationSeverity.Success, Summary = "提示", Detail = $"保存成功", Duration = 4000 } new NotificationMessage { Severity = NotificationSeverity.Success, Summary = myText.Tips, Detail = myText.LoginMode, Duration = 4000 }
); );
logger.Info($"修改用户登录设置"); logger.Info($"修改用户登录设置");
} }

View File

@ -15,7 +15,7 @@
<RadzenStack Orientation="Orientation.Horizontal" Gap="1rem"> <RadzenStack Orientation="Orientation.Horizontal" Gap="1rem">
<RadzenRow AlignItems="AlignItems.Center"> <RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="4"> <RadzenColumn Size="4">
<RadzenLabel Text="开始时间" Component="Start" /> <RadzenLabel Text="@myText.StartDate" Component="Start" />
</RadzenColumn> </RadzenColumn>
<RadzenColumn Size="8"> <RadzenColumn Size="8">
<RadzenDatePicker DateFormat="yyyy-MM-dd HH:mm:ss" ShowTime="true" @bind-Value="start" Style="width: 100%;" Name="Start" /> <RadzenDatePicker DateFormat="yyyy-MM-dd HH:mm:ss" ShowTime="true" @bind-Value="start" Style="width: 100%;" Name="Start" />
@ -23,7 +23,7 @@
</RadzenRow> </RadzenRow>
<RadzenRow AlignItems="AlignItems.Center"> <RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="4"> <RadzenColumn Size="4">
<RadzenLabel Text="结束时间" Component="End" /> <RadzenLabel Text="@myText.EndDate" Component="End" />
</RadzenColumn> </RadzenColumn>
<RadzenColumn Size="8"> <RadzenColumn Size="8">
<RadzenDatePicker DateFormat="yyyy-MM-dd HH:mm:ss" ShowTime="true" @bind-Value="end" Style="width: 100%;" Name="End" /> <RadzenDatePicker DateFormat="yyyy-MM-dd HH:mm:ss" ShowTime="true" @bind-Value="end" Style="width: 100%;" Name="End" />
@ -32,13 +32,13 @@
<RadzenRow AlignItems="AlignItems.Center"> <RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="12"> <RadzenColumn Size="12">
<RadzenButton Size="ButtonSize.Large" ButtonType="ButtonType.Submit" IsBusy="isLoading" Icon="search" Text="查询" /> <RadzenButton Size="ButtonSize.Large" ButtonType="ButtonType.Submit" IsBusy="isLoading" Icon="search" Text="@myText.Search" />
<RadzenButton Size="ButtonSize.Large" Click="reloadGrid" IsBusy="isLoading" Icon="refresh" Text="重置" ButtonStyle="ButtonStyle.Warning" /> <RadzenButton Size="ButtonSize.Large" Click="reloadGrid" IsBusy="isLoading" Icon="refresh" Text="@myText.Restore" ButtonStyle="ButtonStyle.Warning" />
</RadzenColumn> </RadzenColumn>
</RadzenRow> </RadzenRow>
<RadzenRow AlignItems="AlignItems.Center"> <RadzenRow AlignItems="AlignItems.Center">
<RadzenButton Icon="download" Text="库存导出" Variant="Variant.Outlined" Click="StockExport" /> <RadzenButton Icon="download" Text="@myText.StoreExport" Variant="Variant.Outlined" Click="StockExport" />
<RadzenButton Icon="download" Text="专用账册导出" Variant="Variant.Outlined" Click="AccountBookExport" /> <RadzenButton Icon="download" Text="@myText.AccountExport" Variant="Variant.Outlined" Click="AccountBookExport" />
</RadzenRow> </RadzenRow>
</RadzenStack> </RadzenStack>
</RadzenFieldset> </RadzenFieldset>
@ -50,24 +50,24 @@
LoadData="@LoadData" LoadData="@LoadData"
IsLoading="@isLoading" IsLoading="@isLoading"
Count="@count" Count="@count"
EmptyText="无数据" EmptyText="@myText.NoDate"
Data="@_forecasts" Data="@_forecasts"
AllowColumnResize="true" AllowAlternatingRows="false" AllowColumnResize="true" AllowAlternatingRows="false"
SelectionMode="DataGridSelectionMode.Single" SelectionMode="DataGridSelectionMode.Single"
AllowPaging="true" PageSize="10" PagerHorizontalAlign="HorizontalAlign.Left" ShowPagingSummary="true" PagingSummaryFormat="{0}/{1} ¹²{2}ÌõÊý¾Ý"> AllowPaging="true" PageSize="10" PagerHorizontalAlign="HorizontalAlign.Left" ShowPagingSummary="true" PagingSummaryFormat="{0}/{1} ¹²{2}ÌõÊý¾Ý">
<Columns> <Columns>
<RadzenDataGridColumn Frozen="true" Title="操作人" Property="OperatorUser.NickName"></RadzenDataGridColumn> <RadzenDataGridColumn Frozen="true" Title="@myText.Operator" Property="OperatorUser.NickName"></RadzenDataGridColumn>
<RadzenDataGridColumn Width="170px" Title="操作时间" Property="OperationTime"></RadzenDataGridColumn> <RadzenDataGridColumn Width="170px" Title="@myText.OperateDate" Property="OperationTime"></RadzenDataGridColumn>
<RadzenDataGridColumn Width="200px" Title="药品名称" Property="Drug.DrugName"></RadzenDataGridColumn> <RadzenDataGridColumn Width="200px" Title="@myText.DrugName" Property="Drug.DrugName"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="规格" Property="Drug.DrugSpec"></RadzenDataGridColumn> <RadzenDataGridColumn Title="@myText.Spec" Property="Drug.DrugSpec"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="数量" Property="Quantity"></RadzenDataGridColumn> <RadzenDataGridColumn Title="@myText.Quantity" Property="Quantity"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="批次" Property="ManuNo"></RadzenDataGridColumn> <RadzenDataGridColumn Title="@myText.Batch" Property="ManuNo"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="效期" Property="EffDate"> <RadzenDataGridColumn Title="@myText.Expiration" Property="EffDate">
<Template Context="mr"> <Template Context="mr">
@mr.EffDate?.ToString("yyyy-MM-dd") @mr.EffDate?.ToString("yyyy-MM-dd")
</Template> </Template>
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenDataGridColumn title="库位" Property="Location"></RadzenDataGridColumn> <RadzenDataGridColumn title="@myText.StorageLocation" Property="Location"></RadzenDataGridColumn>
</Columns> </Columns>
</RadzenDataGrid> </RadzenDataGrid>
</div> </div>
@ -79,6 +79,8 @@
@inject DialogService dialogService; @inject DialogService dialogService;
@inject NavigationManager navigate; @inject NavigationManager navigate;
@inject Toolbelt.Blazor.I18nText.I18nText I18nText;
private I18nText.local myText = new I18nText.local();
RadzenDataGrid<MachineRecord> grid; RadzenDataGrid<MachineRecord> grid;
bool isLoading; bool isLoading;
int count; int count;
@ -96,6 +98,11 @@
reloadGrid(); reloadGrid();
} }
} }
protected override async Task OnInitializedAsync()
{
myText = await I18nText.GetTextTableAsync<I18nText.local>(this);
base.OnInitializedAsync();
}
async Task LoadData(LoadDataArgs args) async Task LoadData(LoadDataArgs args)
{ {
isLoading = true; isLoading = true;

View File

@ -6,11 +6,11 @@
<div class="col-12 mb-4"> <div class="col-12 mb-4">
<form onsubmit="@(() => grid.Reload())"> <form onsubmit="@(() => grid.Reload())">
<RadzenFieldset Text="查询"> <RadzenFieldset Text="@myText.Search">
<RadzenStack Orientation="Orientation.Horizontal" Gap="1rem"> <RadzenStack Orientation="Orientation.Horizontal" Gap="1rem">
<RadzenRow AlignItems="AlignItems.Center"> <RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="4"> <RadzenColumn Size="4">
<RadzenLabel Text="处方号" Component="OrderNo" /> <RadzenLabel Text="@myText.OrderNo" Component="OrderNo" />
</RadzenColumn> </RadzenColumn>
<RadzenColumn Size="8"> <RadzenColumn Size="8">
<RadzenTextBox @bind-Value="OrderNo" Style="width: 100%;" Name="OrderNo"></RadzenTextBox> <RadzenTextBox @bind-Value="OrderNo" Style="width: 100%;" Name="OrderNo"></RadzenTextBox>
@ -18,7 +18,7 @@
</RadzenRow> </RadzenRow>
<RadzenRow AlignItems="AlignItems.Center"> <RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="4"> <RadzenColumn Size="4">
<RadzenLabel Text="处方时间" Component="OrderDate" /> <RadzenLabel Text="@myText.OrderDate" Component="OrderDate" />
</RadzenColumn> </RadzenColumn>
<RadzenColumn Size="8"> <RadzenColumn Size="8">
<RadzenDatePicker DateFormat="yyyy-MM-dd" CurrentDateChanged="@OnCurrentDateChanged" @bind-Value="OrderDate" Style="width: 100%;" Name="OrderDate" /> <RadzenDatePicker DateFormat="yyyy-MM-dd" CurrentDateChanged="@OnCurrentDateChanged" @bind-Value="OrderDate" Style="width: 100%;" Name="OrderDate" />
@ -27,8 +27,8 @@
<RadzenRow AlignItems="AlignItems.Center"> <RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="12"> <RadzenColumn Size="12">
<RadzenButton Size="ButtonSize.Medium" ButtonType="ButtonType.Submit" IsBusy="isLoading" Icon="search" Text="查询" /> <RadzenButton Size="ButtonSize.Medium" ButtonType="ButtonType.Submit" IsBusy="isLoading" Icon="search" Text="@myText.Search" />
<RadzenButton Size="ButtonSize.Medium" Click="reloadGrid" IsBusy="isLoading" Icon="refresh" Text="重置" ButtonStyle="ButtonStyle.Warning" /> <RadzenButton Size="ButtonSize.Medium" Click="reloadGrid" IsBusy="isLoading" Icon="refresh" Text="@myText.Restore" ButtonStyle="ButtonStyle.Warning" />
</RadzenColumn> </RadzenColumn>
</RadzenRow> </RadzenRow>
</RadzenStack> </RadzenStack>
@ -42,20 +42,20 @@
RowSelect="@((OrderInfo oi) => { OrderSelected(oi); })" RowSelect="@((OrderInfo oi) => { OrderSelected(oi); })"
IsLoading="@isLoading" IsLoading="@isLoading"
Count="@count" Count="@count"
EmptyText="无数据" EmptyText="@myText.NoDate"
Data="@_forecasts" Data="@_forecasts"
AllowColumnResize="true" AllowAlternatingRows="false" AllowColumnResize="true" AllowAlternatingRows="false"
SelectionMode="DataGridSelectionMode.Single" SelectionMode="DataGridSelectionMode.Single"
AllowPaging="true" PageSize="10" PagerHorizontalAlign="HorizontalAlign.Left" ShowPagingSummary="true" PagingSummaryFormat="{0}/{1} ¹²{2}ÌõÊý¾Ý"> AllowPaging="true" PageSize="10" PagerHorizontalAlign="HorizontalAlign.Left" ShowPagingSummary="true" PagingSummaryFormat="{0}/{1} ¹²{2}ÌõÊý¾Ý">
<Columns> <Columns>
<RadzenDataGridColumn Frozen="true" Title="处方号" Property="OrderNo"></RadzenDataGridColumn> <RadzenDataGridColumn Frozen="true" Title="@myText.OrderNo" Property="OrderNo"></RadzenDataGridColumn>
<RadzenDataGridColumn Width="170px" Title="开方时间" Property="OrderDate"></RadzenDataGridColumn> <RadzenDataGridColumn Width="170px" Title="@myText.OrderDate" Property="OrderDate"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="医生" Property="DoctorName"></RadzenDataGridColumn> <RadzenDataGridColumn Title="@myText.Doctor" Property="DoctorName"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="姓名" Property="PatientName"></RadzenDataGridColumn> <RadzenDataGridColumn Title="@myText.Name" Property="PatientName"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="性别" Property="Sex"></RadzenDataGridColumn> <RadzenDataGridColumn Title="@myText.Sex" Property="Sex"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="年龄" Property="Age"></RadzenDataGridColumn> <RadzenDataGridColumn Title="@myText.Age" Property="Age"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="科室" Property="DeptName"></RadzenDataGridColumn> <RadzenDataGridColumn Title="@myText.DeptName" Property="DeptName"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="诊断" Property="Disease"></RadzenDataGridColumn> <RadzenDataGridColumn Title="@myText.Diagnose" Property="Disease"></RadzenDataGridColumn>
</Columns> </Columns>
</RadzenDataGrid> </RadzenDataGrid>
</div> </div>
@ -65,6 +65,8 @@
@code { @code {
@inject IOrderInfoDao orderInfoDao; @inject IOrderInfoDao orderInfoDao;
@inject DialogService dialogService; @inject DialogService dialogService;
@inject Toolbelt.Blazor.I18nText.I18nText I18nText;
private I18nText.local myText = new I18nText.local();
RadzenDataGrid<OrderInfo> grid; RadzenDataGrid<OrderInfo> grid;
bool isLoading; bool isLoading;
int count; int count;
@ -111,6 +113,11 @@
} }
} }
protected override async Task OnInitializedAsync()
{
myText = await I18nText.GetTextTableAsync<I18nText.local>(this);
base.OnInitializedAsync();
}

View File

@ -6,11 +6,11 @@
<div class="col-12 mb-4"> <div class="col-12 mb-4">
<form onsubmit="@(() => grid.Reload())"> <form onsubmit="@(() => grid.Reload())">
<RadzenFieldset Text="查询"> <RadzenFieldset Text=@myText.Search>
<RadzenStack Orientation="Orientation.Horizontal" Gap="1rem"> <RadzenStack Orientation="Orientation.Horizontal" Gap="1rem">
<RadzenRow AlignItems="AlignItems.Center"> <RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="4"> <RadzenColumn Size="4">
<RadzenLabel Text="处方号" Component="OrderNo" /> <RadzenLabel Text=@myText.OrderNo Component="OrderNo" />
</RadzenColumn> </RadzenColumn>
<RadzenColumn Size="8"> <RadzenColumn Size="8">
<RadzenTextBox @bind-Value="OrderNo" Style="width: 100%;" Name="OrderNo"></RadzenTextBox> <RadzenTextBox @bind-Value="OrderNo" Style="width: 100%;" Name="OrderNo"></RadzenTextBox>
@ -18,7 +18,7 @@
</RadzenRow> </RadzenRow>
<RadzenRow AlignItems="AlignItems.Center"> <RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="4"> <RadzenColumn Size="4">
<RadzenLabel Text="处方时间" Component="OrderDate" /> <RadzenLabel Text=@myText.OrderDate Component="OrderDate" />
</RadzenColumn> </RadzenColumn>
<RadzenColumn Size="8"> <RadzenColumn Size="8">
<RadzenDatePicker DateFormat="yyyy-MM-dd" CurrentDateChanged="@OnCurrentDateChanged" @bind-Value="OrderDate" Style="width: 100%;" Name="OrderDate" /> <RadzenDatePicker DateFormat="yyyy-MM-dd" CurrentDateChanged="@OnCurrentDateChanged" @bind-Value="OrderDate" Style="width: 100%;" Name="OrderDate" />
@ -27,8 +27,8 @@
<RadzenRow AlignItems="AlignItems.Center"> <RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="12"> <RadzenColumn Size="12">
<RadzenButton Size="ButtonSize.Medium" ButtonType="ButtonType.Submit" IsBusy="isLoading" Icon="search" Text="查询" /> <RadzenButton Size="ButtonSize.Medium" ButtonType="ButtonType.Submit" IsBusy="isLoading" Icon="search" Text="@myText.Search" />
<RadzenButton Size="ButtonSize.Medium" Click="reloadGrid" IsBusy="isLoading" Icon="refresh" Text="重置" ButtonStyle="ButtonStyle.Warning" /> <RadzenButton Size="ButtonSize.Medium" Click="reloadGrid" IsBusy="isLoading" Icon="refresh" Text="@myText.Restore" ButtonStyle="ButtonStyle.Warning" />
</RadzenColumn> </RadzenColumn>
</RadzenRow> </RadzenRow>
</RadzenStack> </RadzenStack>
@ -42,20 +42,20 @@
RowSelect="@((OrderInfo oi) => { OrderSelected(oi); })" RowSelect="@((OrderInfo oi) => { OrderSelected(oi); })"
IsLoading="@isLoading" IsLoading="@isLoading"
Count="@count" Count="@count"
EmptyText="无数据" EmptyText="@myText.NoDate"
Data="@_forecasts" Data="@_forecasts"
AllowColumnResize="true" AllowAlternatingRows="false" AllowColumnResize="true" AllowAlternatingRows="false"
SelectionMode="DataGridSelectionMode.Single" SelectionMode="DataGridSelectionMode.Single"
AllowPaging="true" PageSize="10" PagerHorizontalAlign="HorizontalAlign.Left" ShowPagingSummary="true" PagingSummaryFormat="{0}/{1} ¹²{2}ÌõÊý¾Ý"> AllowPaging="true" PageSize="10" PagerHorizontalAlign="HorizontalAlign.Left" ShowPagingSummary="true" PagingSummaryFormat="{0}/{1} ¹²{2}ÌõÊý¾Ý">
<Columns> <Columns>
<RadzenDataGridColumn Frozen="true" Title="处方号" Property="OrderNo"></RadzenDataGridColumn> <RadzenDataGridColumn Frozen="true" Title="@myText.OrderNo" Property="OrderNo"></RadzenDataGridColumn>
<RadzenDataGridColumn Width="170px" Title="开方时间" Property="OrderDate"></RadzenDataGridColumn> <RadzenDataGridColumn Width="170px" Title="@myText.OrderDate" Property="OrderDate"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="医生" Property="DoctorName"></RadzenDataGridColumn> <RadzenDataGridColumn Title="@myText.Doctor" Property="DoctorName"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="姓名" Property="PatientName"></RadzenDataGridColumn> <RadzenDataGridColumn Title="@myText.Name" Property="PatientName"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="性别" Property="Sex"></RadzenDataGridColumn> <RadzenDataGridColumn Title="@myText.Sex" Property="Sex"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="年龄" Property="Age"></RadzenDataGridColumn> <RadzenDataGridColumn Title="@myText.Age" Property="Age"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="科室" Property="DeptName"></RadzenDataGridColumn> <RadzenDataGridColumn Title="@myText.DeptName" Property="DeptName"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="诊断" Property="Disease"></RadzenDataGridColumn> <RadzenDataGridColumn Title="@myText.Diagnose" Property="Disease"></RadzenDataGridColumn>
</Columns> </Columns>
</RadzenDataGrid> </RadzenDataGrid>
</div> </div>
@ -65,6 +65,7 @@
@code { @code {
@inject IOrderInfoDao orderInfoDao; @inject IOrderInfoDao orderInfoDao;
@inject DialogService dialogService; @inject DialogService dialogService;
@inject Toolbelt.Blazor.I18nText.I18nText I18nText;
RadzenDataGrid<OrderInfo> grid; RadzenDataGrid<OrderInfo> grid;
bool isLoading; bool isLoading;
int count; int count;
@ -72,6 +73,13 @@
string OrderNo; string OrderNo;
DateTime OrderDate; DateTime OrderDate;
private I18nText.local myText = new I18nText.local();
protected override async Task OnInitializedAsync()
{
myText = await I18nText.GetTextTableAsync<I18nText.local>(this);
}
void OnCurrentDateChanged(DateTime args) void OnCurrentDateChanged(DateTime args)
{ {
OrderDate = new DateTime(args.Year, args.Month, args.Day); OrderDate = new DateTime(args.Year, args.Month, args.Day);
@ -101,7 +109,7 @@
{ {
var b = await dialogService.OpenAsync<OrderDetailDialog>( var b = await dialogService.OpenAsync<OrderDetailDialog>(
$"处方详情", myText.OrderDetail,
new Dictionary<string, object>() { { "order", oi } }, new Dictionary<string, object>() { { "order", oi } },
new DialogOptions() { Width = "85vw", Resizable = true, Draggable = true, ShowClose = false } new DialogOptions() { Width = "85vw", Resizable = true, Draggable = true, ShowClose = false }
); );

View File

@ -12,8 +12,8 @@
<RadzenStack Orientation="Orientation.Horizontal" Gap="1rem"> <RadzenStack Orientation="Orientation.Horizontal" Gap="1rem">
<RadzenRow AlignItems="AlignItems.Center"> <RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="12" Style="margin-top:12px"> <RadzenColumn Size="12" Style="margin-top:12px">
<RadzenButton Size="ButtonSize.Large" Click="reloadGrid" IsBusy="isLoading" Icon="refresh" Text="刷新" ButtonStyle="ButtonStyle.Warning" /> <RadzenButton Size="ButtonSize.Large" Click="reloadGrid" IsBusy="isLoading" Icon="refresh" Text="@myText.Refresh" ButtonStyle="ButtonStyle.Warning" />
<RadzenButton Size="ButtonSize.Large" ButtonStyle="ButtonStyle.Success" Icon="add_circle_outline" Click="@InsertPlanRow" Text="新增套餐" /> <RadzenButton Size="ButtonSize.Large" ButtonStyle="ButtonStyle.Success" Icon="add_circle_outline" Click="@InsertPlanRow" Text="@myText.AddMenu" />
</RadzenColumn> </RadzenColumn>
</RadzenRow> </RadzenRow>
</RadzenStack> </RadzenStack>
@ -25,26 +25,26 @@
@bind-Value="@SelectedPlan" @bind-Value="@SelectedPlan"
IsLoading="@isLoading" IsLoading="@isLoading"
Count="@count" Count="@count"
EmptyText="无数据" EmptyText="@myText.NoDate"
Data="@_forecasts" Data="@_forecasts"
AllowColumnResize="true" AllowAlternatingRows="false" AllowColumnResize="true" AllowAlternatingRows="false"
SelectionMode="DataGridSelectionMode.Single" RowUpdate="@((Plan di) => { OnUpdatePlanRow(di); })" RowCreate="@((Plan di) => { OnCreatePlanRow(di); })" SelectionMode="DataGridSelectionMode.Single" RowUpdate="@((Plan di) => { OnUpdatePlanRow(di); })" RowCreate="@((Plan di) => { OnCreatePlanRow(di); })"
AllowPaging="true" PageSize="10" PagerHorizontalAlign="HorizontalAlign.Left" ColumnWidth="100px" ShowPagingSummary="true" PagingSummaryFormat="{0}/{1} 共{2}条数据"> AllowPaging="true" PageSize="10" PagerHorizontalAlign="HorizontalAlign.Left" ColumnWidth="100px" ShowPagingSummary="true" PagingSummaryFormat="{0}/{1} 共{2}条数据">
<Columns> <Columns>
<RadzenDataGridColumn Frozen="true" Title="套餐名称" Property="Name"> <RadzenDataGridColumn Frozen="true" Title="@myText.MenuName" Property="Name">
<EditTemplate Context="planInfo"> <EditTemplate Context="planInfo">
<RadzenTextBox Name="Name" @bind-Value="planInfo.Name" Style="width:100%; display: block;" /> <RadzenTextBox Name="Name" @bind-Value="planInfo.Name" Style="width:100%; display: block;" />
<RadzenRequiredValidator Text="请填写套餐名称" Component="Name" Popup="true" /> <RadzenRequiredValidator Text="@myText.InputMenuName" Component="Name" Popup="true" />
</EditTemplate> </EditTemplate>
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenDataGridColumn Width="200px" Title="套餐描述" Property="Description"> <RadzenDataGridColumn Width="200px" Title="@myText.MenuDescrip" Property="Description">
<EditTemplate Context="planInfo"> <EditTemplate Context="planInfo">
<RadzenTextBox Name="Description" @bind-Value="planInfo.Description" Style="width:100%;display:block;" /> <RadzenTextBox Name="Description" @bind-Value="planInfo.Description" Style="width:100%;display:block;" />
<RadzenRequiredValidator Text="请填写套餐描述" Component="Description" Popup="true" /> <RadzenRequiredValidator Text="@myText.InputMenuDesc" Component="Description" Popup="true" />
</EditTemplate> </EditTemplate>
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenDataGridColumn Context="planInfo" Title="操作" Filterable="false" Sortable="false" TextAlign="TextAlign.Left" Frozen="true" FrozenPosition="FrozenColumnPosition.Right" Width="8rem"> <RadzenDataGridColumn Context="planInfo" Title="@myText.Operate" Filterable="false" Sortable="false" TextAlign="TextAlign.Left" Frozen="true" FrozenPosition="FrozenColumnPosition.Right" Width="8rem">
<Template Context="planInfo"> <Template Context="planInfo">
<RadzenButton Icon="edit" ButtonStyle="ButtonStyle.Light" Variant="Variant.Flat" Size="ButtonSize.Medium" Click="@(args => EditPlanRow(planInfo))" @onclick:stopPropagation="true"> <RadzenButton Icon="edit" ButtonStyle="ButtonStyle.Light" Variant="Variant.Flat" Size="ButtonSize.Medium" Click="@(args => EditPlanRow(planInfo))" @onclick:stopPropagation="true">
</RadzenButton> </RadzenButton>
@ -64,7 +64,7 @@
</RadzenDataGrid> </RadzenDataGrid>
</div> </div>
<div class="col-6 mb-4"> <div class="col-6 mb-4">
<RadzenDataGrid @ref="PlanDetailsGrid" EmptyText="无数据" <RadzenDataGrid @ref="PlanDetailsGrid" EmptyText="@myText.NoDate"
Data="@(SelectedPlan?.FirstOrDefault()?._PlanDetails)" Data="@(SelectedPlan?.FirstOrDefault()?._PlanDetails)"
RowUpdate="@((PlanDetails pd) => { OnUpdateRow(pd); })" RowUpdate="@((PlanDetails pd) => { OnUpdateRow(pd); })"
RowCreate="@((PlanDetails pd) => { OnCreateRow(pd); })" RowCreate="@((PlanDetails pd) => { OnCreateRow(pd); })"
@ -76,12 +76,12 @@
</RadzenRow> </RadzenRow>
</HeaderTemplate> *@ </HeaderTemplate> *@
<Columns> <Columns>
<RadzenDataGridColumn Title="序号" Property="index" Width="5rem"> <RadzenDataGridColumn Title="@myText.Number" Property="index" Width="5rem">
<Template Context="data"> <Template Context="data">
@(SelectedPlan.FirstOrDefault()?._PlanDetails.IndexOf(data) + 1) @(SelectedPlan.FirstOrDefault()?._PlanDetails.IndexOf(data) + 1)
</Template> </Template>
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenDataGridColumn Title="药品" Property="_DrugInfo.DrugName" Width="25rem"> <RadzenDataGridColumn Title="@myText.DrugName" Property="_DrugInfo.DrugName" Width="25rem">
<Template Context="data"> <Template Context="data">
<RadzenText TextStyle="TextStyle.Body1"><b>@(data._DrugInfo?.DrugName)</b></RadzenText> <RadzenText TextStyle="TextStyle.Body1"><b>@(data._DrugInfo?.DrugName)</b></RadzenText>
<RadzenText TextStyle="TextStyle.Body1"><b>@(data._DrugInfo?.DrugSpec)</b></RadzenText> <RadzenText TextStyle="TextStyle.Body1"><b>@(data._DrugInfo?.DrugSpec)</b></RadzenText>
@ -91,23 +91,23 @@
<RadzenDropDownDataGrid AllowVirtualization="true" Name="drugName" TValue="DrugInfo" @bind-Value="planDetails._DrugInfo" Data="@drugInfos" <RadzenDropDownDataGrid AllowVirtualization="true" Name="drugName" TValue="DrugInfo" @bind-Value="planDetails._DrugInfo" Data="@drugInfos"
Style="width:100%; display: block;" AllowFilteringByAllStringColumns="true" TextProperty="DrugName"> Style="width:100%; display: block;" AllowFilteringByAllStringColumns="true" TextProperty="DrugName">
<Columns> <Columns>
<RadzenDropDownDataGridColumn Property="DrugId" Title="药品编码" /> <RadzenDropDownDataGridColumn Property="DrugId" Title="@myText.DrugCode" />
<RadzenDropDownDataGridColumn Property="DrugName" Width="120px" Title="名称" /> <RadzenDropDownDataGridColumn Property="DrugName" Width="120px" Title="@myText.DrugName" />
<RadzenDropDownDataGridColumn Property="DrugSpec" Title="规格" /> <RadzenDropDownDataGridColumn Property="DrugSpec" Title="@myText.Spec" />
</Columns> </Columns>
</RadzenDropDownDataGrid> </RadzenDropDownDataGrid>
<RadzenCustomValidator Component="drugName" Validator="@(() => (planDetails._DrugInfo.DrugId != null))" Text="请选择药品" Popup=true /> <RadzenCustomValidator Component="drugName" Validator="@(() => (planDetails._DrugInfo.DrugId != null))" Text="@myText.SelectDrug" Popup=true />
<RadzenCustomValidator Component="drugName" Validator="@(() => ValidatroDrug(planDetails))" Text="套餐中已包含该药品" Popup=true /> <RadzenCustomValidator Component="drugName" Validator="@(() => ValidatroDrug(planDetails))" Text="@myText.MenuHasDrug" Popup=true />
</EditTemplate> </EditTemplate>
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenDataGridColumn Title="基数" Property="BaseQuantity" Width="5rem"> <RadzenDataGridColumn Title="@myText.BaseQuantity" Property="BaseQuantity" Width="5rem">
<EditTemplate Context="planDetails"> <EditTemplate Context="planDetails">
<RadzenNumeric Name="BaseQuantity" @bind-Value="planDetails.BaseQuantity" Style="width:100%; display: block;" /> <RadzenNumeric Name="BaseQuantity" @bind-Value="planDetails.BaseQuantity" Style="width:100%; display: block;" />
<RadzenNumericRangeValidator Style="position: absolute;z-index: 9999;" Min="0" Text="请填写正确的添加数量" Component="BaseQuantity" Popup="true" /> <RadzenNumericRangeValidator Style="position: absolute;z-index: 9999;" Min="0" Text="请填写正确的添加数量" Component="BaseQuantity" Popup="true" />
</EditTemplate> </EditTemplate>
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenDataGridColumn Title="操作" Filterable="false" Sortable="false" TextAlign="TextAlign.Left" Frozen="true" FrozenPosition="FrozenColumnPosition.Right" Width="8rem"> <RadzenDataGridColumn Title="@myText.Operate" Filterable="false" Sortable="false" TextAlign="TextAlign.Left" Frozen="true" FrozenPosition="FrozenColumnPosition.Right" Width="8rem">
<Template Context="planDetails"> <Template Context="planDetails">
<RadzenButton Icon="edit" ButtonStyle="ButtonStyle.Light" Variant="Variant.Flat" Size="ButtonSize.Medium" Click="@(args => EditRow(planDetails))" @onclick:stopPropagation="true"> <RadzenButton Icon="edit" ButtonStyle="ButtonStyle.Light" Variant="Variant.Flat" Size="ButtonSize.Medium" Click="@(args => EditRow(planDetails))" @onclick:stopPropagation="true">
</RadzenButton> </RadzenButton>
@ -126,7 +126,7 @@
</Columns> </Columns>
</RadzenDataGrid> </RadzenDataGrid>
<div style="margin-top:5px"> <div style="margin-top:5px">
<RadzenButton Size="ButtonSize.Medium" ButtonStyle="ButtonStyle.Success" Icon="add_circle_outline" Click="@InsertRow" Text="新增药品" /> <RadzenButton Size="ButtonSize.Medium" ButtonStyle="ButtonStyle.Success" Icon="add_circle_outline" Click="@InsertRow" Text="@myText.AddDrug" />
</div> </div>
</div> </div>
</div> </div>
@ -137,7 +137,9 @@
@inject DialogService dialogService; @inject DialogService dialogService;
@inject NotificationService _message @inject NotificationService _message
@inject GlobalStateService globalStateService; @inject GlobalStateService globalStateService;
@inject Toolbelt.Blazor.I18nText.I18nText I18nText;
private I18nText.local myText = new I18nText.local();
RadzenDataGrid<Plan> grid; RadzenDataGrid<Plan> grid;
RadzenDataGrid<PlanDetails> PlanDetailsGrid; RadzenDataGrid<PlanDetails> PlanDetailsGrid;
bool isLoading; bool isLoading;
@ -148,6 +150,12 @@
List<DrugInfo> drugInfos; List<DrugInfo> drugInfos;
// int preValue = 1;
protected override async Task OnInitializedAsync()
{
myText = await I18nText.GetTextTableAsync<I18nText.local>(this);
base.OnInitializedAsync();
}
async Task LoadData(LoadDataArgs args) async Task LoadData(LoadDataArgs args)
{ {

View File

@ -11,11 +11,11 @@
<div class="col-12 mb-4"> <div class="col-12 mb-4">
<form onsubmit="@(() => grid.Reload())"> <form onsubmit="@(() => grid.Reload())">
<RadzenFieldset Text="查询"> <RadzenFieldset Text="@myText.Search">
<RadzenStack Orientation="Orientation.Horizontal" Gap="1rem"> <RadzenStack Orientation="Orientation.Horizontal" Gap="1rem">
<RadzenRow AlignItems="AlignItems.Center"> <RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="4"> <RadzenColumn Size="4">
<RadzenLabel Text="开始时间" Component="Start" /> <RadzenLabel Text="@myText.StartDate" Component="Start" />
</RadzenColumn> </RadzenColumn>
<RadzenColumn Size="8"> <RadzenColumn Size="8">
<RadzenDatePicker DateFormat="yyyy-MM-dd HH:mm:ss" ShowTime="true" @bind-Value="start" Style="width: 100%;" Name="Start" /> <RadzenDatePicker DateFormat="yyyy-MM-dd HH:mm:ss" ShowTime="true" @bind-Value="start" Style="width: 100%;" Name="Start" />
@ -23,7 +23,7 @@
</RadzenRow> </RadzenRow>
<RadzenRow AlignItems="AlignItems.Center"> <RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="4"> <RadzenColumn Size="4">
<RadzenLabel Text="结束时间" Component="End" /> <RadzenLabel Text="@myText.EndDate" Component="End" />
</RadzenColumn> </RadzenColumn>
<RadzenColumn Size="8"> <RadzenColumn Size="8">
<RadzenDatePicker DateFormat="yyyy-MM-dd HH:mm:ss" ShowTime="true" @bind-Value="end" Style="width: 100%;" Name="End" /> <RadzenDatePicker DateFormat="yyyy-MM-dd HH:mm:ss" ShowTime="true" @bind-Value="end" Style="width: 100%;" Name="End" />
@ -32,8 +32,8 @@
<RadzenRow AlignItems="AlignItems.Center"> <RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="12"> <RadzenColumn Size="12">
<RadzenButton Size="ButtonSize.Large" ButtonType="ButtonType.Submit" IsBusy="isLoading" Icon="search" Text="查询" /> <RadzenButton Size="ButtonSize.Large" ButtonType="ButtonType.Submit" IsBusy="isLoading" Icon="search" Text="@myText.Search" />
<RadzenButton Size="ButtonSize.Large" Click="reloadGrid" IsBusy="isLoading" Icon="refresh" Text="重置" ButtonStyle="ButtonStyle.Warning" /> <RadzenButton Size="ButtonSize.Large" Click="reloadGrid" IsBusy="isLoading" Icon="refresh" Text="@myText.Restore" ButtonStyle="ButtonStyle.Warning" />
</RadzenColumn> </RadzenColumn>
</RadzenRow> </RadzenRow>
</RadzenStack> </RadzenStack>
@ -46,7 +46,7 @@
LoadData="@LoadData" LoadData="@LoadData"
IsLoading="@isLoading" IsLoading="@isLoading"
Count="@count" Count="@count"
EmptyText="无数据" EmptyText="@myText.NoDate"
Data="@_forecasts" Data="@_forecasts"
AllowColumnResize="true" AllowAlternatingRows="false" AllowColumnResize="true" AllowAlternatingRows="false"
AllowRowSelectOnRowClick="true" AllowRowSelectOnRowClick="true"
@ -58,9 +58,9 @@
</RadzenRow> </RadzenRow>
</HeaderTemplate> </HeaderTemplate>
<Columns> <Columns>
<RadzenDataGridColumn Frozen="true" Title="操作人" Property="OperatorUser.NickName"></RadzenDataGridColumn> <RadzenDataGridColumn Frozen="true" Title="@myText.Operator" Property="OperatorUser.NickName"></RadzenDataGridColumn>
<RadzenDataGridColumn Width="170px" Title="操作时间" Property="OperationTime"></RadzenDataGridColumn> <RadzenDataGridColumn Width="170px" Title="@myText.OperateDate" Property="OperationTime"></RadzenDataGridColumn>
<RadzenDataGridColumn Width="200px" Title="药品名称" Property="Drug.DrugName"> <RadzenDataGridColumn Width="200px" Title="@myText.DrugName" Property="Drug.DrugName">
<Template Context="mr"> <Template Context="mr">
<RadzenText TextStyle="TextStyle.Subtitle2" class="mb-0">@mr.Drug?.DrugName</RadzenText> <RadzenText TextStyle="TextStyle.Subtitle2" class="mb-0">@mr.Drug?.DrugName</RadzenText>
<RadzenText TextStyle="TextStyle.Caption">@mr.Drug?.DrugSpec</RadzenText> <RadzenText TextStyle="TextStyle.Caption">@mr.Drug?.DrugSpec</RadzenText>
@ -72,10 +72,10 @@
<RadzenText TextStyle="TextStyle.Caption"> @mr.EffDate?.ToString("yyyy-MM-dd")</RadzenText> <RadzenText TextStyle="TextStyle.Caption"> @mr.EffDate?.ToString("yyyy-MM-dd")</RadzenText>
</Template> </Template>
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenDataGridColumn Title="借出数量" Property="Quantity"></RadzenDataGridColumn> <RadzenDataGridColumn Title="@myText.Borrow" Property="Quantity"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="已还药品" Property="ReturnQuantity1"></RadzenDataGridColumn> <RadzenDataGridColumn Title="@myText.ReturnQuantity" Property="ReturnQuantity1"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="已还空瓶" Property="ReturnQuantity2"></RadzenDataGridColumn> <RadzenDataGridColumn Title="@myText.ReturnEmpty" Property="ReturnQuantity2"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="本次归还" Property="CurrentReturnQuantity"> <RadzenDataGridColumn Title="@myText.CurrentReturn" Property="CurrentReturnQuantity">
<EditTemplate Context="mr"> <EditTemplate Context="mr">
<RadzenNumeric Min="0" Style="display: block" Max="@(mr.Quantity - mr.ReturnQuantity1 - mr.ReturnQuantity2)" Name="Quantity" @bind-Value=@mr.CurrentReturnQuantity /> <RadzenNumeric Min="0" Style="display: block" Max="@(mr.Quantity - mr.ReturnQuantity1 - mr.ReturnQuantity2)" Name="Quantity" @bind-Value=@mr.CurrentReturnQuantity />
</EditTemplate> </EditTemplate>
@ -89,6 +89,8 @@
@code { @code {
@inject IMachineRecordDao machineRecordDao; @inject IMachineRecordDao machineRecordDao;
@inject DialogService dialogService; @inject DialogService dialogService;
@inject Toolbelt.Blazor.I18nText.I18nText I18nText;
private I18nText.local myText = new I18nText.local();
RadzenDataGrid<MachineRecord> grid; RadzenDataGrid<MachineRecord> grid;
bool isLoading; bool isLoading;
int count; int count;
@ -97,7 +99,11 @@
DateTime start; DateTime start;
DateTime end; DateTime end;
protected override async Task OnInitializedAsync()
{
myText = await I18nText.GetTextTableAsync<I18nText.local>(this);
base.OnInitializedAsync();
}
async Task LoadData(LoadDataArgs args) async Task LoadData(LoadDataArgs args)
{ {
isLoading = true; isLoading = true;

View File

@ -12,45 +12,45 @@
<RadzenDataGrid @ref="grid" Data="@data" ExpandMode="DataGridExpandMode.Multiple" <RadzenDataGrid @ref="grid" Data="@data" ExpandMode="DataGridExpandMode.Multiple"
RowRender="@RowRender" RowRender="@RowRender"
EmptyText="无数据" AllowAlternatingRows="false"> EmptyText="@myText.NoDate" AllowAlternatingRows="false">
<Template Context="di"> <Template Context="di">
<RadzenDataGrid Data="@di.ChannelStocks" EmptyText="无数据" @ref="di.Grid" <RadzenDataGrid Data="@di.ChannelStocks" EmptyText="@myText.NoDate" @ref="di.Grid"
CellClick="@((DataGridCellMouseEventArgs<ChannelStock> args) => OnCellClick(args, di.Grid))"> CellClick="@((DataGridCellMouseEventArgs<ChannelStock> args) => OnCellClick(args, di.Grid))">
<Columns> <Columns>
<RadzenDataGridColumn Title="库位" Property="DrawerNo"> <RadzenDataGridColumn Title="@myText.StorageLocation" Property="DrawerNo">
<Template Context="s"> <Template Context="s">
@s.DrawerNo - @s.ColNo @s.DrawerNo - @s.ColNo
</Template> </Template>
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenDataGridColumn Title="库存" Property="Quantity"></RadzenDataGridColumn> <RadzenDataGridColumn Title="@myText.Inventory" Property="Quantity"></RadzenDataGridColumn>
@* <RadzenDataGridColumn Title="批次" Property="ManuNo"></RadzenDataGridColumn> @* <RadzenDataGridColumn Title="批次" Property="ManuNo"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="效期" Property="EffDate"></RadzenDataGridColumn> *@ <RadzenDataGridColumn Title="效期" Property="EffDate"></RadzenDataGridColumn> *@
<RadzenDataGridColumn Title="入库数量" Property="ReturnQuantity"> <RadzenDataGridColumn Title="@myText.Quantity" Property="ReturnQuantity">
<EditTemplate Context="cs"> <EditTemplate Context="cs">
<RadzenNumeric Disabled="status > 0" Style="display: block" Min="0" Max="@di.Quantity" Name="Quantity" @bind-Value=@cs.ReturnQuantity /> <RadzenNumeric Disabled="status > 0" Style="display: block" Min="0" Max="@di.Quantity" Name="Quantity" @bind-Value=@cs.ReturnQuantity />
<RadzenNumericRangeValidator Style="position: absolute;z-index: 9999;" Min="0" Max="@di.Quantity" Text="请填写正确的添加数量" Component="Quantity" /> <RadzenNumericRangeValidator Style="position: absolute;z-index: 9999;" Min="0" Max="@di.Quantity" Text="@myText.InputNum" Component="Quantity" />
<RadzenCustomValidator Validator="@(() => di.ChannelStocks.Sum(cs2 => cs2.ReturnQuantity) == di.Quantity)" Component="Quantity" Text="入库总量应等于请领数量" Style="position: absolute;z-index: 9999;" /> <RadzenCustomValidator Validator="@(() => di.ChannelStocks.Sum(cs2 => cs2.ReturnQuantity) == di.Quantity)" Component="Quantity" Text="@myText.InputNumError" Style="position: absolute;z-index: 9999;" />
</EditTemplate> </EditTemplate>
</RadzenDataGridColumn> </RadzenDataGridColumn>
</Columns> </Columns>
</RadzenDataGrid> </RadzenDataGrid>
</Template> </Template>
<Columns> <Columns>
<RadzenDataGridColumn Property="Drug.DrugName" Title="药品" /> <RadzenDataGridColumn Property="Drug.DrugName" Title="@myText.DrugName" />
<RadzenDataGridColumn Property="Drug.DrugSpec" Title="规格" /> <RadzenDataGridColumn Property="Drug.DrugSpec" Title="@myText.Spec" />
<RadzenDataGridColumn Property="ManuNo" Title="批次"> <RadzenDataGridColumn Property="ManuNo" Title="@myText.Batch">
<Template Context="ov"> <Template Context="ov">
@ov.data.First().ManuNo @ov.data.First().ManuNo
</Template> </Template>
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenDataGridColumn Property="EffDate" Title="效期"> <RadzenDataGridColumn Property="EffDate" Title="@myText.Expiration">
<Template Context="ov"> <Template Context="ov">
@ov.data.First().EffDate @ov.data.First().EffDate
</Template> </Template>
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenDataGridColumn Property="Quantity" Title="请领数量" /> <RadzenDataGridColumn Property="Quantity" Title="@myText.Quantity" />
<RadzenDataGridColumn Property="StockQuantity" Title="总库存" /> <RadzenDataGridColumn Property="StockQuantity" Title="@myText.TotalStock" />
</Columns> </Columns>
</RadzenDataGrid> </RadzenDataGrid>
@ -60,15 +60,15 @@
<RadzenStack Orientation="Orientation.Horizontal" JustifyContent="JustifyContent.Center" Gap="0.5rem"> <RadzenStack Orientation="Orientation.Horizontal" JustifyContent="JustifyContent.Center" Gap="0.5rem">
@if (status < 2) @if (status < 2)
{ {
<RadzenButton Click="@StartAdd" Disabled="!CanTakeDrug" IsBusy="status > 0" BusyText="加药中。。。" ButtonStyle="ButtonStyle.Warning" Variant="Variant.Flat" Text="加药" Style="width: 120px" /> <RadzenButton Click="@StartAdd" Disabled="!CanTakeDrug" IsBusy="status > 0" BusyText="@myText.Adding" ButtonStyle="ButtonStyle.Warning" Variant="Variant.Flat" Text="@myText.Add" Style="width: 120px" />
} }
@if (status == 2) @if (status == 2)
{ {
<RadzenButton Click="@AddFinish" ButtonStyle="ButtonStyle.Success" Variant="Variant.Flat" Text="完成" Style="width: 120px" /> <RadzenButton Click="@AddFinish" ButtonStyle="ButtonStyle.Success" Variant="Variant.Flat" Text="@myText.Complete" Style="width: 120px" />
} }
@if (status < 2) @if (status < 2)
{ {
<RadzenButton Click="@((args) => CancelOpera())" Variant="Variant.Flat" Text="取消" Style="width: 120px" /> <RadzenButton Click="@((args) => CancelOpera())" Variant="Variant.Flat" Text="@myText.Cancel" Style="width: 120px" />
} }
</RadzenStack> </RadzenStack>
</RadzenStack> </RadzenStack>
@ -79,6 +79,9 @@
@inject IOptions<DrawerConfig> setting; @inject IOptions<DrawerConfig> setting;
@inject NotificationService _message @inject NotificationService _message
@inject PortUtil PortUtil; @inject PortUtil PortUtil;
@inject Toolbelt.Blazor.I18nText.I18nText I18nText;
private I18nText.local myText = new I18nText.local();
RadzenDataGrid<OperationVo<List<MachineRecord>>> grid; RadzenDataGrid<OperationVo<List<MachineRecord>>> grid;
@ -96,7 +99,7 @@
if(data.Any(it => it.Quantity != it.ChannelStocks.Sum(cs => cs.ReturnQuantity))) if(data.Any(it => it.Quantity != it.ChannelStocks.Sum(cs => cs.ReturnQuantity)))
{ {
_message.Notify( _message.Notify(
new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"请填写正确的入库数量!", Duration = 4000 } new NotificationMessage { Severity = NotificationSeverity.Error, Summary = myText.Tips, Detail = myText.InputCorrectInNum, Duration = 4000 }
); );
} else } else
@ -125,7 +128,7 @@
if (channels.Count == 0) if (channels.Count == 0)
{ {
_message.Notify( _message.Notify(
new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"请填写正确的入库数量!", Duration = 4000 } new NotificationMessage { Severity = NotificationSeverity.Error, Summary = myText.Tips, Detail = myText.InputCorrectInNum, Duration = 4000 }
); );
return; return;
} }
@ -165,16 +168,16 @@
if (b) if (b)
{ {
PortUtil.speechSynthesizer.SpeakAsyncCancelAll(); PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
PortUtil.SpeakAsync($"{drawerNo}号抽屉已经打开,请,加药"); PortUtil.SpeakAsync($"{drawerNo}{myText.PleaseAdd}");
options._data = 1; options._data = 1;
next(); next();
} }
else else
{ {
_message.Notify( _message.Notify(
new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"抽屉【{drawerNo}】打开失败,请检测硬件", Duration = 4000 } new NotificationMessage { Severity = NotificationSeverity.Error, Summary = myText.Tips, Detail = $"【{drawerNo}】{myText.DrawerOpenFailed}", Duration = 4000 }
); );
logger.Info($"抽屉打开失败"); logger.Info(myText.DrawerOpenFailed);
PortUtil.AllLightOff(); PortUtil.AllLightOff();
RestData(); RestData();
stop(); stop();
@ -196,7 +199,7 @@
if (index == drawerNos.Count - 1) if (index == drawerNos.Count - 1)
{ {
PortUtil.speechSynthesizer.SpeakAsyncCancelAll(); PortUtil.speechSynthesizer.SpeakAsyncCancelAll();
PortUtil.SpeakAsync($"加药完成,请,点击完成按钮进行确认"); PortUtil.SpeakAsync(myText.AddSuccessful);
this.status = 2; this.status = 2;
stop(); stop();
} }
@ -235,7 +238,7 @@
RestData(); RestData();
logger.Info($"调拨加药发生错误,{e.Message}"); logger.Info($"调拨加药发生错误,{e.Message}");
_message.Notify( _message.Notify(
new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"发生错误,{e.Message}", Duration = 4000 } new NotificationMessage { Severity = NotificationSeverity.Error, Summary = myText.Tips, Detail = $"发生错误,{e.Message}", Duration = 4000 }
); );
if (setting.Value.single.Contains(drawerNo)) if (setting.Value.single.Contains(drawerNo))
{ {
@ -258,7 +261,7 @@
var b = await machineRecordDao.ReturnDrugFinish(data); var b = await machineRecordDao.ReturnDrugFinish(data);
if (!b) if (!b)
{ {
_message.Notify(new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"数据保存失败", Duration = 4000 }); _message.Notify(new NotificationMessage { Severity = NotificationSeverity.Error, Summary = myText.Tips, Detail = myText.DataSaveFailed, Duration = 4000 });
logger.Error($"抽屉加药保存数据库失败,数据{JsonConvert.SerializeObject(data)}"); logger.Error($"抽屉加药保存数据库失败,数据{JsonConvert.SerializeObject(data)}");
// 关闭弹窗 // 关闭弹窗
dialogService.Close(false); dialogService.Close(false);
@ -276,6 +279,7 @@
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
myText = await I18nText.GetTextTableAsync<I18nText.local>(this);
data = await machineRecordDao.getReturnDrugInfoByRecords(records); data = await machineRecordDao.getReturnDrugInfoByRecords(records);
// 如果有库位列表未空则说明不能取药,需要增加库位 // 如果有库位列表未空则说明不能取药,需要增加库位
if (data.Any(it => it.ChannelStocks.Count == 0)) if (data.Any(it => it.ChannelStocks.Count == 0))

View File

@ -45,7 +45,7 @@
<RadzenDataGrid @ref="grid" <RadzenDataGrid @ref="grid"
LoadData="@LoadData" LoadData="@LoadData"
IsLoading="@isLoading" IsLoading="@isLoading"
EmptyText="无数据" EmptyText="@myText.NoDate"
Data="@_forecasts" Data="@_forecasts"
AllowColumnResize="true" AllowAlternatingRows="false" AllowColumnResize="true" AllowAlternatingRows="false"
AllowRowSelectOnRowClick="true" AllowRowSelectOnRowClick="true"
@ -56,16 +56,16 @@
</RadzenRow> </RadzenRow>
</HeaderTemplate> *@ </HeaderTemplate> *@
<Columns> <Columns>
<RadzenDataGridColumn Frozen="true" Title="库位" Property="Location"></RadzenDataGridColumn> <RadzenDataGridColumn Frozen="true" Title="@myText.StorageLocation" Property="Location"></RadzenDataGridColumn>
<RadzenDataGridColumn Width="200px" Title="药品名称" Property="Drug.DrugName"> <RadzenDataGridColumn Width="200px" Title="@myText.DrugName" Property="Drug.DrugName">
@* <Template Context="mr"> @* <Template Context="mr">
<RadzenText TextStyle="TextStyle.Subtitle2" class="mb-0">@mr.Drug?.DrugName</RadzenText> <RadzenText TextStyle="TextStyle.Subtitle2" class="mb-0">@mr.Drug?.DrugName</RadzenText>
<RadzenText TextStyle="TextStyle.Caption">@mr.Drug?.DrugSpec</RadzenText> <RadzenText TextStyle="TextStyle.Caption">@mr.Drug?.DrugSpec</RadzenText>
</Template> *@ </Template> *@
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenDataGridColumn Title="厂家" Property="Drug.Manufactory"></RadzenDataGridColumn> <RadzenDataGridColumn Title="@myText.Factory" Property="Drug.Manufactory"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="库存" Property="Quantity"></RadzenDataGridColumn> <RadzenDataGridColumn Title="@myText.Inventory" Property="Quantity"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="可归还数量" Property="CanReturnQuantity"></RadzenDataGridColumn> <RadzenDataGridColumn Title="@myText.CanReturnQuantity" Property="CanReturnQuantity"></RadzenDataGridColumn>
@*<RadzenDataGridColumn Title="本次归还" Property="CurrentReturnQuantity"> @*<RadzenDataGridColumn Title="本次归还" Property="CurrentReturnQuantity">
<EditTemplate Context="mr"> <EditTemplate Context="mr">
<RadzenNumeric Min="0" Style="display: block" Max="@(mr.Quantity - mr.ReturnQuantity1 - mr.ReturnQuantity2)" Name="Quantity" @bind-Value=@mr.CurrentReturnQuantity /> <RadzenNumeric Min="0" Style="display: block" Max="@(mr.Quantity - mr.ReturnQuantity1 - mr.ReturnQuantity2)" Name="Quantity" @bind-Value=@mr.CurrentReturnQuantity />
@ -81,6 +81,8 @@
@inject IMachineRecordDao machineRecordDao; @inject IMachineRecordDao machineRecordDao;
@inject DialogService dialogService; @inject DialogService dialogService;
@inject NotificationService _message @inject NotificationService _message
@inject Toolbelt.Blazor.I18nText.I18nText I18nText;
private I18nText.local myText = new I18nText.local();
RadzenDataGrid<ChannelStock> grid; RadzenDataGrid<ChannelStock> grid;
bool isLoading; bool isLoading;
int count; int count;
@ -109,7 +111,7 @@
if (string.IsNullOrEmpty(args.Data.DrugId)) if (string.IsNullOrEmpty(args.Data.DrugId))
{ {
_message.Notify( _message.Notify(
new NotificationMessage { Style = "position: absolute; inset-inline-start: -1000px;", Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"该库位无药品,请先绑药!", Duration = 4000 } new NotificationMessage { Style = "position: absolute; inset-inline-start: -1000px;", Severity = NotificationSeverity.Error, Summary = myText.Tips, Detail = $"该库位无药品,请先绑药!", Duration = 4000 }
); );
return; return;
} }
@ -117,7 +119,7 @@
var list = args.Data;// _forecasts.Where(mr => mr.DrawerNo > 0).ToList(); var list = args.Data;// _forecasts.Where(mr => mr.DrawerNo > 0).ToList();
var b = await dialogService.OpenAsync<RecordReturnEmptyDialog>( var b = await dialogService.OpenAsync<RecordReturnEmptyDialog>(
$"归还空瓶", myText.ReturnEmpty,
new Dictionary<string, object>() { { "records", list } }, new Dictionary<string, object>() { { "records", list } },
new DialogOptions() { Width = "85vw", Resizable = true, Draggable = true, ShowClose = false } new DialogOptions() { Width = "85vw", Resizable = true, Draggable = true, ShowClose = false }
); );
@ -126,4 +128,9 @@
await reloadGrid(); await reloadGrid();
} }
} }
protected override async Task OnInitializedAsync()
{
myText = await I18nText.GetTextTableAsync<I18nText.local>(this);
base.OnInitializedAsync();
}
} }

View File

@ -6,19 +6,19 @@
@using Newtonsoft.Json; @using Newtonsoft.Json;
@using log4net; @using log4net;
<RadzenFieldset Text="药品信息"> <RadzenFieldset Text="@myText.DrugInfo">
<RadzenStack Orientation="Orientation.Horizontal" Gap="10px" JustifyContent="JustifyContent.Center" AlignItems="AlignItems.Center" Wrap="FlexWrap.NoWrap" Style="height: 80px;padding:20px;"> <RadzenStack Orientation="Orientation.Horizontal" Gap="10px" JustifyContent="JustifyContent.Center" AlignItems="AlignItems.Center" Wrap="FlexWrap.NoWrap" Style="height: 80px;padding:20px;">
<RadzenStack class="rz-p-1 rz-text-align-center" Style="width:500px"> <RadzenStack class="rz-p-1 rz-text-align-center" Style="width:500px">
药品@drugName @myText.DrugName@drugName
</RadzenStack> </RadzenStack>
<RadzenStack class="rz-p-1 rz-text-align-center" Style="width:500px"> <RadzenStack class="rz-p-1 rz-text-align-center" Style="width:500px">
规格@drugSpec @myText.Spec@drugSpec
</RadzenStack> </RadzenStack>
<RadzenStack class="rz-p-1 rz-text-align-center" Style="width:500px"> <RadzenStack class="rz-p-1 rz-text-align-center" Style="width:500px">
厂家@drugManufactory @myText.Factory@drugManufactory
</RadzenStack> </RadzenStack>
<RadzenStack class="rz-p-1 rz-text-align-center" Style="width:500px"> <RadzenStack class="rz-p-1 rz-text-align-center" Style="width:500px">
可还空瓶数@emptyQuantity @myText.CanReturnQuantity@emptyQuantity
</RadzenStack> </RadzenStack>
</RadzenStack> </RadzenStack>
</RadzenFieldset> </RadzenFieldset>
@ -27,7 +27,7 @@
LoadData="@LoadData" LoadData="@LoadData"
IsLoading="@isLoading" IsLoading="@isLoading"
Count="@count" Count="@count"
EmptyText="无数据" EmptyText="@myText.NoDate"
Data="@_returnEmptys" Data="@_returnEmptys"
AllowColumnResize="true" AllowAlternatingRows="false" AllowColumnResize="true" AllowAlternatingRows="false"
AllowRowSelectOnRowClick="true" AllowRowSelectOnRowClick="true"
@ -36,25 +36,25 @@
<Columns> <Columns>
<RadzenDataGridColumn Width="60px" Sortable="false" Filterable="false"> <RadzenDataGridColumn Width="60px" Sortable="false" Filterable="false">
<HeaderTemplate> <HeaderTemplate>
选择 @myText.Select
</HeaderTemplate> </HeaderTemplate>
<Template Context="LoadData"> <Template Context="LoadData">
<RadzenCheckBox TriState="false" Value="@LoadData.IsSelected" InputAttributes="@(new Dictionary<string,object>(){ { "aria-label", "Select item" }})" <RadzenCheckBox TriState="false" Value="@LoadData.IsSelected" InputAttributes="@(new Dictionary<string,object>(){ { "aria-label", "Select item" }})"
TValue="bool" /> TValue="bool" />
</Template> </Template>
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenDataGridColumn Frozen="true" Title="操作人" Property="OperatorUser.NickName"></RadzenDataGridColumn> <RadzenDataGridColumn Frozen="true" Title="@myText.Operator" Property="OperatorUser.NickName"></RadzenDataGridColumn>
<RadzenDataGridColumn Width="170px" Title="操作时间" Property="OperationTime"></RadzenDataGridColumn> <RadzenDataGridColumn Width="170px" Title="@myText.OperateDate" Property="OperationTime"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="批次" Property="ManuNo"> <RadzenDataGridColumn Title="@myText.Batch" Property="ManuNo">
<Template Context="mr"> <Template Context="mr">
<RadzenText TextStyle="TextStyle.Subtitle2" class="mb-0">@mr.ManuNo</RadzenText> <RadzenText TextStyle="TextStyle.Subtitle2" class="mb-0">@mr.ManuNo</RadzenText>
<RadzenText TextStyle="TextStyle.Caption"> @mr.EffDate?.ToString("yyyy-MM-dd")</RadzenText> <RadzenText TextStyle="TextStyle.Caption"> @mr.EffDate?.ToString("yyyy-MM-dd")</RadzenText>
</Template> </Template>
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenDataGridColumn Title="数量" Property="Quantity"></RadzenDataGridColumn> <RadzenDataGridColumn Title="@myText.Quantity" Property="Quantity"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="已还药品" Property="ReturnQuantity1"></RadzenDataGridColumn> <RadzenDataGridColumn Title="@myText.ReturnQuantity" Property="ReturnQuantity1"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="已还空瓶" Property="ReturnQuantity2"></RadzenDataGridColumn> <RadzenDataGridColumn Title="@myText.ReturnEmpty" Property="ReturnQuantity2"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="本次归还" Property="CurrentReturnQuantity"> <RadzenDataGridColumn Title="@myText.CurrentReturn" Property="CurrentReturnQuantity">
<EditTemplate Context="mr"> <EditTemplate Context="mr">
<RadzenNumeric Min="0" Style="display: block" Max="@(mr.Quantity - mr.ReturnQuantity1 - mr.ReturnQuantity2)" Name="Quantity" @bind-Value=@mr.CurrentReturnQuantity /> <RadzenNumeric Min="0" Style="display: block" Max="@(mr.Quantity - mr.ReturnQuantity1 - mr.ReturnQuantity2)" Name="Quantity" @bind-Value=@mr.CurrentReturnQuantity />
</EditTemplate> </EditTemplate>
@ -65,15 +65,15 @@
<RadzenStack Orientation="Orientation.Horizontal" JustifyContent="JustifyContent.Center" Gap="0.5rem" Style="margin-top:15px;"> <RadzenStack Orientation="Orientation.Horizontal" JustifyContent="JustifyContent.Center" Gap="0.5rem" Style="margin-top:15px;">
@if (status < 2) @if (status < 2)
{ {
<RadzenButton Click="@StartAdd" IsBusy="status > 0" BusyText="还空瓶中。。。" ButtonStyle="ButtonStyle.Warning" Variant="Variant.Flat" Text="归还" Style="width: 120px" /> <RadzenButton Click="@StartAdd" IsBusy="status > 0" BusyText="@myText.Returning" ButtonStyle="ButtonStyle.Warning" Variant="Variant.Flat" Text="@myText.Return" Style="width: 120px" />
} }
@if (status == 2) @if (status == 2)
{ {
<RadzenButton Click="@AddFinish" ButtonStyle="ButtonStyle.Success" Variant="Variant.Flat" Text="完成" Style="width: 120px" /> <RadzenButton Click="@AddFinish" ButtonStyle="ButtonStyle.Success" Variant="Variant.Flat" Text="@myText.Complete" Style="width: 120px" />
} }
@if (status < 2) @if (status < 2)
{ {
<RadzenButton Click="@((args) => CancelOpera())" Variant="Variant.Flat" Text="取消" Style="width: 120px" /> <RadzenButton Click="@((args) => CancelOpera())" Variant="Variant.Flat" Text="@myText.Cancel" Style="width: 120px" />
} }
</RadzenStack> </RadzenStack>
@code @code
@ -84,6 +84,8 @@
@inject IOptions<DrawerConfig> setting; @inject IOptions<DrawerConfig> setting;
@inject NotificationService _message @inject NotificationService _message
@inject PortUtil PortUtil; @inject PortUtil PortUtil;
@inject Toolbelt.Blazor.I18nText.I18nText I18nText;
private I18nText.local myText = new I18nText.local();
[Parameter] [Parameter]
public ChannelStock records { get; set; } public ChannelStock records { get; set; }
@ -305,4 +307,9 @@
//重置状态 //重置状态
this.RestData(); this.RestData();
} }
protected override async Task OnInitializedAsync()
{
myText = await I18nText.GetTextTableAsync<I18nText.local>(this);
base.OnInitializedAsync();
}
} }

View File

@ -6,11 +6,11 @@
<div class="col-12 mb-4"> <div class="col-12 mb-4">
<form onsubmit="@(() => grid.Reload())"> <form onsubmit="@(() => grid.Reload())">
<RadzenFieldset Text="查询"> <RadzenFieldset Text="@myText.Search">
<RadzenStack Orientation="Orientation.Horizontal" Gap="1rem"> <RadzenStack Orientation="Orientation.Horizontal" Gap="1rem">
<RadzenRow AlignItems="AlignItems.Center"> <RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="4"> <RadzenColumn Size="4">
<RadzenLabel Text="开始时间" Component="Start" /> <RadzenLabel Text="@myText.StartDate" Component="Start" />
</RadzenColumn> </RadzenColumn>
<RadzenColumn Size="8"> <RadzenColumn Size="8">
<RadzenDatePicker DateFormat="yyyy-MM-dd HH:mm:ss" ShowTime="true" @bind-Value="start" Style="width: 100%;" Name="Start" /> <RadzenDatePicker DateFormat="yyyy-MM-dd HH:mm:ss" ShowTime="true" @bind-Value="start" Style="width: 100%;" Name="Start" />
@ -18,7 +18,7 @@
</RadzenRow> </RadzenRow>
<RadzenRow AlignItems="AlignItems.Center"> <RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="4"> <RadzenColumn Size="4">
<RadzenLabel Text="结束时间" Component="End" /> <RadzenLabel Text="@myText.EndDate" Component="End" />
</RadzenColumn> </RadzenColumn>
<RadzenColumn Size="8"> <RadzenColumn Size="8">
<RadzenDatePicker DateFormat="yyyy-MM-dd HH:mm:ss" ShowTime="true" @bind-Value="end" Style="width: 100%;" Name="End" /> <RadzenDatePicker DateFormat="yyyy-MM-dd HH:mm:ss" ShowTime="true" @bind-Value="end" Style="width: 100%;" Name="End" />
@ -27,8 +27,8 @@
<RadzenRow AlignItems="AlignItems.Center"> <RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="12"> <RadzenColumn Size="12">
<RadzenButton Size="ButtonSize.Large" ButtonType="ButtonType.Submit" IsBusy="isLoading" Icon="search" Text="查询" /> <RadzenButton Size="ButtonSize.Large" ButtonType="ButtonType.Submit" IsBusy="isLoading" Icon="search" Text="@myText.Search" />
<RadzenButton Size="ButtonSize.Large" Click="reloadGrid" IsBusy="isLoading" Icon="refresh" Text="重置" ButtonStyle="ButtonStyle.Warning" /> <RadzenButton Size="ButtonSize.Large" Click="reloadGrid" IsBusy="isLoading" Icon="refresh" Text="@myText.Restore" ButtonStyle="ButtonStyle.Warning" />
</RadzenColumn> </RadzenColumn>
</RadzenRow> </RadzenRow>
</RadzenStack> </RadzenStack>
@ -41,19 +41,19 @@
LoadData="@LoadData" LoadData="@LoadData"
IsLoading="@isLoading" IsLoading="@isLoading"
Count="@count" Count="@count"
EmptyText="无数据" EmptyText="@myText.NoDate"
Data="@_forecasts" Data="@_forecasts"
AllowColumnResize="true" AllowAlternatingRows="false" AllowColumnResize="true" AllowAlternatingRows="false"
SelectionMode="DataGridSelectionMode.Single" SelectionMode="DataGridSelectionMode.Single"
AllowPaging="true" PageSize="10" PagerHorizontalAlign="HorizontalAlign.Left" ShowPagingSummary="true" PagingSummaryFormat="{0}/{1} ¹²{2}ÌõÊý¾Ý"> AllowPaging="true" PageSize="10" PagerHorizontalAlign="HorizontalAlign.Left" ShowPagingSummary="true" PagingSummaryFormat="{0}/{1} ¹²{2}ÌõÊý¾Ý">
<Columns> <Columns>
<RadzenDataGridColumn Frozen="true" Title="操作人" Property="OperatorUser.NickName"></RadzenDataGridColumn> <RadzenDataGridColumn Frozen="true" Title="@myText.Operator" Property="OperatorUser.NickName"></RadzenDataGridColumn>
<RadzenDataGridColumn Width="170px" Title="操作时间" Property="OperationTime"></RadzenDataGridColumn> <RadzenDataGridColumn Width="170px" Title="@myText.OperateDate" Property="OperationTime"></RadzenDataGridColumn>
<RadzenDataGridColumn Width="200px" Title="药品名称" Property="Drug.DrugName"></RadzenDataGridColumn> <RadzenDataGridColumn Width="200px" Title="@myText.DrugName" Property="Drug.DrugName"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="规格" Property="Drug.DrugSpec"></RadzenDataGridColumn> <RadzenDataGridColumn Title="@myText.Spec" Property="Drug.DrugSpec"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="数量" Property="Quantity"></RadzenDataGridColumn> <RadzenDataGridColumn Title="@myText.Quantity" Property="Quantity"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="批次" Property="ManuNo"></RadzenDataGridColumn> <RadzenDataGridColumn Title="@myText.Batch" Property="ManuNo"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="效期" Property="EffDate"> <RadzenDataGridColumn Title="@myText.Expiration" Property="EffDate">
<Template Context="mr"> <Template Context="mr">
@mr.EffDate?.ToString("yyyy-MM-dd") @mr.EffDate?.ToString("yyyy-MM-dd")
</Template> </Template>
@ -67,6 +67,8 @@
@code { @code {
@inject IMachineRecordDao machineRecordDao; @inject IMachineRecordDao machineRecordDao;
@inject DialogService dialogService; @inject DialogService dialogService;
@inject Toolbelt.Blazor.I18nText.I18nText I18nText;
private I18nText.local myText = new I18nText.local();
RadzenDataGrid<MachineRecord> grid; RadzenDataGrid<MachineRecord> grid;
bool isLoading; bool isLoading;
int count; int count;
@ -94,7 +96,11 @@
await grid.Reload(); await grid.Reload();
} }
protected override async Task OnInitializedAsync()
{
myText = await I18nText.GetTextTableAsync<I18nText.local>(this);
base.OnInitializedAsync();
}

View File

@ -6,12 +6,12 @@
<div class="col-12 mb-4"> <div class="col-12 mb-4">
<form onsubmit="@(() => grid.Reload())"> <form onsubmit="@(() => grid.Reload())">
<RadzenFieldset Text="查询"> <RadzenFieldset Text="@myText.Search">
<RadzenStack Orientation="Orientation.Horizontal" JustifyContent="JustifyContent.SpaceBetween"> <RadzenStack Orientation="Orientation.Horizontal" JustifyContent="JustifyContent.SpaceBetween">
<RadzenStack Orientation="Orientation.Horizontal" Gap="1rem"> <RadzenStack Orientation="Orientation.Horizontal" Gap="1rem">
<RadzenRow AlignItems="AlignItems.Center"> <RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="4"> <RadzenColumn Size="4">
<RadzenLabel Text="角色名称" Component="RoleName" /> <RadzenLabel Text="@myText.RoleName" Component="RoleName" />
</RadzenColumn> </RadzenColumn>
<RadzenColumn Size="8"> <RadzenColumn Size="8">
<RadzenTextBox @bind-Value="RoleName" Style="width: 100%;" Name="RoleName"></RadzenTextBox> <RadzenTextBox @bind-Value="RoleName" Style="width: 100%;" Name="RoleName"></RadzenTextBox>
@ -20,12 +20,12 @@
<RadzenRow AlignItems="AlignItems.Center"> <RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="12"> <RadzenColumn Size="12">
<RadzenButton Size="ButtonSize.Medium" ButtonType="ButtonType.Submit" IsBusy="isLoading" Icon="search" Text="查询" /> <RadzenButton Size="ButtonSize.Medium" ButtonType="ButtonType.Submit" IsBusy="isLoading" Icon="search" Text="@myText.Search" />
<RadzenButton Size="ButtonSize.Medium" Click="reloadGrid" IsBusy="isLoading" Icon="refresh" Text="重置" ButtonStyle="ButtonStyle.Warning" /> <RadzenButton Size="ButtonSize.Medium" Click="reloadGrid" IsBusy="isLoading" Icon="refresh" Text="@myText.Restore" ButtonStyle="ButtonStyle.Warning" />
</RadzenColumn> </RadzenColumn>
</RadzenRow> </RadzenRow>
</RadzenStack> </RadzenStack>
<RadzenButton Size="ButtonSize.Medium" ButtonStyle="ButtonStyle.Success" Icon="add_circle_outline" Click="@(() => InsertRow())" Disabled="@(rolesToInsert.Count() > 0)" Text="新增" /> <RadzenButton Size="ButtonSize.Medium" ButtonStyle="ButtonStyle.Success" Icon="add_circle_outline" Click="@(() => InsertRow())" Disabled="@(rolesToInsert.Count() > 0)" Text="@myText.Add" />
</RadzenStack> </RadzenStack>
</RadzenFieldset> </RadzenFieldset>
</form> </form>
@ -35,7 +35,7 @@
LoadData="@LoadData" LoadData="@LoadData"
IsLoading="@isLoading" IsLoading="@isLoading"
Count="@count" Count="@count"
EmptyText="无数据" EmptyText="@myText.NoDate"
Data="@roleList" Data="@roleList"
AllowColumnResize="true" AllowAlternatingRows="false" AllowColumnResize="true" AllowAlternatingRows="false"
RowUpdate="@((Pojo.Role r) => { OnUpdateRow(r); })" RowCreate="@((Pojo.Role r) => { OnCreateRow(r); })" RowUpdate="@((Pojo.Role r) => { OnUpdateRow(r); })" RowCreate="@((Pojo.Role r) => { OnCreateRow(r); })"
@ -43,13 +43,13 @@
AllowPaging="true" PageSize="10" PagerHorizontalAlign="HorizontalAlign.Left" ShowPagingSummary="true" PagingSummaryFormat="{0}/{1} 共{2}条数据"> AllowPaging="true" PageSize="10" PagerHorizontalAlign="HorizontalAlign.Left" ShowPagingSummary="true" PagingSummaryFormat="{0}/{1} 共{2}条数据">
<Columns> <Columns>
<RadzenDataGridColumn Width="50px" Title="ID" Property="Id"></RadzenDataGridColumn> <RadzenDataGridColumn Width="50px" Title="ID" Property="Id"></RadzenDataGridColumn>
<RadzenDataGridColumn Width="120px" Title="角色名称" Property="RoleName"> <RadzenDataGridColumn Width="120px" Title="@myText.RoleName" Property="RoleName">
<EditTemplate Context="role"> <EditTemplate Context="role">
<RadzenTextBox Name="RoleName" @bind-Value="role.RoleName" Style="width:100%; display: block;" /> <RadzenTextBox Name="RoleName" @bind-Value="role.RoleName" Style="width:100%; display: block;" />
<RadzenRequiredValidator Style="position: absolute;z-index: 9999;" Text="请填写角色名称" Component="RoleName" Popup="true" /> <RadzenRequiredValidator Style="position: absolute;z-index: 9999;" Text="@myText.InputRoleName" Component="RoleName" Popup="true" />
</EditTemplate> </EditTemplate>
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenDataGridColumn Title="权限" Property="permissions"> <RadzenDataGridColumn Title="@myText.Role" Property="permissions">
<Template Context="role"> <Template Context="role">
@string.Join(", ", allPremissions.Where(g => role.permissionIds?.Contains(g.Id) == true).Select(g => $"{g.PremissionName}")) @string.Join(", ", allPremissions.Where(g => role.permissionIds?.Contains(g.Id) == true).Select(g => $"{g.PremissionName}"))
</Template> </Template>
@ -66,7 +66,7 @@
@string.Join(", ", allPremissions.Where(g => role.permissionIds?.Contains(g.Id) == true).Take(dd.MaxSelectedLabels).Select(g => $"{g.PremissionName}")) @string.Join(", ", allPremissions.Where(g => role.permissionIds?.Contains(g.Id) == true).Take(dd.MaxSelectedLabels).Select(g => $"{g.PremissionName}"))
</ValueTemplate> </ValueTemplate>
</RadzenDropDown> </RadzenDropDown>
<RadzenRequiredValidator Style="position: absolute;z-index: 9999;" Text="请选择权限" Component="Permissions" Popup="true" /> <RadzenRequiredValidator Style="position: absolute;z-index: 9999;" Text="@myText.SelectRole" Component="Permissions" Popup="true" />
</EditTemplate> </EditTemplate>
</RadzenDataGridColumn> </RadzenDataGridColumn>
@ -97,6 +97,8 @@
@code { @code {
@inject IRoleDao roleDao; @inject IRoleDao roleDao;
@inject DialogService dialogService; @inject DialogService dialogService;
@inject Toolbelt.Blazor.I18nText.I18nText I18nText;
private I18nText.local myText = new I18nText.local();
RadzenDataGrid<Pojo.Role> grid; RadzenDataGrid<Pojo.Role> grid;
bool isLoading; bool isLoading;
int count; int count;
@ -110,6 +112,7 @@
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
myText = await I18nText.GetTextTableAsync<I18nText.local>(this);
await base.OnInitializedAsync(); await base.OnInitializedAsync();
List<Premission> t = new Premission().getAdminPremission(); List<Premission> t = new Premission().getAdminPremission();
IEnumerable<Premission> t2 = Enumerable.Empty<Premission>(); IEnumerable<Premission> t2 = Enumerable.Empty<Premission>();
@ -197,8 +200,8 @@
{ {
//弹出确认提示框 //弹出确认提示框
var b = await dialogService.OpenAsync<ConfirmDialog>( var b = await dialogService.OpenAsync<ConfirmDialog>(
$"删除确认", myText.ConfirmDelete,
new Dictionary<string, object>() { { "confirmInfo", "确认要删除角色:" + role.RoleName+"吗" } }, new Dictionary<string, object>() { { "confirmInfo", $"{myText.ConfirmDeleteRole}" + role.RoleName + "" } },
new DialogOptions() { Width = "45vw", Resizable = true, Draggable = true, ShowClose = false }); new DialogOptions() { Width = "45vw", Resizable = true, Draggable = true, ShowClose = false });
if (b) if (b)
{ {

View File

@ -4,102 +4,102 @@
<div class="col-12 mb-4"> <div class="col-12 mb-4">
<RadzenTemplateForm Data="@orderInfo" Submit="@(((OrderInfo args) => { Submit(args); }))"> <RadzenTemplateForm Data="@orderInfo" Submit="@(((OrderInfo args) => { Submit(args); }))">
<RadzenFieldset Text="手写处方"> <RadzenFieldset Text="@myText.WriteOrder">
<RadzenRow Gap="1rem"> <RadzenRow Gap="1rem">
<RadzenColumn Size="4"> <RadzenColumn Size="4">
<RadzenRow AlignItems="AlignItems.Center"> <RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="4"> <RadzenColumn Size="4">
<RadzenLabel Text="处方号" Component="OrderNo" /> <RadzenLabel Text="@myText.OrderNo" Component="OrderNo" />
</RadzenColumn> </RadzenColumn>
<RadzenColumn Size="8"> <RadzenColumn Size="8">
<RadzenTextBox @bind-Value="orderInfo.OrderNo" Style="width: 100%;" Name="OrderNo"></RadzenTextBox> <RadzenTextBox @bind-Value="orderInfo.OrderNo" Style="width: 100%;" Name="OrderNo"></RadzenTextBox>
<RadzenRequiredValidator Text="请输入处方号" Component="OrderNo" /> <RadzenRequiredValidator Text="@myText.InputOrderTips" Component="OrderNo" />
</RadzenColumn> </RadzenColumn>
</RadzenRow> </RadzenRow>
</RadzenColumn> </RadzenColumn>
<RadzenColumn Size="4"> <RadzenColumn Size="4">
<RadzenRow AlignItems="AlignItems.Center"> <RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="4"> <RadzenColumn Size="4">
<RadzenLabel Text="处方时间" Component="OrderDate" /> <RadzenLabel Text="@myText.OrderDate" Component="OrderDate" />
</RadzenColumn> </RadzenColumn>
<RadzenColumn Size="8"> <RadzenColumn Size="8">
<RadzenDatePicker DateFormat="yyyy-MM-dd HH:mm:ss" CurrentDateChanged="@OnCurrentDateChanged" <RadzenDatePicker DateFormat="yyyy-MM-dd HH:mm:ss" CurrentDateChanged="@OnCurrentDateChanged"
ShowTime="true" ShowSeconds="true" ShowTime="true" ShowSeconds="true"
@bind-Value="orderInfo.OrderDate" Style="width: 100%;" Name="OrderDate" /> @bind-Value="orderInfo.OrderDate" Style="width: 100%;" Name="OrderDate" />
<RadzenRequiredValidator Text="请输入处方时间" Component="OrderDate" /> <RadzenRequiredValidator Text="@myText.InputOrderDate" Component="OrderDate" />
</RadzenColumn> </RadzenColumn>
</RadzenRow> </RadzenRow>
</RadzenColumn> </RadzenColumn>
<RadzenColumn Size="4"> <RadzenColumn Size="4">
<RadzenRow AlignItems="AlignItems.Center"> <RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="4"> <RadzenColumn Size="4">
<RadzenLabel Text="患者姓名" Component="PatientName" /> <RadzenLabel Text="@myText.PatientName" Component="PatientName" />
</RadzenColumn> </RadzenColumn>
<RadzenColumn Size="8"> <RadzenColumn Size="8">
<RadzenTextBox @bind-Value="orderInfo.PatientName" Style="width: 100%;" Name="PatientName"></RadzenTextBox> <RadzenTextBox @bind-Value="orderInfo.PatientName" Style="width: 100%;" Name="PatientName"></RadzenTextBox>
<RadzenRequiredValidator Text="请输入患者姓名" Component="PatientName" /> <RadzenRequiredValidator Text="@myText.InputPatientName" Component="PatientName" />
</RadzenColumn> </RadzenColumn>
</RadzenRow> </RadzenRow>
</RadzenColumn> </RadzenColumn>
<RadzenColumn Size="2"> <RadzenColumn Size="2">
<RadzenRow AlignItems="AlignItems.Center"> <RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="4"> <RadzenColumn Size="4">
<RadzenLabel Text="性别" Component="Sex" /> <RadzenLabel Text="@myText.Sex" Component="Sex" />
</RadzenColumn> </RadzenColumn>
<RadzenColumn Size="8"> <RadzenColumn Size="8">
<RadzenTextBox @bind-Value="orderInfo.Sex" Style="width: 100%;" Name="Sex"></RadzenTextBox> <RadzenTextBox @bind-Value="orderInfo.Sex" Style="width: 100%;" Name="Sex"></RadzenTextBox>
<RadzenRequiredValidator Text="请输入患者性别" Component="Sex" /> <RadzenRequiredValidator Text="@myText.InputPatientSex" Component="Sex" />
</RadzenColumn> </RadzenColumn>
</RadzenRow> </RadzenRow>
</RadzenColumn> </RadzenColumn>
<RadzenColumn Size="2"> <RadzenColumn Size="2">
<RadzenRow AlignItems="AlignItems.Center"> <RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="4"> <RadzenColumn Size="4">
<RadzenLabel Text="年龄" Component="Age" /> <RadzenLabel Text="@myText.Age" Component="Age" />
</RadzenColumn> </RadzenColumn>
<RadzenColumn Size="8"> <RadzenColumn Size="8">
<RadzenTextBox @bind-Value="orderInfo.Age" Style="width: 100%;" Name="Age"></RadzenTextBox> <RadzenTextBox @bind-Value="orderInfo.Age" Style="width: 100%;" Name="Age"></RadzenTextBox>
<RadzenRequiredValidator Text="请输入患者年龄" Component="Age" /> <RadzenRequiredValidator Text="@myText.InputPatientAge" Component="Age" />
</RadzenColumn> </RadzenColumn>
</RadzenRow> </RadzenRow>
</RadzenColumn> </RadzenColumn>
<RadzenColumn Size="4"> <RadzenColumn Size="4">
<RadzenRow AlignItems="AlignItems.Center"> <RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="4"> <RadzenColumn Size="4">
<RadzenLabel Text="处方医生" Component="DoctorName" /> <RadzenLabel Text="@myText.OrderDoctor" Component="DoctorName" />
</RadzenColumn> </RadzenColumn>
<RadzenColumn Size="8"> <RadzenColumn Size="8">
<RadzenTextBox @bind-Value="orderInfo.DoctorName" Style="width: 100%;" Name="DoctorName"></RadzenTextBox> <RadzenTextBox @bind-Value="orderInfo.DoctorName" Style="width: 100%;" Name="DoctorName"></RadzenTextBox>
<RadzenRequiredValidator Text="请输入处方医生" Component="DoctorName" /> <RadzenRequiredValidator Text="@myText.Doctor" Component="DoctorName" />
</RadzenColumn> </RadzenColumn>
</RadzenRow> </RadzenRow>
</RadzenColumn> </RadzenColumn>
<RadzenColumn Size="4"> <RadzenColumn Size="4">
<RadzenRow AlignItems="AlignItems.Center"> <RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="4"> <RadzenColumn Size="4">
<RadzenLabel Text="科室" Component="DeptName" /> <RadzenLabel Text="@myText.DeptName" Component="DeptName" />
</RadzenColumn> </RadzenColumn>
<RadzenColumn Size="8"> <RadzenColumn Size="8">
<RadzenTextBox @bind-Value="orderInfo.DeptName" Style="width: 100%;" Name="DeptName"></RadzenTextBox> <RadzenTextBox @bind-Value="orderInfo.DeptName" Style="width: 100%;" Name="DeptName"></RadzenTextBox>
<RadzenRequiredValidator Text="请输入科室" Component="DeptName" /> <RadzenRequiredValidator Text="@myText.InputDept" Component="DeptName" />
</RadzenColumn> </RadzenColumn>
</RadzenRow> </RadzenRow>
</RadzenColumn> </RadzenColumn>
<RadzenColumn Size="6"> <RadzenColumn Size="6">
<RadzenRow AlignItems="AlignItems.Center"> <RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="2"> <RadzenColumn Size="2">
<RadzenLabel Text="诊断" Component="Disease" /> <RadzenLabel Text="@myText.Diagnose" Component="Disease" />
</RadzenColumn> </RadzenColumn>
<RadzenColumn Size="10"> <RadzenColumn Size="10">
<RadzenTextBox @bind-Value="orderInfo.Disease" Style="width: 100%;" Name="Disease"></RadzenTextBox> <RadzenTextBox @bind-Value="orderInfo.Disease" Style="width: 100%;" Name="Disease"></RadzenTextBox>
<RadzenRequiredValidator Text="请输入诊断" Component="Disease" /> <RadzenRequiredValidator Text="@myText.InputDisease" Component="Disease" />
</RadzenColumn> </RadzenColumn>
</RadzenRow> </RadzenRow>
</RadzenColumn> </RadzenColumn>
<RadzenColumn Size="6"> <RadzenColumn Size="6">
<RadzenStack Orientation="Orientation.Horizontal" AlignItems="AlignItems.Center" JustifyContent="JustifyContent.SpaceBetween"> <RadzenStack Orientation="Orientation.Horizontal" AlignItems="AlignItems.Center" JustifyContent="JustifyContent.SpaceBetween">
<RadzenButton Size="ButtonSize.Large" ButtonType="ButtonType.Submit" Disabled="@(detailsToInsert.Count() > 0 || detailsToUpdate.Count() > 0)" Text="确定" /> <RadzenButton Size="ButtonSize.Large" ButtonType="ButtonType.Submit" Disabled="@(detailsToInsert.Count() > 0 || detailsToUpdate.Count() > 0)" Text="@myText.Confirm" />
<RadzenButton Size="ButtonSize.Large" Icon="add_circle_outline" ButtonStyle="ButtonStyle.Success" Click="@InsertRow" Disabled="@(detailsToInsert.Count() > 0)" Text="添加" /> <RadzenButton Size="ButtonSize.Large" Icon="add_circle_outline" ButtonStyle="ButtonStyle.Success" Click="@InsertRow" Disabled="@(detailsToInsert.Count() > 0)" Text="@myText.Add" />
</RadzenStack> </RadzenStack>
</RadzenColumn> </RadzenColumn>
</RadzenRow> </RadzenRow>
@ -109,33 +109,32 @@
<div class="col-12 mb-4"> <div class="col-12 mb-4">
<RadzenDataGrid @ref="grid" <RadzenDataGrid @ref="grid"
EmptyText="请添加手写处方详情" EmptyText="@myText.AddNewOrder"
Data="@orderDetails" Data="@orderDetails"
EditMode="DataGridEditMode.Single" EditMode="DataGridEditMode.Single"
RowUpdate="@((OrderDetail od) => { OnUpdateRow(od); })" RowCreate="@((OrderDetail od) => { OnCreateRow(od); })" RowUpdate="@((OrderDetail od) => { OnUpdateRow(od); })" RowCreate="@((OrderDetail od) => { OnCreateRow(od); })"
AllowColumnResize="true" AllowAlternatingRows="false" AllowColumnResize="true" AllowAlternatingRows="false"
SelectionMode="DataGridSelectionMode.Single"> SelectionMode="DataGridSelectionMode.Single">
<Columns> <Columns>
<RadzenDataGridColumn Title="药品名称" Property="Drug.DrugName"> <RadzenDataGridColumn Title="@myText.DrugName" Property="Drug.DrugName">
<EditTemplate Context="od"> <EditTemplate Context="od">
@* <RadzenDropDown Name="Drug" TValue="DrugInfo" @bind-Value="od.Drug" Data="@drugInfos" Style="width:100%; display: block;" /> *@
<RadzenDropDownDataGrid AllowVirtualization="true" Name="Drug" TValue="DrugInfo" @bind-Value="od.Drug" Data="@drugInfos" Style="width:100%; display: block;" AllowFilteringByAllStringColumns="true"> <RadzenDropDownDataGrid AllowVirtualization="true" Name="Drug" TValue="DrugInfo" @bind-Value="od.Drug" Data="@drugInfos" Style="width:100%; display: block;" AllowFilteringByAllStringColumns="true">
<Columns> <Columns>
<RadzenDropDownDataGridColumn Property="DrugId" Title="药品编码" /> <RadzenDropDownDataGridColumn Property="DrugId" Title="@myText.DrugCode" />
<RadzenDropDownDataGridColumn Property="DrugName" Width="120px" Title="名称" /> <RadzenDropDownDataGridColumn Property="DrugName" Width="120px" Title="@myText.DrugName" />
<RadzenDropDownDataGridColumn Property="DrugSpec" Title="规格" /> <RadzenDropDownDataGridColumn Property="DrugSpec" Title="@myText.Spec" />
<RadzenDropDownDataGridColumn Property="StockQuantity" Title="库存" Frozen="true" FrozenPosition="FrozenColumnPosition.Right" /> <RadzenDropDownDataGridColumn Property="StockQuantity" Title="@myText.Inventory" Frozen="true" FrozenPosition="FrozenColumnPosition.Right" />
</Columns> </Columns>
</RadzenDropDownDataGrid> </RadzenDropDownDataGrid>
<RadzenCustomValidator Style="position: absolute;z-index: 9999;" Component="Drug" Validator="@(() => !String.IsNullOrEmpty(od.Drug.DrugId ))" Text="请选择药品" /> <RadzenCustomValidator Style="position: absolute;z-index: 9999;" Component="Drug" Validator="@(() => !String.IsNullOrEmpty(od.Drug.DrugId))" Text="@myText.SelectDrug" />
<RadzenCustomValidator Component="Drug" Validator="@(() => ValidateDrug(od.Drug))" Text="已经选择的药品不能再次选择" /> <RadzenCustomValidator Component="Drug" Validator="@(() => ValidateDrug(od.Drug))" Text="@myText.HasSelect" />
</EditTemplate> </EditTemplate>
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenDataGridColumn Title="规格" Property="Drug.DrugSpec"></RadzenDataGridColumn> <RadzenDataGridColumn Title="@myText.Spec" Property="Drug.DrugSpec"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="数量" Property="Quantity"> <RadzenDataGridColumn Title="@myText.Quantity" Property="Quantity">
<EditTemplate Context="od"> <EditTemplate Context="od">
<RadzenNumeric Style="width:100%; display: block;" Name="Quantity" @bind-Value=@od.Quantity /> <RadzenNumeric Style="width:100%; display: block;" Name="Quantity" @bind-Value=@od.Quantity />
<RadzenNumericRangeValidator Style="position: absolute;z-index: 9999;" Min="1" Max="@od.Drug.StockQuantity" Text="请填写正确的取出数量" Component="Quantity" /> <RadzenNumericRangeValidator Style="position: absolute;z-index: 9999;" Min="1" Max="@od.Drug.StockQuantity" Text="@myText.InputTips" Component="Quantity" />
</EditTemplate> </EditTemplate>
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenDataGridColumn Context="detail" Filterable="false" Sortable="false" TextAlign="TextAlign.Right" Frozen="true" FrozenPosition="FrozenColumnPosition.Right"> <RadzenDataGridColumn Context="detail" Filterable="false" Sortable="false" TextAlign="TextAlign.Right" Frozen="true" FrozenPosition="FrozenColumnPosition.Right">
@ -165,6 +164,8 @@
@inject IDrugInfoDao drugInfoDao; @inject IDrugInfoDao drugInfoDao;
@inject NotificationService _message @inject NotificationService _message
@inject DialogService dialogService; @inject DialogService dialogService;
@inject Toolbelt.Blazor.I18nText.I18nText I18nText;
private I18nText.local myText = new I18nText.local();
RadzenDataGrid<OrderDetail> grid; RadzenDataGrid<OrderDetail> grid;
List<OrderDetail> orderDetails = new(); List<OrderDetail> orderDetails = new();
@ -180,7 +181,7 @@
}; };
void Reset() void Reset()
{ {
detailsToInsert.Clear(); detailsToInsert.Clear();
@ -251,21 +252,21 @@
if (orderDetails.Count == 0) if (orderDetails.Count == 0)
{ {
_message.Notify( _message.Notify(
new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"请添加用药详情", Duration = 3000 } new NotificationMessage { Severity = NotificationSeverity.Error, Summary = myText.Tips, Detail = $"请添加用药详情", Duration = 3000 }
); );
} }
else else
{ {
//弹出待取药品所在库位、库存信息 //弹出待取药品所在库位、库存信息
var b = await dialogService.OpenAsync<SelfTakeDialog>( var b = await dialogService.OpenAsync<SelfTakeDialog>(
$"取药详情", myText.TakeDetail,
new Dictionary<string, object>() { { "order", orderInfo }, { "orderDetails", orderDetails } }, new Dictionary<string, object>() { { "order", orderInfo }, { "orderDetails", orderDetails } },
new DialogOptions() { Width = "85vw", Resizable = true, Draggable = true, ShowClose = false } new DialogOptions() { Width = "85vw", Resizable = true, Draggable = true, ShowClose = false }
); );
if (b) if (b)
{ {
_message.Notify( _message.Notify(
new NotificationMessage { Severity = NotificationSeverity.Success, Summary = "提示", Detail = $"取药完成", Duration = 3000 } new NotificationMessage { Severity = NotificationSeverity.Success, Summary = myText.Tips, Detail = $"取药完成", Duration = 3000 }
); );
} }
} }
@ -282,6 +283,8 @@
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
myText = await I18nText.GetTextTableAsync<I18nText.local>(this);
drugInfos = await drugInfoDao.GetAllDrugAndStock(); drugInfos = await drugInfoDao.GetAllDrugAndStock();
base.OnInitializedAsync(); base.OnInitializedAsync();

View File

@ -62,28 +62,28 @@
switch(channel.BoardType) switch(channel.BoardType)
{ {
case 1: case 1:
<b>物理隔板</b> <b>@myText.DrawerType1</b>
break; break;
case 2: case 2:
<b>单支计数</b> <b>@myText.DrawerType2</b>
break; break;
case 3: case 3:
<b>管控药盒</b> <b>@myText.DrawerType7</b>
break; break;
case 4: case 4:
<b>储物箱</b> <b>@myText.DrawerType8</b>
break; break;
case 5: case 5:
<b>智能显示</b> <b>@myText.DrawerType4</b>
break; break;
case 6: case 6:
<b>称重计数</b> <b>@myText.DrawerType9</b>
break; break;
case 63: case 63:
<b>称重计数药盒</b> <b>@myText.DrawerType10</b>
break; break;
case 653: case 653:
<b>称重计数药盒智能显示</b> <b>@myText.DrawerType3</b>
break; break;
} }
} }
@ -92,7 +92,7 @@
switch (channel.BoardType) switch (channel.BoardType)
{ {
case 1: case 1:
<b>内置回收</b> <b>@myText.DrawerType5</b>
break; break;
case 2: case 2:
<b>内置计数回收</b> <b>内置计数回收</b>
@ -122,7 +122,7 @@
switch (channel.BoardType) switch (channel.BoardType)
{ {
case 1: case 1:
<b>外置回收</b> <b>@myText.DrawerType6</b>
break; break;
} }
} }
@ -131,22 +131,22 @@
<RadzenColumn Size="4" Class="rz-text-align-end"> <RadzenColumn Size="4" Class="rz-text-align-end">
@if(channel.Quantity == 0) @if(channel.Quantity == 0)
{ {
<RadzenButton ButtonStyle="ButtonStyle.Secondary" Variant="Variant.Outlined" Size="ButtonSize.Small" Click="@(() => EditChannel(channel))" Text="绑定/解绑" /> <RadzenButton ButtonStyle="ButtonStyle.Secondary" Variant="Variant.Outlined" Size="ButtonSize.Small" Click="@(() => EditChannel(channel))" Text="@myText.BindUnBind" />
} }
</RadzenColumn> </RadzenColumn>
</RadzenRow> </RadzenRow>
<hr style="border: none; background-color: rgba(0,0,0,.2); height: 1px; margin: 1rem 0;" /> <hr style="border: none; background-color: rgba(0,0,0,.2); height: 1px; margin: 1rem 0;" />
<RadzenStack Orientation="Orientation.Horizontal" AlignItems="AlignItems.Center"> <RadzenStack Orientation="Orientation.Horizontal" AlignItems="AlignItems.Center">
<RadzenStack Gap="0"> <RadzenStack Gap="0">
<RadzenText TextStyle="TextStyle.Overline" class="rz-display-flex rz-mt-2 rz-my-0">药品</RadzenText> <RadzenText TextStyle="TextStyle.Overline" class="rz-display-flex rz-mt-2 rz-my-0">@myText.DrugName</RadzenText>
@if (channel.DrugId == null || channel.Quantity == 0) @if (channel.DrugId == null || channel.Quantity == 0)
{ {
<RadzenDropDownDataGrid Change="@((args) => { channel.drugManuNo = null; })" AllowVirtualization="true" Name="@("Drug_" + channel.Id)" TValue="DrugInfo" @bind-Value="channel.Drug" Data="@drugInfos" <RadzenDropDownDataGrid Change="@((args) => { channel.drugManuNo = null; })" AllowVirtualization="true" Name="@("Drug_" + channel.Id)" TValue="DrugInfo" @bind-Value="channel.Drug" Data="@drugInfos"
Style="width:100%; display: block;" AllowFilteringByAllStringColumns="true" TextProperty="DrugName"> Style="width:100%; display: block;" AllowFilteringByAllStringColumns="true" TextProperty="DrugName">
<Columns> <Columns>
<RadzenDropDownDataGridColumn Property="DrugId" Title="药品编码" Sortable="false" /> <RadzenDropDownDataGridColumn Property="DrugId" Title="@myText.DrugCode" Sortable="false" />
<RadzenDropDownDataGridColumn Property="DrugName" Width="120px" Title="名称" Sortable="false" /> <RadzenDropDownDataGridColumn Property="DrugName" Width="120px" Title="@myText.DrugName" Sortable="false" />
<RadzenDropDownDataGridColumn Property="DrugSpec" Title="规格" Sortable="false" /> <RadzenDropDownDataGridColumn Property="DrugSpec" Title="@myText.Spec" Sortable="false" />
</Columns> </Columns>
</RadzenDropDownDataGrid> </RadzenDropDownDataGrid>
} else } else
@ -156,13 +156,13 @@
} }
@if(channel.DrawerType == 1) @if(channel.DrawerType == 1)
{ {
<RadzenText TextStyle="TextStyle.Overline" class="rz-display-flex rz-mt-4 rz-mb-0">批次</RadzenText> <RadzenText TextStyle="TextStyle.Overline" class="rz-display-flex rz-mt-4 rz-mb-0">@myText.Batch</RadzenText>
@if (channel.DrugId == null || channel.Quantity == 0) @if (channel.DrugId == null || channel.Quantity == 0)
{ {
<RadzenDropDownDataGrid @bind-Value=@channel.drugManuNo Data=@channel.Drug?.Manus Disabled="@(channel.Drug == null)" TValue="DrugManuNo" Name="@("Drugmanu_" + channel.Id)" TextProperty="ManuNo"> <RadzenDropDownDataGrid @bind-Value=@channel.drugManuNo Data=@channel.Drug?.Manus Disabled="@(channel.Drug == null)" TValue="DrugManuNo" Name="@("Drugmanu_" + channel.Id)" TextProperty="ManuNo">
<Columns> <Columns>
<RadzenDropDownDataGridColumn Property="ManuNo" Title="批次" Sortable="false" /> <RadzenDropDownDataGridColumn Property="ManuNo" Title="@myText.Batch" Sortable="false" />
<RadzenDropDownDataGridColumn Property="EffDate" Title="效期" Sortable="false"> <RadzenDropDownDataGridColumn Property="EffDate" Title="@myText.Expiration" Sortable="false">
<Template Context="data"> <Template Context="data">
@data.EffDate.ToString("yyyy-MM-dd") @data.EffDate.ToString("yyyy-MM-dd")
</Template> </Template>
@ -177,7 +177,7 @@
} }
} }
<RadzenText TextStyle="TextStyle.Overline" class="rz-display-flex rz-mt-4 rz-mb-0">库存</RadzenText> <RadzenText TextStyle="TextStyle.Overline" class="rz-display-flex rz-mt-4 rz-mb-0">@myText.Inventory</RadzenText>
<RadzenText TextStyle="TextStyle.Body1"><b>@(channel.Quantity)</b></RadzenText> <RadzenText TextStyle="TextStyle.Body1"><b>@(channel.Quantity)</b></RadzenText>
</RadzenStack> </RadzenStack>
</RadzenStack> </RadzenStack>
@ -193,6 +193,8 @@
@inject IDrugInfoDao drugInfoDao; @inject IDrugInfoDao drugInfoDao;
@inject DialogService dialogService; @inject DialogService dialogService;
@inject NotificationService _message @inject NotificationService _message
@inject Toolbelt.Blazor.I18nText.I18nText I18nText;
private I18nText.local myText = new I18nText.local();
RadzenDataList<ChannelStock> grid; RadzenDataList<ChannelStock> grid;
bool isLoading; bool isLoading;
int count; int count;
@ -209,6 +211,7 @@
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
myText = await I18nText.GetTextTableAsync<I18nText.local>(this);
await base.OnInitializedAsync(); await base.OnInitializedAsync();
//drugInfos = await drugInfoDao.GetAllDrug(); //drugInfos = await drugInfoDao.GetAllDrug();
@ -247,7 +250,7 @@
if(b) if(b)
{ {
_message.Notify( _message.Notify(
new NotificationMessage { Severity = NotificationSeverity.Success, Summary = "提示", Detail = $"解除绑定成功", Duration = 4000 } new NotificationMessage { Severity = NotificationSeverity.Success, Summary = myText.Tips, Detail = myText.BindSuccess, Duration = 4000 }
); );
await reloadGrid(); await reloadGrid();
} }
@ -260,7 +263,7 @@
if (b) if (b)
{ {
_message.Notify( _message.Notify(
new NotificationMessage { Severity = NotificationSeverity.Success, Summary = "提示", Detail = $"绑定成功", Duration = 4000 } new NotificationMessage { Severity = NotificationSeverity.Success, Summary = myText.Tips, Detail = myText.BindSuccess, Duration = 4000 }
); );
await reloadGrid(); await reloadGrid();
} }
@ -274,7 +277,7 @@
if (b) if (b)
{ {
_message.Notify( _message.Notify(
new NotificationMessage { Severity = NotificationSeverity.Success, Summary = "提示", Detail = $"绑定成功", Duration = 4000 } new NotificationMessage { Severity = NotificationSeverity.Success, Summary = myText.Tips, Detail = myText.BindSuccess, Duration = 4000 }
); );
await reloadGrid(); await reloadGrid();
} }

View File

@ -28,7 +28,7 @@
LoadData="@LoadData" LoadData="@LoadData"
IsLoading="@isLoading" IsLoading="@isLoading"
Count="@count" Count="@count"
EmptyText="无数据" EmptyText="@myText.NoDate"
Data="@channels" Data="@channels"
AllowColumnResize="true" AllowAlternatingRows="false" AllowColumnResize="true" AllowAlternatingRows="false"
CellClick="@((DataGridCellMouseEventArgs<ChannelStock> args) => OnCellClick(args))" CellClick="@((DataGridCellMouseEventArgs<ChannelStock> args) => OnCellClick(args))"
@ -37,27 +37,27 @@
<RadzenRow JustifyContent="JustifyContent.End"> <RadzenRow JustifyContent="JustifyContent.End">
@if (status < 3) @if (status < 3)
{ {
<RadzenButton IsBusy="@(status>0)" BusyText="盘点中。。。" ButtonStyle="ButtonStyle.Warning" Variant="Variant.Flat" Shade="Shade.Light" Text="盘点" Click="@OpenDrawer" /> <RadzenButton IsBusy="@(status > 0)" BusyText="@myText.Checking" ButtonStyle="ButtonStyle.Warning" Variant="Variant.Flat" Shade="Shade.Light" Text="@myText.Check" Click="@OpenDrawer" />
} }
@if (status == 3) @if (status == 3)
{ {
<RadzenButton ButtonStyle="ButtonStyle.Warning" Variant="Variant.Flat" Shade="Shade.Light" Text="完成" Click="@CheckFinish" /> <RadzenButton ButtonStyle="ButtonStyle.Warning" Variant="Variant.Flat" Shade="Shade.Light" Text="@myText.Complete" Click="@CheckFinish" />
} }
@if (status > 0 && status <= 3) @if (status > 0 && status <= 3)
{ {
<RadzenButton Variant="Variant.Flat" Shade="Shade.Light" Text="取消" Click="@Cancel" Style="width: 120px" /> <RadzenButton Variant="Variant.Flat" Shade="Shade.Light" Text="@myText.Cancel" Click="@Cancel" Style="width: 120px" />
} }
</RadzenRow> </RadzenRow>
</HeaderTemplate> </HeaderTemplate>
<Columns> <Columns>
<RadzenDataGridColumn Width="70px" Title="库位" Property="ColNo"></RadzenDataGridColumn> <RadzenDataGridColumn Width="70px" Title="@myText.StorageLocation" Property="ColNo"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="药品名称" Property="Drug.DrugName"> <RadzenDataGridColumn Title="@myText.DrugName" Property="Drug.DrugName">
<Template Context="channel"> <Template Context="channel">
<RadzenText TextStyle="TextStyle.Subtitle2" class="mb-0">@channel.Drug?.DrugName</RadzenText> <RadzenText TextStyle="TextStyle.Subtitle2" class="mb-0">@channel.Drug?.DrugName</RadzenText>
<RadzenText TextStyle="TextStyle.Caption">@channel.Drug?.DrugSpec</RadzenText> <RadzenText TextStyle="TextStyle.Caption">@channel.Drug?.DrugSpec</RadzenText>
</Template> </Template>
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenDataGridColumn Title="批次" Property="ManuNo"> <RadzenDataGridColumn Title="@myText.Batch" Property="ManuNo">
<Template Context="channel"> <Template Context="channel">
<RadzenText TextStyle="TextStyle.Subtitle2" class="mb-0">@channel.drugManuNo?.ManuNo</RadzenText> <RadzenText TextStyle="TextStyle.Subtitle2" class="mb-0">@channel.drugManuNo?.ManuNo</RadzenText>
<RadzenText TextStyle="TextStyle.Caption">@channel.drugManuNo?.EffDate</RadzenText> <RadzenText TextStyle="TextStyle.Caption">@channel.drugManuNo?.EffDate</RadzenText>
@ -78,7 +78,7 @@
</RadzenStack> </RadzenStack>
</ValueTemplate> </ValueTemplate>
</RadzenDropDown> </RadzenDropDown>
<RadzenRequiredValidator Text="请选择批次" Component="ManuNo" Popup="true" /> <RadzenRequiredValidator Text="@myText.SelectBatch" Component="ManuNo" Popup="true" />
} }
else else
{ {
@ -88,12 +88,12 @@
} }
</EditTemplate> </EditTemplate>
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenDataGridColumn Title="库存" Property="Quantity"> <RadzenDataGridColumn Title="@myText.Inventory" Property="Quantity">
<Template Context="cs"> <Template Context="cs">
<RadzenButton ButtonStyle="ButtonStyle.Info" Variant="Variant.Flat" Shade="Shade.Lighter" class="m-1" Text="@cs.Quantity.ToString()" /> <RadzenButton ButtonStyle="ButtonStyle.Info" Variant="Variant.Flat" Shade="Shade.Lighter" class="m-1" Text="@cs.Quantity.ToString()" />
</Template> </Template>
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenDataGridColumn MinWidth="120px" Title="盘点数量" Property="CheckQuantity"> <RadzenDataGridColumn MinWidth="120px" Title="@myText.CheckQuantity" Property="CheckQuantity">
<EditTemplate Context="cs"> <EditTemplate Context="cs">
@if (cs.BoardType.ToString().Contains("2") || cs.BoardType.ToString().Contains("3")) @if (cs.BoardType.ToString().Contains("2") || cs.BoardType.ToString().Contains("3"))
{ {
@ -102,7 +102,7 @@
else else
{ {
<RadzenNumeric Style="display: block" Name="CheckQuantity" @bind-Value=@cs.CheckQuantity> <RadzenNumeric Style="display: block" Name="CheckQuantity" @bind-Value=@cs.CheckQuantity>
<RadzenNumericRangeValidator Style="position: absolute;z-index: 9999;" Min="1" Max="100" Text="请填写正确的取出数量" Component="CheckQuantity" /> <RadzenNumericRangeValidator Style="position: absolute;z-index: 9999;" Min="1" Max="100" Text="@myText.InputTips" Component="CheckQuantity" />
</RadzenNumeric> </RadzenNumeric>
} }
</EditTemplate> </EditTemplate>
@ -117,6 +117,8 @@
@inject PortUtil PortUtil; @inject PortUtil PortUtil;
@inject NotificationService _message @inject NotificationService _message
@inject IOptions<DrawerConfig> setting; @inject IOptions<DrawerConfig> setting;
@inject Toolbelt.Blazor.I18nText.I18nText I18nText;
private I18nText.local myText = new I18nText.local();
int status = 0; int status = 0;
int drawerNo = 1; int drawerNo = 1;
RadzenDataGrid<ChannelStock> grid; RadzenDataGrid<ChannelStock> grid;
@ -127,6 +129,11 @@
int[] BeforeQuantity = new int[9]; int[] BeforeQuantity = new int[9];
int[] AfterQuantity = new int[9]; int[] AfterQuantity = new int[9];
private readonly ILog logger = LogManager.GetLogger(typeof(DrawerAdd)); private readonly ILog logger = LogManager.GetLogger(typeof(DrawerAdd));
protected override async Task OnInitializedAsync()
{
myText = await I18nText.GetTextTableAsync<I18nText.local>(this);
await base.OnInitializedAsync();
}
async Task LoadData(LoadDataArgs args) async Task LoadData(LoadDataArgs args)
{ {

View File

@ -42,11 +42,11 @@
<div class="col-12 mb-4"> <div class="col-12 mb-4">
<form onsubmit="@(() => grid.Reload())"> <form onsubmit="@(() => grid.Reload())">
<RadzenFieldset Text="查询"> <RadzenFieldset Text="@myText.Search">
<RadzenStack Orientation="Orientation.Horizontal" Gap="1rem"> <RadzenStack Orientation="Orientation.Horizontal" Gap="1rem">
<RadzenRow AlignItems="AlignItems.Center"> <RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="4"> <RadzenColumn Size="4">
<RadzenLabel Text="开始时间" Component="Start" /> <RadzenLabel Text="@myText.StartDate" Component="Start" />
</RadzenColumn> </RadzenColumn>
<RadzenColumn Size="8"> <RadzenColumn Size="8">
<RadzenDatePicker DateFormat="yyyy-MM-dd HH:mm:ss" ShowTime="true" @bind-Value="start" Style="width: 100%;" Name="Start" /> <RadzenDatePicker DateFormat="yyyy-MM-dd HH:mm:ss" ShowTime="true" @bind-Value="start" Style="width: 100%;" Name="Start" />
@ -54,7 +54,7 @@
</RadzenRow> </RadzenRow>
<RadzenRow AlignItems="AlignItems.Center"> <RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="4"> <RadzenColumn Size="4">
<RadzenLabel Text="结束时间" Component="End" /> <RadzenLabel Text="@myText.EndDate" Component="End" />
</RadzenColumn> </RadzenColumn>
<RadzenColumn Size="8"> <RadzenColumn Size="8">
<RadzenDatePicker DateFormat="yyyy-MM-dd HH:mm:ss" ShowTime="true" @bind-Value="end" Style="width: 100%;" Name="End" /> <RadzenDatePicker DateFormat="yyyy-MM-dd HH:mm:ss" ShowTime="true" @bind-Value="end" Style="width: 100%;" Name="End" />
@ -62,7 +62,7 @@
</RadzenRow> </RadzenRow>
<RadzenRow AlignItems="AlignItems.Center"> <RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="6"> <RadzenColumn Size="6">
<RadzenLabel Text="药品名称/拼音码/编码" Component="drug" /> <RadzenLabel Text="@myText.DrugSearch" Component="drug" />
</RadzenColumn> </RadzenColumn>
<RadzenColumn Size="6"> <RadzenColumn Size="6">
<RadzenAutoComplete Name="drug" Multiline="true" @bind-Value=@drugName Data=@drugInfo TextProperty="@nameof(DrugInfo.DrugNameSpecManufactory)" <RadzenAutoComplete Name="drug" Multiline="true" @bind-Value=@drugName Data=@drugInfo TextProperty="@nameof(DrugInfo.DrugNameSpecManufactory)"
@ -73,12 +73,12 @@
<RadzenRow AlignItems="AlignItems.Center"> <RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="12"> <RadzenColumn Size="12">
@* <RadzenButton Size="ButtonSize.Large" ButtonType="ButtonType.Submit" IsBusy="isLoading" Icon="search" Text="²éѯ" /> *@ @* <RadzenButton Size="ButtonSize.Large" ButtonType="ButtonType.Submit" IsBusy="isLoading" Icon="search" Text="²éѯ" /> *@
<RadzenButton Size="ButtonSize.Large" Click="reloadGrid" IsBusy="isLoading" Icon="refresh" Text="重置" ButtonStyle="ButtonStyle.Warning" /> <RadzenButton Size="ButtonSize.Large" Click="reloadGrid" IsBusy="isLoading" Icon="refresh" Text="@myText.Restore" ButtonStyle="ButtonStyle.Warning" />
</RadzenColumn> </RadzenColumn>
</RadzenRow> </RadzenRow>
<RadzenRow JustifyContent="JustifyContent.End" AlignItems="AlignItems.Center"> <RadzenRow JustifyContent="JustifyContent.End" AlignItems="AlignItems.Center">
<RadzenButton Icon="download" Text="库存导出" Variant="Variant.Outlined" Click="StockExport" /> <RadzenButton Icon="download" Text="@myText.StoreExport" Variant="Variant.Outlined" Click="StockExport" />
<RadzenButton Icon="download" Text="专用账册导出" Variant="Variant.Outlined" Click="AccountBookExport" /> <RadzenButton Icon="download" Text="@myText.AccountExport" Variant="Variant.Outlined" Click="AccountBookExport" />
</RadzenRow> </RadzenRow>
</RadzenStack> </RadzenStack>
</RadzenFieldset> </RadzenFieldset>
@ -89,7 +89,7 @@
<RadzenDataGrid @ref="grid" <RadzenDataGrid @ref="grid"
IsLoading="@isLoading" IsLoading="@isLoading"
RowRender="@RowRender" RowRender="@RowRender"
EmptyText="无数据" EmptyText="@myText.NoDate"
Data="@_forecasts" Data="@_forecasts"
AllowColumnResize="true" AllowAlternatingRows="false" AllowColumnResize="true" AllowAlternatingRows="false"
SelectionMode="DataGridSelectionMode.Single" SelectionMode="DataGridSelectionMode.Single"
@ -101,17 +101,17 @@
</RadzenRow> </RadzenRow>
</HeaderTemplate> *@ </HeaderTemplate> *@
<Template Context="di"> <Template Context="di">
<RadzenDataGrid Data="@di.Stocks" EmptyText="无数据"> <RadzenDataGrid Data="@di.Stocks" EmptyText="@myText.NoDate">
<Columns> <Columns>
<RadzenDataGridColumn Title="库位" Property="DrawerNo"> <RadzenDataGridColumn Title="@myText.StorageLocation" Property="DrawerNo">
<Template Context="s"> <Template Context="s">
@s.DrawerNo - @s.ColNo @s.DrawerNo - @s.ColNo
</Template> </Template>
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenDataGridColumn Title="数量" Property="Quantity"> <RadzenDataGridColumn Title="@myText.Quantity" Property="Quantity">
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenDataGridColumn Title="批次" Property="ManuNo"></RadzenDataGridColumn> <RadzenDataGridColumn Title="@myText.Batch" Property="ManuNo"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="效期" Property="EffDate"> <RadzenDataGridColumn Title="@myText.Expiration" Property="EffDate">
<Template Context="s"> <Template Context="s">
@{ @{
DateTime dateTime; DateTime dateTime;
@ -120,7 +120,7 @@
{ {
@s.EffDate @s.EffDate
<p class="shaky-text">近效期药品!</p> <p class="shaky-text">@myText.AlertExpir£¡</p>
} }
else else
{ {
@ -133,15 +133,15 @@
</RadzenDataGrid> </RadzenDataGrid>
</Template> </Template>
<Columns> <Columns>
<RadzenDataGridColumn Frozen="true" Width="200px" Title="药品名称" Property="DrugName"></RadzenDataGridColumn> <RadzenDataGridColumn Frozen="true" Width="200px" Title="@myText.DrugName" Property="DrugName"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="规格" Property="DrugSpec"></RadzenDataGridColumn> <RadzenDataGridColumn Title="@myText.Spec" Property="DrugSpec"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="总库存" Property="StockQuantity"> <RadzenDataGridColumn Title="@myText.TotalStock" Property="StockQuantity">
<Template Context="s"> <Template Context="s">
@if (s.StockQuantity < 10) @if (s.StockQuantity < 10)
{ {
@s.StockQuantity @s.StockQuantity
<p class="shaky-text">库存预警!</p> <p class="shaky-text">@myText.AlertStock£¡</p>
} }
else else
{ {
@ -158,6 +158,8 @@
@inject IDrugInfoDao drugInfoDao; @inject IDrugInfoDao drugInfoDao;
@inject DialogService dialogService; @inject DialogService dialogService;
@inject IReportDataDao reportDataDao; @inject IReportDataDao reportDataDao;
@inject Toolbelt.Blazor.I18nText.I18nText I18nText;
private I18nText.local myText = new I18nText.local();
RadzenDataGrid<DrugInfo> grid; RadzenDataGrid<DrugInfo> grid;
bool isLoading; bool isLoading;
int count; int count;
@ -171,6 +173,7 @@
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
myText = await I18nText.GetTextTableAsync<I18nText.local>(this);
await base.OnInitializedAsync(); await base.OnInitializedAsync();
isLoading = true; isLoading = true;

View File

@ -7,12 +7,12 @@
<div class="col-12 mb-4"> <div class="col-12 mb-4">
<form onsubmit="@(() => grid.Reload())"> <form onsubmit="@(() => grid.Reload())">
<RadzenFieldset Text="查询"> <RadzenFieldset Text="@myText.Search">
<RadzenStack Orientation="Orientation.Horizontal" JustifyContent="JustifyContent.SpaceBetween"> <RadzenStack Orientation="Orientation.Horizontal" JustifyContent="JustifyContent.SpaceBetween">
<RadzenStack Orientation="Orientation.Horizontal" Gap="1rem"> <RadzenStack Orientation="Orientation.Horizontal" Gap="1rem">
<RadzenRow AlignItems="AlignItems.Center"> <RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="4"> <RadzenColumn Size="4">
<RadzenLabel Text="用户名" Component="nickname" /> <RadzenLabel Text="@myText.Account" Component="nickname" />
</RadzenColumn> </RadzenColumn>
<RadzenColumn Size="8"> <RadzenColumn Size="8">
<RadzenTextBox @bind-Value="nickname" Style="width: 100%;" Name="nickname"></RadzenTextBox> <RadzenTextBox @bind-Value="nickname" Style="width: 100%;" Name="nickname"></RadzenTextBox>
@ -22,12 +22,12 @@
<RadzenRow AlignItems="AlignItems.Center"> <RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="12"> <RadzenColumn Size="12">
<RadzenButton Size="ButtonSize.Medium" ButtonType="ButtonType.Submit" IsBusy="isLoading" Icon="search" Text="查询" /> <RadzenButton Size="ButtonSize.Medium" ButtonType="ButtonType.Submit" IsBusy="isLoading" Icon="search" Text="@myText.Search" />
<RadzenButton Size="ButtonSize.Medium" Click="reloadGrid" IsBusy="isLoading" Icon="refresh" Text="重置" ButtonStyle="ButtonStyle.Warning" /> <RadzenButton Size="ButtonSize.Medium" Click="reloadGrid" IsBusy="isLoading" Icon="refresh" Text="@myText.Restore" ButtonStyle="ButtonStyle.Warning" />
</RadzenColumn> </RadzenColumn>
</RadzenRow> </RadzenRow>
</RadzenStack> </RadzenStack>
<RadzenButton Size="ButtonSize.Medium" ButtonStyle="ButtonStyle.Success" Icon="add_circle_outline" Click="@InsertRow" Disabled="@(usersToInsert.Count() > 0)" Text="新增" /> <RadzenButton Size="ButtonSize.Medium" ButtonStyle="ButtonStyle.Success" Icon="add_circle_outline" Click="@InsertRow" Disabled="@(usersToInsert.Count() > 0)" Text="@myText.Add" />
</RadzenStack> </RadzenStack>
</RadzenFieldset> </RadzenFieldset>
</form> </form>
@ -38,7 +38,7 @@
LoadData="@LoadData" LoadData="@LoadData"
IsLoading="@isLoading" IsLoading="@isLoading"
Count="@count" Count="@count"
EmptyText="无数据" EmptyText="@myText.Date"
Data="@userList" Data="@userList"
Page="@Reset" Page="@Reset"
EditMode="DataGridEditMode.Single" EditMode="DataGridEditMode.Single"
@ -48,23 +48,23 @@
AllowPaging="true" PageSize="10" PagerHorizontalAlign="HorizontalAlign.Left" ShowPagingSummary="true" PagingSummaryFormat="{0}/{1} 共{2}条数据"> AllowPaging="true" PageSize="10" PagerHorizontalAlign="HorizontalAlign.Left" ShowPagingSummary="true" PagingSummaryFormat="{0}/{1} 共{2}条数据">
<Columns> <Columns>
<RadzenDataGridColumn Title="ID" Property="Id"></RadzenDataGridColumn> <RadzenDataGridColumn Title="ID" Property="Id"></RadzenDataGridColumn>
<RadzenDataGridColumn Title="用户名" Property="NickName"> <RadzenDataGridColumn Title="@myText.UserName" Property="NickName">
<EditTemplate Context="user"> <EditTemplate Context="user">
<RadzenTextBox Name="NickName" @bind-Value="user.NickName" Style="width:100%; display: block;" /> <RadzenTextBox Name="NickName" @bind-Value="user.NickName" Style="width:100%; display: block;" />
<RadzenRequiredValidator Text="请填写用户名" Component="NickName" Popup="true" /> <RadzenRequiredValidator Text="@myText.loginTips1" Component="NickName" Popup="true" />
</EditTemplate> </EditTemplate>
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenDataGridColumn Title="账号" Property="Username"> <RadzenDataGridColumn Title="@myText.Account" Property="Username">
<EditTemplate Context="user"> <EditTemplate Context="user">
<RadzenTextBox Name="Username" @bind-Value="user.Username" Style="width:100%; display: block;" /> <RadzenTextBox Name="Username" @bind-Value="user.Username" Style="width:100%; display: block;" />
<RadzenRequiredValidator Text="请填写账号" Component="Username" Popup="true" /> <RadzenRequiredValidator Text="@myText.InputAccount" Component="Username" Popup="true" />
</EditTemplate> </EditTemplate>
</RadzenDataGridColumn> </RadzenDataGridColumn>
<RadzenDataGridColumn Title="权限" Property="role.RoleName"> <RadzenDataGridColumn Title="@myText.Role" Property="role.RoleName">
<EditTemplate Context="user"> <EditTemplate Context="user">
<RadzenDropDown Name="RoleId" @bind-Value="user.RoleId" Data="@roles" TextProperty="RoleName" ValueProperty="Id" Style="width:100%; display: block;" <RadzenDropDown Name="RoleId" @bind-Value="user.RoleId" Data="@roles" TextProperty="RoleName" ValueProperty="Id" Style="width:100%; display: block;"
InputAttributes="@(new Dictionary<string,object>(){ { "aria-label", "Select customer" }})" /> InputAttributes="@(new Dictionary<string,object>(){ { "aria-label", "Select customer" }})" />
<RadzenRequiredValidator Text="请选择角色" Component="RoleId" Popup="true" /> <RadzenRequiredValidator Text="@myText.InputRole" Component="RoleId" Popup="true" />
</EditTemplate> </EditTemplate>
</RadzenDataGridColumn> </RadzenDataGridColumn>
@ -110,7 +110,9 @@
@inject IUserDao userDao; @inject IUserDao userDao;
@inject IRoleDao roleDao; @inject IRoleDao roleDao;
@inject DialogService dialogService; @inject DialogService dialogService;
@inject NotificationService _message @inject NotificationService _message;
@inject Toolbelt.Blazor.I18nText.I18nText I18nText;
private I18nText.local myText = new I18nText.local();
RadzenDataGrid<Pojo.User> grid; RadzenDataGrid<Pojo.User> grid;
bool isLoading; bool isLoading;
int count; int count;
@ -129,6 +131,7 @@
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
myText = await I18nText.GetTextTableAsync<I18nText.local>(this);
await base.OnInitializedAsync(); await base.OnInitializedAsync();
roles = await roleDao.GetAllRoles(); roles = await roleDao.GetAllRoles();
} }
@ -142,7 +145,7 @@
async Task Reg2ZWJ(Pojo.User user) async Task Reg2ZWJ(Pojo.User user)
{ {
await dialogService.OpenAsync<FingerRegDialog>( await dialogService.OpenAsync<FingerRegDialog>(
$"录入指纹", myText.EnterFingerprint,
new Dictionary<string, object>() { { "userId", user.Id } }, new Dictionary<string, object>() { { "userId", user.Id } },
new DialogOptions() { Width = "55vw", Resizable = true, Draggable = true, ShowClose = false } new DialogOptions() { Width = "55vw", Resizable = true, Draggable = true, ShowClose = false }
); );
@ -234,7 +237,7 @@
{ {
//弹出确认提示框 //弹出确认提示框
var b = await dialogService.OpenAsync<ConfirmDialog>( var b = await dialogService.OpenAsync<ConfirmDialog>(
$"删除确认", myText.ConfirmDelete,
new Dictionary<string, object>() { { "confirmInfo", "确认要删除用户:"+user.Username+"吗?" } }, new Dictionary<string, object>() { { "confirmInfo", "确认要删除用户:"+user.Username+"吗?" } },
new DialogOptions() { Width = "45vw", Resizable = true, Draggable = true, ShowClose = false }); new DialogOptions() { Width = "45vw", Resizable = true, Draggable = true, ShowClose = false });
if (b) if (b)
@ -267,7 +270,7 @@
// 数据库重置密码 // 数据库重置密码
userDao.ResetPassword(user.Id); userDao.ResetPassword(user.Id);
//提示密码已重置,下次登录请使用重置后的密码 //提示密码已重置,下次登录请使用重置后的密码
_message.Notify(new NotificationMessage { Severity = NotificationSeverity.Success, Summary = "提示", Detail = $"密码已重置,下次登录请使用重置后的密码", Duration = 4000 }); _message.Notify(new NotificationMessage { Severity = NotificationSeverity.Success, Summary = myText.Tips, Detail = $"密码已重置,下次登录请使用重置后的密码", Duration = 4000 });
} }
await grid.Reload(); await grid.Reload();
} }

View File

@ -1,11 +1,11 @@
using Mysqlx.Crud; using MasaBlazorApp3.Pages;
using Mysqlx.Crud;
namespace MasaBlazorApp3.Pojo namespace MasaBlazorApp3.Pojo
{ {
[Serializable] [Serializable]
public class Premission public class Premission
{ {
public Premission Parent { get; set; } = null; public Premission Parent { get; set; } = null;
public void AddChild(Premission item) public void AddChild(Premission item)
@ -30,51 +30,51 @@ namespace MasaBlazorApp3.Pojo
Premission q = new Premission Premission q = new Premission
{ {
Id = 1, Id = 1,
PremissionName = "出库", PremissionName =Home.myText.Outbound,// "出库",
PremissionPath = "take" PremissionPath = "take"
}; };
q.AddChild(new Premission() q.AddChild(new Premission()
{ {
Id = 11, Id = 11,
PremissionName = "处方取药", PremissionName = Home.myText.OrderTake,// "处方取药",
PremissionPath = "/take/order" PremissionPath = "/take/order"
}); });
q.AddChild(new Premission() q.AddChild(new Premission()
{ {
Id = 12, Id = 12,
PremissionName = "调拨取药", PremissionName = Home.myText.InvoiceTake,// "调拨取药",
PremissionPath = "/take/invoice" PremissionPath = "/take/invoice"
}); });
q.AddChild(new Premission() q.AddChild(new Premission()
{ {
Id = 13, Id = 13,
PremissionName = "抽屉取药", PremissionName = Home.myText.DrawerTake,// "抽屉取药",
PremissionPath = "/take/drawer" PremissionPath = "/take/drawer"
}); });
q.AddChild(new Premission() q.AddChild(new Premission()
{ {
Id = 14, Id = 14,
PremissionName = "自选取药", PremissionName =Home.myText.SelfTake,// "自选取药",
PremissionPath = "/take/self" PremissionPath = "/take/self"
}); });
q.AddChild(new Premission() q.AddChild(new Premission()
{ {
Id = 15, Id = 15,
PremissionName = "取药记录", PremissionName = Home.myText.TakeRecord,// "取药记录",
PremissionPath = "/take/record/2" PremissionPath = "/take/record/2"
}); });
Premission j = new Premission Premission j = new Premission
{ {
Id = 2, Id = 2,
PremissionName = "入库", PremissionName = Home.myText.FillStorage,// "入库",
PremissionPath = "add" PremissionPath = "add"
}; };
j.AddChild(new Premission() j.AddChild(new Premission()
{ {
Id = 21, Id = 21,
PremissionName = "调拨入库", PremissionName = Home.myText.InvoiceAdd,//"调拨入库",
PremissionPath = "/add/invoice" PremissionPath = "/add/invoice"
}); });
//j.AddChild(new Premission() //j.AddChild(new Premission()
@ -86,13 +86,13 @@ namespace MasaBlazorApp3.Pojo
j.AddChild(new Premission() j.AddChild(new Premission()
{ {
Id = 23, Id = 23,
PremissionName = "抽屉入库", PremissionName = Home.myText.DrawerAdd,//"抽屉入库",
PremissionPath = "/add/drawer" PremissionPath = "/add/drawer"
}); });
j.AddChild(new Premission() j.AddChild(new Premission()
{ {
Id = 24, Id = 24,
PremissionName = "入库记录", PremissionName = Home.myText.AddRecord,//"入库记录",
PremissionPath = "/add/record/1" PremissionPath = "/add/record/1"
}); });
Premission h = new Premission Premission h = new Premission
@ -105,120 +105,120 @@ namespace MasaBlazorApp3.Pojo
h.AddChild(new Premission() h.AddChild(new Premission()
{ {
Id = 31, Id = 31,
PremissionName = "归还药品(处方)", PremissionName = Home.myText.ReturnDrugByOrder,//"归还药品(处方)",
PremissionPath = "/return/order" PremissionPath = "/return/order"
}); });
h.AddChild(new Premission() h.AddChild(new Premission()
{ {
Id = 32, Id = 32,
PremissionName = "归还药品(记录)", PremissionName = Home.myText.ReturnRecord,//"归还药品(记录)",
PremissionPath = "/return/byRecord" PremissionPath = "/return/byRecord"
}); });
h.AddChild(new Premission() h.AddChild(new Premission()
{ {
Id = 33, Id = 33,
PremissionName = "归还空瓶", PremissionName = Home.myText.ReturnEmpty,//"归还空瓶",
PremissionPath = "/return/empty" PremissionPath = "/return/empty"
}); });
h.AddChild(new Premission() h.AddChild(new Premission()
{ {
Id = 34, Id = 34,
PremissionName = "归还记录(药品)", PremissionName = Home.myText.ReturnRecordDrug,//"归还记录(药品)",
PremissionPath = "/return/record1/31" PremissionPath = "/return/record1/31"
}); });
h.AddChild(new Premission() h.AddChild(new Premission()
{ {
Id = 35, Id = 35,
PremissionName = "归还记录(空瓶)", PremissionName = Home.myText.ReturnRecordEmpty,// "归还记录(空瓶)",
PremissionPath = "/return/record2/32" PremissionPath = "/return/record2/32"
}); });
Premission k = new Premission Premission k = new Premission
{ {
Id = 4, Id = 4,
PremissionName = "库存管理", PremissionName = Home.myText.StockManage,//"库存管理",
PremissionPath = "stock" PremissionPath = "stock"
}; };
k.AddChild(new Premission() k.AddChild(new Premission()
{ {
Id = 41, Id = 41,
PremissionName = "库存列表", PremissionName = Home.myText.StockList,//"库存列表",
PremissionPath = "/stock/list" PremissionPath = "/stock/list"
}); });
k.AddChild(new Premission() k.AddChild(new Premission()
{ {
Id = 42, Id = 42,
PremissionName = "库位绑定", PremissionName = Home.myText.StockBind,//"库位绑定",
PremissionPath = "/stock/binding" PremissionPath = "/stock/binding"
}); });
k.AddChild(new Premission() k.AddChild(new Premission()
{ {
Id = 43, Id = 43,
PremissionName = "库存盘点", PremissionName = Home.myText.StorageCheck,//"库存盘点",
//PremissionName = "盘点交接", //PremissionName = "盘点交接",
PremissionPath = "/stock/check" PremissionPath = "/stock/check"
}); });
k.AddChild(new Premission() k.AddChild(new Premission()
{ {
Id = 44, Id = 44,
PremissionName = "盘点记录", PremissionName =Home.myText.CheckRecord,// "盘点记录",
//PremissionPath = "/stock/checkRecord" //PremissionPath = "/stock/checkRecord"
PremissionPath = "/stock/record/4" PremissionPath = "/stock/record/4"
}); });
k.AddChild(new Premission() k.AddChild(new Premission()
{ {
Id = 45, Id = 45,
PremissionName = "药品信息", PremissionName = Home.myText.DrugInfo,//"药品信息",
PremissionPath = "/stock/drug" PremissionPath = "/stock/drug"
}); });
k.AddChild(new Premission() k.AddChild(new Premission()
{ {
Id = 46, Id = 46,
PremissionName = "药品标定", PremissionName = Home.myText.DrugSetting,//"药品标定",
PremissionPath = "/stock/biaoDing" PremissionPath = "/stock/biaoDing"
}); });
k.AddChild(new Premission() k.AddChild(new Premission()
{ {
Id = 47, Id = 47,
PremissionName = "交接班列表", PremissionName = Home.myText.HandoverList,//"交接班列表",
PremissionPath = "/stock/Change" PremissionPath = "/stock/Change"
}); });
Premission x = new Premission Premission x = new Premission
{ {
Id = 5, Id = 5,
PremissionName = "系统管理", PremissionName = Home.myText.SystemManage,//"系统管理",
PremissionPath = "manage" PremissionPath = "manage"
}; };
x.AddChild(new Premission() x.AddChild(new Premission()
{ {
Id = 51, Id = 51,
PremissionName = "用户管理", PremissionName = Home.myText.UserManage,//"用户管理",
PremissionPath = "/manage/user" PremissionPath = "/manage/user"
}); });
x.AddChild(new Premission() x.AddChild(new Premission()
{ {
Id = 52, Id = 52,
PremissionName = "权限管理", PremissionName = Home.myText.RoleManage,//"权限管理",
PremissionPath = "/manage/role" PremissionPath = "/manage/role"
}); });
Premission set = new Premission() Premission set = new Premission()
{ {
Id = 53, Id = 53,
PremissionName = "系统设置", PremissionName = Home.myText.SystemSet,//"系统设置",
PremissionPath = "/manage/setting" PremissionPath = "/manage/setting"
//PremissionPath = "/Box/Plan" //PremissionPath = "/Box/Plan"
}; };
set.AddChild(new Premission() set.AddChild(new Premission()
{ {
Id = 531, Id = 531,
PremissionName = "登录设置", PremissionName = Home.myText.LoginSet,//"登录设置",
PremissionPath = "/manage/setting/login" PremissionPath = "/manage/setting/login"
}); });
set.AddChild(new Premission() set.AddChild(new Premission()
{ {
Id = 532, Id = 532,
PremissionName = "冰箱设置", PremissionName = Home.myText.FridgeSet,//"冰箱设置",
PremissionPath = "/manage/setting/Fridge" PremissionPath = "/manage/setting/Fridge"
}); });
@ -263,45 +263,45 @@ namespace MasaBlazorApp3.Pojo
Premission b = new Premission Premission b = new Premission
{ {
Id = 6, Id = 6,
PremissionName = "药箱管理", PremissionName = Home.myText.BoxManage,//"药箱管理",
PremissionPath = "Box" PremissionPath = "Box"
}; };
b.AddChild(new Premission() b.AddChild(new Premission()
{ {
Id = 61, Id = 61,
PremissionName = "套餐管理", PremissionName = Home.myText.MenuManage,//"套餐管理",
PremissionPath = "/Box/Plan" PremissionPath = "/Box/Plan"
}); });
b.AddChild(new Premission() b.AddChild(new Premission()
{ {
Id = 62, Id = 62,
PremissionName = "绑定药箱", PremissionName = Home.myText.BindBox,//"绑定药箱",
PremissionPath = "/Box/BoxBindings" PremissionPath = "/Box/BoxBindings"
}); });
b.AddChild(new Premission() b.AddChild(new Premission()
{ {
Id = 63, Id = 63,
PremissionName = "药箱核对", PremissionName = Home.myText.BoxCheck,//"药箱核对",
//PremissionName = "盘点交接", //PremissionName = "盘点交接",
PremissionPath = "/Box/Check" PremissionPath = "/Box/Check"
}); });
b.AddChild(new Premission() b.AddChild(new Premission()
{ {
Id = 66, Id = 64,
PremissionName = "药箱加药", PremissionName = Home.myText.BoxAdd,//"药箱加药",
//PremissionPath = "/stock/checkRecord" //PremissionPath = "/stock/checkRecord"
PremissionPath = "/Box/BoxAdd" PremissionPath = "/Box/BoxAdd"
}); });
b.AddChild(new Premission() b.AddChild(new Premission()
{ {
Id = 65, Id = 65,
PremissionName = "药箱入库", PremissionName =Home.myText.BoxAddBox,// "药箱入库",
PremissionPath = "/Box/BoxAddBox" PremissionPath = "/Box/BoxAddBox"
}); });
b.AddChild(new Premission() b.AddChild(new Premission()
{ {
Id = 66, Id = 66,
PremissionName = "药箱库存", PremissionName =Home.myText.BoxStock,// "药箱库存",
PremissionPath = "/Box/BoxStock" PremissionPath = "/Box/BoxStock"
}); });
list.Add(q); list.Add(q);

View File

@ -15,6 +15,8 @@ namespace MasaBlazorApp3.Pojo
public string Icon { get; set; } public string Icon { get; set; }
[Column("Path")] [Column("Path")]
public string Path { get; set; } public string Path { get; set; }
[Column("Culture")]
public string Culture { get; set; }
[Column(IsColumn = false)] [Column(IsColumn = false)]
public List<SettingManu> Children { get; set; } = new(); public List<SettingManu> Children { get; set; } = new();
} }

View File

@ -13,6 +13,7 @@ using LinqToDB.AspNet.Logging;
using Radzen; using Radzen;
using MasaBlazorApp3.Pojo.Config; using MasaBlazorApp3.Pojo.Config;
using MasaBlazorApp3.Port; using MasaBlazorApp3.Port;
using Toolbelt.Blazor.Extensions.DependencyInjection;
internal class Program internal class Program
{ {
@ -48,9 +49,9 @@ internal class Program
appBuilder.Services.Configure<PortConfig>(config.GetSection("port")); appBuilder.Services.Configure<PortConfig>(config.GetSection("port"));
appBuilder.Services.Configure<DrawerConfig>(config.GetSection("drawer")); appBuilder.Services.Configure<DrawerConfig>(config.GetSection("drawer"));
appBuilder.Services.Configure<fridgeConfig>(config.GetSection("fridge")); appBuilder.Services.Configure<fridgeConfig>(config.GetSection("fridge"));
// i18n // i18n
//appBuilder.Services.AddI18nText(); appBuilder.Services.AddI18nText();
// 数据库 // 数据库
appBuilder.Services.AddLinqToDBContext<AppDataConnection>((provider, options) => appBuilder.Services.AddLinqToDBContext<AppDataConnection>((provider, options) =>
options.UseMySql(config.GetValue<String>("connectionStrings")) options.UseMySql(config.GetValue<String>("connectionStrings"))

View File

@ -77,13 +77,17 @@
@inject NavigationManager Navigation @inject NavigationManager Navigation
@inject ISettingManuDao settingManuDao; @inject ISettingManuDao settingManuDao;
@inject Toolbelt.Blazor.I18nText.I18nText I18nText;
@code { @code {
private I18nText.local myText = new I18nText.local();
RadzenPanelMenu panelMenu; RadzenPanelMenu panelMenu;
List<SettingManu> menuItems = new(); List<SettingManu> menuItems = new();
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
menuItems = await settingManuDao.GetMenuItemsAsync(); myText = await I18nText.GetTextTableAsync<I18nText.local>(this);
string culture = I18nText.GetCurrentLanguageAsync().Result == "en-US" ? "en" : "zh-CN"; ;
menuItems = await settingManuDao.GetMenuItemsAsync(culture);
} }
// async void jump2Page(string path) // async void jump2Page(string path)
// { // {

View File

@ -8,7 +8,7 @@
"setting": { "setting": {
"machineId": "DM1", "machineId": "DM1",
"storage": 1, "storage": 1,
"loginMode": 1, "loginMode": 2,
"opFirst": true, "opFirst": true,
//退,0退 //退,0退
"autoOutLog": 0, "autoOutLog": 0,

View File

@ -1,4 +0,0 @@
{
"login": "LOGIN",
"exit": "EXIT"
}

View File

@ -1,4 +0,0 @@
{
"login": "登录",
"exit": "退出"
}

View File

@ -0,0 +1,257 @@
{
"language": "language",
"Welcome": "Welcome",
"Handover": "Handover",
"EnterFingerprint": "Enter Fingerprint",
"EnterSign": "Enter Sign",
"UpdatePassword": "Update Password",
"Checker": "Checker",
"Outbound": "Outbound",
"Return": "Return",
"FillStorage": "Fill Storage",
"BoxManage": "Box Manage",
"StockManage": "Stock Manage",
"SystemManage": "System Manage",
"OrderTake": "Order Take",
"InvoiceTake": "Invoice Take",
"DrawerTake": "Drawer Take",
"SelfTake": "Self Take",
"TakeRecord": "Take Record",
"ReturnDrugByOrder": "Return Drug By Order",
"ReturnRecord": "Return Record",
"HasReturnEmpty": "Return Empty",
"ReturnRecordDrug": "Return Record Drug",
"ReturnRecordEmpty": "Return Record Empty",
"InvoiceAdd": "Invoice Add",
"DrawerAdd": "Drawer Add",
"AddRecord": "Add Record",
"MenuManage": "Menu Manage",
"BindBox": "Bind Box",
"BoxCheck": "Box Check",
"BoxTake": "Box Take",
"BoxAdd": "Box Add",
"BoxStock": "Box Stock",
"BoxAddBox": "Box Add Box",
"StockList": "Stock List",
"StockBind": "Stock Bind",
"StorageCheck": "Storage Check",
"CheckRecord": "Check Record",
"DrugInfo": "Drug Info",
"DrugSetting": "Drug Setting",
"HandoverList": "Handover List",
"UserManage": "User Manage",
"RoleManage": "Role Manage",
"SystemSet": "System Set",
"Login": "Login",
"Account": "Account",
"Password": "Password",
"Cancel": "Cancel",
"loginTips1": "Please Input Account",
"loginTips2": "Please Input Password",
"Search": "Search",
"Restore": "Restore",
"OrderNo": "OrderNo",
"OrderDate": "Order Date",
"Doctor": "Doctor",
"Name": "Name",
"Sex": "Sex",
"Age": "Age",
"DeptName": "DeptName",
"Diagnose": "Diagnose",
"InvoiceNo": "Invoice No",
"ApplyDate": "Apply Date",
"Date": "Date",
"ApplyPharmacy": "Apply Pharmacy",
"SendPharamacy": "Send Pharamacy",
"StorageLocation": "Storage Location",
"DrugName": "Drug Name",
"Batch": "Batch",
"Inventory": "Inventory",
"TakeQuantity": "Take Quantity",
"Take": "Take",
"WriteOrder": "Write Order",
"PatientName": "Patient Name",
"OrderDoctor": "Order Doctor",
"Spec": "Spec",
"Quantity": "Quantity",
"Add": "Add",
"AddNewOrder": "Add New Order",
"StartDate": "Start Date",
"EndDate": "End Date",
"StoreExport": "Store Export",
"AccountExport": "Account Export",
"Operator": "Operator",
"OperateDate": "Operate Date",
"Expiration": "Expiration",
"Borrow": "Borrow Quantity",
"ReturnQuantity": "Return Quantity",
"ReturnEmpty": "Return Empty",
"CurrentReturn": "Current Return",
"Factory": "Factory",
"CanReturnQuantity": "Can Return Quantity",
"AddQuantity": "Add Quantity",
"Refresh": "Refresh",
"SetMenu": "Menu",
"MenuName": "Menu Name",
"MenuDescrip": "Menu Descrip",
"Operate": "Operate",
"Number": "Number",
"BaseQuantity": "Base Quantity",
"No": "No.",
"BindUnBind": "Bind/UnBind",
"TotalStock": "Total Stock",
"Confirm": "Confirm",
"BoxNum": "Box Number",
"ReplaceDrug": "Replace Drug",
"RemoveDrug": "Remove Drug",
"DrugSearch": "Drug Name PinYin Drug Code",
"DrawerType1": "Drawer",
"DrawerType2": "Single",
"DrawerType3": "Weight Smart",
"DrawerType4": "Smart",
"DrawerType5": "Inner Return Box",
"DrawerType6": "Out Return Box",
"DrawerType7": "Box",
"DrawerType8": "Storage Box",
"DrawerType9": "Weight",
"DrawerType10": "Weight Box",
"Check": "Check",
"CheckQuantity": "Check Quantity",
"AddDrug": "Add Drug",
"AddBatch": "Add Batch",
"DateTime": "DateTime",
"HandoverOperator1": "Handover Operator",
"HandoverChecker1": "Handover Checker",
"HandoverOperator2": "Handover to Checker",
"HandoverChecker2": "Handover to Checker",
"HandoverDate": "Handover Date",
"HandoverState": "Handover State",
"OnDuty": "On Duty",
"NotDuty": "Not Duty",
"ID": "ID",
"Role": "Role",
"RoleName": "Role Name",
"LoginSet": "Login Set",
"LoginMode": "Login Mode",
"SingleLogin": "Single Login",
"MultiLogin": "Multi Login",
"SaveSet": "Save Set",
"FridgeSet": "Fridge Set",
"TemperRange": "Temper Range",
"FridgeState": "Fridge State",
"AlertState": "Alert State",
"Open": "Open",
"Close": "Close",
"NoDate": "Not Date",
"OrderDetail": "Order Detail",
"InvoiceDetail": "Invoice Detail",
"Taking": "Taking。。。",
"Complete": "Complete",
"Tips": "Tips",
"TakeDetail": "Take Detail",
"InputOrderTips": "Please Input Order Number",
"InputOrderDate": "Please Input Order Date",
"InputPatientName": "Please Input Patient Name",
"InputPatientSex": "Please Input Patient Sex",
"InputPatientAge": "Please Input Patient Age",
"InputDoctor": "Please Input Doctor",
"InputDept": "Please Input Department",
"InputDisease": "Please Input Diagnose",
"DrugCode": "Drug Code",
"SelectDrug": "Please Input Drug",
"HasSelect": "Do not Select",
"InputTips": "Please Input Correct Take Quantity",
"Select": "Select",
"Returning": "Returning。。。",
"DrawOpened": "The draw has been opened。。。",
"OpenDraw": "Open Drawer",
"State": "State",
"NeedAddQuantity": "Need Add Quantity",
"Box": "Box",
"SelectMenu": "Please Select Menu First",
"ExchangeNum": "Exchange Num",
"Save": "Save",
"InputCorrectNum": "Please Input Correct Quantity",
"NotBind": "Not Bind",
"LoginCheck": "Login Check",
"Adding": "Adding。。。",
"SelectBatch": "Pleace Select Batch",
"InputNum": "Please Input Correct Quantity",
"InputCode": "Please Input Drug Code",
"InputDrugName": "Please Input Drug Name",
"InputDrugSpec": "Please Input Drug Spec",
"InputDrugFactory": "Please Input Drug Factory",
"Loading": "Loading Connect Waiting...",
"ConnectFinger": "Start Connect Finger",
"FingerConnected": "Finger Connected",
"FingerFailed": "Finger Connect Failed",
"ConnectDrawer": "Start Connect Drawer",
"DrawerConnected": "Drawer Connected",
"DrawerFailed": "Drawer Connect Failed",
"ConnectCan": "Start Connect CanBus",
"CanConnected": "CanBus Connected",
"CanFailed": "CanBus Failed",
"ConnectScanCode": "Start Connect ScanCode",
"ScanCodeConnected": "ScanCode Connected",
"ScanCodeFailed": "ScanCode Failed",
"ConnectFridge": "Connect Fridge Result",
"FridgeConnected": "Fridge Connected",
"FridgeFailed": "Fridge Failed",
"InvoiceInDetail": "InvoiceIn Detail",
"SaveSuccess": "Save Success",
"AddMenu": "Add Menu",
"InputMenuName": "Please Input Menu Name",
"InputMenuDesc": "Please Input Menu Name Descript",
"MenuHasDrug": "Menu Have Current Drug",
"InputNumError": "The total amount of storage should be equal to the quantity requested",
"DataSaveFailed": "Data Save Failed",
"InputCorrectInNum": "Please Input correct Quantity",
"DrawerOpenFailed": "Drawe Open Failed",
"AddSuccessful": "Add Drug FinishedPleaseClick Confirm",
"PleaseAdd": "Number Drawer OpenedPleaseAdd Drug",
"InputRoleName": "Please Input Role Name",
"SelectRole": "Please Select Role",
"ConfirmDelete": "Delete Confirm",
"ConfirmDeleteRole": "Confirm Delete Role",
"BindSuccess": "Bind Finish",
"Checking": "Checking...",
"AlertExpir": "Drugs Nearing Expiration",
"AlertStock": "Inventory Alert",
"UserName": "User Name",
"InputAccount": "Please Input Account",
"InputRole": "Please Select Role"
}

View File

@ -0,0 +1,279 @@
{
"language": "语言",
"Welcome": "欢迎",
"Handover": "交接班",
"EnterFingerprint": "录入指纹",
"EnterSign": "录入签名",
"UpdatePassword": "修改密码",
"Checker": "复核人",
"Outbound": "出库",
"Return": "归还",
"FillStorage": "入库",
"BoxManage": "药箱管理",
"StockManage": "库存管理",
"SystemManage": "系统管理",
"OrderTake": "处方取药",
"InvoiceTake": "调拨取药",
"DrawerTake": "抽屉取药",
"SelfTake": "自选取药",
"TakeRecord": "取药记录",
"ReturnDrugByOrder": "归还药品(处方)",
"ReturnRecord": "归还药品(记录)",
"ReturnEmpty": "归还空瓶",
"ReturnRecordDrug": "归还记录(药品)",
"ReturnRecordEmpty": "归还记录(空瓶)",
"InvoiceAdd": "调拨入库",
"DrawerAdd": "抽屉入库",
"AddRecord": "入库记录",
"MenuManage": "套餐管理",
"BindBox": "绑定药箱",
"BoxCheck": "药箱核对",
"BoxTake": "药箱取药",
"BoxAdd": "药箱加药",
"BoxAddBox": "药箱入库",
"BoxStock": "药箱库存",
"StockList": "库存列表",
"StockBind": "库位绑定",
"StorageCheck": "库存盘点",
"CheckRecord": "盘点记录",
"DrugInfo": "药品信息",
"DrugSetting": "药品标定",
"HandoverList": "交接班列表",
"UserManage": "用户管理",
"RoleManage": "权限管理",
"SystemSet": "系统设置",
"Login": "登录",
"Account": "账号",
"Password": "密码",
"Cancel": "取消",
"loginTips1": "请填写用户名",
"loginTips2": "请填写密码",
"Search": "查询",
"Restore": "重置",
"OrderNo": "处方号",
"OrderDate": "处方时间",
"Doctor": "医生",
"Name": "姓名",
"Sex": "性别",
"Age": "年龄",
"DeptName": "科室",
"Diagnose": "诊断",
"InvoiceNo": "单据号",
"ApplyDate": "请领时间",
"Date": "时间",
"ApplyPharmacy": "请领药房",
"SendPharamacy": "出库药房",
"StorageLocation": "库位",
"DrugName": "药品名称",
"Batch": "批次",
"Inventory": "库存",
"TakeQuantity": "取药数量",
"Take": "取药",
"WriteOrder": "手写处方",
"PatientName": "患者姓名",
"OrderDoctor": "处方医生",
"Spec": "规格",
"Quantity": "数量",
"Add": "添加",
"AddNewOrder": "请添加手写处方详情",
"StartDate": "开始时间",
"EndDate": "结束时间",
"StoreExport": "库存导出",
"AccountExport": "专用账册导出",
"Operator": "操作人",
"OperateDate": "操作时间",
"Expiration": "效期",
"Borrow": "借出数量",
"ReturnQuantity": "已还药品",
"HasReturnEmpty": "已还空瓶",
"CurrentReturn": "本次归还",
"Factory": "厂家",
"CanReturnQuantity": "可归还数量",
"AddQuantity": "加药数量",
"Refresh": "刷新",
"SetMenu": "套餐",
"MenuName": "套餐名称",
"MenuDescrip": "套餐描述",
"Operate": "操作",
"Number": "序号",
"BaseQuantity": "基数",
"No": "No.",
"BindUnBind": "绑定/解绑",
"TotalStock": "总库存",
"Confirm": "确认",
"BoxNum": "药箱号",
"ReplaceDrug": "替换药品",
"RemoveDrug": "移出药品",
"DrugSearch": "药品名称/拼音码/编码",
"DrawerType1": "物理隔板",
"DrawerType2": "单支计数",
"DrawerType3": "称重计数药盒智能显示",
"DrawerType4": "智能显示",
"DrawerType5": "内置回收",
"DrawerType6": "外置回收",
"DrawerType7": "管控药盒",
"DrawerType8": "储物箱",
"DrawerType9": "称重计数",
"DrawerType10": "称重计数药盒",
"Check": "盘点",
"CheckQuantity": "盘点数量",
"AddDrug": "新增药品",
"AddBatch": "新增批次",
"DateTime": "日期",
"HandoverOperator1": "交班发药人",
"HandoverChecker1": "交班审核人",
"HandoverOperator2": "接班发药人",
"HandoverChecker2": "接班审核人",
"HandoverDate": "接班日期",
"HandoverState": "当班状态",
"OnDuty": "值班中",
"NotDuty": "已交班",
"ID": "ID",
"Role": "权限",
"RoleName": "角色名称",
"LoginSet": "登录设置",
"LoginMode": "登录模式",
"SingleLogin": "单人登录",
"MultiLogin": "双人登录",
"SaveSet": "保存设置",
"FridgeSet": "冰箱设置",
"TemperRange": "冰箱温度区间",
"FridgeState": "冰箱状态",
"AlertState": "报警状态",
"Open": "开",
"Close": "关",
"NoDate": "无数据",
"OrderDetail": "处方详情",
"InvoiceDetail": "调拨出库详情",
"Taking": "取药中。。。",
"Complete": "完成",
"Tips": "提示",
"TakeDetail": "取药详情",
"InputOrderTips": "请输入处方号",
"InputOrderDate": "请输入处方时间",
"InputPatientName": "请输入患者姓名",
"InputPatientSex": "请输入患者性别",
"InputPatientAge": "请输入患者年龄",
"InputDoctor": "请输入处方医生",
"InputDept": "请输入科室",
"InputDisease": "请输入诊断",
"DrugCode": "药品编码",
"SelectDrug": "请选择药品",
"HasSelect": "已经选择的药品不能再次选择",
"InputTips": "请填写正确的取出数量",
"Select": "选择",
"Returning": "还空瓶中。。。",
"DrawOpened": "抽屉已打开。。。",
"OpenDraw": "开抽屉",
"State": "状态",
"NeedAddQuantity": "需补药数",
"Box": "号药箱",
"SelectMenu": "请先选择套餐再点击绑定按钮",
"ExchangeNum": "交换数量",
"Save": "保存",
"InputCorrectNum": "请填写正确的交换数量",
"NotBind": "未绑定批次",
"LoginCheck": "登录验证",
"Adding": "加药中。。。",
"SelectBatch": "请选择批次",
"InputNum": "请填写正确的添加数量",
"InputCode": "请填写编码",
"InputDrugName": "请填写药品名称",
"InputDrugSpec": "请填写规格",
"InputDrugFactory": "请填写厂家",
"Loading": "加载程序必要连接中,请稍等。。。",
"ConnectFinger": "开始连接指纹模块",
"FingerConnected": "指纹模块连接成功",
"FingerFailed": "指纹模块连接失败",
"ConnectDrawer": "开始连接抽屉串口",
"DrawerConnected": "抽屉串口连接成功",
"DrawerFailed": "抽屉串口连接失败",
"ConnectCan": "开始连接CanBus模块",
"CanConnected": "模块连接成功",
"CanFailed": "CanBus模块连接失败",
"ConnectScanCode": "开始连接条码扫描模块",
"ScanCodeConnected": "条码扫描模块连接成功",
"ScanCodeFailed": "条码扫描模块连接失败",
"ConnectFridge": "冰箱串口打开结果",
"FridgeConnected": "冰箱串口连接成功",
"FridgeFailed": "冰箱串口打开失败",
"InvoiceInDetail": "调拨入库详情",
"SaveSuccess": "保存成功",
"AddMenu": "新增套餐",
"InputMenuName": "请填写套餐名称",
"InputMenuDesc": "请填写套餐描述",
"MenuHasDrug": "套餐中已包含该药品",
"InputNumError": "入库总量应等于请领数量",
"DataSaveFailed": "数据保存失败",
"InputCorrectInNum": "请填写正确的入库数量",
"DrawerOpenFailed": "抽屉打开失败",
"AddSuccessful": "加药完成,请,点击完成按钮进行确认",
"PleaseAdd": "号抽屉已经打开,请,加药",
"InputRoleName": "请填写角色名称",
"SelectRole": "请选择权限",
"ConfirmDelete": "删除确认",
"ConfirmDeleteRole": "确认要删除角色",
"BindSuccess": "绑定成功",
"Checking": "盘点中。。。",
"AlertExpir": "近效期药品",
"AlertStock": "库存预警",
"UserName": "用户名",
"InputAccount": "请填写账号",
"InputRole": "请选择角色"
}