23 changed files with 2357 additions and 20 deletions
@ -0,0 +1,36 @@ |
|||
using BBWY.Client.Models; |
|||
using BBWY.Common.Http; |
|||
using BBWY.Common.Models; |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Net.Http; |
|||
using System.Text; |
|||
|
|||
namespace BBWY.Client.APIServices.QiKu |
|||
{ |
|||
public class ProcessService : BaseApiService, IDenpendency |
|||
{ |
|||
public ProcessService(RestApiService restApiService, GlobalContext globalContext) : base(restApiService, globalContext) |
|||
{ |
|||
} |
|||
|
|||
public ApiResponse<GetProcessTypeResponse> GetProcessTypeList() |
|||
{ |
|||
return SendRequest<GetProcessTypeResponse>(globalContext.QKApiHost, "api/Process/GetProcessTypeList", |
|||
null |
|||
, null, HttpMethod.Get); |
|||
} |
|||
|
|||
|
|||
public ApiResponse<DiscountFactoryResponse> GetDiscountFactory(string ProcessTypeName, int TaskCount) |
|||
{ |
|||
return SendRequest<DiscountFactoryResponse>(globalContext.QKApiHost, "api/Process/GetDiscountFactory", |
|||
new |
|||
{ |
|||
ProcessTypeName, |
|||
TaskCount |
|||
} |
|||
, null, HttpMethod.Post); |
|||
} |
|||
} |
|||
} |
@ -0,0 +1,115 @@ |
|||
using BBWY.Client.Models.APIModel.Request; |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Text; |
|||
|
|||
namespace BBWY.Client.Models |
|||
{ |
|||
public class SetPackDetailRequest |
|||
{ |
|||
/// <summary>
|
|||
/// 任务Id
|
|||
/// </summary>
|
|||
public long TaskId { get; set; } |
|||
|
|||
#region 工序收费
|
|||
/// <summary>
|
|||
/// 套餐id
|
|||
/// </summary>
|
|||
public long ProcessComboId { get; set; } |
|||
|
|||
/// <summary>
|
|||
/// 套餐任务量
|
|||
/// </summary>
|
|||
public long ProcessComboCount { get; set; } |
|||
|
|||
/// <summary>
|
|||
/// 折扣系数
|
|||
/// </summary>
|
|||
public decimal DiscountFactory { get; set; } |
|||
/// <summary>
|
|||
/// 打包原价
|
|||
/// </summary>
|
|||
public decimal PackPrice { get; set; } |
|||
/// <summary>
|
|||
/// 打包折扣价
|
|||
/// </summary>
|
|||
public decimal PackDiscountPrice { get; set; } |
|||
/// <summary>
|
|||
/// 定向单价
|
|||
/// </summary>
|
|||
public decimal? DirectionalSingleFees { get; set; } |
|||
/// <summary>
|
|||
/// 计费模式
|
|||
/// </summary>
|
|||
public FeesMode FeesMode { get; set; } |
|||
#endregion
|
|||
|
|||
|
|||
/// <summary>
|
|||
/// 打包人员列表
|
|||
/// </summary>
|
|||
public List<PackUserModelRequest> PackUserList { get; set; } |
|||
|
|||
/// <summary>
|
|||
/// 耗材列表
|
|||
/// </summary>
|
|||
public List<ConsumableRequest> ConsumableList { get; set; } |
|||
|
|||
/// <summary>
|
|||
/// 耗材费用(总)
|
|||
/// </summary>
|
|||
public decimal ConsumableFees { get; set; } |
|||
|
|||
/// <summary>
|
|||
/// 任务总费用
|
|||
/// </summary>
|
|||
public decimal AllFees { get; set; } |
|||
public string ProcessTypeName { get; set; } |
|||
} |
|||
public class ConsumableRequest |
|||
{ |
|||
/// <summary>
|
|||
/// 耗材id
|
|||
/// </summary>
|
|||
public long ConsumableId { get; set; } |
|||
/// <summary>
|
|||
/// 任务量
|
|||
/// </summary>
|
|||
public int TaskCount { get; set; } |
|||
/// <summary>
|
|||
/// 耗材价格
|
|||
/// </summary>
|
|||
public decimal ConsumablePrice { get; set; } |
|||
|
|||
/// <summary>
|
|||
/// 耗材类型
|
|||
/// </summary>
|
|||
public string ConsumableTypeName { get; set; } |
|||
} |
|||
public class PackUserModelRequest |
|||
{ |
|||
/// <summary>
|
|||
/// 打包人
|
|||
/// </summary>
|
|||
public string UserId { get; set; } |
|||
|
|||
/// <summary>
|
|||
/// 打包任务量
|
|||
/// </summary>
|
|||
public int TaskCount { get; set; } |
|||
} |
|||
|
|||
public class TaskConsumableRequest |
|||
{ |
|||
|
|||
/// <summary>
|
|||
/// 耗材id
|
|||
/// </summary>
|
|||
public long ConsumableId { get; set; } |
|||
/// <summary>
|
|||
/// 耗材任务量
|
|||
/// </summary>
|
|||
public int TaskCount { get; set; } |
|||
} |
|||
} |
@ -0,0 +1,13 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Text; |
|||
|
|||
namespace BBWY.Client.Models.APIModel.Response.PackTask |
|||
{ |
|||
public class GetConsumableTypeResponse:NotifyObject |
|||
{ |
|||
public string ConsumableTypeName { get; set; } |
|||
|
|||
public long ConsumableTypeId { get; set; } |
|||
} |
|||
} |
@ -0,0 +1,42 @@ |
|||
using BBWY.Client.Models.APIModel.Request; |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Text; |
|||
|
|||
namespace BBWY.Client.Models |
|||
{ |
|||
public class GetPackDetailResponse |
|||
{ |
|||
public string ProcessTypeName { get; set; } |
|||
|
|||
public string ProcessComboName { get; set; } |
|||
|
|||
public long ProcessComboId { get; set; } |
|||
|
|||
public int ProcessTaskCount { get; set; } |
|||
|
|||
public decimal? DirectionalSingleFees { get; set; } |
|||
|
|||
public List<PackUserResponse> PackUserList { get; set; } |
|||
|
|||
public List<TaskConsumableResponse> ConsumableList { get; set; } |
|||
|
|||
public decimal? ConsumableFees { get; set; } |
|||
public FeesMode? FeesMode { get; set; } |
|||
public decimal? DiscountFactor { get; set; } |
|||
public string SuggestPackUserName { get; set; } |
|||
} |
|||
|
|||
public class PackUserResponse : PackUserModelRequest |
|||
{ |
|||
|
|||
} |
|||
|
|||
|
|||
|
|||
public class TaskConsumableResponse : ConsumableRequest |
|||
{ |
|||
|
|||
|
|||
} |
|||
} |
@ -0,0 +1,21 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Text; |
|||
|
|||
namespace BBWY.Client.Models |
|||
{ |
|||
public class DiscountFactoryResponse |
|||
{ |
|||
/// <summary>
|
|||
/// 折扣系数
|
|||
/// </summary>
|
|||
public decimal DiscountFactory { get; set; } |
|||
|
|||
/// <summary>
|
|||
/// 计费类型
|
|||
/// </summary>
|
|||
public Models.FeesMode FeesMode { get; set; } |
|||
|
|||
|
|||
} |
|||
} |
@ -0,0 +1,63 @@ |
|||
using BBWY.Client.Models.PackTask; |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Collections.ObjectModel; |
|||
using System.Text; |
|||
|
|||
namespace BBWY.Client.Models |
|||
{ |
|||
public class GetProcessTypeResponse |
|||
{ |
|||
public List<ProcessTypeResponse> ProcessTypeList { get; set; } |
|||
/// <summary>
|
|||
/// 所有的耗材类型
|
|||
/// </summary>
|
|||
public List<ConsumableTypeResponse> ConsumableTypeList { get; set; } |
|||
} |
|||
|
|||
|
|||
public class ProcessTypeResponse |
|||
{ |
|||
/// <summary>
|
|||
/// 工序单价
|
|||
/// </summary>
|
|||
public decimal ProcessTypePrice { get; set; } |
|||
/// <summary>
|
|||
/// 工序类型
|
|||
/// </summary>
|
|||
public string ProcessTypeName { get; set; } |
|||
/// <summary>
|
|||
/// 套餐列表
|
|||
/// </summary>
|
|||
public ObservableCollection<ProcessComboResponse> ProcessComboList { get; set; } |
|||
} |
|||
|
|||
public class ProcessComboResponse |
|||
{ |
|||
/// <summary>
|
|||
/// 套餐id
|
|||
/// </summary>
|
|||
public long ProcessComboId { get; set; } |
|||
/// <summary>
|
|||
/// 套餐名称
|
|||
/// </summary>
|
|||
public string ProcessComboName { get; set; } |
|||
/// <summary>
|
|||
/// 绑定的耗材类型
|
|||
/// </summary>
|
|||
public ObservableCollection<ConsumableTypeResponse> ConsumableTypeList { get; set; } |
|||
} |
|||
|
|||
public class ConsumableTypeResponse |
|||
{ |
|||
/// <summary>
|
|||
/// 耗材类型名称
|
|||
/// </summary>
|
|||
public string ConsumableTypeName { get; set; } |
|||
|
|||
/// <summary>
|
|||
/// 耗材列表
|
|||
/// </summary>
|
|||
public ObservableCollection<ConsumableItemModel> ConsumableList { get; set; } |
|||
} |
|||
} |
@ -0,0 +1,19 @@ |
|||
using BBWY.Client.Models; |
|||
using GalaSoft.MvvmLight.Command; |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Collections.ObjectModel; |
|||
using System.Text; |
|||
using System.Windows.Input; |
|||
|
|||
namespace BBWY.Client |
|||
{ |
|||
|
|||
public class ProcessComboModel : NotifyObject |
|||
{ |
|||
|
|||
public long ProcessComboId { get; set; } |
|||
|
|||
public string ProcessComboName { get; set; } |
|||
} |
|||
} |
@ -0,0 +1,11 @@ |
|||
using BBWY.Common.Models; |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Text; |
|||
|
|||
namespace BBWY.Client.ViewModels.PackTask |
|||
{ |
|||
public class EditConsumableViewModel:BaseVM,IDenpendency |
|||
{ |
|||
} |
|||
} |
@ -0,0 +1,963 @@ |
|||
using BBWY.Client.APIServices.QiKu; |
|||
using BBWY.Client.APIServices; |
|||
using BBWY.Client.Helpers; |
|||
using BBWY.Client.Models.APIModel.Response.PackTask; |
|||
using BBWY.Client.Models.PackTask; |
|||
using BBWY.Client.Models; |
|||
using BBWY.Client.Views.PackTask; |
|||
using GalaSoft.MvvmLight.Command; |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Collections.ObjectModel; |
|||
using System.Drawing.Printing; |
|||
using System.Linq; |
|||
using System.Reflection; |
|||
using System.Text; |
|||
using System.Threading.Tasks; |
|||
using System.Windows; |
|||
using System.Windows.Controls; |
|||
using System.Windows.Input; |
|||
using System.Windows.Media.Imaging; |
|||
using WebSocketSharp; |
|||
using System.IO; |
|||
using BBWY.Client.Models.APIModel; |
|||
using Org.BouncyCastle.Bcpg; |
|||
using System.Threading; |
|||
|
|||
namespace BBWY.Client.ViewModels.PackTask |
|||
{ |
|||
public class PackDetailViewModel : BaseVM |
|||
{ |
|||
|
|||
|
|||
private decimal allFees; |
|||
/// <summary>
|
|||
/// 任务总费用
|
|||
/// </summary>
|
|||
public decimal AllFees { get => allFees; set { Set(ref allFees, value); } } |
|||
|
|||
|
|||
private decimal processPrice; |
|||
/// <summary>
|
|||
/// 工序单价
|
|||
/// </summary>
|
|||
public decimal ProcessPrice { get => processPrice; set { Set(ref processPrice, value); } } |
|||
|
|||
private decimal consumableFees; |
|||
/// <summary>
|
|||
/// 耗材费用
|
|||
/// </summary>
|
|||
public decimal ConsumableFees { get => consumableFees; set { Set(ref consumableFees, value); } } |
|||
|
|||
public ObservableCollection<PackUserModel> packUserModelList; |
|||
public ObservableCollection<PackUserModel> PackUserModelList { get => packUserModelList; set { Set(ref packUserModelList, value); } } |
|||
|
|||
|
|||
|
|||
// private decimal? customProcessSinglePrice;
|
|||
/// <summary>
|
|||
/// 定制工序单价
|
|||
/// </summary>
|
|||
public decimal? CustomProcessSinglePrice |
|||
{ |
|||
get; set; |
|||
} |
|||
|
|||
private string directionalSingleFees; |
|||
|
|||
public string DirectionalSingleFees |
|||
{ |
|||
get => directionalSingleFees; set |
|||
{ |
|||
|
|||
Set(ref directionalSingleFees, value); |
|||
try |
|||
{ |
|||
CustomProcessSinglePrice = decimal.Parse(DirectionalSingleFees); |
|||
} |
|||
catch |
|||
{ |
|||
CustomProcessSinglePrice = null; |
|||
|
|||
|
|||
} |
|||
|
|||
} |
|||
} |
|||
|
|||
|
|||
|
|||
private decimal packFees; |
|||
/// <summary>
|
|||
/// 打包原价
|
|||
/// </summary>
|
|||
public decimal PackFees { get => packFees; set { Set(ref packFees, value); } } |
|||
|
|||
private decimal discountFactory; |
|||
/// <summary>
|
|||
/// 折扣系数
|
|||
/// </summary>
|
|||
public decimal DiscountFactory { get => discountFactory; set { Set(ref discountFactory, value); } } |
|||
|
|||
private decimal packDiscountFees; |
|||
/// <summary>
|
|||
/// 打包折后价价
|
|||
/// </summary>
|
|||
public decimal PackDiscountFees { get => packDiscountFees; set { Set(ref packDiscountFees, value); } } |
|||
|
|||
|
|||
|
|||
private int processTaskCount; |
|||
/// <summary>
|
|||
/// 工序任务量
|
|||
/// </summary>
|
|||
public int ProcessTaskCount |
|||
{ |
|||
get => processTaskCount; set |
|||
{ |
|||
Set(ref processTaskCount, value); |
|||
OnProcessTypeChanged(SelectProcessType, 1); |
|||
} |
|||
} |
|||
|
|||
void OnProcessTaskCountChanged() |
|||
{ |
|||
PackFees = decimal.Parse((ProcessTaskCount * ProcessPrice).ToString("0.00")); ; |
|||
PackDiscountFees = decimal.Parse((PackFees * DiscountFactory).ToString("0.00")); |
|||
} |
|||
|
|||
|
|||
private List<ProcessComboModel> processComboList; |
|||
/// <summary>
|
|||
/// 套餐类型列表
|
|||
/// </summary>
|
|||
public List<ProcessComboModel> ProcessComboList { get => processComboList; set { Set(ref processComboList, value); } } |
|||
|
|||
|
|||
|
|||
private long selectProcessComboId; |
|||
/// <summary>
|
|||
/// 选中套餐类型
|
|||
/// </summary>
|
|||
public long SelectProcessComboId |
|||
{ |
|||
get => selectProcessComboId; set |
|||
{ |
|||
Set(ref selectProcessComboId, value); |
|||
|
|||
OnProcessComboChanged(SelectProcessComboId); |
|||
} |
|||
} |
|||
public bool isConsumableTypeListEnable; |
|||
public bool IsConsumableTypeListEnable { get => isConsumableTypeListEnable; set { Set(ref isConsumableTypeListEnable, value); } } |
|||
private void OnProcessComboChanged(long SelectProcessComboId) |
|||
{ |
|||
if (SelectProcessComboId <= 0) |
|||
{ |
|||
return; |
|||
} |
|||
|
|||
var selectProcessComboData = ProcessTypeResponseList.SingleOrDefault(p => p.ProcessTypeName == SelectProcessType).ProcessComboList. |
|||
SingleOrDefault(p => p.ProcessComboId == SelectProcessComboId); |
|||
App.Current.Dispatcher.Invoke(new Action(() => |
|||
{ |
|||
ConsumableServiceList.Clear(); |
|||
})); |
|||
IsConsumableTypeListEnable = false; |
|||
if (SelectProcessType == "定制") |
|||
{ |
|||
IsConsumableTypeListEnable = true; |
|||
|
|||
ConsumableServiceList = new ObservableCollection<PackItemModel>(); |
|||
|
|||
|
|||
} |
|||
ConsumableFees = 0; |
|||
AllFees = ConsumableFees + PackDiscountFees; |
|||
if (selectProcessComboData != null && selectProcessComboData.ConsumableTypeList != null && selectProcessComboData.ConsumableTypeList.Count > 0)//自动添加列表
|
|||
{ |
|||
|
|||
foreach (var item in selectProcessComboData.ConsumableTypeList) |
|||
{ |
|||
App.Current.Dispatcher.Invoke(new Action(() => |
|||
{ |
|||
|
|||
ConsumableServiceList.Add(new PackItemModel |
|||
{ |
|||
ConsumableTypeList = new ObservableCollection<string> { item.ConsumableTypeName }, |
|||
ConsumableType = item.ConsumableTypeName, |
|||
ConsumableItemList = item.ConsumableList, |
|||
//ConsumableItem = item.ConsumableList.FirstOrDefault()?.ConsumableName,
|
|||
//ConsumablePrice = item.ConsumableList.FirstOrDefault().ConsumablePrice,
|
|||
TaskCount = ProcessTaskCount, |
|||
TotalConsumableFees = ToTalConsumableFees, |
|||
}); ; |
|||
})); |
|||
} |
|||
|
|||
} |
|||
|
|||
|
|||
} |
|||
|
|||
private List<string> processTypeList; |
|||
/// <summary>
|
|||
/// 工序类型列表
|
|||
/// </summary>
|
|||
public List<string> ProcessTypeList { get => processTypeList; set { Set(ref processTypeList, value); } } |
|||
|
|||
|
|||
private string selectProcessType; |
|||
/// <summary>
|
|||
/// 选中工序类型
|
|||
/// </summary>
|
|||
public string SelectProcessType |
|||
{ |
|||
get => selectProcessType; set |
|||
{ |
|||
Set(ref selectProcessType, value); |
|||
OnProcessTypeChanged(SelectProcessType); |
|||
} |
|||
} |
|||
private void OnProcessTypeChanged(string SelectProcessType, int isTaskCount = 0) |
|||
{ |
|||
if (isTaskCount == 0) |
|||
{ |
|||
if (ProcessTypeResponseList == null || ProcessTypeResponseList.Count <= 0 || SelectProcessType == null) return; |
|||
var processTypeData = ProcessTypeResponseList.SingleOrDefault(p => p.ProcessTypeName == SelectProcessType); |
|||
App.Current.Dispatcher.Invoke(new Action(() => |
|||
{ |
|||
ProcessPrice = processTypeData.ProcessTypePrice; |
|||
ProcessComboList = processTypeData.ProcessComboList.Select(p => new ProcessComboModel { ProcessComboId = p.ProcessComboId, ProcessComboName = p.ProcessComboName }).ToList(); |
|||
})); |
|||
|
|||
} |
|||
|
|||
var discountRes = processService.GetDiscountFactory(SelectProcessType, ProcessTaskCount); |
|||
if (!discountRes.Success) |
|||
{ |
|||
System.Windows.MessageBox.Show(discountRes.Msg); |
|||
return; |
|||
} |
|||
|
|||
if (discountRes.Success && discountRes.Data != null) |
|||
{ |
|||
DiscountFactory = discountRes.Data.DiscountFactory; |
|||
if (FeesMode == FeesMode.定向收费 && CustomProcessSinglePrice != null) |
|||
{ |
|||
PackFees = decimal.Parse((ProcessTaskCount * CustomProcessSinglePrice.Value).ToString("0.00")); |
|||
} |
|||
else |
|||
{ |
|||
FeesMode = discountRes.Data.FeesMode; |
|||
PackFees = decimal.Parse((ProcessTaskCount * ProcessPrice).ToString("0.00")); |
|||
} |
|||
|
|||
|
|||
|
|||
PackDiscountFees = decimal.Parse((PackFees * DiscountFactory).ToString("0.00")); |
|||
AllFees = ConsumableFees + PackDiscountFees; |
|||
} |
|||
//统计打包费用
|
|||
} |
|||
|
|||
private string suggestPackUserName; |
|||
/// <summary>
|
|||
/// 打包人
|
|||
/// </summary>
|
|||
public string SuggestPackUserName { get => suggestPackUserName; set { Set(ref suggestPackUserName, value); } } |
|||
|
|||
private int? floorDragNumber; |
|||
public int? FloorDragNumber { get => floorDragNumber; set { Set(ref floorDragNumber, value); } } |
|||
|
|||
private string packUserName; |
|||
/// <summary>
|
|||
/// 打包人
|
|||
/// </summary>
|
|||
public string PackUserName { get => packUserName; set { Set(ref packUserName, value); } } |
|||
|
|||
|
|||
private int incrementPartTaskCount; |
|||
/// <summary>
|
|||
/// 配件任务数量
|
|||
/// </summary>
|
|||
public int IncrementPartTaskCount { get => incrementPartTaskCount; set { Set(ref incrementPartTaskCount, value); } } |
|||
|
|||
|
|||
private int incrementPartCount; |
|||
/// <summary>
|
|||
/// 配件数量
|
|||
/// </summary>
|
|||
public int IncrementPartCount { get => incrementPartCount; set { Set(ref incrementPartCount, value); } } |
|||
|
|||
private string directionalFees; |
|||
/// <summary>
|
|||
/// 定向费用
|
|||
/// </summary>
|
|||
public string DirectionalFees { get => directionalFees; set { Set(ref directionalFees, value); } } |
|||
|
|||
|
|||
private BitmapImage barcodeImage; |
|||
/// <summary>
|
|||
/// 任务Id条形码
|
|||
/// </summary>
|
|||
public BitmapImage BarcodeImage { get => barcodeImage; set { Set(ref barcodeImage, value); } } |
|||
|
|||
private BitmapImage taskImage; |
|||
/// <summary>
|
|||
/// 任务Id条形码
|
|||
/// </summary>
|
|||
public BitmapImage TaskImage { get => taskImage; set { Set(ref taskImage, value); } } |
|||
|
|||
private string printName; |
|||
|
|||
public string PrintName { get => printName; set { Set(ref printName, value); } } |
|||
|
|||
private ObservableCollection<string> printList; |
|||
/// <summary>
|
|||
/// 打印机列表
|
|||
/// </summary>
|
|||
public ObservableCollection<string> PrintList { get => printList; set { Set(ref printList, value); } } |
|||
|
|||
private ObservableCollection<PackTaskModel> packTaskList; |
|||
/// <summary>
|
|||
/// 动态数据表
|
|||
/// </summary>
|
|||
public ObservableCollection<PackTaskModel> PackTaskList { get => packTaskList; set { Set(ref packTaskList, value); } } |
|||
|
|||
|
|||
private PackTaskModel packTaskModel; |
|||
|
|||
public PackTaskModel PackTaskModel { get => packTaskModel; set { Set(ref packTaskModel, value); } } //
|
|||
|
|||
|
|||
/// <summary>
|
|||
/// 添加打包人
|
|||
/// </summary>
|
|||
public ICommand AddPackUserCommand { get; set; } |
|||
|
|||
public ICommand AddPackServiceCommand { get; set; } |
|||
|
|||
public ICommand AddBasicPackServiceCommand { get; set; } |
|||
|
|||
public ICommand AddIncreateServiceCommand { get; set; } |
|||
|
|||
public ICommand AddConsumableCommand { get; set; } |
|||
|
|||
public ICommand UpLoadPackCommand { get; set; } |
|||
|
|||
public ICommand SetAllCountCommand { get; set; } |
|||
|
|||
|
|||
public ICommand PrintCommand { get; set; } |
|||
|
|||
public ICommand SetCustomProcessPriceCommand { get; set; } |
|||
readonly PackTaskService packTaskService; |
|||
readonly PackDetailService packDetailService; |
|||
readonly ProcessService processService; |
|||
private ObservableCollection<PackItemModel> increateList = new ObservableCollection<PackItemModel>(); |
|||
public ObservableCollection<PackItemModel> IncreateList { get => increateList; set { Set(ref increateList, value); } } //
|
|||
|
|||
//private ObservableCollection<PackItemModel>
|
|||
// packList = new ObservableCollection<PackItemModel>();
|
|||
//public ObservableCollection<PackItemModel> PackList { get => packList; set { Set(ref packList, value); } } //
|
|||
|
|||
private ObservableCollection<PackItemModel> |
|||
consumableServiceList = new ObservableCollection<PackItemModel>(); |
|||
public ObservableCollection<PackItemModel> ConsumableServiceList { get => consumableServiceList; set { Set(ref consumableServiceList, value); } } //
|
|||
|
|||
|
|||
|
|||
|
|||
private ObservableCollection<PackItemModel> basicPackProcessList = new ObservableCollection<PackItemModel>(); |
|||
private ObservableCollection<PackItemModel> incrementProcessList = new ObservableCollection<PackItemModel>(); |
|||
/// <summary>
|
|||
///增量工序
|
|||
/// </summary>
|
|||
public ObservableCollection<PackItemModel> IncrementProcessList { get => incrementProcessList; set { Set(ref incrementProcessList, value); } } //
|
|||
/// <summary>
|
|||
/// 基础包装工序
|
|||
/// </summary>
|
|||
public ObservableCollection<PackItemModel> BasicPackProcessList { get => basicPackProcessList; set { Set(ref basicPackProcessList, value); } } |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
private string discount = "1"; |
|||
/// <summary>
|
|||
/// 折扣
|
|||
/// </summary>
|
|||
public string Discount { get => discount; set { Set(ref discount, value); } } //
|
|||
|
|||
|
|||
public ObservableCollection<PackServiceDTO> IncreateServiceList { get; set; } = new ObservableCollection<PackServiceDTO>(); |
|||
public ObservableCollection<PackUser> MemberList { get; set; } = new ObservableCollection<PackUser>(); |
|||
public ObservableCollection<ConsumableModel> ConsumableList { get; set; } = new ObservableCollection<ConsumableModel>(); |
|||
public ObservableCollection<PackServiceDTO> PackServiceList { get; set; } = new ObservableCollection<PackServiceDTO>(); |
|||
|
|||
/// <summary>
|
|||
/// 基础包装服务项目列表
|
|||
/// </summary>
|
|||
public ObservableCollection<PackServiceDTO> BasicPackServiceList { get; set; } = new ObservableCollection<PackServiceDTO>(); |
|||
|
|||
|
|||
|
|||
/// <summary>
|
|||
/// 加载原数据
|
|||
/// </summary>
|
|||
public List<PackItemModel> LoadList = new List<PackItemModel>(); |
|||
|
|||
|
|||
|
|||
public void InitPrintList() |
|||
{ |
|||
TaskImage = MyPrintHelper.GetBarcodeImage(TaskId.ToString(), 300, 60); |
|||
|
|||
BarcodeImage = MyPrintHelper.GetBarcodeImage(SkuId, 300, 60); |
|||
|
|||
|
|||
PrintList = new ObservableCollection<string>(); |
|||
var printingNames = PrinterSettings.InstalledPrinters;//获取本机的打印机数据
|
|||
int index = -1; |
|||
int selectIndex = 0; |
|||
foreach (string name in printingNames) |
|||
{ |
|||
if (name == "Microsoft XPS Document Writer" || name == "Microsoft Print to PDF" || name == "Fax") |
|||
{ |
|||
continue; |
|||
} |
|||
index++; |
|||
if (name.Contains("Deli")) |
|||
{ |
|||
selectIndex = index; |
|||
} |
|||
PrintList.Add(name); |
|||
} |
|||
try |
|||
{ |
|||
var applicationPath = System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); |
|||
string printNames = Path.Combine(applicationPath, "printName.init"); |
|||
if (File.Exists(printNames)) |
|||
{ |
|||
PrintName = File.ReadAllText(printNames); |
|||
} |
|||
else |
|||
{ |
|||
if (PrintList.Count > 0) |
|||
{ |
|||
PrintName = PrintList[0].ToString(); |
|||
} |
|||
} |
|||
} |
|||
catch (Exception) |
|||
{ |
|||
|
|||
|
|||
} |
|||
|
|||
} |
|||
|
|||
public PackDetailViewModel(PackTaskService packTaskService, PackDetailService packDetailService, ProcessService processService)//, long taskId
|
|||
{ |
|||
this.processService = processService; |
|||
this.packTaskService = packTaskService; |
|||
this.packDetailService = packDetailService; |
|||
AddIncreateServiceCommand = new RelayCommand(AddIncreateService); |
|||
AddPackServiceCommand = new RelayCommand(AddPackService); |
|||
AddBasicPackServiceCommand = new RelayCommand(AddBasicPackService); |
|||
AddConsumableCommand = new RelayCommand(AddConsumable); |
|||
UpLoadPackCommand = new RelayCommand<object>(UpLoadPack); |
|||
|
|||
|
|||
SetAllCountCommand = new RelayCommand<object>(SetAllCount); |
|||
SetCustomProcessPriceCommand = new RelayCommand(SetCustomProcessPrice); |
|||
AddPackUserCommand = new RelayCommand(AddPackUser); |
|||
PackUserModelList = new ObservableCollection<PackUserModel>(); |
|||
} |
|||
|
|||
private void AddPackUser() |
|||
{ |
|||
|
|||
App.Current.Dispatcher.Invoke(new Action(() => |
|||
{ |
|||
PackUserModelList.Add(new PackUserModel() |
|||
{ |
|||
TaskCount = ProcessTaskCount, |
|||
MemberList = MemberList, |
|||
}); |
|||
})); |
|||
} |
|||
|
|||
/// <summary>
|
|||
/// 所有的耗材类型
|
|||
/// </summary>
|
|||
public List<ConsumableTypeResponse> ConsumableTypeList { get; set; } |
|||
/// <summary>
|
|||
/// 设置定制工序单价
|
|||
/// </summary>
|
|||
/// <exception cref="NotImplementedException"></exception>
|
|||
private void SetCustomProcessPrice() |
|||
{ |
|||
if (CustomProcessSinglePrice == null) |
|||
{ |
|||
OnProcessTypeChanged(SelectProcessType, 1); |
|||
return; |
|||
} |
|||
if (SelectProcessType != "定制") |
|||
{ |
|||
SelectProcessType = "定制"; |
|||
SelectProcessComboId = ProcessComboList.FirstOrDefault().ProcessComboId; |
|||
} |
|||
FeesMode = FeesMode.定向收费; |
|||
PackFees = decimal.Parse((ProcessTaskCount * CustomProcessSinglePrice.Value).ToString("0.00")); ; |
|||
PackDiscountFees = decimal.Parse((PackFees * DiscountFactory).ToString("0.00")); |
|||
AllFees = ConsumableFees + PackDiscountFees; |
|||
|
|||
|
|||
} |
|||
private List<ProcessTypeResponse> ProcessTypeResponseList { get; set; } |
|||
/// <summary>
|
|||
/// 加载任务数据
|
|||
/// </summary>
|
|||
public void LoadPackDatas() |
|||
{ |
|||
IncrementPartTaskCount = TaskCount; |
|||
try |
|||
{ |
|||
InitPrintList(); |
|||
} |
|||
catch (Exception) |
|||
{ |
|||
|
|||
|
|||
} |
|||
|
|||
LoadList = new List<PackItemModel>(); |
|||
Task task = Task.Factory.StartNew(() => |
|||
{ |
|||
var resMember = this.packTaskService.GetPackMembers();//成员表
|
|||
if (resMember.Success) |
|||
{ |
|||
MemberList = new ObservableCollection<PackUser>(); |
|||
foreach (var item in resMember.Data) |
|||
{ |
|||
App.Current.Dispatcher.Invoke(() => |
|||
{ |
|||
MemberList.Add(item); |
|||
}); |
|||
} |
|||
} |
|||
var res = this.processService.GetProcessTypeList(); |
|||
if (!res.Success) |
|||
{ |
|||
App.Current.Dispatcher.Invoke(() => |
|||
{ |
|||
|
|||
MessageBox.Show(res.Msg); |
|||
}); |
|||
} |
|||
ProcessTaskCount = TaskCount; |
|||
if (res.Success && res.Data != null) |
|||
{ |
|||
ProcessTypeResponseList = res.Data.ProcessTypeList; |
|||
ConsumableTypeList = res.Data.ConsumableTypeList; |
|||
App.Current.Dispatcher.Invoke(() => |
|||
{ |
|||
ProcessTypeList = ProcessTypeResponseList.Select(p => p.ProcessTypeName).Distinct().ToList(); |
|||
}); |
|||
|
|||
} |
|||
|
|||
var packDetailRes = packDetailService.GetPackDetail(TaskId); |
|||
|
|||
if (!packDetailRes.Success) |
|||
{ |
|||
App.Current.Dispatcher.Invoke(() => |
|||
{ |
|||
MessageBox.Show(packDetailRes.Msg); |
|||
}); |
|||
} |
|||
if (packDetailRes.Success && packDetailRes.Data != null) |
|||
{ |
|||
var resData = packDetailRes.Data; |
|||
|
|||
SuggestPackUserName = resData.SuggestPackUserName; |
|||
SelectProcessType = resData.ProcessTypeName; |
|||
SelectProcessComboId = resData.ProcessComboId; |
|||
TaskCount = resData.ProcessTaskCount; |
|||
DirectionalSingleFees = resData.DirectionalSingleFees?.ToString(); |
|||
if (resData.DirectionalSingleFees>0) |
|||
{ |
|||
SetCustomProcessPrice(); |
|||
} |
|||
if (resData.PackUserList != null && resData.PackUserList.Count > 0) |
|||
{ |
|||
foreach (var packuser in resData.PackUserList) |
|||
{ |
|||
App.Current.Dispatcher.Invoke(() => |
|||
{ |
|||
PackUserModelList.Add(new PackUserModel |
|||
{ |
|||
MemberList = MemberList, |
|||
SelectUserId = packuser.UserId, |
|||
TaskCount = packuser.TaskCount |
|||
}); |
|||
}); |
|||
|
|||
} |
|||
|
|||
} |
|||
if (resData.ConsumableList != null && resData.ConsumableList.Count > 0) |
|||
{ |
|||
|
|||
if (ConsumableServiceList != null && ConsumableServiceList.Count > 0) |
|||
{ |
|||
foreach (var con in resData.ConsumableList) |
|||
{ |
|||
var condate = ConsumableServiceList.FirstOrDefault(c => c.ConsumableItem.IsNullOrEmpty() && c.ConsumableType == con.ConsumableTypeName); |
|||
App.Current.Dispatcher.Invoke(() => |
|||
{ |
|||
condate.ConsumablePrice = con.ConsumablePrice; |
|||
condate.SelectId = con.ConsumableId; |
|||
condate.TaskCount = con.TaskCount; |
|||
|
|||
}); |
|||
|
|||
} |
|||
} |
|||
else |
|||
{ |
|||
ObservableCollection<string> consumableTypeList = new ObservableCollection<string>(); |
|||
|
|||
foreach (var item in ConsumableTypeList) |
|||
{ |
|||
consumableTypeList.Add(item.ConsumableTypeName); |
|||
} |
|||
|
|||
|
|||
foreach (var con in resData.ConsumableList) |
|||
{ |
|||
|
|||
|
|||
App.Current.Dispatcher.Invoke(new Action(() => |
|||
{ |
|||
ConsumableServiceList.Add(new PackItemModel() |
|||
{ |
|||
ItemCount = TaskCount, |
|||
ConsumableList = ConsumableList, |
|||
ConsumableTypeList = consumableTypeList, |
|||
AllConsumableTypeList = ConsumableTypeList, |
|||
ConsumableType = con.ConsumableTypeName, |
|||
ConsumablePrice = con.ConsumablePrice, |
|||
SelectId = con.ConsumableId, |
|||
TaskCount = con.TaskCount, |
|||
TotalConsumableFees = ToTalConsumableFees |
|||
|
|||
|
|||
}); |
|||
})); |
|||
|
|||
} |
|||
|
|||
|
|||
} |
|||
|
|||
|
|||
|
|||
} |
|||
} |
|||
|
|||
|
|||
}); |
|||
} |
|||
|
|||
private void ToTalConsumableFees() |
|||
{ |
|||
|
|||
App.Current.Dispatcher.Invoke(new Action(() => |
|||
{ |
|||
ConsumableFees = ConsumableServiceList.Select(c => c.ConsumablePrice * c.TaskCount).Sum(); |
|||
AllFees = ConsumableFees + PackDiscountFees; |
|||
})); |
|||
|
|||
} |
|||
|
|||
/// <summary>
|
|||
/// 批量设置耗材数量
|
|||
/// </summary>
|
|||
/// <param name="obj"></param>
|
|||
private void SetAllCount(object obj) |
|||
{ |
|||
if (ConsumableServiceList == null || ConsumableServiceList.Count <= 0) |
|||
{ |
|||
return; |
|||
} |
|||
|
|||
SetCountWindow set = new SetCountWindow(); |
|||
set.SetCount = new Action<int>((s) => |
|||
{ |
|||
var lbox = obj as ListBox; |
|||
var serviceList = lbox.ItemsSource as ObservableCollection<PackItemModel>; |
|||
foreach (var item in serviceList) |
|||
{ |
|||
if (item.ConsumableItem == null) |
|||
{ |
|||
item.ConsumableItem = ConsumableServiceList.Select(c => c.ConsumableList).FirstOrDefault()?.Where(c => c.Id == item.SelectId).FirstOrDefault()?.Name; |
|||
} |
|||
|
|||
item.TaskCount = s; |
|||
} |
|||
lbox.ItemsSource = serviceList; |
|||
}); |
|||
set.Show(); |
|||
} |
|||
|
|||
private long taskId; |
|||
public long TaskId { get => taskId; set { Set(ref taskId, value); } } //
|
|||
|
|||
|
|||
private int taskCount; |
|||
public int TaskCount { get => taskCount; set { Set(ref taskCount, value); } } //
|
|||
public string OrderId { get; set; } |
|||
public string SkuId { get; set; } |
|||
|
|||
|
|||
|
|||
private List<PackItemModel> IsOverCount(ObservableCollection<PackItemModel> packItemModels, bool needUserId = true) |
|||
{ |
|||
|
|||
|
|||
List<PackItemModel> disItems = new List<PackItemModel>(); |
|||
|
|||
foreach (var packItem in packItemModels)//增值服务上传
|
|||
{ |
|||
var item = new PackItemModel |
|||
{ |
|||
ItemCount = packItem.ItemCount, |
|||
SelectId = packItem.SelectId, |
|||
SelectUserId = packItem.SelectUserId, |
|||
ItemName = packItem.ItemName, |
|||
MemberName = packItem.MemberName |
|||
}; |
|||
if (needUserId) |
|||
if (item.SelectId <= 0 || string.IsNullOrEmpty(item.SelectUserId) || item.ItemCount <= 0) |
|||
{ |
|||
System.Windows.MessageBox.Show($"数据输入有误"); |
|||
return null; |
|||
} |
|||
else |
|||
if (item.SelectId <= 0 || item.ItemCount <= 0) |
|||
{ |
|||
System.Windows.MessageBox.Show($"数据输入有误"); |
|||
return null; |
|||
} |
|||
|
|||
if (item.ItemCount > TaskCount) |
|||
{ |
|||
System.Windows.MessageBox.Show($"{item.ItemName}:{item.ItemCount}超出任务量{TaskCount}"); |
|||
return null; |
|||
} |
|||
|
|||
|
|||
|
|||
if (disItems.Select(a => a.SelectId).Contains(item.SelectId))//相同服务 存在累加
|
|||
{ |
|||
|
|||
var data = disItems.SingleOrDefault(a => a.SelectId == item.SelectId); |
|||
|
|||
if (data != null) data.ItemCount += item.ItemCount; |
|||
|
|||
if (data.ItemCount > TaskCount)//累积超出任务量
|
|||
{ |
|||
System.Windows.MessageBox.Show($"{item.ItemName}:{data.ItemCount}超出任务量{TaskCount}"); |
|||
return null; |
|||
} |
|||
|
|||
continue; |
|||
} |
|||
disItems.Add(item); |
|||
} |
|||
|
|||
|
|||
|
|||
return disItems; |
|||
} |
|||
/// <summary>
|
|||
/// 计费模式
|
|||
/// </summary>
|
|||
public FeesMode FeesMode { get; set; } |
|||
/// <summary>
|
|||
/// 上传数据 (判断是否超量) 统一上传
|
|||
/// </summary>
|
|||
private void UpLoadPack(object obj) |
|||
{ |
|||
if (ProcessTaskCount > TaskCount) |
|||
{ |
|||
System.Windows.MessageBox.Show($"工序任务数:{ProcessTaskCount}不能超过打包总任务数:{TaskCount}"); |
|||
return; |
|||
} |
|||
|
|||
if (PackUserModelList != null && PackUserModelList.Count > 0) |
|||
{ |
|||
if (PackUserModelList.Any(p => p.SelectUserId.IsNullOrEmpty() || p.TaskCount <= 0)) |
|||
{ |
|||
System.Windows.MessageBox.Show("信息不完整,打包人设置有误"); |
|||
return; |
|||
} |
|||
|
|||
var totalPackTaskCount = PackUserModelList.Select(p => p.TaskCount).Sum(); |
|||
if (totalPackTaskCount != ProcessTaskCount) |
|||
{ |
|||
System.Windows.MessageBox.Show($"工序任务总量:{ProcessTaskCount},与打包人任务总量:{totalPackTaskCount} 不相等."); |
|||
return; |
|||
} |
|||
|
|||
if (PackUserModelList.Select(p => p.SelectUserId).Distinct().Count() != PackUserModelList.Count()) |
|||
{ |
|||
System.Windows.MessageBox.Show($"请勿重复设置打包人任务."); |
|||
return; |
|||
} |
|||
|
|||
} |
|||
|
|||
|
|||
if (ConsumableServiceList != null && ConsumableServiceList.Count > 0) |
|||
{ |
|||
if (ConsumableServiceList.Any(p => p.SelectId == null || p.TaskCount <= 0)) |
|||
{ |
|||
System.Windows.MessageBox.Show("信息不完整,耗材设置有误"); |
|||
return; |
|||
} |
|||
foreach (var item in ConsumableServiceList) |
|||
{ |
|||
if (item.TaskCount > ProcessTaskCount) |
|||
{ |
|||
System.Windows.MessageBox.Show($"耗材分类:{item.ConsumableType}下,任务量:{item.TaskCount} 不能超过工序任务总量:{ProcessTaskCount}."); |
|||
return; |
|||
} |
|||
} |
|||
|
|||
|
|||
|
|||
} |
|||
if (CustomProcessSinglePrice != null) |
|||
{ |
|||
FeesMode = FeesMode.定向收费; |
|||
} |
|||
|
|||
SetPackDetailRequest setPackDetailRequest = new SetPackDetailRequest() |
|||
{ |
|||
DirectionalSingleFees = CustomProcessSinglePrice, |
|||
FeesMode = FeesMode, |
|||
AllFees = AllFees, |
|||
ConsumableFees = ConsumableFees, |
|||
TaskId = TaskId, |
|||
PackUserList = PackUserModelList?.Select(p => new PackUserModelRequest { TaskCount = p.TaskCount, UserId = p.SelectUserId }).ToList(), |
|||
ConsumableList = ConsumableServiceList?.Select(c => new ConsumableRequest { ConsumableId = c.SelectId.Value, TaskCount = c.TaskCount, ConsumableTypeName = c.ConsumableType, ConsumablePrice = c.ConsumablePrice }).ToList(), |
|||
DiscountFactory = DiscountFactory, |
|||
PackDiscountPrice = PackDiscountFees, |
|||
PackPrice = PackFees, |
|||
ProcessComboCount = ProcessTaskCount, |
|||
ProcessComboId = SelectProcessComboId, |
|||
ProcessTypeName = SelectProcessType |
|||
|
|||
}; |
|||
var res = packDetailService.SetPackDetail(setPackDetailRequest); |
|||
|
|||
if (res == null) |
|||
{ |
|||
System.Windows.MessageBox.Show("网络异常!"); |
|||
return; |
|||
} |
|||
if (!res.Success) |
|||
{ |
|||
System.Windows.MessageBox.Show(res.Msg); |
|||
return; |
|||
} |
|||
|
|||
|
|||
// new TipsWindow("上传成功!").Show();
|
|||
var win = obj as System.Windows.Window; |
|||
if (ReflashWindow != null) |
|||
ReflashWindow(); |
|||
win.Close(); |
|||
|
|||
} |
|||
/// <summary>
|
|||
/// 刷新界面
|
|||
/// </summary>
|
|||
public Action ReflashWindow { get; set; } |
|||
|
|||
private void AddPackService() |
|||
{ |
|||
App.Current.Dispatcher.Invoke(new Action(() => |
|||
{ |
|||
IncrementProcessList.Add(new PackItemModel() |
|||
{ |
|||
ItemCount = TaskCount, |
|||
MemberList = MemberList, |
|||
PackServiceList = PackServiceList, |
|||
}); |
|||
})); |
|||
|
|||
} |
|||
|
|||
|
|||
private void AddBasicPackService() |
|||
{ |
|||
App.Current.Dispatcher.Invoke(new Action(() => |
|||
{ |
|||
BasicPackProcessList.Add(new PackItemModel() |
|||
{ |
|||
ItemCount = TaskCount, |
|||
MemberList = MemberList, |
|||
PackServiceList = BasicPackServiceList, |
|||
}); |
|||
})); |
|||
|
|||
} |
|||
|
|||
private void AddIncreateService() |
|||
{ |
|||
App.Current.Dispatcher.Invoke(new Action(() => |
|||
{ |
|||
IncreateList.Add(new PackItemModel() |
|||
{ |
|||
ItemCount = TaskCount, |
|||
IncreateServiceList = IncreateServiceList, |
|||
MemberList = MemberList, |
|||
}); |
|||
})); |
|||
} |
|||
|
|||
private void AddConsumable() |
|||
{ |
|||
|
|||
ObservableCollection<string> consumableTypeList = new ObservableCollection<string>(); |
|||
|
|||
foreach (var item in ConsumableTypeList) |
|||
{ |
|||
consumableTypeList.Add(item.ConsumableTypeName); |
|||
} |
|||
|
|||
App.Current.Dispatcher.Invoke(new Action(() => |
|||
{ |
|||
|
|||
|
|||
|
|||
|
|||
ConsumableServiceList.Add(new PackItemModel() |
|||
{ |
|||
TaskCount = ProcessTaskCount, |
|||
ConsumableTypeList = consumableTypeList, |
|||
AllConsumableTypeList = ConsumableTypeList, |
|||
TotalConsumableFees=ToTalConsumableFees |
|||
|
|||
|
|||
}); |
|||
})); |
|||
|
|||
} |
|||
} |
|||
} |
@ -0,0 +1,709 @@ |
|||
<c:BWindow x:Class="BBWY.Client.Views.PackTask.PackDetailWindow" |
|||
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:local="clr-namespace:BBWY.Client.Views.PackTask" |
|||
mc:Ignorable="d" |
|||
Title="PackDetailWindow" Height="844" Width="480" |
|||
xmlns:c="clr-namespace:BBWY.Controls;assembly=BBWY.Controls" |
|||
xmlns:b="http://schemas.microsoft.com/xaml/behaviors" |
|||
xmlns:ctr="clr-namespace:BBWY.Client.Converters" |
|||
xmlns:cmodel="clr-namespace:BBWY.Client.Models" |
|||
xmlns:sys="clr-namespace:System;assembly=mscorlib" |
|||
xmlns:hc="https://handyorg.github.io/handycontrol" |
|||
CloseButtonVisibility="Visible" |
|||
WindowStartupLocation="CenterScreen" |
|||
CloseButtonColor="{StaticResource WindowButtonColor}" |
|||
DataContext="{Binding PackDetailVM,Source={StaticResource Locator}}" |
|||
MinButtonVisibility="Collapsed" |
|||
MaxButtonVisibility="Collapsed" |
|||
RightButtonGroupMargin="0,5,5,0"> |
|||
<!--ResizeMode="NoResize"--> |
|||
<Window.Resources> |
|||
<Style TargetType="ComboBox"> |
|||
<Style.Resources> |
|||
<ResourceDictionary> |
|||
<ResourceDictionary.MergedDictionaries > |
|||
<ResourceDictionary Source="pack://application:,,,/HandyControl;component/Themes/SkinDefault.xaml"/> |
|||
<ResourceDictionary Source="pack://application:,,,/HandyControl;component/Themes/Theme.xaml"/> |
|||
</ResourceDictionary.MergedDictionaries> |
|||
</ResourceDictionary> |
|||
</Style.Resources> |
|||
</Style> |
|||
<DrawingBrush x:Key="DashBorderBrush"> |
|||
<DrawingBrush.Drawing> |
|||
<GeometryDrawing Brush="Transparent"> |
|||
<GeometryDrawing.Geometry> |
|||
<RectangleGeometry Rect="0,0,100,100"/> |
|||
</GeometryDrawing.Geometry> |
|||
<GeometryDrawing.Pen> |
|||
<Pen Thickness="2" Brush="Black"/> |
|||
</GeometryDrawing.Pen> |
|||
</GeometryDrawing> |
|||
</DrawingBrush.Drawing> |
|||
</DrawingBrush> |
|||
</Window.Resources> |
|||
|
|||
<Grid> |
|||
<Grid.ColumnDefinitions> |
|||
<ColumnDefinition Width="480"/> |
|||
<ColumnDefinition /> |
|||
</Grid.ColumnDefinitions> |
|||
<Grid.RowDefinitions> |
|||
<RowDefinition Height="40"/> |
|||
<RowDefinition/> |
|||
<RowDefinition Height="40"/> |
|||
</Grid.RowDefinitions> |
|||
|
|||
<Border BorderThickness="0,0,0,1" BorderBrush="{StaticResource MainMenu.BorderBrush}" |
|||
Background="{StaticResource Border.Background}"> |
|||
<TextBlock Text="打包任务配置" HorizontalAlignment="Center" VerticalAlignment="Center"/> |
|||
|
|||
</Border> |
|||
<Grid Grid.Row="1" > |
|||
|
|||
<Grid.Resources> |
|||
<ResourceDictionary> |
|||
<ResourceDictionary.MergedDictionaries > |
|||
<ResourceDictionary Source="pack://application:,,,/HandyControl;component/Themes/SkinDefault.xaml"/> |
|||
<ResourceDictionary Source="pack://application:,,,/HandyControl;component/Themes/Theme.xaml"/> |
|||
</ResourceDictionary.MergedDictionaries> |
|||
</ResourceDictionary> |
|||
</Grid.Resources> |
|||
<Grid.RowDefinitions> |
|||
<RowDefinition/> |
|||
<RowDefinition Height="40"/> |
|||
</Grid.RowDefinitions> |
|||
|
|||
|
|||
|
|||
<ScrollViewer x:Name="scrolls" Grid.Row="0" VerticalScrollBarVisibility="Visible" HorizontalScrollBarVisibility="Disabled" Height="740"> |
|||
<ScrollViewer.Content> |
|||
<StackPanel Orientation="Vertical" Grid.Row="1"> |
|||
<Grid Margin="20 10 20 10" > |
|||
<Grid.ColumnDefinitions> |
|||
<ColumnDefinition Width="60"/> |
|||
<ColumnDefinition/> |
|||
</Grid.ColumnDefinitions> |
|||
<TextBlock Text="打包工序" Margin="0 0 5 0" Style="{StaticResource middleTextBlock}" /> |
|||
<Border Background="Black" Grid.Column="1" VerticalAlignment="Center" Height="1"/> |
|||
</Grid> |
|||
|
|||
<Grid Margin="20 5 20 0"> |
|||
|
|||
<Grid Height="60" > |
|||
<Grid.RowDefinitions> |
|||
<RowDefinition Height="30"/> |
|||
<RowDefinition Height="30"/> |
|||
</Grid.RowDefinitions> |
|||
<Grid.ColumnDefinitions> |
|||
<ColumnDefinition Width="100"/> |
|||
<ColumnDefinition MinWidth="84"/> |
|||
<ColumnDefinition Width="66"/> |
|||
<ColumnDefinition Width="66"/> |
|||
</Grid.ColumnDefinitions> |
|||
<TextBlock Background="{StaticResource Border.Background}" Grid.ColumnSpan="4"/> |
|||
<TextBlock Text="工序类型" Style="{StaticResource middleTextBlock}" /> |
|||
<TextBlock Text="套餐类型" Style="{StaticResource middleTextBlock}" Grid.Column="1" /> |
|||
<TextBlock Text="工序单价" Style="{StaticResource middleTextBlock}" Grid.Column="2" /> |
|||
<TextBlock Text="任务量" Style="{StaticResource middleTextBlock}" Grid.Column="3"/> |
|||
|
|||
<Border VerticalAlignment="Top" Grid.ColumnSpan="4" Height="1" Background="{StaticResource Border.Brush}" Grid.Row="0" /> |
|||
<Border VerticalAlignment="Bottom" Grid.ColumnSpan="4" Height="1" Background="{StaticResource Border.Brush}" /> |
|||
<Border VerticalAlignment="Bottom" Grid.ColumnSpan="4" Height="1" Background="{StaticResource Border.Brush}" Grid.Row="1"/> |
|||
<Border HorizontalAlignment="Left" Grid.Column="0" Width="1" Background="{StaticResource Border.Brush}" Grid.RowSpan="2"/> |
|||
<Border HorizontalAlignment="Left" Grid.Column="1" Width="1" Background="{StaticResource Border.Brush}" Grid.RowSpan="2"/> |
|||
<Border HorizontalAlignment="Left" Grid.Column="2" Width="1" Background="{StaticResource Border.Brush}" Grid.RowSpan="2"/> |
|||
<Border HorizontalAlignment="Left" Grid.Column="3" Width="1" Background="{StaticResource Border.Brush}" Grid.RowSpan="2"/> |
|||
<Border HorizontalAlignment="Right" Grid.Column="3" Width="1" Background="{StaticResource Border.Brush}" Grid.RowSpan="2"/> |
|||
|
|||
<ComboBox Margin="1" BorderThickness="0" Grid.Row="1" ItemsSource="{Binding ProcessTypeList}" Text="{Binding SelectProcessType}" /> |
|||
<ComboBox Margin="1" BorderThickness="0" Grid.Row="1" Grid.Column="1" ItemsSource="{Binding ProcessComboList}" DisplayMemberPath="ProcessComboName" |
|||
SelectedValuePath="ProcessComboId" SelectedValue="{Binding SelectProcessComboId}" |
|||
Text="{Binding SelectProcessCombo}"/> |
|||
|
|||
<Grid Grid.Row="1" Grid.Column="2" Margin="1 0 1 1" Background="{StaticResource Border.Background}" > |
|||
<TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" Text="{Binding ProcessPrice}" /> |
|||
</Grid> |
|||
|
|||
<TextBox BorderBrush="Transparent" BorderThickness="0" Margin="1" Grid.Row="1" Grid.Column="3" VerticalAlignment="Center" HorizontalAlignment="Center" Text="{Binding ProcessTaskCount,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" /> |
|||
|
|||
|
|||
|
|||
|
|||
</Grid> |
|||
|
|||
|
|||
</Grid> |
|||
<Border BorderThickness="1" Height="40" Margin="20,10,20,10" BorderBrush="{StaticResource Border.Brush}"> |
|||
|
|||
<StackPanel Orientation="Horizontal"> |
|||
<TextBlock Style="{StaticResource middleTextBlock}" Margin="10 0 0 0"> |
|||
<Run Text="原价:"/> |
|||
<Run Text="{Binding PackFees}"/> |
|||
</TextBlock> |
|||
<TextBlock Style="{StaticResource middleTextBlock}" Margin="30 0 0 0"> |
|||
<Run Text="折扣系数:"/> |
|||
<Run Text="{Binding DiscountFactory}"/> |
|||
</TextBlock> |
|||
<TextBlock Style="{StaticResource middleTextBlock}" Margin="30 0 0 0"> |
|||
<Run Text="折后价:"/> |
|||
<Run Text="{Binding PackDiscountFees}"/> |
|||
</TextBlock> |
|||
</StackPanel> |
|||
</Border> |
|||
|
|||
|
|||
<StackPanel Orientation="Horizontal" Margin="20 0 0 10"> |
|||
<TextBlock Style="{StaticResource middleTextBlock}" Text="定制工序单价:"/> |
|||
<Border BorderThickness="1" CornerRadius="0" BorderBrush="{StaticResource Border.Brush}"> |
|||
<TextBox BorderThickness="0" Width="100" Text="{Binding DirectionalSingleFees,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/> |
|||
</Border> |
|||
|
|||
|
|||
<c:BButton Content="确定" Width="60" Command="{Binding SetCustomProcessPriceCommand}"/> |
|||
</StackPanel> |
|||
<Grid Margin="20 10 20 0" > |
|||
<Grid.ColumnDefinitions> |
|||
<ColumnDefinition Width="60"/> |
|||
<ColumnDefinition/> |
|||
</Grid.ColumnDefinitions> |
|||
<TextBlock Text="打包人" Margin="0 0 5 0" Style="{StaticResource middleTextBlock}" /> |
|||
<Border Background="Black" Grid.Column="1" VerticalAlignment="Center" Height="1"/> |
|||
</Grid> |
|||
|
|||
|
|||
<TextBlock Margin="20 10 20 10"> |
|||
<Run Text="推荐打包人:"/> |
|||
<Run Text="{Binding SuggestPackUserName}" Foreground="Red"/> |
|||
</TextBlock> |
|||
|
|||
|
|||
<Grid Margin="20 10 20 0"> |
|||
<Grid.RowDefinitions> |
|||
<RowDefinition/> |
|||
<RowDefinition/> |
|||
</Grid.RowDefinitions> |
|||
<Grid Height="30" Background="{StaticResource Border.Background}" > |
|||
<Grid.ColumnDefinitions> |
|||
|
|||
<ColumnDefinition MinWidth="80"/> |
|||
<ColumnDefinition Width="80"/> |
|||
<ColumnDefinition Width="80"/> |
|||
</Grid.ColumnDefinitions> |
|||
<Border VerticalAlignment="Top" Grid.ColumnSpan="4" Height="1" Background="{StaticResource Border.Brush}" Grid.Row="0" /> |
|||
<Border VerticalAlignment="Bottom" Grid.ColumnSpan="4" Height="1" Background="{StaticResource Border.Brush}" /> |
|||
<Border HorizontalAlignment="Left" Background="{StaticResource Border.Brush}" Width="1" Grid.Column="0" /> |
|||
<Border HorizontalAlignment="Left" Background="{StaticResource Border.Brush}" Width="1" Grid.Column="1" /> |
|||
<Border HorizontalAlignment="Left" Background="{StaticResource Border.Brush}" Width="1" Grid.Column="2"/> |
|||
<Border HorizontalAlignment="Left" Background="{StaticResource Border.Brush}" Width="1" Grid.Column="3"/> |
|||
<Border HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Width="1" Grid.Column="3"/> |
|||
<TextBlock Grid.Column="0" Text="打包人" Style="{StaticResource middleTextBlock}"/> |
|||
<TextBlock Grid.Column="1" Text="任务量" Style="{StaticResource middleTextBlock}"/> |
|||
<TextBlock Grid.Column="2" Text="操作" Style="{StaticResource middleTextBlock}"/> |
|||
|
|||
|
|||
</Grid> |
|||
<StackPanel Grid.Row="1" Orientation="Vertical" Background="Transparent"> |
|||
<ListBox Name="basic_Listbox" |
|||
ItemsSource="{Binding PackUserModelList,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" |
|||
ItemContainerStyle="{StaticResource NoBgListBoxItemStyle}" |
|||
BorderBrush="{StaticResource Border.Brush}" |
|||
BorderThickness="1,1,1,1" |
|||
Foreground="{StaticResource Text.Color}" |
|||
ScrollViewer.VerticalScrollBarVisibility="Auto" |
|||
> |
|||
<ListBox.ItemTemplate > |
|||
<DataTemplate> |
|||
<Grid Width="{Binding ActualWidth,ElementName=basic_Listbox,Converter={StaticResource widthConverter},ConverterParameter=-0}" |
|||
> |
|||
<Grid.ColumnDefinitions> |
|||
<ColumnDefinition MinWidth="80"/> |
|||
<ColumnDefinition Width="80"/> |
|||
<ColumnDefinition Width="80"/> |
|||
</Grid.ColumnDefinitions> |
|||
|
|||
|
|||
<ComboBox BorderThickness="0" VerticalContentAlignment="Center" Grid.Column="0" ItemsSource="{Binding MemberList,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" DisplayMemberPath="UserName" SelectedValuePath="Id" SelectedValue="{Binding SelectUserId}" Height="30"/> |
|||
<TextBox BorderThickness="0" VerticalContentAlignment="Center" Grid.Column="1" Height="30" Text="{Binding TaskCount,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" /> |
|||
<c:BButton Foreground="Blue" BorderBrush="{StaticResource Border.Brush}" Background="Transparent" HorizontalAlignment="Stretch" |
|||
Command="{Binding DeleteServiceCommand}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ListBox}, Path=ItemsSource}" Content="删除" Grid.Column="2"/> |
|||
|
|||
<Border HorizontalAlignment="Left" Margin="-1 0 0 0" Grid.Column="1" Width="1" Background="{StaticResource Border.Brush}"/> |
|||
<Border HorizontalAlignment="Left" Margin="-1 0 0 0" Grid.Column="2" Width="1" Background="{StaticResource Border.Brush}"/> |
|||
<Border HorizontalAlignment="Left" Margin="-1 0 0 0" Grid.Column="3" Width="1" Background="{StaticResource Border.Brush}"/> |
|||
<Border VerticalAlignment="Bottom" Grid.ColumnSpan="4" Height="1" Background="{StaticResource Border.Brush}" /> |
|||
</Grid> |
|||
</DataTemplate> |
|||
</ListBox.ItemTemplate> |
|||
</ListBox> |
|||
<c:BButton Content="添加" Foreground="Blue" BorderThickness="1" BorderBrush="{StaticResource Border.Brush}" Background="Transparent" HorizontalAlignment="Stretch" |
|||
Command="{Binding AddPackUserCommand}" |
|||
/> |
|||
</StackPanel> |
|||
|
|||
</Grid> |
|||
|
|||
|
|||
<Grid Margin="20 10 20 0" > |
|||
<Grid.ColumnDefinitions> |
|||
<ColumnDefinition Width="60"/> |
|||
<ColumnDefinition/> |
|||
</Grid.ColumnDefinitions> |
|||
<TextBlock Text="耗材项目" Margin="0 0 5 0" Style="{StaticResource middleTextBlock}" /> |
|||
<Border Background="Black" Grid.Column="1" VerticalAlignment="Center" Height="1"/> |
|||
</Grid> |
|||
<Grid Margin=" 20 10 20 0"> |
|||
<Grid.RowDefinitions> |
|||
<RowDefinition/> |
|||
<RowDefinition/> |
|||
</Grid.RowDefinitions> |
|||
<Grid Height="30" Background="{StaticResource Border.Background}"> |
|||
<Grid.ColumnDefinitions> |
|||
<ColumnDefinition Width="80"/> |
|||
<ColumnDefinition/> |
|||
<ColumnDefinition Width="60"/> |
|||
<ColumnDefinition Width="80"/> |
|||
<ColumnDefinition Width="60"/> |
|||
</Grid.ColumnDefinitions> |
|||
<Border VerticalAlignment="Top" Grid.ColumnSpan="5" Height="1" Background="{StaticResource Border.Brush}" Grid.Row="0" /> |
|||
<Border VerticalAlignment="Bottom" Grid.ColumnSpan="5" Height="1" Background="{StaticResource Border.Brush}" /> |
|||
<Border HorizontalAlignment="Left" Background="{StaticResource Border.Brush}" Width="1" Grid.Column="0" /> |
|||
<Border HorizontalAlignment="Left" Background="{StaticResource Border.Brush}" Width="1" Grid.Column="1" /> |
|||
<Border HorizontalAlignment="Left" Background="{StaticResource Border.Brush}" Width="1" Grid.Column="2"/> |
|||
<Border HorizontalAlignment="Left" Background="{StaticResource Border.Brush}" Width="1" Grid.Column="3"/> |
|||
<Border HorizontalAlignment="Left" Background="{StaticResource Border.Brush}" Width="1" Grid.Column="4"/> |
|||
<Border HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Width="1" Grid.Column="4"/> |
|||
|
|||
<TextBlock Grid.Column="0" Text="耗材类型" Style="{StaticResource middleTextBlock}"/> |
|||
<TextBlock Grid.Column="1" Text="耗材型号" Style="{StaticResource middleTextBlock}"/> |
|||
<TextBlock Grid.Column="2" Text="单价" Style="{StaticResource middleTextBlock}"/> |
|||
<StackPanel Orientation="Horizontal" Grid.Column="3" HorizontalAlignment="Center" VerticalAlignment="Center"> |
|||
<TextBlock Text="数量" Style="{StaticResource middleTextBlock}" /> |
|||
<Button BorderThickness="0" Content="批量" Margin="5 0 0 0" VerticalAlignment="Center" Background="Transparent" Foreground="Blue" |
|||
Command="{Binding SetAllCountCommand}" |
|||
CommandParameter="{Binding ElementName=consumable_listBox}" |
|||
/> |
|||
</StackPanel> |
|||
<TextBlock Grid.Column="4" Text="操作" Style="{StaticResource middleTextBlock}"/> |
|||
|
|||
|
|||
</Grid> |
|||
<StackPanel Grid.Row="1" Grid.ColumnSpan="3" Orientation="Vertical" > |
|||
<ListBox Name="consumable_listBox" |
|||
ItemsSource="{Binding ConsumableServiceList}" |
|||
ItemContainerStyle="{StaticResource NoBgListBoxItemStyle}" |
|||
BorderBrush="{StaticResource Border.Brush}" |
|||
BorderThickness="1,1,1,0" |
|||
Foreground="{StaticResource Text.Color}" |
|||
ScrollViewer.VerticalScrollBarVisibility="Auto" |
|||
> |
|||
|
|||
<ListBox.ItemTemplate> |
|||
<DataTemplate> |
|||
<Grid Width="{Binding ActualWidth,ElementName=consumable_listBox,Converter={StaticResource widthConverter},ConverterParameter=-0}" |
|||
> |
|||
<Grid.ColumnDefinitions> |
|||
<ColumnDefinition Width="80"/> |
|||
<ColumnDefinition/> |
|||
<ColumnDefinition Width="60"/> |
|||
<ColumnDefinition Width="80"/> |
|||
<ColumnDefinition Width="60"/> |
|||
</Grid.ColumnDefinitions> |
|||
<ComboBox Margin="1" Grid.Column="0" BorderThickness="0" VerticalContentAlignment="Center" ItemsSource="{Binding ConsumableTypeList}" Text="{Binding ConsumableType}" Height="30"/> |
|||
<ComboBox Margin="1" Grid.Column="1" BorderThickness="0" VerticalContentAlignment="Center" |
|||
ItemsSource="{Binding ConsumableItemList}" Text="{Binding ConsumableItem}" DisplayMemberPath="ConsumableName" |
|||
SelectedValue="{Binding SelectId}" SelectedValuePath="ConsumableId" Height="30"/> |
|||
<Grid Grid.Column="2" Background="{StaticResource Border.Background}"> |
|||
<TextBlock Style="{StaticResource middleTextBlock}" Text="{Binding ConsumablePrice}"/> |
|||
</Grid> |
|||
<TextBox Margin="1" BorderThickness="0" VerticalContentAlignment="Center" Grid.Column="3" Height="30" Text="{Binding TaskCount,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" /> |
|||
<c:BButton Foreground="Blue" BorderBrush="{StaticResource Border.Brush}" Background="Transparent" HorizontalAlignment="Stretch" |
|||
Command="{Binding DeleteServiceCommand}" |
|||
Visibility="{Binding DataContext.IsConsumableTypeListEnable,RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type c:BWindow}},Converter={StaticResource objConverter},ConverterParameter=true:Visible:Collapsed}" |
|||
CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ListBox}, Path=ItemsSource}" Content="删除" Grid.Column="4"/> |
|||
|
|||
<Border HorizontalAlignment="Left" Margin="-1 0 0 0" Grid.Column="1" Width="1" Background="{StaticResource Border.Brush}"/> |
|||
<Border HorizontalAlignment="Left" Margin="-1 0 0 0" Grid.Column="2" Width="1" Background="{StaticResource Border.Brush}"/> |
|||
<Border HorizontalAlignment="Left" Margin="-1 0 0 0" Grid.Column="3" Width="1" Background="{StaticResource Border.Brush}"/> |
|||
<Border HorizontalAlignment="Left" Margin="-1 0 0 0" Grid.Column="4" Width="1" Background="{StaticResource Border.Brush}"/> |
|||
<Border Visibility="Visible" VerticalAlignment="Bottom" Grid.ColumnSpan="5" Height="1" Background="{StaticResource Border.Brush}" /> |
|||
</Grid> |
|||
</DataTemplate> |
|||
</ListBox.ItemTemplate> |
|||
</ListBox> |
|||
<c:BButton Content="添加" Foreground="Blue" BorderThickness="1" BorderBrush="{StaticResource Border.Brush}" Background="Transparent" HorizontalAlignment="Stretch" |
|||
Visibility="{Binding IsConsumableTypeListEnable,Converter={StaticResource objConverter},ConverterParameter=true:Visible:Collapsed}" Command="{Binding AddConsumableCommand}" |
|||
/> |
|||
</StackPanel> |
|||
|
|||
</Grid> |
|||
<Border BorderThickness="1" Height="40" Margin="20,10,20,10" BorderBrush="{StaticResource Border.Brush}"> |
|||
|
|||
<StackPanel Orientation="Horizontal"> |
|||
<TextBlock Style="{StaticResource middleTextBlock}" Margin="10 0 0 0"> |
|||
<Run Text="耗材收费:"/> |
|||
<Run Text="{Binding ConsumableFees}"/> |
|||
</TextBlock> |
|||
|
|||
</StackPanel> |
|||
</Border> |
|||
<Grid Margin="20 10 20 0" > |
|||
<Grid.ColumnDefinitions> |
|||
<ColumnDefinition Width="60"/> |
|||
<ColumnDefinition/> |
|||
</Grid.ColumnDefinitions> |
|||
<TextBlock Text="其他设置" Margin="0 0 5 0" Style="{StaticResource middleTextBlock}" /> |
|||
<Border Background="Black" Grid.Column="1" VerticalAlignment="Center" Height="1"/> |
|||
</Grid> |
|||
<Grid Grid.Row="1" HorizontalAlignment="Stretch" Margin="20 10 20 10"> |
|||
<Grid.ColumnDefinitions> |
|||
<ColumnDefinition Width="60"/> |
|||
<ColumnDefinition/> |
|||
<ColumnDefinition Width="100"/> |
|||
</Grid.ColumnDefinitions> |
|||
<TextBlock Text="打印机: " VerticalAlignment="Center" HorizontalAlignment="Right"/> |
|||
<Border BorderThickness="1" CornerRadius="0" Grid.Column="1" BorderBrush="{StaticResource Border.Brush}" Height="30" > |
|||
<ComboBox Name="cbPrintName" BorderThickness="0" Width="270" Height="30" HorizontalAlignment="Stretch" ItemsSource="{Binding PrintList}" Text="{Binding PrintName,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/> |
|||
|
|||
</Border> |
|||
|
|||
<c:BButton Grid.Column="2" Content="打印" HorizontalAlignment="Right" Width="100" VerticalAlignment="Stretch" |
|||
Click="BButton_Click" |
|||
/> |
|||
</Grid> |
|||
</StackPanel> |
|||
</ScrollViewer.Content> |
|||
</ScrollViewer> |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
</Grid> |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
<Grid Grid.Row="1" Grid.Column="1" Visibility="Hidden"> |
|||
<StackPanel Orientation="Vertical" Name="printArea" Width="1065" Height="800"> |
|||
|
|||
<StackPanel Orientation="Horizontal"> |
|||
<Grid Margin="20 5 0 0" HorizontalAlignment="Left" VerticalAlignment="Top" Width="200"> |
|||
<Grid.RowDefinitions> |
|||
<RowDefinition/> |
|||
<RowDefinition/> |
|||
</Grid.RowDefinitions> |
|||
<Image Height="60" Width="200" Source="{Binding TaskImage}"/> |
|||
<TextBlock Grid.Row="1" FontSize="18" Style="{StaticResource middleTextBlock}" Text="{Binding TaskId}"/> |
|||
</Grid> |
|||
<TextBlock Text="摆放地托编号:" FontSize="24" FontWeight="Bold" Style="{StaticResource middleTextBlock}" Margin="20 0 0 0"/> |
|||
<TextBlock Text="{Binding FloorDragNumber}" FontSize="24" FontWeight="Bold" Style="{StaticResource middleTextBlock}" Margin="20 0 0 0"/> |
|||
<TextBlock Text="打包人:" FontSize="24" FontWeight="Bold" Style="{StaticResource middleTextBlock}" Margin="20 0 0 0"/> |
|||
<TextBlock Text="{Binding PackUserName}" FontSize="24" FontWeight="Bold" Style="{StaticResource middleTextBlock}" Margin="20 0 0 0"/> |
|||
|
|||
<TextBlock Text="截止时间:" FontSize="24" FontWeight="Bold" Style="{StaticResource middleTextBlock}" Margin="20 0 0 0"/> |
|||
<TextBlock Text="{Binding PackTaskModel.PackCompletionOverTime,StringFormat=yyyy-MM-dd HH:mm}" FontSize="24" FontWeight="Bold" Style="{StaticResource middleTextBlock}" Margin="20 0 0 0"/> |
|||
</StackPanel> |
|||
|
|||
<Grid Margin="20 5 20 5"> |
|||
<Grid.RowDefinitions> |
|||
<RowDefinition Height="35"/> |
|||
<RowDefinition /> |
|||
</Grid.RowDefinitions> |
|||
<Grid> |
|||
<Grid.ColumnDefinitions> |
|||
<ColumnDefinition Width="280"/> |
|||
<ColumnDefinition Width="50"/> |
|||
<ColumnDefinition Width="90"/> |
|||
<ColumnDefinition Width="100"/> |
|||
<ColumnDefinition Width="100"/> |
|||
<ColumnDefinition Width="80"/> |
|||
<ColumnDefinition Width="60"/> |
|||
<ColumnDefinition MinWidth="100"/> |
|||
|
|||
</Grid.ColumnDefinitions> |
|||
<TextBlock Text="商品信息" Style="{StaticResource middleTextBlock}"/> |
|||
<TextBlock Text="数量" Grid.Column="1" Style="{StaticResource middleTextBlock}"/> |
|||
<TextBlock Text="组合类型" Grid.Column="2" Style="{StaticResource middleTextBlock}"/> |
|||
<TextBlock Text="SKU配件商品" Grid.Column="3" Style="{StaticResource middleTextBlock}"/> |
|||
<TextBlock Text="打包需求" Grid.Column="4" Style="{StaticResource middleTextBlock}"/> |
|||
<TextBlock Text="落仓" Grid.Column="5" Style="{StaticResource middleTextBlock}"/> |
|||
<TextBlock Text="合格证位置" Grid.Column="6" Style="{StaticResource middleTextBlock}"/> |
|||
<TextBlock Text="注意事项/对接备注" Grid.Column="7" Style="{StaticResource middleTextBlock}"/> |
|||
|
|||
|
|||
|
|||
|
|||
<Border Width="1" HorizontalAlignment="Left" Background="{StaticResource Border.Brush}" /> |
|||
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" /> |
|||
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="1" /> |
|||
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="2" /> |
|||
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="3" /> |
|||
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="4" /> |
|||
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="5" /> |
|||
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="6" /> |
|||
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="7" /> |
|||
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="8" /> |
|||
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="9" /> |
|||
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="10"/> |
|||
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="11" /> |
|||
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="12"/> |
|||
|
|||
<Border Height="1" VerticalAlignment="Top " Background="{StaticResource Border.Brush}" Grid.ColumnSpan="9"/> |
|||
</Grid> |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
<!--ItemsSource="{Binding OrderList}"--> |
|||
<ListBox x:Name="listbox_order" |
|||
Grid.Row="7" |
|||
ItemsSource="{Binding PackTaskList}" |
|||
ItemContainerStyle="{StaticResource NoBgListBoxItemStyle}" |
|||
BorderBrush="{StaticResource Border.Brush}" |
|||
BorderThickness="0,1,0,0" |
|||
Foreground="{StaticResource Text.Color}"> |
|||
<ListBox.ItemTemplate> |
|||
<DataTemplate> |
|||
<Grid Width="{Binding ActualWidth,ElementName=listbox_order,Converter={StaticResource widthConverter},ConverterParameter=-0}" |
|||
MinHeight="100"> |
|||
<Grid.RowDefinitions> |
|||
|
|||
<RowDefinition MinHeight="90"/> |
|||
</Grid.RowDefinitions> |
|||
|
|||
<Grid Grid.Row="0"> |
|||
<Grid.ColumnDefinitions> |
|||
<ColumnDefinition Width="280"/> |
|||
<ColumnDefinition Width="50"/> |
|||
<ColumnDefinition Width="90"/> |
|||
<ColumnDefinition Width="100"/> |
|||
<ColumnDefinition Width="100"/> |
|||
<ColumnDefinition Width="80"/> |
|||
<ColumnDefinition Width="60"/> |
|||
<ColumnDefinition MinWidth="100"/> |
|||
</Grid.ColumnDefinitions> |
|||
<Grid > |
|||
<Grid.ColumnDefinitions> |
|||
<ColumnDefinition Width="90"/> |
|||
<ColumnDefinition/> |
|||
|
|||
</Grid.ColumnDefinitions> |
|||
|
|||
<!--{Binding Logo}--> |
|||
<c:BAsyncImage UrlSource="{Binding ItemList[0].Logo}" |
|||
Width="80" DecodePixelWidth="80" |
|||
VerticalAlignment="Top" Margin="11,9,0,10" |
|||
Cursor="Hand"> |
|||
|
|||
</c:BAsyncImage> |
|||
|
|||
<StackPanel Grid.Column="1" Orientation="Vertical" Margin="8,9,0,10"> |
|||
<TextBlock Foreground="{StaticResource Text.Gray}" TextWrapping="Wrap"> |
|||
<TextBlock.ToolTip> |
|||
<ToolTip Style="{StaticResource OrderCouponToolipStyle}"> |
|||
<TextBlock Text="{Binding ItemList[0].SkuName}"/> |
|||
</ToolTip> |
|||
</TextBlock.ToolTip> |
|||
<Run Text="SKU名称:"/> |
|||
<Run Text="{Binding ItemList[0].SkuName}"/> |
|||
</TextBlock> |
|||
<TextBlock Foreground="{StaticResource Text.Gray}" TextWrapping="Wrap" Margin="0,11"> |
|||
<Run Text="品名:"/> |
|||
<Run Text="{Binding ItemList[0].BrandName}"/> |
|||
</TextBlock> |
|||
|
|||
|
|||
<StackPanel Orientation="Horizontal"> |
|||
<TextBlock Text="店铺:"/> |
|||
<c:BButton Content="{Binding ShopName}" Style="{StaticResource LinkButton}" HorizontalAlignment="Left" VerticalAlignment="Center" |
|||
Command="{Binding DataContext.CopyTextCommand,RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Page}}}" |
|||
CommandParameter="{Binding ShopName}" |
|||
Margin=" 5,0,7,0"/> |
|||
|
|||
</StackPanel> |
|||
|
|||
</StackPanel> |
|||
|
|||
</Grid> |
|||
|
|||
<Grid Grid.Column="1" > |
|||
<StackPanel VerticalAlignment="Center" HorizontalAlignment="Center"> |
|||
<TextBlock x:Name="txt_storeName" |
|||
Text="{Binding SkuCount}" |
|||
TextWrapping="Wrap" |
|||
HorizontalAlignment="Center" |
|||
/> |
|||
</StackPanel> |
|||
</Grid> |
|||
|
|||
<Grid Grid.Column="2" > |
|||
<StackPanel VerticalAlignment="Center" > |
|||
|
|||
<StackPanel Margin="5" Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Left" > |
|||
<TextBlock Text="组合类型:"/> |
|||
<TextBlock Text="{Binding PackType}"/> |
|||
</StackPanel> |
|||
<StackPanel Margin="5" Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Left" > |
|||
<TextBlock Text="配件数量:"/> |
|||
<TextBlock Text="{Binding GoodsNumber}"/> |
|||
</StackPanel> |
|||
|
|||
|
|||
|
|||
</StackPanel> |
|||
</Grid> |
|||
<Grid Grid.Column="3" > |
|||
<StackPanel VerticalAlignment="Center" HorizontalAlignment="Center"> |
|||
<TextBlock |
|||
Text="{Binding SkuTitle}" |
|||
TextWrapping="Wrap" |
|||
HorizontalAlignment="Center" |
|||
/> |
|||
|
|||
|
|||
</StackPanel> |
|||
</Grid> |
|||
<Grid Grid.Column="4" > |
|||
<StackPanel VerticalAlignment="Center" HorizontalAlignment="Left"> |
|||
<StackPanel Margin="5" Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Left" > |
|||
<TextBlock Text="基础打包:"/> |
|||
<TextBlock Text="{Binding BasicPack}"/> |
|||
</StackPanel> |
|||
<Grid Margin="5" VerticalAlignment="Center" HorizontalAlignment="Left" > |
|||
<TextBlock TextWrapping="Wrap"> |
|||
<Run Text="增量耗材:"/> |
|||
<Run Text="{Binding Increment1}"/> |
|||
</TextBlock> |
|||
</Grid> |
|||
|
|||
</StackPanel> |
|||
</Grid> |
|||
<Grid Grid.Column="5" > |
|||
<StackPanel VerticalAlignment="Center" HorizontalAlignment="Center"> |
|||
<TextBlock |
|||
Text="{Binding PositionType}" |
|||
TextWrapping="Wrap" |
|||
HorizontalAlignment="Center" |
|||
/> |
|||
|
|||
|
|||
</StackPanel> |
|||
</Grid> |
|||
|
|||
<Grid Grid.Column="6" > |
|||
<StackPanel VerticalAlignment="Center" HorizontalAlignment="Center"> |
|||
|
|||
<TextBlock |
|||
Text="{Binding CertificatePosition}" |
|||
TextWrapping="Wrap" |
|||
HorizontalAlignment="Center" |
|||
/> |
|||
|
|||
|
|||
|
|||
</StackPanel> |
|||
</Grid> |
|||
<Grid Grid.Column="7" > |
|||
<StackPanel VerticalAlignment="Center" HorizontalAlignment="Center"> |
|||
<TextBlock |
|||
Text="{Binding MarkMessage}" |
|||
TextWrapping="Wrap" |
|||
HorizontalAlignment="Center" |
|||
/> |
|||
|
|||
|
|||
</StackPanel> |
|||
</Grid> |
|||
|
|||
<Border Width="1" HorizontalAlignment="Left" Background="{StaticResource Border.Brush}" /> |
|||
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" /> |
|||
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="1" /> |
|||
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="2" /> |
|||
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="3" /> |
|||
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="4" /> |
|||
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="5" /> |
|||
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="6" /> |
|||
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="7" /> |
|||
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="8" /> |
|||
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="9" /> |
|||
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="10" /> |
|||
|
|||
|
|||
</Grid> |
|||
<Border Grid.Row="1" VerticalAlignment="Bottom" Height="1" Background="{StaticResource Border.Brush}"/> |
|||
</Grid> |
|||
|
|||
</DataTemplate> |
|||
</ListBox.ItemTemplate> |
|||
</ListBox> |
|||
</Grid> |
|||
<local:MinFeesExcelControl Margin="20 0 20 0" IsMin="true" |
|||
Visibility="{Binding PackTaskModel.IsShowFees,Converter={StaticResource objConverter},ConverterParameter=false:Collapsed:Visible}" |
|||
FeesItem="{Binding PackTaskModel.FeesItemResponse,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" |
|||
/> |
|||
<StackPanel Orientation="Horizontal" Margin="20 0 0 0" Visibility="{Binding PackTaskModel.CertificateModel,Mode=TwoWay,Converter={StaticResource objConverter},ConverterParameter=#null:Collapsed:Visible}"> |
|||
|
|||
<ListBox ItemsSource="{Binding PackTaskModel.CertificateModel,Mode=TwoWay}" |
|||
Style="{StaticResource NoScrollViewListBoxStyle}" |
|||
ItemContainerStyle="{StaticResource NoBgListBoxItemStyle}" |
|||
> |
|||
<ListBox.ItemsPanel> |
|||
<ItemsPanelTemplate> |
|||
<StackPanel Orientation="Horizontal"/> |
|||
</ItemsPanelTemplate> |
|||
</ListBox.ItemsPanel> |
|||
<ListBox.ItemTemplate> |
|||
<DataTemplate> |
|||
<StackPanel> |
|||
<local:MinCerControl model="{Binding }" |
|||
Visibility="{Binding Id ,Mode=TwoWay,Converter={StaticResource objConverter},ConverterParameter=0:Collapsed:Visible}" |
|||
/> |
|||
</StackPanel> |
|||
</DataTemplate> |
|||
</ListBox.ItemTemplate> |
|||
</ListBox> |
|||
|
|||
|
|||
</StackPanel> |
|||
<local:MinBarcodeControl Grid.Row="1" BarcodeImage="{Binding BarcodeImage,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" model="{Binding PackTaskModel.BarCodeModel, Mode=TwoWay}" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="20 0 0 0" Width="250" Height="190" |
|||
Visibility="{Binding PackTaskModel.BarCodeModel,Mode=TwoWay,Converter={StaticResource objConverter},ConverterParameter=#null:Collapsed:Visible}" |
|||
/> |
|||
|
|||
</StackPanel> |
|||
|
|||
|
|||
</Grid> |
|||
|
|||
|
|||
|
|||
<Border Height="1" Background="{StaticResource Border.Brush}" VerticalAlignment="Top" Grid.Row="2"/> |
|||
|
|||
|
|||
<Grid Grid.Row="2" > |
|||
<StackPanel HorizontalAlignment="Left" Margin="20 0 0 0" VerticalAlignment="Center" > |
|||
<TextBlock Style="{StaticResource middleTextBlock}"> |
|||
<Run Text="总收费:"/> |
|||
<Run Text="{Binding AllFees}"/> |
|||
</TextBlock> |
|||
</StackPanel> |
|||
|
|||
<c:BButton Grid.Row="2" Content="确定" Margin="0 0 20 0" HorizontalAlignment="Right" Width="100" VerticalAlignment="Stretch" |
|||
Command="{Binding UpLoadPackCommand}" |
|||
CommandParameter="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}" |
|||
/> |
|||
</Grid> |
|||
|
|||
|
|||
</Grid> |
|||
</c:BWindow> |
@ -0,0 +1,102 @@ |
|||
using BBWY.Client.Helpers; |
|||
using BBWY.Client.Models; |
|||
using BBWY.Client.ViewModels.PackTask; |
|||
using BBWY.Controls; |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.IO; |
|||
using System.Printing; |
|||
using System.Reflection; |
|||
using System.Text; |
|||
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.Shapes; |
|||
|
|||
namespace BBWY.Client.Views.PackTask |
|||
{ |
|||
/// <summary>
|
|||
/// PackDetailWindow.xaml 的交互逻辑
|
|||
/// </summary>
|
|||
public partial class PackDetailWindow : BWindow |
|||
{ |
|||
public PackDetailWindow(PackTaskModel model, Action reflashWindow) |
|||
{ |
|||
InitializeComponent(); |
|||
|
|||
var serviceViewModel = this.DataContext as PackDetailViewModel; |
|||
//加载数据
|
|||
|
|||
if (model.BarCodeModel != null) |
|||
{ |
|||
model.BarCodeModel.ShopName = model.ShopName; |
|||
} |
|||
|
|||
serviceViewModel.PackTaskModel = model; |
|||
serviceViewModel.PackTaskList = new System.Collections.ObjectModel.ObservableCollection<PackTaskModel> { model}; |
|||
serviceViewModel.FloorDragNumber = model.FloorDragNumber; |
|||
serviceViewModel.TaskCount = model.SkuCount; |
|||
serviceViewModel.TaskId = model.TaskId; |
|||
serviceViewModel.OrderId = model.OrderId; |
|||
serviceViewModel.SkuId = model.SkuId; |
|||
serviceViewModel.PackUserName = model.PackUser?.Replace("\r\n", ",")?.Replace("\n", ",")?.Replace("\r", ","); |
|||
serviceViewModel.LoadPackDatas(); |
|||
if (reflashWindow != null) |
|||
serviceViewModel.ReflashWindow = reflashWindow; |
|||
} |
|||
private void BButton_Click(object sender, RoutedEventArgs e) |
|||
{ |
|||
var localPrintServer = new LocalPrintServer(); |
|||
string printName = cbPrintName.Text.Trim(); |
|||
if (string.IsNullOrEmpty(printName)) |
|||
{ |
|||
System.Windows.MessageBox.Show("选择打印机"); |
|||
return; |
|||
} |
|||
|
|||
var printQueue = localPrintServer.GetPrintQueue(printName); |
|||
if (printQueue.IsInError) |
|||
{ |
|||
System.Windows.MessageBox.Show("打印机处于错误状态"); |
|||
return; |
|||
} |
|||
|
|||
MyPrintHelper.SetDefaultPrint(printName);//设置默认打印机
|
|||
this.printArea.Arrange(new Rect(new Point(0, 0), new Size(printArea.ActualWidth, printArea.ActualHeight))); |
|||
|
|||
System.Windows.Controls.PrintDialog printDialog = new PrintDialog(); |
|||
|
|||
//设置纸张大小
|
|||
var pageWidth = (int)Math.Ceiling(printDialog.PrintableAreaWidth); |
|||
var pageHeight = (int)Math.Ceiling(printDialog.PrintableAreaHeight); |
|||
printDialog.PrintTicket.PageMediaSize = new PageMediaSize(pageWidth, pageHeight); |
|||
|
|||
|
|||
printDialog.PrintVisual(this.printArea, "打印任务"); |
|||
|
|||
var applicationPath = System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); |
|||
string printNames = System.IO.Path.Combine(applicationPath, "printName.init"); |
|||
try |
|||
{ |
|||
if (File.Exists(printNames)) |
|||
{ |
|||
File.Delete(printNames); |
|||
} |
|||
} |
|||
catch |
|||
{ |
|||
|
|||
|
|||
} |
|||
|
|||
File.WriteAllText(printNames, cbPrintName.Text); |
|||
|
|||
|
|||
|
|||
} |
|||
} |
|||
} |
Loading…
Reference in new issue