diff --git a/src/components/card/route-edit-card.vue b/src/components/card/route-edit-card.vue index ba32cab..2116eae 100644 --- a/src/components/card/route-edit-card.vue +++ b/src/components/card/route-edit-card.vue @@ -28,6 +28,56 @@ const route = computed(() => { if (!v?.type) return null; return v; }); + +// 双向路线管理 +const connectedRoutes = computed(() => { + if (!pen.value) return []; + const [a1, a2] = pen.value.anchors ?? []; + if (!a1?.connectTo || !a2?.connectTo) return []; + return editor.value.getRoutesBetweenPoints(a1.connectTo, a2.connectTo); +}); + +const currentRoute = computed(() => { + return pen.value; +}); + +const oppositeRoute = computed(() => { + if (!currentRoute.value) return null; + const [a1, a2] = currentRoute.value.anchors ?? []; + if (!a1?.connectTo || !a2?.connectTo) return null; + + return connectedRoutes.value.find(r => r.id !== currentRoute.value?.id) || null; +}); + +const isBidirectional = computed(() => { + return connectedRoutes.value.length >= 2; +}); + + +// 处理路线方向变化 +function handleDirectionChange(direction: any) { + if (!props.id) return; + editor.value.updateRoute(props.id, { direction: Number(direction) as -1 | 1 }); +} + +// 处理路线类型变化 +function handleRouteTypeChange(type: any) { + if (!props.id) return; + editor.value.changeRouteType(props.id, Number(type) as unknown as MapRouteType); +} + +// 处理反向路线方向变化 +function handleOppositeDirectionChange(direction: any) { + if (!oppositeRoute.value?.id) return; + editor.value.updateRoute(oppositeRoute.value.id, { direction: Number(direction) as -1 | 1 }); +} + +// 处理通行类型变化 +function handlePassChange(pass: any) { + if (!props.id) return; + editor.value.updateRoute(props.id, { pass: Number(pass) as MapRoutePassType }); +} +