From 939566e7d8f58dc5f6f09840105af0f9b5cd7055 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A7=9A=E4=BF=8A=E6=97=AD?= <398847134@qq.com> Date: Tue, 20 May 2025 09:48:38 +0800 Subject: [PATCH] =?UTF-8?q?=E5=86=9C=E4=B8=9A=E7=8E=AF=E5=A2=83=E7=9B=91?= =?UTF-8?q?=E6=B5=8B=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/assets/images/smartFarm/danger.png | Bin 0 -> 9914 bytes .../src/assets/images/smartFarm/normal.png | Bin 0 -> 9882 bytes .../src/assets/images/smartFarm/分光器.png | Bin 0 -> 2115 bytes .../src/assets/images/smartFarm/悬浮物.png | Bin 0 -> 2032 bytes .../assets/images/smartFarm/水质溶解氧.png | Bin 0 -> 2150 bytes .../assets/images/smartFarm/水质电导率.png | Bin 0 -> 1931 bytes .../src/assets/images/smartFarm/浊度.png | Bin 0 -> 2626 bytes .../src/assets/images/smartFarm/温度.png | Bin 0 -> 2137 bytes .../src/assets/images/smartFarm/酸碱度.png | Bin 0 -> 2111 bytes sub-operation-service/src/router/index.js | 16 +- .../src/views/smartFarm/components/common.vue | 2 +- .../views/smartFarm/components/devices.vue | 12 +- .../views/smartFarm/components/leftMenu.vue | 4 +- .../src/views/smartFarm/index.vue | 6 +- .../smartFarm/inspection/bugInspection.vue | 13 + .../fieldInspection.vue} | 418 ++++++++++-------- .../smartFarm/inspection/waterInspection.vue | 253 +++++++++++ 17 files changed, 522 insertions(+), 202 deletions(-) create mode 100644 sub-operation-service/src/assets/images/smartFarm/danger.png create mode 100644 sub-operation-service/src/assets/images/smartFarm/normal.png create mode 100644 sub-operation-service/src/assets/images/smartFarm/分光器.png create mode 100644 sub-operation-service/src/assets/images/smartFarm/悬浮物.png create mode 100644 sub-operation-service/src/assets/images/smartFarm/水质溶解氧.png create mode 100644 sub-operation-service/src/assets/images/smartFarm/水质电导率.png create mode 100644 sub-operation-service/src/assets/images/smartFarm/浊度.png create mode 100644 sub-operation-service/src/assets/images/smartFarm/温度.png create mode 100644 sub-operation-service/src/assets/images/smartFarm/酸碱度.png create mode 100644 sub-operation-service/src/views/smartFarm/inspection/bugInspection.vue rename sub-operation-service/src/views/smartFarm/{fieldInspection/index.vue => inspection/fieldInspection.vue} (50%) create mode 100644 sub-operation-service/src/views/smartFarm/inspection/waterInspection.vue diff --git a/sub-operation-service/src/assets/images/smartFarm/danger.png b/sub-operation-service/src/assets/images/smartFarm/danger.png new file mode 100644 index 0000000000000000000000000000000000000000..8164df4f11d8b4743a1c056d8b41f1c4a4edd109 GIT binary patch literal 9914 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 Tq&+nn0)mW$f_R0fQQ-dpL&2m$ literal 0 HcmV?d00001 diff --git a/sub-operation-service/src/assets/images/smartFarm/normal.png b/sub-operation-service/src/assets/images/smartFarm/normal.png new file mode 100644 index 0000000000000000000000000000000000000000..1a6adc592e840c1001c253fedd5b03049df120a3 GIT binary patch literal 9882 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 Byx0H$ literal 0 HcmV?d00001 diff --git a/sub-operation-service/src/assets/images/smartFarm/分光器.png b/sub-operation-service/src/assets/images/smartFarm/分光器.png new file mode 100644 index 0000000000000000000000000000000000000000..ee1f2c7bfaf5de08910ac25d5fa1aa3d897e42f8 GIT binary patch literal 2115 zcmeHH`!^E|7~Un#buDJGhH~j564A)WG;C;TE+vIX^cgl%TZ|>8nB0=2%WA|iM0D|? z<+A!vQSLFV+?wlrwuV@r{)O-7o^#&!InR5}`^$6A^IZ2Jx~M55l>q>N8Uc?Zt+B`N zQ3S8;+78fzHCh*nJ%j}SsxnkoPARNuU<}E{5m4~~B?16I4j%4aPA(Mpwfi6Zap3i&EGsli++k0$F?mp$j!QABNs zwaD}ma9FQn%`>+{e<^&3+9=KV-+5@O$VE8Z@&yD9>Z5q)8oi*8}htt z8)Uba>g z0I68lcJGYla}3TS?DfSA8(|YS&+avM$fPO!CCGZi25$|hc)<_AW361O%rb5=_et3! zdqMD8B+qvBzpc(0(nGmnCs%yN`;a>r1z?X47dV^;D8$ju!dHE!-&XA;v8Tsch|%_P zC*^muA?{uSkJwMzbC_AEywT}r07Ue|uJ~?A>*Kwt}xv7S&Z=Z4{OZo+DIFaW3 z0$BexQiMly&s|*wk6W~z$mZ^+b729yheYJECRRr2OiLoajd)( zn&&{}FBf-IuXx&;q~1RpadTWdq#`Wbpn z3j<*!E>dlS1Ie11nv+}$GF2R;JpJ~Bs}MUn_7g1}K?M}h=c(aJOZ*;PBk@_wufC4( zh3MD&9Y@W8cpVbxh`#@AL)`3s=rK1fJ!~*XS;+Z5s6<*{HpY||x*9+;eE=z$a=Lou zeXu&nc5l6ckg7m|i#oEH-l)z)B$}#FNr7S(J;^a-pf}>j9zPG?gdHr7hHotSY++@Q z#d9yvdWiS)(dG|4F3u#!WV0Sc7o24j&04lbc-?65)1#nUtGtgs!Rb{dpObnuK6GHi zQ0%B!CZh>Yj%AvkN+!aX0?Gc|PQkjsBn0y^5z`qT+FF=hWP1kFX>;u`M_o8W9ZJ{X zr9)glm6&{VWAg2+0}q=cb{vvCCE-A<7P6CZ6<_}ty9}O%a3gVWm)=f=G5xFpC`~&*P#u(FFN8Wz`EF$_zH5<+zwN!VK~L00 zCg*CAn#6M6%rOu|!TTS~c9N@AZ?opz!9Or>rYw3DCzoY@-rO(leyiudAT161*dcA` zSo0KuW`FnUAcl}=xhu*xlp{ZVDPrPT80!~$%xu}|rzlsxp!K`v2~I>@g=1jSe{u@o APXGV_ literal 0 HcmV?d00001 diff --git a/sub-operation-service/src/assets/images/smartFarm/悬浮物.png b/sub-operation-service/src/assets/images/smartFarm/悬浮物.png new file mode 100644 index 0000000000000000000000000000000000000000..155ed1eb89a8a664963b279a30ed558fbbcded77 GIT binary patch literal 2032 zcmeHH`8N~_7#%YP!;lzDb}F)jXCKXznM~7IrXg8t>>9F+B`S)UteH-cb&yEU@?)kQ&4sotHvjT< z2c~z6;y2gD;Z5Q90aw*DUskHy>jutyg|(iz$tNqL)Zy{*xUs;7s&?E@aVRTi!A$R- z!7&XqN!iI)+P~_-BL+QcS`u~Mq&zV>Tz<~|Nzg=YtgYpMofUp&+|=UF;E2iezRTFZ zBXzD+PmvoC$cqI@X=VD3F3vAT+T;J|#+>OfFAWjB{W;5;(n#!8!F8r)8imq|Af7eP z?iMOM9Xgj?;U_d!M~E@JG@9_~bcs=Q#p$DZieXKV)^;tE>2r=SOBjRh8S0$29C_XD zt)!QiiA0K^AS_wX=Vgj@dEI{qI+Tz_e;=Kc?CM@p>K%sn`p+}(tk$m9N-_U|;jjez z!SMoaby5|dA0g&((%Rs<2fKqZ=Z!M%wf)COtu%Wy+_oAEOS+d%*?fuNvY0MBn|i? zGy@Z|oA9;G%zsEL)-+@K$z2spbpPNNw5?j7aa|8n%#FO`<=?<(WbkZ{^T2NtQsvof z#Dy80%^s5){GU z;@PxG7*VSgvPu@xLqoX88}53Q3mnnX!VF4#|3!Nc2sKiYK2vV(1+HKG;K!bx$2b(f zrM770gFc%Fi7Bs4SLA3%ueaa$aZsU2GfSvvjC%y9#ANd?jE3np5v8m(i=(#50aM!L zfwrGo+fHZP;JH)i7EHKBs;Q$1s`_^$CA|+E#3*5gy2tbBixM>7c~glHsFIIa zxo+CouBx@z*$*D&c|}4N5*6$Ii^F!lrvlFaljx(pIu2jZIRe#AmbZ_mi|1;O3aj~h zz`H3>a;mDmmWuOe5I@vz>|n~Us?$Aat_HZHl3QvvTQTAA>QE9Rv&YKvv{jxE-Dm=h zEB|zIObK&~+!Igk-|7c`Sa&>dZ{)~07to{$hAXRzMUH+987vr{*3jJxw|p1hKs98@ z&*B-Y?wnL(AXuIni44#Gd93wwn7IX^I6AmAn&XUfjed1{?tSkcN!2J8azqujX09Hi z?@=?Em`1LK9XyHJ>{uZ}Ns}F=IQrD(0bDDsEjGZGz)pO9pY=w=2o>wUffZO0qnR#* zNf4dxrSyd*l-Vu1vGGZn&$)>MWQ2Xm%(s0PSSz`Z`VOH%INR10+N!#4+bm#7Zt^oJlFlnes0gLymR; literal 0 HcmV?d00001 diff --git a/sub-operation-service/src/assets/images/smartFarm/水质溶解氧.png b/sub-operation-service/src/assets/images/smartFarm/水质溶解氧.png new file mode 100644 index 0000000000000000000000000000000000000000..70148538e2c69b1c99728cbb79fb9d5313a89feb GIT binary patch literal 2150 zcmeHI`#TegAKqNT7$ujKOS#*aToUJ0nm9~j%jR-g4LOXkNLnF`9Elpy!H99leKX7D z8)^8ma2Q{?brXx7dn!eqZ`XB(|pFppV09e8pn{PE-;iLkF}qR zdiaY!h3@24_v(iA$B?w^r#!ErqTdx6xw+qe;!vq(_gH!?BHO;yHLp9pCVW6PLodZb z8;z*WYVK6{-9k+Dpi<)qdpOpsV>m|;&39Jn!VsOOi<7iVtvhjn6+j$mrD2j7+FV~l zZ$5xGiL|}jNR)04Y1j1?+pn9)yi9z0mSczJy%#s|)#TY1L5C-4si4B6V`UHCNcblYo*INck53V%JOB_ttu zv3kRW={7g_c8sZVI=6QEQ>^5Q-^_U?15}$^QuSYsRo^)-)E33}VN}Sd0$`b%c~-0> zyf!vJWdQo&S7V?NQmg!mw!Tyn^Dr$Z6oqBCJcZX>qk~(oWff}$0E%Cz**zN0mr}uM zhMk>2zm#YQ0W9dNnYfVmD!?L()GO>xD79f-B0;0fM*CWk39ncDnXJpw#Thx?t=Dzx zBMLAH;W2z$JC1d$Wx}P#C=}UL|iPk}%+Dbe-|; z(rIf+jo3@l!5>@r$f=E!dHc@Fl|O47(_-4byD>8E+0nxdryDgy+Og&DtwVw~{T~KD zmP}6zXD@zxUYJ(Um<;igt(c(CXyX$g7xD!wnJ4N(L1XWD)UjSkbyotH(JcN=2FQ}4Bi5{n z`0h=Fm*vAe!0Ul*fq^;laEfy3FHY1fH2FEu(kEVer8FtozHUziR1JjG5`o|yigd(2 zcrL~JxFKl^Lw2+bWQQs3q2vlIfS(hwv_OsHqK_ODv>=gSFP{J^2|ZI2KT-@_6$l_f zTphVRFeI?(!qvKN2ivhP1d#Efr(xXoAGcqrD)Ah|8BZ4vg2^^{>1nR9b}~O9W1Llzsbk z!LKBgzf{#?|L2{d=WZ5mhtp3g-~fT!q&8XBcK7r>VG2HlqkjS&r?{-ItQV%DqGG8q zRd2Pc*^t&XAIC7+PO3N0AJ<*i@NH4Uj zIK>}=LxeyEYx0uec1b66qVL0wJ-6xp%tMUw(wkhLa(KIHlP{YaseIQj%Ty$5N{Fs9 zt{2UG?m-O4pCHlV>Ic5HLj4_0tslUXK}*jI9h$r|&pe-gG+)Z4-1X1K3_eoS8YT6f z##SBml)>;^`*L?Cps(ehAa9@CTx6K6y{X*jZ(wewDsmBi55Eh_XhUH^ITfwLFdHS| zR5`V$@y@NA_1LNnw+W)`W@Tfm`>7t$A07k5$(AcP^8wqY*NpeoZ2YY~Ee^$tHi0ND Q{qYG94zBieJD-Gq04+7`TmS$7 literal 0 HcmV?d00001 diff --git a/sub-operation-service/src/assets/images/smartFarm/水质电导率.png b/sub-operation-service/src/assets/images/smartFarm/水质电导率.png new file mode 100644 index 0000000000000000000000000000000000000000..d2782cbb0792deef51de50966b70e010f152d1bb GIT binary patch literal 1931 zcmeHH`8yK~9G|5%n>pv)Fs~!li(<|Y-Z2Yn)<`Jl>v&=NraPtufS1(kZAgWZ~M3Bccr`}hgNo!gt^9q!%hp!`(VdFoR?(E z_~wb)pn)cH-Px88S<`>Ts6^$h|4_c(cF)vmlB9Kd?$VbAi7{S4Zt}<-%^d5R!Cq-k z1y>{Y86VpvJC~mG4jYw6hssLYzjuqFx7K7LytA1iHcv2WXZYdq{m?`WN68DrjZ&;f z;(=9)4^#f2BUQc9?oQnN9H!?+y-myi^mnnzN8Ghe{l^&z2z+Q=wR|MjS9aX4buT7p zJl2}*_PR7@)~nA-zGd#Akekjzz=IfQzX!6B1kmS{knNpo|rt9uq&=r z0EO#0rrs%nLAxOVYNX+~(_F(>@bU;JRHQRL45D=+Wwk&qABQSSVpAL9bVb}%liR({ zGDLgS+c(nhzMYIp3jSv@9v1K>YgpnY3{!%O9Y9c{jsys|Aro4@jK!K%7s>?+&;zQ3 z(w7nq^mFYQ;@PD#UmLYspOLV2G#9Op&OzDW2bemkm12E&v^>*5S%mn5P`H!(AWm3& zDyw{n=8$2<)r3yII1Blt3Maj8pr?Py1kWtz=hvFr-@Z>@dDEb&PO22tM}Eg)eBQjxnLPn5qQ zj0w95tspo1uxc^&)?!y{gd}|tupFim&@vKBI3ZbG)$=VOlx2|#TG*$?PsQs~%++37 z%z3BSpwOE=u^u$lHeUObvE1Dj+_8#Knn!S>@-plqB`Z!X-7&D$NxT8X_7R6M zhk@H73Mo$}T9NeX0hNFeccZ@89(S;tgX#GDNC#XGR-65nC)5{aS3N8QOr5Zv2@$>Rwcve+TY+*u#ijprCN@d7M~A86vgUpLb$i!O z5vh9q7K293nMKM3kKsDz#xiQXNzF)>`sb~w4<`pz*aeXs=U`GIhhk~Tk;Akh{k+y` zc8NNEd5|HN>g7oZ@-o^%#8cTB5|MO#`$C*RW7);SAgKjW!Y?j#FW=-2HJ=ttAEm~M zE$X98YMso>bOv#(MzhD#?R}kYS6nQ&T{8o31oiJQI^hRxIgb~M;>)7nvviuHWNY&q zyp0TRv|Zy*7j|k|8*)Ou$>8(hjhajyWF~hfYqbO{>Ey@qQBk25H0d&As#^+mKE=zN zQ;KVRd%wpHtvl?~v5K~%x g-Egi0!p)HT@|LMO3{@)YG zu*0#Bepn8*v$hB9@pEwlfA1e`Zt?Q$uFhpk10()VDSk| zi*OhgEB|PNn`-7i>$|Caaan5dDG@E3Ev5iImdUGt{LN!%IO z_1K@L(&ClmhB3KNl-FNZZJ&-H|TK`TRX z@$tg!af4-2;{vcGMT*B ze~A7BA?J=2W^$(PxTD&NRLFn6>lX!i2~0n)tjglu-bzwd8Y@VzaP&OY1y={iaZakW zj40|`;B$O`s|^W&vS}6o+C8odmldi7@{~f@(cxA(^9|KW!GhW~ZW1mOXS$|+t_vt9 zu=M$OIG4wx;w)ZlEzARtY3+a>dpj!?=?8KPX@Pdy&+QC_!CTdu>Xx%bJ+=Z~&iw%>aEm=_EW9 z=iGO`J)92>HIi;uWIH?j+>S2AsONVAU^m1^cz~nL6{7^zAFrrv6Z#aQFS*uttl9ga zKCUnKD{AO7s*jrzsIw# zMUy>iwlf1z`fT$;60j(ksX-TqWVHpaT!jlT^@im-obpWp{6jzPaw!^}$a8ck`9ju; zem%4lk8Jgmmz5*^k@5oX@(%y1AVH_=6|>ER|hh0;E}%8tk%D^E7wL z4brn4Mo6``!j z__iPz6$3x^c1u?LR-L^!-$VkiB6?8l2a!*R_!?##i;`TW(2pDpNR2eVTyvOiGLLC6 z2Yw@-;5Ci%fb^;SZUz2@!7i7NLDu4U_6pvN+JEluu#~6szOT--+EBSeWv{gW&R>!U z@ItHQFTOc0udItY8)YyDJ;Z~NAzf&cx0HCb!cD((+hGMJ0R0UVH{VM!EyihiV9D*erA=`epH%WsArre9yM*_{lo- zQ(QZmq8$-%Jz;TIGp#*H<-*iM5*BQeQ?hTcg79Pj&v}=7M-ds~=T>NJu3PW*PbdnA z^o{PNl(b1{mqqbeKv^xo`c=7kJHau?yhEn*ZU|@=(mg962Nu!uX zb07`!y2)WbXX#qdb<-%N{e!r5s^>8@7&Z~Mi4Us7e~>?`iU!9OgcyfvJR@`k>e6Q$ zX<-|a9ye)2NwpkxaG|l(?aFE54fsansWNg5(3;s9!6+=w@SPj3O+3t%)MNgD<*QPs z7IMb;((eeSzZi%bF76u2nTR^CFOyP}67_OMr1G&7(WKm}-B^QT@--%_1J_Fg^Dkd> zC2>1bhom(~qC9w(%Ux)xajjQLJc~dKYAsiTo|@sAQzKF6Dxz|eywJ@?24>JSkl{ZW zFS9K!SA@%W1sP-oZ_SFj@{a4aZoZ2%y!%duy==7t2k({br6SkYOe9J3msgcy2+ASQhj<2G>guIs@StC;QO6*8ld8nXd#a2_w4{M8 zg`ST$mH8heD>83=ACI-VlAUsTMeLV*yJ4SAE$Zz*6C}rkhnOa_nA@IA_f%T;YooGT zzml~)iCuhnX3lmd+Omc7>>6VNB=G(3UBjx_k87A!2qN4a`#-;`t{VUV literal 0 HcmV?d00001 diff --git a/sub-operation-service/src/assets/images/smartFarm/温度.png b/sub-operation-service/src/assets/images/smartFarm/温度.png new file mode 100644 index 0000000000000000000000000000000000000000..6de1e3e7c8e1822b1a79f7bf83aeff3fa3f65267 GIT binary patch literal 2137 zcmeHJ`8yL193ERUHutfyNLa{Gj+Ep~j&dy5#?X{2zRgw65^6K_b>uF&BgI06_%@V^ zl0|M4mTPh!Gpw)g`Y*me^ghq$^FHtAr_b{~&-*-Y657sEP(Vfi000PDTbVm>8U1@8 zK<<7`<1OM6$j{W)6ac78gL1qMa5YbugQXdO(sPgr0Pt3zZJf?o2HSA&fAGhF|FZ)m zqOcJ6zp3jEc8-8cDPci-{|Y~U$9v!xki#>>R-4~}LipGCKSDI6$j`KERxt~#^BHFp>$G(@dZSO@ld4pAKPqss<|J(B@Refos|G9d zBomC52Ge8wviuAGV;$|CP6K1jxXgycn^8Kpa*yr~<~U0{`{yr<(X)Ez-iCgv_+pkE zKiT&Bj(1U2Prgqdw&lJ!)m3#a{DVs5@QK?mU2=`TJqWzT$kJ50UiSHrWjcwFV3Sv% z;1DrYa>Lip(aTe&dbzxD%YHN$=bD^~McvInKd#)Tey5832rcT&*OT*3)V^#?8 zq;+$SxT`N&m2_N(3&%{|{_<{|ukWnpZ@IB&?~*#CJbC1!1O3f<%!!Zpi*yQu%Ja1j z7t(*SQ9*7+J8WO$lOd&+3TJtam&^zf*5(T!{1uA)lyE*aUi^SH#%IP6wo1>uu-#!0 z-(!j7*D_QrLlhBU)>epOQTd=nm|MF4=CGqG=Bnms
);kG*v*Zd`U-ks1y<{{vt~jnczn6S6zBRcl36uZDWJifz@~C!K_&B@L0V zmgKsUPDWFBcp(9!KzL-PVaFVsS3vmd$}}$J^njV0r#{G6Y9@+^Z6b)gLiQ+V1C;pc z+e`t^h`#O(+@K6i@4>6$0EqJH6Z=~Zg^_Yr>dDj0{Bf{SAKe7!@}9;gTLqLmLT{f; zC$_( zr;aVU8c#1Ec8&3_2qjY-2+wfHj-R#4O;LE}22xt6d{K{*Kz%I?7S&b${@fL&JWJ+rdd?7_}9@v zo`qBdqEj(ye<3bS8ZGJvB-hfx)Q4sqH%%+_P5Rp~&ZxoEZ7LbkO0KV$_xan6A_cF( zM+7lBZEqpx#UyP>7=+56Tt@GAbb7H$xWw*Gq)d>2hd?te*_B@?*TNEwJkdXc<#U^j?5@T$^!cdWL!jl7uc`%Me0ppRw!iy8Q18W z6$%#gYzW(smQ7P=U9N0`<^>ZAfZF=oU!nejkPE?J@$C%9VvBP3c3>NYEqkS>SWCSa zy8f`>S%E^Lo=X^AT0Naq$?z85PI@DC%6znX!!S(PBcOsp3gN>cU?fPUQ<&j?pb|?S zW%Xlilt6`Xln7KUI7esn`kaBvyPay~&rY3g)|4R{BX2^Y?+i+$E6}4#x(wZS_*%DY zFvkGS{&?fG3xB{-@(>cYn-62}z#lCSrBH1Tk-$aGd8T{6jQH=${b(V__85KA8rt>0 z82hfSu+&RjdRfRv9x1j4N;0~$RJM;NB#uu^7^?75zY`d($1iLgnQrJsB8<0to4Q%} zhsr5A4e+QHo1}f4Y}8l-DFbEU&Ys;t7*uXXRhgd6k*h;R>(2F!G(t0p(TuMB?Atud Xi`!S$dB?bQ006K)XJ<|^!zcU)_F}PI literal 0 HcmV?d00001 diff --git a/sub-operation-service/src/assets/images/smartFarm/酸碱度.png b/sub-operation-service/src/assets/images/smartFarm/酸碱度.png new file mode 100644 index 0000000000000000000000000000000000000000..1147c216b7fc4b17dfaa1046fb0e733043ae1234 GIT binary patch literal 2111 zcmeHH`#Tc~7@p0<7;{od#Oe)^vGdES>~i7|yjWFPjr&TG8(v@Wa2Z-pu*VySKgZjpxV~pWx2B-9PgrAbm1DHB`_(_n7~` z7T}-)k=c_{!k^{lwcjpnrmo8h99If?BI!+Y7ixLq__*QvDKTIB@>^;iK53$h!Qy%; z=C#k84d$@QzgJG@o>jChj8Uz^{GoGhp|jg0?sR=ZiS(E3iLQsCjms*~!L~J=6Y15! zvkvla75(won!=)75GQQH9ppXVpXse0!kaSKbxFjJM@N|`){55Tr&u=yU2D5>eS%TC zdj1{sYqJ-DmStBHM>HY~FHweDi}zqNHxJ{9H$x$3N_Gd`~?go97am1e`#CSM;B^){y|={4Op zvK2xV*5zacLIh_7x^Czp;qQA~076A!3l<7|7J_sl z_vMH%-5g9aD3OWxYRc z*#yNPaDxLa>Dt}iJ|D3u!7~Hroej0raCD!**qHMh&L5*AH66szJ$tUWfja4cjmDOFy<}#a6DKn?>V}n7L)k5*3oq^)`iUj! zU`Bn3om09A94cX6J!_DMmn9WwTab)_<&5;~^N|%BU0ut&);8yy(%BKbG9w()yZC`HMg=9=QRBn>V15>h zG4Wm)Q;L%BXog4 z)t#v%wdJgK=yAtL@M^;`bKhY08&w4f`IY)a@g+FI`If$gFhe7t=ql+5-mM6xeNrG$ zQHZD&ffY`S@blU0r>~u=?(j|raz46fw|5!vhC0C8>Kq|~lA$@Aa@fUil{5p@h^G(1 zc(o$Hv1Sc@vy_3+^VsQ+Q_+xb_5Ia`-^5=}934<@aZJ|7J`aHfFQy`a=*=k=?*<9` z`WT>)PFo)SoSr&3SSqPtcbMMvC11aZ1l+8M!8xm%Y+-jGVBkF5-Ddz<;U3ITVT8H8VI^dWPmrhi&<1~`O;<88W5gmRmTok5@ zDf@P=o=-lbj(Bj3g import('@/views/smartFarm/fieldInspection/index.vue'), + component: () => import('@/views/smartFarm/inspection/fieldInspection.vue'), name: 'fieldInspection', - meta: { title: '田间检测' }, + meta: { title: '田间监测' }, + }, + { + path: '/sub-operation-service/smartFarm/waterInspection', + component: () => import('@/views/smartFarm/inspection/waterInspection.vue'), + name: 'waterInspection', + meta: { title: '水质监测' }, + }, + { + path: '/sub-operation-service/smartFarm/bugInspection', + component: () => import('@/views/smartFarm/inspection/bugInspection.vue'), + name: 'bugInspection', + meta: { title: '病虫害监测' }, }, ], }, diff --git a/sub-operation-service/src/views/smartFarm/components/common.vue b/sub-operation-service/src/views/smartFarm/components/common.vue index 8062d88..52199ee 100644 --- a/sub-operation-service/src/views/smartFarm/components/common.vue +++ b/sub-operation-service/src/views/smartFarm/components/common.vue @@ -33,7 +33,7 @@ const menus = reactive([ { name: 'supplier', title: '田间监测', - path: '/sub-operation-service/smartFarm/fieldInspection', + path: '/sub-operation-service/smartFarm/inspection', }, { name: 'supplier', diff --git a/sub-operation-service/src/views/smartFarm/components/devices.vue b/sub-operation-service/src/views/smartFarm/components/devices.vue index 74b0c88..ea8ce7f 100644 --- a/sub-operation-service/src/views/smartFarm/components/devices.vue +++ b/sub-operation-service/src/views/smartFarm/components/devices.vue @@ -41,11 +41,19 @@ const props = defineProps({
{{ title }}
-
正常
+
正常
+
离线
异常
+ + + + + + +
{{ item.name }}
@@ -57,7 +65,7 @@ const props = defineProps({ diff --git a/sub-operation-service/src/views/smartFarm/fieldInspection/index.vue b/sub-operation-service/src/views/smartFarm/inspection/fieldInspection.vue similarity index 50% rename from sub-operation-service/src/views/smartFarm/fieldInspection/index.vue rename to sub-operation-service/src/views/smartFarm/inspection/fieldInspection.vue index e4e5792..3feacd0 100644 --- a/sub-operation-service/src/views/smartFarm/fieldInspection/index.vue +++ b/sub-operation-service/src/views/smartFarm/inspection/fieldInspection.vue @@ -6,7 +6,7 @@
- +
作物生长状态
@@ -41,7 +41,7 @@
生长趋势图
 
-
+
@@ -58,11 +58,11 @@ import * as echarts from 'echarts'; /* --------------- data --------------- */ // #region // 图表 DOM 引用 -const chartRef = ref(null); +const chartRef1 = ref(null); // ECharts 实例 let chartInstance = null; // 颜色列表 -const colorList = ['#9E87FF', '#73DDFF']; +const colorList = ['#3685FE', '#FFD500', '#25BF82']; // x轴数据 const xData = ['1月', '2月', '3月', '4月', '5月', '6月']; const devices = ref([ @@ -123,206 +123,240 @@ const devices = ref([ id: 7, }, ]); +// 图表配置 +const option = { + backgroundColor: '#fff', + title: { + text: '', + textStyle: { + fontSize: 12, + fontWeight: 400, + }, + left: 'center', + top: '5%', + }, + legend: { + icon: 'circle', + top: '0', + right: '5%', + itemWidth: 6, + itemGap: 20, + textStyle: { + color: '#556677', + }, + }, + tooltip: { + trigger: 'axis', + axisPointer: { + label: { + show: true, + backgroundColor: '#fff', + color: '#556677', + borderColor: 'rgba(0,0,0,0)', + shadowColor: 'rgba(0,0,0,0)', + shadowOffsetY: 0, + }, + lineStyle: { + width: 0, + }, + }, + backgroundColor: '#fff', + textStyle: { + color: '#5c6c7c', + }, + padding: [10, 10], + extraCssText: 'box-shadow: 1px 0 2px 0 rgba(163,163,163,0.5)', + }, + grid: { + top: '20%', + }, + xAxis: [ + { + type: 'category', + data: xData, + axisLine: { + lineStyle: { + color: 'rgba(107,107,107,0.37)', + }, + }, + axisTick: { + show: false, + }, + axisLabel: { + interval: 0, + textStyle: { + color: '#999', + }, + margin: 15, + }, + axisPointer: { + label: { + padding: [11, 5, 7], + backgroundColor: { + type: 'linear', + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [ + { + offset: 0, + color: '#fff', + }, + { + offset: 0.9, + color: '#fff', + }, + { + offset: 0.9, + color: '#33c0cd', + }, + { + offset: 1, + color: '#33c0cd', + }, + ], + global: false, + }, + }, + }, + boundaryGap: false, + }, + ], + yAxis: [ + { + type: 'value', + show: false, + axisTick: { + show: false, + }, + axisLine: { + show: true, + lineStyle: { + color: 'rgba(107,107,107,0.37)', + }, + }, + axisLabel: { + textStyle: { + color: '#999', + }, + }, + splitLine: { + show: false, + }, + }, + ], + series: [ + { + name: '茎秆高度', + type: 'line', + data: [10, 10, 30, 12, 15, 3], + symbolSize: 1, + symbol: 'circle', + smooth: true, + yAxisIndex: 0, + showSymbol: false, + lineStyle: { + width: 5, + color: '#3685FE', + shadowColor: 'rgba(158,135,255, 0.3)', + shadowBlur: 10, + shadowOffsetY: 20, + }, + itemStyle: { + color: colorList[0], + borderColor: colorList[0], + }, + }, + { + name: '叶片温度', + type: 'line', + data: [5, 12, 11, 14, 25, 16], + symbolSize: 1, + symbol: 'circle', + smooth: true, + yAxisIndex: 0, + showSymbol: false, + lineStyle: { + width: 5, + color: '#FFD500', + shadowColor: 'rgba(115,221,255, 0.3)', + shadowBlur: 10, + shadowOffsetY: 20, + }, + itemStyle: { + color: colorList[1], + borderColor: colorList[1], + }, + }, + { + name: '果实大小', + type: 'line', + data: [6, 14, 17, 25, 21, 10], + symbolSize: 1, + symbol: 'circle', + smooth: true, + yAxisIndex: 0, + showSymbol: false, + lineStyle: { + width: 5, + color: '#25BF82', + shadowColor: 'rgba(115,221,255, 0.3)', + shadowBlur: 10, + shadowOffsetY: 20, + }, + itemStyle: { + color: colorList[2], + borderColor: colorList[2], + }, + }, + ], +}; // #endregion /* --------------- methods --------------- */ // #region // 初始化图表 const initChart = () => { - // 图表配置 - const option = { - backgroundColor: '#fff', - title: { - text: '简单折线图', - textStyle: { - fontSize: 12, - fontWeight: 400, - }, - left: 'center', - top: '5%', - }, - legend: { - icon: 'circle', - top: '5%', - right: '5%', - itemWidth: 6, - itemGap: 20, - textStyle: { - color: '#556677', - }, - }, - tooltip: { - trigger: 'axis', - axisPointer: { - label: { - show: true, - backgroundColor: '#fff', - color: '#556677', - borderColor: 'rgba(0,0,0,0)', - shadowColor: 'rgba(0,0,0,0)', - shadowOffsetY: 0, - }, - lineStyle: { - width: 0, - }, - }, - backgroundColor: '#fff', - textStyle: { - color: '#5c6c7c', - }, - padding: [10, 10], - extraCssText: 'box-shadow: 1px 0 2px 0 rgba(163,163,163,0.5)', - }, - grid: { - top: '15%', - }, - xAxis: [ - { - type: 'category', - data: xData, - axisLine: { - lineStyle: { - color: 'rgba(107,107,107,0.37)', - }, - }, - axisTick: { - show: false, - }, - axisLabel: { - interval: 0, - textStyle: { - color: '#999', - }, - margin: 15, - }, - axisPointer: { - label: { - padding: [11, 5, 7], - backgroundColor: { - type: 'linear', - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [ - { - offset: 0, - color: '#fff', - }, - { - offset: 0.9, - color: '#fff', - }, - { - offset: 0.9, - color: '#33c0cd', - }, - { - offset: 1, - color: '#33c0cd', - }, - ], - global: false, - }, - }, - }, - boundaryGap: false, - }, - ], - yAxis: [ - { - type: 'value', - axisTick: { - show: false, - }, - axisLine: { - show: true, - lineStyle: { - color: 'rgba(107,107,107,0.37)', - }, - }, - axisLabel: { - textStyle: { - color: '#999', - }, - }, - splitLine: { - show: false, - }, - }, - ], - series: [ - { - name: 'Adidas', - type: 'line', - data: [10, 10, 30, 12, 15, 3, 7], - symbolSize: 1, - symbol: 'circle', - smooth: true, - yAxisIndex: 0, - showSymbol: false, - lineStyle: { - width: 5, - color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [ - { - offset: 0, - color: '#9effff', - }, - { - offset: 1, - color: '#9E87FF', - }, - ]), - shadowColor: 'rgba(158,135,255, 0.3)', - shadowBlur: 10, - shadowOffsetY: 20, - }, - itemStyle: { - color: colorList[0], - borderColor: colorList[0], - }, - }, - { - name: 'Nike', - type: 'line', - data: [5, 12, 11, 14, 25, 16, 10], - symbolSize: 1, - symbol: 'circle', - smooth: true, - yAxisIndex: 0, - showSymbol: false, - lineStyle: { - width: 5, - color: new echarts.graphic.LinearGradient(1, 1, 0, 0, [ - { - offset: 0, - color: '#73DD39', - }, - { - offset: 1, - color: '#73DDFF', - }, - ]), - shadowColor: 'rgba(115,221,255, 0.3)', - shadowBlur: 10, - shadowOffsetY: 20, - }, - itemStyle: { - color: colorList[1], - borderColor: colorList[1], - }, - }, - ], - }; - if (chartRef.value) { + if (chartRef1.value) { // 基于准备好的dom,初始化echarts实例 - chartInstance = echarts.init(chartRef.value); + chartInstance = echarts.init(chartRef1.value); // 绘制图表 chartInstance.setOption(option); - + // 自动显示最大值点的tooltip + // showMaxValueTooltip(); // 响应式调整 window.addEventListener('resize', resizeChart); } }; + +const showMaxValueTooltip = () => { + if (!chartInstance) return; + + // 找出所有系列中的最大值点 + let maxValue = -Infinity; + let maxSeriesIndex = 0; + let maxDataIndex = 0; + + option.series.forEach((series, seriesIndex) => { + series.data.forEach((value, dataIndex) => { + if (value > maxValue) { + maxValue = value; + maxSeriesIndex = seriesIndex; + maxDataIndex = dataIndex; + } + }); + }); + + // 延迟执行确保图表渲染完成 + setTimeout(() => { + chartInstance.dispatchAction({ + type: 'showTip', + seriesIndex: maxSeriesIndex, + dataIndex: maxDataIndex, + }); + }, 300); +}; + // 组件挂载时初始化图表 onMounted(() => { initChart(); diff --git a/sub-operation-service/src/views/smartFarm/inspection/waterInspection.vue b/sub-operation-service/src/views/smartFarm/inspection/waterInspection.vue new file mode 100644 index 0000000..cd955de --- /dev/null +++ b/sub-operation-service/src/views/smartFarm/inspection/waterInspection.vue @@ -0,0 +1,253 @@ + + + + +