提交修改

This commit is contained in:
maqiao 2024-06-28 10:37:26 +08:00
parent 3e808f3806
commit aade72f0cd
44 changed files with 2468 additions and 138 deletions

View File

@ -37,11 +37,11 @@
<!-- 抽屉串口使用的协议232或者485 -->
<add key="DrawerProtocol" value="485" />
<!-- 抽屉串口的串口号 -->
<add key="DrawerPortPath" value="COM1" />
<add key="DrawerPortPath" value="COM3" />
<!-- can总线串口的串口号 -->
<add key="CanBusPortPath" value="COM6" />
<add key="CanBusPortPath" value="COM9" />
<!-- 条码枪串口的串口号 -->
<add key="ScanCodePortPath" value="COM8" />
<add key="ScanCodePortPath" value="COM111" />
<!-- 抽屉串口的串口号 --><!--
<add key="DrawerPortPath" value="COM11" />
--><!-- can总线串口的串口号 --><!--
@ -56,6 +56,10 @@
<add key="machineNumber" value="1"/>
<!-- 指纹机ip -->
<add key="fingerIp" value="192.168.1.201"/>
<!-- 取药还药时间段设置时间24小时制 --><!--
<add key="TakeReturnTime" value="13:42:00-14:42:00"/>
--><!-- 取药还药周 --><!--
<add key="TakeReturnWeek" value="1,2,3,4,5"/>-->
</appSettings>
</configuration>

View File

@ -6,7 +6,7 @@
d1p1:Ignorable="d"
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
xmlns:local="clr-namespace:DM_Weight"
xmlns:prism="http://prismlibrary.com/">
xmlns:prism="http://prismlibrary.com/" Startup="PrismApplication_Startup">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>

View File

@ -23,6 +23,8 @@ using log4net;
using System.Windows.Interop;
using System.Windows.Threading;
using System.Timers;
using System.Diagnostics;
using System.Runtime.InteropServices;
namespace DM_Weight
{
@ -92,7 +94,7 @@ namespace DM_Weight
// 串口工具
containerRegistry.RegisterSingleton<PortUtil>();
// 指纹机工具
//containerRegistry.RegisterSingleton<FingerprintUtil>();
containerRegistry.RegisterSingleton<FingerprintUtil>();
// 组态屏工具
containerRegistry.RegisterSingleton<ScreenUtil>();
@ -111,6 +113,8 @@ namespace DM_Weight
// 布局页面
containerRegistry.RegisterForNavigation<HomeWindow, HomeWindowViewModel>();
// 布局页面
containerRegistry.RegisterForNavigation<HomeWindow_New, HomeWindowViewModel_New>();
// 录入指纹模态框
containerRegistry.RegisterDialog<FingerprintDialog>();
@ -181,7 +185,7 @@ namespace DM_Weight
// 库存列表页面
containerRegistry.RegisterForNavigation<CheckStockWindow, CheckStockWindowViewModel>();
// 药品列表页面
// containerRegistry.RegisterForNavigation<DrugListWindow, DrugListWindowViewModel>();
containerRegistry.RegisterForNavigation<DrugListWindow, DrugListWindowViewModel>();
#endregion
@ -207,5 +211,43 @@ namespace DM_Weight
containerRegistry.RegisterForNavigation<ConfirmMessageDialog, ConfirmMessageDialogViewModel>();
}
private static void RaiseOtherProcess()
{
Process proc = Process.GetCurrentProcess();
foreach (Process otherProc in Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName))
{
if (proc.Id != otherProc.Id)
{
IntPtr hWnd = otherProc.MainWindowHandle;
if (IsIconic(hWnd))
{
ShowWindowAsync(hWnd, 9);
}
SetForegroundWindow(hWnd);
break;
}
}
}
[DllImport("user32.dll")]
private static extern bool SetForegroundWindow(IntPtr hWnd);
[DllImport("user32.dll")]
private static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);
[DllImport("user32.dll")]
private static extern bool IsIconic(IntPtr hWnd);
private void PrismApplication_Startup(object sender, StartupEventArgs e)
{
//获取欲启动程序名
string processName = System.Diagnostics.Process.GetCurrentProcess().ProcessName;
//检查程序是否已经启动,已经启动则显示提示退出程序
if (System.Diagnostics.Process.GetProcessesByName(processName).Length > 1)
{
//系统在运行
RaiseOtherProcess();
Application.Current.Shutdown();
return;
}
}
}
}

View File

@ -0,0 +1,23 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
namespace DM_Weight.Common
{
public class CommonClass
{
//手动实现调用配置的逻辑 规避修改配置文件后不起作用的问题
public static string ReadAppSetting(string key)
{
string xPath = "/configuration/appSettings//add[@key='" + key + "']";
XmlDocument doc = new XmlDocument();
string exeFileName = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name;
doc.Load(exeFileName + ".dll.config");
XmlNode node = doc.SelectSingleNode(xPath);
return node.Attributes["value"].Value.ToString();
}
}
}

View File

@ -0,0 +1,55 @@
using Prism.Mvvm;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DM_Weight.Common
{
public class SelectableViewModel : BindableBase
{
private bool _isSelected;
private string? _name;
private string? _description;
private char _code;
private double _numeric;
private string? _food;
public bool IsSelected
{
get => _isSelected;
set => SetProperty(ref _isSelected, value);
}
public char Code
{
get => _code;
set => SetProperty(ref _code, value);
}
public string? Name
{
get => _name;
set => SetProperty(ref _name, value);
}
public string? Description
{
get => _description;
set => SetProperty(ref _description, value);
}
public double Numeric
{
get => _numeric;
set => SetProperty(ref _numeric, value);
}
public string? Food
{
get => _food;
set => SetProperty(ref _food, value);
}
}
}

View File

@ -0,0 +1,23 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Controls;
namespace DM_Weight.Common
{
public class SimpleDateValidationRule : ValidationRule
{
public override ValidationResult Validate(object value, CultureInfo cultureInfo)
{
return DateTime.TryParse((value ?? "").ToString(),
CultureInfo.CurrentCulture,
DateTimeStyles.AssumeLocal | DateTimeStyles.AllowWhiteSpaces,
out _)
? ValidationResult.ValidResult
: new ValidationResult(false, "请选择时间");
}
}
}

View File

@ -73,6 +73,18 @@ namespace DM_Weight.Converter
return Visibility.Collapsed;
}
}
//还空瓶页面退出按钮
if(parameter.ToString().Equals("QuitBtnVisible"))
{
if (status == 0)
{
return Visibility.Visible;
}
else
{
return Visibility.Collapsed;
}
}
return Visibility.Collapsed;
}

View File

@ -0,0 +1,38 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Data;
namespace DM_Weight.Converter
{
internal class TypeConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
int mrType;
bool isType = int.TryParse(value.ToString(), out mrType);
//药品领取登记
if (parameter!=null&& parameter.ToString().Equals("DragTakeCheckIn"))
{
if (mrType == 3)
{
return Visibility.Visible;
}
else
{
return Visibility.Collapsed;
}
}
return Visibility.Collapsed;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}

View File

@ -96,6 +96,12 @@
<None Update="ReportTemp\account_book_temp.grf">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="ReportTemp\drug_take_check_in.grf">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="ReportTemp\drug_take_check_in2.grf">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="ReportTemp\machine_log_check.grf">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>

View File

@ -161,8 +161,16 @@ namespace DM_Weight.Finger
bool result = false;
// 取消其他操作
bool res2 = axCZKEM1.CancelOperation();
if (machineType == 1)
{
// 删除源指纹
bool res = axCZKEM1.DelUserTmp(machineNumber, Id, FingerIndex);
}
else
{
// 删除源指纹
bool res = axCZKEM1.SSR_DelUserTmp(machineNumber, Id.ToString(), FingerIndex);
}
// 添加新指纹
result = axCZKEM1.StartEnrollEx(Id.ToString(), FingerIndex, 3);
return result;

View File

@ -480,7 +480,7 @@ namespace DM_Weight.Port
byte[] bytes = await CheckRecoverQuantity();
int[] r1 = bytes.Select(it => Convert.ToInt32(it)).ToArray();
logger.Info($"回收箱查数返回{string.Join(",",r1)}");
logger.Info($"回收箱查数返回{string.Join(",", r1)}");
// 返回消息库位关闭,放入空瓶数量
int[] quantitys = r1.Skip(3).Take(3).ToArray();
int index = ColNos[0] % 3 > 0 ? ColNos[0] % 3 - 1 : 2;
@ -861,7 +861,7 @@ namespace DM_Weight.Port
byte[] buffer = new byte[] { 0xaa, (byte)channel, 0x0a, 0x00, 0x00, 0x00, 0x00, 0xee };
canBusSerial.Write(buffer, 0, 8);
string msg = string.Empty;
logger.Info($"单支板有药位置亮灯指令:{string.Join(",",buffer)}");
logger.Info($"单支板有药位置亮灯指令:{string.Join(",", buffer)}");
await Task.Delay(TimeSpan.FromMilliseconds(20));
}
@ -1154,7 +1154,7 @@ namespace DM_Weight.Port
byte[] buffer = new byte[] { 0xAA, 0x9A, (byte)(ColNos[0] > 3 ? 2 : 1), 0x00, 0x00, 0x00, 0x00, 0xEE };
//byte[] buffer = new byte[] { 0xAA, 0x9A, 01,(byte)(ColNos[0] > 3 ? 2 : 1), 0x00, 0x00, 0x00,0xEE };
canBusSerial.Write(buffer, 0, 8);
logger.Info($"回收箱数量查询发{string.Join(",",buffer)}");
logger.Info($"回收箱数量查询发{string.Join(",", buffer)}");
return await GetBufferByPort(canBusSerial, 8);
}

View File

