| 页面 | 路由路径 | 说明 |
|---|---|---|
| 客户管理列表 | /crm/customer |
客户列表页,新增"全部"Tab |
| 方法 | 路径 | 说明 |
|---|---|---|
| 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-all 或 crm_admin 角色 |
当用户以 sceneType=4 请求数据时:
- 用户拥有 crm:customer:view-all 权限 或 crm_admin 角色 → 返回全部客户
- 用户**没有**该权限 → 自动降级为"我负责的"(sceneType=1),仅返回自己的客户
| 权限标识 | 说明 | 所属菜单 |
|---|---|---|
crm:customer:view-all |
查看全部客户 | CRM 客户公海 |
该权限已添加到数据库 system_menu 表,位于「客户公海」菜单下(id=602583),角色分配后即可生效。
在现有的场景类型 Tab(我负责的/我参与的/下属负责的)后面,新增"全部"Tab(sceneType=4)。
展示规则:
- 仅当用户拥有 crm:customer:view-all 权限或 crm_admin 角色时,才显示"全部"Tab
- 判断方式:调用权限判断接口或从用户权限列表中检查
前端需要判断当前用户是否有 crm:customer:view-all 权限:
- 方式一:通过 Vue 指令 v-hasPermi="['crm:customer:view-all']" 控制 Tab 显隐
- 方式二:通过获取用户权限列表判断
sceneType=4,拥有权限的用户可导出全部客户数据system_menu id=602583),无需前端额外处理权限注册crm_admin 角色的区别:crm_admin 拥有所有 CRM 管理权限,而 view-all 仅控制客户列表的查看范围