编辑 | blame | 历史 | 原始文档

查看全部客户权限 - 前端联调方案

涉及页面

页面 路由路径 说明
客户管理列表 /crm/customer 客户列表页,新增"全部"Tab

API

已有接口:客户分页查询(无需新增接口)

方法 路径 说明
GET /crm/customer/page 客户分页查询

已有请求参数(CrmCustomerPageReqVO):

参数 类型 必填 说明
sceneType Integer 场景类型:1-我负责的 / 2-我参与的 / 3-下属负责的 / 4-全部(新增)
name String 客户名称(模糊)
mobile String 手机
industryId Integer 所属行业
level Integer 客户等级
source Integer 客户来源
pool Boolean 是否为公海数据
followUpStatus Boolean 跟进状态

响应无变化CrmCustomerRespVO 已包含:
- ownerUserName — 销售人员名称
- ownerUserDeptName — 销售人员部门名称


业务规则说明

场景类型扩展

sceneType 值 场景名称 数据范围 权限要求
1 我负责的 owner_user_id = 当前用户 crm:customer:query
2 我参与的 团队成员(非负责人) crm:customer:query
3 下属负责的 下属为负责人 crm:customer:query
4(新增) 全部 所有客户(无过滤) crm:customer:view-allcrm_admin 角色

权限降级规则

当用户以 sceneType=4 请求数据时:
- 用户拥有 crm:customer:view-all 权限 crm_admin 角色 → 返回全部客户
- 用户**没有**该权限 → 自动降级为"我负责的"(sceneType=1),仅返回自己的客户

权限标识

权限标识 说明 所属菜单
crm:customer:view-all 查看全部客户 CRM 客户公海

该权限已添加到数据库 system_menu 表,位于「客户公海」菜单下(id=602583),角色分配后即可生效。


前端修改点

1. 客户列表页 Tab 切换

在现有的场景类型 Tab(我负责的/我参与的/下属负责的)后面,新增"全部"Tab(sceneType=4)。

展示规则
- 仅当用户拥有 crm:customer:view-all 权限或 crm_admin 角色时,才显示"全部"Tab
- 判断方式:调用权限判断接口或从用户权限列表中检查

2. 权限判断

前端需要判断当前用户是否有 crm:customer:view-all 权限:
- 方式一:通过 Vue 指令 v-hasPermi="['crm:customer:view-all']" 控制 Tab 显隐
- 方式二:通过获取用户权限列表判断


注意事项

  • "全部"Tab 仅控制数据可见范围,不改变其他功能权限(如编辑、删除仍需对应权限)
  • 导出 Excel 时同样支持 sceneType=4,拥有权限的用户可导出全部客户数据
  • 权限数据已插入数据库(system_menu id=602583),无需前端额外处理权限注册
  • 该权限与 crm_admin 角色的区别:crm_admin 拥有所有 CRM 管理权限,而 view-all 仅控制客户列表的查看范围