diff --git a/changelogs-v2/2026-07/5131-fleet-team-management.md b/changelogs-v2/2026-07/5131-fleet-team-management.md new file mode 100644 index 0000000..50910c6 --- /dev/null +++ b/changelogs-v2/2026-07/5131-fleet-team-management.md @@ -0,0 +1,201 @@ +--- +schema: "hl-changelog/v1" +ticket: "5131" +title: "车队独立管理及车队字典下线" +consumer: "admin" +backend: "verified" +gateway: "verified" +frontend: "pending" +base: "dev-v3" +generated: "2026-07-22T10:46:00+08:00" +--- + +# 【新增接口·修改接口·前端需联调·管理后台/H5】车队独立管理及车队字典下线 + +> **服务**: hl-fleet-service + hl-user-service +> **日期**: 2026-07-22 +> **工单**: #5131 +> **影响范围**: 车队管理、车辆档案、司机 H5、自带车审核、派车候选、矩阵、车队对账 + +## 关键变化 + +`fleet_attribution` 不再是车队数据源。后端新增 `fleet_team` 主数据,统一维护: + +- `teamName`:车队名称。 +- `teamType`:`SELF_OPERATED` 自有 / `COOPERATIVE` 合作。 +- `leaderName`、`leaderPhone`:负责人及电话;列表电话脱敏,详情返回编辑原值。 +- `settleType`:直接复用资源付款方式 `resource_settle_type`,当前值为 `cash` / `sign` / `company`。 +- `status`:`ACTIVE` / `DISABLED`。 + +车辆及相关链路以 `fleetTeamId` 为权威关联。旧 `fleet` 稳定编码仅在客户端切换期保留兼容,不得再用于生成选项或写死 `own/coopA/coopB`。 + +## 变更接口 + +### 车队管理 + +| 方法 | 路径 | 说明 | +| --- | --- | --- | +| GET | `/admin/fleet/teams/page` | 分页;支持 `keyword/teamType/status/settleType` | +| GET | `/admin/fleet/teams/options` | 有效车队下拉;编辑存量时可传 `includeDisabledId` 回显当前停用车队 | +| GET | `/admin/fleet/teams/:fleetTeamId` | 详情;负责人电话返回原值供编辑 | +| POST | `/admin/fleet/teams` | 新增 | +| PUT | `/admin/fleet/teams/:fleetTeamId` | 编辑 | +| POST | `/admin/fleet/teams/:fleetTeamId/disable` | 停用;仍有在役车辆返回 `601103` | +| POST | `/admin/fleet/teams/:fleetTeamId/enable` | 启用 | + +保存请求: + +```json +{ + "teamName": "合作车队一队", + "teamType": "COOPERATIVE", + "leaderName": "张三", + "leaderPhone": "13800138000", + "settleType": "sign", + "sortOrder": 20, + "remark": "旺季合作车队" +} +``` + +下拉响应项: + +```json +{ + "fleetTeamId": "2080000000000000001", + "teamCode": "ft_fsq1ab23cd", + "teamName": "合作车队一队", + "teamType": "COOPERATIVE", + "settleType": "sign", + "status": "ACTIVE" +} +``` + +雪花 ID 一律按字符串处理,禁止 `Number()` / `parseInt()`。 + +## 修改接口 + +### 车辆档案 + +- `POST /admin/fleet/vehicles`、`PUT /admin/fleet/vehicles/:id`:新增 `fleetTeamId`,新前端必传。 +- `GET /admin/fleet/vehicles/page`:新增筛选参数 `fleetTeamId`;列表项新增 `fleetTeamId/fleetTeamName/fleetType/settleType`。 +- `GET /admin/fleet/vehicles/:id`:详情新增同上字段。 +- 车辆导入模板把车队列改为“车队名称”,填写独立车队管理中的有效名称;历史表头和稳定编码仍兼容。 + +### 司机 H5 与审核 + +- `GET /app/h5/driver-onboard/init`:链接可编辑时新增 `fleetTeamOptions[]`,只包含 `fleetTeamId/teamName/teamType`,不暴露负责人和结算资料;续签会额外包含当前已停用车队用于原值回显。 +- `SubmitVehicleVO`、续签常驻车回显新增 `fleetTeamId`。 +- 待审核详情 `vehicle`、审核通过请求 `ownVehicle` 新增 `fleetTeamId`。 +- H5 和管理端都必须提交 ID;旧 `fleet` 仅兼容已打开的旧页面。 + +### 派车候选与矩阵 + +- 派车车辆候选新增 `fleetTeamId/fleetTeamName/fleetType/settleType`。 +- `GET /admin/fleet/board/orders` 已派车辆新增 `currentVehicleFleetTeamId/currentVehicleFleetTeamName/currentVehicleFleetTeamType/currentVehicleFleetTeamSettleType`。 +- `GET /admin/fleet/matrix/grid` 新增 `fleetTeamIds[]`;`fleets[]` 废弃。 +- 矩阵车辆行新增 `fleetTeamId/fleetTeamName/fleetType/settleType`。 +- 响应新增 `fleetTeamCounts[]`,每项包含 `fleetTeamId/teamName/count`;`fleetCount` 仅过渡兼容。 + +### 对账 + +- 车费车队分组新增 `fleetTeamId/fleetType/settleType`,名称使用对账快照。 +- `GET /admin/fleet/reconciliation/cars` 与 CSV 导出新增 `fleetTeamIds[]`;传入后优先于旧 `fleets[]`。 +- 保险车队分组新增 `fleetTeamId/fleetName/fleetType/settleType`。 +- 实际结算保存新增 `fleetTeamId`;旧 `fleet` 废弃。 +- 后端按车队类型派生 `OWN_COST/COOP_QUOTE`,不再把 `own` 当特殊业务编码。 + +## 独立菜单与权限 + +user-service 新增顶级菜单: + +- 路由:`/fleet/teams` +- 组件:`fleet/teams/index` +- 权限:`fleet:team:list`、`fleet:team:create`、`fleet:team:update`、`fleet:team:status` +- 默认角色:`SUPER_ADMIN`、`ADMIN`、`VEHICLE_MANAGER` + +前端必须新增对应组件,否则菜单发布后会出现空路由。 + +## 前端必须修改的范围 + +### 管理后台 + +1. 新增 `src/api/fleet/teams.js` 和 `src/views/fleet/teams/index.vue`,完成车队分页、新增、编辑、启停。 +2. 车辆档案: + - `src/views/fleet/vehicles/index.vue` + - `src/views/fleet/vehicles/components/VehicleEditModal.vue` + - `src/api/fleet/vehicles.js` + 使用 `/admin/fleet/teams/options`,表单和筛选绑定 `fleetTeamId`,展示 `fleetTeamName`。 +3. 自带车审核和车辆选择: + - `src/views/fleet/drivers/pending/index.vue` + - `src/views/fleet/drivers/components/VehiclePickerModal.vue` + - `src/api/fleet/drivers.js` + 不再读取 `fleet_attribution`。 +4. 派车看板、矩阵和共享甘特:删除 `own/coopA/coopB` 固定数组和固定颜色映射,按 API 返回的 ID/名称动态分组。涉及: + - `src/views/fleet/board/composables/useVehicleDriverPicker.js` + - `src/views/fleet/board/components/VehiclePickerList.vue` + - `src/views/fleet/matrix/**` + - `src/views/fleet/_shared/fleetDisplay.js` + - `src/views/fleet/_shared/gantt/**` +5. 车队对账:`src/views/fleet/recon/**` 删除三车队固定循环、固定展开状态和固定 CSV 顺序;实际结算提交 `fleetTeamId`。 + +动态车队颜色可由 `fleetTeamId` 做稳定哈希映射,但不得用数组下标产生每次刷新变化的颜色。 + +### 司机 H5 + +以下文件把硬编码 `