Files
mileage-bonus/.claude_plans/cuddly-strolling-rivest.md
kkfluous 573f8397a6 chore: 添加输入输出文件 + .claude记忆和计划
输入文件:
- 租赁任务考核_2026年{1,2,3}月.xlsx (考核源数据)
- {1,2}月.xlsx (客户盈亏表)
- 车辆里程考核与奖金发放规则(V.1.2).docx

输出文件:
- 里程任务考核_{1,2,3}月核算.xlsx (月度核算结果)
- 里程任务考核_Q1汇总.xlsx (含车辆台账)
- 3月客户盈亏表(待填写).xlsx (模版)

.claude_memory: 项目记忆(规则/偏好/架构/测试车辆)
.claude_plans: 历次计划文件

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 14:09:24 +08:00

3.2 KiB
Raw Blame History

资产状态多选改造

Context

当前"总体任务-实时里程"页面的"资产状态"筛选器是单选下拉框,用户需要改为支持多选,以便同时筛选多个资产状态(如同时查看"在库"和"租赁"的车辆)。

后端接口修改建议

后端 API 端点:GET /mileage/vehicle/list

当前 storageStatus 参数为 string 类型(单值),需要改为支持多值。建议两种方案(推荐方案一)

方案一:逗号分隔字符串(推荐,改动最小)

  • 参数名不变:storageStatus
  • 类型不变:String
  • 前端传值:storageStatus=在库,租赁,自营
  • 后端解析:用 split(",") 拆分为数组SQL 查询改为 WHERE storage_status IN (...)
  • 优点前后端改动最小URL 参数简洁,向后兼容(单值时无逗号,行为不变)

方案二:数组参数

  • 参数名改为:storageStatusesstorageStatus[]
  • 前端传值:storageStatuses=在库&storageStatuses=租赁
  • 后端用 @RequestParam List<String> storageStatuses 接收
  • 优点:更 RESTful缺点:前后端改动较大

后端改动清单(方案一)

  1. Controller 层:参数类型保持 String storageStatus
  2. Service 层:storageStatus.split(",") 得到数组
  3. MyBatis/SQLWHERE storage_status = #{storageStatus} 改为:
    <if test="storageStatusList != null and storageStatusList.size() > 0">
      AND storage_status IN
      <foreach collection="storageStatusList" item="item" open="(" separator="," close=")">
        #{item}
      </foreach>
    </if>
    
  4. 导出接口 /mileage/vehicle/export 同理修改

前端修改计划

涉及文件

  1. src/pages/VehicleManagement/index.tsx — 主页面
  2. src/services/vehicleService.ts — API 服务
  3. src/types/mileage.ts — 类型定义
  4. src/pages/H5Mobile/index.tsx — 移动端页面(同步修改)

修改步骤

Step 1: 修改类型定义 (src/types/mileage.ts)

  • storageStatus?: stringstorageStatus?: string | string[](兼容多选)

Step 2: 修改 API 服务 (src/services/vehicleService.ts)

  • getVehicleListstorageStatus 类型改为 string | string[]
  • exportVehicleListstorageStatus 类型同样修改
  • 在传参时,如果是数组则 join(',') 转为逗号分隔字符串发送给后端

Step 3: 修改主页面 (src/pages/VehicleManagement/index.tsx)

  • 搜索参数初始化 (L94): storageStatus: undefined → 类型改为 string[] | undefined
  • 重置 (L346): 保持 storageStatus: undefined
  • Select 组件 (L1607-1619): 添加 mode="multiple" 属性,启用多选
  • 导出参数 (L1800): 数组 join(',') 传给导出函数
  • loadData (L192): 在传参前将数组 join(',')

Step 4: 修改移动端页面 (src/pages/H5Mobile/index.tsx)

  • 同步修改 Select 为多选模式

验证方式

  1. 打开"总体任务-实时里程"页面,确认资产状态下拉框可多选
  2. 选择多个状态后点击搜索,检查网络请求参数格式正确(逗号分隔)
  3. 点击重置,确认多选状态被清空
  4. 导出 Excel 时确认多选参数正确传递
  5. 移动端页面同步验证