From 44db78f9bf1d64210176f491d50a84dd3c349c1b Mon Sep 17 00:00:00 2001 From: chndfang Date: Wed, 11 Jun 2025 00:22:16 +0800 Subject: [PATCH] feat: change control point --- mocks/robot/getAll | 2 +- mocks/robot/register | 2 +- mocks/robot/seizeByIds | 2 +- mocks/scene/getByGroupId | 2 +- mocks/scene/getById | 2 +- public/robot/1-active-dark.png | Bin 1750 -> 1760 bytes public/robot/1-active-light.png | Bin 1750 -> 1760 bytes public/robot/1-dark.png | Bin 1626 -> 1641 bytes public/robot/1-light.png | Bin 1640 -> 1671 bytes src/services/editor.service.ts | 40 ++++++++++++++++++++++++-------- vite.config.ts | 1 + 11 files changed, 36 insertions(+), 15 deletions(-) diff --git a/mocks/robot/getAll b/mocks/robot/getAll index 61c9933..306f0a1 100644 --- a/mocks/robot/getAll +++ b/mocks/robot/getAll @@ -1,7 +1,7 @@ { "code": 200, "success": true, - "data": [ + "result": [ { "id": "mock-robot-1", "label": "模拟机器人A", diff --git a/mocks/robot/register b/mocks/robot/register index da10ace..59fa7ed 100644 --- a/mocks/robot/register +++ b/mocks/robot/register @@ -1,7 +1,7 @@ { "code": 200, "success": true, - "data": { + "result": { "id": "mock-robot-0", "label": "模拟机器人-注册", "brand": 1, diff --git a/mocks/robot/seizeByIds b/mocks/robot/seizeByIds index 3e6737a..40f2c4a 100644 --- a/mocks/robot/seizeByIds +++ b/mocks/robot/seizeByIds @@ -1,7 +1,7 @@ { "code": 200, "success": true, - "data": [ + "result": [ "mock-robot-1", "mock-robot-2" ], diff --git a/mocks/scene/getByGroupId b/mocks/scene/getByGroupId index 4b42358..3416e15 100644 --- a/mocks/scene/getByGroupId +++ b/mocks/scene/getByGroupId @@ -1,7 +1,7 @@ { "code": 200, "success": true, - "data": { + "result": { "id": "mock-group-scene-1", "label": "模拟组场景A", "group": { diff --git a/mocks/scene/getById b/mocks/scene/getById index 4bc0e0f..93d4700 100644 --- a/mocks/scene/getById +++ b/mocks/scene/getById @@ -1,7 +1,7 @@ { "code": 200, "success": true, - "data": { + "result": { "id": "mock-scene-1", "label": "模拟场景A", "json": "{\"robotGroups\":[{\"sid\":\"mock-scene-1\",\"id\":\"mock-robot-group\",\"label\":\"模拟机器人组\",\"robots\":[\"mock-robot-1\",\"mock-robot-2\"]}],\"robots\":[{\"id\":\"mock-robot-1\",\"label\":\"模拟机器人A\",\"brand\":\"模拟品牌A\",\"type\":1,\"ip\":\"127.0.1.1\",\"isConnected\":true,\"state\":4,\"canOrder\":true,\"canStop\":true,\"canControl\":true},{\"id\":\"mock-robot-2\",\"label\":\"模拟机器人B\",\"brand\":\"模拟品牌A\",\"type\":2,\"ip\":\"127.0.1.2\"}],\"points\":[{\"id\":\"776fa1bf\",\"name\":\"测试普通点\",\"x\":100,\"y\":100,\"type\":1,\"config\":{}},{\"id\":\"ea84ca\",\"name\":\"测试等待点\",\"x\":200,\"y\":100,\"type\":2,\"config\":{},\"actions\":[\"343a2f0\"]},{\"id\":\"083f10\",\"name\":\"测试避让点\",\"x\":300,\"y\":100,\"type\":3,\"config\":{}},{\"id\":\"3a350276\",\"name\":\"测试临时避让点\",\"x\":400,\"y\":100,\"type\":4,\"config\":{}},{\"id\":\"51b95527\",\"name\":\"测试电梯点\",\"x\":100,\"y\":300,\"type\":11,\"config\":{}},{\"id\":\"200e2898\",\"name\":\"测试自动门点\",\"x\":200,\"y\":300,\"type\":12,\"config\":{}},{\"id\":\"e94941e\",\"name\":\"测试充电点\",\"x\":300,\"y\":300,\"type\":13,\"config\":{},\"robots\":[\"mock-robot-1\"]},{\"id\":\"5bdd329\",\"name\":\"测试停靠点\",\"x\":400,\"y\":300,\"type\":14,\"config\":{},\"robots\":[]},{\"id\":\"343a2f0\",\"name\":\"测试动作点\",\"x\":500,\"y\":300,\"type\":15,\"config\":{}},{\"id\":\"b6c6cfb\",\"name\":\"测试禁行点\",\"x\":100,\"y\":500,\"type\":16,\"config\":{}}],\"routes\":[{\"id\":\"3de9971\",\"from\":\"776fa1bf\",\"to\":\"ea84ca\",\"type\":\"line\",\"pass\":1,\"config\":{}},{\"id\":\"4781a31f\",\"from\":\"ea84ca\",\"to\":\"083f10\",\"type\":\"line\",\"pass\":1,\"config\":{}},{\"id\":\"fc86102\",\"from\":\"083f10\",\"to\":\"3a350276\",\"type\":\"line\",\"pass\":0,\"config\":{}},{\"id\":\"6f33b86\",\"from\":\"3a350276\",\"to\":\"343a2f0\",\"type\":\"bezier3\",\"pass\":1,\"config\":{}},{\"id\":\"7a48284\",\"from\":\"200e2898\",\"to\":\"51b95527\",\"type\":\"line\",\"pass\":0,\"config\":{}},{\"id\":\"83bc37\",\"from\":\"e94941e\",\"to\":\"200e2898\",\"type\":\"line\",\"pass\":2,\"config\":{}},{\"id\":\"b52b5a\",\"from\":\"5bdd329\",\"to\":\"e94941e\",\"type\":\"line\",\"pass\":2,\"config\":{}},{\"id\":\"610d367\",\"from\":\"343a2f0\",\"to\":\"5bdd329\",\"type\":\"line\",\"pass\":2,\"config\":{}},{\"id\":\"142dbab5\",\"from\":\"51b95527\",\"to\":\"776fa1bf\",\"type\":\"bezier3\",\"pass\":10,\"config\":{},\"c1\":{\"x\":-50,\"y\":100},\"c2\":{\"x\":-10,\"y\":50}},{\"id\":\"a3ad044\",\"from\":\"51b95527\",\"to\":\"b6c6cfb\",\"type\":\"line\",\"pass\":10,\"config\":{}},{\"id\":\"71734a6\",\"from\":\"51b95527\",\"to\":\"b6c6cfb\",\"type\":\"line\",\"config\":{}}],\"areas\":[{\"id\":\"de62ae3\",\"name\":\"测试非互斥区\",\"x\":63,\"y\":67,\"w\":203,\"h\":325,\"type\":12,\"config\":{},\"points\":[\"776fa1bf\",\"ea84ca\",\"51b95527\",\"200e2898\"]},{\"id\":\"f236e4b\",\"name\":\"测试库区\",\"x\":281,\"y\":246,\"w\":292,\"h\":152,\"type\":1,\"config\":{},\"points\":[\"343a2f0\"]},{\"id\":\"1417882e\",\"name\":\"测试互斥区\",\"x\":275,\"y\":54,\"w\":178,\"h\":107,\"type\":11,\"config\":{},\"points\":[\"083f10\",\"3a350276\"],\"routes\":[]}],\"blocks\":[]}" diff --git a/public/robot/1-active-dark.png b/public/robot/1-active-dark.png index cf0b1c63e3942bfc81f94b320c0fc035cab5d099..11e99dc561612d6cfb89d4071dbe0f68d77627ab 100644 GIT binary patch delta 1731 zcmV;!20Z!J4d4xsF@Ks#L_t(|UhSPvNE}xj$A7bG&>GWSse;j)w< z^pq4D(wml?a?;J89$K2LExj4so_Z=K$I?R0sl*<%w1F0c1X@c<(bcGFQR;3&OQh;- z{VuyQJITM}erlvz1p!U*sDC672_V-COV?o5CGE&a z*e57-Ab?RIJq-{V#nNFz2^Gj_VQGj+&lpuvAWB`)+ADq+q-sI~GFn(3AlklR?QGTH zWv%UIkRZx)g#yGGM%lD*pac$NtdKpnO|iQyXTLyt{}nAc&C=JeK7j%O44q-=0%WX^?Ij5v))uTQPuW3|CnBs>u(JJr$G!<7!tam0<;?$9xsC0)hlu+y#FI8aA_2MnBC!5GqiIP^*g{qLV}C zsjKeJ98~Mkya_={qy){X{PTZ#Tg=IgEn=~d_Gm!DpI>XaMaQ@u* z^&*HM+RTlwX>w#t6wGJFC4~_P)*CsmjzAG_riZCEe#q+~JdJyje@v4j8Tujfg{SeQ z90HXTSF}bTSb;(z-0jr06rD5gCDa3KuBjbmpo@JNzAX zEA_Egr2qz?Q~<%V5-i4;8*;|QyWa*LCUyoQe8zg-@{&_p$Aq+O!;76N}No19jB=Tmv=LH&9*m0p>a8rhlT(`_D1= zFMoAJ{z#aC6nKsTb$pP$!!!iW&#pZzg7DG~ABZ)t#wIfHPt&s1svq7-fo#TyUw*q1$pn#b4pnxbK&M8SLL@7imgzK`c zLPmv*3K7J$>O zKWvB;konvy&H4QJ!K^qZbwm!xmVdro+*g&gQ3Q1yZ%Gn<+O3Wx&Y9J5LxN`E0iDx`Pd zESn4R}wJ)(d} zO{#A1z6;9Pak$5K+s()HS0S$qzC-x-&aY2WSpnkH)rr&y;R{W{<}Z-4F+t}NA96?8 zbOl6e4zZJ~Suwn4RCGK?7=Ou8h}i&9heXFKARGi#$OL&WqjCtNG(~fO=y*mm(M=^) zw;aO#sXGgO(K9SMp2fyesf<0Jx^ovpV3|zRA<^+HHkK+@?J0(Uk`V)p2Vm|d>X7Jo zMnf&jWq2;A;xwtKL!#pufmjw)!TXIU$i!7L!)-!QheXG_*;o2I@_)ykk~{bt%2=TQ zq;E~sA<^*+j_iiZ?zPu2$d|HRMk7QW5*^O~#IbCb6qPU-6;>Bi&#Wk7XI1GAIRuwr zuSMy@a*lUiynhaLR5Vo_k`V~Hsq&!~n%i$>M1=~>8u=jc6#uc-Q`}JV5PmpTdT}d3 zZ1f*$!2x|=-b;iG=REPRov^-Q`iO@INZIak8S}oK62&h+%Vo?Zp2+AN+KWP>W4#1R Z{s$5`_fYAT|002ovPDHLkV1grpIcNX? delta 1721 zcmV;q21fbd4b}~iF@KOrL_t(|UhSPvOdM4l$A7bc0c((@LaIPvi`u4Wgjl0V8)Xm0 zcu`C=9szHj%7)g9Q5KD!Q1IkQZErT3*q%)5fi|sC6HHA^ld9oQg<4ZmcSEf-1!m>D zGR^ETJM-qfnKuvm-f{Q6ncwd--}igJnSJwHgLEq)U}zqt1b>tO@?l|a7-kI_EhBMX zpxA)`MuE&MKp2$B#tkJ_Aftu3Lqz7dT@?kQ%n_rt0G761(vH{ATxc$NS$Hn8&)5wKmfy}#6*Fpj?sa< zNoM*@BlR<5e}Ca_(tvQlu$+?$MGBCy!c5z`GTJyVVZMUQu8fhI$k_Km@?(2SVF!YIBgb%nKwU%~5*^QAEHYWB zq?pm#fgl5gLPBk#4vCIubY@^}5h?ygWCs%ZbioNk9TFYS2m~+yr346mD?u_AY7=!x zbUdRoxEaI}Tml5~BlNpgQHMmwGXg>UNIHQO7=H%`>L%)t==cD}7Q=@xC(h|<~vHZHH#X>HGV0-NN*<}=NfAp6fO|iQ^o0h2(d&1iFB2D zFMsz7)kuyXmP3dm@2B>wHD#Xae}#I6Gt%S8t^6XL$c)hB(XZ43Vp$_QmV^*HqFH4$ zkTL?*3UPqZKr|5VV6GJ+y4a~RKHN-I9ly9O5d$K7Y6NwYBR|nVLcN#K3W<4n-4atK zck3oiUS--Z%k1yI2iquFz0J43k}>4s!haR|^PfOFt9=~>3_$T~$^ltgxlQNie)qGR z>-+B3Jyeyb@EofgkSNq)5ooV#q+Q8|%>xAL`045_Ev+nbDZp<~Wuk%(v^?Ue5~UP^ zxB-Pk+5A+Z6p-_CzeT1F3o=xaZrxLsxiUaxsKcV*wFD~z1bGMY4;jsC304Nkw|_Gi zWw5w&j)SQV*Yjy04lEjo2J$}vJ!Kq9&_Fa0??p>1L@PuqBv4|fr;MI5n|#X1xb}PWGC-zt*Jvug5GXM6cHUjTgLdA(UG2Nw6?2s)E??sHG0?aJ zEss)7WtG}MV4aL<^U!^D)X~tS{(mDxScs?XKVF%lWpg#q6=&^Sl}OOjO%In<2aY2> zhWPDm|6}nw{d)Z`Rv!cP+r51U?W}c=9mNa6xA$FaJH#6k$Em&h8Ba&1^Veu97jA%U zPd3u7I`1E;rq298pQK+41lf8allwK*o@|DChW+a_K`GO@1>xy~X|gNX=zpmUi@?du zyL4{+Q@KE}uO0i_SsG#rmSf%@zL9V2ZD{h08Fo89NbRS;XXjZ=v-jCBWdgtI&N6N6 zX9Spqn~SvY?+vsIpbplCJ?~!(46$~%`nkU99=I4n zeOohSE_@T)TM$mK@gl%SU4Jj|sKd1w0!l{o1x5Sp;Oq3_Sn;0>Vs9riBXn;3Gafr! z%VlsERO!hM7GDjCvz;CpqtjXLKMZg!sDe@%D9FTBG6PCEIGm9_eK1WUgP#nmYG} z_UbBLCBt$$b@uzBB9M`W&^*g_39BRo17#ip)iX}MI;)I%_gabKC+_Al=E9e2GaP_NA)CQ3ZX5pt_dMf^;yhvO P00000NkvXXu0mjfJWn8y diff --git a/public/robot/1-active-light.png b/public/robot/1-active-light.png index cf0b1c63e3942bfc81f94b320c0fc035cab5d099..11e99dc561612d6cfb89d4071dbe0f68d77627ab 100644 GIT binary patch delta 1731 zcmV;!20Z!J4d4xsF@Ks#L_t(|UhSPvNE}xj$A7bG&>GWSse;j)w< z^pq4D(wml?a?;J89$K2LExj4so_Z=K$I?R0sl*<%w1F0c1X@c<(bcGFQR;3&OQh;- z{VuyQJITM}erlvz1p!U*sDC672_V-COV?o5CGE&a z*e57-Ab?RIJq-{V#nNFz2^Gj_VQGj+&lpuvAWB`)+ADq+q-sI~GFn(3AlklR?QGTH zWv%UIkRZx)g#yGGM%lD*pac$NtdKpnO|iQyXTLyt{}nAc&C=JeK7j%O44q-=0%WX^?Ij5v))uTQPuW3|CnBs>u(JJr$G!<7!tam0<;?$9xsC0)hlu+y#FI8aA_2MnBC!5GqiIP^*g{qLV}C zsjKeJ98~Mkya_={qy){X{PTZ#Tg=IgEn=~d_Gm!DpI>XaMaQ@u* z^&*HM+RTlwX>w#t6wGJFC4~_P)*CsmjzAG_riZCEe#q+~JdJyje@v4j8Tujfg{SeQ z90HXTSF}bTSb;(z-0jr06rD5gCDa3KuBjbmpo@JNzAX zEA_Egr2qz?Q~<%V5-i4;8*;|QyWa*LCUyoQe8zg-@{&_p$Aq+O!;76N}No19jB=Tmv=LH&9*m0p>a8rhlT(`_D1= zFMoAJ{z#aC6nKsTb$pP$!!!iW&#pZzg7DG~ABZ)t#wIfHPt&s1svq7-fo#TyUw*q1$pn#b4pnxbK&M8SLL@7imgzK`c zLPmv*3K7J$>O zKWvB;konvy&H4QJ!K^qZbwm!xmVdro+*g&gQ3Q1yZ%Gn<+O3Wx&Y9J5LxN`E0iDx`Pd zESn4R}wJ)(d} zO{#A1z6;9Pak$5K+s()HS0S$qzC-x-&aY2WSpnkH)rr&y;R{W{<}Z-4F+t}NA96?8 zbOl6e4zZJ~Suwn4RCGK?7=Ou8h}i&9heXFKARGi#$OL&WqjCtNG(~fO=y*mm(M=^) zw;aO#sXGgO(K9SMp2fyesf<0Jx^ovpV3|zRA<^+HHkK+@?J0(Uk`V)p2Vm|d>X7Jo zMnf&jWq2;A;xwtKL!#pufmjw)!TXIU$i!7L!)-!QheXG_*;o2I@_)ykk~{bt%2=TQ zq;E~sA<^*+j_iiZ?zPu2$d|HRMk7QW5*^O~#IbCb6qPU-6;>Bi&#Wk7XI1GAIRuwr zuSMy@a*lUiynhaLR5Vo_k`V~Hsq&!~n%i$>M1=~>8u=jc6#uc-Q`}JV5PmpTdT}d3 zZ1f*$!2x|=-b;iG=REPRov^-Q`iO@INZIak8S}oK62&h+%Vo?Zp2+AN+KWP>W4#1R Z{s$5`_fYAT|002ovPDHLkV1grpIcNX? delta 1721 zcmV;q21fbd4b}~iF@KOrL_t(|UhSPvOdM4l$A7bc0c((@LaIPvi`u4Wgjl0V8)Xm0 zcu`C=9szHj%7)g9Q5KD!Q1IkQZErT3*q%)5fi|sC6HHA^ld9oQg<4ZmcSEf-1!m>D zGR^ETJM-qfnKuvm-f{Q6ncwd--}igJnSJwHgLEq)U}zqt1b>tO@?l|a7-kI_EhBMX zpxA)`MuE&MKp2$B#tkJ_Aftu3Lqz7dT@?kQ%n_rt0G761(vH{ATxc$NS$Hn8&)5wKmfy}#6*Fpj?sa< zNoM*@BlR<5e}Ca_(tvQlu$+?$MGBCy!c5z`GTJyVVZMUQu8fhI$k_Km@?(2SVF!YIBgb%nKwU%~5*^QAEHYWB zq?pm#fgl5gLPBk#4vCIubY@^}5h?ygWCs%ZbioNk9TFYS2m~+yr346mD?u_AY7=!x zbUdRoxEaI}Tml5~BlNpgQHMmwGXg>UNIHQO7=H%`>L%)t==cD}7Q=@xC(h|<~vHZHH#X>HGV0-NN*<}=NfAp6fO|iQ^o0h2(d&1iFB2D zFMsz7)kuyXmP3dm@2B>wHD#Xae}#I6Gt%S8t^6XL$c)hB(XZ43Vp$_QmV^*HqFH4$ zkTL?*3UPqZKr|5VV6GJ+y4a~RKHN-I9ly9O5d$K7Y6NwYBR|nVLcN#K3W<4n-4atK zck3oiUS--Z%k1yI2iquFz0J43k}>4s!haR|^PfOFt9=~>3_$T~$^ltgxlQNie)qGR z>-+B3Jyeyb@EofgkSNq)5ooV#q+Q8|%>xAL`045_Ev+nbDZp<~Wuk%(v^?Ue5~UP^ zxB-Pk+5A+Z6p-_CzeT1F3o=xaZrxLsxiUaxsKcV*wFD~z1bGMY4;jsC304Nkw|_Gi zWw5w&j)SQV*Yjy04lEjo2J$}vJ!Kq9&_Fa0??p>1L@PuqBv4|fr;MI5n|#X1xb}PWGC-zt*Jvug5GXM6cHUjTgLdA(UG2Nw6?2s)E??sHG0?aJ zEss)7WtG}MV4aL<^U!^D)X~tS{(mDxScs?XKVF%lWpg#q6=&^Sl}OOjO%In<2aY2> zhWPDm|6}nw{d)Z`Rv!cP+r51U?W}c=9mNa6xA$FaJH#6k$Em&h8Ba&1^Veu97jA%U zPd3u7I`1E;rq298pQK+41lf8allwK*o@|DChW+a_K`GO@1>xy~X|gNX=zpmUi@?du zyL4{+Q@KE}uO0i_SsG#rmSf%@zL9V2ZD{h08Fo89NbRS;XXjZ=v-jCBWdgtI&N6N6 zX9Spqn~SvY?+vsIpbplCJ?~!(46$~%`nkU99=I4n zeOohSE_@T)TM$mK@gl%SU4Jj|sKd1w0!l{o1x5Sp;Oq3_Sn;0>Vs9riBXn;3Gafr! z%VlsERO!hM7GDjCvz;CpqtjXLKMZg!sDe@%D9FTBG6PCEIGm9_eK1WUgP#nmYG} z_UbBLCBt$$b@uzBB9M`W&^*g_39BRo17#ip)iX}MI;)I%_gabKC+_Al=E9e2GaP_NA)CQ3ZX5pt_dMf^;yhvO P00000NkvXXu0mjfJWn8y diff --git a/public/robot/1-dark.png b/public/robot/1-dark.png index 6ce6557f997382da42553a8e268f254f635b86ef..83bae487d4432c9963dc7cdb5f0d464259f21b55 100644 GIT binary patch delta 1611 zcmV-R2DJIw4CxGzF@GaTL_t(|UhSMQNbE=$$7dq4m_)FUCkPgIjg2U%#fgm|mOcv$ z(aOSyon9mOcwiyCL$EpRo{%P__?(=>lk6s3z0@)IGX4gMx$M78QtN=-t@ zciXoAC4~H~Y1&`8zxnRMcTi=FeXuO+Bc*gWE&%+Dk}>utAtb5m`gcFqbAiC%Ez6oD zgnabVU|g?ZjDG=?B+ouiAfSrp=jX4sZMX3ndMCf%GseDnsl^q@)6>(>iA3Ua9l^-o zv-{WA*WX%NTE11fi4}p=p)#CfcU4M7Ael_&k2+LF85C7j=bf`q84$xTCMl&5M1O>G zplRA>@jy#}!0KpjyQPz^vC85s%GEo02oG;JmyOA0^?!x*NN&If6Ae}6v#@Y zd3njsPPezWUC%Bx3NB-s=7C5nppM1GMPF55 z;6p=0Sr9=A%v$H?=f1(LudfqOi%8KlExUOQ3?!9Gkz|rTDRp;uXV(p&4w(X~xwyC> zmzS5^W+1pikQFJ?Kvq{*x$BL-zCP05-!Ebp_u8|wv#eUYN)We^1~NA{=NU{v83O|Y z+dB{-NdZ}aG$-sJ^ky$qdE^%s5O9aJI5$H%S@x?{8bhrvbh2*7LW4>rUKNEojl zoGS8CN9=&WOR34p$D2*g1bfgliXhl^YxVfue9+Lk^J zQ46EP>@zeVUI%Hy7?7xIxY>X}9App(0`YcOR0t|0Vuiq&clatI>hERXOe*ZE;bS71 zQgxSsbMMvqluUGBaIPKBx672O1AmEn{ox$E?0N)&gdJ3QXWwPy%&QyZY`e3~sw)J7 zDm=}KI*vg6fKSU}7gY1aqmCuAu_JGH)fIw3c#fU>-KiMSJ1Se>r=w!U9J=rX8~hp>-$v5ny%}m2~{9fMkbTl6iu1I>ri$; zvh{iP!SAZ7LS`;VEct(S2>4GXlbNw?yQ(=4Wd|f%p9iGaUCMx@)9DY2qKJJo&*@Qi zK(h6DKn%n9)YjHk$fQ}8*nceymGF$J)$f$jq^hbVNl?mw}lxT<2@OLID`2X?`hol{_`i^r4N7ji2ic3cz@KdlO3^nx|E7O7T(#S0TlY z2PuddWA8nK<^cpyUeaoAPUd2@G&D2-n83*+qn=G*(?%&x8HRCKDMVgWvd1@&d}U`E zb4Wx>DUC%Ma{!6eyacg002ov JPDHLkV1iO+@{Rxi delta 1596 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 delta 1610 zcmV-Q2DSNz4d@JzF@GXSL_t(|UhSMQNF!Mo$GC`rV5$Ct~5WRjWpW?p6- z!+RhLJMWwM-f#Zj_svXZJ_2%75g?LBH3134pa=;>03aJbk88R|t zWXRYeAVWrmj4i>)DkDQihKvjuTLeTyCKii*$mMds5<&(6pqCKxiBkGO#EC}P5<;FR zrT+rJKa|qHL!r=L7Z(>#cJ|MmRAaH&$6PKqr6@|=F90|f`XdksBvYvrf?^IPkdh)2 zgpeub-h4bk(|@#NCX-3BT(ks&s>tW_YXI%;21+m({A#R1H9*4Qa6(a(#5>6e zLT*w@zo*mbZtKOE;7etatpXB>M7{z* zoV61>+eH^7YR~f3sFE@eyxz#?^UONUI)HJz=z>J;S^iQ=pF*L~yq-(SK>GXpryJb>teMD2Ni0KgAbRsX005{*W;D5breJK&xs zx*$<|PJc&#s;c^%5lGUFn>Nt}iQ4l3!90>qr;C>wl_B$;$Jp*1(FKXx^ZKi*YVqb( z0x1!bKn&86KqL_BY$6pR74k+3F_uZ*vgdT3-MeSAP2&j z1mbqt-Q3*tJb&nG!aTCPyzH-#!K6AlIq7*G!Thnex97j4s-GUObBSo~aIMNnASMwj z6=DD*fk+_M)lDiysQUZIxZzi-{#lwcPlSPZ9U69*Y4`d>0%`QUj8w=Qm)E8UnVXxN z;(ybuMh?7z?C$Pn?$Vbz9Ks1o<`B+%2$@t3pj-pu#jQWjBLLsz5P7$2klxwZ z8JwS=b4IS%w6U=<7#zgDF15oq3d!g5u(Puxwo*>(+1XiWZ*TWE5cJNAu!%$>Fn>Ni z?*B)K=pjB&-QV8_RErw}pQlbwPn)X4>Mq!|>k!tv?Wt4>PEJnT-~m>-0}trr-FM-# zyR@_fC|j%HMuKJi{DA&sG8x#|*sygngn{4_?}>>C=0Q;@2u3t~Fih~*Idq53m0ls3>+5UCX0w1V?3<|u7mj~jU0pCVG{pR2yYd+LA(7p(U-wgYC(RH#Iyzu= zb@k1@f-p(|lj+*pnr(FeKy5Pwr|mN0@p$pmGCvF_xufKFZMzJShAO-X)_+ZChlhub z-&UfOZl%-d>V_)Va;H!zd~@0|1C@eR$Lo&}F-#DK-KtV~a)QBNqNe2zP8b*%nAbGT zanD1{DN|EZfFBciG4Of=6R6#aV(_gTF8KddU8?%}`aZU{whFiHLNLR_!^OXzo}PxO z1}oFU!$YxrqasipqN7kKe1FMiv*k{jHI3awRU+!3m-d8^E*gy{ zD5dYZgC_Po4242TR?})`Pi7rVNi7Jaq0J-RtSZ>WThp|omzS4=dPDi5-m$rX=*E?8 z%oRoHrIh-rjX5C%uPL&xudgXr+nBp~CjGQ;+Y0fM^KSU^AE%f6nlao;zW@LL07*qo IM6N<$f~5Nx{r~^~ diff --git a/src/services/editor.service.ts b/src/services/editor.service.ts index 46b399a..9c3fc8e 100644 --- a/src/services/editor.service.ts +++ b/src/services/editor.service.ts @@ -79,9 +79,24 @@ export class EditorService extends Meta2d { if (!routes?.length) return; routes.map((v) => { const { id, desc, from, to, type, pass, c1, c2, properties } = v; - this.addRoute([from, to], type, id); + const p1 = this.getPenById(from); + const p2 = this.getPenById(to); + if (isNil(p1) || isNil(p2)) return; + this.addRoute([p1, p2], type, id); + const { x: x1, y: y1 } = this.getPointRect(p1)!; + const { x: x2, y: y2 } = this.getPointRect(p2)!; this.setValue( - { id, desc, properties, route: { type, pass, c1, c2 } }, + { + id, + desc, + properties, + route: { + type, + pass, + c1: { x: (c1?.x ?? 0) - x1, y: (c1?.y ?? 0) - y1 }, + c2: { x: (c2?.x ?? 0) - x2, y: (c2?.y ?? 0) - y2 }, + }, + }, { render: false, history: false, doEvent: false }, ); }); @@ -127,24 +142,29 @@ export class EditorService extends Meta2d { if (!pen?.id || pen.anchors?.length !== 2 || isEmpty(pen?.route)) return null; const { id, anchors, desc, properties } = pen; const { type, direction = 1, pass, c1, c2 } = pen.route; - const [p1, p2] = anchors.map((v) => v.connectTo!); + const [p1, p2] = anchors.map((v) => this.getPenById(v.connectTo!)); + if (isNil(p1) || isNil(p2)) return null; const route: StandardSceneRoute = { id: id, desc, - from: direction < 0 ? p2 : p1, - to: direction < 0 ? p1 : p2, + from: direction < 0 ? p2.id! : p1.id!, + to: direction < 0 ? p1.id! : p2.id!, type, pass, config: {}, properties, }; + const { x: x1, y: y1 } = this.getPointRect(p1)!; + const { x: x2, y: y2 } = this.getPointRect(p2)!; + const cp1 = { x: x1 + (c1?.x ?? x2 - x1), y: y1 + (c1?.y ?? 0) }; + const cp2 = { x: x2 + (c2?.x ?? 0), y: y2 + (c2?.y ?? y1 - y2) }; switch (type) { case MapRouteType.二阶贝塞尔曲线: - route.c1 = c1; + route.c1 = cp1; break; case MapRouteType.三阶贝塞尔曲线: - route.c1 = direction < 0 ? c2 : c1; - route.c2 = direction < 0 ? c1 : c2; + route.c1 = direction < 0 ? cp2 : cp1; + route.c2 = direction < 0 ? cp1 : cp2; break; default: break; @@ -503,8 +523,8 @@ export class EditorService extends Meta2d { return `${p1.label}${(d ?? direction) > 0 ? '→' : '←'}${p2.label}`; } - public addRoute(p: [string, string], type = MapRouteType.直线, id?: string): void { - const [p1, p2] = p.map((v) => this.getPenById(v)); + public addRoute(p: [MapPen, MapPen], type = MapRouteType.直线, id?: string): void { + const [p1, p2] = p; if (!p1?.anchors?.length || !p2?.anchors?.length) return; const line = this.connectLine(p1, p2, undefined, undefined, false); id ||= line.id!; diff --git a/vite.config.ts b/vite.config.ts index 7e158c1..86fb44e 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -43,6 +43,7 @@ export default ({ mode }: Record) => port: 8888, host: true, proxy: { + '/mocks/': { target: 'http://localhost:8888/web-amr' }, '/api/': { target: 'http://82.156.39.91:18080/jeecg-boot', rewrite: (path) => path.replace(/^\/api/, ''),