From ccbe402c016d49b542375998c6304f027cf92f68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AD=8F=E5=B0=91=E9=98=B3?= <786612630@qq.com> Date: Mon, 29 Jan 2024 17:23:45 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=99=AE=E9=80=9A=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E3=80=81=E6=8E=88=E6=9D=83=E7=AE=A1=E7=90=86=E5=91=98?= =?UTF-8?q?=E5=BC=80=E9=94=81=E9=80=BB=E8=BE=91=EF=BC=8C=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E7=94=B5=E5=AD=90=E9=92=A5=E5=8C=99=E3=80=81=E6=8E=88=E6=9D=83?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=91=98=E9=83=A8=E5=88=86bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- star_lock/images/main/icon_face.png | Bin 6849 -> 5566 bytes .../main/icon_lockDetail_messageReminding.png | Bin 4884 -> 4116 bytes .../images/main/icon_lockDetail_videoLog.png | Bin 3600 -> 3109 bytes .../images/main/icon_main_authorizedAdmin.png | Bin 1485 -> 2982 bytes .../images/main/icon_main_clockingIn.png | Bin 1767 -> 3479 bytes .../images/main/icon_main_electronicKey.png | Bin 1777 -> 3339 bytes .../images/main/icon_main_fingerprint.png | Bin 3016 -> 4744 bytes star_lock/images/main/icon_main_icCard.png | Bin 3028 -> 4813 bytes .../images/main/icon_main_operatingRecord.png | Bin 1647 -> 3104 bytes star_lock/images/main/icon_main_password.png | Bin 1700 -> 3084 bytes .../images/main/icon_main_remoteControl.png | Bin 1654 -> 3107 bytes star_lock/images/main/icon_main_set.png | Bin 2135 -> 3646 bytes star_lock/lib/app_settings/app_colors.dart | 2 + .../authorizedAdmin/authorizedAdmin_page.dart | 30 +++-- .../authorizedAdminList_logic.dart | 20 +-- .../checkingInList/checkingInList_page.dart | 3 +- .../checkingInSet/checkingInSet_page.dart | 25 ++-- .../electronicKeyDetail_logic.dart | 14 ++- .../electronicKeyDetailChangeDate_logic.dart | 14 ++- .../electronicKeyList_logic.dart | 41 +++++-- .../electronicKeyList_page.dart | 98 ++++++++------- .../sendElectronicKey_logic.dart | 11 ++ .../sendElectronicKey_page.dart | 34 +++--- .../sendElectronicKey_state.dart | 2 + .../sendElectronicKeyManage_tabbar.dart | 10 ++ .../lockDetail/lockDetail_logic.dart | 80 ++++++------ .../lockDetail/lockDetail_page.dart | 115 +++++++++--------- .../lockDetail/lockDetail_state.dart | 4 +- .../lockOperatingRecord_page.dart | 6 +- .../basicInformation_page.dart | 4 +- .../editLockName/editLockName_logic.dart | 2 +- .../lockSet/lockSet/lockSet_page.dart | 8 +- .../remoteUnlocking_logic.dart | 14 +-- .../passwordKeyList_logic.dart | 3 + .../message/messageList/messageList_page.dart | 60 +++++---- star_lock/lib/network/api_provider_base.dart | 2 +- star_lock/lib/network/api_repository.dart | 22 ++-- star_lock/lib/tools/eventBusEventManage.dart | 5 + 38 files changed, 366 insertions(+), 263 deletions(-) diff --git a/star_lock/images/main/icon_face.png b/star_lock/images/main/icon_face.png index 0aa2397c84fcad5602f7d7e5dcfc9e11781e4ad3..80c7231f55184e9918ab1de8434b47b02b759c80 100644 GIT binary patch delta 2998 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 delta 4275 zcma)2f?j z4XXq7(XpV3iOcM~-n_BWKqVjfjo=5>FV*$^$Uj3P8DG+=o1@_>{}V9pRNMXbK1jjc?W-)Du61 zxj2Gfqx+PfS6E1ZXj(`ImEA1j4CI}Q7IiOz#@a#&_PQf6L3-rC;4Dn)F-x*D6H(@+ z_V*X8_3l1IG)}f{MudhPvoR08eVXmzXrZP!R#Xfa+LxM^%e)ZBujD;lS+l7TJ>+jj zDx!S%r)OLTDV3`@n8>Aj@Roivq3%TW$Ra{axd9~tBFF%ch5bGHu2QJix` zS)pR5l=J%j{_}wt7mPg5XTWe}vO$;^X+G2p3^SV;=;@UWY!E5)W+vENwV1qJeN_3={ge?Mr-nN^T6^$fBbI3;+OC7OpZjN_d~qBfZ!~D?DW(~U*QAAv}fNIvE=spDMyosvt?&BG6RDTu4rioc6<~CpdXxPNAeTii28V04B0AygG&+<8EL1j)iY4?MO0dR-^}lx6E#wX=P5 zhc+Zk17%cm>@8F>Q)MB{D!wzY-bj9V%A26{mf^mkcI!p-@1&sz9mrlScI((|;?28P z!x_f889are+{nJZw2(+aza7qEBa8lrjrP_s9W*4lktA z`;X^%(0;DI{S_z8)=SS9LTsuYUX5>nyFgJ5;!R2LzPSY#7pJUS40y(?>gm-4KBp&#hl)#0@^# z*$fxg=VZ}UC)OnClgsFDi>Y`u24u$TU!$4actFm-^hYc{yjAY+I5JKP4BRyDrAPt? zx`Kmef{C)qFtro2V7`De$Z5PU4%ZPqe;Lnz}FcK4RvGK!EEhHj=CSt zpL|j)kld*0pTOTbjo~uA{YjvGscH;Q+J@)Z_Ftu-M{Ea`c7GW)nsYEiAw^ZX8|Q1? zVFj?vIg8T+CAnsLm9k{IP);oTAT(Rn;$>bdysqG$W2#p;3>rC`1|{pD^*Ge z0J?OULBSb+_4O!84=809Fp)n+oHD?Hb~gf28S%nJwh|3xYxPvR>YjWAFTVqG@e1w1 z^3@I-i9Hi$x#%!5dakQ#70}}2RJeBgiNbXk7t71g@y@s?B9qDi{Jop~X^iWD75lL3 z>l;6+b2*(>XC~sM_U~cnATxlnK|W7td?-P%(ACN8|708i{Fk0WXVF5-gH9 zYDgrCGoPr%M=4 zI(sR(Ie8z`Z)N&UVRY7cAx+zoh6B2biym)LmQmu`HfpSreY+qH{o5c^$^!WkeD0T2yfXK4vhS#MH%q|@uh3UET>we*^t zs46EquT(RZnjuC-_g124Gq^(yV7iwT!%8h~ zRNWbMpUZ4I=+1-DPC7s;C7tob^z)*!2n_dN_0ssL$2S^V_@FBqZBI|CSU(svI(Kxm zhVnn%l_9g}^=|pVY8o_xD!A{&HJ)w%rPDjA>+T(!w`*CXhd_RV<%%JP^)@)RAW4d? z;D>Rzo*Ub;J@vS{3_Y9)x95K^mmG4zNVa4jgK7r8h=%D+3H#sIT| zn-AYP!`%aU9qgJ44FFZl%DD4_x{hWNvLTcvh8IiIhGTw<-7PD%nr$t|$~lm!S$Tj4ej0s`=Qn~ z2-C3r^OGiP<(R3#SEEul)mz3Ro&urG905lki@Zzmg&gokf!nCQymsjHAJdfs%}4_> zP5ts$?}Rz*w&o%w75JL#e5~oBA*RcfGoM*aKgzjJaf}N5Ob*v7Ph7Z(;fFQvb$Rf( zmQOQ|`aF@wZV9vT`P%$e^Bq3_?CK*q0fR)x_k3=W$yHX@l0ZRC>ZqoobZijK%c!nCv|a6-|q@f6$CR9xMJ8&~~qvr$_2 zsPxFq5qr83(p;(8F`BCwOSt+d)3$GOY5bkDq-R=bYC47&_P!!s(Ku^=+L{1;NJ#Um z#}0ZgP8J16Ko$oVszT2=;Na{pN%-VibA~@tPIf3-`Bti=+s^KiYQLqe-}v8bt%MJ< z!D`7!MAr8}lqt+2iasrN5*sg-JZd6v_b!S$aj5>>GSFQsGvy&B>|2@9P&j?F{>vh{ z%6dCYp&FgEU|AxYZ?@D z;5d@}1HN-B7D30$++`G*mKe?vJEd0O4v&Fko%v|;7L_rlPFbI0?~}KJirVF^{!4~= zZgHiYC1grR^PI|j$T~ZF3JHkEt;clN8R9U7uFqbVfn;hqO6tDJ6GS_Q zx>p2n(eDMsp)7g^ivjKhQ79F2YFUu{hi)`q5>K%Ug)((Yww~S#u2cJfOfz|>ow?qI zOTh}MgyvS02IFpr!clDXvR7XD4S%^ktY?0pOC zVnF(^&VuO@ZF%WPH94SGBf`d%m#oZ}>WB?vwyTXUR`6u&^<7f-d_zVHi`G|54QrJkfbj|0!{Fa4|u_FotMAMCRMKj z4-%Sw>$2x~hx$eowDV-{3*}Xc}NaPMl^eII4EJ;9U zRC*Gcy(~+ZkP2rHPg?5w KYWPQX5&r`ub^z1> diff --git a/star_lock/images/main/icon_lockDetail_messageReminding.png b/star_lock/images/main/icon_lockDetail_messageReminding.png index 8f170aa53a4957f83d8a546787c5e35afd56e57b..47ba9fb89e9f5db4c875bc48af61588e0a19eb6f 100644 GIT binary patch literal 4116 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 Kr=O+;Cj1i~Fm;~* literal 4884 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 literal 3600 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 BzLfv~ diff --git a/star_lock/images/main/icon_main_clockingIn.png b/star_lock/images/main/icon_main_clockingIn.png index d21ba58ebc7b1844dcf69dbc487538022227127d..b14e38af042953631f9e8ece4af4c5aac2497ee9 100644 GIT binary patch literal 3479 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 delta 1741 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 aWDhTnXk;oqSls%rNKe~HtKhWVrGEj?)Huih delta 2990 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 diff --git a/star_lock/images/main/icon_main_icCard.png b/star_lock/images/main/icon_main_icCard.png index 68930543c4b2e4da5e7a855f74a4c826a6f17304..e5131378e965f3573309ef474bd43a45dac04afb 100644 GIT binary patch literal 4813 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 F`Y(b0XDt8# delta 3002 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 diff --git a/star_lock/images/main/icon_main_operatingRecord.png b/star_lock/images/main/icon_main_operatingRecord.png index 698e0eb25d867af4f0c360cb07cb42b13e45f301..c6e1ccf56c575635acc0cf4730cef0abed332979 100644 GIT binary patch literal 3104 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 Z&JW+XyRBzmNQ3+z-qqQYUgi{%`fn;a>4X3P delta 1610 zcmV-Q2DSO181D>_IDZBqNkl1f_7{`C_%xY${r7Z34%oIwP|EHPVnP;B)z3=lL&oja>49Pt%Ct1CX8~$V?SvrYK~j zLhp2iWbf_qN!*TnLTv+VD-N-_D9GuG_#W5Z2crk6Ov?4pqf6`h*QyXIufnpeI=hb> z1VYwq2qcg9R)2Z%35}er)`{L$gRt{&gTjqESFhdtUppW4@2+rvCqdUv0-pz}>)~>} z!TC#)vzKDKG%-gbe~brBan@zWAvEZ)^rrwn7v0$ONgfzAP-8@Yg~7elW?!VN8upxs z9X|as1&gQpNWafHpB;su2Vv$HI)D9ZM1Ip07@w^&<9|tw)DGf?>lbed0O0iq=8U>| zjF!N*VuKai160(QZgxzD!WX=bg@vm4eac;^BOy zLaziU8~KjV62C%bTiDp*%Jh;hn+154Sza(y~}Kck&kKg?{0q#Xi1s^uRrUF zoR?Nf4xP5%8*D+?d^ki+gN!&fbEKz*JDgK)mcpQiP4|B|5Nzh^=4A`QA5ruN_fp76 zv12W9P02Oa7JE;ID6g?*Cjkh8KT8ej!c#jEI9h5hiiY-4@dseE1=KKHq0!sESX? zUKr9#VSh=uG0Lh9An|D_?w)YH)%^h|SgrHrPBR959w^+PQ&krpAIhsGbul(ht)bo- z<||ydVr}soH-zcK%}x^t!S1NlVPgO;*MFPWPR!Bhlx)eLgq7CO>~CdPtl5Yg!svl2 z`J-Eoo^eA|3dSThO9X;&zRFrFMnkx8#c1ZrTPva2VaiaAx0-pu3E3*|Oz;vOHe1&9 zWp&7anV&UU24PnTPmz;yRpyTKAey{rUbf1D@$mxySU$rS0dcwB8i>lPX6t9BT7R4I zE#38ej>^38-Ux_^IU4g51OSlLP1pueRc9V&q$c$Eh%7Ib^0HMHOz<)}S7Y8djYI)l zmt7Dg<8gw{v#)OcOavQ^;HDm?E!4flzEreufA8Y&f zHUj}-gUDZ{W60RueCL>)OwS{O!gJ|!Ag_FG~;^y9Ppv0i)tQiWE zbFGJ^V~N(1a>=|kIpdnc=Bpv@?nqcjmB&-h3j`W0I zjvBnWqLB+%B=4=&DXX^6HLIJ52>@WpCjEwbM0iPW{h5wH(3J500iezwPJg{S5gM`d z{k{-CM&%Trc~oKSV0#HoM<6^sK;h*PW=x(eGkD`Go!SN`teaZ-dytQ|n8}KsT?Oyv z*)Lr?T6~$kQjhHI0WwkqOPeXa#49}ri`EDD^=Ru9UmPvN)%)SK&l@QzH%&&$a8G#> z&O%FIOHqgwI|5v)HGgljWq-Kq(u0C!TXohQY*LW*hPUG*`l$?Rp&)y%QnKfS!Pep+ z=bBWg+k8PbTDwmeELyL}%rLe0LElV;w2p$bP6D3>Rdtf8tCG?xdCLsZT~nHm*2P-* zbVq>g$3l_WBT?PeA8ACZ-XH#4XTzZ&XD;4jpXgO4b6#xJL07*qo IM6N<$f)h9cZvX%Q diff --git a/star_lock/images/main/icon_main_password.png b/star_lock/images/main/icon_main_password.png index a6cb4df316f8e3ed7610debba2b8a0d490ff3044..7d18f74345a98ef330c11465effde98304ec1761 100644 GIT binary patch literal 3084 zcmbVO2~-o;8Xh1jO2LW?n_`H_o)r>FAfOPI2tkU`L_lFk1`K19{AscyEybfX-s|r2*t0H3R_Eu#nA_b6LJL9xTRz zd^ilk#fv2f8UUPK<0T+(J0wSkK@q|zI%c3si9rkbbPR{gBCsUxkU;32D1|mA`muS5 z+j&$z#?=Mw98W_Oh#@(Mju(rfWVCoXW?C-|S*t(eG3aTCd^;VpPHhm)W%;AsVJU=O zgCk;j1OfrQhKdU#ggb^oRDvCvL?99IL=v7z#*&CM5}8IMqh}5bVo%Bsrv)%PXRIM_ zbc{eQm(cL|xVSi6oIMVfM&OB5Diu#4;YlPcg22iWqU2yaHcGbYqXq^f<4J`Qxe$&* zt2KgQaEzReL45r{LM)k88zq|w6cRFgJSf2vaRfD~X&|3Bi<87iMbpOlJUk?V#88x6 zhG2=aScw3Z!!iN<7piBs|6l+KE{ip5<4=7Ni)T&9?DJtkntr& z<`nZRN(lgSl}yGucKp#-c}f24P0Q<*qn8@KqJE>u;*w4*vbMpDX|HJV=VWVov22c5 zV2A0bNY5?Q!j@0Sfs`7nMV3b11{Tq_b@Ny@#R8mJdYU3lb(3@NX_AWm{&=y#F&fu^ zX?@@P#P#+2f?+4+yGE)~_IbZFJ7DrzU3n~!nJU-*-VFGwQ(&P8*>~`aPjl8t$%4~m z=8-S1maL_~Pl|nu4}+R1BNo9KE79R9WAVibiu0&RxOFY!>gUsFs2c{d8(f=jPoI_L71tE;P$+WV3ilYb?BJk=Lmo{Q z>*wT}HI)~bPi1r{J1*=^gbP>gDZAXZBMb!$w~X&?cu)lMKTXenex_)A$B}C7l!OrK zoJ|p5*`>ek*<(a5Css)6;9qz_m9Ba!qJlub8)%S`4Nw00f~iY_$G zoG0&T_A|5!->1Fw_2&Kcs&knao|>uX9Iw30rd60=B6 zp(`?tZq_V5+3-ZSC2+FJ@iH#meutrf^)js+jdHK_3vOF)8fUd~d|k~3p3lEc&M+!p zX>t5(nR!wzJoPlVvc1+==68`(3<8aX6ALby=VcZAv`b;70W_M7SPeKno-;m_1Dp>` z)l4bb@Fr*Bl~*pFCst0zzA%1uwbn1SY;Rq))BX1>C*Z~nQ%y~pCa~LRmF}I64U&@A z+v;+cZy&=|n?yKG806wNRlbW}s+y-m&gd{U|87EVxn+n!wlnPH*g-~_Ms8emNOf5n z_f^|1XNzA(80X#{bhAh)w@fYr9~&g@Sqj(~4;OlTO>qhzu--KAT60%TaBs2uEqJ4> zw=O+B+Qy^Nt3!V;rmxeeiW#;|&+lHvc8@?#lK?`MKoD$v6#1<-&p0Y+N4S+wbmygq+lYaa2fMH%F$iiR-DEd35u{Gr7O&$L7hw zF^v*+2!XBz%&>-tLF0c&T6B8tWJbcVgo+1fLkj@=~b|8#;I$jXP0HExw+M6klai!;L{JlD`Y`ZhD9@~G=c9&X z3x?5xAk6oNme?zve8JZQWC7>X_Fta^tSvp`xFZ{T#D2s^tgk8aJ6q}f1@I00AZcsi zg!Y>u)KsO$N`u>d6rxIzvM;!)_vMm=-P)%!2*5Xv?Bh4hw6^{0tn6BYtFPPP{`JQk zlb==jcrFU)=GL|heiB5nS1`Y*%kcUw>t_2>tG?kgSND)yCyJ|mHB+s6azmwKFfmv_Z?@VkP9qAhws>zXPBSSzzm<(1uSJG)z3kXkG)mP=D^DpVk)Tm%&4 zDnU?GP>DZ`q6mmlNQlHpqR~K%8YLzT7?pxTKr9$h1 z4SNv3{gugzo#v(AV>3PU=@f$S;ddsBwwQHY8gY&9r!(_``afFOxjQ6XW5Deidd(en z9JVMv6FR^D&uixo2OPF78oIq!Sq(3I93a0)@zfxl=YNOWJ@CsPlK0n`oUDj0j8-i) zUKpX1*|Glp>v%W>O*mAnNN;ERLh~3H+e;_E$e`dla8WShy; zSpnv*HYl%BlvOI$<=MvAF}Z0LO^$~{=~=}ySwTuF6r#p~6@uh=!ROQcG>eHyoDo%6 zo={W{OMkW+3xGCeE*BMz+yd z@%*cnZMT?_ZIFAk_OxqC_++!i%*8?W7de}j!>$-lorTE@0+dxMdUpu-F7;Pond05A zZP?onTf8yB$Ix`U4^0WPml|w7V9!#eXHBxF)_;F`4l5H(DVX(Hkg`g}xZWOK92NO` zAfcJS@3p^M5?);vWbHm#3jo;b2PX>480W1vS-Hz(*j*ZLJ{G-#Xv43PSC<937_ktF zJ5n_Ai$agkCP9!j$ww;(ARI%etcIblUqB(~m@KHOhLi-sqkVPm>lR9^L&b`$^#&)y zSbs&Pwh~Mk;iFy4+UNcW;&QcZDae}SC-G)y?K$>@{e==$Gb0==u_Gy|Q2cZ}$n1x_ zJecVLVE$Tz-E|mPeRRB3ag)zr&LiGh=Z2}gGSUPm%AE(5mL%xcxi*BlOz@&Enx!SZ zjOgxh)ShDqJySKl++~qhXfdj%9ca;Mg<(N_tcI@HkURngcXbxbe`(J0Ae#?_dVf1L zQ800!&b(CyrUa?rwdFy4y3bMDjv-{!>>+OYRno1EMf*gJto8Q%eb1ed+h6?iv|@eU zl>o9P`ABFcXmOL^m8C%}2}%h*+GIL{;5h1An+wMG)2TSGczvb8(^&y>k4ZWt38vp) z+sGPAi8l-4V{Jpe900(et{QJl@PDG!%!*g@ldCE01=O~KlD!3z^8rPd+cZXJcw<^-=#1~D;}L@Ft$!9ve~iwO zy0PUr6ISKgh04q^I>Ya>-KSey!E4J67Hu(kynoYsDeE}m-%IUu@6kS#M8mp!c;{<_ z@+vqNfH=Q>{Coh)&oxe<_0=tLq4w)5#}HBy1Z9g*A}s%0KVBP znY$`@>GgfI|b;P2u4E$aQ7;r~Q2*Q|N9u5}U84^u-JuoK2S=H8{V#$<( z-%dy-F9={t#o}o(bZ#B07j9Tj2uZLt-{QSBK@1DVX6jb}0EqS5pLpwCVL@1xYmu|t zC5aR7w|{Q7#qTq*;=UB)V*)ZLLbl`9|{Wo@dXVb9SEZ^8dc?{lCB8`@21p5yV<$ zZf0!;0D!rlFMTa^_kvCu%mliEjdCC8Hdp4mP5}V(5QftTDAs%q0JDD;hOm`vW&njN z6=OI&X*7sYi)9cR06aX^G7fhWs6m@;oLM(CR)2ZNJX zA>5=*Tz4MI^J}DsngS7sK_v&N7K2D0mWb`iFw-$$5OrTDs4) zHRy?oicuU*?qj<|fj#4TQkxE4$Qx){lWhB7`LqIw+Ib5N{AY$q7wt#ew5~QM_ zyt$z91T=vZg2z*c1PY0?97m?$a37#dDNo2xoPiS2I6Ru*Zh(?-6q4H?pitTHI7-fc z1@pKRzEm#eK$3-GjsV2UBmxw2CXf_wsYoh^3`5?zOnJd%Qv4(eB}c*q{peH_q#7d> z@+cta=ITlyyQ5uQqg~KM0)dYvyF`=Gd@`Buisyq|JOTW;pDyLb8*=+`KkxtCA1D_> z-Nh08Z5~6<8H$49D^x(~N}TSAU@&faB@!a1>VU%G8tR*h;u;bQ@=(*Sg?~E&A81uE zAVm5X>HYvyNcl9g>!=6tao{uPCFS5CC;KA&_q2uP^-_F1_yuJdK`Lo?Fdvssp_&%BASL0-%)LM<-M zLyH&ZIVV^gd#k&;QhxV+ly3zj5=~8*t6Zl#*RW~LMtar0CB`f1u-=0MjKJfR zo8qyCy{D^dqVFd31z&9YqCG!0zcAyd#MR53rDG`7?D>F0`1Z=EN6*H_UoNN~d{-KF zZH{didvN&jEY+MUfos_pK(AfGK5I?ykJjbhzPIknD&Sw%;Z8P1&${HDey{VNIX0(8 zOn}ovNc_#kpd2v>|ItDd$H{M^hBErt2InwNh<6!#LttHW)|CEk^0Z$ zMoxa;%Jf)AMBup_CyU1<{Pph+xl40-~dwAmIx$6x_0~W6ui;FLHKoE^vp;$89WJ!1bGF@vUWR6qU@0VNm(iIWW`!n& zo_jHNlNFgQjtooSxGITFhGX<7y|v?=G4+Eo!Yy4BN;CZEO6sHa4Zj51N$kzzuM+^W zh;yjK)JkQESlbf14c6D;v#7SVqF1+n+<%PxB&PpJ8XSIGu>U&#D-Sl-zIp!5*9%W% znHD;B3ZMu|*A+xM7xDM*R%H{V4-2<&ud*V4me~l|6y1yNtNcZ#tTn4TjCYjH!;ubT zq=Ug(`;sn1wBHtQ>2_&e%79xBIWR2mklN4fpI8~!zcBvVg}`OYukAjPh!-Y!pXTrQ ze)Kp0$X9~C;ADBe|Jn1|4`BGF;L&e5#({IcX+6{3lGyrkz#~7bt22!SUoV+w|NMv6 zw2K`9&8nX)I;r}S+*DS*w9lm<7C|zff61UoPdF-?N zgPt3rB9fnvx0Sr_8lS)+2AbL~XZ7-Any+h8dOk(n?Rgd)R+3 z$*rxIFjA#eo`?ai*e%ruZL{nrZVG76|IzEor}ZVHo;4w_hx!8QFRdN1IgN3*4I80s z%nn@G7n+%ynZDKUcIk?T+wFsRA-WEYz*Sv%hj{C8)NikB;fIE_o!YU0Dvb%_lKrBA zx7-CSnXz~|)w`hnNKNbWRCD7SLEG1-Z)Q6fM&xiy`?a3rj3w%E%dJL&!}?uT--?Q* z#m5|NUIoVo=8vU>^tH7WIwt2_ckP*kIQXi_h@Q2X!|@B0`rZxbnVqJO!KE! zv>P`xUmZ<$@TOeZ=7+HCddUzY4<0K5>*7xi-mv3mnR%}cID3nzPvG>uUf9u+#|XBZ jtbDw$(O+r#=f@V~#$&s<4A=&d;cvVjgGE2)6}9zWrIzoT delta 1617 zcmV-X2Cn&|81@X1IDZBxNkl1f_7=WLd+1XvB1zTvVSdM~K2_T0epn_B) zDn!wW0iunlD2hrj#u!ARMxvPh(s+S@_=9RiK&yCB5tI-KQjk(SL2S8NTY9&13J&YozC(0nfH6YV?N0+41ou-+X0*@cp@x35q}n*2n$byg(t$o6Jg0u`LmK23XneFw@6`E<4D%+d!;NFOTr! zk@ze)?_7z#y?-Rm?GAs`!J!I4O;dbGQ%5O0JzcdmKF6BI^Bc4{3F9u3xhKoV@c!|s zuM7Bkzs|BvQ4Us^LN*rZTztOF%&QdJ;&UV;3X64~d`CO^d+I2K#kcv9rH&t6AA?GFkxG=eEmjk5AM4}k>3=N&Ab&9kug>u^GQ$i}Hz0p|=W5I8 zV7rK)jtcgbnQwK%V425n?tI}p#}6;f_LH7$X2HirQ9|0^Ty&b)F5>57vAQrjtK*Vn zi1t%HsKTtP&Fh*YaJb5zmTbF-BPYzjlM`TQdfUfU)CnGaJ3`j8%{;SKLu)7duN@jI zk}db^YJY4OQPp4uJ|Lz2N9Avi(mzGwlZ8R5>II*F-_}I01T!-LPBfgQB3el7)_&^O zH$z%aiS7YNN|0!1{_E@Q>f&6Vbj`ZT$J%doro0fQw9??F%iA9-NLDXn*9^qfNf$sy zs>J%of*h?D^ht6r4%ain#9aw+#)xnq*PBLd6MuYnz~I+%gJJz-MrFt+dk80SO+;NY zJh3K1(Lo)7*=wxa45|Xxk5E{Yt)e)%Hsgwjx@MTSB20O$U{SW8!RazWnDdDpzZfhl z)MyF|mdy0ybExsUQX`&N6QR6TkelPD=r@BqUJkQhb%c9g52NXV=VqvE-EWXvVAI5+ z9e*4bQQHJX2X!8~L1n`Zotj2L{-XgtSs388`}`CZ>r~dmw9yJ5@6tKZ=uBLWi`aR< ztO@35hy&$M^Uj*GaopMOka*er}Sje^~W;{VZ2d!uBeNfeiwnUL1g znXbce5hF8XRK@Ha?#}YD^n(bW?l!2b7vyb=^7dAp2Pdm+{lOq12*U?B6QbiHf~q-A zSXQW!kt%WP6+YhlQsd?q!))BGvv|77zEXoNB|7(Hsg4bX& z#>}LwAqojWd*ZZRgaphO7b`^@i*%lPH$wDpmKo}r;eizq_8f|xXy--|N4n4H<9rP5 z8+%k?vChLQBkcIa;MArPHGd?&*sC+=jd0u!n_EUJZFbjmC64W(`lAkVUI}rcA^vz$ zcZq(zTlP>1N-G5oq4;x#_LW&aH-JyJFH}c&)g7&dg?V9qIMVq?P8z1LI9uhMfQ^CS zum~_yf8}P4b>Hf3cF(mYJz3(ei9V)v@KLy{aa=?Tnhu-y=@gd=j!IPvsv8BVJ^i8#~nJ_1{KA}l-+7M=(TPlSah!om|_;fb*DL|FU@ijFlvt8dl4 P00000NkvXXu0mjf^&b@u diff --git a/star_lock/images/main/icon_main_set.png b/star_lock/images/main/icon_main_set.png index 4f23cb4e0518772720c8482471f96aaf7cf9b249..e5f802a251f16d6a35f0dd5d8028e6b00c5f9bdd 100644 GIT binary patch literal 3646 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 const Color(0xFF808080);// 首页时间灰色颜色(灰色) } diff --git a/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_page.dart b/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_page.dart index f64ad11f..4da0974d 100644 --- a/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_page.dart +++ b/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_page.dart @@ -1,8 +1,7 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:flutter_native_contact_picker/flutter_native_contact_picker.dart'; -// import 'package:flutter_pickers/pickers.dart'; -// import 'package:flutter_pickers/time_picker/model/date_mode.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:star_lock/network/api_repository.dart'; @@ -340,7 +339,7 @@ class _AuthorizedAdminPageState extends State { // 接受者信息输入框 Widget getTFWidget(bool isHaveBtn, String tfStr, int lineIndex) { return SizedBox( - height: 50.h, + height: 65.h, width: 300.w, child: Row( children: [ @@ -348,6 +347,10 @@ class _AuthorizedAdminPageState extends State { child: TextField( //输入框一行 maxLines: 1, + inputFormatters: [ + FilteringTextInputFormatter.deny('\n'), + LengthLimitingTextInputFormatter(30), + ], controller: lineIndex == 1 ? state.emailOrPhoneController : state.keyNameController, @@ -355,13 +358,24 @@ class _AuthorizedAdminPageState extends State { textAlign: TextAlign.end, decoration: InputDecoration( //输入里面输入文字内边距设置 - contentPadding: const EdgeInsets.only(top: 12.0, bottom: 8.0), + // contentPadding: const EdgeInsets.only(top: 12.0, bottom: 8.0), hintText: tfStr, - hintStyle: TextStyle( - color: AppColors.placeholderTextColor, fontSize: 22.sp), - //不需要输入框下划线 - border: InputBorder.none, + hintStyle: TextStyle(fontSize: 22.sp), + focusedBorder: const OutlineInputBorder(borderSide: BorderSide(width: 0, color: Colors.transparent)), + disabledBorder: const OutlineInputBorder(borderSide: BorderSide(width: 0, color: Colors.transparent)), + enabledBorder: const OutlineInputBorder(borderSide: BorderSide(width: 0, color: Colors.transparent)), + border: const OutlineInputBorder(borderSide: BorderSide(width: 0, color: Colors.transparent)), + contentPadding: const EdgeInsets.symmetric(vertical: 0), ), + // decoration: InputDecoration( + // //输入里面输入文字内边距设置 + // contentPadding: const EdgeInsets.only(top: 12.0, bottom: 8.0), + // hintText: tfStr, + // hintStyle: TextStyle( + // color: AppColors.placeholderTextColor, fontSize: 22.sp), + // //不需要输入框下划线 + // border: InputBorder.none, + // ), ), ), SizedBox( diff --git a/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdminList/authorizedAdminList_logic.dart b/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdminList/authorizedAdminList_logic.dart index 45f8bc3e..1bdbf550 100644 --- a/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdminList/authorizedAdminList_logic.dart +++ b/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdminList/authorizedAdminList_logic.dart @@ -9,16 +9,16 @@ class AuthorizedAdminListLogic extends BaseGetXController { //请求电子钥匙列表 Future> mockNetworkDataRequest() async { ElectronicKeyListEntity entity = await ApiRepository.to.electronicKeyList( - '0', - state.keyInfo.value.keyId.toString(), - '', - state.keyInfo.value.lockId.toString(), - '', - state.pageNum.toString(), - state.pageSize.toString(), - '0', - '0', - state.searchStr.value); + endDate: '0', + keyId: state.keyInfo.value.keyId.toString(), + keyStatus: '', + lockId: state.keyInfo.value.lockId.toString(), + operatorUid: '', + pageNo: pageNo.toString(), + pageSize: pageSize.toString(), + startDate: '0', + keyRight: '0', + searchStr:state.searchStr.value); List dataList = []; if (entity.errorCode!.codeIsSuccessful) { print("电子钥匙列表成功:${entity.data?.itemList}"); diff --git a/star_lock/lib/main/lockDetail/checkingIn/checkingInList/checkingInList_page.dart b/star_lock/lib/main/lockDetail/checkingIn/checkingInList/checkingInList_page.dart index 43c7c29d..13abfa3a 100644 --- a/star_lock/lib/main/lockDetail/checkingIn/checkingInList/checkingInList_page.dart +++ b/star_lock/lib/main/lockDetail/checkingIn/checkingInList/checkingInList_page.dart @@ -36,6 +36,7 @@ class _CheckingInListPageState extends State { haveBack: true, backgroundColor: AppColors.mainColor, actionsList: [ + (state.getKeyInfosData.value.isLockOwner == 1 && state.getKeyInfosData.value.keyRight == 1) ? GestureDetector( onTap: () async { var isDemoMode = await Storage.getBool(ifIsDemoModeOrNot); @@ -48,7 +49,7 @@ class _CheckingInListPageState extends State { logic.showToast("演示模式"); } }, - child: Image.asset('images/main/icon_lockDetail_checkIn_set.png', width: 36.w, height: 36.w,)), + child: Image.asset('images/main/icon_lockDetail_checkIn_set.png', width: 36.w, height: 36.w,)) : Container(), SizedBox(width: 30.w), ], ), diff --git a/star_lock/lib/main/lockDetail/checkingIn/checkingInSet/checkingInSet_page.dart b/star_lock/lib/main/lockDetail/checkingIn/checkingInSet/checkingInSet_page.dart index a435e424..223aea96 100644 --- a/star_lock/lib/main/lockDetail/checkingIn/checkingInSet/checkingInSet_page.dart +++ b/star_lock/lib/main/lockDetail/checkingIn/checkingInSet/checkingInSet_page.dart @@ -115,17 +115,20 @@ class _CheckingInSetPageState extends State { SizedBox( height: 30.h, ), - SubmitBtn( - btnName: - "${TranslationLoader.lanKeys!.delete!.tr}${TranslationLoader.lanKeys!.company!.tr}", - borderRadius: 20.w, - fontSize: 32.sp, - isDelete: true, - margin: EdgeInsets.only(left: 30.w, right: 30.w, top: 20.w), - padding: EdgeInsets.only(top: 20.w, bottom: 20.w), - onClick: () { - showDeletCompanyAlertDialog(context); - }), + Visibility( + visible: state.getKeyInfosData.value.isLockOwner == 1, + child: SubmitBtn( + btnName: + "${TranslationLoader.lanKeys!.delete!.tr}${TranslationLoader.lanKeys!.company!.tr}", + borderRadius: 20.w, + fontSize: 32.sp, + isDelete: true, + margin: EdgeInsets.only(left: 30.w, right: 30.w, top: 20.w), + padding: EdgeInsets.only(top: 20.w, bottom: 20.w), + onClick: () { + showDeletCompanyAlertDialog(context); + }), + ), ], ), ); diff --git a/star_lock/lib/main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetail/electronicKeyDetail_logic.dart b/star_lock/lib/main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetail/electronicKeyDetail_logic.dart index 4472602b..052e792a 100644 --- a/star_lock/lib/main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetail/electronicKeyDetail_logic.dart +++ b/star_lock/lib/main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetail/electronicKeyDetail_logic.dart @@ -5,6 +5,8 @@ import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyList/entity import 'package:star_lock/network/api_repository.dart'; import 'package:star_lock/tools/baseGetXController.dart'; +import '../../../../../tools/eventBusEventManage.dart'; + class ElectronicKeyDetailLogic extends BaseGetXController { final ElectronicKeyDetailState state = ElectronicKeyDetailState(); @@ -15,8 +17,10 @@ class ElectronicKeyDetailLogic extends BaseGetXController { state.changeNameController.text, ''); if (entity.errorCode!.codeIsSuccessful) { print("修改要是名称成功啦啦啦啦啦"); - showToast("修改成功"); - Get.back(); + showToast("修改成功", something: (){ + eventBus.fire(ElectronicKeyListRefreshUI()); + Get.back(); + }); } } @@ -26,8 +30,10 @@ class ElectronicKeyDetailLogic extends BaseGetXController { .deleteElectronicKey(state.itemData.value.keyId.toString()); if (entity.errorCode!.codeIsSuccessful) { print("删除电子钥匙成功"); - showToast("删除成功"); - Get.back(); + showToast("删除成功", something: (){ + eventBus.fire(ElectronicKeyListRefreshUI()); + Get.back(); + }); } } } diff --git a/star_lock/lib/main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetailChangeDate/electronicKeyDetailChangeDate_logic.dart b/star_lock/lib/main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetailChangeDate/electronicKeyDetailChangeDate_logic.dart index 360de109..4a901cd5 100644 --- a/star_lock/lib/main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetailChangeDate/electronicKeyDetailChangeDate_logic.dart +++ b/star_lock/lib/main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetailChangeDate/electronicKeyDetailChangeDate_logic.dart @@ -5,6 +5,8 @@ import 'package:star_lock/main/lockDetail/passwordKey/passwordKey_perpetual/pass import 'package:star_lock/network/api_repository.dart'; import 'package:star_lock/tools/baseGetXController.dart'; +import '../../../../../tools/eventBusEventManage.dart'; + class ElectronicKeyDetailChangeDateLogic extends BaseGetXController { final ElectronicKeyDetailChangeDateState state = ElectronicKeyDetailChangeDateState(); @@ -23,8 +25,10 @@ class ElectronicKeyDetailChangeDateLogic extends BaseGetXController { hoursEnd: state.hoursEnd.value, isCoerced: state.isCoerced.value); if (entity.errorCode!.codeIsSuccessful) { - showToast("修改成功"); - Get.back(); + showToast("修改成功", something: (){ + eventBus.fire(ElectronicKeyListRefreshUI()); + Get.back(); + }); } } @@ -40,8 +44,10 @@ class ElectronicKeyDetailChangeDateLogic extends BaseGetXController { state.startDay.value, state.weekDays.value); if (entity.errorCode!.codeIsSuccessful) { - showToast("修改成功"); - Get.back(); + showToast("修改成功", something: (){ + eventBus.fire(ElectronicKeyListRefreshUI()); + Get.back(); + }); } } } diff --git a/star_lock/lib/main/lockDetail/electronicKey/electronicKeyList/electronicKeyList_logic.dart b/star_lock/lib/main/lockDetail/electronicKey/electronicKeyList/electronicKeyList_logic.dart index cffedf02..025005bb 100644 --- a/star_lock/lib/main/lockDetail/electronicKey/electronicKeyList/electronicKeyList_logic.dart +++ b/star_lock/lib/main/lockDetail/electronicKey/electronicKeyList/electronicKeyList_logic.dart @@ -1,24 +1,28 @@ +import 'dart:async'; + import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyList/electronicKeyList_state.dart'; import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyList/entity/ElectronicKeyListEntity.dart'; import 'package:star_lock/network/api_repository.dart'; import 'package:star_lock/tools/baseGetXController.dart'; +import '../../../../tools/eventBusEventManage.dart'; + class ElectronicKeyListLogic extends BaseGetXController { final ElectronicKeyListState state = ElectronicKeyListState(); //请求电子钥匙列表 Future mockNetworkDataRequest() async { ElectronicKeyListEntity entity = await ApiRepository.to.electronicKeyList( - '0', - state.keyInfo.value.keyId.toString(), - '', - state.keyInfo.value.lockId.toString(), - '', - pageNo.toString(), - pageSize.toString(), - '0', - '0', - state.searchController.text); + endDate: '0', + keyId: state.keyInfo.value.keyId.toString(), + keyStatus: '', + lockId: state.keyInfo.value.lockId.toString(), + operatorUid: '', + pageNo: pageNo.toString(), + pageSize: pageSize.toString(), + startDate: '0', + keyRight: '0', + searchStr: state.searchController.text); if (entity.errorCode!.codeIsSuccessful) { if (pageNo == 1) { state.itemDataList.value = entity.data!.itemList!; @@ -40,6 +44,7 @@ class ElectronicKeyListLogic extends BaseGetXController { if (entity.errorCode!.codeIsSuccessful) { print("重置电子钥匙成功啦啦啦啦啦"); showToast("重置成功"); + pageNo = 1; mockNetworkDataRequest(); } } @@ -51,14 +56,27 @@ class ElectronicKeyListLogic extends BaseGetXController { if (entity.errorCode!.codeIsSuccessful) { print("删除电子钥匙成功"); showToast("删除成功"); + pageNo = 1; mockNetworkDataRequest(); } } + /// 刷新电子钥匙列表 + StreamSubscription? _getElectronicKeyListRefreshUIEvent; + void _getElectronicKeyListRefreshUIAction() { + // 蓝牙协议通知传输跟蓝牙之外的数据传输类不一样 eventBus + _getElectronicKeyListRefreshUIEvent = eventBus.on().listen((event) { + pageNo = 1; + mockNetworkDataRequest(); + }); + } + @override void onReady() { // TODO: implement onReady super.onReady(); + + _getElectronicKeyListRefreshUIAction(); } @override @@ -70,5 +88,8 @@ class ElectronicKeyListLogic extends BaseGetXController { @override void onClose() { // TODO: implement onClose + super.onClose(); + + _getElectronicKeyListRefreshUIEvent?.cancel(); } } diff --git a/star_lock/lib/main/lockDetail/electronicKey/electronicKeyList/electronicKeyList_page.dart b/star_lock/lib/main/lockDetail/electronicKey/electronicKeyList/electronicKeyList_page.dart index 59bf9242..57469de0 100644 --- a/star_lock/lib/main/lockDetail/electronicKey/electronicKeyList/electronicKeyList_page.dart +++ b/star_lock/lib/main/lockDetail/electronicKey/electronicKeyList/electronicKeyList_page.dart @@ -121,63 +121,64 @@ class _ElectronicKeyListPageState extends State { Widget _buildMainUI() { return Obx(() => state.itemDataList.value.isEmpty ? NoData(noDataHeight: 1.sh - ScreenUtil().statusBarHeight - ScreenUtil().bottomBarHeight - 190.h - 64.h) - : ListView.separated( + : SlidableAutoCloseBehavior( + child: ListView.separated( shrinkWrap: true, itemCount: state.itemDataList.value.length, itemBuilder: (c, index) { - ElectronicKeyListItem indexEntity = state.itemDataList.value[index]; - String useDateStr = ''; //使用期限 - String keyStatus = ''; //钥匙状态 + ElectronicKeyListItem indexEntity = state.itemDataList.value[index]; + String useDateStr = ''; //使用期限 + String keyStatus = ''; //钥匙状态 - //使用期限 - useDateStr = getUseDateStr(indexEntity); + //使用期限 + useDateStr = getUseDateStr(indexEntity); - //钥匙状态 - keyStatus = getKeyStatus(indexEntity.keyStatus); + //钥匙状态 + keyStatus = getKeyStatus(indexEntity.keyStatus); - //是否为管理钥匙 - bool isAdminKey = false; - if (indexEntity.keyRight == 1) { - isAdminKey = true; - } else { - isAdminKey = false; - } + //是否为管理钥匙 + bool isAdminKey = false; + if (indexEntity.keyRight == 1) { + isAdminKey = true; + } else { + isAdminKey = false; + } - return Slidable( - key:ValueKey(indexEntity.keyId), - endActionPane: ActionPane( - extentRatio: 0.2, - motion: const ScrollMotion(), - children: [ - SlidableAction( - onPressed: (BuildContext context){ - showIosTipViewDialog(context, indexEntity.keyId!.toString()); - }, - backgroundColor: Colors.red, - foregroundColor: Colors.white, - label: '删除', - ), - ], - ), - child: _electronicKeyItem('images/controls_user.png', - indexEntity.keyName!, useDateStr, keyStatus, isAdminKey, () { - Navigator.pushNamed(context, Routers.electronicKeyDetailPage, - arguments: {"itemData": indexEntity}).then((val) { - if (val != null) { - logic.mockNetworkDataRequest(); - setState(() {}); - } - }); - }), - ); + return Slidable( + key:ValueKey(indexEntity.keyId), + endActionPane: ActionPane( + extentRatio: 0.2, + motion: const ScrollMotion(), + children: [ + SlidableAction( + onPressed: (BuildContext context){ + showIosTipViewDialog(context, indexEntity.keyId!.toString()); + }, + backgroundColor: Colors.red, + foregroundColor: Colors.white, + label: '删除', + ), + ], + ), + child: _electronicKeyItem('images/controls_user.png', indexEntity.keyName!, useDateStr, keyStatus, isAdminKey, () { + Navigator.pushNamed(context, Routers.electronicKeyDetailPage, + arguments: {"itemData": indexEntity}).then((val) { + if (val != null) { + logic.mockNetworkDataRequest(); + setState(() {}); + } + }); + }), + ); }, separatorBuilder: (BuildContext context, int index) { - return const Divider( - height: 1, - color: AppColors.greyLineColor, - ); + return const Divider( + height: 1, + color: AppColors.greyLineColor, + ); }, - )); + ), + )); } Widget _buildDeleteBtn(String keyId) { @@ -269,6 +270,9 @@ class _ElectronicKeyListPageState extends State { } else if (keyStatusFlag == 110410) { //已重置 keyStatus = '已重置'; + } else if (keyStatusFlag == 110412) { + //已过期 + keyStatus = '已过期'; } return keyStatus; diff --git a/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/sendElectronicKey_logic.dart b/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/sendElectronicKey_logic.dart index 7d7577da..0aefe1b4 100644 --- a/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/sendElectronicKey_logic.dart +++ b/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/sendElectronicKey_logic.dart @@ -6,6 +6,7 @@ import 'package:star_lock/common/XSConstantMacro/XSConstantMacro.dart'; import 'package:star_lock/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/sendElectronicKey_state.dart'; import 'package:star_lock/network/api_repository.dart'; import 'package:star_lock/tools/baseGetXController.dart'; +import 'package:star_lock/tools/eventBusEventManage.dart'; import 'package:star_lock/translations/trans_lib.dart'; class SendElectronicKeyLogic extends BaseGetXController { @@ -62,6 +63,9 @@ class SendElectronicKeyLogic extends BaseGetXController { if (entity.errorCode!.codeIsSuccessful) { print('发送电子钥匙成功'); state.isSendSuccess.value = true; + state.sendSucceedType.value = int.parse(state.type.value); + resetData(); + eventBus.fire(ElectronicKeyListRefreshUI()); } else { if (entity.errorCode == 425) { //用户未注册 @@ -162,4 +166,11 @@ class SendElectronicKeyLogic extends BaseGetXController { }, ); } + + void resetData(){ + state.emailOrPhoneController.text = ""; + state.keyNameController.text = ""; + state.selectEffectiveDate = '${DateTime.now().year}-${DateTime.now().month}-${DateTime.now().day} ${DateTime.now().hour}:${DateTime.now().minute}'.obs; //默认为当前时间 + state.selectFailureDate = '${DateTime.now().year}-${DateTime.now().month}-${DateTime.now().day} ${DateTime.now().hour}:${DateTime.now().minute}'.obs; //默认为当前时间 + } } diff --git a/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/sendElectronicKey_page.dart b/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/sendElectronicKey_page.dart index 3261aa5b..405ddfe4 100644 --- a/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/sendElectronicKey_page.dart +++ b/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/sendElectronicKey_page.dart @@ -53,7 +53,7 @@ class _SendElectronicKeyPageState extends State { } Widget indexChangeWidget() { - if (state.isSendSuccess.value == true) { + if (state.isSendSuccess.value == true && state.sendSucceedType.value.toString() == widget.type) { return sendElectronicKeySucceed(); } else { switch (int.parse(widget.type)) { @@ -281,8 +281,7 @@ class _SendElectronicKeyPageState extends State { state.failureDateTime.value.hour, state.failureDateTime.value.minute); //发送钥匙请求 - if (state.emailOrPhoneController.text.isNotEmpty && - state.keyNameController.text.isNotEmpty) { + if (state.emailOrPhoneController.text.isNotEmpty && state.keyNameController.text.isNotEmpty) { if (int.parse(widget.type) == 0) { if (!startDateTime.isBefore(endDateTime) || startDateTime.isAtSameMomentAs(endDateTime)) { @@ -372,7 +371,7 @@ class _SendElectronicKeyPageState extends State { btnName: '完成', onClick: () { state.isSendSuccess.value = false; - Navigator.pop(context, true); + logic.resetData(); }), SizedBox( height: 10.h, @@ -443,7 +442,7 @@ class _SendElectronicKeyPageState extends State { maxLines: 1, inputFormatters: [ FilteringTextInputFormatter.deny('\n'), - LengthLimitingTextInputFormatter(18), + LengthLimitingTextInputFormatter(30), ], // controller: _controller, autofocus: false, @@ -508,17 +507,20 @@ class _SendElectronicKeyPageState extends State { // 远程开锁 Widget remoteUnlockingWidget() { - return Column( - children: [ - CommonItem( - leftTitel: TranslationLoader.lanKeys!.remoteUnlockingAllowed!.tr, - rightTitle: "", - isHaveRightWidget: true, - rightWidget: - SizedBox(width: 60.w, height: 50.h, child: _remoteSwitch(true)), - action: () {}), - Container(height: 10.h), - ], + return Visibility( + visible: state.keyInfo.value.lockSetting!.remoteUnlock == 1 ? true : false, + child: Column( + children: [ + CommonItem( + leftTitel: TranslationLoader.lanKeys!.remoteUnlockingAllowed!.tr, + rightTitle: "", + isHaveRightWidget: true, + rightWidget: + SizedBox(width: 60.w, height: 50.h, child: _remoteSwitch(true)), + action: () {}), + Container(height: 10.h), + ], + ), ); } diff --git a/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/sendElectronicKey_state.dart b/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/sendElectronicKey_state.dart index ffd62849..ca3f0db0 100644 --- a/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/sendElectronicKey_state.dart +++ b/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/sendElectronicKey_state.dart @@ -35,6 +35,8 @@ class SendElectronicKeyState { var weekdaysList = [].obs; var isCreateUser = false.obs; //用户未注册时传1 已注册传0 + final sendSucceedType = 0.obs; + SendElectronicKeyState() { Map map = Get.arguments; keyInfo.value = map["keyInfo"]; diff --git a/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicManageKey/sendElectronicKeyManage_tabbar.dart b/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicManageKey/sendElectronicKeyManage_tabbar.dart index 1329f520..fc4bdabd 100644 --- a/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicManageKey/sendElectronicKeyManage_tabbar.dart +++ b/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicManageKey/sendElectronicKeyManage_tabbar.dart @@ -38,6 +38,13 @@ class _SendElectronicKeyManageTabbarState vsync: this, length: _itemTabs.length, initialIndex: widget.initialIndex); + + _tabController.addListener(() { + // print("_tabController.animation!.value:${_tabController.animation!.value} _tabController.index:${_tabController.index}"); + if (_tabController.animation!.value==_tabController.index){ + FocusScope.of(context).requestFocus(FocusNode()); + } + }); } @override @@ -54,6 +61,9 @@ class _SendElectronicKeyManageTabbarState TabBar _tabBar() { return TabBar( controller: _tabController, + onTap: (index){ + FocusScope.of(context).requestFocus(FocusNode()); + }, tabs: _itemTabs.map((ItemView item) => _tab(item)).toList(), isScrollable: true, indicatorColor: Colors.red, diff --git a/star_lock/lib/main/lockDetail/lockDetail/lockDetail_logic.dart b/star_lock/lib/main/lockDetail/lockDetail/lockDetail_logic.dart index 81f9f77e..97aafcde 100644 --- a/star_lock/lib/main/lockDetail/lockDetail/lockDetail_logic.dart +++ b/star_lock/lib/main/lockDetail/lockDetail/lockDetail_logic.dart @@ -137,7 +137,10 @@ class LockDetailLogic extends BaseGetXController { case 0x16: // 正在开锁中... print("${reply.commandType}正在开锁中..."); - showToast("正在开锁中..."); + state.openLockBtnState.value = 0; + showToast("正在开锁中...", something: (){ + cancelBlueConnetctToastTimer(); + }); break; default: //失败 @@ -317,7 +320,7 @@ class LockDetailLogic extends BaseGetXController { } else { getLockNetToken(); } - + // clickPushBtnAction(); break; case 0x06: //无权限 @@ -598,38 +601,45 @@ class LockDetailLogic extends BaseGetXController { } } - // 0开锁 1长按闭锁 2密码 3卡 4指纹 5遥控 6人脸 7监控 8操作记录 9消息提醒 10设置 - clickItemBtnAction(int type){ - state.clickNextType = type; - if (state.lockUserNo == 0) { - // 电子钥匙lockUserNo为0 要先添加用户 - addUserConnectBlue(); - } else { - clickPushBtnAction(); - } - } - - clickPushBtnAction(){ - // 0开锁 1长按闭锁 2密码 3卡 4指纹 5遥控 6人脸 7监控 8操作记录 9消息提醒 10设置 - switch(state.clickNextType){ - case 0: - // 开锁 - startOpenLock(); - break; - case 1: - // 长按闭锁 - startUnLock(); - break; - case 2: - // 密码 - Get.toNamed(Routers.passwordKeyListPage, arguments: {"keyInfo": state.keyInfos.value}); - break; - case 3: - // 卡 - Get.toNamed(Routers.passwordKeyListPage, arguments: {"keyInfo": state.keyInfos.value}); - break; - } - } + // // 0开锁 1长按闭锁 2密码 3卡 4指纹 5遥控 6人脸 7监控 8操作记录 9消息提醒 10设置 + // clickItemBtnAction(int type){ + // state.clickNextType = type; + // if (state.lockUserNo == 0) { + // // 电子钥匙lockUserNo为0 要先添加用户 + // addUserConnectBlue(); + // } else { + // clickPushBtnAction(); + // } + // } + // + // clickPushBtnAction(){ + // // 0开锁 1长按闭锁 2密码 3卡 4指纹 5遥控 6人脸 7监控 8操作记录 9消息提醒 10设置 + // switch(state.clickNextType){ + // case 0: + // // 开锁 + // startOpenLock(); + // break; + // case 1: + // // 长按闭锁 + // startUnLock(); + // break; + // case 2: + // // 密码 + // Get.toNamed(Routers.passwordKeyListPage, arguments: {"keyInfo": state.keyInfos.value}); + // break; + // case 3: + // // 卡 + // Get.toNamed(Routers.passwordKeyListPage, arguments: {"keyInfo": state.keyInfos.value}); + // break; + // case 10: + // // 设置 + // Get.toNamed(Routers.lockSetPage, arguments: { + // "lockId": state.keyInfos.value.lockId, + // "isOnlyOneData": state.isOnlyOneData, + // }); + // break; + // } + // } // 获取手机联网token,根据锁设置里面获取的开锁时是否联网来判断是否调用这个接口 void getLockNetToken() async { @@ -648,6 +658,8 @@ class LockDetailLogic extends BaseGetXController { lockUserNo: state.lockUserNo.toString()); if (entity.errorCode!.codeIsSuccessful) { if (state.isOpenLockNeedOnline.value == 0) { + state.bottomBtnisUneable.value = false; + eventBus.fire(RefreshLockListInfoDataEvent()); openDoorAction(1); } else { getLockNetToken(); diff --git a/star_lock/lib/main/lockDetail/lockDetail/lockDetail_page.dart b/star_lock/lib/main/lockDetail/lockDetail/lockDetail_page.dart index ae1a5472..4e538b2b 100644 --- a/star_lock/lib/main/lockDetail/lockDetail/lockDetail_page.dart +++ b/star_lock/lib/main/lockDetail/lockDetail/lockDetail_page.dart @@ -36,12 +36,15 @@ class _LockDetailPageState extends State void initState() { // TODO: implement initState super.initState(); - Get.log("LockDetailPage initState1111"); + // Get.log("LockDetailPage initState1111"); - print("LockDetailPage isOnlyOneData==${widget.isOnlyOneData}"); state.keyInfos.value = widget.lockListInfoItemEntity; state.lockUserNo = state.keyInfos.value.lockUserNo!; - print("state.lockUserNo==${state.lockUserNo}"); + if(state.lockUserNo == 0){ + state.bottomBtnisUneable.value = true; + } + state.isOnlyOneData = widget.isOnlyOneData; + // print("state.lockUserNo==${state.lockUserNo}"); state.senderUserId = state.keyInfos.value.senderUserId!; state.isAttendance.value = state.keyInfos.value.lockSetting!.attendance!; state.isOpenLockNeedOnline.value = @@ -111,7 +114,6 @@ class _LockDetailPageState extends State } Widget topWidget() { - // KeyInfos keyInfo = widget.lockMainEntity.data!.keyInfos![0]; return Column( children: [ SizedBox(height: 50.h), @@ -300,8 +302,7 @@ class _LockDetailPageState extends State // 根据权限显示不同的底部按钮 List getBottomWidget() { - if (state.keyInfos.value.isLockOwner == 1 || - state.keyInfos.value.keyRight == 1) { + if (state.keyInfos.value.isLockOwner == 1 || state.keyInfos.value.keyRight == 1) { // 超级管理员、授权管理员 return getAllWidget(); } else { @@ -311,20 +312,24 @@ class _LockDetailPageState extends State // 普通用户 List getNormalWidget() { - var showWidgetArr = [ + var showWidgetArr = []; + // 考勤 + if (state.isAttendance.value == 1) { + showWidgetArr.add(bottomItem('images/main/icon_main_clockingIn.png', TranslationLoader.lanKeys!.checkingIn!.tr, state.bottomBtnisUneable.value, () { + Get.toNamed(Routers.checkingInListPage, + arguments: state.keyInfos.value); + })); + } // 操作记录 - bottomItem('images/main/icon_main_operatingRecord.png', TranslationLoader.lanKeys!.operatingRecord!.tr, () { - Get.toNamed(Routers.lockOperatingRecordPage, arguments: {"keyInfo": state.keyInfos.value}); - }), + showWidgetArr.add(bottomItem('images/main/icon_main_operatingRecord.png', TranslationLoader.lanKeys!.operatingRecord!.tr, state.bottomBtnisUneable.value,() { + Get.toNamed(Routers.lockOperatingRecordPage, arguments: {"keyInfo": state.keyInfos.value}); + })); // 设置 - bottomItem('images/main/icon_main_set.png', TranslationLoader.lanKeys!.set!.tr, () { - Get.toNamed(Routers.lockSetPage, arguments: { - "lockId": state.keyInfos.value.lockId, - "isOnlyOneData": widget.isOnlyOneData, - }); - }), - ]; + showWidgetArr.add(bottomItem('images/main/icon_main_set.png', TranslationLoader.lanKeys!.set!.tr, state.bottomBtnisUneable.value, () { + Get.toNamed(Routers.lockSetPage, arguments: {"lockId": state.keyInfos.value.lockId, "isOnlyOneData": state.isOnlyOneData}); + })); + return showWidgetArr; } @@ -333,30 +338,27 @@ class _LockDetailPageState extends State var showWidgetArr = []; // 考勤 if (state.isAttendance.value == 1) { - showWidgetArr.add(bottomItem('images/main/icon_main_clockingIn.png', - TranslationLoader.lanKeys!.checkingIn!.tr, () { + showWidgetArr.add(bottomItem('images/main/icon_main_clockingIn.png', TranslationLoader.lanKeys!.checkingIn!.tr, state.bottomBtnisUneable.value, () { Get.toNamed(Routers.checkingInListPage, arguments: state.keyInfos.value); })); } // 电子钥匙 - showWidgetArr.add(bottomItem('images/main/icon_main_electronicKey.png', - TranslationLoader.lanKeys!.electronicKey!.tr, () { + showWidgetArr.add(bottomItem('images/main/icon_main_electronicKey.png', TranslationLoader.lanKeys!.electronicKey!.tr, state.bottomBtnisUneable.value, () { Get.toNamed(Routers.electronicKeyListPage, arguments: {"keyInfo": state.keyInfos.value}); })); // 密码 - showWidgetArr.add(bottomItem('images/main/icon_main_password.png', - TranslationLoader.lanKeys!.password!.tr, () { + showWidgetArr.add(bottomItem('images/main/icon_main_password.png', TranslationLoader.lanKeys!.password!.tr, state.bottomBtnisUneable.value, () { Get.toNamed(Routers.passwordKeyListPage, arguments: {"keyInfo": state.keyInfos.value}); })); // ic卡 if (state.keyInfos.value.lockFeature!.icCard == 1) { - showWidgetArr.add(bottomItem('images/main/icon_main_icCard.png', TranslationLoader.lanKeys!.card!.tr, () { + showWidgetArr.add(bottomItem('images/main/icon_main_icCard.png', TranslationLoader.lanKeys!.card!.tr, state.bottomBtnisUneable.value, () { // logic.showToast("普通用户第一次需要在锁旁边操作哦。", something: () { // logic.showEasyLoading(); // }); @@ -368,8 +370,7 @@ class _LockDetailPageState extends State // 指纹 if (state.keyInfos.value.lockFeature!.fingerprint == 1) { - showWidgetArr.add(bottomItem('images/main/icon_main_fingerprint.png', - TranslationLoader.lanKeys!.fingerprint!.tr, () { + showWidgetArr.add(bottomItem('images/main/icon_main_fingerprint.png', TranslationLoader.lanKeys!.fingerprint!.tr, state.bottomBtnisUneable.value, () { Get.toNamed(Routers.fingerprintListPage, arguments: { "lockId": state.keyInfos.value.lockId, }); @@ -378,8 +379,7 @@ class _LockDetailPageState extends State // 遥控 if (state.keyInfos.value.lockFeature!.bluetoothRemoteControl == 1) { - showWidgetArr.add(bottomItem('images/main/icon_main_remoteControl.png', - TranslationLoader.lanKeys!.remoteControl!.tr, () { + showWidgetArr.add(bottomItem('images/main/icon_main_remoteControl.png', TranslationLoader.lanKeys!.remoteControl!.tr, state.bottomBtnisUneable.value, () { Get.toNamed(Routers.remoteControlListPage); })); } @@ -387,8 +387,7 @@ class _LockDetailPageState extends State //可视对讲门锁新增->人脸 if (state.keyInfos.value.lockFeature!.d3Face == 1) { showWidgetArr.add( - bottomItem('images/main/icon_face.png', - TranslationLoader.lanKeys!.humanFace!.tr, () { + bottomItem('images/main/icon_face.png', TranslationLoader.lanKeys!.humanFace!.tr, state.bottomBtnisUneable.value, () { Get.toNamed(Routers.faceList, arguments: { "lockId": state.keyInfos.value.lockId, }); // Toast.show(msg: "功能暂未开放"); @@ -399,8 +398,7 @@ class _LockDetailPageState extends State //可视对讲门锁新增->监控 if (state.keyInfos.value.lockFeature!.videoIntercom == 1) { showWidgetArr.add( - bottomItem('images/main/icon_catEyes.png', - TranslationLoader.lanKeys!.monitoring!.tr, () { + bottomItem('images/main/icon_catEyes.png', TranslationLoader.lanKeys!.monitoring!.tr, state.bottomBtnisUneable.value, () { Get.toNamed(Routers.realTimePicturePage, arguments: { "lockName": state.keyInfos.value.lockName, "isMonitoring": true @@ -409,40 +407,41 @@ class _LockDetailPageState extends State ); } - var endWiddget = [ - // 授权管理员 - bottomItem('images/main/icon_main_authorizedAdmin.png', - TranslationLoader.lanKeys!.authorizedAdmin!.tr, () { + // 授权管理员 + if(state.keyInfos.value.isLockOwner == 1){ + showWidgetArr.add(bottomItem('images/main/icon_main_authorizedAdmin.png', TranslationLoader.lanKeys!.authorizedAdmin!.tr, state.bottomBtnisUneable.value, () { Get.toNamed(Routers.authorizedAdminListPage, arguments: {"keyInfo": state.keyInfos.value}); - }), + })); + } + // bottomItem('images/main/icon_main_authorizedAdmin.png', TranslationLoader.lanKeys!.authorizedAdmin!.tr, state.bottomBtnisUneable.value, () { + // Get.toNamed(Routers.authorizedAdminListPage, + // arguments: {"keyInfo": state.keyInfos.value}); + // }) + + var endWiddget = [ // 操作记录 - bottomItem('images/main/icon_main_operatingRecord.png', - TranslationLoader.lanKeys!.operatingRecord!.tr, () { + bottomItem('images/main/icon_main_operatingRecord.png', TranslationLoader.lanKeys!.operatingRecord!.tr, state.bottomBtnisUneable.value, () { // Get.toNamed(Routers.lockOperatingRecordPage, // arguments: {"keyInfo": state.keyInfos.value}); Get.toNamed(Routers.doorLockLogPage, arguments: {"keyInfo": state.keyInfos.value}); }), // 视频日志 - bottomItem('images/main/icon_lockDetail_videoLog.png', - TranslationLoader.lanKeys!.videoLog!.tr, () { + bottomItem('images/main/icon_lockDetail_videoLog.png', TranslationLoader.lanKeys!.videoLog!.tr, state.bottomBtnisUneable.value, () { //视频日志 Get.toNamed(Routers.videoLogPage); }), // 消息提醒 - bottomItem('images/main/icon_lockDetail_messageReminding.png', - TranslationLoader.lanKeys!.messageReminding!.tr, () { + bottomItem('images/main/icon_lockDetail_messageReminding.png', TranslationLoader.lanKeys!.messageReminding!.tr, state.bottomBtnisUneable.value, () { Get.toNamed(Routers.msgNotificationPage); }), // 设置 - bottomItem( - 'images/main/icon_main_set.png', TranslationLoader.lanKeys!.set!.tr, - () { - // BlueManage().stopScan(); + bottomItem('images/main/icon_main_set.png', TranslationLoader.lanKeys!.set!.tr, state.bottomBtnisUneable.value, () { + // logic.clickItemBtnAction(10); Get.toNamed(Routers.lockSetPage, arguments: { "lockId": state.keyInfos.value.lockId, - "isOnlyOneData": widget.isOnlyOneData, + "isOnlyOneData": state.isOnlyOneData, }); }), ]; @@ -450,11 +449,14 @@ class _LockDetailPageState extends State return showWidgetArr; } - Widget bottomItem(String iconUrl, String name, Function() onClick) { + // + Widget bottomItem(String iconUrl, String name, bool isForbidden, Function() onClick) { var width = 42.w; var height = 42.h; return GestureDetector( - onTap: onClick, + onTap: isForbidden ? (){ + logic.showToast("请在锁旁边完成第一次开锁"); + } : onClick , child: Container( // height: 300.h, color: Colors.white, @@ -463,16 +465,13 @@ class _LockDetailPageState extends State children: [ SizedBox( width: width, - height: height, - child: Image.asset(iconUrl, - width: width, height: height, fit: BoxFit.fitWidth), + height: height,// isForbidden ? "${iconUrl}_uneable.png" :"${iconUrl}.png" + child: Image.asset(iconUrl, width: width, height: height, color: isForbidden ? AppColors.lockDetailBottomBtnUneable : AppColors.mainColor,fit: BoxFit.fitWidth), ), SizedBox(height: 10.w), Expanded( - child: Text(name, - style: TextStyle( - fontSize: 20.sp, color: AppColors.blackColor), - textAlign: TextAlign.center)) + child: Text(name, style: TextStyle(fontSize: 20.sp, color: isForbidden ? AppColors.lockDetailBottomBtnUneable : AppColors.blackColor), textAlign: TextAlign.center) + ) ], )), ); @@ -552,7 +551,7 @@ class _LockDetailPageState extends State child: Column( children: [ Text( - widget.lockListInfoItemEntity.lockAlias!, + state.keyInfos.value.lockAlias!, style: TextStyle( color: AppColors.placeholderTextColor, fontSize: 24.sp), ), diff --git a/star_lock/lib/main/lockDetail/lockDetail/lockDetail_state.dart b/star_lock/lib/main/lockDetail/lockDetail/lockDetail_state.dart index 7438c7b2..b088909b 100644 --- a/star_lock/lib/main/lockDetail/lockDetail/lockDetail_state.dart +++ b/star_lock/lib/main/lockDetail/lockDetail/lockDetail_state.dart @@ -21,6 +21,7 @@ class LockDetailState { String lockNetToken = ""; var lockUserNo = 0; var senderUserId = 0; + var isOnlyOneData = false; var isAttendance = 0.obs;// 是否开启考勤 var isOpenLockNeedOnline = 0.obs; // APP开锁时是否需联网 @@ -35,8 +36,7 @@ class LockDetailState { var iSOpenLock = true.obs; // 是开锁还是关锁 Timer? closedUnlockSuccessfulTimer; - // 0开锁 1长按闭锁 2密码 3卡 4指纹 5遥控 6人脸 7监控 8操作记录 9消息提醒 10设置 - var clickNextType = 0; + var bottomBtnisUneable = false.obs; // 是否不可用 //过渡动画控制器 late AnimationController animationController; diff --git a/star_lock/lib/main/lockDetail/lockOperatingRecord/lockOperatingRecord_page.dart b/star_lock/lib/main/lockDetail/lockOperatingRecord/lockOperatingRecord_page.dart index 2cabfc33..ded8cae4 100644 --- a/star_lock/lib/main/lockDetail/lockOperatingRecord/lockOperatingRecord_page.dart +++ b/star_lock/lib/main/lockDetail/lockOperatingRecord/lockOperatingRecord_page.dart @@ -34,7 +34,8 @@ class _LockOperatingRecordPageState extends State { haveBack: true, backgroundColor: AppColors.mainColor, actionsList: [ - IconButton( + (state.keyInfos.value.isLockOwner == 1 || state.keyInfos.value.keyRight == 1) + ? IconButton( icon: Image.asset( 'images/icon_bar_more.png', height: 30.h, @@ -63,7 +64,8 @@ class _LockOperatingRecordPageState extends State { logic.showToast("演示模式"); } }, - ), + ) + : Container(), ], ), body: Column( diff --git a/star_lock/lib/main/lockDetail/lockSet/basicInformation/basicInformation/basicInformation_page.dart b/star_lock/lib/main/lockDetail/lockSet/basicInformation/basicInformation/basicInformation_page.dart index 0d87eac7..411a0f81 100644 --- a/star_lock/lib/main/lockDetail/lockSet/basicInformation/basicInformation/basicInformation_page.dart +++ b/star_lock/lib/main/lockDetail/lockSet/basicInformation/basicInformation/basicInformation_page.dart @@ -91,6 +91,7 @@ class _BasicInformationPageState extends State { if (data != null) { setState(() { state.lockBasicInfo.value = data["lockBasicInfo"]; + print("state.lockBasicInfo.value.lockAlias:${state.lockBasicInfo.value.lockAlias}"); }); } })), @@ -111,8 +112,7 @@ class _BasicInformationPageState extends State { }); })), Visibility( - visible: (state.lockBasicInfo.value.isLockOwner == 1 || - state.lockBasicInfo.value.keyRight == 1) + visible: state.lockBasicInfo.value.isLockOwner == 1 ? true : false, child: CommonItem( diff --git a/star_lock/lib/main/lockDetail/lockSet/basicInformation/editLockName/editLockName_logic.dart b/star_lock/lib/main/lockDetail/lockSet/basicInformation/editLockName/editLockName_logic.dart index 4bcae544..1e5b66a9 100644 --- a/star_lock/lib/main/lockDetail/lockSet/basicInformation/editLockName/editLockName_logic.dart +++ b/star_lock/lib/main/lockDetail/lockSet/basicInformation/editLockName/editLockName_logic.dart @@ -16,8 +16,8 @@ class EditLockNameLogic extends BaseGetXController{ lockId: state.lockSetInfoData.value.lockId.toString(), lockName:state.changeLockNameController.text); if (entity.errorCode!.codeIsSuccessful) { + state.lockBasicInfo.value.lockAlias = state.changeLockNameController.text; showToast("修改成功", something: (){ - state.lockBasicInfo.value.lockAlias = state.changeLockNameController.text; eventBus.fire(LockSetChangeSetRefreshLockDetailWithType(3, state.lockBasicInfo.value.lockAlias!)); eventBus.fire(RefreshLockListInfoDataEvent()); }); diff --git a/star_lock/lib/main/lockDetail/lockSet/lockSet/lockSet_page.dart b/star_lock/lib/main/lockDetail/lockSet/lockSet/lockSet_page.dart index 8c4bb3bb..e6922ced 100644 --- a/star_lock/lib/main/lockDetail/lockSet/lockSet/lockSet_page.dart +++ b/star_lock/lib/main/lockDetail/lockSet/lockSet/lockSet_page.dart @@ -330,7 +330,7 @@ class _LockSetPageState extends State with RouteAware { }))), // 重置键 Obx(() => Visibility( - visible: state.lockFeature.value.resetSwitch == 1 ? true : false, + visible: (state.lockBasicInfo.value.isLockOwner == 1 && state.lockFeature.value.resetSwitch == 1) ? true : false, child: CommonItem( leftTitel: TranslationLoader.lanKeys!.resetButton!.tr, rightTitle: (state.lockSettingInfo.value.resetSwitch ?? 0) == 1 @@ -470,7 +470,7 @@ class _LockSetPageState extends State with RouteAware { // 考勤 Obx( () => Visibility( - visible: state.lockFeature.value.attendance == 1 ? true : false, + visible: (state.lockBasicInfo.value.isLockOwner == 1 && state.lockFeature.value.attendance == 1) ? true : false, child: CommonItem( leftTitel: TranslationLoader.lanKeys!.checkingIn!.tr, rightTitle: "", @@ -481,7 +481,7 @@ class _LockSetPageState extends State with RouteAware { // 开锁提醒 Obx( () => Visibility( - visible: state.lockFeature.value.unlockReminder == 1 ? true : false, + visible: state.lockBasicInfo.value.isLockOwner == 1 && state.lockFeature.value.unlockReminder == 1 ? true : false, child: CommonItem( leftTitel: TranslationLoader.lanKeys!.unlockReminder!.tr, rightTitle: "", @@ -492,7 +492,7 @@ class _LockSetPageState extends State with RouteAware { // APP开锁时是否需联网 Obx( () => Visibility( - visible: state.lockFeature.value.appUnlockOnline == 1 ? true : false, + visible: state.lockBasicInfo.value.isLockOwner == 1 && state.lockFeature.value.appUnlockOnline == 1 ? true : false, child: CommonItem( leftTitel: TranslationLoader .lanKeys!.whetherInternetRequiredWhenUnlocking!.tr, diff --git a/star_lock/lib/main/lockDetail/lockSet/remoteUnlocking/remoteUnlocking_logic.dart b/star_lock/lib/main/lockDetail/lockSet/remoteUnlocking/remoteUnlocking_logic.dart index 766b5243..3defb3ae 100644 --- a/star_lock/lib/main/lockDetail/lockSet/remoteUnlocking/remoteUnlocking_logic.dart +++ b/star_lock/lib/main/lockDetail/lockSet/remoteUnlocking/remoteUnlocking_logic.dart @@ -23,13 +23,13 @@ class RemoteUnlockingLogic extends BaseGetXController{ remoteUnlock:state.remoteEnable.value == 1 ? 0 : 1 ); if(entity.errorCode!.codeIsSuccessful){ - eventBus.fire(RefreshLockListInfoDataEvent()); - - state.remoteEnable.value = state.remoteEnable.value == 1 ? 0 : 1; - state.lockSetInfoData.value.lockSettingInfo!.remoteUnlock = state.remoteEnable.value; - print("state.remoteEnable.value:${state.remoteEnable.value} state.getKeyInfosData.value.remoteEnable:${state.lockSetInfoData.value.lockSettingInfo!.remoteUnlock}"); - eventBus.fire(PassCurrentLockInformationEvent(state.lockSetInfoData.value)); - showToast("操作成功"); + showToast("操作成功", something: (){ + eventBus.fire(RefreshLockListInfoDataEvent()); + state.remoteEnable.value = state.remoteEnable.value == 1 ? 0 : 1; + state.lockSetInfoData.value.lockSettingInfo!.remoteUnlock = state.remoteEnable.value; + print("state.remoteEnable.value:${state.remoteEnable.value} state.getKeyInfosData.value.remoteEnable:${state.lockSetInfoData.value.lockSettingInfo!.remoteUnlock}"); + eventBus.fire(PassCurrentLockInformationEvent(state.lockSetInfoData.value)); + }); } } diff --git a/star_lock/lib/main/lockDetail/passwordKey/passwordKeyList/passwordKeyList_logic.dart b/star_lock/lib/main/lockDetail/passwordKey/passwordKeyList/passwordKeyList_logic.dart index e62dc307..1b73dff5 100644 --- a/star_lock/lib/main/lockDetail/passwordKey/passwordKeyList/passwordKeyList_logic.dart +++ b/star_lock/lib/main/lockDetail/passwordKey/passwordKeyList/passwordKeyList_logic.dart @@ -41,6 +41,7 @@ class PasswordKeyListLogic extends BaseGetXController { if (entity.errorCode!.codeIsSuccessful) { print("重置电子钥匙成功啦啦啦啦啦"); showToast("重置成功"); + pageNo = 1; mockNetworkDataRequest(); } } @@ -52,6 +53,7 @@ class PasswordKeyListLogic extends BaseGetXController { .deleteKeyboardPwd(lockId, keyboardPwdId, deleteType); if (entity.errorCode!.codeIsSuccessful) { showToast("删除成功"); + pageNo = 1; mockNetworkDataRequest(); } } @@ -146,6 +148,7 @@ class PasswordKeyListLogic extends BaseGetXController { void _getPasswordListRefreshUIAction() { // 蓝牙协议通知传输跟蓝牙之外的数据传输类不一样 eventBus _getPasswordListRefreshUIEvent = eventBus.on().listen((event) { + pageNo = 1; mockNetworkDataRequest(); }); } diff --git a/star_lock/lib/mine/message/messageList/messageList_page.dart b/star_lock/lib/mine/message/messageList/messageList_page.dart index 30aa376e..4567aaac 100644 --- a/star_lock/lib/mine/message/messageList/messageList_page.dart +++ b/star_lock/lib/mine/message/messageList/messageList_page.dart @@ -1,4 +1,3 @@ -import 'package:easy_refresh/easy_refresh.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; @@ -6,7 +5,6 @@ import 'package:star_lock/tools/noData.dart'; import '../../../appRouters.dart'; import '../../../app_settings/app_colors.dart'; -import '../../../network/api_repository.dart'; import '../../../tools/EasyRefreshTool.dart'; import '../../../tools/dateTool.dart'; import '../../../tools/titleAppBar.dart'; @@ -79,7 +77,7 @@ class _MessageListPageState extends State with TickerProviderSt ), ], ), - child: _selectGatewayListListItem(messageItemEntity, () { + child: _messageListItem(messageItemEntity, () { Get.toNamed(Routers.messageDetailPage, arguments: {"messageItemEntity": messageItemEntity}); }), ); @@ -90,51 +88,51 @@ class _MessageListPageState extends State with TickerProviderSt ); } - Widget _selectGatewayListListItem(MessageItemEntity messageItemEntity, Function() action) { + Widget _messageListItem(MessageItemEntity messageItemEntity, Function() action) { return GestureDetector( onTap: action, child: Container( height: 90.h, + width: 1.sw, margin: EdgeInsets.only(bottom: 2.h), - // padding: - // EdgeInsets.only(left: 10.w, right: 20.w, top: 20.h, bottom: 20.h), decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(10.w), ), - child: Row( - children: [ - SizedBox( - width: 20.w, - ), - Expanded( - child: Column( - mainAxisAlignment: MainAxisAlignment.center, + child: Container( + width: 1.sw, + margin: EdgeInsets.only(left: 20.w, right: 20.w), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Row( children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( + SizedBox( + width: 1.sw - 20.w*2, + child: Flexible( + child: Text( messageItemEntity.data!, + maxLines: 1, + overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 22.sp, color: messageItemEntity.readAt! == 0 ? AppColors.blackColor : AppColors.placeholderTextColor), ), - ], + ), ), - SizedBox(height: 10.h), - Row( - mainAxisAlignment: MainAxisAlignment.start, - children: [ - // Image.asset('images/mine/icon_mine_gatewaySignal_strong.png', width: 40.w, height: 40.w,), - // SizedBox(width: 10.w,), - Text(DateTool().dateToYMDHNString(messageItemEntity.createdAt!.toString()), style: TextStyle(fontSize: 18.sp, color: messageItemEntity.readAt! == 0 ? AppColors.blackColor : AppColors.placeholderTextColor)), - ], - ), - SizedBox(width: 20.h), ], ), - ) - ], + SizedBox(height: 10.h), + Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + // Image.asset('images/mine/icon_mine_gatewaySignal_strong.png', width: 40.w, height: 40.w,), + // SizedBox(width: 10.w,), + Text(DateTool().dateToYMDHNString(messageItemEntity.createdAt!.toString()), style: TextStyle(fontSize: 18.sp, color: messageItemEntity.readAt! == 0 ? AppColors.blackColor : AppColors.placeholderTextColor)), + ], + ), + SizedBox(width: 20.h), + ], + ), ), ), ); diff --git a/star_lock/lib/network/api_provider_base.dart b/star_lock/lib/network/api_provider_base.dart index fcbb8ab5..ee82aa85 100644 --- a/star_lock/lib/network/api_provider_base.dart +++ b/star_lock/lib/network/api_provider_base.dart @@ -32,7 +32,7 @@ class BaseProvider extends GetConnect with Api { // print("post: url:${url} body:${body} contentType:${contentType} headers:${headers} query:${query}"); if (isUnShowLoading == false) EasyLoading.show(); // print('请求url======>$url'); - // print('请求body体======>$body'); + print('请求body体======>$body'); var res = await super.post(url, body, contentType: contentType, headers: headers, diff --git a/star_lock/lib/network/api_repository.dart b/star_lock/lib/network/api_repository.dart index 7ae6a6c8..969571e4 100644 --- a/star_lock/lib/network/api_repository.dart +++ b/star_lock/lib/network/api_repository.dart @@ -125,16 +125,18 @@ class ApiRepository { //电子钥匙列表 Future electronicKeyList( - String endDate, - String keyId, - String keyStatus, - String lockId, - String operatorUid, - String pageNo, - String pageSize, - String startDate, - String keyRight, - String searchStr) async { + { + required String endDate, + required String keyId, + required String keyStatus, + required String lockId, + required String operatorUid, + required String pageNo, + required String pageSize, + required String startDate, + required String keyRight, + required String searchStr + }) async { final res = await apiProvider.electronicKeyList(endDate, keyId, keyStatus, lockId, operatorUid, pageNo, pageSize, startDate, keyRight, searchStr); return ElectronicKeyListEntity.fromJson(res.body); diff --git a/star_lock/lib/tools/eventBusEventManage.dart b/star_lock/lib/tools/eventBusEventManage.dart index 72c71f27..eac42f8b 100644 --- a/star_lock/lib/tools/eventBusEventManage.dart +++ b/star_lock/lib/tools/eventBusEventManage.dart @@ -89,3 +89,8 @@ class GetPasswordListRefreshUI { class ReadMessageRefreshUI { ReadMessageRefreshUI(); } + +/// 刷新电子钥匙列表 +class ElectronicKeyListRefreshUI { + ElectronicKeyListRefreshUI(); +}