FEATURE_MERCHANT_SELECTOR.md 4.3 KB

财务申请页面 - 商家选择功能

功能说明

为财务申请页面(accountLogApply.vue)添加了商家选择功能,使总后台管理员能够代表任意商家提交结算申请。

功能特性

1. 角色区分

  • 总后台管理员:显示商家选择器,可以选择任意商家提交申请
  • 普通商家用户:隐藏商家选择器,自动选择当前登录商家,只能为自己提交申请

2. 商家选择器功能

  • 支持远程搜索(根据商家名称搜索)
  • 显示商家名称、手机号和余额信息
  • 支持清空选择
  • 选择商家后自动加载该商家的信息和申请记录

3. 数据联动

  • 选择商家后,自动填充商家信息(名称、真实姓名、手机号、余额)
  • 自动加载该商家的历史申请记录
  • 提交申请时使用选中商家的 user_id

实现细节

前端修改(addons/admin/src/views/financial/accountLogApply.vue

1. 添加商家选择器组件

<el-form-item label="选择商家:" prop="store_id" v-if="isSuperAdmin">
  <el-select
    v-model="applyForm.store_id"
    placeholder="请选择商家"
    filterable
    remote
    clearable
    :remote-method="searchStores"
    :loading="storeSearchLoading"
    @change="handleStoreChange"
    class="ele-fluid">
    <el-option
      v-for="item in storeOptions"
      :key="item.id"
      :label="`${item.name} (${item.phone}) - 余额: ¥${item.balance || 0}`"
      :value="item.id">
    </el-option>
  </el-select>
</el-form-item>

2. 新增数据字段

  • isSuperAdmin: 是否为超级管理员
  • storeOptions: 商家选项列表
  • storeSearchLoading: 搜索加载状态
  • applyForm.store_id: 选中的商家ID

3. 新增/修改方法

  • checkUserRole(): 检查用户角色,判断是否为超级管理员
  • searchStores(query): 搜索商家列表
  • handleStoreChange(storeId): 处理商家选择变化
  • loadStoreInfoForMerchant(): 加载当前登录商家信息并自动设置 store_id(商家用户专用)

4. 角色判断逻辑

checkUserRole() {
  const user = this.user || {};
  this.isSuperAdmin = !user.store_id || user.store_id === 0;
}

后端修改(app/Services/Common/StoreService.php

添加余额字段

getDataList() 方法中,为返回的商家列表添加余额信息:

// 添加余额信息
$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-已审核)
  • 返回数据:

    {
    "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. 支持按商家分类筛选