From 7d137036dbcf65fa9fc31d2cf3ea054a77ffbc6e Mon Sep 17 00:00:00 2001 From: "GukSang.Jin" Date: Fri, 27 Feb 2026 17:46:50 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PetWash.Api/petwash.db | Bin 20480 -> 20480 bytes PetWash.Api/petwash.db-shm | Bin 32768 -> 32768 bytes PetWash.Api/petwash.db-wal | Bin 24752 -> 37112 bytes PetWashControl/ViewModels/MainViewModel.cs | 5 +- PetWashControl/Views/CompletionDialog.xaml | 93 ++++++++++++++++++ PetWashControl/Views/CompletionDialog.xaml.cs | 57 +++++++++++ 6 files changed, 153 insertions(+), 2 deletions(-) create mode 100644 PetWashControl/Views/CompletionDialog.xaml create mode 100644 PetWashControl/Views/CompletionDialog.xaml.cs diff --git a/PetWash.Api/petwash.db b/PetWash.Api/petwash.db index 251e2624475f27d699187dd19b1fb1297bbd1caf..ff520a0fcfb01a6ef480ce82934596b4e468ff54 100644 GIT binary patch delta 337 zcmZY4F-ikL6vpuxCb+D`1RFcS3*_yaH*faMOcfc@q%p06MG#4mQb?P41lbGZ2*Msf zaw72tu3EX`*7C?A%-Z7J-AB_0ex`6$Nw-%LV_s50mB3Q4Zh8)`)WVzVq$PwG{t;r#?zu* S&D+WO$dnp?PSsrAeSQP-l0~Ng delta 65 zcmV-H0KWf#paFoO0kH8e7A_0{104ZSVPk7yXJvB(4FCWDE&;KV2QXc+flUFku`yE) X11=8{lLtUbvsFN{4v|m}lMzqvasLy4 diff --git a/PetWash.Api/petwash.db-shm b/PetWash.Api/petwash.db-shm index b8dbf7cabb9dd99dc06b9e2646a63b269b14fc42..9d3c4eecc7708cacba51f7fa1bfbc04f6b9cc130 100644 GIT binary patch delta 195 zcmZo@U}|V!s+V}A%K!o_K+MR%AixQv*@1Yi;a9C#QTEpy`!?jn|8zZ*Yq!f-hWkJ! zsp^47fdL1Q{Eq~n!V~Ky1%cLrt!D$$AgkFoE(~>IWZk&%H|yqK9!$)PY#SH;WZL}A U?;jH*Q0^}iGY13b#)aJ408Je?4gdfE delta 173 zcmZo@U}|V!s+V}A%K!o_K+MR%AixHsS%G*bE6>A3MmF32`Mw_nly|WG-rQUomnHa) zRP{ikzyM_Ce(u*3bLAI<3?YnjRyqSHvjTqVrFJ#VB5IyJJaTGe*c&@9^laf E0LLFP@Bjb+ diff --git a/PetWash.Api/petwash.db-wal b/PetWash.Api/petwash.db-wal index 3e616b65a7edeb5359b02be2c7c9785c25c9c9fb..bb6784995f75e6bc1b6bb4d5836523e5bf381a66 100644 GIT binary patch delta 2273 zcmcIlO>Em_7`C0irKB++s;olQKFkhlw|chY#7PdQp5u;asq^Pb4HBeT;zC4{Zi!Pk zAPk#?loRT5nAju+sA88*TGb2VFcG9_J5)kQNN|7)hy!qe2_&Y1#P=n3nxD03hx%aa z`=0lEzvun&^WJLXe}7B}g5kV?&Hi{8!=A*@bLh^ka_*tLEnaRvd-v|8BXG;szaMO_ zeDK!BJDb7-l4d=)Z3<833$N#2)#}L1-f#NNrRQ#9_x10`;UTbbxLHmBtPt_D5#CP=yr1O*f^!rL z(t!}iabaN;3e%xrfa7?62;w80K!=@dh!gn0)-S1h-c}ME@>$_87e2lHS|M?L3~?uk z)+&hGTqLpeIk@2+v)kM_i(X7iKlxAZjN@P7v!w@3u^X?^i`Q6BO%QWz>koD)USg0F z%mv5Lp+JBaIQC$2LG71}zFepzZJ!iI8tk_*Uq_ixmGKeWrc?nRDu%kdi0aVwT0>`MH18VxBVsrT>C-L{* z(DP@@TGyugHteQjRXi1!`_7M#0r*g{A_ebM<lkXXGpp7u7^efxZ`HMLl6U+oja=X;@Az8>yz{b*(7s6j0?Qc%gZzg=h4< z-l&g~vhY|vnJ+zpw1p#d*ZHCmk6Q@zTpPF-XPEBb+W$b{kvQarM!}?2NMiQg)_}FxkaQcoP z$FrT1*3Xw=f9C4i`G!_4XhTceK#d1Lqo5tD<}2C>cy#)L8+ZAprtphe$Eiib`Vs?f z`dL0kvsli|b}{zr7X=dAqYaX^QeiJF+NkCA(rR^~RBhT`u!=^Qd1x(6m0 z{jKO9wzP5Q+L5)(3s=exxQCNF2y&4-tvkuAt&KskJ8Ycls5pj==-aN=AEfq$9)A$@ zwC_vrQ5cVtK`#`U6?F6ZNAG*KXI?B#IV5Iv0m3r-DXIyUmp8CQ| zL0U+BT^8Tkcgr7cH@0Y_IfMiv3`aA9KghG}e;q+W AhX4Qo delta 336 zcmeydkZHp~MsxFewk8JMM-mJS0t_I~Ki~I*fbtHuqb7?MHD8$<4isWW7O%Qlsq%f! zzm4Xf`1SO87@1`m0}_+76Vp?RLCRQ=l_n}@>n`k?A;}9A)MxCTd_EzLv3p~nDkGDM z{^Yj;;*+J4csDZ&h4YESEcKiCQ0LCy_5?1F4t}1=`3gRp_baUCo0z~ixkUdDTwTCi z?GMo>gEv7;&Ig;EzcG-Lk;y@SGNU2bWJadR8w90+<_Gb~fSkn&vt-VSpYtBQk7FV@!nTwFK%-m>6_vGh@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PetWashControl/Views/CompletionDialog.xaml.cs b/PetWashControl/Views/CompletionDialog.xaml.cs new file mode 100644 index 0000000..ac0ab49 --- /dev/null +++ b/PetWashControl/Views/CompletionDialog.xaml.cs @@ -0,0 +1,57 @@ +using System; +using System.Windows; +using System.Windows.Threading; + +namespace PetWashControl.Views +{ + public partial class CompletionDialog : Window + { + private DispatcherTimer? _countdownTimer; + private int _remainingSeconds = 30; + + public CompletionDialog() + { + InitializeComponent(); + StartCountdown(); + } + + private void StartCountdown() + { + _countdownTimer = new DispatcherTimer + { + Interval = TimeSpan.FromSeconds(1) + }; + _countdownTimer.Tick += CountdownTimer_Tick; + _countdownTimer.Start(); + } + + private void CountdownTimer_Tick(object? sender, EventArgs e) + { + _remainingSeconds--; + + if (_remainingSeconds > 0) + { + CountdownText.Text = $"{_remainingSeconds}秒后自动返回首页"; + } + else + { + _countdownTimer?.Stop(); + DialogResult = true; + Close(); + } + } + + private void OkButton_Click(object sender, RoutedEventArgs e) + { + _countdownTimer?.Stop(); + DialogResult = true; + Close(); + } + + protected override void OnClosed(EventArgs e) + { + _countdownTimer?.Stop(); + base.OnClosed(e); + } + } +}