# 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 交互符合预期
- 边界情况处理正确
- 权限控制生效
