253 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			253 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
@page "/Box/OrderImport"
 | 
						|
@using MasaBlazorApp3.Pojo.Config
 | 
						|
@using MasaBlazorApp3.Report
 | 
						|
@using Microsoft.Extensions.Options
 | 
						|
@using Radzen.Blazor.Rendering
 | 
						|
@using log4net;
 | 
						|
 | 
						|
<style>
 | 
						|
    .rz-grid-table {
 | 
						|
        position: relative;
 | 
						|
        border-collapse: separate;
 | 
						|
        border-spacing: 0;
 | 
						|
    }
 | 
						|
</style>
 | 
						|
 | 
						|
<RadzenStack Orientation="Orientation.Horizontal">
 | 
						|
    <div class="col-12">
 | 
						|
        <form onsubmit="@(() => {grid.Reload();})">
 | 
						|
            <RadzenFieldset Text="查询">
 | 
						|
                <RadzenRow AlignItems="AlignItems.Center">
 | 
						|
                    <RadzenColumn Size="6">
 | 
						|
 | 
						|
                        <RadzenLabel Text="处方号" Component="OrderNo" />
 | 
						|
                        <RadzenTextBox @bind-Value="OrderNo" Style="width: 100%;" Name="OrderNo"></RadzenTextBox>
 | 
						|
 | 
						|
                    </RadzenColumn>
 | 
						|
                    <RadzenColumn Size="6" Style="margin-top:0.5rem">
 | 
						|
                        <RadzenLabel Text="处方时间" Component="OrderDate" />
 | 
						|
                        <RadzenDatePicker DateFormat="yyyy-MM-dd" CurrentDateChanged="@OnCurrentDateChanged" @bind-Value="OrderDate" Style="width: 100%;" Name="OrderDate" />
 | 
						|
                    </RadzenColumn>
 | 
						|
                </RadzenRow>
 | 
						|
                <RadzenRow AlignItems="AlignItems.Center">
 | 
						|
                    <RadzenColumn Size="6">
 | 
						|
 | 
						|
                        <RadzenLabel Text="患者姓名" Component="PatientName" />
 | 
						|
                        <RadzenTextBox @bind-Value="PatientName" Style="width: 100%;" Name="PatientName"></RadzenTextBox>
 | 
						|
 | 
						|
                    </RadzenColumn>
 | 
						|
                    <RadzenColumn Size="6" Style="margin-top:4vh">
 | 
						|
                        <RadzenButton Size="ButtonSize.Medium" ButtonType="ButtonType.Submit" IsBusy="isLoading" Icon="search" Text="查询" />
 | 
						|
                        <RadzenButton Size="ButtonSize.Medium" Click="Confirm" ButtonType="ButtonType.Button" ButtonStyle="ButtonStyle.Warning" IsBusy="isLoading" Icon="input" Text="导入" />
 | 
						|
                        <RadzenButton Click="@((args) => dialogService.Close(false))" Variant="Variant.Flat" ButtonStyle="ButtonStyle.Secondary" Text="取消" />
 | 
						|
                    </RadzenColumn>
 | 
						|
                </RadzenRow>
 | 
						|
            </RadzenFieldset>
 | 
						|
        </form>
 | 
						|
        <div Style="width:75vw;height:50vh;overflow:auto">
 | 
						|
            <RadzenDataGrid @ref="grid" AllowRowSelectOnRowClick="@allowRowSelectOnRowClick" AllowFiltering="true" LoadData="@LoadData" Style="width:75vw;overflow:auto" Groupable="true"
 | 
						|
                            FilterPopupRenderMode="PopupRenderMode.OnDemand" FilterCaseSensitivity="FilterCaseSensitivity.CaseInsensitive"
 | 
						|
                            Data="@orderInfos" IsLoading="@isLoading" Count="@count" EmptyText="无数据"
 | 
						|
                            SelectionMode="DataGridSelectionMode.Multiple"
 | 
						|
                            @bind-Value="@(selectedOrderInfos)"
 | 
						|
                            CellClick="@((DataGridCellMouseEventArgs<OrderInfo> args) => OnCellClick(args))"
 | 
						|
                            AllowPaging="false">
 | 
						|
                <Columns>
 | 
						|
                    <RadzenDataGridColumn Sortable="false" Filterable="false" Width="4rem">
 | 
						|
                        @*   <HeaderTemplate>
 | 
						|
                            <RadzenCheckBox TabIndex="-1" TriState="false" TValue="bool?" InputAttributes="@(new Dictionary<string, object>() { { "aria-label", "Select all items" } })"
 | 
						|
                            Value="@(selectedOrderInfos == null || selectedOrderInfos?.Any() != true ? false : !orderInfos.All(i => selectedOrderInfos.Contains(i)) ? null : orderInfos.Any(i => selectedOrderInfos.Contains(i)))"
 | 
						|
                            Change="@(args => OnCheckSeleced(args))" />
 | 
						|
                        </HeaderTemplate>
 | 
						|
                        <Template Context="data">
 | 
						|
                            <RadzenCheckBox TabIndex="-1" TriState="false" Value="@data.ItemIsChecked" InputAttributes="@(new Dictionary<string, object>() { { "aria-label", "Select item" } })"
 | 
						|
                            TValue="bool" Change="@(args => { if (!allowRowSelectOnRowClick) { grid.SelectRow(data); } })" />
 | 
						|
                        </Template> *@
 | 
						|
                        <HeaderTemplate>
 | 
						|
                            <RadzenCheckBox TabIndex="-1" TriState="false" TValue="bool?" InputAttributes="@(new Dictionary<string, object>() { { "aria-label", "Select all items" } })"
 | 
						|
                                            Value="@(selectedOrderInfos == null || selectedOrderInfos?.Any() != true ? false : !orderInfos.All(i => selectedOrderInfos.Contains(i)) ? null : orderInfos.Any(i => selectedOrderInfos.Contains(i)))"
 | 
						|
                                            Change="@(args => selectedOrderInfos = args == true ? orderInfos.ToList() : null)" />
 | 
						|
                        </HeaderTemplate>
 | 
						|
                        <Template Context="data">
 | 
						|
                            <RadzenCheckBox TabIndex="-1" TriState="false"
 | 
						|
                                            Value="@(selectedOrderInfos != null &&selectedOrderInfos.Contains(data))"
 | 
						|
                                            InputAttributes="@(new Dictionary<string, object>() { { "aria-label", "Select item" } })"
 | 
						|
                                            TValue="bool" />
 | 
						|
                        </Template>
 | 
						|
                    </RadzenDataGridColumn>
 | 
						|
                    <RadzenDataGridColumn Property="anaesthetistName" Title="麻醉医师" Sortable="false" Filterable="false" Width="8vw" />
 | 
						|
                    <RadzenDataGridColumn Property="PatientName" Title="姓名" Sortable="false" Filterable="false" Width="8vw" />
 | 
						|
                    <RadzenDataGridColumn Property="Sex" Title="性别" Sortable="false" Filterable="false" Width="6vw" />
 | 
						|
                    <RadzenDataGridColumn Property="OrderNo" Title="单号" Sortable="false" Filterable="false" Width="13vw" />
 | 
						|
                    @* <RadzenDataGridColumn Property="ChargeDate" Title="处方时间" Sortable="false" Filterable="false" Width="10vw" /> *@
 | 
						|
                    <RadzenDataGridColumn Property="DetailInfo.Drug.DrugName" Title="药品名称" FormatString="{0:d}" Sortable="false" Filterable="false" Width="20vw" />
 | 
						|
                    @* <Template Context="DetailInfo">
 | 
						|
                       @for (int i = 0; i < DetailList.DetailList.Count; i++)
 | 
						|
                        {
 | 
						|
                            OrderDetail orderDetail = DetailList.DetailList[i]; *@
 | 
						|
                    @*     <RadzenText TextStyle="TextStyle.Subtitle2" class="rz-mb-0">@DetailInfo.Drug.DrugName</RadzenText>
 | 
						|
                    }
 | 
						|
                    </Template> 
 | 
						|
                </RadzenDataGridColumn>*@
 | 
						|
                    @*  <RadzenDataGridColumn Property="Detail.SetManuNo" Title="药品批次" Sortable="false" Filterable="false" Width="8rem">
 | 
						|
                    <Template Context="DetailList">
 | 
						|
                        @for (int i = 0; i < DetailList.DetailList.Count; i++)
 | 
						|
                        {
 | 
						|
                            OrderDetail orderDetail = DetailList.DetailList[i];
 | 
						|
                            <RadzenText TextStyle="TextStyle.Subtitle2" class="rz-mb-0">@orderDetail.SetManuNo</RadzenText>
 | 
						|
                        }
 | 
						|
                    </Template>
 | 
						|
                </RadzenDataGridColumn> *@
 | 
						|
                    <RadzenDataGridColumn Title="批次" Property="DetailInfo.SetManuNo" Filterable="false" Width="18vw">
 | 
						|
                        <Template Context="DetailInfo">
 | 
						|
                            <RadzenText TextStyle="TextStyle.Subtitle2" class="mb-0">@DetailInfo.DetailInfo.SetManuNo</RadzenText>
 | 
						|
 | 
						|
                            @if (DetailInfo.DetailInfo.SetManuNo != null)
 | 
						|
                            {
 | 
						|
                                <RadzenText TextStyle="TextStyle.Caption">
 | 
						|
                                    @DetailInfo.DetailInfo.SetManuNo
 | 
						|
                                </RadzenText>
 | 
						|
                            }
 | 
						|
                        </Template>
 | 
						|
                        @*      <EditTemplate Context="DetailInfo">
 | 
						|
                            <RadzenDropDown TValue="DrugManuNo" Name="ManuNo" @bind-Value="DetailInfo.DetailInfo.drugManuNo" Data="DetailInfo.DetailInfo.Drug.Manus" Style="width:100%; display: block;">
 | 
						|
                                <Template>
 | 
						|
                                    <RadzenText TextStyle="TextStyle.Subtitle2" class="mb-0">@((context as DrugManuNo)?.ManuNo)</RadzenText>
 | 
						|
                                    @if ((context as DrugManuNo).EffDate != null && (context as DrugManuNo).EffDate.ToString().Length > 10)
 | 
						|
                                    {
 | 
						|
 | 
						|
                                        <RadzenText TextStyle="TextStyle.Caption">@((context as DrugManuNo).EffDate.ToString().Substring(0, 10))</RadzenText>
 | 
						|
                                    }
 | 
						|
                                    else
 | 
						|
                                    {
 | 
						|
 | 
						|
                                        <RadzenText TextStyle="TextStyle.Caption">@((context as DrugManuNo)?.EffDate)</RadzenText>
 | 
						|
                                    }
 | 
						|
                                </Template>
 | 
						|
                                <ValueTemplate>
 | 
						|
                                    <RadzenStack Orientation="Orientation.Horizontal">
 | 
						|
                                        <RadzenText TextStyle="TextStyle.Subtitle2" class="mb-0">@((context as DrugManuNo)?.ManuNo)</RadzenText>
 | 
						|
                                        @if ((context as DrugManuNo).EffDate != null && (context as DrugManuNo).EffDate.ToString().Length > 10)
 | 
						|
                                        {
 | 
						|
 | 
						|
                                            <RadzenText TextStyle="TextStyle.Caption">@((context as DrugManuNo).EffDate.ToString().Substring(0, 10))</RadzenText>
 | 
						|
                                        }
 | 
						|
                                        else
 | 
						|
                                        {
 | 
						|
 | 
						|
                                            <RadzenText TextStyle="TextStyle.Caption">@((context as DrugManuNo)?.EffDate)</RadzenText>
 | 
						|
                                        }
 | 
						|
                                    </RadzenStack>
 | 
						|
                                </ValueTemplate>
 | 
						|
                            </RadzenDropDown>
 | 
						|
                            <RadzenRequiredValidator Text="请选择批次" Component="ManuNo" Popup="true" />
 | 
						|
                        </EditTemplate> *@
 | 
						|
                    </RadzenDataGridColumn>
 | 
						|
                    <RadzenDataGridColumn Property="DetailInfo.Quantity" Title="数量" Filterable="false" Width="6vw">
 | 
						|
                        @* <EditTemplate Context="DetailInfo">
 | 
						|
                            <RadzenNumeric Min="0" Style="display: block" Name="Quantity" @bind-Value=@DetailInfo.DetailInfo.Quantity />
 | 
						|
                            <RadzenNumericRangeValidator Style="position: absolute;z-index: 9999;" Min="0" Text="请填写正确的添加数量" Component="Quantity" Popup="true" />
 | 
						|
                        </EditTemplate> *@
 | 
						|
                    </RadzenDataGridColumn>
 | 
						|
                </Columns>
 | 
						|
            </RadzenDataGrid>
 | 
						|
        </div>
 | 
						|
    </div>
 | 
						|
