You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
AUCMA_SCADA/Aucma.Core.PrintTo/ViewModels/SpecialPrintViewModel.cs

116 lines
4.0 KiB
C#

using Aucma.Core.PrintTo.Common;
using Aucma.Core.PrintTo.Models;
using Aucma.Core.PrintTo.Views;
using Castle.Core.Internal;
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using CommunityToolkit.Mvvm.Messaging;
using FastReport;
using log4net;
using MaterialDesignThemes.Wpf;
using System.Threading.Tasks;
using System.Windows;
namespace Aucma.Core.PrintTo.ViewModels
{
public partial class SpecialPrintViewModel : ObservableObject
{
private static readonly log4net.ILog log = LogManager.GetLogger(typeof(IndexPageViewModel));
public SpecialPrintViewModel(){ PrintNum = 0; }
#region 打印
/// <summary>
/// 打印
/// </summary>
/// <returns></returns>
[RelayCommand]
public Task Print()
{
string barCode = BarCode;
if (string.IsNullOrEmpty(barCode))
{
MessageBox.Show("放行码不能为空!", "系统提醒", MessageBoxButton.OK, MessageBoxImage.Warning);
return Task.CompletedTask;
}
if (PrintNum<=0){
MessageBox.Show("请输入打印数量!", "系统提醒", MessageBoxButton.OK, MessageBoxImage.Warning);
return Task.CompletedTask;
}
//调用打印机
SpecialPrintToView print =new SpecialPrintToView(barCode, PrintNum);
print.ShowDialog();
return Task.CompletedTask;
}
#region 打印机
private static void PrintCode(string printer, string barCode)
{
//对接打印机
Report barReport = new Report();
barReport.Load(System.Environment.CurrentDirectory + @"\Report\MaterialBar.frx");//打印报表位置
// 设置打印机和打印选项
barReport.PrintSettings.ShowDialog = false; // 是否打开打印机选择框
barReport.PrintSettings.Printer = printer; // 设置打印机名称
barReport.PrintSettings.Copies = 1; // 设置打印份数
//barReport.PrintSettings.PageRange = "1-3"; // 设置打印页范围
barReport.SetParameterValue("BoxBarData.Order_No", "");//订单码
barReport.SetParameterValue("BoxBarData.Order_Material_Name", "");//物料名称
barReport.SetParameterValue("BoxBarData.Bar_Code", barCode);//二维码
//barReport.Prepare();
//string BarPath = System.Environment.CurrentDirectory + @"\pdf\" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".pdf";
//barReport.Export(new PDFExport(), BarPath);
barReport.Print();
}
#endregion
#endregion
#region 打印数量
private int printNum;
public int PrintNum
{
get { return printNum; }
set
{
printNum = value;
SetProperty(ref printNum, value);
}
}
#endregion
#region 打印条码
private string barCode;
public string BarCode
{
get { return barCode; }
set
{
barCode = value;
SetProperty(ref barCode, value);
}
}
#endregion
#region 关闭
[RelayCommand]
public void Close(object parameter)
{
var window = parameter as Window;
if (window == null) return;
// $"还有【{BarcodesUnprinted.Count}】个条码未打印。确定要退出打印?"
if (MessageBox.Show("确定要退出打印吗?", "系统提醒", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No) == MessageBoxResult.Yes)
{
//if (printState == PrintState.Printing) MessageBox.Show("请暂停打印后关闭打印界面吗?", "系统提醒");
//printState = PrintState.Stopped;
window.Close();
}
}
#endregion
}
}