2.7 KiB
2.7 KiB
Design: 手机号资产关联管理(管理后台)
页面结构
- 资产管理下新增「手机号资产关联」分组:
- 关联列表页(
phone-asset-association/index.vue) - CSV 解绑导入任务列表页(
unbind-import-tasks/index.vue) - 解绑导入任务详情页(
unbind-import-tasks/detail.vue),复用device-task/iot-card-task的逐行结果表格模式。
- 关联列表页(
- 任务列表/详情沿用现有
getPage分页与统一响应结构(code/msg/timestamp/data),行状态枚举 3=成功、4=失败,任务状态 1=待处理、2=处理中、3=已完成、4=失败,与现有导入任务页面一致。
接口与类型
- 新增
src/api/modules/phoneAsset.ts与src/types/api/phoneAsset.ts,集中放置 6 个接口与相关 DTO 类型,便于联调收敛(与add-employee-collection契约处理方式一致)。 - 既有列表的
associated_phones直接在device.ts/card.ts/asset.ts对应响应类型上增加字段,不新增接口。 FilePurpose增加phone_unbind_import,上传前在业务组件校验扩展名.csv。
解绑导入流程
- 上传复用
StorageService.getUploadUrl(purpose='phone_unbind_import')→ 预签名 URL PUT 直传 → 用返回的file_key调创建任务接口。 - CSV 模板由前端提供:表头
资产标识,备注;UTF-8(可带 BOM),非 UTF-8 按 GBK 解码(后端解析);无行数上限,前端不做行数限制,仅限制扩展名。 - 任务创建后进入任务列表跟踪,与导出任务交互模式一致。
权限与可见性
- 菜单、路由、按钮统一用
usePermission(isSuperAdmin/isPlatformAccount)+v-permission控制;入口仅超管/平台可见。 - 越权兜底由后端 403 保证,前端将「无权限操作该资源或资源不存在」等固定文案原样透传,不自行拼接。
- 不提供任何创建/补录关联入口。
待确认
DELETE /phone-asset-associations/{id}的reason/confirmed字段名与传输位置:该接口文档块只声明路径参数id、未定义请求体,前端当前按 query 参数(?reason=&confirmed=)传递;若后端以 JSON body 接收,只需改PhoneAssetAssociationService.unbindAssociation,页面无需调整。- 新增菜单/按钮权限编码(前端默认
phone_asset_association:*)以管理后台权限配置为准。
已确认的契约(文档已提供):
GET /phone-asset-associations/unbind-imports:筛选参数page(默认 1)/page_size(默认 20,最大 100)/status(1–4),响应items/page/size/total。- 任务状态 1=待处理、2=处理中、3=已完成、4=失败;逐行状态 3=成功、4=失败。