# 销售概览菜单配置说明

## 问题说明

如果销售概览页面可以访问，但侧边栏菜单中没有显示，通常是因为：
1. 菜单已插入数据库，但没有给用户/角色分配权限
2. 菜单的 `org_type` 配置与用户不匹配

## 解决步骤

### 步骤1：检查菜单是否已插入

执行检查SQL：
```sql
-- 文件：check_salesoverview_menu.sql
USE cattletrade;
SELECT * FROM sys_menu WHERE name = '销售概览' AND is_delete = 0;
```

如果查询结果为空，说明菜单未插入，需要先执行 `insert_salesoverview_menu.sql`。

### 步骤2：分配菜单权限

有两种方式分配权限：

#### 方式A：通过SQL脚本分配（推荐）

执行权限分配SQL：
```sql
-- 文件：assign_salesoverview_menu_permission.sql
-- 该脚本会为角色ID=1（超级管理员）分配销售概览菜单权限
```

**注意**：如果您的超级管理员角色ID不是1，请先查询：
```sql
SELECT id, name FROM sys_role WHERE name LIKE '%管理员%' OR name LIKE '%admin%';
```

然后修改SQL脚本中的角色ID。

#### 方式B：通过系统界面分配

1. 登录系统管理后台
2. 进入 **权限管理** → **操作权限管理**
3. 选择需要分配权限的角色
4. 勾选销售概览相关的菜单项：
   - 销售概览（主菜单）
   - 新增
   - 编辑
   - 删除
   - 计算统计数据
5. 点击保存

### 步骤3：检查菜单的org_type配置

菜单的 `org_type` 字段：
- 1 = 海关端
- 2 = 企业端
- 3 = 海关企业共用

如果您的用户是企业端，但菜单的 `org_type` 是1（海关端），菜单也不会显示。

**检查当前用户的org_type**：
```sql
-- 查询用户所属机构类型
SELECT u.id, u.name, u.mobile, r.name AS role_name, r.org_type
FROM sys_user u
LEFT JOIN sys_role r ON u.role_id = r.id
WHERE u.mobile = '15900000000';  -- 替换为实际手机号
```

**如果需要修改菜单的org_type**：
```sql
-- 将销售概览菜单设置为企业端和海关端共用
UPDATE sys_menu 
SET org_type = 3 
WHERE name = '销售概览' AND type = 1 AND is_delete = 0;
```

### 步骤4：刷新页面

执行完SQL或分配权限后：
1. 退出登录
2. 重新登录系统
3. 刷新页面

菜单应该会出现在侧边栏中。

## 快速修复SQL（一键执行）

如果确认菜单已插入，只需要分配权限，可以执行以下SQL：

```sql
USE cattletrade;

-- 查询销售概览菜单ID
SET @menu_id = (SELECT id FROM sys_menu WHERE name = '销售概览' AND type = 1 AND is_delete = 0 LIMIT 1);

-- 为角色ID=1（超级管理员）分配主菜单权限
INSERT INTO sys_role_menu (role_id, menu_id)
SELECT 1, @menu_id
WHERE NOT EXISTS (SELECT 1 FROM sys_role_menu WHERE role_id = 1 AND menu_id = @menu_id)
AND @menu_id IS NOT NULL;

-- 为角色ID=1分配所有按钮权限
INSERT INTO sys_role_menu (role_id, menu_id)
SELECT 1, id
FROM sys_menu
WHERE parent_id = @menu_id AND type = 2 AND is_delete = 0
AND NOT EXISTS (SELECT 1 FROM sys_role_menu WHERE role_id = 1 AND menu_id = sys_menu.id)
AND @menu_id IS NOT NULL;
```

## 验证

执行以下SQL验证权限是否分配成功：

```sql
USE cattletrade;

-- 查询销售概览菜单权限分配情况
SELECT 
    r.id AS role_id,
    r.name AS role_name,
    m.id AS menu_id,
    m.name AS menu_name,
    m.type AS menu_type,
    m.page_url
FROM sys_role_menu rm
INNER JOIN sys_role r ON rm.role_id = r.id
INNER JOIN sys_menu m ON rm.menu_id = m.id
WHERE m.name = '销售概览' OR m.parent_id = (SELECT id FROM sys_menu WHERE name = '销售概览' AND type = 1 AND is_delete = 0 LIMIT 1)
ORDER BY r.id, m.type, m.sort;
```

如果查询结果中有您的角色，说明权限已分配成功。

