From ecfd39bcc2eecece83e7e818445d0e894ad195a0 Mon Sep 17 00:00:00 2001 From: cilliandevops Date: Mon, 26 Feb 2024 22:22:15 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9Aadd=20login=20box=20top=20owl=20an?= =?UTF-8?q?imation=20effect=20(#162)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: pany <939630029@qq.com> Co-authored-by: pany --- src/assets/login/close-eyes.png | Bin 0 -> 2098 bytes src/assets/login/face.png | Bin 0 -> 6382 bytes src/assets/login/hand-down-left.png | Bin 0 -> 1382 bytes src/assets/login/hand-down-right.png | Bin 0 -> 1306 bytes src/assets/login/hand-up-left.png | Bin 0 -> 2074 bytes src/assets/login/hand-up-right.png | Bin 0 -> 2015 bytes src/views/login/components/Owl.vue | 92 +++++++++++++++++++++++++++ src/views/login/hooks/useFocus.ts | 17 +++++ src/views/login/index.vue | 7 ++ 9 files changed, 116 insertions(+) create mode 100644 src/assets/login/close-eyes.png create mode 100644 src/assets/login/face.png create mode 100644 src/assets/login/hand-down-left.png create mode 100644 src/assets/login/hand-down-right.png create mode 100644 src/assets/login/hand-up-left.png create mode 100644 src/assets/login/hand-up-right.png create mode 100644 src/views/login/components/Owl.vue create mode 100644 src/views/login/hooks/useFocus.ts diff --git a/src/assets/login/close-eyes.png b/src/assets/login/close-eyes.png new file mode 100644 index 0000000000000000000000000000000000000000..14e483a462f2b6967ee5f39b447b885e1b5cc1b0 GIT binary patch literal 2098 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 literal 0 HcmV?d00001 diff --git a/src/assets/login/hand-down-left.png b/src/assets/login/hand-down-left.png new file mode 100644 index 0000000000000000000000000000000000000000..aefef6cf3085c5f9a954dbb45b2368eec82e8c79 GIT binary patch literal 1382 zcmV-s1)2JZP)o$?G$R;3Djhl}8!u+55dZ)H6?9TgQveM`X)b=Gk5?Sn|Mbh}|GWSH z|NLjOCR_jj1b<0HK~#7FoRVdN!Y~jb=0zkhQ^tQc4)-LVk^P3Zky(j4*~bW9;$l9c>$|+$*tAQc7)v ziUAR!BtR)a@y-0{^^f5AXFLlQY$z&FfET(2iB2^ODnYf+kdO4x2EN{i4Xz#jD+0+!+BW5;oWU-dqZ3LJ2Z-7 z*bP20m~9N(tJ_$(l3iKz5H^b9bQ)px@s^EY2O;lz!-?6gdF?0k6V~8coLJR=>*b+j zEeb^8+M6@8fr?_OpwRvP54bi*W&r=W6RCKEUpHSLEhNNXuK3;>Y&(zbTvB(E{iPK< zND!NhV4Xo`|3I~G+`06<#O}r0(%#_2Voq%s4#sJXZC=5X4Ej(z_qbk+j;(MhK16L1J1C{kI2DbR|=dC)BudJsdJHoYXHc0(wgeC#+c1}4u-Mi z5U2-u=t{ju^aqh+sn#}upq7U9ymZUn2Tw3OQITGG=(_<5$cT~50R?V_s?u4bVylxIP7k*7nmi%`YCh3V^UjF*#L`% zI|~gdWg7)7M7D)S>jI5ywP<0s*T9(6f?>qx>qxuP^J9t85B`S$!1{~qNZ^S zDx%Ob^)?o3IH1)1qZ6`3K`}>$j-rDsP}vDq2@AziI!+%Sk)>TXbIA!d4sV}>Hq)$ literal 0 HcmV?d00001 diff --git a/src/assets/login/hand-down-right.png b/src/assets/login/hand-down-right.png new file mode 100644 index 0000000000000000000000000000000000000000..a2602a6a0a021a920553d719fe0c604fc50f76c5 GIT binary patch literal 1306 zcmV+#1?BpQP)a-D@QCGRXQm;CmS#z7B?jt zJ}Mn!o&cl(000nlQchC5!NyeNvSe7GxBQ8#Vd)x~>nS!IE1Yh_J8JTXqM z>D088&C6BN;Vo_UIUS3Ot<&(4={a4uecx!13%%u2Q~d#q!MUYFlhwm|GUOt_*>em?;(F%}DvBlMd3v(B~w)KylFUe{I`f%L@ob$oKXxYk}h<45*)tcrF5D~&W z_4iM%Y~yV}OHPtR$4Tq8&!N+dYJrex*AP~cf2WPs4d9KGI%c>g?`dC)d2z;sdGD=d z0z>oPc$?IbC+Rz}rFMI--el1<{8KvMG{#f)m32;5WxhhuU;A%g66GM)dMv(-njFPp zAUsKC6JjQbL3O;?FbL`Y|HfO~UY870N$U3D^ptXuk9Mn#Z9ir8|NQo$`GI;|ADZX! z$C?Ooqj_tXoiQd(9;>mghw1gcLYCW)hCB7PkCPzD`*y`?i?fKeyc+I2u0wG)Z{9BG z^X~_=Q1=GU5iZbR<#y`?irjwZ?rCl6RG{$(xgIXCv3DA5JSN_LCw|!wguu&Q@3g=L z*05>X_a7HxyJ=cuUK*nIy^*wWfq4wIe=E|__{F_YlT+Jy9g+Pp~|u=+{{a;a}SC4vasc3_J=Afbz4)Pz03*ldAFcx!g3!>#;m-n_KlG3RbsmPBnn9$W4)KZV`#%{p(C;Wk(*e+Cct%jJB+-uS-W zQg>KW1efd0UtOzj#q)FX_0?Q%(Dz@#339zxkk8MLzpcmdbUPhBKmO8J~=Q zPcf-K{YZ{x=-}A|2@t(`h60qNo#apoS z^te6mg)>eQ46VAGO!jY()9a-r z;%?q3ni8;EUf{^__NWP;y!yV3wjShAKU(hzMOB2-=thWj=NHY~%Synj@66u?!Jc2SR*M75n~P3SM)m74UqU`~?EVk>_ zEbhAUb;LWXK}CTQ)ORt;Euf(J*k-dP9!rR@h}td@KMtSYs}807py(l#(Bi6WGynAR zU4JFGn6k$mQ;(tsQBJ`y-xhH8>?X;M-$WtHnR0IjQZR?fJrv_~9-%7ElYL?EOoyVZp=1>li2ZyE5zV$j8(`#>oIiVG+>l&D?n2EUy5U?f>X zFdDzw2V=zb8WvMk9|cAEF-GS>&NEU@^zc{GyLfBBxW0V z#pJas;wahNhc!Y0O*ENSme&&~&iXCwqt1C#Z3G}E&WbIr+^Q#x`xHzS8cawAOhb)f z4r@gTKo zumvAbS(l%Lhhl<4=QhWtW2hVW95v{Zhk^KONR~Z&^0$uCN>H-IN)b)}-s#rSgf)m$ zuXC*l=2^UTp~~4pGNag*(MHlIP~sUJn4*SY-FREGjL!OF=>UVt?XH!qWLt*RqQGPB zjJ2EegdB&b-kL>prZ@#*5LvN?WQK(aby;x~V{B``NKfZ`^n1wIw`PXd{agdpNE_9c z429bo+B_Wwk47raQO3K>qG}k7ae%Rc?HW8$P|{OmG-*L`d=@+w&}E0OxqxH=9ua<+eTL;z+kc&G}=_u zxeo&2VgE9~RWc1T%u19L&S?G~O-PoBkmi9I1Qxw~&pyRE7|JF}hUaDo1>2UDazkWv6JOF% zHh@8;OEhLaLPz8tSY?LEWc*VJXNxS~CBVBD#vlr+$(SKBECAs;mX~dVAgU?+|361D zumOJoh`!zuHBj{zGwJ_;nEDFfz?ykoZkSdZH$Hp(ngs&Qw0J20CZL1wm21hpOlf*DcfFziz$$ms8 z=e-#{0C{fPQ?5pnX}YUv!eF*OXcYInP`@Cf8%73W=YwYK4^WEFXV!wDBmxN_GU&DA zVDM$C1#6n&WBIA9R^}&UtVGisN`NhkX0&9u<)SpvGX9_#AGn$TFOTK%72|_QVx*$7YY!6a7vbyHUIzs07*qoM6N<$ Ef`lx~HUIzs literal 0 HcmV?d00001 diff --git a/src/assets/login/hand-up-right.png b/src/assets/login/hand-up-right.png new file mode 100644 index 0000000000000000000000000000000000000000..088fa16089012f7fdfb53b93c1895128aa536011 GIT binary patch literal 2015 zcmV<52O#)~P)rJ0}~9d2X46cwtULPcW~EN-!Z&Hzr*~HF{@T zlYetaJ~;m9qNe}=01-2M&MkIi}FjB_~K)1pTy@(Fb>@4w0PlM7to2~IIG#V&>)%j zeOttIe%wAQQVn#-2ZTe8v#Iu7SHu-&TK7-h7zK?7TFzZID{n89Z|jQ1v>adM zIlo^SS!a)S5dO6jXQjt^jAO!Spp4h@Ri54Zv$@RD0@MB!!D}!Z+kmZZan#VDJlAi* z6j7E|j1^xw+Rh+tAfayKKJ7x$)$ zL$;)Zn7%xd+fHx8AmpJpvL$6Y4?i_UiH?G7m&`#)yR zHo9)MAq)gcA2b{T^FlV|WW#gy>f9;Y=23mv@V{U~lM;jjA$W>TvbBTsazaeV_MB${ zY7yv3?aA$sTOqnhwpuZcE+|9Ym1;b4vS9<+%u9iDB>u@@vLmc^&eNS}YHDnHw@Enk- zay|G+IZYnm4gGIEcOuCTNj4|9&{za3a0A>o8-+#G*4t$mZNr zl~o#AgXpYyxrnpe!o%z!<)Yepy8eB^KuVyTQv6c2-7JEL>h z1U?Vir*k?#M2tB)HKY5Ey2I1ZOcx5hqL%!9iPIgl_lmXbU44hKeJ~&;$^p zOPC^#&Ryr0D&$xcFu}%sOBw7wcQh2zlXuGC=*K;wcLMP4K7EOgCGN`*#gejvhu-PH zeT$VAFZ0PoNRfaZQhwEvO6G#?YHu9EkTcLxP%WLol*tT6KeD)*U8qRN1SjiGz;pz| z3(1a`8TIuTQJLAZTqa*(boZokU!@x=^aL@$qv$&AW;2D1(L&8|@=DI7?4+X;O;JQK zz@dhj1J%m;)nVQcTx4@8D@W%l0K;js%)kyWlLk| z%uO(t3=85M8^7u%7+tvC5-=RAFu{8V;2}kZ!P@i6PPR1vRR7rloeD#W){#B|439ki zss3Xa?Qe^0OdlN4I1&E|NG+oyYX<|XHG;?Ll+qHvZ5Pt1CU+Y^(3gMegRXabdIwgEHfuJd3L@UFPX1V~k@eF+%VbYFin zo>;YX37yi7aQp*Sp508f#U?O$LVF7KlK~MOswNhh0H&5a!t){wHN+?Xm1~Kqd4JG_ zK-zG8qIDLS0O6gGqp`CfZ9cA=%4?wwAoF{eHc(A|KsBS#IGA3|wO*Hx8?| zxOIRNq#PX09m=f}!YoT4SdFIvPaXXs9HZd@KD&>p7N$bz0XD(sR6}t>m^0I1uPucs x=P-#o_3{o4H&hXYFgsnADgQsNPgUn}{2$qfBtJXDKbrsm002ovPDHLkV1jbhn~eYf literal 0 HcmV?d00001 diff --git a/src/views/login/components/Owl.vue b/src/views/login/components/Owl.vue new file mode 100644 index 00000000..db284b87 --- /dev/null +++ b/src/views/login/components/Owl.vue @@ -0,0 +1,92 @@ + + + + + diff --git a/src/views/login/hooks/useFocus.ts b/src/views/login/hooks/useFocus.ts new file mode 100644 index 00000000..b6204e39 --- /dev/null +++ b/src/views/login/hooks/useFocus.ts @@ -0,0 +1,17 @@ +import { ref } from "vue" + +export function useFocus() { + /** 是否有焦点 */ + const isFocus = ref(false) + + /** 失去焦点 */ + const handleBlur = () => { + isFocus.value = false + } + /** 获取焦点 */ + const handleFocus = () => { + isFocus.value = true + } + + return { isFocus, handleBlur, handleFocus } +} diff --git a/src/views/login/index.vue b/src/views/login/index.vue index 45237490..5abe84cd 100644 --- a/src/views/login/index.vue +++ b/src/views/login/index.vue @@ -7,8 +7,11 @@ import { User, Lock, Key, Picture, Loading } from "@element-plus/icons-vue" import { getLoginCodeApi } from "@/api/login" import { type LoginRequestData } from "@/api/login/types/login" import ThemeSwitch from "@/components/ThemeSwitch/index.vue" +import Owl from "./components/Owl.vue" +import { useFocus } from "./hooks/useFocus" const router = useRouter() +const { isFocus, handleBlur, handleFocus } = useFocus() /** 登录表单元素的引用 */ const loginFormRef = ref(null) @@ -72,6 +75,7 @@ createCode()