From 6ee28349e122eadaf24ed47f10e21eac82586517 Mon Sep 17 00:00:00 2001 From: kennethcheng Date: Sun, 13 Sep 2026 16:47:16 +0800 Subject: [PATCH] =?UTF-8?q?feat(frontend):=20=E5=8A=A0=E6=B2=B9=E5=BD=95?= =?UTF-8?q?=E5=85=A5=E9=A1=B5(=E5=AE=9E=E6=97=B6=E7=AE=97=E5=AE=9E?= =?UTF-8?q?=E9=99=85=E6=B2=B9=E4=BB=B7=20+=2010=E7=A7=92=E5=BD=95=E5=85=A5?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 把 RefuelNew 从占位 Empty 升级成真正的"10秒录入"表单,plan §9.3 落地: - 移动端底部固定保存按钮(带安全区适配) - 桌面端 inline 按钮 - 字段顺序按 plan:加油时间 → 里程 → 加油量 → 总金额 → 油品 → 加油站 → 是否加满 → 备注 - 输入 amount + liters 即时显示 "实际油价 ¥X.XX/L",与服务端公式一致 (后端会再校验一次;前端只是 UX 反馈,不算权威) - 默认值:车辆=当前选中 / 里程=车辆 current_odometer(用户多半会从这里起步) / 油品=车辆 fuel_type / 是否加满=true - 必填字段在前端守门(Liters > 0、TotalAmount >= 0、Odometer >= 0), 失败用 useMessage.warning - 保存成功 useMessage.success 后 300ms 跳 Dashboard,让用户看到统计更新 - 没有车辆时给出空态 + 一键跳车辆页 实现要点: - 本地定义 RefuelForm 类型(数字字段允许 undefined),与 DTO 解耦 (DTO 严格,form 宽松,提交时 narrow) - onMounted 拉 store.loadList + 选默认车 + 填默认值 - realPrice = computed 监听 liters/total_amount 变化 未做(留待后续): - 提交时把车辆 current_odometer 同步上去(避免用户开了 100 公里才发现 里程还停在加油前) —— 提交后端 update vehicle,plan §5.2 提到过, 这里没做 - 重置表单(同车连加) —— 提交后跳 Dashboard,需要"再加一笔"时再回 - GPS 自动定位加油站(本机浏览器权限问题,先不做) 验证: pnpm typecheck 0 errors pnpm build 12.8s --- fuellog-web/src/pages/RefuelNew.vue | 240 +++++++++++++++++++++++++++- 1 file changed, 232 insertions(+), 8 deletions(-) diff --git a/fuellog-web/src/pages/RefuelNew.vue b/fuellog-web/src/pages/RefuelNew.vue index 26ffa62..134cc25 100644 --- a/fuellog-web/src/pages/RefuelNew.vue +++ b/fuellog-web/src/pages/RefuelNew.vue @@ -1,16 +1,240 @@