private void SubmitBackupOrderDlg_Load(object sender, EventArgs e) { //车次列表 RefreshTrains(); void CartItemChanged(object s1, ItemEventArgs <BackupCartItem> e2) => RefreshTrains(); _cart.Items.Added += CartItemChanged; _cart.Items.Removed += CartItemChanged; Disposed += (s1, e1) => { _cart.Items.Added -= CartItemChanged; _cart.Items.Removed -= CartItemChanged; }; //联系人 ps.ShowAddLink = false; ps.RequestSelectPassenger += (_1, _2) => _cart.Passengers.Add(_2.PassengerRaw); ps.FilterExprList.Add(_ => _cart.Passengers.Contains(_)); RefreshPassengers(); void PassengersChanged(object s1, ItemEventArgs <Passenger> e2) => RefreshPassengers(); _cart.Passengers.Added += PassengersChanged; _cart.Passengers.Removed += PassengersChanged; Disposed += (s1, e1) => { _cart.Passengers.Added -= PassengersChanged; _cart.Passengers.Removed -= PassengersChanged; }; //提交 btnSubmit.Click += (_1, _2) => { if (pQueue.Visible) { CancelOrderQueueAsync(); } else { SubmitOrderAsync(); } }; //是否需要验证码 if (_cart.NeedSlideVc) { _slideVc = new SlideVcControl(Session, _cart.SlideToken, SlideAppId.Order); pBottom.Controls.Add(_slideVc); _slideVc.Size = new Size(310, 65); _slideVc.Location = new Point(pBottom.ClientSize.Width - _slideVc.Width - 10, (pBottom.ClientSize.Height - _slideVc.Height) / 2); _slideVc.SlideOk += (o, args) => { _slideVc.Visible = false; btnSubmit.Visible = true; _cart.SlideSig = _slideVc.Sig; _cart.SlideCSessionId = _slideVc.CfSessionId; btnSubmit.PerformClick(); }; btnSubmit.Visible = false; _slideVc.BringToFront(); } }
/// <summary> /// 订单准备成功 /// </summary> /// <param name="queueWarning">是否有排队警告</param> /// <returns></returns> protected virtual async Task PrepareSuccessAsync(bool queueWarning) { PreventCloseFlag = false; SetFocus(); VerifyCodeBox.SetIfNeedVc(SubmitOrderWorker.NeedVc); if (await CanSkipVcAsync().ConfigureAwait(true)) { //TODO 这里将延迟的流程延迟到提交订单中了。 // 现在的延迟不高 //if (SubmitOrderWorker.NeedVcTime > 0) //{ // _safeTime = SubmitOrderWorker.NeedVcTime - (SubmitOrderWorker.VcBaseTime == null ? 0 : (int)(DateTime.Now - SubmitOrderWorker.VcBaseTime.Value).TotalMilliseconds); // //_safeTime = Math.Min(ApiConfiguration.Instance.MinimalVcWaitTimeRunTime, _safeTime); // _delaySubmit = true; // Debug.WriteLine($"[VCTIME] {SubmitOrderWorker.NeedVcTime} [BASETIME] {SubmitOrderWorker.VcBaseTime?.ToString("O")} [DELAYTIME] {_safeTime}"); // StartSafeTimeCountDown(); //} //else if (PassengerInTickets?.Count() > 0 && PassengerInTickets.All(s => s.SeatType != '\0')) { await BeginSubmitOrderAsync().ConfigureAwait(true); } else { await SafeTimeEnd().ConfigureAwait(true); } } else if (SubmitOrderWorker.NeedSlideVc) { //需要滑动验证码 if (_slideVc == null) { _slideVc = new SlideVcControl(Session, SubmitOrderWorker.SlideVcToken, SlideAppId.Order); _slideVc.SlideOk += async(sender, args) => { await SetAllowOperationAsync(true, true); SubmitOrderWorker.SlideSig = _slideVc.Sig; SubmitOrderWorker.SlideCSessionId = _slideVc.CfSessionId; _submitButton.Visible = true; _slideVc.Visible = false; await TryBeginSubmitOrderAsync(); }; VerifyCodeBox.Parent.Controls.Add(_slideVc); _slideVc.Location = VerifyCodeBox.Location + new Size(0, VerifyCodeBox.Size.Height - _slideVc.Height); _slideVc.BringToFront(); } else { _slideVc.Token = SubmitOrderWorker.SlideVcToken; } VerifyCodeBox.Visible = false; _submitButton.Visible = false; await OrderInitSuccessAsync(true).ConfigureAwait(true); } else if (Session.LastVerifyCode != null) { VerifyCodeBox.ValidateImage = Properties.Resources.img_preinput; SubmitOrderWorker.RandCode = Session.LastVerifyCode; await TryBeginSubmitOrderAsync().ConfigureAwait(true); } else { VerifyCodeBox.Visible = false; if (_slideVc != null) { _slideVc.Visible = false; } _submitButton.Visible = true; await OrderInitSuccessAsync(SubmitOrderWorker.NeedVc).ConfigureAwait(true); } }