|
|
@@ -23,13 +23,8 @@ import video1 from '@/assets/videos/video1.mp4'
|
|
|
import video2 from '@/assets/videos/video2.mp4'
|
|
|
import video3 from '@/assets/videos/video3.mp4'
|
|
|
import video4 from '@/assets/videos/video4.mp4'
|
|
|
-import arrow1 from '@/assets/images/arrow_1.png'
|
|
|
-import arrow2 from '@/assets/images/arrow_2.png'
|
|
|
-import arrow3 from '@/assets/images/arrow_3.png'
|
|
|
-import arrow4 from '@/assets/images/arrow_4.png'
|
|
|
|
|
|
const VIDEOS = [video1, video2, video3, video4]
|
|
|
-const ARROWS = [arrow1, arrow2, arrow3, arrow4]
|
|
|
|
|
|
function pickVideo(i) { return VIDEOS[i % VIDEOS.length] }
|
|
|
|
|
|
@@ -431,13 +426,25 @@ function _makeCornerVideos() {
|
|
|
|
|
|
function _makeStageList() {
|
|
|
return [1, 2, 3, 4].map((_, i) => ({
|
|
|
- value: String(i + 1), time: [30, 30, 50, 30][i], img: ARROWS[i],
|
|
|
+ value: String(i + 1), time: [30, 30, 50, 30][i], img: null,
|
|
|
}))
|
|
|
}
|
|
|
|
|
|
function _makeCardPhases(activeIndex = 0) {
|
|
|
- return ARROWS.map((img, i) => ({
|
|
|
- id: i + 1, icon: ['↑', '↰', '↑', '↰'][i], img, active: i === activeIndex,
|
|
|
+ // 4 个标准阶段的 PhaseDiagram token 数组 (对应 _makePhaseData 的 default 配置):
|
|
|
+ // P1 南北直行 / P2 南北左转 / P3 东西直行 / P4 东西左转
|
|
|
+ const PHASE_TOKENS = [
|
|
|
+ ['STRAIGHT_DOWN', 'STRAIGHT_UP'],
|
|
|
+ ['TURN_DOWN_LEFT', 'TURN_UP_LEFT'],
|
|
|
+ ['STRAIGHT_LEFT', 'STRAIGHT_RIGHT'],
|
|
|
+ ['TURN_LEFT_DOWN', 'TURN_RIGHT_UP'],
|
|
|
+ ]
|
|
|
+ return [1, 2, 3, 4].map((_, i) => ({
|
|
|
+ id: i + 1,
|
|
|
+ icons: PHASE_TOKENS[i], // PhaseDiagram 渲染用
|
|
|
+ icon: ['↑', '↰', '↑', '↰'][i], // 兜底 unicode (PhaseDiagram 失败时显示)
|
|
|
+ img: null,
|
|
|
+ active: i === activeIndex,
|
|
|
}))
|
|
|
}
|
|
|
|
|
|
@@ -590,7 +597,7 @@ export async function apiGetIntersectionStages(id) {
|
|
|
const hasTrack1 = timing.data.phaseData.some(p => p[0] === 1)
|
|
|
const phases = timing.data.phaseData.filter(p => p[0] === (hasTrack1 ? 1 : 0) && p[5] === 'green')
|
|
|
return ok(phases.map((p, i) => ({
|
|
|
- value: String(i + 1), time: p[8], phaseName: p[3], direction: p[6], img: ARROWS[i % ARROWS.length],
|
|
|
+ value: String(i + 1), time: p[8], phaseName: p[3], direction: p[6], img: null,
|
|
|
})))
|
|
|
}
|
|
|
return ok(_makeStageList())
|
|
|
@@ -1207,7 +1214,7 @@ export async function apiGetCrossingDetailData(id, { iconMode = 'default' } = {}
|
|
|
time: p[8],
|
|
|
phaseName: p[3],
|
|
|
direction: p[6],
|
|
|
- img: ARROWS[i],
|
|
|
+ img: null,
|
|
|
locktimeOptions: stageLockOptions[i] || stageLockOptions[0],
|
|
|
}))
|
|
|
|