# 2026-05-27 工作日志

## 今日工作

### 1. 🔄 首页退出登录入口改造
- 从明显的退出按钮 → 右上角 `⋯` 更多菜单
- 点击弹出 ActionSheet，选"退出登录"再确认
- 后续可扩展其他选项（个人设置等）
- **文件：** `pages/index/index.vue`

### 2. 🐛 物料选择器切换分类时已选物料清空
- **原因：** `loadMaterialList()` 从接口重新拉数据，`materialList` 被重建为初始值（`quantity: 0, price: 0`）
- **修复：** `selectCategory` 切换前保存已选物料 → `_buildSavedMap` 在新列表加载后恢复
- 4 个页面统一修复：`purchase.vue`, `production.vue`, `material.vue`, `sales.vue`
- 额外恢复已选保存逻辑（因 HMR 替换丢失过一次，重新补回）

### 3. 💰 单价回填方案变更
- **最初方案：** localStorage 缓存 `lastPrice_purchase_{materialId}` / `lastPrice_sales_{materialId}`
- **修正方案：** `StockPageDTO` 接口原生带 `lastInboundPrice` / `lastOutboundPrice`，直接读接口字段
- 去掉 localStorage 缓存代码
- **文件：** `pages/inbound/purchase.vue`, `pages/outbound/sales.vue`
- 采购映射 `item.lastInboundPrice || 0`
- 销售映射 `item.lastOutboundPrice || 0`

### 4. 💰 单价必须校验
- `handleDirectSubmit` 加必填校验（采购/销售）
- 提交时如果某物料单价为空 → Toast 提示 + 阻止提交

### 5. 工具/环境
- 项目路径：`/mnt/d/Projects/HBuilderProjects/erp-app/`
- 使用 sed/node 处理 CRLF 换行问题（WSL 挂载的 Windows 文件系统）
- HMR 热更新后有时需要手动 F5 刷新

## 重要决策
- **单价来源：** 优先使用接口返回数据，避免客户端缓存不一致
- `StockPageDTO.lastInboundPrice` → 采购入库上次单价
- `StockPageDTO.lastOutboundPrice` → 销售出库上次单价
- 生产入库/领料出库无单价需求，保持原样

## 未完成 / 待验证
- HBuilderX 运行测试以上所有改动
- H5 浏览器验证分类切换 + 单价回填 + 提交校验