# Implementation Tasks ## 1. 类型定义 - [x] 1.1 在 `src/types/api/shop.ts` 中添加 `ShopRoleResponse` 接口 - [x] 1.2 在 `src/types/api/shop.ts` 中添加 `ShopRolesResponse` 接口 - [x] 1.3 在 `src/types/api/shop.ts` 中添加 `AssignShopRolesRequest` 接口 ## 2. API 服务层 - [x] 2.1 在 `ShopService` 中添加 `getShopRoles(shopId)` 方法 - [x] 2.2 在 `ShopService` 中添加 `assignShopRoles(shopId, roleIds)` 方法 - [x] 2.3 在 `ShopService` 中添加 `deleteShopRole(shopId, roleId)` 方法 ## 3. UI 组件开发 - [x] 3.1 检查店铺管理列表页面 (`src/views/product/shop/index.vue` 已存在) - [x] 3.2 在店铺列表操作列中添加"默认角色"按钮 - [x] 3.3 创建店铺默认角色管理对话框组件 - [x] 3.4 实现查询店铺默认角色列表功能 - [x] 3.5 实现添加默认角色功能(支持多选角色) - [x] 3.6 实现删除默认角色功能 - [x] 3.7 添加角色选择器(从系统角色列表中选择) - [x] 3.8 添加加载状态和错误处理 ## 4. 验证和测试 - [ ] 4.1 测试查询店铺默认角色列表 - [ ] 4.2 测试添加默认角色(单个和多个) - [ ] 4.3 测试删除默认角色 - [ ] 4.4 测试边界情况(角色已存在、店铺不存在等) - [ ] 4.5 测试权限控制(只有有权限的用户才能操作) ## 实现说明 ### 完成的功能 1. **类型定义** - 已在 `src/types/api/shop.ts` 添加了三个接口: - `ShopRoleResponse`: 店铺角色响应实体 - `ShopRolesResponse`: 店铺角色列表响应 - `AssignShopRolesRequest`: 分配角色请求 2. **API 服务层** - 已在 `src/api/modules/shop.ts` 的 `ShopService` 类中添加: - `getShopRoles(shopId)`: 获取店铺默认角色列表 - `assignShopRoles(shopId, data)`: 分配店铺默认角色 - `deleteShopRole(shopId, roleId)`: 删除店铺默认角色 3. **UI 实现** - 已在 `src/views/product/shop/index.vue` 中实现: - 操作列新增"默认角色"按钮 (宽度从220改为280) - 默认角色管理对话框,显示当前默认角色列表,支持删除操作 - 添加角色对话框,支持多选角色,已分配的角色显示为禁用状态 - 完整的加载状态(loading indicators) - 错误处理和友好的提示消息 - 使用 `ShopService` 和 `RoleService` 调用后端API ### 待测试项 所有开发任务已完成,现在需要进行功能测试以确保: - API 调用正常工作 - UI 交互符合预期 - 边界情况处理正确 - 权限控制生效