</RadzenStack>
 | 
						|
@code {
 | 
						|
 | 
						|
    private readonly ILog logger = LogManager.GetLogger(typeof(CheckOrder));
 | 
						|
    @inject IOrderInfoDao orderInfoDao;
 | 
						|
    @inject DialogService dialogService;
 | 
						|
    @inject Microsoft.Extensions.Options.IOptions<Pojo.Config.SettingConfig> setting;
 | 
						|
    @inject NotificationService _message;
 | 
						|
    @inject IReportDataDao reportDataDao;
 | 
						|
    @inject IOptions<SettingConfig> setting;
 | 
						|
 | 
						|
 | 
						|
 | 
						|
    [Parameter] public BoxModel boxModel { get; set; }
 | 
						|
 | 
						|
    bool allowRowSelectOnRowClick = true;
 | 
						|
    IEnumerable<OrderInfo> orderInfos;
 | 
						|
    IList<OrderInfo> selectedOrderInfos = new List<OrderInfo>();
 | 
						|
    RadzenDataGrid<OrderInfo> grid;
 | 
						|
    //麻醉师集合
 | 
						|
    List<Anaesthetist> NamesList = new List<Anaesthetist>();
 | 
						|
    Anaesthetist NameInfo;
 | 
						|
    Anaesthetist BoxColor;
 | 
						|
    //药盒集合
 | 
						|
    List<BoxModel> BoxList = new List<BoxModel>();
 | 
						|
    //药盒颜色集合
 | 
						|
    List<Anaesthetist> BoxColorList = new List<Anaesthetist>();
 | 
						|
    BoxModel BoxNum;
 | 
						|
    bool isLoading;
 | 
						|
    int count;
 | 
						|
    int[] DrawerNos = new int[] { 1, 2, 3, 4, 5, 6, 7, 8 };
 | 
						|
    int status = 0;
 | 
						|
    string OrderNo;
 | 
						|
    string PatientName;
 | 
						|
    DateTime OrderDate = DateTime.Now;
 | 
						|
    DateTime PortOrderDate = DateTime.Now;
 | 
						|
    Popup popup;
 | 
						|
    RadzenButton button;
 | 
						|
    //第一次加载不执行LoadData方法
 | 
						|
    // int firstLod = 1;
 | 
						|
    void OnCheckSeleced(object dete)
 | 
						|
    {
 | 
						|
        if (orderInfos != null)
 | 
						|
        {
 | 
						|
            orderInfos.ToList().ForEach(it => it.ItemIsChecked = true);
 | 
						|
        }
 | 
						|
    }
 | 
						|
    void OnCurrentDateChanged(DateTime args)
 | 
						|
    {
 | 
						|
        OrderDate = new DateTime(args.Year, args.Month, args.Day);
 | 
						|
    }
 | 
						|
    void OnCellClick(DataGridCellMouseEventArgs<OrderInfo> args)
 | 
						|
    {
 | 
						|
        if (args.Data.DetailInfo.SetManuNo != null)
 | 
						|
        {
 | 
						|
            args.Data.DetailInfo.drugManuNo = args.Data.DetailInfo.Drug.Manus.Where(m => m.ManuNo == args.Data.DetailInfo.SetManuNo).FirstOrDefault();
 | 
						|
        }
 | 
						|
        if (args.Data.DetailInfo.drugManuNo == null)
 | 
						|
        {
 | 
						|
            args.Data.DetailInfo.drugManuNo = args.Data.DetailInfo.Drug.Manus.FirstOrDefault();
 | 
						|
        }
 | 
						|
        args.Data.ItemIsChecked = !args.Data.ItemIsChecked;
 | 
						|
        grid.EditRow(args.Data);
 | 
						|
    }
 | 
						|
    //确认
 | 
						|
    async Task Confirm()
 | 
						|
    {
 | 
						|
        if (selectedOrderInfos == null || selectedOrderInfos.Count<=0)
 | 
						|
        {
 | 
						|
            _message.Notify(
 | 
						|
                   new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"请选择处方", Duration = 4000 }
 | 
						|
               );
 | 
						|
            return;
 | 
						|
        }
 | 
						|
        // 关闭弹窗selectedOrderInfos
 | 
						|
        dialogService.Close(selectedOrderInfos);
 | 
						|
 | 
						|
    }
 | 
						|
    PageData<OrderInfo> result;
 | 
						|
    protected override async Task OnInitializedAsync()
 | 
						|
    {
 | 
						|
        await base.OnInitializedAsync();
 | 
						|
    }
 | 
						|
    async Task LoadData(LoadDataArgs args)
 | 
						|
    {
 | 
						|
        // if (firstLod == 1)
 | 
						|
        if (boxModel != null && boxModel.BoxName > 0)
 | 
						|
        {
 | 
						|
            //查询除本药箱外的处方信息
 | 
						|
            result = await orderInfoDao.GetAllOrderInfoForImport(PatientName, OrderNo, OrderDate, boxModel, args.Top, args.Skip);
 | 
						|
            orderInfos = result.Desserts;
 | 
						|
            selectedOrderInfos = orderInfos.ToList();
 | 
						|
            count = result.TotalDesserts;
 | 
						|
            isLoading = true;
 | 
						|
        }
 | 
						|
        isLoading = false;
 | 
						|
    }
 | 
						|
} |