# 财务申请页面 - 商家选择功能 ## 功能说明 为财务申请页面(`accountLogApply.vue`)添加了商家选择功能,使总后台管理员能够代表任意商家提交结算申请。 ## 功能特性 ### 1. 角色区分 - **总后台管理员**:显示商家选择器,可以选择任意商家提交申请 - **普通商家用户**:隐藏商家选择器,自动选择当前登录商家,只能为自己提交申请 ### 2. 商家选择器功能 - 支持远程搜索(根据商家名称搜索) - 显示商家名称、手机号和余额信息 - 支持清空选择 - 选择商家后自动加载该商家的信息和申请记录 ### 3. 数据联动 - 选择商家后,自动填充商家信息(名称、真实姓名、手机号、余额) - 自动加载该商家的历史申请记录 - 提交申请时使用选中商家的 user_id ## 实现细节 ### 前端修改(`addons/admin/src/views/financial/accountLogApply.vue`) #### 1. 添加商家选择器组件 ```vue ``` #### 2. 新增数据字段 - `isSuperAdmin`: 是否为超级管理员 - `storeOptions`: 商家选项列表 - `storeSearchLoading`: 搜索加载状态 - `applyForm.store_id`: 选中的商家ID #### 3. 新增/修改方法 - `checkUserRole()`: 检查用户角色,判断是否为超级管理员 - `searchStores(query)`: 搜索商家列表 - `handleStoreChange(storeId)`: 处理商家选择变化 - `loadStoreInfoForMerchant()`: 加载当前登录商家信息并自动设置 store_id(商家用户专用) #### 4. 角色判断逻辑 ```javascript checkUserRole() { const user = this.user || {}; this.isSuperAdmin = !user.store_id || user.store_id === 0; } ``` ### 后端修改(`app/Services/Common/StoreService.php`) #### 添加余额字段 在 `getDataList()` 方法中,为返回的商家列表添加余额信息: ```php // 添加余额信息 $item['balance'] = isset($item['member']['balance']) ? $item['member']['balance'] : 0; ``` ## 使用说明 ### 总后台管理员使用流程 1. 访问财务申请页面 2. 在"选择商家"下拉框中搜索或选择目标商家 3. 系统自动加载该商家的信息和余额 4. 填写提现金额和收款信息 5. 提交申请 ### 普通商家用户使用流程 1. 访问财务申请页面 2. 系统自动加载当前登录商家的信息,并自动设置 store_id 3. 商家选择器不显示(隐藏状态) 4. 填写提现金额和收款信息 5. 提交申请 ## 接口说明 ### 商家列表接口 - **URL**: `/store/index` - **方法**: GET - **参数**: - `page`: 页码 - `limit`: 每页数量 - `name`: 商家名称(模糊搜索) - `status`: 商家状态(1-已审核) - **返回数据**: ```json { "code": 0, "msg": "操作成功", "data": [ { "id": 1, "name": "商家名称", "phone": "13800138000", "real_name": "张三", "user_id": 10, "balance": 1000.00 } ], "count": 100 } ``` ## 注意事项 1. **权限控制**:确保只有总后台管理员才能看到商家选择器 2. **数据隔离**:普通商家用户只能查看和操作自己的数据 3. **余额验证**:提交申请时需要验证提现金额不能超过商家余额 4. **申请记录**:选择不同商家时,申请记录列表会自动切换 ## 测试建议 1. 使用总后台管理员账号登录,验证商家选择器是否显示 2. 搜索商家,验证搜索功能是否正常 3. 选择商家,验证信息是否正确加载 4. 提交申请,验证是否使用正确的商家ID 5. 使用普通商家账号登录,验证商家选择器是否隐藏 6. 验证申请记录是否根据选中商家正确过滤 ## 后续优化建议 1. 添加商家状态筛选(只显示启用状态的商家) 2. 优化搜索性能(添加防抖) 3. 添加商家余额实时刷新功能 4. 支持按商家分类筛选