From fe1ba733ef1769d676942d4c7101d68f1ef2939f Mon Sep 17 00:00:00 2001 From: chndfang Date: Tue, 6 May 2025 23:48:21 +0800 Subject: [PATCH] temp --- README.md | 16 +- src/_ant.scss | 5 + src/apis/map/constant.ts | 7 + src/apis/map/type.ts | 8 +- src/assets/icons/_icon.scss | 12 +- src/assets/icons/dark/area1-detail.png | Bin 0 -> 590 bytes .../{area2-active.png => area11-active.png} | Bin src/assets/icons/dark/area11-detail.png | Bin 0 -> 1111 bytes .../icons/dark/{area2.png => area11.png} | Bin .../{area3-active.png => area12-active.png} | Bin src/assets/icons/dark/area12-detail.png | Bin 0 -> 1149 bytes .../icons/dark/{area3.png => area12.png} | Bin src/assets/icons/dark/point.png | Bin 0 -> 1250 bytes src/assets/themes/editor-dark.json | 9 + src/components/card/area-detail-card.vue | 79 ++++++++ src/components/card/point-detail-card.vue | 115 +++++++++++ src/components/card/robot-detail-card.vue | 9 +- src/components/editor-toolbar.vue | 4 +- src/components/pen-groups.vue | 190 +++++++++++------- src/pages/scene-editor.vue | 31 ++- src/services/editor.service.ts | 87 +++++++- 21 files changed, 464 insertions(+), 108 deletions(-) create mode 100644 src/assets/icons/dark/area1-detail.png rename src/assets/icons/dark/{area2-active.png => area11-active.png} (100%) create mode 100644 src/assets/icons/dark/area11-detail.png rename src/assets/icons/dark/{area2.png => area11.png} (100%) rename src/assets/icons/dark/{area3-active.png => area12-active.png} (100%) create mode 100644 src/assets/icons/dark/area12-detail.png rename src/assets/icons/dark/{area3.png => area12.png} (100%) create mode 100644 src/assets/icons/dark/point.png create mode 100644 src/components/card/area-detail-card.vue create mode 100644 src/components/card/point-detail-card.vue diff --git a/README.md b/README.md index b90a4d0..2f6c1c6 100644 --- a/README.md +++ b/README.md @@ -102,10 +102,14 @@ interface MapPen { interface MapPointInfo { type: MapPointType; // 点位类型 robots?: Array; // 绑定机器人id集合 + actions?: Array; // 绑定动作点id集合 + isBlock?: boolean; // 是否禁行 + isForbidAvoid?: boolean; // 是否禁止避让 } interface MapRouteInfo { type: MapRouteType; // 线路类型 - direction?: -1 | 1; // 线路方向 + direction?: -1 | 1; // 方向 + pass?: MapRoutePassType; // 可通行类型 } interface MapAreaInfo { type: MapAreaType; // 区域类型 @@ -128,10 +132,20 @@ enum MapPointType { 障碍点 = 99, // 待优化,后续将单独抽离 } + enum MapRouteType { 直线 = 'line', 三阶贝塞尔曲线 = 'bezier3', } +enum MapRoutePassType { + 无, + + 仅空载可通行, + 仅载货可通行, + + 禁行 = 10, +} + enum MapAreaType { 库区 = 1, diff --git a/src/_ant.scss b/src/_ant.scss index 31347ab..aee3eea 100644 --- a/src/_ant.scss +++ b/src/_ant.scss @@ -650,6 +650,11 @@ color: get-color(text4); } + &.card-title { + font-size: 20px; + line-height: 28px; + } + & > strong { font: 500 16px/22px Roboto; } diff --git a/src/apis/map/constant.ts b/src/apis/map/constant.ts index aefe14b..fff7027 100644 --- a/src/apis/map/constant.ts +++ b/src/apis/map/constant.ts @@ -27,6 +27,13 @@ export enum MapRouteType { 三阶贝塞尔曲线 = 'bezier3', } export const MAP_ROUTE_TYPES = Object.freeze(<[string, MapRouteType][]>Object.entries(MapRouteType)); + +export enum MapRoutePassType { + 无, + 仅空载可通行, + 仅载货可通行, + 禁行 = 10, +} //#endregion //#region 区域 diff --git a/src/apis/map/type.ts b/src/apis/map/type.ts index 46ea61b..cc61976 100644 --- a/src/apis/map/type.ts +++ b/src/apis/map/type.ts @@ -1,7 +1,7 @@ import type { RobotInfo } from '@api/robot'; import type { Pen } from '@meta2d/core'; -import type { MapAreaType, MapPointType, MapRouteType } from './constant'; +import type { MapAreaType, MapPointType, MapRoutePassType, MapRouteType } from './constant'; export interface MapPen extends Pen { label?: string; // 展示名称 @@ -19,13 +19,17 @@ export interface MapPen extends Pen { export interface MapPointInfo { type: MapPointType; // 点位类型 robots?: Array; // 绑定机器人id集合 + actions?: Array; // 绑定动作点id集合 + isBlock?: boolean; // 是否禁行 + isForbidAvoid?: boolean; // 是否禁止避让 } //#endregion //#region 线路 export interface MapRouteInfo { type: MapRouteType; // 线路类型 - direction?: -1 | 1; // 线路方向 + direction?: -1 | 1; // 方向 + pass?: MapRoutePassType; // 可通行类型 } //#endregion diff --git a/src/assets/icons/_icon.scss b/src/assets/icons/_icon.scss index 6c12269..c37388e 100644 --- a/src/assets/icons/_icon.scss +++ b/src/assets/icons/_icon.scss @@ -1,10 +1,13 @@ $icons: ( area1-active, + area1-detail, area1, - area2-active, - area2, - area3-active, - area3, + area11-active, + area11-detail, + area11, + area12-active, + area12-detail, + area12, battery_charge, battery, connect_off, @@ -17,6 +20,7 @@ $icons: ( exit, pen, plus, + point, redo, register, robot, diff --git a/src/assets/icons/dark/area1-detail.png b/src/assets/icons/dark/area1-detail.png new file mode 100644 index 0000000000000000000000000000000000000000..ecb5c796027abc0af35d1d156beefa9cd9d72965 GIT binary patch literal 590 zcmV-U0Px%2uVaiRA@u(nZ0fkQ4oc{BOxU;P=x|Pm4X5q%0x62NO=P2sGv)i=b)o=Nrj&v zQi>Fj;)>D|6^*4tf{HY;g{6r`@>-kq{%GyJ>$SPltu(uL&ive&og+3}wBhy>0jxWM zg%L2bUEnqF9C!lkv~27I_zest4U5js1z={6f%m|pmW?ht?gr>f`kPfK0`R#*#wRvA zh;Nd{X%Gtl%c-c$QM~{PP#x1FeafdHNm#?$AU=lKNEujxz<@ zYuot5z!?Zn=R_uwzE%M^xu+m~Y0d392bo!^J$W_oe*rMFr@#x~AMi`kRawNA&<`5{ zGkXI(oEbfpbY20Vu6}R;?=m%WRso={egsf@3z=D6kJiQ|{lqb2Nf-XmBmf`U_5uId4=GdNr=;sf0Tfxh z#I+bZaif1^F#=N6_#Hd(c68!+3(Y*RM9~MYfpmwSchHiE)zuFUAnDLPX3RTi34pr# zVF84kDOwpNx(J|4%Uvg0KGj|B=B?KUdF)6?@2|36_nrJfNaI%c_Gy+c%iB&nnfI}a z6qBT07JLy$=In^4QkO`+?|DQ^DbYRS%U%I{Yob~I03+asB&S^$Br^3Y6l5c>#t1ax c#uYwt2ZM9^K;?M>kN^Mx07*qoM6N<$f^rN3tN;K2 literal 0 HcmV?d00001 diff --git a/src/assets/icons/dark/area2-active.png b/src/assets/icons/dark/area11-active.png similarity index 100% rename from src/assets/icons/dark/area2-active.png rename to src/assets/icons/dark/area11-active.png diff --git a/src/assets/icons/dark/area11-detail.png b/src/assets/icons/dark/area11-detail.png new file mode 100644 index 0000000000000000000000000000000000000000..a2b547b3c0f44f7ca714ad20004e2c4c30c5678a GIT binary patch literal 1111 zcmV-d1gQIoP)Px(5lKWrRA@u(T0LtOK@>d~1hr7HP*Bvu4-{?uDpV}Av$NAmEA8z39d=s9N-OQs zrBXpKO$=D1kt84i3sZT* zKY9R=+yUSmfD-_A1K6GcxeVY7fN3-PHfo1-0U)^tz^!0-Q(IR40G~87ff?E802t8t z%HTBs&)e(-$(;Z$goQqqI>H0E4&eL{TsLcGubZwz@)&@l?zuTL`?W+4+2h=cNO*5eE}DgeqZdk3{1z^a+O?TXdv50V=e#GyzDKztu#z#5He6)k!y{Q0mQjnRd_n*J(8jyq9N62Rf*de9|K5nA<>9hDiJDoOt+Ql zrgFgJ`y@qU&br_GdcK(_)w1j=WJ_Lg-IR(a55}jWPH~Sge{a8ZVv!r%FO0+ z2vhe-s>lg|uA4sE>LSa%?3P^SSL2C(0Cb;@SanC5e7d29ekDox)gNY!dhMQf7v zr5He<#40quLZQ*M)gXDzX+WiGB)M4;04F+Cd|s9EQ|X)iJd!GsUWRG1OpoT21&}aa zFZ@udoJGc;3CG6&tU@RaYRSx&9Ho)or1|lXd^unJn5)E<+~+%~1v6W0;>??ir0RrZ|7xt5*+db;$_eD8;O{foI=dq!JNXaiHpQFO3 zuX~Y0I=y$UkPQt)Xiud*`4&}$Oh+mCb+hKXT_*$89wCpGqf$Av5LrhaV=WkjK zY4cDZd~r|SrF>+$P*^Yqp#WWI8V6ymK|Ut-#7z-^@M393r-IQvDsdAqEg5O@>t`{5 zCI*(wC8?|;YVCQRw59h(jV^^?X1z-2oDQEceH1gg)x3U0-N=(RXgt@bo_042NC dZ_btn@Ec~O_&|zr-|zqc002ovPDHLkV1l>K0Gj{+ literal 0 HcmV?d00001 diff --git a/src/assets/icons/dark/area2.png b/src/assets/icons/dark/area11.png similarity index 100% rename from src/assets/icons/dark/area2.png rename to src/assets/icons/dark/area11.png diff --git a/src/assets/icons/dark/area3-active.png b/src/assets/icons/dark/area12-active.png similarity index 100% rename from src/assets/icons/dark/area3-active.png rename to src/assets/icons/dark/area12-active.png diff --git a/src/assets/icons/dark/area12-detail.png b/src/assets/icons/dark/area12-detail.png new file mode 100644 index 0000000000000000000000000000000000000000..8f365ebad875f5996972905cabf83680fe4c4c74 GIT binary patch literal 1149 zcmV-@1cLjCP)Px(H%UZ6RA@u(S-*>3MHD?pj2b~Df))}|s3@oqQ45P$SOo2C#8jrU6C1(*!cHqY ztqdtlw~!)*3vQ7F1ryBTE@X>Ub|FjLh3t~R(UZ(u<{Rg|nfHD35f*mfvFyJ4?!D*! zm^pWrIN*y1+%WlmNG{Yk-6tdIeE@Go@7>fFX3^Pwn*(q* zY1|)3Zp>m#l6SCABOT7ddO#y@x*O5<`o%sNOBWf;n*XMvFXXuGAYq;EU%OHA7su_S#Ht%L4?+9K8@Wn*) zB?n~q-u;pSG5Dpva>@blk#8p1ttu)Z=~QUe*v}gz*D_QBeJ8ObgLo-P#Wu;MTzYZ< z(pjKL=0e@4lzD~Zs*PsI+~7!1xQM|IHR70n)lDssu6=b5n9`k)ko-bm6MLI3X zy<`@m4RY@gFwkZt)4!)lKx@_N)Ch@hnV*) z){wB0-cUlO8a~~pFQJklNj4C(&fiJ|tfaGhpK0PPl9yYTP;slPbvTs^muxXNs@q1# z7?k8Q;GH=Tzs+O&prd zX->)9GRd3MfRJQ1YE~MrIx;tn!2lv{X8+mq?aCOPJxnwked}$KfdIfYn;U3MEevFE zzLj+3zkh(3_@x|d+(0uXTA9Ynl~N~WAf^+J=6x;{rZ8{8-U$3{I!9Y{tun?+Nj8j{-cf3Sn8kV&o&I90 zPx(oJmAMRA@u(Sv!wSQ561GLQo(i6ylMHS7-!@M@T3nIvo`iozCyjQBhG*(TylZ zF)<`YA~6Mq0#Q(iM}jDp`6lb!>{<3YXYc!nOfoB(WODC5`>b!RZ#}PIfr~6~{V_5C zs=5cj2>`zVJQ9)VQ5b8K04@SpWlH}Rk*f<0z~xk75xKGmAY*}{QAkxumu&#n1K5<% zr+MvX0AB&T2k=Hj`2WB%FaQfy1}v4X5dxYTG`RZ)psG~(RL0UZAb9rMAX%y!fT}JB za0tNuT1`97KLao+BEM?xtpcE`s{xz_ur7GX2LP{)=ifwxH2|u*%wmJjZ3nP1c%I(4 zQxhM>08IHa0cBXESgfc(r&z!r0l?VtQU#(2fYIh$MtQ#Mu81%otHpqv4Kfxz(MhLL z0LL?&r`5+BnpA6V4;a0e448sbc_t#`UH5hZur$dRq%tES_qr~x`Ce7|4o@k1fpsI4 z5&&sW!;46pn}b^3Yh<1{@94xtaJ_E;f%UJq1*@vAwJgPo%#=&{Zhvn@;jKlsPRTV>ty>b?K~UwgTAPL7jKAN)pJQ;2uw<_abs9x-$e|Y4d`6 zFl&8No`r2?A@AuCwh{k;u*^i-rV@I+4ZuDdNScd6OQ`D30?T`B??mKf;031EwAeiq zk*VC-HUO-+X==+}qN*zZ9Cep7f4>0mgH|?f?@D5#IsQ~czGMR08!x188vxJ$Y)Z30 z-;gLlFdOv%Br`1gmYiJ6RYp~1W0!LOxrlrUsIdmX zf#kcNA~KQj0Cl(&=rON*O#%3PKkxZyBvjRt=|K^B5CyV%frEZeqVuXcZzOeh_Gau9 z01-#lM=1aRjFoJPq!OioI{@@3Q;{1nH0)O`y>;@EOZ9}Fl#mPF;``6+GFe9$Y&9`nWJVK0ACTKH0lGB z?;(g+1Z+i)LB885&vO&G)5JtRBYzDJW<=sh5Ro8zyZS#GudEnXkx7efzTU`M_8R%+&<-6 zhveCu_4{w9%?r7Kh9ElU)tZYGP?-D>?#3MH;( z`DbcNWoEWHyFaKW%<^0s_<49ZL%n%{Ee5^7E-{s=9gg>ob)B@lul~hzcjr)_c!4j; z?QrHOWoyBrjk8UAY^|fk*6q?ISup_fL>mYm;R=M*;-ZV`Z!XY{CVZAt7Kfy0lg;P2 zC@b3V6~}-JHqwbrpO1-tN7g*6{eFI2h zgFv{Eh&I;IySd4J@!x*n$Yhk}CnoZn71aZxrD9PuatqM zM(Kfc#_sHCN+aH%8zq1yOEK;CX4rle9a$C{wnDY{jm!hJiu8N_FN)O%Pb@ApNdN!< M07*qoM6N<$g1b&T`2YX_ literal 0 HcmV?d00001 diff --git a/src/assets/themes/editor-dark.json b/src/assets/themes/editor-dark.json index 3dd99c0..e379b6f 100644 --- a/src/assets/themes/editor-dark.json +++ b/src/assets/themes/editor-dark.json @@ -13,5 +13,14 @@ "stroke": "#595959", "strokeActive": "#FCC947" }, + "area": { + "stroke-1": "#9ACDFF99", + "fill-1": "#9ACDFF33", + "stroke-11": "#FF535399", + "fill-11": "#FF9A9A33", + "stroke-12": "#0DBB8A99", + "fill-12": "#0DBB8A33", + "strokeActive": "#FCC947" + }, "line": "#8C8C8C" } diff --git a/src/components/card/area-detail-card.vue b/src/components/card/area-detail-card.vue new file mode 100644 index 0000000..a78b728 --- /dev/null +++ b/src/components/card/area-detail-card.vue @@ -0,0 +1,79 @@ + + + diff --git a/src/components/card/point-detail-card.vue b/src/components/card/point-detail-card.vue new file mode 100644 index 0000000..cd1d2dc --- /dev/null +++ b/src/components/card/point-detail-card.vue @@ -0,0 +1,115 @@ + + + diff --git a/src/components/card/robot-detail-card.vue b/src/components/card/robot-detail-card.vue index 24fec2a..f9f4030 100644 --- a/src/components/card/robot-detail-card.vue +++ b/src/components/card/robot-detail-card.vue @@ -22,13 +22,13 @@ const stateDot = computed(() => `state-${robot.value?.state}`);