瀏覽代碼

优化路口相位图显示与兼容性

  1. 修复 iPad 兼容性:browserslist 新增 ios >= 12,确保可选链语法被 Babel 正确转译
  2. 人行道信号规则优化:P1/P3 绿闪起至对方通行前,人行道全红
  3. 路口中心面板文案改为方向描述(南北直行/南北左转/东西直行/东西左转),替代原来的相位编号
画安 2 周之前
父節點
當前提交
cd05a0cc49
共有 3 個文件被更改,包括 12 次插入6 次删除
  1. 2 1
      package.json
  2. 6 2
      src/components/ui/CrossingDetailPanel.vue
  3. 4 3
      src/components/ui/IntersectionMapVideos.vue

+ 2 - 1
package.json

@@ -53,6 +53,7 @@
   "browserslist": [
     "> 1%",
     "last 2 versions",
-    "not dead"
+    "not dead",
+    "ios >= 12"
   ]
 }

+ 6 - 2
src/components/ui/CrossingDetailPanel.vue

@@ -247,15 +247,19 @@ export default {
                 activeArrowTypes = [...new Set(activeArrowTypes)];
             }
 
+            // 人行道全红判断:只有 P1/P3 绿灯期间人行道才有绿灯,其余时段全红
+            const pedAllRed = !(type === 'green' && (phaseName === 'P1' || phaseName === 'P3'));
+
             this.$set(this.intersectionData, 'signals', {
+                pedAllRed,
                 ns: {
-                    phaseName: nsGreen ? (phaseName ? `相位${phaseName.replace('P', '')}` : '南北') : (this.intersectionData.signals?.ns?.phaseName || '南北'),
+                    phaseName: nsGreen ? ({ P1: '南北直行', P2: '南北左转' }[phaseName] || '南北') : (this.intersectionData.signals?.ns?.phaseName || '南北'),
                     time: remaining,
                     isGreen: nsGreen,
                     activeArrowTypes: nsGreen ? activeArrowTypes : []
                 },
                 ew: {
-                    phaseName: ewGreen ? (phaseName ? `相位${phaseName.replace('P', '')}` : '东西') : (this.intersectionData.signals?.ew?.phaseName || '东西'),
+                    phaseName: ewGreen ? ({ P3: '东西直行', P4: '东西左转' }[phaseName] || '东西') : (this.intersectionData.signals?.ew?.phaseName || '东西'),
                     time: remaining,
                     isGreen: ewGreen,
                     activeArrowTypes: ewGreen ? activeArrowTypes : []

+ 4 - 3
src/components/ui/IntersectionMapVideos.vue

@@ -423,9 +423,10 @@ export default {
         });
       };
 
-      // 灯带代表人行道:车通行时人行道为红,车停时人行道为绿
-      const nsPedColor = signals.ns.isGreen ? this.C.SIGNAL_RED : this.C.SIGNAL_GREEN;
-      const ewPedColor = signals.ew.isGreen ? this.C.SIGNAL_RED : this.C.SIGNAL_GREEN;
+      // 灯带代表人行道:P1/P3绿灯期间正常(车绿人红、车红人绿),其余时段人行道全红
+      const pedAllRed = signals.pedAllRed || false;
+      const nsPedColor = pedAllRed ? this.C.SIGNAL_RED : (signals.ns.isGreen ? this.C.SIGNAL_RED : this.C.SIGNAL_GREEN);
+      const ewPedColor = pedAllRed ? this.C.SIGNAL_RED : (signals.ew.isGreen ? this.C.SIGNAL_RED : this.C.SIGNAL_GREEN);
 
       dyeArm('N', this.armsNodes.N, nsPedColor, nsColor, nsActiveTypes);
       dyeArm('S', this.armsNodes.S, nsPedColor, nsColor, nsActiveTypes);