TK$WrF&dRn6or)_jxpE4aY3p{_r;)$FWXYs7@}uFWz7@yBIEJ z8d2l}fEd1!6>k!q9MQ-XkQw(atYUqWHob0}Rn>2BBFdSe;%G%YjK{59t8;=C2sr5% z0~SH>1~zl&x&6KJuX8VoNK|~@G}CId5Zv#_f;E)OR?1UDsP%^nQgkz85^rs`6^RlYWgN4v}duYS9-k5 zG#iy%bjeQLW0y5e!49TEuvI+M mHr)ZXN$;P>&SWRpI ZO2SE|<5Phm4`e$>o1ODe_PhxJ--n%b>kevL-iKLO~oU&FCK8 oA}~ z|8ZEsT4rv b6BPgZh#J68Hj zanI@O {js0!|(e@V0~G9@89D3Ml+`k!o9_%zXg< zIEsDAQor)vaCr+(u*ltRnxK2dGV;qkJz5hiI =3_Fv IZ3-lrOiIz zdCQXS$TVSLCL{QZ92Z+s)>v9(vJ;Q2iDGeR){S8q)_L(e`}k^U{wvKPHzhL+#MP6E z!XivH9cErsXdKMFhcW6$#IfiZhMwym95@OZ5?z&9Mkm-3!bk+vtacyKlipn#Kc3Oz zGxph23S|abhZXz@$)zA7w|G_G)bD81@``CS%JN;E+Ygxr3-+%sY+D(5IV{5rY9Ibw z#e|qC>M|Z}vK*?PsnvBl;wMEUPAF XE )x@h@sMQAg6S(p8P%X
b9Q3`1Zha}6ll}B7_0}t0C_m`rx+O(-*FL{X~QlQfxY_F*l&eJ?bYvt@Z z+VBQ*+#Bg9D$B+N2zU?8*Ce_#7+~Lj;-e&^XvuNUMrUP<0p|!1)rWHuvm3@5J*sG<4Dtw4OP@Y zqH-%+8?ER}$9f>z#2%8V*6k+hjU|lqZ0Uz1&l8+CyUo9nx()o`P#Rcgl#3anTpx zyKAH=h4Y=pCFfhc d3LtxWe0$rs=DgL29S5L@b-vr z0`WgJ1(JbJH8ofdF5pWS?Jq~Lx`AAjfw@wq-w>iCi@PuLRA&R3r@MYeo|sQ7-qT>e z3|xzPTw!loQdw+t23$I+|B?FHevG$(FzB5@s5@u9D`_q-e`@Kn;BMljs;0j5fB zu_qTsgz$|!57h!4&(sk~Tv$iDo>_;ER1aDHXB|yf&CFB@^kT&6S}qX4&B#gII %aUhI5$unsp34r(c263AXP9hV+gwgjoyet&+ZLQbOTJyCx|Dz@?M?}6lM}>* z92q_+?IOk%If>0>5E}aA<)C$`-0Pe6lQ+{Z>VOKH8SmqVSW)AFhn6gq1xr|R#{y7s zrUV%TBNKGyu5I*@=TSX000qxcRsUG$XSq%MBa+@$z3g(xH0N}sOF6&iw395*{p8 LcFaCJ)+1F%`D>%0~A~ui0 zfq{`T!qnZvitS7>D>naS>e1jEa)uvleU7q`a^rX6Xjb}My#1ERSdQ_^Rwjvv3(Fob zS@;y NsY#!D@w><$VTTe)DMvvBw zcSQ!$R~Ga=!>ewd7W@@N`b22|l b#dEyruS!1X~}8eQ$p39qlmY!KUvOeu_L3tji%_*&I6hPVsmb&+k(VQH2&n5 zm_Bg9^BvMR91aPTPUx{F4z1y5j#H {pg8n{8t1^&jWejO}5_K3W1cjg2?iZ)QTH z&-5YQ(v(twqmbn=p&WvMtGDcyDuN$_l4o)<`|8SZL_i7FAF z!&9#pv(W@IzTf>5@wA$M^z2RR`cuk)hQT$|=#UDMawRj>D8^YpOOfk++`u#C^A*-9 zH*pr+beh%9wH$(*0n%RID?h<^^su2~jOWK8Gt9YY(W!czVjz9(y#ORv8B(5MpmEH( z1)P&_di9gp3KCy6(YR26vgzC^E2+emkGL%lJZlQn-5b;Z$?mQ;Z08dWT|r=f=2~d* zs_O4PhO^t$@!recO0TvCu3z`9&rzoqtlTd%_jkJCO%IdY`D_6?zE?CRcu{2pgHws_ z-c1gw7T5u-FDgaGWX ptY6R&6e6^{(46$VTt{kM zDl_JsorW)n<@1G_Onca6mI`1|6EB{pk-JR0Vl@lBE^6Qdjpy>=<}!Sz;GLwtQ)bsO z8bo;hDocv;fH|hVyw2~FOxI#JajRke$`e7b@XI4rZ`)4FKltk|Z8@fHp@xsQ*~mnT z@2j49Bc4#yKiT4?rg*4=2Lq?}0uIN4OI>@GOECS(y)RGBT4$?VR#7v-w5@x5NJ@t6 zFj@;*-^S>p6r}x=%*My$oQ< INw}+Qx~XC8bhB*fhY(Ias@kV+N}E{2 zrLOx2*n|L5b7nL_XMWF&&tfvh6Z#?_)dZLtYI}}1Dc>-65kd4RJYsuf^p~;w=!_ri z;r^4EChu5UWka?vNw1!XD}@00^9+jw-4t$Q6 (m94aW^RA#0buAawF*I$6yL;0&t4uF90^lTN=+Z|^##WdD_ki)n9Ir%%^H zVIbXcb0vqku2s6}qRCzYGpnS^XyrpuC-m9q{D9?*N+@EXl$MhN+t*=u>ZZx_;LD|A z0yEIyp-TwAH^rJY@k~Vq-uq+!{4PC{J~|;ssyWgpOU(#siWCbbzsCbt1IDIFOb{{K zB+hW65Go2Y4Om?B^gK}faJ%5e%pA>6)M{?J!LN;t0pyHMk(Z_USjKv98*6wb8UMGg zDYS8Op?VN}(W8JSbhXO2{sEcIz{pU8j0<>1hEwkCdth^}S9NY{=-xQ$WXjGVN%N9` zlpa^NN$}0i+dO&ya?!b??3p+Ic`>YnDLN9{F~?aUDo`Q5Z_Kdo-27R)-rCx<*K@>r z8#QMtWSw7@pxDZ&usS`^5m~=kvfD^m_2Kw;K{of;&O=(;*|O|MPIgtjQ+hv}{O(E= z9KK|lZ+$48xHpYicr7HYpZz7>+9co*Lz^RVn9}XZICiH!!yyzp*7p46{ON`ILE+bY zP36$z4=V=rAH <^BsRK%IKYDl?#c%?`yHJuDAl2+j|4jMW z$OT`6`aDJrND-Jm#<&Diu1WdnETttb`GhtwC=bk91~(6%`lHpFO*QP{2$VTh*FU*m zO-Ox_P54dUSW#cUR1idZMYf|D;U4uA^+6k3XUHn&A0eeTPrNxAe%3|%)5KG}lGea8 zgZ@|wK81#U?`YeY>i3w~s3huoxQsKnq2f&G1m=sAIm0Am)fJFm`K1Rn9F0k>yH;z7 zV2A1~Y8hZWeG9$Wqo1niGRQicPXU^YQUK0pNJL2~vvUf}Pu`9oas4M~|J{PLsv?mH z5%#8tJ)@+J+={&aa`W|DE{~$GZ7b!@cFV{Jqk1XUrF*jSAVTSr)p)vQzHZIbclQQX z(p mjbDU|wLL8$Ykg6tu?T!6RpI7hc|c>aF%MWCbkFJ|2F-?WU+F7ic8{~Z zj6c=PGoV*2&Q|nJOb!3Be3dU{w d@HpRx`4wX2O3IKD@srpvJ4(?2{#GPnY=`i?~rvO83apFZ6}t0 0wW< zzWW XoYYA^!zC C#?qMp literal 0 HcmV?d00001 diff --git a/src/assets/images/index/3.png b/src/assets/images/index/3.png new file mode 100644 index 0000000000000000000000000000000000000000..e43c19699b4af0ca29cea5303a2aa9d71a9573ba GIT binary patch literal 7465 zcmaJ`WmHscyGBxwPC*(*Kw{_)ff-;Bq-N;u8W@Km1q1|!mPXp4L^?%EO1jaZkq}S^ zDG5Qs!~31@{m%Ju-m}-*`-yd5*In1M*4}H!>Oa<`AY&oJ!^5M1Xn_oGM!lQc>^A<* z^I&1m =n{beH(07u-Q@$eK?0uXi%9!@AudnXq+FD35%_AYKtH%BFI6DeI$U4*)mtD9C3 z(#a_3G1MW*!$HoGTSb{uF+l!?0Pcjc;|zd%dilr)C~^ObSN>-H*EW!w^Is+?4<+vZ z4$4$lpHtl%>BK1`A|~u0Dk{n;BPZf$XK&|VZ!g3tE-Eet6qN*uNeYXK%1g+}OG =WpP zvI`LQ^5OZL0p#T4fOJEk+`PRw|6;VW_x438ao>dc-#Ne$|DpBr`FEXeDh3R&Ljc7@ zME}a^Z$n+(|KAi2|Btl~%FyY5;{88~eV~B|C!nE|kGC(<;ihxWJb$@D$g3lr>`>lF zsJFN0-(}Qy^+tL7xOyWv#U(^UIr&Z8yd1s#eFXjm(AAZPc=@30yd0b$ASLb_3K2Iq zM|rTUhPWC?T1G-nPFhS%LrhIvN=jWuTwFp;LIbQ068jqq@^ ElRW0CqtzJFsK|2Y=vf5ZZBf&u>3+5gq)zqfAW z^Vjr0!o6AiNBT})H+o0j2s__u+vDa; zP$Tq1tQcPmQNT5ANtg1z;D0{*5(#qEBrP8y$03U_Vo1BYd`g_XubLF z?!<(SFD&E)Tg+s1U-m>Lva9A9YTye=5!QxO2(V$3TeVfNxh-I%yfVH%+$PMIou@%n z7JM32`iG- uX))j2mIv6#pKyB5j~oJo8aY%jKN$x)!?f%E@3@ljaTNDY1cGW?E9# z3G{wgWt2^_*`E(sd>OYsH;`3GJIb$m k-S;lwv-S2zQqP%aWF`_6sFXDLdD$$# zk!`h>MT9-<^+!LTXGWUMREopaM=o(oJtFo?Jh`H{AQqm@JL~o9F-d6$G09Da$cmb6 z5)_}!l$_YtH6E;*)!Jk89}ze=a?>qda}k_jn<3@E16g4U<;bX`^-mHf$jJC;UHgnr z0(q-6Gy^3w#`)x?-t|PeFmol<(p`~Z!Z0G;)1r+}i*5#IfW@*mx)*BYkle9(Mw!^| z(5^mcJzw0SPF7M++4a?wh@6;bhQ9L9dB9oen=v-D;OYa=3;D{~qbwO3`RuI+;Lh;F zEW;vd^y3PnxS%3Pi!a~HDjkLw^GONYzB@}mT?s3fe#n+;G39_C0>5`_^Y@#PyuhBy zpp%t#UOfv^Eg|;;!e7=sCqF@nzh8Z5)7dSm@cU5{gM8$>&OZzxJD?9IePCrM<6MuJ z=7&048QUcFmJ-W+d1KEMoWY2nPd16~t4hW9zz~*fq*Aq}O4nvmo69uIlq=?NGTWfx zDp{_jW P{EH?T9#SjqH340Y1ku3IbDV;vU3`I! z^I>EUoHI8Mm=)OL(+?4aBc0p2%BPor`Bj3KJ&Mgv4Icwi6U{oTsz14Dl#6f{8oGw* zwAQBxY0#VzU5K!<78ooR7m2*`Xl+ztApbd3v8H*-w1IRlkDhcg;2x7U+a_pOj8RRo z1bf_ZXN#nGDvW!DF#sJc{k94z5Q`TwVVOub1JX2a2$+!b4lq&;KTZFt#cj=EwpLP< zB;vD;uGf;&BS+Lx_2J!PvZWNw^1v#v_q#R@5#Y;KRdSkRdlRcraTV$|l%An9=jMH8 z0V;0x2{>?Kgb(k-(YsW(iY0maU_*oWR3mqm#}!8(qA7|rz>E0OU+|99V>}Rh;y>ud zG+nn@&4#$`hRQUc;jO$}{IEBrbT3J-5Cy@}dC_`N+@j5#n0bqIb)UObcSE&cI5oqc zbKv1OQ!K{q!-`v^{RQX<7oG&4`A~`tqJRVa<2Pr#Caj>}NXPK9Z>wzm@>=|0{inkX zl5D!$w@t6!nh5Foq_h0itz^G9R5+UPlWWW-&Nh(S<)?~Ux{Sp5S8}NHB(ATSjONUs zPGZ9LWlz*2#NLDDKjxQ4V;LS^J-+uofO#z5bk?x5@6O&a1D*T8`O6in!iq>$zvs2Q z5GV5eI=Q01V$7v$DOq`60-aaYR*f6C(qFT9{?fD)V(hXH@U#kheL<|{-g2pi(yHjR zr_AOtGdo6_hZwJq`l=tdkN45OC@n@kb8lkv$26f$d;BC1q0v8e97Wv4FBBkF=GOCe zEQ%3AMvgo>3p2#DWMWwen2tZa6@vjuGb~VFl8Yiw5J(+9`g&uyPk_vRK{S>zpev$a z1J2 K&kbrNPZv#DXss}@nyX3OY}yJjuwq2o6wFE6?J5ShjNZY#t)MUBG!AsR zziNb@8OsbL478`$Su0yAO+RxjH4`Mj9}BKI6d*7xs8lDrjQC#hpfUSNh>zsMS(dx4 z6HD9`zuaf5FK^k+f0dZIY5JP6$Cw4Bcv(`?l;e;VO zl;mFhrBxg``zc V z#K^?^k Qs*^^ zSrmU(E{%nFt#1avT;RS|oDJcu=(Ic2qv@AO!746kmNB7y(p4{v?w1(%rp-32PDWX% zLag3i{ZG+`6fE~ I%4 z2~M%+tXLu8&9FxnVrKPmmgaQ1vaf|fIlf6twQ7Nut(0>$K;SH6`*<%zj`=Rv#Q9;1 z%vx91+OPA>k`h_q6IaK^!ED5UXH)Gm!<;{FG&-uv7DC#0^hNu1feNj)JooDHavk4C zXeYb3&}aE)tWl4WVndIOlo#|qTiL;W?UAAct=JY)`?$zG4!&{Ks+D9yndCGaIoQFw zU=r{mFRE=; 6{m0rs*j2JngVOm4c+i7MwTC8TRJ_$A00G*_3%@>?^2jBhq=q zvV1WR@tCDUi+i$|5Q97kq@IrpHE}Z)V>XCISBUHih}pho(|k?hc=Bn0uKV~LmwSf0 zXAj*nE?G|2@{t*425d%ZAC_$&FRh9PZp`10rF1#S=IB@X$~@Z;#Z1rM>mTu>kkz*T zOv--F* x;s(6rEd1fhfnhr zWY m1Txk6bmP&z~)Yg`YW+?-v zIOFUq?TLVwYa~kt=WP2S$qZX@6vb_o 6*^h}30iYw+YQ^% zHTn TyZ@ZjIUjhD5 zeE9b8x@Ni}0C6yOp8S!Rc5ZyHzL~oINdd=~Z&KH`8OM{#QF_Ya=s#Ecqe1KKU28!Z zkBbE!reC!CYNoOaM34~O69o;i31iRn)S`)wz|i^++P09Hkm_w`^U|foHG|Zu> d;Z8hau|-Z9-WO{%_C6;306Eu3z5p@GndNW544v%A zI*$%jQ>CrtdNT*4(ld^bel=_ss1>Vh!Z#uO^ZQ=UJw1~*veCvr1#cF;ObbeZi0A zS0)|Dv^k(DJ0ei{oKbaCVM2_VdrmIgLt2I@#(K4+kASqsV5jp(4wFsz1(nXCkWyvW zv)3=fz*e(x=dR9^Qbg?Lc+)(QP7bQt&pK+!pAAG%DChpok0M(;qFp2sYvkYDI~0;* zi^! mTi4EfyM4xgrZiM3F88Pu!k#(} n^(SJ!{S@A} KQdqu3i8XL&>Q)`kFlu-)WC7iVROJrrqr*_y0V8^*E;9uSLuP z1_6&}%yU^TN1#_*74w7WvmK-yu0;CgwI3N@Orw}>kMKJJ+`V4Cb_TzBqHPL%HZf~v z!m1Xc^ANvsIVkK=*7}Teml@Q2)5VV_VQ=}I#p~G?K-tAR(&~I*hBegk{g5i9{Qa?{ zILpCu3e7}o;Sp8~y#Yvjx2+pxu0?Xb8+~rJNk&C^)CbSohvgqBG0peXk8y9L*9adO zU}S$TgdT;jrEQXm3Ukd%X87+lX X;v<$|3|J16 zw+jiwfU15w#M>&;YSUUB>f3OUmY;>s!rG}4B$md~$_)y4q4O1SUuD*d2lK)Wcib$V zvcFC<9a)O%$$#_gPSw&{%SLvrY_$rdX0M!Uje2jg*4KF{s;Rk%Zq@`6!Kgoj=mT`_ z>`UxYwUrc3W5 WA+^dmEsYl_Mml)tZ *_f40uv(fwX)s zD>`PFkLShmcKKmqovC-ANafL?%fb5Ve2XA#VTVj@879-F^VQHLcJ4Fb$pR}(?DY9! z+WIPzpl>?wYsoVr@Tkd4F37gqlc5YtYlamv-wOPrLNRxehl}PZ-aE5!O0vSwsj|~2 z?`d) 6qFV#w*jtKCcWo<3;rU;u7B!CbaSW>4 zx8G%j>lO6v8EsQ#*F{goshgs;BHW~0M>Pvt9|DRpKO9}S)cu0uV2;fNi?RFLR!pbC ztotpUC24cFFVM@{B2>n;!6m_AMzj1W#?J%wJ<_jOX!f2F=@s_<(o1~mJXzzePN<{{ zFN! 3v)H3MZtJVHJO zF27?D)qQQp#BEIf$e>o>w~+m$^JS6cul_r^Z0>z`l$9BR8*Z~TMeL_-RB(_Bz7?>I zLhgVMfBkVrpHB_S*vYP?++r2Z+*3BHua883GKkO)Vn#F)+&z!6uZy-y7?(i1YE%M8 zMlzW^B;LKJc)_tar|vsfao5xO9^>a>!xg0(fC}^XTxs7?q;;z?Et{zY69+p>BqPOS zsaKho+eB<4UaEz62q6hCIbC*h5@v>xz}n`^AobdkCR|_U-3n2QDw}$JES*YM)%J`) z+M6Bo=q&=ph26_xiL-S|^w~*0i0%HdxsqBfpY3rPfaBJ2wu$bDnq 6_241=}!aiBok=-*0m3t_QmjHQ%k#-=>Pw z7o-=m)uSFxxvJ=_wG7&^-5t{$5Jho~XacF;oi$~zaWcc9Nhwo!JX+QK+uNtccM&is zz*PvQ3Cn0Oo-?bzcdxFMGB;OI`}nJ#F7a{pggy+%S;d?&z{OswCLw6KW*DC~`*DVT zHEpPP>s<0@hV>sVPk23`u|3I}0`+CmHo62Z2(Q6Whcj?11eGlL&k_chElSPe%Fb}D z6anY71)(2j1Q;GJFo;|-kA+3ez56ML0`@s7Ht2;-Ie!^OZ%$K`DcW>&->JnAS!)q! zI4bCf8riaTvRDq*V!mSrVEyY0V|Z`0Mjxz%RqJlk+9-RPOPLzx5D}}jiGc 3U{y F)FA70Se~Bi;Lm(k9@&=f3mr@%+6MQV`hi z9ckGVX&BXg*e4kbk#t`SgtF=kFpN^2b#Sx>W> ep?!Bs_cB-}h_qP>Y!mC;Dz#FQz+k)b;2{N QXF#`1*E<;S_Bdt7F)Mv5kMjW*J5t0WldCjDO`q+75V zi$TqX?golctuJR2b3%xew|SN{3Kw~5!oWAq^m%b7UNKEKFYmeUeI5|%?O+UQ@HAeg zC%bNof{HU$=N`+RE{++e36OCF$4$iay6S6e(Cx?l$PWI*v%{}I9&~nFVX3Zg?J{sa zWMUxr4+f B<1})L*AU{Tp0gYwAl;f4)w*8^U)`T|5SUoog !#r^6sG}&Wq6A? zb-ywf*(q+8c>fWTH#D7c)+x!ZVXtkUD4!1tB5}C$wqhRhWl7_~RG2xBlZZg!gw==n zE6U!cV6oxEJi}<)2~PxIfYAxXmx?VX77y24=!U0>r!piC zjkIqpTj{yrF^ ;eV8IMd?>6WEqqq$fl#B#)%v=oLJx%pn?WdCdl@|*7XB}?&i0VX`v zaG8V@sKM!2&z$dj?h|I)v7pEW&R)GGG(=DwLDS|RExB0Aa1aAu4Ls(pGyg%&k_yWf z7AptT7n_9#?a!E7b{)2R33)xW_gSiaMa|YJr>1 D8Fg$nQ+3DeY1VEunt1f2g=46((3liKYmeA!{XCGP zM`P}9($L9X`umvx@SKaOX!t$Z%e~_kVeCp-hmek7N-Jt*(8T{}x_9m(-}&9y5!39a z{dk})0Lx_>o}(}}1N-*zzGpw9;&+)p8ih^Dk8OXHWnExS-VWkby{y?vN^gs$c3&;s z8+6LNo`SBpo1@<{)Vmu2&-N+DiK(vRiyDrq&Z5*;4ppySjnGh3^38GhcDIp`2}AHF z!|m+wr{VAZgj31?eC|EpIVBspvVE5Gpt5+Q!TWspS~Khx-ZPLuX9LTk!(TryA>hZL J8a3O9{{q aj %TkFQ2zlnB`YNn5fL>+TLX5r>R-JUP(lJM4Fb!^aR2)OT!r&= zbOOUPwEi9J>ZAm4#^JDFadA8zFNT*E!+1Utmjr=8;u2EgQc}Px1kme=JI>w*= Xz{g14>*T4I8)iH4&d#t#mn8cr&{suy! z|34Is{twy<2Sff(zW=AN7yJnpDGoz=VZ1#Zt|sTi`zI6@tnP`l$6-9-7>wKBZ8UVo z;4og!7%aDxw3r09kQvI|5rg*<{ucoX1w-7uaQ5yFNQj0K;7URag>nRIf+S?MG^8b^ zK_EFvNi9h=DOp){c_}GrHEAtPbq&eCxf&P;Z#2>!_czz^f4EZr$o*pmH1;a82GSGt z80o0xi9vJ!t7b6jA9In?`bWKga~=OV7m0u5ieDuo{%5lPYtnyTUD@Z)_CLnGI{e4_ zNcSthdtMnk$uNtHh={osqM-`+nXi3lk;E?VIeLTOr(G^4VwyWs_3lFecGlqcWkp=w z@1WLO0>Wr*OLWAmA|6f8ra)X45#cBMpc7oil~B_Bm8U|SA+irfk#hNh_V~zhefe3y z)X&A=@p0`ZR=?{K*nKgQ%Prdn)9S&Ujnm%_Le3@6Xb4iieNR}|FB!V5?E2!sNRZoC zZ%mJZPTjx}y}iwiLsN#J1Iix}K4#TS#nmj4LOeDRM^xHPvNkRJhYW!aYV(qlsWJmy zVbI&liX@4PMk!m8tG$7=x#(a>LAQK{Q--o>6P4h}z3q 6g9 zt d!WA7>ftOuu73JMe^bKm^n-X`td>S%bap64K zukTJ~kmn9Ttik+`D-kmL-%# qcy%$ z`>^grxQk g# zC+OcKGo0*Q7!UXHd-n{sPG0dFXEMYnc=QzaXmY+rRSx6FaOL~OM8N})$9dt+#<;rU zeBY6tXhGdUV3sYvWF|c-BYY4@j;BrKG2s^qFPgqjC4O1o_*}lCD=pk{lW=$=UPytC z*T}(BmXmDG{}5*n45B%NUrcWO{F)c`O?bI~dxo2LpO7P)uhwy-yz|NI>yT@t;{gve zu)Te4O6P5@h*-@1=hvT9?ouqU)fMU$YD7h2p9SXMQdECUU6>d$uWg}Mey{MyCp}iu zSOwA_8&(Z%ozUl?HIuM2S^w%U>W>l k7O!|{bof& zcKJ*d$+X*!OoEzGMz`qV60nZj{L|oTaw;wHXFq}G=c3lg1t+_rW?+jy$)%5hiF_B^ z8^dY72QH)4-(rbD%^y?s^B(SsgmN`&`3xMER!-% Y2knGi2HB>AgL z9%z*-hkbbY71Q1!Z(x`7RiIO@)19~GtQmNI!td|#U`vT)3Er9K83slvp61l||MeGe z0yL<$GVTwy$kLV HYIve@kZ)R6T+5+avELNzZnQp%`n<* zUwiDzJ6i>R#4OwfOxz(qDLG_SWpDS>eAY0pd*W JMu>VH8#r^E0Qs<>(q z-nm#`DWA15q4HOUpjlR1f=k6OKBF6{{UyYs`Oh(Wg}RSr4k0IEDm6RIvsLOMJr#9{ z0k?#a6XEc)%TKS4HxBeHr+p%rKVUn-qD;XdfaJ?_(% ?~2Ml`Y2VoXxcb->XgYTaW9vEwP4%K&OF_w{$b%$(yanXW~P zwhvE#jQ;^PNZG{$wn)=_`5_%+#4$=Des=?KQcNb2j=XvnZq1)#`kOTiG6+l3nR%g` z8ZP2?Y+nd3ea5{sKiDVdMsf`Bm!1|`$tk*7QvH5^TT!` y!}Uoj%Li`}bp``%RPOm{d1S%Ul5fnLCZo@6M<)%SvA`oP?+d&7-6f zUlVl}lQj7y3f(2sq&J&+3?PGwY?*FruiqjsQcu;_m`-^au~x1`v3@kCh?U%KEK6j~ z)ioyw?&rDO5(VZ}x%G*R%~cHdP8oU0F$b|1f>*OP(uJ8GaVSDz)k0M+?4_cp9|@5W z5}P03@e@yX%IV28%N=J8sbY#JADUb&NC~Ghe5N$?wipmC3G~NmnK-l>SELR@CImc- z4 Fh+w|PO|CoHz+O> ziXx8NerhYT)=qR<(V(m;yBvvaOue6;Q*nxl;<7d37)BDUS|kN&^S0hT5N;$YS=|x^ zHD=X!jRU3F#wUuD8x%=^kr6%Lr%hd<=QCVx- Wgdaq#^RV>~T;9_-a*~{&m z9k##Uw-(V+Fga279dywWZ%FZ(*$wUW1L&v$p}GaEp=vkvdry-1IBsX`rA5RORD1W5 zfM1W|cSmAed}dvpoi> =OCqRc*!xwl=!QAK*b2(OHT;s9ref|(ssx?2 z&S~(ow1aYIk2GGs5oSe_MkhJ3l`YKn_RUB75H*q}@tMk%YC^x+jVH-?!LNu{$B8J? z_qV;I;cKvj&$#riHWqdD8gpq&+j)gndVFP7>`UNurWEH!t=_nc2f nOwd-Ppl0?#7|cI(biGu=u#58hVOkiJCWaKE)93K-rlSmE_mWIZ^l08GrY^IyNEb z^9-97F858~Cg$lT11vnn{ptQ9bt$~}PC}r_Fp0h%_R$>A`T1NxDlvejJPBy|_Js>f z6`AZJAP;A#TY_Xomp|7uHnC)UczZ2-wCI4Rp&;r()gH>Xq^fXe&}QkAi{Hy9Z#V6t zx<{ixNmjyK6}CkN)%T-r8GZT~w%)qeC>}P`MavoN3u2=gwN8)beK3jJOFCUXJ!qzr z3K^o9NITmgSF~sqYHw=|6I|*}-+fUQB_o>^^E;I3BerRB|AbGDLw_stz{XZY6WA3^ zn;SdFZV)7X(ER|PyFho(MJe#H#`$2IFWHHfNE2)tDc|P63dA2;`7bn+* JfLLh$kifP%3-be)p}Urch&LC f IcN^y z W$1}GQ})~>yJgfDZWJPXinuCMf-m0n^@h#F$&R?dSZz6>fSm7c~}bu-L|z% z`Rk{~LlAeIsCU955_Er1s<<$LI-}e3w_W;FF<%t@u4iv}I9z5?*Y2R-H-)%=2|DwW z18-Pul2<9)s$aLZaPslGF0G~U1%A!%kU~Fwm`7CNZpDUUQm6zPUH~vrnk;}Dz1cZ5 zu=f6 -WKiKQy)5> s#&3(xyme+`&xD%IcQhImO_^dhW7$#p$Jpl|D>RBN@kG>1@zcU> zkA}C+(c2-mYOmO$k43sU%KRb7IfD1Z{ydA^cPbDwZ@&TkPfa|* a%9yq60Dsi@%PM!`39kCBmVinLyuYbvR3DQ5p >&_=t<(nds)*vKJ>qjg%!_LnWeCTv1B#nG?Hu5eZez+W)IxfAo+vj`m}m) zT8pyDtdT`#65j?)^;rb7Rhsraqpi7uLp+@6<0=hG_}o`AzTRhuGqD;zzC6C;f7H6g zFW-c-bz^n1)!CLMlP%P2t*|Z-LI;z@6qI0SOpv1PDA9_$vm@3%hb%Fou=R~ts=BD+ zr^!##b(zLU(j~#^IyH~a2u>uM>T0P991sZuM7`Qvp^c+Q#&vBLLIA4H|MlwlavGbZ z$$X^8Vo;&M@|gg;jb#L55}Ap1rH(x ~A-Jrxlk17`9+av^ %vqbZWH}X%VjrCG$ip7!;r0jrZ&8TF{71 zCoQti82N^H@jj!;wpMm%TV}i}M0E#M ;i^ zERN_J6}- rbCd{yH)t=Msq3Sm|! zT?Kkf;Y7L6(ZL5@bxVL0zBlj-DLbz+P;SJ|wHfm?d&s5PT89S~+!H_K3kb`6-nZVC zH0WI8w=65!W0Py?mR1@Kw2)iopmF^H$tyXT%=yq6Wi4}3(I!kncviRxewt6EbpY++ zxyeBq=s-ThJ#3>O+Om+yxi%njJ^R(?ri_K9@!zD=ZC|>~OdVW|T-zbdZ%Xfsv&x|D zKfXJX7$u +sxCwB@ZG{rfajBC|dPRJ)ENwtZe!hgOhCgdTWTahh5e4ls-?RD6|Y3Z+Udz zl>NQf3}c=ge|;_I_qj=mT7~mD-_+`z!bZ{YLSO#*dHJ#+;4Zqi8HDn@V;Rq(dQcx^ zZ|izMS@JZ8&M%_Wcxg6Sbt4ISgEL+!>> Kyoz<*zYdLp9 #K=wQ`p@493gB4NQH-hM4ezP>J!pUx(`F -MR{B zfb>s9~%bYnvjGiyAA!FWa9d-U7B7#kO9nV+#3v-)81{ znNh;@PU5WW2bkD>+d`SkmN{QssE}}Z?tcCoq$Y9anbv9c$_u5G;ivIokrReS*4X9V z0BK9VUl-oIQ~;9B6kpQd-)ppsY+3yLE@>hfFTq47Ic`CDk&@?{yQrGkse5A%fO&v5 z8OV(iqs!KC`iuCN@Pi|cl#%;%5d4}}SYk;n$dPpu@a{X;r9IP_ZVrPT=6dkr^_hj_ z`q)X&$9c_R1h2@p3qg_EU8a@K>Xxz~^V>WzjY8jJ-bc$Og xKF`rpQ@W`HjJvkK8*JMSdjUJ({`}-2 zbz{u0u213yKt9txG2knpCa_QSc~UOy^^(^IPAl_QDX?Fp+ZRw&gINWX_e~Xo2$F_y zcAD5>jprJu@7GK?j)9*xPrEo*qw9IieO~L_EGzNO<<@_SDjJ_0Fs!k>79&NX`htwT z9;WdGb>2zK{_K-epfA?!(({wba Y1-I@{7dWzFXlbQ5dI=rKWHe{X$^k3MZ>MI? zD|ht#&RF$Dn(ZOaq8efMZDOZxSyB9Xi#j>BcDTxXYFEKzVIWN)bVL2A?b2620W`8U i$n7QwN_8pPL1e$J@iu}fVfoKr9f+pBM!A~Z^Zx>Bctqd; literal 0 HcmV?d00001 diff --git a/src/assets/images/index/6.png b/src/assets/images/index/6.png new file mode 100644 index 0000000000000000000000000000000000000000..a9db9c3ae20942ba02f54a15e1a41d612cb2dd39 GIT binary patch literal 7008 zcmaJ`Ra9Ktmc=a)oCE>{2tf)f912N-ySoJ|pnw8W6iz~LC%C186z(p;U4uIWcL**C z-rU>ozV45Hea1Lv%b0Vnxz=7EdyEsRrXov#M}>!if IB1XGmoEY# zj{_xKS`V)2Xa#pOgMm@rSvs17>Exki)?f{=nWe{vey}JC3OXZ1OAoH6tOT-fgmRkw zh2eCEIz6&cP( Nwof}GqO7C<17PEeTB(#+hDix3I7<7m$aGhlk@4!Qt%T05@~zaBzP0 zkAf7~*#ZV}f AePGk0`>i!nS}{qG#0PXCs5aQ;`F9xKM>Zsx?r%?bP~r+ rp(edzd0_j+EAr6*~ZqBTK6O@%f@(#{$GY1Q>yp$NjqXZ`eVhNHK2J*{D z@e1<_3kz^_%WzBZ@bgOw^6>CV@XAO_N^$?gm2$Ljfr1_2|8On;=5k9&N=WehNA6$E z0CjqdECq%^T)~zyFh?le-#LRI|JjS+f7JUI*Yf}L@^>CW|B=h}Xol;rll@;O{m<58 z`}{TicjG=T{@wauhsS=0JvMg!J>Mw`%Cm8KsdrlL^VvrFan!vZN{bKYj7@R =R~hge2Y=J6;oL$kCtlU!p5VW0-}Zd^m!G8%~RVrKBweHY1)t^|WrhDQapF zEzG1($V$h%FF3f;z7^5x*@ov+(=G{Zi`=(O%L?79+)sI%>{%w|MT&gRS>0P6{m^mX zMC;!~OuzVf&vVv^)HHdZTC+{=&ibyIU7IK$H+%Uf0o^WR;lc8#a)xQmr69UVcwN>3 z*Hu42gp?lToP4JPL+l6|;6cK;NN3QETSp;|X~4sH>7(!&a=}j?n}PY=M0Vzxg ;8ffEba7TBB{>AUE6Sx$OeKdu5Cz3!-YVOS90rXI zzivco3JE48o^I0Mg6%LGZK=7#k^53qz3s%X9j5?G>kCq(K9^-mIDXr~wDF|qG*Iar z3&E)*gmUz}@-UE*9N6`~jbgrL{dL_XP!T4ZrHHjli?%T8;ZmWyhy0uwl(3|c7A(}R zbN4n}>m7>Ge8XjR=ITO}AS(xwwJ;;e8MI;$Y_)1oD>X-vv4W8DWN%iUNq-yUx=Y1t zFX&qsj#fIpW2+=t#JVf-lRJkklE@F%G(YcKCRFBUz}~kkA$&|r=XU_YcM-r<6KVHS zS %(*HwN)2W;6*1T$DkH`_9ppWzJ5F_A&?Db&REMbG=}HyqI ?+*Ii7=`}d#bQ+^llV0Y$y`VeD#4Y}h2uao)~&e3Oh$f+ z{J|-m03j3K kV3g!RQCeXuvnIakLTl(0Ll`G@NRKOm zMNn-rsAyl8pP%xY+BFOeID-tdFg27XTKDL8Y<}KXtuH!`!?A)f*0F6vEG4k0pJ^=C zfi-mfk!Mq* Mv3Vyl)tsW@7NdtSe-RkhIFVhQxB|k>Tt^h z=Fe9GNDsDx3>O?_JYhzJsMkjhKMk>W`u8E6HX73B?=#<}mNq>FCV8dDTQAQI@qh0^ z7Vrw+pgVW0aNSrl$Yd_5LFLtc`hFTBPp*|t)!z&|99v1bAYb3Ou&1r=<5x=}J^1s7 zE?nZ~LqXNx>3!bjoFG#hPM_^mVPaVMS5fOFhXa=0#*s0#>_dVs9qFz^-z$gh35KC1 z7LS9~mYZO<80+Afe2z9+WTOej1m!Q2x>o;w=MUAVHPh~MSC%lJ?cW1;@8k29lbQFJ z%g{1>GdB&jw;7|a8$GQOO?dnFk>${@=|Hih<>`rjZu`xNxsnTZ2r=Tu&ud!Px7|bB z6@O8fbxta-O1{28PG3`=oe@XJO^XKlMz!^VQ*{`zdCS6euXJlN>Rp*OkmQ1abG8nT zR-Zo5^HjohiBS`4T=S;)8-HQ&R%^0*R*W=-69$JwjXE~q(uONF@v(1zN_zHt5WAJV zk9ouG<8IQ;xYMEbFMH3z(MK-9)IrB<9R?!aWa;`7w zr|wn#Bj (tWEWe(lVrl!K@=EiKgfr{VJ<6YVX4!>gNymuvWL{JPY67Eg~AD@QK7LNZaVE=Za zWdGq;BC~! ;<}JE5{#hhgui6u!^z=xtpqYj*#Ung0^9mh%Tu ? +RnRAJ#ElPnd*V=*Nr?{^uJS~bvGyfiQq^(5-? zfAij|y=lp-%>z5mvn^xmqlHTHAyRUWEg#q)jz!cj0;_ P} zUXt1#?vvMw-h`*@vC-0HiyPON<(+EpP K65p+EKND2lby7IM&3xq~?~k5p bj_%eLU=MXvnQsB1r}TK>fhhhX z=_r|_kL)(BYpvfzA?bx(+VUNL{;1%Q?X;wd24*j);T->*A*hrhS0tG7h(N@oI(^iN zj;+6RV-6~;wko9o*abAo#Ktdc_~^6q3rxK#!LMX`Q1rN+K_!%Y-p4fm#Vxgc22CE9 z5fx3D#Hr<-kL-$nSITJe=WC59L4Y;Sv%o!-MS{WyOLal!6Z5_0hZylIK{aCxj%GRO zFl}U|+|9wXJQc)-Z~ai#>8R@T%uU8>QgIF%?kvH9!l%9~FaCn9r62uEEPJG%seCa? zLV>M(j>jbQbw=S2V&!BC2;+yVRaK{x58rPYY!Mj{z7T~he^k!ud`A7r^jp$xPx2pX z-Amo%Tsj)qPLi9$@i?xa*u8 `s!4ODZqwy)*m6 z$qnqc+12^-U^Ca`RETJiFrzvNQRgcxQA6_GGaruSyD6a+#w*Wv=yQyTmHA(%5b@`o z{2Gyd=nuieDgByi^cDIFF-n12+)dSz-E_3qD&DtqK1q4+lLkj>bXY2jiXCXo7EzyV zxrsG&z=yeA-GaZ`jkK)0cjk(pQ8I=0unT;UyW7yNHtit6RLZ_$GGS535w=a{X($8O@b%3>)%C2c?wSV)I=mtGM* d;g;CzBoz37cq(zKMfk z8=CbX#vN&(Lipw(R@-j&^rwUhAf*$cI3Jpi&MV#y5zXW_+~5j%&MaJ&Xb~E(Wu(a+ zVT!KfkUL4%y8#K<;Z0t<^w@s3H(U5DB~aa+c&D3i^UA{6qGzUAHE&LyBh3Rqs~@$u zk0h4<=#{X!GuXSV9qm^uz*a_HqgOwtBZy^q?)s|JfdtTqtPL!IH?Y6_xZ6)UWq_Ue zOrUGp=V9h}ulF?Fhp3 A1j2qCPfYr~Z?Bo8)Tf zAalIIEjzD=&eJM@dYS(cB}oBloHZDEn%QdXtw($Ay~%~_H>ttd&U3MiKc|W_J+N~S zAL~BUEdz+Hk*ctkDHvT`Y77NR!&I|0pkfC>QO<6`dzj^mh0C;1-Gp-OSS{g~x3%79 z%oa3q{ddTc2%T~LwAF@A3ub(|#F|~C(v)~nv`2HE(PHb}&-Z#Y`C$}Cslb+d&%5fM z3(rQjO_iEM7!9lHyRi*C?z{FsM`vJVcB>x|^ol5fU{>X8A5XlWG<#A=rHe%IlRejY zt@$NCI4)x2oBgW>SeBPHv9iQ)RoUPoS9Z0crPTD`hE_N)2~)$Dd-g!gYJ)ACeEDiR zU|rY1u8Akci^|+IBse%AtwkCWAw$dQ!;?+lc`6Zsk55!`Jf=zDys@~0mqPJvkO&~2DY>M8855PGC}u(g)f9JVXTBY z(nD8;>9+y(Yel1Q_bl#*vtb7a$Lv!W*QE73yP^ypDVTcWZ`lzS32}=2K654fgaT>+ z6)GO4PHUhY8uRyWG{u>n4(~ll5CM!69Dtw~-A4h5u^Rkn@J3r9@d;wB^?sY@43xtT zWn0%4A5vr1El*fO#tP*$J>v~*k+W|f2n%FTY#gG8vfg*bOju$E)mQ4VLoj+4{Mx ;I$fH7!Lw8S(U&qAPCPuGQ(J~citW`K%ZcK 6pnA#G+I6?S7bh=Yd_jQN0!NBeQI*J6H|TH3*B=B9^;WAFjjVW-7__ z1uiA24i;JGcJ8Hf^NX{7agi17JII$&zPD*Qk}CJ*CUIqlz90>$;Yzda3r>? |`Lnwgi}14L5vKWF>K`c+1hka4N^0{o36CHxAmL7*6RV33i57`2&D zvRQyAx9GHu332=jx2JDY-KPtMb0~8?O;(g_(=ALSX1Nl$BR)g&Q1l+E_H9YU5RCMD zgJ&zco4vB)5`rF!QUfadgde>)?kV1!L0=It)_nJ7$)V$5yD4^jn7S|gMezc*N?Wmn zj%io*ltB7xZmK!o=Yp4|M&yVt%% 0A{E#updfa{K<<-X$s;YJGkEo=_xD43*ogaIK{#s6|NHdgDT zvE_W?^7YpdFu(Pj9=CHavUS8j#z;Zf&~YH6;;WgGPWy9OlisOFtwXus_WQK<5U{J< zS<8xwP^uI#H;hZsixao7n?9r-fcGRV7p1$HcOe_joy`tPpSw9kEPoeoAVr8!99=nR z7t>0nSq|{uQhX1`8qxKQk_gAbf!<%)7rzcO7cExbzHMo8ah0)f#=&_qQ{naYMRsvA z)lf{7|IACK7NeO3&Srqn_BVP2rkT%C-?Avd-NkQPX;XCq!2yuK=Sfef%R}3PAK4ai z ;a=emUo={_wk3 zbRT4iezae15~9L{- xe>eKo1GSN^^ou19SBf{cn2+IMhBZ#FT5Mx1RcP^? z9}8|Sw0>9i_aniO0I zYCMf>O#Cos0h*<6DW;7n=QCG}r@vxCCbu6Z&lUp8PZfl>F)T1|AVnXyg{nTF*~e|z zp@$Tp(hP0Vf4`ydYIu7o;@YQ!akNAun?k6WCSUMQ2kFl!-tRO} L!8EH8r$V%z=3DG@9q6|Vu9 EACCf4?z*c5#kfx-*-f z|Al1Znq!l)Wy&U=GBB!nY1g434oTJCmGntr(uc>TB<|Hr@)1U o=9e+#mwp-4+i+1!GvviPM_%rMzZf5M)%2{K8Cy_RxhtGPZWsZ$~7<{ZAssf7^ z`P}7jKe{sTDRXMmeAd^u*RU{lJf DkJVebp@Y^-R-&T^7>Bdu2jJ2fLP*rbHlVpO336 z3a`8Yzbm+ZT#RVTz6E+(t#db_-#X$UD(a{B%44QHTw=GflymEV8g%&l=ES@*&VKES zH{fY|ZU=Cy>lTp;#0{o;Y95iuMi4SIJA6YH5l9)T+MSSSW`}%&teSG=n7h~JpP44< zHhwli$8);Yd|=Lt1vHc&+2Y^)s1a$ChSd*Oo~S6;@@hhsZ-@)y;iyw1Z?hB1#elt8 z#ga9;-8LHEV!8cyk4+VeJ8vX|<0EyFP$VnH>PQ+CE%6J(s)(sDoaK~ttW7Mv+AY2O z09Q>8@(jv12{JLLSnkne(g_}^anAE8;xA6$vh*{xfvRw;vD>k1YR&}DQ?i50IEIoj z)>${2BbWyH>@*i9u(WE30sO78sd8^2BOq!h4 hfo#1aGC9ty|5SW1S<*r>0w;-qBN|G0CHxvX2%mb z*=I-?Kz#yu(r(LP!TZ~zZ|8?0$|x^21;dII6e* Tk)Mb%uQm>x`7?DM8I@V?E zDfg{R**4D3>Mwae5$aNLXxtTjkYL!5u~6VhD^vS9FPq1%`X>k4opof;Tg5~N-tZT` zqP+!>N35k4&-Vn9stG1gHq+(5de&~teW_K;ZNbCTZsaK-jKyZ$N4^zld ~!A;f?INK|Y9n_VQEjE 3!{QDN znXkRIyyRTr$ON9g;1N`kVXY&4v-zGMsmHpiC0msX!l=a{ikw1+IH_30wpzo6`#cYR z_g^*2Kef{}%!aN&X@)%2D56h0X9WucgWW3~(L&X=MqY{tX5@$Z9Wg5e2sgZl_lt}) zhpKqIq<();_Gan!YkIom?%~-}pD(KX2h+@;u~%6ayq#@}{P=g3yWK3k_*^B8%uw%} zZ#fNnOC3F=fqjDO*v}0Jh?uO|FtzG0`^`2p%#J?2D^gpBC;`);vFn<)4-aK1=qN+0 WCdGg)_42>|dC5zwNR>*M`u!J(jTuG& literal 0 HcmV?d00001 diff --git a/src/components/Echarts/index.vue b/src/components/Echarts/index.vue index 0bb406a..05bda03 100644 --- a/src/components/Echarts/index.vue +++ b/src/components/Echarts/index.vue @@ -7,9 +7,6 @@ import { ref, onMounted, onBeforeUnmount, watch, nextTick } from 'vue'; import * as echarts from 'echarts'; import type { EChartsOption, ECharts } from 'echarts'; -// ============================================== -// ✅ 【核心修复】正确的 Vue3 + TS Props 写法 -// ============================================== interface Props { width?: string; height?: string; @@ -36,6 +33,7 @@ const emit = defineEmits<{ const chartRef = ref (); let chartInstance: ECharts | null = null; +let resizeObserver: ResizeObserver | null = null; const initChart = () => { if (!chartRef.value) return; @@ -66,8 +64,10 @@ const updateChart = () => { } }; +// ✅ 核心修复:支持 scale 缩放后重绘 const resizeChart = () => { - chartInstance?.resize(); + if (!chartInstance) return; + chartInstance.resize(); }; const getInstance = () => chartInstance; @@ -88,17 +88,19 @@ onMounted(() => { nextTick(() => initChart()); if (props.autoResize && chartRef.value) { - const resizeObserver = new ResizeObserver(resizeChart); + resizeObserver = new ResizeObserver(resizeChart); resizeObserver.observe(chartRef.value); - - onBeforeUnmount(() => { - resizeObserver.disconnect(); - }); } }); +// ✅ 关键:监听 window.resize(scale 缩放会触发 window.resize) +onMounted(() => { + window.addEventListener('resize', resizeChart); +}); + onBeforeUnmount(() => { window.removeEventListener('resize', resizeChart); + resizeObserver?.disconnect(); chartInstance?.dispose(); chartInstance = null; }); @@ -114,5 +116,7 @@ defineExpose({ diff --git a/src/components/Holder/index.vue b/src/components/Holder/index.vue index 692d5cf..f97a145 100644 --- a/src/components/Holder/index.vue +++ b/src/components/Holder/index.vue @@ -78,10 +78,17 @@ import { ResidentVO } from '@/api/system/resident/type'; import { getHousePathById } from '@/utils/house'; import { ref, watch, nextTick, getCurrentInstance, ComponentInternalInstance, toRefs } from 'vue'; import { useHouseStore } from '@/store/modules/house'; -import { storeToRefs } from 'pinia'; const houseStore = useHouseStore(); -const { treedata } = storeToRefs(houseStore); + +const treedata = ref([]); +function init() { + houseStore.getCurrentVilageTreeHouse().then((res) => { + console.log(res); + treedata.value = res; + }); +} +init(); const { proxy } = getCurrentInstance() as ComponentInternalInstance; const { com_resident_type } = toRefs (proxy?.useDict('com_resident_type')); diff --git a/src/layout/index.vue b/src/layout/index.vue index ba01dbc..42efb87 100644 --- a/src/layout/index.vue +++ b/src/layout/index.vue @@ -1,16 +1,60 @@ - -- --+ + ++ + diff --git a/src/views/system/ComplaintType/index.vue b/src/views/system/ComplaintType/index.vue index 6b515c5..5584c4b 100644 --- a/src/views/system/ComplaintType/index.vue +++ b/src/views/system/ComplaintType/index.vue @@ -99,7 +99,6 @@ const data = reactive++-+ ++++ + + - >({ queryParams: { pageNum: 1, pageSize: 10, - villageId: Number(localStorage.getItem('villageid')), name: undefined, status: undefined, createNam: undefined, @@ -145,14 +144,14 @@ const router = useRouter(); /** 新增按钮操作 */ const handleAdd = () => { router.push({ - path: '/repair/addComplantType' + path: '/system/addComplantType' }); }; /** 修改按钮操作 */ const handleUpdate = async (row?: ComplaintTypeVO) => { router.push({ - path: '/repair/addComplantType', + path: '/system/addComplantType', query: { id: row.id } diff --git a/src/views/system/Decoration/addDecoration.vue b/src/views/system/Decoration/addDecoration.vue index 2fd08ba..79c9296 100644 --- a/src/views/system/Decoration/addDecoration.vue +++ b/src/views/system/Decoration/addDecoration.vue @@ -58,10 +58,10 @@ import PageHeader from '@/components/Pageheader/index.vue'; import { addDecoration, getDecoration, updateDecoration } from '@/api/system/Decoration'; import { useHouseStore } from '@/store/modules/house'; import { CascaderValue } from 'element-plus'; +import { getHousePathById } from '@/utils/house'; const houseStore = useHouseStore(); -const { treedata } = storeToRefs(houseStore); -const { proxy } = getCurrentInstance() as ComponentInternalInstance; +const treedata = ref([]); const route = useRoute(); const router = useRouter(); @@ -69,7 +69,6 @@ const formRef = ref(); const form = ref({ 'id': null, 'houseId': null, - villageId: Number(localStorage.getItem('villageid')), 'applyName': '', 'decorationCompany': '', 'decorationContent': '', @@ -83,21 +82,6 @@ const rules = { }; const userid = ref(); -// ! 投诉 ==================================================================================================== -function init() { - getDecoration(userid.value).then((res) => { - form.value = { - ...form.value, - ...res.data - }; - }); -} - -if (route.query.id) { - userid.value = route.query.id; - init(); -} - // 获取房屋 const userHousepath = ref([]); function handleChange(val: (string | number)[]) { @@ -107,11 +91,34 @@ function handleChange(val: (string | number)[]) { form.value.houseId = null; } } + +// ! 投诉 ==================================================================================================== +function getTree() { + houseStore.getCurrentVilageTreeHouse().then((res) => { + treedata.value = res; + if (route.query.id) { + userid.value = route.query.id; + init(); + } + }); +} +getTree(); +function init() { + getDecoration(userid.value).then((res) => { + form.value = { + ...form.value, + ...res.data + }; + const arr = getHousePathById(treedata.value, form.value.houseId); + console.log(arr); + userHousepath.value = arr; + }); +} + // 提交 const submitForm = () => { formRef.value?.validate(async (valid: boolean) => { if (valid) { - form.value.villageId = Number(localStorage.getItem('villageid')); if (userid.value) { updateDecoration(form.value).then(() => { ElMessage.success('编辑成功'); diff --git a/src/views/system/Decoration/index.vue b/src/views/system/Decoration/index.vue index 368ff04..3bc1ebc 100644 --- a/src/views/system/Decoration/index.vue +++ b/src/views/system/Decoration/index.vue @@ -1,5 +1,5 @@ - +- @@ -22,7 +22,7 @@+ @@ -146,7 +146,6 @@ const data = reactive >({ form: { ...initFormData }, queryParams: { pageNum: 1, - villageId: Number(localStorage.getItem('villageid')), pageSize: 10, houseId: undefined, applyName: undefined, @@ -260,3 +259,9 @@ onMounted(() => { getList(); }); + + diff --git a/src/views/system/HandleLog/addHandleLog.vue b/src/views/system/HandleLog/addHandleLog.vue index cc1b3dc..4b2614c 100644 --- a/src/views/system/HandleLog/addHandleLog.vue +++ b/src/views/system/HandleLog/addHandleLog.vue @@ -112,7 +112,6 @@ if (route.query.id) { const submitForm = () => { formRef.value?.validate(async (valid: boolean) => { if (valid) { - form.value.villageId = Number(localStorage.getItem('villageid')); if (userid.value) { updateHandleLog(form.value).then(() => { ElMessage.success('编辑成功'); diff --git a/src/views/system/HandleLog/index.vue b/src/views/system/HandleLog/index.vue index 22d8e27..f82d305 100644 --- a/src/views/system/HandleLog/index.vue +++ b/src/views/system/HandleLog/index.vue @@ -94,7 +94,6 @@ const initFormData: HandleLogForm = { const data = reactive >({ form: { ...initFormData }, queryParams: { - villageId: Number(localStorage.getItem('villageid')), pageNum: 1, pageSize: 10, content: undefined, diff --git a/src/views/system/InspectionPlan/addInspectionPlan.vue b/src/views/system/InspectionPlan/addInspectionPlan.vue new file mode 100644 index 0000000..e2e8c8b --- /dev/null +++ b/src/views/system/InspectionPlan/addInspectionPlan.vue @@ -0,0 +1,205 @@ + + ++ + + + + diff --git a/src/views/system/InspectionPlan/index.vue b/src/views/system/InspectionPlan/index.vue new file mode 100644 index 0000000..e30d1c0 --- /dev/null +++ b/src/views/system/InspectionPlan/index.vue @@ -0,0 +1,222 @@ + ++ ++++基本信息++++ ++ ++ + ++ + ++ + ++ ++ ++++++ {{ numToWeek(item) }} ++ + ++ ++ + ++ ++ + + ++ ++ 123++ +提交 +返回 +++ + + diff --git a/src/views/system/InspectionRecord/InspectionRecordMain.vue b/src/views/system/InspectionRecord/InspectionRecordMain.vue new file mode 100644 index 0000000..309f1b4 --- /dev/null +++ b/src/views/system/InspectionRecord/InspectionRecordMain.vue @@ -0,0 +1,161 @@ + ++ + ++++ ++ ++ ++ + +搜索 +重置 ++ + ++ + + ++ +新增 ++ +修改 ++ +删除 ++ + + ++ + + + + + + + + + + ++ ++ + + ++ + ++ + + + + diff --git a/src/views/system/InspectionRecord/index.vue b/src/views/system/InspectionRecord/index.vue new file mode 100644 index 0000000..05481af --- /dev/null +++ b/src/views/system/InspectionRecord/index.vue @@ -0,0 +1,223 @@ + ++ ++基本信息+++++任务名称 :+{{ form.taskName }}+++巡更人员 :+{{ form.inspectorName }}+++关联计划 :+{{ form.planName }}+++开始时间 :+{{ form.actualStartTime }}+++结束时间 :+{{ form.actualEndTime }}+++执行状态 :+{{ form.statusLabel }}+++创建人 :+{{ form.createByName }}+++创建时间 :+{{ form.createTime }}+++更新时间 :+{{ form.updateTime }}+++巡检记录++++ ++ + + + + + ++ + + diff --git a/src/views/system/MonthCard/addMonthCard.vue b/src/views/system/MonthCard/addMonthCard.vue index f7edfd2..07819f1 100644 --- a/src/views/system/MonthCard/addMonthCard.vue +++ b/src/views/system/MonthCard/addMonthCard.vue @@ -103,7 +103,6 @@ const formRef = ref(); const form = ref({ id: null, cardCode: '', // 月卡编号 - villageId: Number(localStorage.getItem('villageid')), // 月卡编号 cardName: null, // 持卡人姓名 phone: '', // 手机号 carNum: null, // 绑定车牌号 @@ -171,7 +170,6 @@ if (route.query.id) { const submitForm = () => { formRef.value?.validate(async (valid: boolean) => { if (valid) { - form.value.villageId = Number(localStorage.getItem('villageid')); if (!form.value.startTime.trim() || !form.value.endTime.trim()) { ElMessage.warning('请选择有效日期'); } diff --git a/src/views/system/MonthCard/index.vue b/src/views/system/MonthCard/index.vue index 1adc4a0..f16c711 100644 --- a/src/views/system/MonthCard/index.vue +++ b/src/views/system/MonthCard/index.vue @@ -1,5 +1,5 @@ -+ + ++++ ++ ++ ++ + ++ + ++ + +搜索 +重置 ++ + ++ + + ++ +临时跳转详情页 ++ +删除 ++ + + ++ + + + + {{ parseTime(scope.row.actualStartTime, '{y}-{m}-{d}') }} + + ++ + {{ parseTime(scope.row.actualEndTime, '{y}-{m}-{d}') }} + + ++ + + + +查看详情 + ++ +- @@ -22,7 +22,7 @@+ @@ -178,7 +178,6 @@ const data = reactive >({ queryParams: { pageNum: 1, pageSize: 10, - villageId: Number(localStorage.getItem('villageid')), handleTime: undefined, cardName: undefined, phone: undefined, @@ -298,3 +297,9 @@ onMounted(() => { getList(); }); + + diff --git a/src/views/system/NoticePc/addNoticePc.vue b/src/views/system/NoticePc/addNoticePc.vue index e29a28f..6ec0b18 100644 --- a/src/views/system/NoticePc/addNoticePc.vue +++ b/src/views/system/NoticePc/addNoticePc.vue @@ -116,7 +116,6 @@ if (route.query.id) { const submitForm = () => { formRef.value?.validate(async (valid: boolean) => { if (valid) { - form.value.villageId = Number(localStorage.getItem('villageid')); if (userid.value) { updateNotice(form.value).then(() => { ElMessage.success('编辑成功'); diff --git a/src/views/system/NoticePc/index.vue b/src/views/system/NoticePc/index.vue index 0f3f480..1e6e72f 100644 --- a/src/views/system/NoticePc/index.vue +++ b/src/views/system/NoticePc/index.vue @@ -109,7 +109,6 @@ const initFormData: NoticeForm = { const data = reactive >({ form: { ...initFormData }, queryParams: { - villageId: Number(localStorage.getItem('villageid')), pageNum: 1, pageSize: 10, noticeTitle: undefined, diff --git a/src/views/system/ParkingCost/addParkingCost.vue b/src/views/system/ParkingCost/addParkingCost.vue index 615c905..020d49d 100644 --- a/src/views/system/ParkingCost/addParkingCost.vue +++ b/src/views/system/ParkingCost/addParkingCost.vue @@ -1,6 +1,6 @@ -+ 基本信息@@ -108,11 +108,9 @@ + diff --git a/src/views/system/Repair/addRepair.vue b/src/views/system/Repair/addRepair.vue index d0e15bc..fafe8f7 100644 --- a/src/views/system/Repair/addRepair.vue +++ b/src/views/system/Repair/addRepair.vue @@ -246,7 +246,6 @@ const submitForm = () => { const sendForm = (str: string) => { form.value.problemImageUrl = str; - form.value.villageId = Number(localStorage.getItem('villageid')); if (userid.value) { updateRepair(form.value).then((res) => { ElMessage.success('编辑成功'); diff --git a/src/views/system/Repair/addRepairlist.vue b/src/views/system/Repair/addRepairlist.vue index 86e2a30..f27f1f1 100644 --- a/src/views/system/Repair/addRepairlist.vue +++ b/src/views/system/Repair/addRepairlist.vue @@ -118,7 +118,6 @@ init(); const submitForm = () => { formRef.value?.validate(async (valid: boolean) => { if (valid) { - form.value.villageId = Number(localStorage.getItem('villageid')); if (!userid.value) { addRepairProject(form.value).then(() => { ElMessage.success('添加成功'); @@ -136,7 +135,7 @@ const submitForm = () => { // 推出 const cancelForm = () => { router.push({ - path: '/repair/repairProjectList' + path: '/system/repairProjectList' }); }; diff --git a/src/views/system/Repair/index.vue b/src/views/system/Repair/index.vue index 795581c..d0cc8cf 100644 --- a/src/views/system/Repair/index.vue +++ b/src/views/system/Repair/index.vue @@ -127,7 +127,6 @@ const data = reactive>({ queryParams: { pageNum: 1, pageSize: 10, - villageId: Number(localStorage.getItem('villageid')), houseId: undefined, maintenanceItemId: undefined, problem: undefined, diff --git a/src/views/system/Repair/repairlist.vue b/src/views/system/Repair/repairlist.vue index 5fea44a..8efe1c8 100644 --- a/src/views/system/Repair/repairlist.vue +++ b/src/views/system/Repair/repairlist.vue @@ -186,7 +186,6 @@ const initFormData: RepairProjectForm = { const data = reactive >({ form: { ...initFormData }, queryParams: { - villageId: Number(localStorage.getItem('villageid')), projectName: undefined, parentId: undefined, projectType: undefined, @@ -259,14 +258,14 @@ const handleSelectionChange = (selection: RepairProjectVO[]) => { /** 新增按钮操作 */ const handleAdd = () => { router.push({ - path: '/repair/addRepairProjectList' + path: '/system/addRepairProjectList' }); }; /** 修改按钮操作 */ const handleUpdate = async (row?: RepairProjectVO) => { router.push({ - path: '/repair/addRepairProjectList', + path: '/system/addRepairProjectList', query: { id: row.id } diff --git a/src/views/system/Visitor/index.vue b/src/views/system/Visitor/index.vue index 48cb5fe..c256fab 100644 --- a/src/views/system/Visitor/index.vue +++ b/src/views/system/Visitor/index.vue @@ -94,7 +94,6 @@ const data = reactive >({ queryParams: { pageNum: 1, pageSize: 10, - villageId: Number(localStorage.getItem('villageid')), houseId: undefined, visitorName: undefined, visitorGender: undefined, diff --git a/src/views/system/carArea/addCarArea.vue b/src/views/system/carArea/addCarArea.vue index aae2032..eb8be8b 100644 --- a/src/views/system/carArea/addCarArea.vue +++ b/src/views/system/carArea/addCarArea.vue @@ -61,7 +61,6 @@ const route = useRoute(); const formRef = ref(); const form = ref({ id: null, - villageId: Number(localStorage.getItem('villageid')), areaName: null, areaCode: null, area: null, @@ -90,7 +89,6 @@ if (route.query.id) { const submitForm = () => { formRef.value?.validate(async (valid: boolean) => { if (valid) { - form.value.villageId = Number(localStorage.getItem('villageid')); if (parkingid.value) { updateArea(form.value).then(() => { ElMessage.success('编辑成功'); diff --git a/src/views/system/carArea/index.vue b/src/views/system/carArea/index.vue index 1069878..43293d7 100644 --- a/src/views/system/carArea/index.vue +++ b/src/views/system/carArea/index.vue @@ -97,7 +97,6 @@ const data = reactive >({ queryParams: { pageNum: 1, pageSize: 10, - villageId: Number(localStorage.getItem('villageid')), areaName: undefined, areaCode: undefined, area: undefined, diff --git a/src/views/system/cars/addCars.vue b/src/views/system/cars/addCars.vue index 996d530..ce4505e 100644 --- a/src/views/system/cars/addCars.vue +++ b/src/views/system/cars/addCars.vue @@ -121,7 +121,6 @@ const form = ref({ id: null, areaId: null, // 区域id residentId: null, // 车位id - villageId: Number(localStorage.getItem('villageid')), // 小区id parkingId: null, // 持有人id carNum: '', //车牌号 carBrand: '', //车辆品牌 @@ -207,7 +206,6 @@ function changeArealist(val: string) { const submitForm = () => { formRef.value?.validate(async (valid: boolean) => { if (valid) { - form.value.villageId = Number(localStorage.getItem('villageid')); if (userid.value.trim() !== '') { updateCar(form.value).then(() => { ElMessage.success('编辑成功'); diff --git a/src/views/system/cars/index.vue b/src/views/system/cars/index.vue index efb81b4..da3b711 100644 --- a/src/views/system/cars/index.vue +++ b/src/views/system/cars/index.vue @@ -1,5 +1,5 @@ - +- @@ -23,7 +23,7 @@+ @@ -109,7 +109,6 @@ const data = reactive >({ queryParams: { pageNum: 1, pageSize: 10, - villageId: Number(localStorage.getItem('villageid')), areaId: undefined, parkingId: undefined, residentId: undefined, @@ -196,3 +195,8 @@ onMounted(() => { getList(); }); + diff --git a/src/views/system/house/AddBuilding.vue b/src/views/system/house/AddBuilding.vue index 568f1b3..2e313d1 100644 --- a/src/views/system/house/AddBuilding.vue +++ b/src/views/system/house/AddBuilding.vue @@ -50,7 +50,6 @@ import { useRouter } from 'vue-router'; import { useHouseStore } from '@/store/modules/house'; const houseStore = useHouseStore(); -const { currentVilageInfo } = storeToRefs(houseStore); const { proxy } = getCurrentInstance() as ComponentInternalInstance; const { com_build_use } = toRefs (proxy?.useDict('com_build_use')); @@ -100,7 +99,6 @@ const submitForm = () => { if (buildingId) { editBuildingApi({ ...form.value, - villageId: currentVilageInfo.value.villageId, id: buildingId }) .then((res) => { @@ -113,8 +111,7 @@ const submitForm = () => { }); } else { addBuildingApi({ - ...form.value, - villageId: currentVilageInfo.value.villageId + ...form.value }) .then((res) => { ElMessage.success('添加成功'); diff --git a/src/views/system/house/AddHouse.vue b/src/views/system/house/AddHouse.vue index aa4aa24..dd45816 100644 --- a/src/views/system/house/AddHouse.vue +++ b/src/views/system/house/AddHouse.vue @@ -4,19 +4,19 @@ 基本信息-+ - + - + - diff --git a/src/views/system/house/components/components/table.vue b/src/views/system/house/components/components/table.vue index 30aae6b..a8c7daf 100644 --- a/src/views/system/house/components/components/table.vue +++ b/src/views/system/house/components/components/table.vue @@ -2,14 +2,13 @@+ - + {{ row }}楼 .TableBox { - overflow: hidden; - flex: 1; - .column { - width: 200px; - background-color: red; + .el-table { + height: calc(100% - 500px); } } diff --git a/src/views/system/house/components/unit.vue b/src/views/system/house/components/unit.vue index cb1b7f7..632e43f 100644 --- a/src/views/system/house/components/unit.vue +++ b/src/views/system/house/components/unit.vue @@ -77,6 +77,8 @@ $primary_color: #1978fe; } .UnitBody { flex: 1; + overflow-x: hidden; + overflow-y: auto; } } diff --git a/src/views/system/houseRental/addhouseResident.vue b/src/views/system/houseRental/addhouseResident.vue index 018729b..2edd54c 100644 --- a/src/views/system/houseRental/addhouseResident.vue +++ b/src/views/system/houseRental/addhouseResident.vue @@ -4,7 +4,7 @@ 基本信息-+ @@ -22,7 +22,7 @@ - @@ -30,7 +30,7 @@+ - @@ -57,7 +57,7 @@+ - @@ -202,7 +202,7 @@ const route = useRoute(); const formRef = ref(); const houseformat = ['东', '西', '南', '北']; -const form = ref+ ({ +const form = ref({ id: null, houseId: null, rentalName: '', // 租户姓名 @@ -251,6 +251,8 @@ async function gettreedata() { ...form.value, ...res.data }; + console.log(form.value); + housedeviceslist.value = form.value.facilities.split(',').filter((item) => item); const imgurllist = splitStringUrl(form.value.houseImageUrl); fileList.value = imgurllist; const arr = getHousePathById(treedata.value, form.value.houseId); @@ -354,7 +356,6 @@ const submitForm = () => { }; const sendForm = (val: string) => { form.value.houseImageUrl = val; - form.value.villageId = Number(localStorage.getItem('villageid')); // edit or add if (userid.value) { updateHouseRental(form.value).then(() => { @@ -363,8 +364,7 @@ const sendForm = (val: string) => { }); } else { addHouseRental({ - ...form.value, - villageid: Number(localStorage.getItem('villageid')) + ...form.value }).then(() => { ElMessage.success('添加成功'); cancelForm(); diff --git a/src/views/system/houseRental/houseMain.vue b/src/views/system/houseRental/houseMain.vue index 8eb354f..9262050 100644 --- a/src/views/system/houseRental/houseMain.vue +++ b/src/views/system/houseRental/houseMain.vue @@ -2,9 +2,12 @@ -- 基础资料 - 编辑 +++