From 234b44ea03f9bf776746f45605199b2e0f74b928 Mon Sep 17 00:00:00 2001 From: kkfluous Date: Thu, 30 Apr 2026 14:42:00 +0800 Subject: [PATCH] =?UTF-8?q?feat(energy):=20=E8=83=BD=E6=BA=90=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E6=96=B0=E5=A2=9E=20ETC=20tab=EF=BC=8C=E5=BB=BA?= =?UTF-8?q?=E8=AE=BE=E4=B8=AD=E5=8D=A0=E4=BD=8D=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - EnergyModule TopTab 加 'etc',用 lucide Receipt 图标 - TABS 数据驱动渲染,加新 tab 不用复制粘贴 - 新增 ETCView:可爱的「建设中」占位 - 大号 Construction 图标 + 顶上的 Hammer 摆动动画 - 文案「ETC 模块建设中」+ 副标说明 - 4 步进度(需求评审/数据对接/页面开发/正式上线) 已完成项绿点、进行中项黄点 + 脉冲,未来项灰点 - 底部专属 RotatingFooterHint,5 条 ETC 上下文文案 Co-Authored-By: Claude Opus 4.7 (1M context) --- src/modules/energy/ETCView.tsx | 79 +++++++++++++++++++++++++++++ src/modules/energy/EnergyModule.tsx | 52 ++++++++++--------- 2 files changed, 108 insertions(+), 23 deletions(-) create mode 100644 src/modules/energy/ETCView.tsx diff --git a/src/modules/energy/ETCView.tsx b/src/modules/energy/ETCView.tsx new file mode 100644 index 0000000..c218700 --- /dev/null +++ b/src/modules/energy/ETCView.tsx @@ -0,0 +1,79 @@ +import { motion } from 'motion/react'; +import { Construction, Hammer } from 'lucide-react'; +import RotatingFooterHint from '../../components/RotatingFooterHint'; + +const ETC_HINTS = [ + 'ETC 通行费数据正在与发卡方系统打通…', + '工人 GG 正在搭脚手架,敬请期待 ~', + '马上能看到每月通行费明细啦', + '想看哪个维度的 ETC?反馈一下嘛', + '上线时机:等数据接通的那一天', +]; + +export default function ETCView() { + return ( +
+ +
+ + + + + + +
+ +
ETC 模块建设中
+
+ 通行费明细、按车按月统计、运营成本拆分 +
+ 这些数据都在路上啦 +
+ + {/* 简单的里程碑进度感 */} +
+ {[ + { label: '需求评审', done: true }, + { label: '数据对接', done: true }, + { label: '页面开发', done: false, current: true }, + { label: '正式上线', done: false }, + ].map((m, i) => ( + + + + {m.label} + + {m.done && 已完成} + {m.current && 进行中} + + ))} +
+
+ + +
+ ); +} diff --git a/src/modules/energy/EnergyModule.tsx b/src/modules/energy/EnergyModule.tsx index 3aa10dc..07664a3 100644 --- a/src/modules/energy/EnergyModule.tsx +++ b/src/modules/energy/EnergyModule.tsx @@ -1,10 +1,17 @@ import { useState } from 'react'; -import { Fuel, BatteryCharging } from 'lucide-react'; +import { Fuel, BatteryCharging, Receipt } from 'lucide-react'; import { motion } from 'motion/react'; import HydrogenView from './HydrogenView'; import ElectricView from './ElectricView'; +import ETCView from './ETCView'; -type TopTab = 'hydrogen' | 'electric'; +type TopTab = 'hydrogen' | 'electric' | 'etc'; + +const TABS: { key: TopTab; label: string; icon: typeof Fuel }[] = [ + { key: 'hydrogen', label: '氢能', icon: Fuel }, + { key: 'electric', label: '电能', icon: BatteryCharging }, + { key: 'etc', label: 'ETC', icon: Receipt }, +]; export default function EnergyModule() { const [activeTab, setActiveTab] = useState('hydrogen'); @@ -12,28 +19,27 @@ export default function EnergyModule() {
- - + {TABS.map(tab => { + const Icon = tab.icon; + const active = activeTab === tab.key; + return ( + + ); + })}
- {activeTab === 'hydrogen' ? : } + {activeTab === 'hydrogen' && } + {activeTab === 'electric' && } + {activeTab === 'etc' && }
);