Files
one-pipe-system/openspec/changes/add-phone-asset-unbind-management/design.md
2026-09-17 12:16:20 +08:00

2.7 KiB
Raw Blame History

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.tssrc/types/api/phoneAsset.ts,集中放置 6 个接口与相关 DTO 类型,便于联调收敛(与 add-employee-collection 契约处理方式一致)。
  • 既有列表的 associated_phones 直接在 device.ts / card.ts / asset.ts 对应响应类型上增加字段,不新增接口。
  • FilePurpose 增加 phone_unbind_import,上传前在业务组件校验扩展名 .csv

解绑导入流程

  • 上传复用 StorageService.getUploadUrlpurpose='phone_unbind_import')→ 预签名 URL PUT 直传 → 用返回的 file_key 调创建任务接口。
  • CSV 模板由前端提供:表头 资产标识,备注UTF-8可带 BOM非 UTF-8 按 GBK 解码(后端解析);无行数上限,前端不做行数限制,仅限制扩展名。
  • 任务创建后进入任务列表跟踪,与导出任务交互模式一致。

权限与可见性

  • 菜单、路由、按钮统一用 usePermissionisSuperAdmin / 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/ status14响应 items/page/size/total
  • 任务状态 1=待处理、2=处理中、3=已完成、4=失败;逐行状态 3=成功、4=失败。