@ -43,7 +43,7 @@ namespace DM_Weight.Report
//{
// Report.ParameterByName("machine_id").Value = (ConfigurationManager.AppSettings["machineId"] ?? "DM1");
//});
string machine_id=(ConfigurationManager.AppSettings["machineId"] ?? "DM1");
string machine_id = (ConfigurationManager.AppSettings["machineId"] ?? "DM1");
string SQL = $@"SELECT cl.`row_no` AS drawerNo,cl.`col_no` AS colNo,cl.`quantity` AS quantity,cl.`manu_no` AS manuNo,cl.`eff_date` AS effDate,
di.`drug_name` AS drugName,di.`drug_spec` AS drugSpec,di.`pack_unit` AS packUnit,di.`manufactory` AS manuFactory,di.`max_stock` AS baseQuantity,
cl.`drug_id` AS drugId FROM channel_stock cl INNER JOIN drug_info di ON di.`drug_id` = cl.`drug_id` WHERE cl.`machine_id` = '{machine_id}' AND cl.`drawer_type` = 1 ORDER BY cl.`drug_id`";
@ -57,7 +57,7 @@ namespace DM_Weight.Report
{
DateTime? p_startDate = startDate ?? Convert.ToDateTime("2010-1-1");
DateTime? p_endDate = endDate ?? DateTime.Now.AddDays(1);
string p_machine_id= (ConfigurationManager.AppSettings["machineId"] ?? "DM1");
string p_machine_id = (ConfigurationManager.AppSettings["machineId"] ?? "DM1");
// 定义Grid++Report报表主对象
GridppReport Report = new GridppReport();
// 加载模板文件
@ -148,11 +148,65 @@ namespace DM_Weight.Report
}
Report.DetailGrid.Recordset.ConnectionString = gridConnectionString;
Report.DetailGrid.Recordset.QuerySQL= SQL;
Report.DetailGrid.Recordset.QuerySQL = SQL;
Report.PrintPreview(true);
}
/// <summary>
/// 麻醉科精一、精二药品领取登记表
/// </summary>
/// <remarks>
/// <para>
/// 麻醉科药品领取登记表按取药时间查询 <br/> 精一固定5种药精二固定4种药
/// </para>
/// </remarks>
/// <param name="startDate"></param>
/// <param name="endDate"></param>
/// <param name="type">1->精12->精2</param>
public static void PrintReportDrugTakeCheckIn(DateTime? startDate, DateTime? endDate,int type)
{
// 定义Grid++Report报表主对象
GridppReport Report = new GridppReport();
DateTime? p_startDate = startDate ?? Convert.ToDateTime("2010-1-1");
DateTime? p_endDate = endDate ?? DateTime.Now.AddDays(1);
string p_machine_id = (ConfigurationManager.AppSettings["machineId"] ?? "DM1");
string SQL = string.Empty;
Report.Initialize += new _IGridppReportEvents_InitializeEventHandler(() =>
{
Report.ParameterByName("machine_id").Value = (ConfigurationManager.AppSettings["machineId"] ?? "DM1");
Report.ParameterByName("startDate").Value = startDate ?? DateTime.Now.AddYears(-10);
Report.ParameterByName("endDate").Value = endDate ?? DateTime.Now.AddDays(1);
});
SQL = $@"SELECT operation_time,d.drug_name,manu_no,eff_date,quantity,u.User_name,ur.user_name reviewer,returnOptTime,u2.User_name returnUser,u2r.user_name returnReviewer,return_quantity1,return_quantity2
from dm_machine_record AS mr
LEFT JOIN (SELECT operation_time returnOptTime,operator returnOperator,reviewer returnReviewer,drug_id returnDrug_id,get_id
FROM dm_machine_record) AS returnMr
ON mr.drug_id=returnMr.returnDrug_id AND returnMr.get_id=mr.id LEFT JOIN drug_info d on mr.drug_id=d.drug_id
LEFT JOIN user_list u on mr.operator=u.id
LEFT JOIN user_list ur on mr.reviewer=ur.id
LEFT JOIN user_list u2 on returnMr.returnOperator=u2.id
LEFT JOIN user_list u2r on returnMr.returnReviewer=u2r.id
WHERE mr.type=2 AND mr.`machine_id` = '{p_machine_id}' AND mr.`operation_time` > '{p_startDate}' AND mr.`operation_time` < '{p_endDate}' ";
if (type == 1)
{
// 加载模板文件
Report.LoadFromFile(new FileInfo(AppDomain.CurrentDomain.BaseDirectory) + "ReportTemp//" + "drug_take_check_in.grf");
SQL += @" and mr.DRUG_ID IN('9131487','10826545','9112595','9132487','9087821')";
}
else
{
// 加载模板文件
Report.LoadFromFile(new FileInfo(AppDomain.CurrentDomain.BaseDirectory) + "ReportTemp//" + "drug_take_check_in2.grf");
SQL += @" and mr.DRUG_ID IN('95892862','1053979','9644264','12663789')";
}
SQL+=" GROUP BY mr.operation_time, mr.drug_id, mr.operator, mr.machine_id";
Report.DetailGrid.Recordset.ConnectionString = gridConnectionString;
Report.DetailGrid.Recordset.QuerySQL = SQL;
Report.PrintPreview(true);
}
/**

View File

@ -0,0 +1,387 @@
{
"Version":"6.3.0.1",
"Font":{
"Name":"宋体",
"Size":105000,
"Weight":400,
"Charset":134
},
"Printer":{
"Oriention":"Landscape",
"TopMargin":0.3175,
"RightMargin":0.8996,
"BottomMargin":0.3969
},
"DetailGrid":{
"CenterView":true,
"AppendBlankRow":true,
"Recordset":{
"QuerySQL":"SELECT \r\n dmr.`drawer_no` AS drawerNo,\r\n dmr.`col_no` AS colNo,\r\n dmr.`type` AS `type`,\r\n dmr.`quantity` AS quantity,\r\n dmr.`manu_no` AS manuNo,\r\n dmr.`eff_date` AS effDate,\r\n dmr.`operation_time` AS operationTime,\r\n di.`drug_name` AS drugName,\r\n di.`drug_spec` AS drugSpec,\r\n di.`pack_unit` AS packUnit,\r\n di.`manufactory` AS manuFactory,\r\n di.`max_stock` AS baseQuantity,\r\n dmr.`drug_id` AS drugId,\r\n ul.`user_name` AS nickname\r\nFROM\r\n dm_machine_record dmr\r\nLEFT JOIN drug_info di ON di.`drug_id` = dmr.`drug_id`\r\nLEFT JOIN user_list ul ON ul.`id` = dmr.`Operator`\r\nWHERE dmr.`type` = 1 \r\n AND dmr.`machine_id` = :machine_id\r\n AND dmr.`operation_time` > :startDate\r\n AND dmr.`operation_time` < :endDate",
"Field":[
{
"Name":"日期",
"Type":"DateTime",
"Format":"yyyy/MM/dd HH:mm:ss",
"DBFieldName":"operation_time"
},
{
"Name":"效期",
"Format":"yyyy/MM/dd HH:mm:ss",
"DBFieldName":"eff_date"
},
{
"Name":"药品名称",
"DBFieldName":"drug_name"
},
{
"Name":"取药数量",
"DBFieldName":"quantity"
},
{
"Name":"领取人",
"DBFieldName":"User_name"
},
{
"Name":"发药人",
"Format":"yyyy/MM/dd",
"DBFieldName":"reviewer"
},
{
"Name":"还药时间",
"Type":"DateTime",
"Format":"yyyy/MM/dd HH:mm:ss",
"DBFieldName":"returnOptTime"
},
{
"Name":"还药数量",
"DBFieldName":"return_quantity1"
},
{
"Name":"还空瓶数量",
"Type":"Integer",
"DBFieldName":"return_quantity2"
},
{
"Name":"还药人",
"DBFieldName":"returnUser"
},
{
"Name":"收取人",
"DBFieldName":"returnReviewer"
},
{
"Name":"批次",
"DBFieldName":"manu_no"
}
]
},
"Column":[
{
"Name":"日期",
"Width":3.78354
},
{
"Name":"药品名称",
"Width":4.63021
},
{
"Name":"批次",
"Width":1.69333
},
{
"Name":"效期",
"Width":2.56646
},
{
"Name":"取药数量",
"Width":1.19063
},
{
"Name":"领取人",
"Width":1.61396
},
{
"Name":"发药人",
"Width":1.5875
},
{
"Name":"还药时间",
"Width":3.81
},
{
"Name":"还药数量",
"Width":1.05833
},
{
"Name":"还空瓶数量",
"Width":0.978958
},
{
"Name":"还药人",
"Width":1.37583
},
{
"Name":"收取人",
"Width":1.5875
}
],
"ColumnContent":{
"Height":1.00542,
"ColumnContentCell":[
{
"Column":"日期",
"TextAlign":"MiddleCenter",
"DataField":"日期"
},
{
"Column":"药品名称",
"TextAlign":"MiddleCenter",
"DataField":"药品名称"
},
{
"Column":"批次",
"TextAlign":"MiddleCenter",
"DataField":"批次"
},
{
"Column":"效期",
"TextAlign":"MiddleCenter",
"DataField":"效期"
},
{
"Column":"取药数量",
"TextAlign":"MiddleCenter",
"DataField":"取药数量"
},
{
"Column":"领取人",
"TextAlign":"MiddleCenter",
"DataField":"领取人"
},
{
"Column":"发药人",
"TextAlign":"MiddleCenter",
"DataField":"发药人"
},
{
"Column":"还药时间",
"TextAlign":"MiddleCenter",
"DataField":"还药时间"
},
{
"Column":"还药数量",
"TextAlign":"MiddleCenter",
"DataField":"还药数量"
},
{
"Column":"还空瓶数量",
"TextAlign":"MiddleCenter",
"DataField":"还空瓶数量"
},
{
"Column":"还药人",
"TextAlign":"MiddleCenter",
"DataField":"还药人"
},
{
"Column":"收取人",
"TextAlign":"MiddleCenter",
"DataField":"收取人"
}
]
},
"ColumnTitle":{
"Height":2.19604,
"RepeatStyle":"OnPage",
"ColumnTitleCell":[
{
"GroupTitle":false,
"Column":"日期",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"日期"
},
{
"GroupTitle":false,
"Column":"药品名称",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"药品名称"
},
{
"GroupTitle":false,
"Column":"批次",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"批次"
},
{
"GroupTitle":false,
"Column":"效期",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"效期"
},
{
"GroupTitle":false,
"Column":"取药数量",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"取\r\n药\r\n数\r\n量"
},
{
"GroupTitle":false,
"Column":"领取人",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"领取人"
},
{
"GroupTitle":false,
"Column":"发药人",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"发药人"
},
{
"GroupTitle":false,
"Column":"还药时间",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"还药时间"
},
{
"GroupTitle":false,
"Column":"还药数量",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"还\r\n药\r\n数\r\n量"
},
{
"GroupTitle":false,
"Column":"还空瓶数量",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"还\r\n空\r\n瓶\r\n数\r\n量"
},
{
"GroupTitle":false,
"Column":"还药人",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"还药人"
},
{
"GroupTitle":false,
"Column":"收取人",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"收取人"
}
]
}
},
"Parameter":[
{
"Name":"startDate",
"DataType":"DateTime",
"Format":"yyyy-MM-dd hh:mm:ss",
"Value":"2023/1/1"
},
{
"Name":"endDate",
"DataType":"DateTime",
"Format":"yyyy-MM-dd hh:mm:ss",
"Value":"2023/4/28 23:59:59"
},
{
"Name":"machine_id",
"Value":"DM1"
}
],
"ReportHeader":[
{
"Name":"ReportHeader1",
"Height":1.79917,
"Control":[
{
"Type":"MemoBox",
"Name":"MemoBox2",
"Left":7.80521,
"Top":0.211667,
"Width":10.3981,
"Height":1.19063,
"Font":{
"Name":"宋体",
"Size":217500,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"麻醉科精一药品领取登记表"
}
],
"RepeatOnPage":true
}
]
}

View File

@ -0,0 +1,387 @@
{
"Version":"6.3.0.1",
"Font":{
"Name":"宋体",
"Size":105000,
"Weight":400,
"Charset":134
},
"Printer":{
"Oriention":"Landscape",
"TopMargin":0.3175,
"RightMargin":0.8996,
"BottomMargin":0.3969
},
"DetailGrid":{
"CenterView":true,
"AppendBlankRow":true,
"Recordset":{
"QuerySQL":"SELECT \r\n dmr.`drawer_no` AS drawerNo,\r\n dmr.`col_no` AS colNo,\r\n dmr.`type` AS `type`,\r\n dmr.`quantity` AS quantity,\r\n dmr.`manu_no` AS manuNo,\r\n dmr.`eff_date` AS effDate,\r\n dmr.`operation_time` AS operationTime,\r\n di.`drug_name` AS drugName,\r\n di.`drug_spec` AS drugSpec,\r\n di.`pack_unit` AS packUnit,\r\n di.`manufactory` AS manuFactory,\r\n di.`max_stock` AS baseQuantity,\r\n dmr.`drug_id` AS drugId,\r\n ul.`user_name` AS nickname\r\nFROM\r\n dm_machine_record dmr\r\nLEFT JOIN drug_info di ON di.`drug_id` = dmr.`drug_id`\r\nLEFT JOIN user_list ul ON ul.`id` = dmr.`Operator`\r\nWHERE dmr.`type` = 1 \r\n AND dmr.`machine_id` = :machine_id\r\n AND dmr.`operation_time` > :startDate\r\n AND dmr.`operation_time` < :endDate",
"Field":[
{
"Name":"日期",
"Type":"DateTime",
"Format":"yyyy/MM/dd HH:mm:ss",
"DBFieldName":"operation_time"
},
{
"Name":"效期",
"Format":"yyyy/MM/dd HH:mm:ss",
"DBFieldName":"eff_date"
},
{
"Name":"药品名称",
"DBFieldName":"drug_name"
},
{
"Name":"取药数量",
"DBFieldName":"quantity"
},
{
"Name":"领取人",
"DBFieldName":"User_name"
},
{
"Name":"发药人",
"Format":"yyyy/MM/dd",
"DBFieldName":"reviewer"
},
{
"Name":"还药时间",
"Type":"DateTime",
"Format":"yyyy/MM/dd HH:mm:ss",
"DBFieldName":"returnOptTime"
},
{
"Name":"还药数量",
"DBFieldName":"return_quantity1"
},
{
"Name":"还空瓶数量",
"Type":"Integer",
"DBFieldName":"return_quantity2"
},
{
"Name":"还药人",
"DBFieldName":"returnUser"
},
{
"Name":"收取人",
"DBFieldName":"returnReviewer"
},
{
"Name":"批次",
"DBFieldName":"manu_no"
}
]
},
"Column":[
{
"Name":"日期",
"Width":3.78354
},
{
"Name":"药品名称",
"Width":4.63021
},
{
"Name":"批次",
"Width":1.69333
},
{
"Name":"效期",
"Width":2.56646
},
{
"Name":"取药数量",
"Width":1.19063
},
{
"Name":"领取人",
"Width":1.61396
},
{
"Name":"发药人",
"Width":1.5875
},
{
"Name":"还药时间",
"Width":3.81
},
{
"Name":"还药数量",
"Width":1.05833
},
{
"Name":"还空瓶数量",
"Width":0.978958
},
{
"Name":"还药人",
"Width":1.37583
},
{
"Name":"收取人",
"Width":1.5875
}
],
"ColumnContent":{
"Height":1.00542,
"ColumnContentCell":[
{
"Column":"日期",
"TextAlign":"MiddleCenter",
"DataField":"日期"
},
{
"Column":"药品名称",
"TextAlign":"MiddleCenter",
"DataField":"药品名称"
},
{
"Column":"批次",
"TextAlign":"MiddleCenter",
"DataField":"批次"
},
{
"Column":"效期",
"TextAlign":"MiddleCenter",
"DataField":"效期"
},
{
"Column":"取药数量",
"TextAlign":"MiddleCenter",
"DataField":"取药数量"
},
{
"Column":"领取人",
"TextAlign":"MiddleCenter",
"DataField":"领取人"
},
{
"Column":"发药人",
"TextAlign":"MiddleCenter",
"DataField":"发药人"
},
{
"Column":"还药时间",
"TextAlign":"MiddleCenter",
"DataField":"还药时间"
},
{
"Column":"还药数量",
"TextAlign":"MiddleCenter",
"DataField":"还药数量"
},
{
"Column":"还空瓶数量",
"TextAlign":"MiddleCenter",
"DataField":"还空瓶数量"
},
{
"Column":"还药人",
"TextAlign":"MiddleCenter",
"DataField":"还药人"
},
{
"Column":"收取人",
"TextAlign":"MiddleCenter",
"DataField":"收取人"
}
]
},
"ColumnTitle":{
"Height":2.19604,
"RepeatStyle":"OnPage",
"ColumnTitleCell":[
{
"GroupTitle":false,
"Column":"日期",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"日期"
},
{
"GroupTitle":false,
"Column":"药品名称",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"药品名称"
},
{
"GroupTitle":false,
"Column":"批次",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"批次"
},
{
"GroupTitle":false,
"Column":"效期",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"效期"
},
{
"GroupTitle":false,
"Column":"取药数量",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"取\r\n药\r\n数\r\n量"
},
{
"GroupTitle":false,
"Column":"领取人",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"领取人"
},
{
"GroupTitle":false,
"Column":"发药人",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"发药人"
},
{
"GroupTitle":false,
"Column":"还药时间",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"还药时间"
},
{
"GroupTitle":false,
"Column":"还药数量",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"还\r\n药\r\n数\r\n量"
},
{
"GroupTitle":false,
"Column":"还空瓶数量",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"还\r\n空\r\n瓶\r\n数\r\n量"
},
{
"GroupTitle":false,
"Column":"还药人",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"还药人"
},
{
"GroupTitle":false,
"Column":"收取人",
"Font":{
"Name":"宋体",
"Size":120000,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"收取人"
}
]
}
},
"Parameter":[
{
"Name":"startDate",
"DataType":"DateTime",
"Format":"yyyy-MM-dd hh:mm:ss",
"Value":"2023/1/1"
},
{
"Name":"endDate",
"DataType":"DateTime",
"Format":"yyyy-MM-dd hh:mm:ss",
"Value":"2023/4/28 23:59:59"
},
{
"Name":"machine_id",
"Value":"DM1"
}
],
"ReportHeader":[
{
"Name":"ReportHeader1",
"Height":1.79917,
"Control":[
{
"Type":"MemoBox",
"Name":"MemoBox2",
"Left":7.80521,
"Top":0.211667,
"Width":10.3981,
"Height":1.19063,
"Font":{
"Name":"宋体",
"Size":217500,
"Bold":true,
"Charset":134
},
"TextAlign":"MiddleCenter",
"Text":"麻醉科精二药品领取登记表"
}
],
"RepeatOnPage":true
}
]
}

View File

@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DM_Weight.ViewModels
{
internal class DrugTakeCheckIn
{
}
}

View File

@ -0,0 +1,150 @@
using DM_Weight.Models;
using Prism.Commands;
using Prism.Mvvm;
using Prism.Regions;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DM_Weight.Report;
namespace DM_Weight.ViewModels
{
public class DrugTakeCheckInWindowViewModel:BindableBase, IConfirmNavigationRequest, IRegionMemberLifetime
{
private int _pageNum = 1;
public int PageNum
{
get => _pageNum;
set
{
SetProperty(ref _pageNum, value);
RequestData();
}
}
private int _pageCount = 1;
public int PageCount
{
get => _pageCount;
set
{
SetProperty(ref _pageCount, value);
}
}
private int _pageSize = 8;
public int PageSize
{
get => _pageSize;
set
{
SetProperty(ref _pageSize, value);
}
}
private int _totalCount = 0;
public int TotalCount
{
get => _totalCount;
set
{
SetProperty(ref _totalCount, value);
}
}
private DateTime? _startDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
public DateTime? StartDate
{
get => _startDate;
set
{
if (value != null)
{
SetProperty(ref _startDate, new DateTime(value?.Year ?? 0, value?.Month ?? 0, value?.Day ?? 0));
}
else
{
SetProperty(ref _startDate, value);
}
RequestData();
}
}
private DateTime? _endDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 23, 59, 59);
public DateTime? EndDate
{
get => _endDate;
set
{
if (value != null)
{
TimeSpan ershisi = new TimeSpan(23, 59, 59);
SetProperty(ref _endDate, new DateTime(value?.Year ?? 0, value?.Month ?? 0, value?.Day ?? 0, 23, 59, 59));
}
else
{
SetProperty(ref _endDate, value);
}
RequestData();
}
}
private List<MachineRecord>? machineRecords;
public List<MachineRecord>? MachineRecords
{
get { return machineRecords; }
set { SetProperty(ref machineRecords, value); }
}
public bool KeepAlive => false;
public DelegateCommand Query
{
get => new DelegateCommand(() =>
{
RequestData();
});
}
public DelegateCommand Download
{
get => new DelegateCommand(() =>
{
//GridReportUtil.PrintReportDrugTakeCheckIn(StartDate, EndDate);
});
}
private void RequestData()
{
}
public void ConfirmNavigationRequest(NavigationContext navigationContext, Action<bool> continuationCallback)
{
continuationCallback(true);
}
public void OnNavigatedTo(NavigationContext navigationContext)
{
Task.Factory.StartNew(() =>
{
RequestData();
});
}
public bool IsNavigationTarget(NavigationContext navigationContext)
{
return true;
}
public void OnNavigatedFrom(NavigationContext navigationContext)
{
}
}
}

View File

@ -21,6 +21,10 @@ using System.Timers;
using Unity;
using System.Windows.Threading;
using Newtonsoft.Json.Linq;
using DM_Weight.msg;
using MaterialDesignThemes.Wpf;
using System.Windows.Media;
using DM_Weight.Common;
namespace DM_Weight.ViewModels
{
@ -31,8 +35,12 @@ namespace DM_Weight.ViewModels
private readonly IDialogService _dialogService;
private UserList? _userList;
private UserList? _userList2;
//private bool ISTakeReturn;
private int loginMode = Convert.ToInt32(ConfigurationManager.AppSettings["loginMode"]?.ToString() ?? "1");
private int loginMode = Convert.ToInt32(CommonClass.ReadAppSetting("loginMode")?.ToString() ?? "1");
//获取可取药还药的时间段
//string[] timeSpan = CommonClass.ReadAppSetting("TakeReturnTime").Split('-');
//string weeksSpan = CommonClass.ReadAppSetting("TakeReturnWeek");
public bool MultiLogin
{
get => loginMode == 2;
@ -102,6 +110,10 @@ namespace DM_Weight.ViewModels
{
if (value.PremissionPath.Equals("ReturnDrugWindow") || value.PremissionPath.Equals("ReturnDrugWindow2"))
{
//if (!ISTakeReturn)
//{
// return;
//}
if (ConfigurationManager.AppSettings["returnDrugMode"].ToString().Equals("1"))
{
_regionManager.RequestNavigate("ContentRegion", "ReturnDrugWindow2");
@ -112,11 +124,18 @@ namespace DM_Weight.ViewModels
}
}
else
{
//if (value.PremissionPath.Equals("OrderTakeDrugWindow") && !ISTakeReturn)
//{
// return;
//}
//else
{
_regionManager.RequestNavigate("ContentRegion", value.PremissionPath);
}
}
}
}
SetProperty(ref _selectedChildMenu, value);
}
}
@ -152,19 +171,38 @@ namespace DM_Weight.ViewModels
}
private void SelectionMethod(ListBox viewName)
{
logger.Info($"用户【{Operator?.Nickname}】进入菜单点击事件");
//CheckTakeReturnTime();
//PremissionDm premissionDm = viewName.SelectedItem as PremissionDm;
//if ((premissionDm.PremissionName == "取药" || premissionDm.PremissionName == "还药") && !ISTakeReturn)
//{
// //AlertMsg alertMsg = new AlertMsg
// //{
// // Message = $"当前时间不可操作{premissionDm.PremissionName}",
// // Type = MsgType.ERROR,
// //};
// //_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
// SnackbarMessageQueue.Enqueue($"当前时间不可操作{premissionDm.PremissionName}");
// viewName.SelectedItem = SelectedMenu;
// return;
//}
SelectedMenu = viewName.SelectedItem as PremissionDm;
if (SelectedMenu.PremissionName == "退出")
{
logger.Info($"用户【{Operator?.Nickname}】退出登录");
//logger.Info($"用户【{Operator?.Nickname}】退出登录");
logger.Info($"用户【{Operator?.Nickname}】退出登录;SelectionMethod{SelectedMenu.PremissionName}");
Operator = null;
Reviewer = null;
_regionManager.RequestNavigate("MainRegion", "LoginWindow");
}
else
{
//SelectedMenu.Children = SelectedMenu.Children;
SelectedChildMenu = SelectedMenu.Children[0];
}
logger.Info($"用户【{Operator?.Nickname}】结束菜单点击事件");
}
public List<PremissionDm> PremissionDmList { get { return _premissionDmList; } set { SetProperty(ref _premissionDmList, value); } }
@ -182,12 +220,14 @@ namespace DM_Weight.ViewModels
public bool Is16Drawer { get => _is16Drawer; set => SetProperty(ref _is16Drawer, value); }
public bool KeepAlive => false;
private PortUtil _portUtil;
//IEventAggregator _eventAggregator;
public HomeWindowViewModel(IRegionManager iRegionManager, PortUtil portUtil, IDialogService dialogService, IUnityContainer container)
{
_portUtil = portUtil;
_regionManager = iRegionManager;
_dialogService = dialogService;
_container = container;
//_eventAggregator = eventAggregator;
}
public DelegateCommand<string> OpenFingerDialog
@ -199,6 +239,18 @@ namespace DM_Weight.ViewModels
DialogServiceExtensions.ShowDialogHost(_dialogService, "FingerprintDialog", dialogParameters, DoDialogResult, "RootDialog");
});
}
//退出
public DelegateCommand QuitCommand
{
get => new DelegateCommand(QuitAction);
}
private void QuitAction()
{
logger.Info($"用户【{Operator?.Nickname}】退出登录;{UserList.Nickname}");
Operator = null;
Reviewer = null;
_regionManager.RequestNavigate("MainRegion", "LoginWindow");
}
public DelegateCommand OpenRecoverCommand
{
@ -253,11 +305,53 @@ namespace DM_Weight.ViewModels
continuationCallback(true);
}
private ISnackbarMessageQueue _snackbarMessageQueue = new SnackbarMessageQueue(TimeSpan.FromSeconds(3));
public ISnackbarMessageQueue SnackbarMessageQueue
{
get => _snackbarMessageQueue;
set => SetProperty(ref _snackbarMessageQueue, value);
}
private SolidColorBrush _colorBrush=new SolidColorBrush((Color) ColorConverter.ConvertFromString("#b71c1c"));
public SolidColorBrush SnackbarBackground
{
get => _colorBrush;
set => SetProperty(ref _colorBrush, value);
}
//接收导航传过来的参数
public void OnNavigatedTo(NavigationContext navigationContext)
{
//CheckTakeReturnTime();
////是否可操作取药还药定时
//System.Timers.Timer TakeReturnTimer = new System.Timers.Timer();
//TakeReturnTimer.Interval = 1000;
//TakeReturnTimer.Elapsed += (sender, e) =>
//{
// // 当前时间不可操作取药、还药
// if (!CheckTakeReturnTime())
// {
// if (SelectedMenu.PremissionName == "取药" || SelectedMenu.PremissionName == "还药")
// {
// SnackbarMessageQueue.Enqueue($"当前时间不可操作{SelectedMenu.PremissionName}");
// //SelectedMenu = ISTakeReturn ? UserList.Role.Permissions[0] : UserList.Role.Permissions[1];
// //SelectedChildMenu = SelectedMenu.Children[0];
// //_regionManager.RequestNavigate("ContentRegion", SelectedMenu.Children[0].PremissionPath);
// //PremissionDmList = UserList.Role.Permissions;
// List<PremissionDm> premissions = UserList.Role.Permissions;
// SelectedMenu = ISTakeReturn ? premissions[0] : premissions[1];
// SelectedChildMenu = SelectedMenu.Children[0];
// System.Windows.Application.Current.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Send, new Action(() =>
// {
// _regionManager.RequestNavigate("ContentRegion", "SelfAddWindow");
// }));
// }
// }
//};
//TakeReturnTimer.Start();
//_portUtil.dateTime = DateTime.Now;
//取出user
UserList = navigationContext.Parameters.GetValue<UserList>("operator");
Operator = UserList;
@ -273,9 +367,13 @@ namespace DM_Weight.ViewModels
//SqlSugarHelper.Db.SqlQueryable<PremissionDm>(sql)
//.ToTree(pd => pd.Children, pd => pd.ParentId, 0);
PremissionDmList = premissions;
//SelectedMenu = ISTakeReturn ? premissions[0] : premissions[1];
SelectedMenu = premissions[0];
SelectedChildMenu = SelectedMenu.Children[0];
FindDrawerCount();
int autoExit = Convert.ToInt32(ConfigurationManager.AppSettings["autoExit"] ?? "0");
@ -305,7 +403,46 @@ namespace DM_Weight.ViewModels
timer.Start();
}
}
///// <summary>
///// 检查是否在可取药、还药操作时间段
///// </summary>
//private bool CheckTakeReturnTime()
//{
// ISTakeReturn = true;
// //查询该时间段能否取药跟还药
// DateTime dtNow = DateTime.Now;
// string weekNow = DateTime.Today.DayOfWeek.ToString("d");
// string[] timeSpan = CommonClass.ReadAppSetting("TakeReturnTime").Split('-');
// string weeksSpan = CommonClass.ReadAppSetting("TakeReturnWeek");
// if (timeSpan != null && timeSpan.Length == 2&& weeksSpan.IndexOf(weekNow)>=0)
// {
// bool bStart = DateTime.TryParse(timeSpan[0], out DateTime startTime);
// bool bEnd = DateTime.TryParse(timeSpan[1], out DateTime endTime);
// if (bStart && bEnd)
// {
// if (endTime < startTime)
// {
// endTime = endTime.AddDays(1);
// }
// if (dtNow >= startTime && dtNow <= endTime)
// {
// ISTakeReturn = true;
// }
// else
// {
// ISTakeReturn = false;
// //AlertMsg alertMsg = new AlertMsg
// //{
// // Message = $"当前时间不可操作{SelectedMenu.PremissionName}",
// // Type = MsgType.ERROR,
// //};
// //_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
// //return;
// }
// }
// }
// return ISTakeReturn;
//}
//每次导航的时候该实列用不用重新创建true是不重新创建,false是重新创建
public bool IsNavigationTarget(NavigationContext navigationContext)
{

View File

@ -0,0 +1,473 @@
using log4net;
using Prism.Commands;
using Prism.Events;
using Prism.Mvvm;
using Prism.Regions;
using Prism.Services.Dialogs;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using DM_Weight.Models;
using DM_Weight.Port;
using DM_Weight.util;
using DM_Weight.Views;
using System.Timers;
using Unity;
using System.Windows.Threading;
using Newtonsoft.Json.Linq;
using DM_Weight.msg;
using MaterialDesignThemes.Wpf;
using System.Windows.Media;
using DM_Weight.Common;
namespace DM_Weight.ViewModels
{
public class HomeWindowViewModel_New : BindableBase, IConfirmNavigationRequest, IRegionMemberLifetime
{
private readonly ILog logger = LogManager.GetLogger(typeof(HomeWindowViewModel));
private readonly IDialogService _dialogService;
private UserList? _userList;
private UserList? _userList2;
private bool ISTakeReturn;
private int loginMode = Convert.ToInt32(CommonClass.ReadAppSetting("loginMode")?.ToString() ?? "1");
//获取可取药还药的时间段
//string[] timeSpan = CommonClass.ReadAppSetting("TakeReturnTime").Split('-');
//string weeksSpan = CommonClass.ReadAppSetting("TakeReturnWeek");
public bool MultiLogin
{
get => loginMode == 2;
}
private PremissionDm? _selectedMenu;
private PremissionDm? _selectedChildMenu;
private List<PremissionDm>? _premissionDmList;
public PremissionDm? SelectedChildMenu
{
get { return _selectedChildMenu; }
set
{
SetProperty(ref _selectedChildMenu, value);
}
}
public PremissionDm? SelectedMenu
{
get { return _selectedMenu; }
set
{
//if (value != null)
//{
// if (value.PremissionName == "退出")
// {
// logger.Info($"用户【{Operator?.Nickname}】退出登录");
// Operator = null;
// Reviewer = null;
// _regionManager.RequestNavigate("MainRegion", "LoginWindow");
// }
// else
// {
// SelectedChildMenu = value.Children[0];
// }
//}
SetProperty(ref _selectedMenu, value);
}
}
#region
private DelegateCommand<ListBox> _selectionCommon;
public DelegateCommand<ListBox> SelectionCommon
{
get => _selectionCommon ?? (_selectionCommon = new DelegateCommand<ListBox>(SelectionMethod));
}
private void SelectionMethod(ListBox viewName)
{
logger.Info($"用户【{Operator?.Nickname}】进入菜单点击事件");
CheckTakeReturnTime();
PremissionDm premissionDm = viewName.SelectedItem as PremissionDm;
if ((premissionDm.PremissionName == "取药" || premissionDm.PremissionName == "还药") && !ISTakeReturn)
{
//AlertMsg alertMsg = new AlertMsg
//{
// Message = $"当前时间不可操作{premissionDm.PremissionName}",
// Type = MsgType.ERROR,
//};
//_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
SnackbarMessageQueue.Enqueue($"当前时间不可操作{premissionDm.PremissionName}");
viewName.SelectedItem = SelectedMenu;
return;
}
SelectedMenu = viewName.SelectedItem as PremissionDm;
if (SelectedMenu.PremissionName == "退出")
{
//logger.Info($"用户【{Operator?.Nickname}】退出登录");
logger.Info($"用户【{Operator?.Nickname}】退出登录;SelectionMethod{SelectedMenu.PremissionName}");
Operator = null;
Reviewer = null;
_regionManager.RequestNavigate("MainRegion", "LoginWindow");
}
else
{
SelectedChildMenu = SelectedMenu.Children[0];
}
logger.Info($"用户【{Operator?.Nickname}】结束菜单点击事件");
}
#endregion
#region
private DelegateCommand _selectionChildCommon;
public DelegateCommand SelectionChildCommon
{
get => _selectionChildCommon ?? (_selectionChildCommon = new DelegateCommand(SelectionChildMethod));
}
private void SelectionChildMethod()
{
if (!_portUtil.Operate)
{
if (SelectedChildMenu != null)
{
if (SelectedChildMenu.PremissionPath.Equals("TakeRecordWindow"))
{
//定义传参变量
NavigationParameters keys = new NavigationParameters();
//添加参数,键值对格式
keys.Add("Type", 2);
_regionManager.RequestNavigate("ContentRegion", "MachineRecordWindow", keys);
}
else if (SelectedChildMenu.PremissionPath.Equals("AddRecordWindow"))
{
//定义传参变量
NavigationParameters keys = new NavigationParameters();
//添加参数,键值对格式
keys.Add("Type", 1);
_regionManager.RequestNavigate("ContentRegion", "MachineRecordWindow", keys);
}
else if (SelectedChildMenu.PremissionPath.Equals("ReturnRecordWindow"))
{
//定义传参变量
NavigationParameters keys = new NavigationParameters();
//添加参数,键值对格式
keys.Add("Type", 3);
_regionManager.RequestNavigate("ContentRegion", "MachineRecordWindow", keys);
}
else if (SelectedChildMenu.PremissionPath.Equals("RetrunEmptyRecordWindow"))
{
//定义传参变量
NavigationParameters keys = new NavigationParameters();
//添加参数,键值对格式
keys.Add("Type", 3);
_regionManager.RequestNavigate("ContentRegion", SelectedChildMenu.PremissionPath, keys);
}
else if (SelectedChildMenu.PremissionPath.Equals("CheckRecordWindow"))
{
//定义传参变量
NavigationParameters keys = new NavigationParameters();
//添加参数,键值对格式
keys.Add("Type", 4);
_regionManager.RequestNavigate("ContentRegion", "MachineRecordWindow", keys);
}
else
{
if (SelectedChildMenu.PremissionPath.Equals("ReturnDrugWindow") || SelectedChildMenu.PremissionPath.Equals("ReturnDrugWindow2"))
{
if (!ISTakeReturn)
{
return;
}
if (ConfigurationManager.AppSettings["returnDrugMode"].ToString().Equals("1"))
{
_regionManager.RequestNavigate("ContentRegion", "ReturnDrugWindow2");
}
else
{
_regionManager.RequestNavigate("ContentRegion", "ReturnDrugWindow");
}
}
else
{
if (SelectedChildMenu.PremissionPath.Equals("OrderTakeDrugWindow") && !ISTakeReturn)
{
return;
}
else
{
_regionManager.RequestNavigate("ContentRegion", SelectedChildMenu.PremissionPath);
}
}
}
}
SetProperty(ref _selectedChildMenu, SelectedChildMenu);
}
}
#endregion
public List<PremissionDm> PremissionDmList { get { return _premissionDmList; } set { SetProperty(ref _premissionDmList, value); } }
public UserList UserList { get { return _userList; } set { SetProperty(ref _userList, value); } }
public UserList UserList2 { get { return _userList2; } set { SetProperty(ref _userList2, value); } }
public static UserList? Operator;
public static UserList? Reviewer;
IRegionManager _regionManager;
IUnityContainer _container;
private bool _is16Drawer;
public bool Is16Drawer { get => _is16Drawer; set => SetProperty(ref _is16Drawer, value); }
public bool KeepAlive => false;
private PortUtil _portUtil;
//IEventAggregator _eventAggregator;
public HomeWindowViewModel_New(IRegionManager iRegionManager, PortUtil portUtil, IDialogService dialogService, IUnityContainer container)
{
_portUtil = portUtil;
_regionManager = iRegionManager;
_dialogService = dialogService;
_container = container;
//_eventAggregator = eventAggregator;
}
public DelegateCommand<string> OpenFingerDialog
{
get => new DelegateCommand<string>((string Type) =>
{
DialogParameters dialogParameters = new DialogParameters();
dialogParameters.Add("User", Type.Equals("Operator") ? Operator : Reviewer);
DialogServiceExtensions.ShowDialogHost(_dialogService, "FingerprintDialog", dialogParameters, DoDialogResult, "RootDialog");
});
}
//退出
public DelegateCommand QuitCommand
{
get => new DelegateCommand(QuitAction);
}
private void QuitAction()
{
logger.Info($"用户【{Operator?.Nickname}】退出登录;{UserList.Nickname}");
Operator = null;
Reviewer = null;
_regionManager.RequestNavigate("MainRegion", "LoginWindow");
}
public DelegateCommand OpenRecoverCommand
{
get => new DelegateCommand(async () =>
{
try
{
_portUtil.WindowName = "HomeWindow";
_portUtil.Operate = true;
await _portUtil.OpenStorage();
_portUtil.ResetData();
}
catch (Exception ex)
{
logger.Info($"OpenRecoverCommand异常{ex.Message}");
}
});
}
public DelegateCommand<string> OpenEditPasswordDialog
{
get => new DelegateCommand<string>((string Type) =>
{
DialogParameters dialogParameters = new DialogParameters();
dialogParameters.Add("EditPass", true);
dialogParameters.Add("User", Type.Equals("Operator") ? Operator : Reviewer);
DialogServiceExtensions.ShowDialogHost(_dialogService, "EditUserDialog", dialogParameters, DoDialogResult, "RootDialog");
});
}
private void DoDialogResult(IDialogResult dialogResult)
{
// 委托 被动执行 被子窗口执行
// dialogResult 第一方面可以拿到任意参数 第二方面 可判断关闭状态
if (dialogResult.Result == ButtonResult.OK)
{
}
}
public void FindDrawerCount()
{
int count = SqlSugarHelper.Db.Queryable<ChannelStock>().Where(cs => cs.DrawerType != 3)
.Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1")).GroupBy(cs => cs.DrawerNo).Select(cs => SqlFunc.AggregateCount(cs.DrawerNo)).Count();
Is16Drawer = count == 16;
}
//这个方法用于拦截请求,continuationCallback(true)就是不拦截continuationCallback(false)拦截本次操作
public void ConfirmNavigationRequest(NavigationContext navigationContext, Action<bool> continuationCallback)
{
continuationCallback(true);
}
private ISnackbarMessageQueue _snackbarMessageQueue = new SnackbarMessageQueue(TimeSpan.FromSeconds(3));
public ISnackbarMessageQueue SnackbarMessageQueue
{
get => _snackbarMessageQueue;
set => SetProperty(ref _snackbarMessageQueue, value);
}
private SolidColorBrush _colorBrush = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#b71c1c"));
public SolidColorBrush SnackbarBackground
{
get => _colorBrush;
set => SetProperty(ref _colorBrush, value);
}
//接收导航传过来的参数
public void OnNavigatedTo(NavigationContext navigationContext)
{
CheckTakeReturnTime();
//是否可操作取药还药定时
System.Timers.Timer TakeReturnTimer = new System.Timers.Timer();
TakeReturnTimer.Interval = 1000;
TakeReturnTimer.Elapsed += (sender, e) =>
{
// 当前时间不可操作取药、还药
if (!CheckTakeReturnTime())
{
if (SelectedMenu.PremissionName == "取药" || SelectedMenu.PremissionName == "还药")
{
SnackbarMessageQueue.Enqueue($"当前时间不可操作{SelectedMenu.PremissionName}");
//SelectedMenu = ISTakeReturn ? UserList.Role.Permissions[0] : UserList.Role.Permissions[1];
//SelectedChildMenu = SelectedMenu.Children[0];
//_regionManager.RequestNavigate("ContentRegion", SelectedMenu.Children[0].PremissionPath);
//PremissionDmList = UserList.Role.Permissions;
List<PremissionDm> premissions = UserList.Role.Permissions;
SelectedMenu = ISTakeReturn ? premissions[0] : premissions[1];
SelectedChildMenu = SelectedMenu.Children[0];
System.Windows.Application.Current.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Send, new Action(() =>
{
_regionManager.RequestNavigate("ContentRegion", "SelfAddWindow");
}));
}
}
};
TakeReturnTimer.Start();
_portUtil.dateTime = DateTime.Now;
//取出user
UserList = navigationContext.Parameters.GetValue<UserList>("operator");
Operator = UserList;
logger.Info($"发药人【{Operator.Nickname}】登录");
if (navigationContext.Parameters.ContainsKey("reviewer"))
{
UserList2 = navigationContext.Parameters.GetValue<UserList>("reviewer");
Reviewer = UserList2;
logger.Info($"审核人【{Reviewer.Nickname}】登录");
}
List<PremissionDm> premissions = UserList.Role.Permissions;
//SqlSugarHelper.Db.SqlQueryable<PremissionDm>(sql)
//.ToTree(pd => pd.Children, pd => pd.ParentId, 0);
PremissionDmList = premissions;
SelectedMenu = ISTakeReturn ? premissions[0] : premissions[1];
SelectedChildMenu = SelectedMenu.Children[0];
FindDrawerCount();
int autoExit = Convert.ToInt32(ConfigurationManager.AppSettings["autoExit"] ?? "0");
if (autoExit > 0)
{
Timer timer = new Timer();
timer.Interval = 1000;
timer.Elapsed += (sender, e) =>
{
// 串口无人操作
if (!_portUtil.Operate)
{
// 30秒内无人操作鼠标键盘
if ((DateTime.Now - _portUtil.dateTime).TotalSeconds > autoExit && CheckComputerFreeState.GetLastInputTime() > autoExit)
{
logger.Info($"设备30秒内无人操作用户【{Operator?.Nickname}】自动退出登录");
Operator = null;
Reviewer = null;
Application.Current.Dispatcher.Invoke(() =>
{
_regionManager.RequestNavigate("MainRegion", "LoginWindow");
timer.Stop();
});
}
}
};
timer.Start();
}
}
/// <summary>
/// 检查是否在可取药、还药操作时间段
/// </summary>
private bool CheckTakeReturnTime()
{
ISTakeReturn = true;
//查询该时间段能否取药跟还药
DateTime dtNow = DateTime.Now;
string weekNow = DateTime.Today.DayOfWeek.ToString("d");
string[] timeSpan = CommonClass.ReadAppSetting("TakeReturnTime").Split('-');
string weeksSpan = CommonClass.ReadAppSetting("TakeReturnWeek");
if (timeSpan != null && timeSpan.Length == 2 && weeksSpan.IndexOf(weekNow) >= 0)
{
bool bStart = DateTime.TryParse(timeSpan[0], out DateTime startTime);
bool bEnd = DateTime.TryParse(timeSpan[1], out DateTime endTime);
if (bStart && bEnd)
{
if (endTime < startTime)
{
endTime = endTime.AddDays(1);
}
if (dtNow >= startTime && dtNow <= endTime)
{
ISTakeReturn = true;
}
else
{
ISTakeReturn = false;
//AlertMsg alertMsg = new AlertMsg
//{
// Message = $"当前时间不可操作{SelectedMenu.PremissionName}",
// Type = MsgType.ERROR,
//};
//_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
//return;
}
}
}
return ISTakeReturn;
}
//每次导航的时候该实列用不用重新创建true是不重新创建,false是重新创建
public bool IsNavigationTarget(NavigationContext navigationContext)
{
return true;
}
//这个方法用于拦截请求
public void OnNavigatedFrom(NavigationContext navigationContext)
{
}
}
}

View File

@ -151,6 +151,22 @@ namespace DM_Weight.ViewModels
});
}
public DelegateCommand DragTakeCheckInCommand
{
get => new DelegateCommand(() =>
{
GridReportUtil.PrintReportDrugTakeCheckIn(StartDate, EndDate,1);
});
}
public DelegateCommand DragTakeCheckIn2Command
{
get => new DelegateCommand(() =>
{
GridReportUtil.PrintReportDrugTakeCheckIn(StartDate, EndDate,2);
});
}
void ReportInitialize()
{

View File

@ -15,12 +15,14 @@ using DM_Weight.select;
using DM_Weight.util;
using DM_Weight.msg;
using Prism.Events;
using log4net.Repository.Hierarchy;
using log4net;
namespace DM_Weight.ViewModels
{
public class OrderTakeDrugWindowViewModel : BindableBase, IConfirmNavigationRequest, IRegionMemberLifetime
{
private readonly ILog logger = LogManager.GetLogger(typeof(OrderTakeDrugWindowViewModel));
private int _pageNum = 1;
public int PageNum
{
@ -72,6 +74,8 @@ namespace DM_Weight.ViewModels
public OrderTakeDrugWindowViewModel(IDialogService DialogService, IEventAggregator eventAggregator)
{
logger.Info($"用户【{HomeWindowViewModel.Operator?.Nickname}】进入OrderTakeDrugWindowViewModel构造函数");
_dialogService = DialogService;
_eventAggregator = eventAggregator;
}
@ -244,8 +248,21 @@ namespace DM_Weight.ViewModels
//接收导航传过来的参数 现在是在此处初始化了表格数据
public void OnNavigatedTo(NavigationContext navigationContext)
{
logger.Info($"用户【{HomeWindowViewModel.Operator?.Nickname}】进入OrderTakeDrugWindowViewModel.OnNavigatedTo函数");
_eventAggregator.GetEvent<PortUtilEvent>().Subscribe(DoMyPrismEvent);
Task.Factory.StartNew(() =>
{
logger.Info($"用户【{HomeWindowViewModel.Operator?.Nickname}】进入OnNavigatedTo请求数据线程");
RequestData();
logger.Info($"用户【{HomeWindowViewModel.Operator?.Nickname}】结束OnNavigatedTo请求数据线程");
});
logger.Info($"用户【{HomeWindowViewModel.Operator?.Nickname}】结束OrderTakeDrugWindowViewModel.OnNavigatedTo函数");
}
//每次导航的时候该实列用不用重新创建true是不重新创建,false是重新创建

View File

@ -176,12 +176,12 @@ namespace DM_Weight.ViewModels
List<ChannelStock> queryData = SqlSugarHelper.Db.Queryable<ChannelStock>()
.Where(cs => cs.DrugId == MachineRecord.DrugId)
.Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1"))
.WhereIF(MachineRecord.ManuNo != null,cs => cs.ManuNo == MachineRecord.ManuNo)
.WhereIF(MachineRecord.ManuNo != null, cs => cs.ManuNo == MachineRecord.ManuNo)
.OrderBy(cs => cs.DrawerNo)
.OrderBy(cs => cs.ColNo)
.ToList();
ChannelStocks = queryData;
if(ChannelStocks.Count > 0)
if (ChannelStocks.Count > 0)
{
ChannelStock = ChannelStocks[0];
}
@ -202,7 +202,8 @@ namespace DM_Weight.ViewModels
_portUtil.ColNos = new int[] { ChannelStock.ColNo };
_portUtil.DrawerNo = ChannelStock.DrawerNo;
_portUtil.Start();
} else
}
else
{
AlertMsg alertMsg = new AlertMsg
{
@ -224,8 +225,21 @@ namespace DM_Weight.ViewModels
{
get => new DelegateCommand(() =>
{
if (MachineRecord.ReturnQuantity2>0&&(MachineRecord.CanReturnQuantity - ReturnQuantity) != 0)
{
AlertMsg alertMsg = new AlertMsg
{
Message = "归还数目与实际数目不符",
Type = MsgType.ERROR,
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
IsFinishClick = false;
return;
}
IsFinishClick = true;
string InvoiceId = "RETURN_" + CurrentTimeMillis();
var f = SqlSugarHelper.Db.UseTran(() =>
{

View File

@ -12,12 +12,13 @@ using DM_Weight.Models;
using DM_Weight.select;
using DM_Weight.util;
using SqlSugar;
using log4net;
namespace DM_Weight.ViewModels
{
public class ReturnDrugWindowViewModel : BindableBase, IConfirmNavigationRequest, IRegionMemberLifetime
{
private readonly ILog logger = LogManager.GetLogger(typeof(ReturnDrugWindowViewModel));
IDialogService _dialogService;
private DelegateCommand _rowSelected;
@ -26,6 +27,7 @@ namespace DM_Weight.ViewModels
public ReturnDrugWindowViewModel(IDialogService DialogService)
{
logger.Info($"用户【{HomeWindowViewModel.Operator?.Nickname}】进入ReturnDrugWindowViewModel构造函数");
_dialogService = DialogService;
}
//刷新
@ -191,7 +193,10 @@ namespace DM_Weight.ViewModels
.WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("DrugName"), (mr) => mr.DrugInfo.DrugName.Contains(SearchValue))
.WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("PyCode"), (mr) => mr.DrugInfo.PyCode.Contains(SearchValue))
.WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("DrugBarcode"), (mr) => mr.DrugInfo.DrugBarcode.Contains(SearchValue))
.OrderBy(mr => mr.OperationTime,OrderByType.Desc)
.OrderBy(mr => mr.Operator != HomeWindowViewModel.Operator.Id)
.OrderBy(mr => mr.Operator)
.OrderBy(mr =>mr.OperationTime,OrderByType.Desc)
.ToList();
MachineRecords = queryData;
}
@ -199,7 +204,14 @@ namespace DM_Weight.ViewModels
//接收导航传过来的参数 现在是在此处初始化了表格数据
public void OnNavigatedTo(NavigationContext navigationContext)
{
logger.Info($"用户【{HomeWindowViewModel.Operator?.Nickname}】进入OnNavigatedTo请求数据线程");
Task.Factory.StartNew(() =>
{
logger.Info($"用户【{HomeWindowViewModel.Operator?.Nickname}】进入OnNavigatedTo请求数据线程");
RequestData();
logger.Info($"用户【{HomeWindowViewModel.Operator?.Nickname}】结束OnNavigatedTo请求数据线程");
});
logger.Info($"用户【{HomeWindowViewModel.Operator?.Nickname}】结束OnNavigatedTo请求数据线程");
}
//每次导航的时候该实列用不用重新创建true是不重新创建,false是重新创建

View File

@ -184,6 +184,7 @@ namespace DM_Weight.ViewModels
.Where(mr => mr.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1"))
.Where(mr => mr.Type == 2)
.Where(mr => mr.Status != 2)
.Where(mr=>mr.ReturnQuantity2<=0)
.OrderBy(mr => mr.OperationTime,OrderByType.Desc)
.OrderBy(mr => mr.Id)
.ToList();
@ -194,6 +195,17 @@ namespace DM_Weight.ViewModels
{
get => new DelegateCommand(() =>
{
int iCount= MachineRecords.FindAll(it => it.IsSelected).ToList().Count;
if(iCount > 1||iCount<=0)
{
AlertMsg alertMsg = new AlertMsg
{
Message = "请选择且仅选择一条要归还数据记录",
Type = MsgType.ERROR,
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
return;
}
if (ChannelStock != null)
{
if (Status == 0)
@ -233,11 +245,14 @@ namespace DM_Weight.ViewModels
{
if (MachineRecords != null)
{
bool bSelect= MachineRecordStock.IsSelected;
MachineRecords.ForEach(mr => mr.IsSelected = false);
MachineRecords = MachineRecords.Select(x =>
{
if (x.Id == MachineRecordStock.Id)
{
x.IsSelected = !x.IsSelected;
x.IsSelected = !bSelect;
}
return x;
}).ToList();
@ -256,8 +271,8 @@ namespace DM_Weight.ViewModels
{
IsFinishClick = true;
List<MachineRecord> records = MachineRecords.FindAll(it => it.IsSelected).ToList();
if (records.Count > 0 && records.Sum(it => it.Quantity - it.ReturnQuantity1) == ReturnQuantity)
{
//if (records.Count > 0 && records.Sum(it => it.Quantity - it.ReturnQuantity1) == ReturnQuantity)
//{
string InvoiceId = "RETURN_" + CurrentTimeMillis();
var f = SqlSugarHelper.Db.UseTran(() =>
{
@ -282,9 +297,9 @@ namespace DM_Weight.ViewModels
// 更新数据 取药记录 设置还药数量、状态
SqlSugarHelper.Db.Updateable(new MachineRecord()
{
ReturnQuantity2 = _MachineRecord.Quantity - _MachineRecord.ReturnQuantity1,
ReturnQuantity2 =ReturnQuantity, // _MachineRecord.Quantity - _MachineRecord.ReturnQuantity1,
Id = _MachineRecord.Id,
Status = 2,
Status = (_MachineRecord.Quantity - ReturnQuantity) == 0 ? 2 : 1,// 2,
}).UpdateColumns(it => new { it.ReturnQuantity2, it.Status }).ExecuteCommand();
// 保存数据 还药空瓶记录
@ -336,17 +351,18 @@ namespace DM_Weight.ViewModels
}
Status = 0;
IsFinishClick = false;
RequestClose?.Invoke(new DialogResult(ButtonResult.OK));
} else
{
AlertMsg alertMsg = new AlertMsg
{
Message = "归还数目与实际数目不符",
Type = MsgType.ERROR,
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
IsFinishClick = false;
}
//RequestClose?.Invoke(new DialogResult(ButtonResult.OK));
//}
//else
//{
// AlertMsg alertMsg = new AlertMsg
// {
// Message = "归还数目与实际数目不符",
// Type = MsgType.ERROR,
// };
// _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
// IsFinishClick = false;
//}
}, () => !IsFinishClick && ReturnQuantity > 0).ObservesProperty(() => IsFinishClick).ObservesProperty(() => ReturnQuantity);
}
@ -365,7 +381,28 @@ namespace DM_Weight.ViewModels
Status = 0;
});
}
/// <summary>
/// 继续归还
/// </summary>
public DelegateCommand ContinueCommand
{
get => new DelegateCommand(() =>
{
});
}
/// <summary>
/// 退出
/// </summary>
public DelegateCommand QuitCommand
{
get => new DelegateCommand(() =>
{
Status = 0;
// 关闭当前窗口
RequestClose?.Invoke(new DialogResult(ButtonResult.Cancel));
});
}
public DelegateCommand BtnCloseCommand
{
get => new DelegateCommand(() =>

View File

@ -100,7 +100,7 @@ namespace DM_Weight.ViewModels
//还空瓶只能选择一条进行归还
AlertMsg alertMsg = new AlertMsg
{
Message = "请选择一条可归还数量不为0的数据进行归还",
Message = "请选择一条可归还数量不为0的数据进行归还",
Type = MsgType.ERROR,
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);

View File

@ -111,7 +111,7 @@ namespace DM_Weight.ViewModels
else
{
if (p.Id != 6)
if (p != null && p.Children != null && it != null && it.Children != null && p.Id != 6)
{
it.Children.ToList().ForEach(it3 =>
{
@ -127,7 +127,7 @@ namespace DM_Weight.ViewModels
AllPremissions.RemoveAt(index);
}
}
else
else if(index>=0)
{
AllPremissions.RemoveAt(index);
}
@ -350,13 +350,13 @@ namespace DM_Weight.ViewModels
defaultAll.Add(sysset);
#endregion
#region 退
PremissionDm logout = new PremissionDm
{
Id = 6,
PremissionName = "退出",
PremissionImage = "/Images/TbExit.png",
};
defaultAll.Add(logout);
//PremissionDm logout = new PremissionDm
//{
// Id = 6,
// PremissionName = "退出",
// PremissionImage = "/Images/TbExit.png",
//};
//defaultAll.Add(logout);
#endregion
}

View File

@ -14,11 +14,14 @@ using DM_Weight.select;
using DM_Weight.util;
using Prism.Events;
using DM_Weight.msg;
using log4net.Repository.Hierarchy;
using log4net;
namespace DM_Weight.ViewModels
{
public class SelfAddWindowViewModel : BindableBase, IConfirmNavigationRequest, IRegionMemberLifetime
{
private readonly ILog logger = LogManager.GetLogger(typeof(SelfAddWindowViewModel));
IDialogService _dialogService;
IEventAggregator _eventAggregator;
@ -48,6 +51,7 @@ namespace DM_Weight.ViewModels
public SelfAddWindowViewModel(IDialogService DialogService,IEventAggregator eventAggregator)
{
logger.Info($"用户【{HomeWindowViewModel.Operator?.Nickname}】进入SelfAddWindowViewModel构造函数");
_dialogService = DialogService;
_eventAggregator = eventAggregator;
}
@ -183,7 +187,14 @@ namespace DM_Weight.ViewModels
//接收导航传过来的参数 现在是在此处初始化了表格数据
public void OnNavigatedTo(NavigationContext navigationContext)
{
logger.Info($"用户【{HomeWindowViewModel.Operator?.Nickname}】进入OnNavigatedTo请求数据线程");
Task.Factory.StartNew(() =>
{
logger.Info($"用户【{HomeWindowViewModel.Operator?.Nickname}】进入OnNavigatedTo请求数据线程");
RequestChannelData();
logger.Info($"用户【{HomeWindowViewModel.Operator?.Nickname}】结束OnNavigatedTo请求数据线程");
});
logger.Info($"用户【{HomeWindowViewModel.Operator?.Nickname}】结束OnNavigatedTo请求数据线程");
}
//每次导航的时候该实列用不用重新创建true是不重新创建,false是重新创建

View File

@ -16,11 +16,13 @@ using DM_Weight.select;
using DM_Weight.util;
using System.ComponentModel;
using System.Windows.Data;
using log4net;
namespace DM_Weight.ViewModels
{
public class StockListWindowViewModel : BindableBase, IConfirmNavigationRequest, IRegionMemberLifetime
{
private readonly ILog logger = LogManager.GetLogger(typeof(StockListWindowViewModel));
public static List<OrderTakeSelect> StaticSelects = new()
{
@ -89,6 +91,7 @@ namespace DM_Weight.ViewModels
IDialogService _dialogService;
public StockListWindowViewModel(IDialogService dialogService)
{
logger.Info($"用户【{HomeWindowViewModel.Operator?.Nickname}】进入StockListWindowViewModel构造函数");
_dialogService = dialogService;
}
private ChannelStock? _selectedChannel;
@ -171,8 +174,8 @@ namespace DM_Weight.ViewModels
.OrderBy(cs => cs.ColNo)
.ToList();
ICollectionView vw = CollectionViewSource.GetDefaultView(q);
vw.GroupDescriptions.Add(new PropertyGroupDescription("DrugInfo"));
//ICollectionView vw = CollectionViewSource.GetDefaultView(q);
//vw.GroupDescriptions.Add(new PropertyGroupDescription("DrugInfo"));
ChannelStocks = q;
}
@ -180,7 +183,14 @@ namespace DM_Weight.ViewModels
//接收导航传过来的参数 现在是在此处初始化了表格数据
public void OnNavigatedTo(NavigationContext navigationContext)
{
logger.Info($"用户【{HomeWindowViewModel.Operator?.Nickname}】进入OnNavigatedTo请求数据线程");
Task.Factory.StartNew(() =>
{
logger.Info($"用户【{HomeWindowViewModel.Operator?.Nickname}】进入OnNavigatedTo请求数据线程");
RequestData();
logger.Info($"用户【{HomeWindowViewModel.Operator?.Nickname}】结束OnNavigatedTo请求数据线程");
});
logger.Info($"用户【{HomeWindowViewModel.Operator?.Nickname}】结束OnNavigatedTo请求数据线程");
}

View File

@ -143,7 +143,7 @@
<GridViewColumn Header="选择" Width="100">
<GridViewColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding IsSelected}" />
<RadioButton IsChecked="{Binding IsSelected}" GroupName="selectionGroup" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
@ -196,6 +196,24 @@
Content="归还"
Command="{Binding OpenDrawer}">
</Button>
<!--<Button
Margin="2"
Style="{StaticResource MaterialDesignRaisedAccentButton}"
Visibility="{Binding Status,Converter={StaticResource StatusConverter}, ConverterParameter=opearBtnVisible}"
materialDesign:ButtonProgressAssist.IsIndicatorVisible="{Binding Status, Converter={StaticResource StatusConverter}, ConverterParameter=opearBtnLoading}"
materialDesign:ButtonProgressAssist.IsIndeterminate="{Binding Status, Converter={StaticResource StatusConverter}, ConverterParameter=opearBtnLoading}"
Content="继续归还"
Command="{Binding OpenDrawer}">
</Button>-->
<Button
Margin="2"
Style="{StaticResource MaterialDesignRaisedAccentButton}"
Visibility="{Binding Status,Converter={StaticResource StatusConverter}, ConverterParameter=QuitBtnVisible}"
materialDesign:ButtonProgressAssist.IsIndicatorVisible="{Binding Status, Converter={StaticResource StatusConverter}, ConverterParameter=opearBtnLoading}"
materialDesign:ButtonProgressAssist.IsIndeterminate="{Binding Status, Converter={StaticResource StatusConverter}, ConverterParameter=opearBtnLoading}"
Content="退出"
Command="{Binding QuitCommand}">
</Button>
<Button
Margin="2"
Visibility="{Binding Status, Converter={StaticResource StatusConverter}, ConverterParameter=CompleteBtn}"

View File

@ -0,0 +1,133 @@
<UserControl x:Class="DM_Weight.Views.DrugTakeCheckInWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:DM_Weight.Views"
xmlns:prism="http://prismlibrary.com/"
xmlns:pagination="clr-namespace:DM_Weight.Components.pagination"
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<UserControl.Resources>
<Style x:Key="st" TargetType="GridViewColumnHeader">
<Style.Setters>
<Setter Property="Height">
<Setter.Value>55</Setter.Value>
</Setter>
<Setter Property="Background">
<Setter.Value>#31ccec</Setter.Value>
</Setter>
<Setter Property="Foreground">
<Setter.Value>white</Setter.Value>
</Setter>
</Style.Setters>
</Style>
</UserControl.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid Margin="0 6 0 6" Grid.Row="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1.5*" />
<ColumnDefinition Width="1.5*" />
<ColumnDefinition Width="2*" />
<ColumnDefinition Width="5*"/>
</Grid.ColumnDefinitions>
<DatePicker
Grid.Column="0"
SelectedDate="{Binding StartDate, TargetNullValue=''}"
Margin="6 0 0 0"
materialDesign:HintAssist.Hint="开始时间"
Style="{StaticResource MaterialDesignOutlinedDatePicker}"
/>
<DatePicker
Grid.Column="1"
SelectedDate="{Binding EndDate}"
Margin="6 0 0 0"
materialDesign:HintAssist.Hint="结束时间"
Style="{StaticResource MaterialDesignOutlinedDatePicker}"
/>
<StackPanel Grid.Column="3" Orientation="Horizontal" HorizontalAlignment="Right">
<Button
Margin="0 0 3 0"
VerticalAlignment="Center"
Style="{StaticResource MaterialDesignOutlinedLightButton}"
ToolTip="导出" Command="{Binding DownloadAccountBook}">
<StackPanel Orientation="Horizontal">
<materialDesign:PackIcon Kind="download" />
<TextBlock Text="导出领取登记表" />
</StackPanel>
</Button>
<Button
Margin="0 0 6 0"
VerticalAlignment="Center"
Style="{StaticResource MaterialDesignOutlinedLightButton}"
ToolTip="刷新" Command="{Binding Query}">
<materialDesign:PackIcon
Kind="Refresh" />
</Button>
</StackPanel>
</Grid>
<ListView Grid.Row="1" ItemsSource="{Binding MachineRecords}"
materialDesign:ListViewAssist.HeaderRowBackground="#31ccec"
materialDesign:DataGridAssist.ColumnHeaderPadding="10"
materialDesign:ListViewAssist.ListViewItemPadding="13">
<ListView.Resources>
<Style TargetType="{x:Type GridViewColumnHeader}" BasedOn="{StaticResource {x:Type GridViewColumnHeader}}">
<Setter Property="Foreground" Value="White" />
</Style>
</ListView.Resources>
<ListView.View>
<GridView ColumnHeaderContainerStyle="{StaticResource st}">
<GridViewColumn Width="100"
Header="日期"
DisplayMemberBinding="{Binding OperationTime, StringFormat='yyyy-MM-dd HH:mm:ss'}" />
<GridViewColumn Width="100"
Header="领取时间"
DisplayMemberBinding="{Binding OperationTime, StringFormat='yyyy-MM-dd HH:mm:ss'}" />
<GridViewColumn Width="180"
DisplayMemberBinding="{Binding DrugInfo.DrugName}"
Header="药品名称"/>
<GridViewColumn Width="150"
DisplayMemberBinding="{Binding EffDate, StringFormat=yyyy-MM-dd}"
Header="效期"/>
<GridViewColumn Width="100"
DisplayMemberBinding="{Binding DrugInfo.DrugSpec}"
Header="领取人"/>
<GridViewColumn Width="100"
DisplayMemberBinding="{Binding Quantity}"
Header="发药人"/>
<GridViewColumn Width="180"
DisplayMemberBinding="{Binding ManuNo}"
Header="还药时间"/>
<GridViewColumn Width="180"
DisplayMemberBinding="{Binding ManuNo}"
Header="还药数量"/>
<GridViewColumn Width="100"
DisplayMemberBinding="{Binding DrugInfo.DrugSpec}"
Header="还药人"/>
<GridViewColumn Width="100"
DisplayMemberBinding="{Binding Quantity}"
Header="收取人"/>
</GridView>
</ListView.View>
</ListView>
<pagination:Pagination Grid.Row="2"
CurrentPage="{Binding PageNum}"
PageSize="{Binding PageSize}"
TotalPages="{Binding TotalCount}"
InfoTextIsEnabel="True"
/>
</Grid>
</UserControl>

View File

@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace DM_Weight.Views
{
/// <summary>
/// DrugTakeCheckInWindow.xaml 的交互逻辑
/// </summary>
public partial class DrugTakeCheckInWindow : UserControl
{
public DrugTakeCheckInWindow()
{
InitializeComponent();
}
}
}

View File

@ -97,6 +97,11 @@
CommandParameter="Operator"
Foreground="{DynamicResource MaterialDesignLightForeground}"
Header="修改密码" />
<MenuItem
Command="{Binding QuitCommand}"
CommandParameter="Operator"
Foreground="{DynamicResource MaterialDesignLightForeground}"
Header="退出登录" />
</MenuItem>
</Menu>
<Menu Grid.Column="1" Visibility="{Binding MultiLogin, Converter={StaticResource BooleanToVisibilityConverter}}">
@ -120,9 +125,11 @@
<Button Content="储物箱" Command="{Binding OpenRecoverCommand}" Visibility="{Binding Is16Drawer, Converter={StaticResource BooleanToVisibilityConverter}}" Style="{StaticResource MaterialDesignFlatSecondaryLightButton}" />
</StackPanel>
</Grid>
</Grid>
<materialDesign:Snackbar HorizontalAlignment="Center" VerticalAlignment="Center"
Background="{Binding SnackbarBackground}"
MessageQueue="{Binding SnackbarMessageQueue}"/>
</Grid>
</UserControl>

View File

@ -0,0 +1,139 @@
<!--布局界面-->
<UserControl x:Class="DM_Weight.Views.HomeWindow_New"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
TextElement.Foreground="{DynamicResource MaterialDesignBody}"
TextElement.FontWeight="Regular"
TextElement.FontSize="13"
TextOptions.TextFormattingMode="Ideal"
TextOptions.TextRenderingMode="Auto"
xmlns:prism="http://prismlibrary.com/"
FontFamily="{DynamicResource MaterialDesignFont}"
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
mc:Ignorable="d" Cursor="Hand">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
</Grid.RowDefinitions>
<Grid Background="#00bcd4">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Image Grid.Column="0" Margin="30 0 30 0" HorizontalAlignment="Left" Width="Auto" Height="26" Source="/Images/logo.png" />
<ListBox Name="ListBoxName" Grid.Column="1" ItemsSource="{Binding PremissionDmList}" HorizontalAlignment="Right" Cursor="Hand">
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<i:InvokeCommandAction Command="{Binding SelectionCommon}" CommandParameter="{Binding ElementName=ListBoxName}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal" IsItemsHost="True"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Width="64" Height="64" >
<Image Width="48" Height="48" Source="{ Binding PremissionImage }" />
<TextBlock Foreground="{DynamicResource MaterialDesignPaper}" HorizontalAlignment="Center" FontSize="15" Text="{Binding PremissionName}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
<Grid Grid.Row="1" Margin="8,6,8,6">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<materialDesign:Card Grid.Row="0">
<ListBox x:Name="ListBoxChild" ItemsSource="{Binding SelectedMenu.Children}" SelectedItem="{ Binding SelectedChildMenu }" HorizontalAlignment="left" Cursor="Hand">
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<i:InvokeCommandAction Command="{Binding SelectionChildCommon}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal" IsItemsHost="True"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<Border Padding="0,0,5,0" BorderThickness="0 0 1 0" BorderBrush="#31ccec">
<TextBlock FontWeight="Black" FontSize="14" FontFamily="楷书" Padding="4" Text="{Binding PremissionName}" />
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</materialDesign:Card>
<materialDesign:Card Grid.Row="1" Margin="0 8 0 8">
<ScrollViewer HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Disabled" Focusable="True">
<ContentControl prism:RegionManager.RegionName="ContentRegion" />
</ScrollViewer>
</materialDesign:Card>
</Grid>
<Grid Background="#2196f3" Grid.Row="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="70*"/>
<ColumnDefinition Width="70*"/>
<ColumnDefinition Width="270*"/>
</Grid.ColumnDefinitions>
<Menu Grid.Column="0">
<MenuItem
Foreground="White"
Header="{Binding UserList.Nickname}">
<MenuItem
Command="{Binding OpenFingerDialog}"
CommandParameter="Operator"
Foreground="{DynamicResource MaterialDesignLightForeground}"
Header="录制指纹" />
<MenuItem
Command="{Binding OpenEditPasswordDialog}"
CommandParameter="Operator"
Foreground="{DynamicResource MaterialDesignLightForeground}"
Header="修改密码" />
<MenuItem
Command="{Binding QuitCommand}"
CommandParameter="Operator"
Foreground="{DynamicResource MaterialDesignLightForeground}"
Header="退出登录" />
</MenuItem>
</Menu>
<Menu Grid.Column="1" Visibility="{Binding MultiLogin, Converter={StaticResource BooleanToVisibilityConverter}}">
<MenuItem
Foreground="White"
Header="{Binding UserList2.Nickname}">
<MenuItem
Command="{Binding OpenFingerDialog}"
CommandParameter="Reviewer"
Foreground="{DynamicResource MaterialDesignLightForeground}"
Header="录制指纹" />
<MenuItem
Command="{Binding OpenEditPasswordDialog}"
CommandParameter="Reviewer"
Foreground="{DynamicResource MaterialDesignLightForeground}"
Header="修改密码" />
</MenuItem>
</Menu>
<Grid Grid.Column="2">
<StackPanel Margin="6" Orientation="Horizontal" HorizontalAlignment="Right">
<Button Content="储物箱" Command="{Binding OpenRecoverCommand}" Visibility="{Binding Is16Drawer, Converter={StaticResource BooleanToVisibilityConverter}}" Style="{StaticResource MaterialDesignFlatSecondaryLightButton}" />
</StackPanel>
</Grid>
</Grid>
<materialDesign:Snackbar HorizontalAlignment="Center" VerticalAlignment="Center"
Background="{Binding SnackbarBackground}"
MessageQueue="{Binding SnackbarMessageQueue}"/>
</Grid>
</UserControl>

View File

@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace DM_Weight.Views
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class HomeWindow_New : UserControl
{
public HomeWindow_New()
{
InitializeComponent();
}
}
}

View File

@ -9,6 +9,7 @@
xmlns:local="clr-namespace:DM_Weight.Views"
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
xmlns:prism="http://prismlibrary.com/"
xmlns:convert="clr-namespace:DM_Weight.Converter"
mc:Ignorable="d">
<UserControl.Resources>
<Style x:Key="st" TargetType="GridViewColumnHeader">
@ -24,6 +25,7 @@
</Setter>
</Style.Setters>
</Style>
<convert:TypeConverter x:Key="TypeConverter" />
</UserControl.Resources>
<Grid>
<Grid.RowDefinitions>
@ -52,7 +54,14 @@
materialDesign:HintAssist.Hint="结束时间"
Style="{StaticResource MaterialDesignOutlinedDatePicker}"
/>
<!--<Viewbox Grid.Column="1" HorizontalAlignment="Left" Width="150">
--><!--<DatePicker CalendarStyle="{StaticResource styleCalendar}"/>--><!--
<DatePicker
Grid.Column="0"
SelectedDate="{Binding StartDate, TargetNullValue=''}"
Margin="6 0 0 0"
materialDesign:HintAssist.Hint="开始时间"/>
</Viewbox>-->
<StackPanel Grid.Column="3" Orientation="Horizontal" HorizontalAlignment="Right">
<Button
Margin="0 0 3 0"
@ -74,7 +83,27 @@
<TextBlock Text="导出记录" />
</StackPanel>
</Button>
<Button Visibility="{Binding Type, Converter={StaticResource TypeConverter}, ConverterParameter=DragTakeCheckIn}"
Margin="0 0 3 0"
VerticalAlignment="Center"
Style="{StaticResource MaterialDesignOutlinedLightButton}"
ToolTip="导出" Command="{Binding DragTakeCheckInCommand}">
<StackPanel Orientation="Horizontal">
<materialDesign:PackIcon Kind="download" />
<TextBlock Text="精一领取登记" />
</StackPanel>
</Button>
<Button Visibility="{Binding Type, Converter={StaticResource TypeConverter}, ConverterParameter=DragTakeCheckIn}"
Margin="0 0 3 0"
VerticalAlignment="Center"
Style="{StaticResource MaterialDesignOutlinedLightButton}"
ToolTip="导出" Command="{Binding DragTakeCheckIn2Command}">
<StackPanel Orientation="Horizontal">
<materialDesign:PackIcon Kind="download" />
<TextBlock Text="精二领取登记" />
</StackPanel>
</Button>
<Button
Margin="0 0 6 0"
VerticalAlignment="Center"

View File

@ -12,6 +12,11 @@
mc:Ignorable="d">
<Grid>
<Grid.Resources>
<CollectionViewSource x:Key="GroupedDataList" Source="{Binding ChannelStocks}">
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="DrugInfo" />
</CollectionViewSource.GroupDescriptions>
</CollectionViewSource>
<convert:GroupSumConverter x:Key="GroupSumConverter" />
</Grid.Resources>
<Grid.RowDefinitions>
@ -67,7 +72,7 @@
<DataGrid
Grid.Row="1"
materialDesign:DataGridAssist.ColumnHeaderPadding="15"
ItemsSource="{Binding ChannelStocks}"
ItemsSource="{Binding Source={StaticResource GroupedDataList}}"
SelectedItem="SelectedChannel"
materialDesign:DataGridAssist.EnableEditBoxAssist="False"
IsSynchronizedWithCurrentItem="True"

15
DM_Weight/select/Week.cs Normal file
View File

@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DM_Weight.select
{
public class Week
{
public string? Code { get; set; }
public string? Name { get; set; }
public bool IsSelected { get; set; }
}
}