|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.ComponentModel;
|
|
|
using System.Drawing;
|
|
|
using System.Data;
|
|
|
using System.Linq;
|
|
|
using System.Text;
|
|
|
using System.Windows.Forms;
|
|
|
using POSV.Card;
|
|
|
using POSV.Bean;
|
|
|
using POSV.Bill;
|
|
|
using POSV.Utils;
|
|
|
using DevComponents.DotNetBar.Controls;
|
|
|
using DevComponents.DotNetBar.Metro;
|
|
|
using DevComponents.DotNetBar;
|
|
|
using POSV.Component;
|
|
|
using System.Threading.Tasks;
|
|
|
using System.Threading;
|
|
|
using POS.Language.Language;
|
|
|
|
|
|
namespace POSV.Business
|
|
|
{
|
|
|
public partial class MemberPanelEx : AbstractFlyoutPanelEx
|
|
|
{
|
|
|
/// <summary>
|
|
|
/// 当前会员选择的会员卡
|
|
|
/// </summary>
|
|
|
private MemberCard _currentCard = null;
|
|
|
|
|
|
/// <summary>
|
|
|
/// 会员卡参数配置规则
|
|
|
/// </summary>
|
|
|
private MemberCardItem _currentCardItem = null;
|
|
|
|
|
|
/// <summary>
|
|
|
/// 当前读卡的方式
|
|
|
/// </summary>
|
|
|
private MemberCardReadType _currentReadCardType = MemberCardReadType.手机号码;
|
|
|
|
|
|
/// <summary>
|
|
|
/// 会员卡操作
|
|
|
/// </summary>
|
|
|
private MemberCardOperator _currentOperator = MemberCardOperator.会员刷卡;
|
|
|
|
|
|
/// <summary>
|
|
|
/// 当前会员对象,操作员输入条件后获取的对象
|
|
|
/// </summary>
|
|
|
private MemberInfoQueryResponse _currentMemberInfo = null;
|
|
|
|
|
|
/// <summary>
|
|
|
/// 是否是M1读卡
|
|
|
/// </summary>
|
|
|
private bool isM1Card = false;
|
|
|
|
|
|
private bool _lock = false;
|
|
|
|
|
|
public MemberPanelEx(MemberInfoQueryResponse member)
|
|
|
{
|
|
|
InitializeComponent();
|
|
|
|
|
|
this._currentMemberInfo = member;
|
|
|
|
|
|
if (member != null)
|
|
|
{
|
|
|
this._currentCard = member.CurrentCard;
|
|
|
}
|
|
|
|
|
|
this.tabCardControl.TabsVisible = false;
|
|
|
|
|
|
}
|
|
|
|
|
|
public override void CloseFlyout()
|
|
|
{
|
|
|
base.CloseFlyout();
|
|
|
_lock = false;
|
|
|
//中止读卡
|
|
|
CardOperateUtils.Instance.TerminationCardRead();
|
|
|
//中止读卡
|
|
|
CardOperateUtilsOther.Instance.TerminationCardRead();
|
|
|
}
|
|
|
protected override void OnLoad(EventArgs e)
|
|
|
{
|
|
|
base.OnLoad(e);
|
|
|
|
|
|
SetStyle(ControlStyles.Selectable, true);
|
|
|
|
|
|
//会员卡号
|
|
|
this.txtCardNo.Multiline = false;
|
|
|
this.txtCardNo.Focus();
|
|
|
this.txtCardNo.Select();
|
|
|
|
|
|
//主界面没有刷卡
|
|
|
if (this._currentMemberInfo == null)
|
|
|
{
|
|
|
this._currentOperator = MemberCardOperator.会员刷卡;
|
|
|
|
|
|
this.tabCardRead.Visible = true;
|
|
|
this.tabCardSelected.Visible = false;
|
|
|
this.tabCardInfo.Visible = false;
|
|
|
|
|
|
this.tabCardControl.SelectedTab = this.tabCardRead;
|
|
|
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
this._currentOperator = MemberCardOperator.会员信息;
|
|
|
|
|
|
this.tabCardRead.Visible = false;
|
|
|
this.tabCardSelected.Visible = false;
|
|
|
this.tabCardInfo.Visible = true;
|
|
|
|
|
|
this.tabCardControl.SelectedTab = this.tabCardInfo;
|
|
|
}
|
|
|
_lock = true;
|
|
|
this.RefreshUi();
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 调整会员卡操作Tab项
|
|
|
/// </summary>
|
|
|
private void RefreshUi()
|
|
|
{
|
|
|
switch (this._currentOperator)
|
|
|
{
|
|
|
case MemberCardOperator.会员刷卡:
|
|
|
{
|
|
|
//会员规则
|
|
|
this._currentCardItem = JsonUtils.Deserialize<MemberCardItem>(Global.Instance.GlobalConfigStringValue(ConfigConstant.CASHIER_MEMBER_CARD));
|
|
|
|
|
|
if (this._currentCardItem.ListReader.Contains(MemberCardReadType.磁条卡或IC卡) && this._currentCardItem.ListType.Contains(MemberCardType.Mifare))
|
|
|
{
|
|
|
//启用M1卡,自动打开循环读卡模式
|
|
|
Task.Factory.StartNew(() =>
|
|
|
{
|
|
|
while (_lock)
|
|
|
{
|
|
|
Thread.Sleep(1000);
|
|
|
var result = CardOperateUtils.Instance.ReadCardNoContinue();
|
|
|
if (result.Item1)
|
|
|
{
|
|
|
if (result.Item2.Length == 16)
|
|
|
{
|
|
|
if (!this.IsHandleCreated || this.IsDisposed) return;
|
|
|
this.Invoke(new Action(() =>
|
|
|
{
|
|
|
this.txtCardNo.Text = result.Item2;
|
|
|
isM1Card = true;
|
|
|
//读卡成功,模拟回车事件
|
|
|
InputSimulatorUtils.SendKey(KeyCodes.Map["return"]);
|
|
|
}));
|
|
|
break;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
this.ShowMessage(lblInfo, LangProxy.ToLang("卡号非法"), true);
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
result = CardOperateUtilsOther.Instance.ReadCardNoContinue();
|
|
|
if (result.Item1)
|
|
|
{
|
|
|
if (!this.IsHandleCreated || this.IsDisposed) return;
|
|
|
this.Invoke(new Action(() =>
|
|
|
{
|
|
|
this.txtCardNo.Text = result.Item2;
|
|
|
isM1Card = true;
|
|
|
//读卡成功,模拟回车事件
|
|
|
InputSimulatorUtils.SendKey(KeyCodes.Map["return"]);
|
|
|
}));
|
|
|
break;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
this.ShowMessage(lblInfo, result.Item2, false);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
});
|
|
|
}
|
|
|
this.txtCardNo.Multiline = false;
|
|
|
//更换会员 不显示
|
|
|
this.ButtonChangeMember.Visible = false;
|
|
|
}
|
|
|
break;
|
|
|
case MemberCardOperator.会员信息:
|
|
|
{
|
|
|
//关闭读卡器
|
|
|
CardOperateUtils.Instance.TerminationCardRead();
|
|
|
//关闭读卡器
|
|
|
CardOperateUtilsOther.Instance.TerminationCardRead();
|
|
|
_lock = false;
|
|
|
//更换会员 显示
|
|
|
this.ButtonChangeMember.Visible = true;
|
|
|
|
|
|
this.lblName.Text = this._currentMemberInfo.Name;
|
|
|
this.lblMobile.Text = this._currentMemberInfo.Mobile;
|
|
|
this.lblBirthday.Text = this._currentMemberInfo.Birthday;
|
|
|
this.lblSex.Text = LangProxy.ToLang(this._currentMemberInfo.Sex == 0 ? "女" : "男");
|
|
|
this.lblSourceName.Text = this._currentMemberInfo.SourceName;
|
|
|
this.lblmemberLevelName.Text = this._currentMemberInfo.MemberLevelName;
|
|
|
|
|
|
var cardNo = string.IsNullOrEmpty(this._currentCard.FaceNo) ? this._currentCard.CardNo : this._currentCard.FaceNo;
|
|
|
this.lblCardNo.Text = CardUtils.CardNoEncrypt(cardNo);
|
|
|
|
|
|
//卡状态(1-正常;2-预售;3-挂失;4-冻结;5-销户;)
|
|
|
var cardStatus = (MemberCardStatus)Enum.ToObject(typeof(MemberCardStatus), this._currentCard.Status);
|
|
|
this.lblStatus.Text = cardStatus.ToString();
|
|
|
|
|
|
this.lblCardType.Text = this._currentCard.CardTypeName;
|
|
|
//this.lblCardLevel.Text = this._currentCard.CardLevelName;
|
|
|
this.lblBalance.Text = this._currentCard.AvailableAmount.ToString();
|
|
|
this.lblPoint.Text = this._currentCard.TotalPoint.ToString();
|
|
|
|
|
|
this.lblDiscount.Text = LangProxy.ToLang("默认原价");
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private bool VerifyInputValue()
|
|
|
{
|
|
|
if (string.IsNullOrEmpty(this.txtCardNo.Text.Trim()))
|
|
|
{
|
|
|
return false;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
return true;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 操作是否验证通过
|
|
|
/// </summary>
|
|
|
private bool PaymentVerify = false;
|
|
|
private void OnTouchBeforeClick(object sender, Component.TouchEventArgs e)
|
|
|
{
|
|
|
this.PaymentVerify = VerifyInputValue();
|
|
|
}
|
|
|
|
|
|
private void OnTouchClick(object sender, Component.TouchEventArgs e)
|
|
|
{
|
|
|
switch (e.Value)
|
|
|
{
|
|
|
case "clear":
|
|
|
//如果当前焦点控件是输入框
|
|
|
if (this.ActiveControl is TextBox)
|
|
|
{
|
|
|
var activeControl = this.ActiveControl as TextBox;
|
|
|
activeControl.Text = string.Empty;
|
|
|
RefreshUi();
|
|
|
}
|
|
|
break;
|
|
|
case "accept":
|
|
|
//验证通过
|
|
|
if (this.PaymentVerify)
|
|
|
{
|
|
|
switch (this._currentOperator)
|
|
|
{
|
|
|
case MemberCardOperator.会员刷卡:
|
|
|
{
|
|
|
var voucherNo = this.txtCardNo.Text.Trim();
|
|
|
//智能识别刷卡方式
|
|
|
var way = CardUtils.JudgeCardWay(Global.Instance.Worker.TenantId, voucherNo);
|
|
|
if (way == MemberCardNoType.未知)
|
|
|
{
|
|
|
this.ShowMessage(this.lblInfo, LangProxy.ToLang("无法识别的卡号,请确认"), true);
|
|
|
return;
|
|
|
}
|
|
|
MemberInfoQueryRequest request = new MemberInfoQueryRequest();
|
|
|
request.Keyword = voucherNo;
|
|
|
this._currentCardItem = JsonUtils.Deserialize<MemberCardItem>(Global.Instance.GlobalConfigStringValue(ConfigConstant.CASHIER_MEMBER_CARD));
|
|
|
|
|
|
|
|
|
var _bool = Global.Instance.GlobalConfigBoolValue(ConfigConstant.CASHIER_ALLOW_MEMBER_MEMBERSHIPCARDARENOTALLOWED, false);
|
|
|
if (_bool && way == MemberCardNoType.真实卡号)
|
|
|
{
|
|
|
this.ShowMessage(this.lblInfo, LangProxy.ToLang("不允许刷卡"), true);
|
|
|
return;
|
|
|
}
|
|
|
switch (way)
|
|
|
{
|
|
|
case MemberCardNoType.电子卡号:
|
|
|
{
|
|
|
if (this._currentCardItem.ListReader.Contains(MemberCardReadType.电子卡))
|
|
|
{
|
|
|
request.Property = "scanCode";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
this.ShowMessage(this.lblInfo, LangProxy.ToLang("不支持[电子卡号]方式识别会员"), true);
|
|
|
return;
|
|
|
}
|
|
|
}
|
|
|
break;
|
|
|
case MemberCardNoType.真实卡号:
|
|
|
{
|
|
|
if (this._currentCardItem.ListReader.Contains(MemberCardReadType.磁条卡或IC卡))
|
|
|
{
|
|
|
request.Property = "cardNo";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
this.ShowMessage(this.lblInfo, LangProxy.ToLang("不支持[卡号]方式识别会员"), true);
|
|
|
return;
|
|
|
}
|
|
|
}
|
|
|
break;
|
|
|
case MemberCardNoType.手机号:
|
|
|
{
|
|
|
if (this._currentCardItem.ListReader.Contains(MemberCardReadType.手机号码))
|
|
|
{
|
|
|
request.Property = "mobile";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
this.ShowMessage(this.lblInfo, LangProxy.ToLang("不支持[手机号]方式识别会员"), true);
|
|
|
return;
|
|
|
}
|
|
|
}
|
|
|
break;
|
|
|
case MemberCardNoType.卡面号:
|
|
|
{
|
|
|
if (this._currentCardItem.ListReader.Contains(MemberCardReadType.磁条卡或IC卡))
|
|
|
{
|
|
|
request.Property = "surfaceNo";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
this.ShowMessage(this.lblInfo, LangProxy.ToLang("不支持[卡号]方式识别会员"), true);
|
|
|
return;
|
|
|
}
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
|
if (!isM1Card)
|
|
|
{
|
|
|
//是否允许手工输入卡号
|
|
|
var allowInput = Global.Instance.GlobalConfigStringValue(ConfigConstant.CASHIER_ALLOW_INPUT_CARDNO, "0");
|
|
|
if ("0".Equals(allowInput) && maxChangeTime > 200 && (request.Property.Equals("surfaceNo") || request.Property.Equals("cardNo")))
|
|
|
{
|
|
|
txtCardNo.Text = "";
|
|
|
this.ShowMessage(this.lblInfo, LangProxy.ToLang("不允许手工录入卡号"), true);
|
|
|
return;
|
|
|
}
|
|
|
}
|
|
|
isM1Card = false;
|
|
|
request.ShopNo = Global.Instance.Authc.StoreNo;
|
|
|
request.WorkerNo = Global.Instance.Worker.No;
|
|
|
request.PosNo = Global.Instance.Authc.PosNo;
|
|
|
|
|
|
var resp = CardUtils.MemberInfoQuery(request);
|
|
|
//会员卡获取成功
|
|
|
if (resp.Item1)
|
|
|
{
|
|
|
//查询返回结果
|
|
|
this._currentMemberInfo = resp.Item3;
|
|
|
|
|
|
this._currentMemberInfo.GetWay = way;
|
|
|
|
|
|
if (this._currentMemberInfo.CardList.Count == 0)
|
|
|
{
|
|
|
this.ShowMessage(this.lblInfo, LangProxy.ToLang("没有可用的会员卡..."), true);
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
if (this._currentMemberInfo.CardList.Count > 1)
|
|
|
{
|
|
|
this._currentOperator = MemberCardOperator.多卡选择;
|
|
|
|
|
|
this.tabCardRead.Visible = false;
|
|
|
this.tabCardInfo.Visible = false;
|
|
|
this.tabCardSelected.Visible = true;
|
|
|
|
|
|
this.tabCardControl.SelectedTab = this.tabCardSelected;
|
|
|
|
|
|
//更换会员 显示
|
|
|
this.ButtonChangeMember.Visible = true;
|
|
|
|
|
|
this.ShowMessage(this.lblInfo, "获取到" + this._currentMemberInfo.CardList.Count + "张卡,请选择", false);
|
|
|
|
|
|
//多张会员卡,等待收银员选择
|
|
|
this._currentCard = null;
|
|
|
|
|
|
//进入多卡选择界面
|
|
|
this.BuilderSelectedCard(this._currentMemberInfo.CardList);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
//只有一张会员卡,自动选择作为当前可用会员卡
|
|
|
this._currentCard = this._currentMemberInfo.CardList[0];
|
|
|
//将当前选择会员卡赋值
|
|
|
this._currentMemberInfo.CurrentCard = this._currentCard;
|
|
|
|
|
|
//通知主界面改变
|
|
|
this.OnNotifyChanged(new FlyoutEventArgs(FlyoutAction.Notify, this._currentMemberInfo));
|
|
|
|
|
|
this._currentOperator = MemberCardOperator.会员信息;
|
|
|
|
|
|
this.tabCardRead.Visible = false;
|
|
|
this.tabCardSelected.Visible = false;
|
|
|
this.tabCardInfo.Visible = true;
|
|
|
|
|
|
this.tabCardControl.SelectedTab = this.tabCardInfo;
|
|
|
|
|
|
//更换会员 显示
|
|
|
this.ButtonChangeMember.Visible = true;
|
|
|
|
|
|
this.RefreshUi();
|
|
|
|
|
|
this.ShowMessage(this.lblInfo, LangProxy.ToLang("查看会员信息"), false);
|
|
|
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
this.ShowMessage(this.lblInfo, resp.Item2, true);
|
|
|
return;
|
|
|
}
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
break;
|
|
|
default:
|
|
|
InputSimulatorUtils.SendKey(KeyCodes.Map[e.Value]);
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private void OnChangedMemberCardClick(object sender, EventArgs e)
|
|
|
{
|
|
|
this._currentOperator = MemberCardOperator.会员刷卡;
|
|
|
|
|
|
this.tabCardRead.Visible = true;
|
|
|
this.tabCardSelected.Visible = false;
|
|
|
this.tabCardInfo.Visible = false;
|
|
|
|
|
|
this.tabCardControl.SelectedTab = this.tabCardRead;
|
|
|
|
|
|
//更换会员 不显示
|
|
|
this.ButtonChangeMember.Visible = false;
|
|
|
|
|
|
this.txtCardNo.Focus();
|
|
|
this.txtCardNo.SelectAll();
|
|
|
|
|
|
//重置会员卡参数
|
|
|
this._currentCard = null;
|
|
|
this._currentMemberInfo = null;
|
|
|
|
|
|
//通知主界面改变
|
|
|
this.OnNotifyChanged(new FlyoutEventArgs(FlyoutAction.Notify, this._currentMemberInfo));
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 构建多张会员卡选择
|
|
|
/// </summary>
|
|
|
private void BuilderSelectedCard(List<MemberCard> lists)
|
|
|
{
|
|
|
this.itemPanel.Items.Clear();
|
|
|
this.itemPanel.Font = Constant.NORMAL_FONT;
|
|
|
|
|
|
foreach (var card in lists)
|
|
|
{
|
|
|
MetroTileItem item = new MetroTileItem();
|
|
|
|
|
|
item.TileStyle.PaddingTop = 2;
|
|
|
item.TileStyle.PaddingLeft = item.TileStyle.PaddingRight = item.TileStyle.PaddingBottom = -1;
|
|
|
|
|
|
item.CheckBehavior = eMetroTileCheckBehavior.LeftMouseButtonClick;
|
|
|
item.OptionGroup = "SelectedCard";
|
|
|
item.TileSize = new Size(180, 45);
|
|
|
item.Checked = false;
|
|
|
item.TileColor = eMetroTileColor.Teal;
|
|
|
|
|
|
item.TileStyle.Font = Constant.NORMAL_FONT;
|
|
|
item.TileStyle.TextAlignment = eStyleTextAlignment.Near;
|
|
|
item.TileStyle.TextLineAlignment = eStyleTextAlignment.Near;
|
|
|
|
|
|
item.TitleTextFont = Constant.NORMAL_FONT;
|
|
|
item.TitleTextAlignment = ContentAlignment.BottomLeft;
|
|
|
|
|
|
//卡状态(1-正常;2-预售;3-挂失;4-冻结;5-销户;)
|
|
|
var cardStatus = (MemberCardStatus)Enum.ToObject(typeof(MemberCardStatus), card.Status);
|
|
|
item.Text = string.Format("{0} {1} {2}", card.CardNo, cardStatus.ToString(), this._currentMemberInfo.Name);
|
|
|
item.TitleText = string.Format(LangProxy.ToLang("余额:{0} 积分:{1}"), card.AvailableAmount, card.TotalPoint);
|
|
|
|
|
|
item.Tag = card;
|
|
|
|
|
|
item.MouseDown += (o, args) =>
|
|
|
{
|
|
|
MetroTileItem _item = o as MetroTileItem;
|
|
|
_item.Checked = true;
|
|
|
};
|
|
|
|
|
|
item.CheckedChanged += (o, args) =>
|
|
|
{
|
|
|
|
|
|
MetroTileItem _item = o as MetroTileItem;
|
|
|
if (_item.Checked)
|
|
|
{
|
|
|
MemberCard _card = _item.Tag as MemberCard;
|
|
|
|
|
|
//多张卡,操作员选择一张
|
|
|
this._currentCard = _card;
|
|
|
//将当前选择会员卡赋值
|
|
|
this._currentMemberInfo.CurrentCard = this._currentCard;
|
|
|
|
|
|
_item.TileColor = eMetroTileColor.Coffee;
|
|
|
|
|
|
//通知主界面改变
|
|
|
this.OnNotifyChanged(new FlyoutEventArgs(FlyoutAction.Notify, this._currentMemberInfo));
|
|
|
|
|
|
|
|
|
//选择会员卡后转入会员消费
|
|
|
this._currentOperator = MemberCardOperator.会员信息;
|
|
|
|
|
|
this.tabCardRead.Visible = false;
|
|
|
this.tabCardSelected.Visible = false;
|
|
|
this.tabCardInfo.Visible = true;
|
|
|
|
|
|
this.tabCardControl.SelectedTab = this.tabCardInfo;
|
|
|
|
|
|
//更换会员 显示
|
|
|
this.ButtonChangeMember.Visible = true;
|
|
|
|
|
|
this.ShowMessage(this.lblInfo, LangProxy.ToLang("查看会员信息"), false);
|
|
|
|
|
|
|
|
|
this.RefreshUi();
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
_item.TileColor = eMetroTileColor.Teal;
|
|
|
}
|
|
|
};
|
|
|
|
|
|
|
|
|
this.itemPanel.Items.Add(item);
|
|
|
}
|
|
|
|
|
|
this.itemPanel.Invalidate();
|
|
|
|
|
|
}
|
|
|
|
|
|
private void OnMemberCardEnterClick(object sender, Component.EnterEventArg e)
|
|
|
{
|
|
|
|
|
|
this.OnTouchBeforeClick(this.touchButtonX4, new TouchEventArgs("accept"));
|
|
|
|
|
|
if (this.PaymentVerify)
|
|
|
{
|
|
|
this.OnTouchClick(this.touchButtonX4, new TouchEventArgs("accept"));
|
|
|
}
|
|
|
}
|
|
|
private long maxChangeTime = 0;
|
|
|
private bool input = false;
|
|
|
private long upTime = 0;
|
|
|
/// <summary>
|
|
|
/// 监听输入框不允许输入
|
|
|
/// </summary>
|
|
|
/// <param name="sender"></param>
|
|
|
/// <param name="e"></param>
|
|
|
private void OnMemberValueChage(object sender, EnterEventArg e)
|
|
|
{
|
|
|
if (txtCardNo.Text.Length == 0)
|
|
|
{
|
|
|
maxChangeTime = 0;
|
|
|
input = false;
|
|
|
upTime = 0;
|
|
|
}
|
|
|
if (txtCardNo.Text.Length == 1)
|
|
|
{
|
|
|
upTime = DateTime.Now.ToUniversalTime().Ticks;
|
|
|
}
|
|
|
if (txtCardNo.Text.Length > 1)
|
|
|
{
|
|
|
input = true;
|
|
|
}
|
|
|
if (input)
|
|
|
{
|
|
|
var nowTime = DateTime.Now.ToUniversalTime().Ticks;
|
|
|
if ((nowTime - upTime) / 10000 > maxChangeTime)
|
|
|
{
|
|
|
maxChangeTime = (nowTime - upTime) / 10000;
|
|
|
}
|
|
|
logger.Info("输入号码耗时======>" + maxChangeTime);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private void touchButtonX13_Click(object sender, EventArgs e)
|
|
|
{
|
|
|
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}
|