From 835622cf9383b65c3ceb6abaf268473551000f97 Mon Sep 17 00:00:00 2001 From: duanhao Date: Tue, 12 Aug 2025 17:46:51 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=BC=82=E5=B8=B8=E8=8A=82=E6=97=A5?= =?UTF-8?q?=E9=A2=9C=E8=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.production | 2 +- .../abnormalGroup/abnormal-group-legends.png | Bin 11633 -> 8882 bytes .../abnormal-node-legend-icon.png | Bin 0 -> 1887 bytes src/utils/customePaint.js | 65 ++++++++++++++++-- .../GroupEvolution/components/groupGraph.vue | 52 +++++++++++--- vite.config.js | 2 +- 6 files changed, 104 insertions(+), 17 deletions(-) create mode 100644 src/assets/images/abnormalGroup/abnormal-node-legend-icon.png diff --git a/.env.production b/.env.production index 69b37e4..c00a419 100644 --- a/.env.production +++ b/.env.production @@ -1 +1 @@ -VITE_APP_BASE_API = "http://10.7.1.183:8080/api" \ No newline at end of file +VITE_APP_BASE_API = "http://10.7.1.183:5080/api" \ No newline at end of file diff --git a/src/assets/images/abnormalGroup/abnormal-group-legends.png b/src/assets/images/abnormalGroup/abnormal-group-legends.png index 85e6475f7ae67eff152d39339beb17d375f15a55..a919376d8e84ba7614f6fae7274614ee6f4b4062 100644 GIT binary patch delta 8873 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 literal 11633 zcmV-%EsoNOP)001`#1^@s6i>yJ`00009a7bBm000XU z000XU0RWnu7ytkO0drDELIAGL9O(c600d`2O+f$vv5yPX_4-eNc%P~Z}f|%?j?SCQRfmlX;$L(bwwGaB={kNXq&uf2) ze^y`8{}Z&>&hFmyrN zZ2iq|XwRNKrbNS2NY8~F$m-LCEcG};;3fe-H-uro(Gmo}hQBUBh8}SRj#QCQAP>Oj z`0#~>F&R60mJt`S9pg|+bk{#t6uN?<%~3F=a%RrWPZXb{A=b=@aw_^)j?pI373rht zaAfPBIdSZAuX73I+9lqO0E98hkbjvYWK3!BHnS0AVJfx38*r#z57~_Z<)H_`@FYKi z2@JywFIl<|E&sj!pP)T_>@df}r#JuV;S~=*vX%FYb0#Pb)jE(II%Y9!gE6xW;b72u zP{VNfRL93;Uf zDW)Qt(DCR;N9#UG-bc>qKoa~I!@v-9*NPN|0W9reJAG`1_T-b>Y3GjL?mIU#_obnU z^0Y@EdyK-=2S^^eRmgZ=$9QmbXU7)964B5!jh`tabZ(Or??=-Kmxp|DLg_QNR`v-jZL9g zjNJLp^*NT0*f0f$WhCHY8FHX1ywC=WN?F(#9I%Wr<$2{LlmLdZCvG~Z(H&B7q+%_j z37|IS3eyg^7P1Lu8pF_;BFqp>DfAMEf`bx~iQ6diVVStyGIty@7tTVd<3u|}m_U^7 z74A97*UbSCCk@|oj8H~bZHp4;#_mW~3{qO{fg?vAF^0M!YXybP(_+yvdS+w4iJ&kd zD)ABCc;HN7PZ2GKtAnj!fHq-a2xSPfax>-_3WNX!!m`Iy1BhCG7i^%7E+lXpbTRnw zy&dMD9SlH#U^W9whLdDjbj!isF>X)Sv}NnWL{5_zBT@;l5J@1Mok9I%WnZbx5`gvT ziF09qj1zej!#t+oogB-TpTG`{7GY2 zMmL+{X)sk#10fNVs<*TU2bRDwGld;S&5rPB0c} zgM$16iO5?5UCNq6Mp*e1nvW*!{Q&cDk1|qnzK;+zRxayr2h(FM#bjz}ti?gY{nrRC zG6Nc*0R+zFT9BKM0pQTYlzhY>P02VT{38+tal#{jht1KsVz`t(1Ob(}%jYzAjG780 zTxpDQMOX)zP=^x(ner?L`w`f@)SD(~CQ0|?R_oK@0GAnXWE`fD0j@`k`Cvv>hYICU zq_9ldBO`Ahs(q(oc!-NwvskKg00TiZ&c;KPmC}TyUz7<)CF8;fp>nDgTYZMRd1ZPb zSe`dOfYKzU;lQiCsU)3Y#S|mulYlx#;gnXgDRVjQc)~3u>5J!sV`S!f?pT5WcIpmc zA`CT9%(H5O`Q%Id0{1rT%oBc$vq6iVl7ymLfd|TeqXmv*-Pzh~!$?ezqevk!d*gWU z<}HRBLYZhJ`99~zWem_pjuM{7+=gE7Wfq5p*EiT=$Rel#u^tu7N%o2!g-TEi8B2ED z3#Jz6z;6mPEkWNVNdeJ$TS!n$`c;kLf+sSIPvI??Lv~V;k|8Y;I4(w`)dtMg84qbz z&E5zd51u)|o(qWV_vnfivwZe!m;pjvOc-S{J0A*yU{G|3z?n{{G9zOB!XuXD`xP9# z8C>M(6$;}dUlULU^f?O5*v)qcv`cA)CQX|y_+JrJbF!ngz#(R$aE(b_MI;5DU{1go zQ)F*yjjiPIBZr zQcBMl!y-f!1&h_|a0a2a5+RbJ7^4;Mz8bdcgfl#h53II}cwsKcBSQq) z71wD6^HJ!(M__}c`BAmzNgz!H(wsAJy@oWShmdNpof|0Cc-!?>Or^_klqq7_U0=9= zDWIc#arinx%%MLpr%(lD!a&Xhxw2y?IIAS-yPGY}NxZ7d2@op&ry>vrDJaOpMHIHx z%bWx#Y*ApTIt?FwR2?}23K)w>CM6iK)0ndkr?{+D0snDwS9;)#Hq3Tj&g>v^PN(HuIKblBB7+DbgPyadDF(PudhAAk+xOuLO=uFJAmKu4I;QDTK>?8= zq%c*gT;|E77-8rpfXd;cH5u`;fCf=T6RKp7iP9Za<-&FnC{VOiiV7KwzP4SdHu9oi zGY;WI8I99ROI(il%{=$iul03f5t-PqM;2+LBO*@+MDdL>Aw=;M7#BIgG8dturx)@Y z>Xr7koQ86#>=&PP0!Ne)TGPCyb?M^x#bix((-8x-upFGbnjjoIp;a5htNDIzh8 zkSGPF>*slsgK@-pk&tu5WRif*86*<|6~4X|*2z4N&WhyNDy8j z34!~736fAi&xR&&4%h)Sr1MOofD>R(vQkEsQYpzUUslM6n24FDx*g%(F`uaxY=}|I zm*i&QLj5}aF+(IfKK3M}xTRVtkUWsmuDzC-7jy812_{LSpc<=FhE`Bu7-M)oCTxlT zZuMfg{Q;X9ir|7JtSwY~$sIX9!)qVgLOX^T z+Go$R^yk0)sb2VzRY%fuynvo*?OuPtq2`_2Pg18SnM{v+|6WX*=o>q75@M#0zG5W*B5AGX$nZV3@P3YYXT!%N76&uJ7YzU)_z^+(C zZ_8OJXj;M+IRNE5)xrllJ*J>Tl`Mt0db=x@E>^1B{^V0MReUfq-h}rF{Rb}?c#P#n z-)CIiSK=^m=?(>=meB14|6F{Npd1q-oW6&;wEPmA^xOO8`yb4+lIH`n)xFhZhvAQL zzOg{eg+ILY0XlEnX1f0O4(9Y*>X`I*AAxQnXxGg)ne^@13uc%v-1ZAv(muKPpd$+2 z=9$@$b5S;)QyS(~2klP}-gE`c{`>z7#nEZ2kEiQyyOY+vX*I1n_(dX7iL%!%|8N)I zbN^;SV$mnG>frt5|6R47k3Z|f)RdlV$G-QY9a(eCEBV!jzl5*6@pj8VeMqa@@ioUD znZwPl!Up>qb zyt@kysf8`%dvoiBFvH_gT8F+lYS(sJ@$6G_-M$C&vwjDUa0w#@S9ZhfOk=`fb^*`K z3^ccJq1^u3)qGg{eN4OXN6+Q}BAiiU7O=DJh@b4bA-dpgZ=$1)cnO_w^pUjr*N@WI z@4RcG|9)KqBdtAo4c+s=X8mzVYC|1FcIH6e{>*xM<9jdF?j_K|yt0A)&8z>AuDa=) zoPhyT2VZY@(~o{SgpucDO)9njkqM|v4!cv~SV*_$CaSGRjCH-vZBwr4Fw3jeN} zLQswIWs=|<3L>8ItwZhKi?;rZ@7Zg~gh`Qr+U6V!C;Mi^PGHRq)9mal56u0!Kmb^!)I*~)Ku2>g-zOCQRrL-uc=`vHAm<8`$1zyoRd(j|25?RPd{ zp2VAe^v|^8$=&kpt1jXVSAVrLAlxjwo0RqEzLhVz=H_QfX_ek6#9>AUL(tw?afEM^icZN zXFsle9re;xjfr>DcRu%VS-x~J_xY?lv(%B1D||8y#?J@xf;{2zbFnJc5k-p(C&{g^j=@kTo!z@S0mqW^j(t!xHd zyehpQa}Br76LK;+>FtPqC~x?hEyV%9cBolC6|S|Qrnepye_PC7_t>vA;b;Jy&^M{y z9}G0gf-}1GGW2^Y8UXueGqa5i7c8J*;Q~7Jw~zAL-2+|u;v-P#B}94%O^K-*Swuru z-1tq}^2jz?v1GBl?~If9?guy1#v5*@9lM^Qzy0Kew0y}DzV5b7bm^DAYNo2-vs)HB zIF>J4OxHKJ-CTMw?X?Yj>(4p80q`f<(eh(e& zzAw&o9c)xig3u(W z_EYKd3(s!Mw_dhv-DapFW^Bjn?W}C=p3vA_$|%6%D;tBCfENryT%0e%J!Xl72%8sT zgNkI;r@^VkfMdjajD#YPU3^GH)`WVTuH^OjWUuF+%9;hW7VeZ#apU&9x!@atAX}NgNQ5mEgh?h!$7T#s2qSs%l-4OG|Own-UoZHo!7xasx=gh$zfl@7QLG7a{1#)yC0uT4K}F7@2E zb{ETc-u=%#erinmluwVrfa=D#G+J?-zW zH&*VkYi1`L_gN#&_t`cCh)6GDtrP__)f$@fnTyxN zvtwqa)Nw3InQQO&o!dj}9(j;g?0HT$vRenoSk?}TP70B2OH(Y%)uYbqe=#B5WM2+thYbH2CaWfU45v)#^$@BSBtaHEk?9Er z9l!QNI)RofXn3%E$zs0xqW93Xw{AlJ6#$x09Cp{cc~fJ!efL=cra|-32~kP8oTjdC z?0V(je1o<(Z{S5^1_0O#b?0vQj8+AFr$Dlp0}aJg0yseZl#~uor`Hs!8F36S5((BU z7}RLNy_a7!xbS<9B^^hYnM!)JjRlu&{Tcn`i(bOTI$}e|!7VXq;G0;}DQO<8#l`+1G!b-hJ#_EYtP4k8(W*Ldm|`tGQfFJT{-a+U3r2#SORdIiL8P z%IJiq^qwRfch-NWi99}R%2mNuTm zRu*n4-JOxY)TNCquW-XKM(ki|jHc5RH8b%|gHK$@Q5HUI3shr@<5S&z^2^ zAI*C`J2Ok305l&x*9FcUd>WIfXU!ytCh;hRu^>!Xck*hw`@x4>0`h&0*Lvd7VlCdj z>uKt-()L}uBW^poDZc~m_;nxF_dRPp@x2=~J1#N_e31t=9fZB(qYhuy!G_@6+<24G zwYT0OcR#R&dpV?mPf5@A#e+6i6?|%MwSCx5A=PgLf z9er7wrVP`4DY(b0o$>o?RRiH^C%mR7FSLE+6`y?W$;%I|UX34^y&T^dfNr{tileBXmdbDwj_W4H-I=roL zJjbmp{%qB)T%YfUT#=__UZJ73qGMPaBTx)&v=`l^@`4ncQ?k`@|(w6akMF*9)x|vf@6O0Z z+P@F}-Dg^Mc~h&+{S!(J!8vSu=(rorVQ+r7>8y!FnW;_n!oU79A^h!3Yus;!5lIUM zucEPcx7_iMvhT9R{3k7IKIhUa>GIuY)0S4M+4z-Pp?rn%op;?A%b_bSTud9ja06{> zSwANZBwcv$P4$($=pnf5})5=?aYm` z^tosF@#lIZw$!unIgwhmhXg!k)Fk8ff1qnV`rq^ujjzsM++!W?Ot@m%5@nt)i!nhzn3@At~&U@&RE>bA1%YyGEFb^c7gTUUJKeo|2>ZD zzt3v!Uc4x*$6E=dF)!k074IE){X|;Wpm6DJuRi8Ts;`zEtLE3AcgAFlEe7Q4Z@r@^ z)7tCdK{rAV+o+c+V)dfQuqP0$tyb**2AnNNMAdY@>ct1N`rx5-&BgDfd9RRtuQj56 z2)uB`n1dCoNggrD?ZQAYy;`6X2FcNfv!GhRJ*JMsKW32Z`KYdOAI!9b+PE^0C11!tVB z@!G~4c1epNxo4~IJM+{YGr|Dnbw?i=3hHC%V|raH+PdIi%Nh>wu^x=KX*{%bo4a$? zRg@k--ua{ZeC3Xs5v|g(KHTO3@abyHaj&8dKb#Hl-p^Ufsai<52iqBqk;|ASLQ^&O!)e z?5SG1JOL|beNK$bqD0UECDSKDNtl@~wTK|T(9(%#8Qp{a@BLQsf7rQ|qGR@n_eK9< zHtwS8zxu;z`p=v`g{yntwldTEof-K4Mf=e8`ybveZ3zj_EBU|xK)${wZ~N}2xW{N~ z&OKcjZ_P2Upbgjjt)AWk{+?W1c*V7qL49&CMTBbh>gV^8OkdJ_>qkD-<3x3J2qU@HNg zkuUk;O=fLd4BYLffD z4zkXEol#GGm$8`2aL|of^xK_J(w#rJ&x`Y;R~JJ}ZH46k^Csbf$iv){7*K)+*{mMP zY@Op{zp-PGN!h*>3lZBQoYwcFK3lI~Tszr5vw%K$$kDQ>p>eO4&0>$3uAz1p?tO@Z zum8y0oa|}tw?C1KpM8dhr=O-v4*3J`#nD=Djj zwRaYkG+f(U*A#zRTc&HVUf5|`aqN?rKA{2mTeK8x5J&sDhralL9$rW{s3e!HH(vJs zbGQS%0f^WA(d)J7OkSVtzdCb%`*RywIp#aEs%6{j-*KjOgY|uhP=v8#ms0sU*WSk6 z_dkSaFL6h}WZv<>#l2uHmnV7*27JLv$TZ&K;!u(7 z%P$G{%3{(#Zpp-Gb8n@Ux3GkDuM3uFF50rUQTH>!OhZGmv8>$2dOWk zo%o(hlog3`LnFd>p`;FI8&Bffv1@l*4SC8Bd(k!VrDwHbGWQI2V=JGSmIv-TW^Vq} zht)vd_|A{3`#t@Ge?fQspTDB7Z~C6DY^-T6`>TI-C~f#(H})8=l~1muZ-0IR^|j(2 zQW#Ce(wX>nZCc&RIE_s)XkOb&Ip?<0OGIH*V{>ClbLcY)YKcud-BlwVl@b@2RQSbj z|Cs!G>t+kBqOhH0nG%!`90%L>{dV2V+SMIfBg=;#y`T3PchNIe{E<0ww>hxgi`|yt zdSc5nGrAhG_uL-Yy=xC|IIy!{Z>&G6v`-OF`%DTaguFRlUF1LQb;tE(w_HSx9nw`zD)LTkJThgKixfQ{N@SU zSq-G!Eq51%U=nqMuFoDzHa0bd6IKvPyrSU>fmQWzXR%Q?_17sA}pd6d-+CO@I zUm=kv`VJn~%h5;teq;ZK_|@(AzRUKu6&?4cef&qYVT(G#(Hl+^nxLbr34uqKg zlyb8Q5}R73tbqpYrHkx8qj*BdHE=3{jQ0Si<~S47A=UQ~h!HRmuiJ_n5@-MZJ6VUh z42^iQra%s;T^zBCKuvq zthqF!LsNG-%rLeW(LH>wH24noKdGV8_u2TCpaNfZxsgnlURDT6cMn*OKOxkNpCd|P;LjNRVSA3jv;VI~XBruB%t@LkSX`pft6=bH^ zLGIKHcbmzKxtTtxfg=``VtLjq?t`F&I^{U6Rjr6Pp^d31%UT2G>>#5U5iA9?J~|)H zpmL(hynf$R<~`bhYgW8GDZWo*nNMEjG+M@@osD^i{$%7OA`q8!7`B0r*>8$UvZ{U} zK+=D6BpSRH2~mzEzk53(F<5J^!vctrV8lHh31pc9Q?R|kc2w)1f>IKITjr4{6w4Q|xM}p5 zYs{Xp47wd_%!TFZ&I$`k{^CO2t^|v@lpQ>vAE`PIXrjC8IT@M@9%Hz{4`$&kUg8dx z!WMN&gqBm#+Yw8?j0hvhG&=nsUb%)EPEbA!N@fJ~7{?1=CX0oB`j7^8*BYz_@G~Lvm15b^8r27~ z+rvr=jfU$j@QN5q`weiXq+pWitH-t&F(l}uKHn#$BYqv2)S20W!V)sDS(NDZmL9*g zk7mfWnDo%F#dkea95sCwbF=K)!yTHM(FCM?Qgsf{Vn~B2%`aay3dZL{xL^pD^68yy zc&u&cjdjE{^{;u~2BhX15DH?#Xa1ib8?BnI-YeP^=ZT~<#{S_6bBB|QP;c^sQ~e&_ zG+1vEKM@8{Ff|d_5Pwm!R+x@HL_QHpanoJE1M@K{jKbBc%u@yz@eD~R@aLTDmo~vU zb=QVBVEXU~MW0I8i^@HR?Q0z)MP{ot#GbE+mRfX~ZBW3f1L=SFhkrw4PRd~phL~Wr zG^ng{7eZj3$Uo|eG)dm{W64(>qk?aXKP1uN?MLuWR_!(8<!;iZ`X!NWiTz>(TB#t3) zkHH++;ici;p}oHIYt|4Ot16yexelgZi{T4;knupyT|Qj#gwQ70!a>v93~5|jpCztT zGUNQxU0T+^g~A<4wf=NMSr4372dE~^#Vn2D10)ayk`S~|$~7r{&AA4{+VH!T>_VJagL%BFwL(+S&OiaQ?qaoA zD0(ZQ*Z1@_##b@85A#Hv!ipyCCRUS_ChS*YMo@rDx{Mi3g!|?^okpq7#r+}0b0a_{ zE+RNWgD3$HFapU-G6I;VM^B6>k|0V|i_~)|V$|%m2nVD9qeA#;&Q?l)+L^a)u^}U4 za#55Aj507Flc>Nw5DeXz7&LB7=}}^tgH#@KIr5M!QH;3EzeZMtb(p3hlM4uels_|s zscOw`AB|kxGG40|>51|lxqB`Ebds-?Gy z@kFMqOebiz827}Ss!;_Hiy=EeVThF4?7s$~T2#$;X}*7pNhM-K`cyl!KdcevV)TY6 zpCox~?5#%QJ7HbeZT(cPYC&aT1RS>pzUAhBKZC}P-;5!4Ok?QC#AuXgLD2} z$EpS>(RK}}fwG<&U<;U$W%vxOH<)&e zQlcHnVY@I1q)nMfl<8(*Tc;e?0??Ha0f8}VTndkRyBke_sNX)rAsqEF2%jfGUM1Q9 zw@HyeKz)cqD1gbIlZ#2>IOn7Z&yy@SIe66IIThFl`ASs>l;S)g6ETUd2|$`K13^q! zrBLH;bBz)YgLQZcSA0`(DMV4CDSTzxWs0@ph!rE)(Ir}2_Rsc&CPZT*B1)(m!wnN= z#kqk73Gjv;C!tifsjrw#$RdwQF+KdMfP))IYT>xntq_;xuq40v89rF-yR7{Yv5aZc zkQOABj=`238BLYskI*IC?c^ZBqyNIg!p($G5F8Mk0<@hD5FbX&y9b4**SPv3YUcknMZiINeR(HkMkq1_ z^&%wl*+N8Ba&>VVj2k)+Q{BmJ)!SM$r!IF#s=|% z-N-agss*H+h85WH$eTI8ttVXtjQ_cY(!Q6}RMQiW5#jJ*wIU#bS8a4V}zWKK@7Ebr|BJs;c z$?ha#4+T6?*?~aS?RwdUJjM&}T!zKu-v<@=##n<;3G&O)!4dX9-H}ITZDa1w1DfgL z{Mx_^`0RyyE#BTh=wZEUsDuqBMdk?xrOqe715MWVlbH*^!G)^EQG%u7{EBLb-4$%# z{lUS!Lux&;1-NcbWJPFYUXYxybA6Btb@}IBnlp14hTN}7Stnz{gPoigtBf?TfqH@FsgiQ!S)nbM4C6d^1L=yp1sY;kd0%Hj7MC!^A=NF-3 zY6Wtz5eZ6;Ph!sQ5@nc~rD1lj?L5xBU(Z`{(x0xHo0^~M3K;E6 zQu<@pBKg6Ww3M$I^Jhwf8w}IqTx?^CHT&gZ^UeIc6ylS+)$_)Uk4KrRU| zqvsS13?!Co5x4ltj4{IC4nZWwUOjQR7;Mou%~CiaCQ9Yor(}=H^T;O|V~BQh({Jy1 zhG%$A<|yL_`#LUE!|+W@G3gS_l*}h27?0qKi*lTjMxsS&iMFdSHQ1$oD+Y9iO$;bz v=zI4zRN2^5*{!Co66$&h3Q&00000NkvXXu0mjfXkxKm diff --git a/src/assets/images/abnormalGroup/abnormal-node-legend-icon.png b/src/assets/images/abnormalGroup/abnormal-node-legend-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..89fe87eaf2de065c5ddcc638623782273f24787d GIT binary patch literal 1887 zcmV-l2cYs|W40nx9mfKCFiHU-X^rkMip zOiE!rkFy})5CnqLT~@0?3Q-CBZ@ev3`h02Y`v<=pmUXbRZ~=0sS;X)F#0tR)gaJuP zlW}^c0mAngl%N8_P{8)~C#K?!rvO&&0F<}bA?Rd(v0xoS$W%uHCrtWH1=q&mCA9T;Kw#xVPJ}h^o`jQ^L9Fh@=Q> zYarq{lAa&^kT%>A()Pf29Pv0qY~KFP+u1o|t-bXJ1u*2fg*3Hdb@l0XJCdEwB;nvK zzpt#UvVOnH^E{DII+=}qH-2`9lISTM8RSz{K3Jy=LYCPAa5U16h}Ly6KOb<1;g$(^ zX}8<_=FOUyW%v2tNV?k+ZQw$-m~^!yQ%>MY%KgBYQ)Feq5{1}HXJ)!A3{~MrmzOS2 z-9D{t{=kEOe*Rtj3scHmym-w3^vj^>bO06>B)3s6cH=0$kEbUKKOQ8#(}N$#u@gnV zsUUum&aGs}j=dv-AZNx1ljkUuvLvY~m=1@vy+mJ&!iU7haF4;_Sq9xsaRyPHC$E-_PrzLX>ixr`9@r^|dT&0plzYD~4aF0TeHXzKXNBWhzFT%J0KXylZqE?1HK zgiaN=+xe`F%wi%LME(kNo{K*;&iwXba_m1rB(u%kJq1^oLG0o|TCCyhtfqjYj+YDb zT;u%px5DWO@GBRHTHsbt0Yg^i8L}};L#4p6q{!4tQD;m%|Ml0Oc&C4T^!2UNZ&H35 zo}ir(RkCpbolOS}m)SNWj!MCK_?__{j6uU-;N#Klv&D)HP&!lo@|N z^z?9Z2r+E#5&fTOXY07I(%qGxs@I&QUNe+c7Wg#=CbC=xbg20C_RC+KF*lP6OVzB- zzT=W@J*fQPJyF+2!Srh7Gr#|P<>Y`%RFJFKG8&Vo)NKpFf&?X~C`u@mplb96Z z$gat4EZ-f}BjDOy$usfra~oL}SR)6grGs zLoc+Y1fdwrEb`P)Ug+E=L+xkN&6D}(7rKUgcUWwXcKkxx`T5Vvf%vyC%_vlf7ix}y zXV9|(J!*gSt-)DdtQP1q$~_ZMBILQWEc2rvRWQsNdSA`Wt?O>LYi=(f@(3WkIEz;w zKCWSH2d4(snm}rka;la41z<+m-A2T zlqec4+>PPbp%g%C?A*CY-rGJQD9+?ubs+PwB6bHuikG0+SFKT*OGie;o{@6T)M~SN zt2J$Uy+0CA$GW_O_e=PJgMgP9ocjWw?_K8UW0D)yWHuj`z0Iqk@OLrX`nbK?ylfZi zC$QaK!%nAT?snjZeh8PtrBCOuYcDSLi+$bVvOp~QWgmm*Xdy%Rhz7eg@$g=j@q0BK Z;J;Y6gsL)`cxM0r002ovPDHLkV1o6Mqlo|j literal 0 HcmV?d00001 diff --git a/src/utils/customePaint.js b/src/utils/customePaint.js index 8868cc0..3aa915e 100644 --- a/src/utils/customePaint.js +++ b/src/utils/customePaint.js @@ -46,7 +46,15 @@ export const paintNodeFunction = (storeId) => { ctx.save() ctx.beginPath() ctx.arc(0, 0, rFill, 0, Math.PI * 2) - ctx.fillStyle = `rgba(${this.fillColor}, ${this.alpha})` + if(this.fillColor == '85, 125, 15'){ + ctx.fillStyle = `rgba(75, 241, 184, ${this.alpha})` + }else if(this.fillColor == '15, 106, 125'){ + ctx.fillStyle = `rgba(69, 192, 242, ${this.alpha})` + }else if(this.fillColor == '125, 114, 15'){ + ctx.fillStyle = `rgba(250, 222, 37, ${this.alpha})` + }else{ + ctx.fillStyle = `rgba(${this.fillColor}, ${this.alpha})` + } ctx.fill() ctx.restore() @@ -63,10 +71,11 @@ export const paintNodeFunction = (storeId) => { }; // 选择配色方案 const fc = (this.fillColor || "").replace(/\s+/g, ""); - const isMint = fc === "75,241,184"; - const isBlue = fc === "69,192,242"; + // const isMint = fc === "85, 125, 15"; + const isMint = fc === "75,241,184" + const isBlue = fc === "69,192,242" const isRed = fc === "255,50,60"; - const isYellow = fc === "250,222,37"; + const isYellow = fc === "250,222,37" // 默认都按照 SVG:每层 0.24 透明度(再乘整体 alpha) const layerAlpha = 0.24 * (this.alpha ?? 1); @@ -76,16 +85,32 @@ export const paintNodeFunction = (storeId) => { if(isMint){ lg.addColorStop(0, '#0FE9BE'); lg.addColorStop(1, '#91FFB2'); + }else if (this.fillColor == '85, 125, 15') { + // lg.addColorStop(0, '#0FE9BE'); + // lg.addColorStop(1, '#91FFB2'); + lg.addColorStop(0, '#FF0000'); + lg.addColorStop(1, '#FF0909'); }else if(isBlue){ lg.addColorStop(0, "#009DFF"); lg.addColorStop(1, "#00FFF2"); + }else if (this.fillColor == '15, 106, 125') { + // lg.addColorStop(0, '#009DFF'); + // lg.addColorStop(1, '#00FFF2'); + lg.addColorStop(0, '#FF0000'); + lg.addColorStop(1, '#FF0909'); }else if(isRed){ lg.addColorStop(0, '#FF0000'); lg.addColorStop(1, '#FF0909'); }else if(isYellow){ lg.addColorStop(0, '#FFDA09'); lg.addColorStop(1, '#FFDA09'); + }else if(this.fillColor == '125, 114, 15'){ + // lg.addColorStop(0, '#FFDA09'); + // lg.addColorStop(1, '#FFDA09'); + lg.addColorStop(0, '#FF0000'); + lg.addColorStop(1, '#FF0909'); } + ctx.globalAlpha = 0.24 * (this.alpha ?? 1); // 与节点整体透明度相乘 ctx.fillStyle = lg; ctx.fill(); @@ -100,10 +125,24 @@ export const paintNodeFunction = (storeId) => { rg.addColorStop(0.0, 'rgba(230,249,255,1)'); // #E6F9FF rg.addColorStop(0.3693,'rgba(190,255,219,0.5)'); // #BEFFDB @ 0.5 rg.addColorStop(1.0, 'rgba(0,0,0,0)'); + }else if(this.fillColor == '85, 125, 15'){ + // rg.addColorStop(0.0, 'rgba(230,249,255,1)'); // #E6F9FF + // rg.addColorStop(0.3693,'rgba(190,255,219,0.5)'); // #BEFFDB @ 0.5 + // rg.addColorStop(1.0, 'rgba(0,0,0,0)'); + rg.addColorStop(0.0, 'rgba(255,255,255,1)'); + rg.addColorStop(0.3693,'rgba(255,200,200,0.5)'); + rg.addColorStop(1.0, 'rgba(0, 0, 0, 0)'); }else if(isBlue){ rg.addColorStop(0.0, 'rgba(229,249,255,1)'); rg.addColorStop(0.3693,'rgba(141,255,253,0.5)'); rg.addColorStop(1.0, 'rgba(0, 0, 0, 0)'); + }else if (this.fillColor == '15, 106, 125') { + // rg.addColorStop(0.0, 'rgba(229,249,255,1)'); + // rg.addColorStop(0.3693,'rgba(141,255,253,0.5)'); + // rg.addColorStop(1.0, 'rgba(0, 0, 0, 0)'); + rg.addColorStop(0.0, 'rgba(255,255,255,1)'); + rg.addColorStop(0.3693,'rgba(255,200,200,0.5)'); + rg.addColorStop(1.0, 'rgba(0, 0, 0, 0)'); }else if(isRed){ rg.addColorStop(0.0, 'rgba(255,255,255,1)'); rg.addColorStop(0.3693,'rgba(255,200,200,0.5)'); @@ -112,6 +151,13 @@ export const paintNodeFunction = (storeId) => { rg.addColorStop(0.0, 'rgba(229,249,255,1)'); rg.addColorStop(0.3693,'rgba(254,255,200,0.5)'); rg.addColorStop(1.0, 'rgba(0, 0, 0, 0)'); + }else if(this.fillColor == '125, 114, 15'){ + // rg.addColorStop(0.0, 'rgba(229,249,255,1)'); + // rg.addColorStop(0.3693,'rgba(254,255,200,0.5)'); + // rg.addColorStop(1.0, 'rgba(0, 0, 0, 0)'); + rg.addColorStop(0.0, 'rgba(255,255,255,1)'); + rg.addColorStop(0.3693,'rgba(255,200,200,0.5)'); + rg.addColorStop(1.0, 'rgba(0, 0, 0, 0)'); } ctx.globalAlpha = 0.24 * (this.alpha ?? 1); ctx.fillStyle = rg; @@ -126,7 +172,16 @@ export const paintNodeFunction = (storeId) => { ctx.lineWidth = dashWidth ctx.setLineDash([dash, gap]) ctx.lineCap = "round" - ctx.strokeStyle = `rgba(${this.fillColor}, ${this.alpha})` + const RED = '220,50,60' + if(this.fillColor == '85, 125, 15'){ + ctx.strokeStyle = `rgba(${RED}, ${this.alpha})` + }else if(this.fillColor == '15, 106, 125'){ + ctx.strokeStyle = `rgba(${RED}, ${this.alpha})` + }else if(this.fillColor == '125, 114, 15'){ + ctx.strokeStyle = `rgba(${RED}, ${this.alpha})` + }else{ + ctx.strokeStyle = `rgba(${this.fillColor}, ${this.alpha})` + } ctx.stroke() ctx.setLineDash([]) // 清理,避免影响后续绘制 ctx.restore() diff --git a/src/views/GroupEvolution/components/groupGraph.vue b/src/views/GroupEvolution/components/groupGraph.vue index 15374ce..8eed06f 100644 --- a/src/views/GroupEvolution/components/groupGraph.vue +++ b/src/views/GroupEvolution/components/groupGraph.vue @@ -2,7 +2,10 @@
-
+
+ +
疑似异常社团
+
{ // 组色(与你现有 colorMap 一致) const GROUP_ALPHA = 0.3 const RED = "220,50,60" + const greenRed = "85, 125, 15" + const blueRed = "15, 106, 125" + const yellowRed = "125, 114, 15" + // 时间门控:达到阈值就把各组异常节点染红 const shouldA = now >= TA const shouldB = now >= TB @@ -191,50 +198,52 @@ const runDiffForceLayout = (layoutConfig, layoutType, isAsync) => { if (shouldA) { graphVis.nodes = graphVis.nodes.map((n) => { if (props.store.graphAbnormalData.groupA.includes(n.id)) { - n.fillColor = RED + // n.fillColor = RED + n.fillColor = greenRed + } return n }) - graphVis.addNodesInGroup( + /* graphVis.addNodesInGroup( graphVis.nodes.filter((n) => props.store.graphAbnormalData.groupA.includes(n.id)), { shape: "circle", color: RED, alpha: GROUP_ALPHA } - ) + ) */ } if (shouldB) { graphVis.nodes = graphVis.nodes.map((n) => { if (props.store.graphAbnormalData.groupB.includes(n.id)) { - n.fillColor = RED + n.fillColor = yellowRed } return n }) - graphVis.addNodesInGroup( + /* graphVis.addNodesInGroup( graphVis.nodes.filter((n) => props.store.graphAbnormalData.groupB.includes(n.id)), { shape: "circle", color: RED, alpha: GROUP_ALPHA } - ) + ) */ } if (shouldC) { graphVis.nodes = graphVis.nodes.map((n) => { if (props.store.graphAbnormalData.groupC.includes(n.id)) { - n.fillColor = RED + n.fillColor = blueRed } return n }) - graphVis.addNodesInGroup( + /* graphVis.addNodesInGroup( graphVis.nodes.filter((n) => props.store.graphAbnormalData.groupC.includes(n.id)), { shape: "circle", color: RED, alpha: GROUP_ALPHA } - ) + ) */ } // graphVis.autoGroupLayout(graphVis.nodes) } @@ -356,11 +365,34 @@ watch( } .legends { position: absolute; + display: flex; + align-items: center; + justify-content: center; width: 160px; height: 55px; right: 2%; top: 76%; background-image: url('@/assets/images/abnormalGroup/abnormal-group-legends.png'); + .legend-icon { + position: absolute; + top: 17px; + left: 15px; + width: 30px; + height: 30px; + } + .legend-text { + position: absolute; + top: 12px; + left: 50px; + height: 30px; + line-height: 30px; + font-family: "PingFang SC"; + font-style: normal; + font-weight: 400; + font-size: 16px; + font-weight: 400; + color: #fff; + } } .container { width: 100%; diff --git a/vite.config.js b/vite.config.js index 7fe7661..5cef20b 100644 --- a/vite.config.js +++ b/vite.config.js @@ -16,7 +16,7 @@ export default defineConfig({ open: true, proxy: { "/api": { - target: "http://10.7.1.183:8080", + target: "http://10.7.1.183:5080", changeOrigin: true // rewrite: (path) => path.replace(/^\/api/, "") //后端带了api/前缀的话就注释 } From 250a3d0b68260b7a4b80af2c685441191bc48795 Mon Sep 17 00:00:00 2001 From: duanhao Date: Tue, 12 Aug 2025 17:54:55 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/LinkPrediction/socialGroups/components/graph.vue | 1 - 1 file changed, 1 deletion(-) diff --git a/src/views/LinkPrediction/socialGroups/components/graph.vue b/src/views/LinkPrediction/socialGroups/components/graph.vue index 9e6f968..f0a622d 100644 --- a/src/views/LinkPrediction/socialGroups/components/graph.vue +++ b/src/views/LinkPrediction/socialGroups/components/graph.vue @@ -41,7 +41,6 @@ const handleClickNode = async (nodeInfo) => { } const handleClickEdge = async (edgeInfo, groupIdList) => { - console.log("点击边") socialGroupsStore.curComponent = "detailNode" socialGroupsStore.clickEvent = "edge" socialGroupsStore.curRelationId = ""