453 lines
11 KiB
Markdown
453 lines
11 KiB
Markdown
# 出国党籍保留审批功能 - 测试脚本
|
||
|
||
## 📋 测试目标
|
||
|
||
验证审批通过后,数据能够正确显示在"保留历史"选项卡中。
|
||
|
||
---
|
||
|
||
## 🔧 测试环境准备
|
||
|
||
### 1. 启动后端服务
|
||
```bash
|
||
cd /Users/weizzzz/Documents/Cursor/0828CURSOR/all-project/backend
|
||
# 启动后端服务(端口8080)
|
||
```
|
||
|
||
### 2. 启动前端服务
|
||
```bash
|
||
cd /Users/weizzzz/Documents/Cursor/0828CURSOR/all-project/web
|
||
npm run dev
|
||
# 前端服务(端口80)
|
||
```
|
||
|
||
---
|
||
|
||
## 📝 测试步骤
|
||
|
||
### 步骤1:创建测试数据(SQL)
|
||
|
||
在数据库中执行以下SQL,创建一条待审批的测试数据:
|
||
|
||
```sql
|
||
-- 插入一条待审批的测试数据
|
||
INSERT INTO rs_party_membership_retention (
|
||
name,
|
||
id_card,
|
||
position,
|
||
spouse,
|
||
travel_start_date,
|
||
travel_end_date,
|
||
stay_days,
|
||
destination,
|
||
purpose,
|
||
travel_reason,
|
||
self_funded,
|
||
request_approval,
|
||
party_branch,
|
||
application_date,
|
||
status,
|
||
application_time,
|
||
create_time,
|
||
update_time,
|
||
create_by,
|
||
update_by,
|
||
deleted,
|
||
tenant_id
|
||
) VALUES (
|
||
'测试党员张三', -- name
|
||
'330101199001011234', -- id_card
|
||
'副教授', -- position
|
||
'李四', -- spouse
|
||
'2025-02-01', -- travel_start_date
|
||
'2025-02-28', -- travel_end_date
|
||
28, -- stay_days
|
||
'美国', -- destination
|
||
'参加国际学术会议,进行学术交流', -- purpose
|
||
'学术交流', -- travel_reason
|
||
'1', -- self_funded (1-是)
|
||
'请求审批通过', -- request_approval
|
||
'计算机学院第一党支部', -- party_branch
|
||
CURDATE(), -- application_date
|
||
'1', -- status (1-待审批)
|
||
NOW(), -- application_time
|
||
NOW(), -- create_time
|
||
NOW(), -- update_time
|
||
1, -- create_by
|
||
1, -- update_by
|
||
0, -- deleted
|
||
'000000' -- tenant_id
|
||
);
|
||
|
||
-- 查询刚插入的数据
|
||
SELECT
|
||
retention_id,
|
||
name,
|
||
destination,
|
||
status,
|
||
application_time
|
||
FROM rs_party_membership_retention
|
||
WHERE name = '测试党员张三'
|
||
ORDER BY create_time DESC
|
||
LIMIT 1;
|
||
```
|
||
|
||
**预期结果**:
|
||
- 插入成功
|
||
- `status` = '1'(待审批)
|
||
- 记录 `retention_id`,后续步骤会用到
|
||
|
||
---
|
||
|
||
### 步骤2:测试审批页面 - 待审批列表
|
||
|
||
1. **登录系统**
|
||
- 使用有审批权限的账号登录
|
||
- 权限标识:`rs:partyretention:approve`
|
||
|
||
2. **进入审批页面**
|
||
- 导航路径:人事管理 → 党籍保留审批
|
||
- 或直接访问:`http://localhost/#/rs/party-membership-retention/approval`
|
||
|
||
3. **验证待审批列表**
|
||
- ✅ 应该能看到"测试党员张三"的记录
|
||
- ✅ 状态显示为"待审批"
|
||
- ✅ 显示申请时间、目的地等信息
|
||
|
||
4. **查看详情**
|
||
- 点击"查看详情"按钮
|
||
- ✅ 弹窗显示完整的申请信息
|
||
- ✅ 包含姓名、身份证号、出国时间、目的地、目的等
|
||
|
||
---
|
||
|
||
### 步骤3:测试审批操作 - 审批通过
|
||
|
||
1. **点击"审批通过"按钮**
|
||
- 在待审批列表中,找到"测试党员张三"的记录
|
||
- 点击"审批通过"按钮
|
||
|
||
2. **填写审批意见(可选)**
|
||
- 弹出审批意见输入框
|
||
- 输入:`同意该同志出国申请,保留党籍`
|
||
- 点击"确定"
|
||
|
||
3. **验证审批成功**
|
||
- ✅ 提示"审批成功"
|
||
- ✅ 该记录从待审批列表中消失
|
||
|
||
4. **验证数据库状态**
|
||
```sql
|
||
-- 查询审批后的数据状态
|
||
SELECT
|
||
retention_id,
|
||
name,
|
||
status,
|
||
final_approval,
|
||
update_time
|
||
FROM rs_party_membership_retention
|
||
WHERE name = '测试党员张三';
|
||
```
|
||
|
||
**预期结果**:
|
||
- ✅ `status` = '2'(已通过)
|
||
- ✅ `final_approval` = '同意该同志出国申请,保留党籍'
|
||
- ✅ `update_time` 已更新
|
||
|
||
---
|
||
|
||
### 步骤4:测试审批记录选项卡
|
||
|
||
1. **切换到"审批记录"选项卡**
|
||
- 在审批页面,点击"审批记录"选项卡
|
||
|
||
2. **验证审批记录显示**
|
||
- ✅ 应该能看到"测试党员张三"的记录
|
||
- ✅ 状态显示为"已通过"(绿色标签)
|
||
- ✅ 显示审批时间
|
||
|
||
3. **查看审批记录详情**
|
||
- 点击"查看详情"按钮
|
||
- ✅ 显示完整的申请信息
|
||
- ✅ 显示审批意见
|
||
|
||
---
|
||
|
||
### 步骤5:测试保留历史选项卡(关键验证)
|
||
|
||
1. **进入党籍保留管理页面**
|
||
- 导航路径:人事管理 → 党籍保留管理
|
||
- 或直接访问:`http://localhost/#/rs/party-membership-retention`
|
||
|
||
2. **切换到"保留历史"选项卡**
|
||
- 点击"保留历史"选项卡
|
||
|
||
3. **验证保留历史显示(核心验证)**
|
||
- ✅ **应该能看到"测试党员张三"的记录**
|
||
- ✅ 显示申请人员、出国原因、目的地
|
||
- ✅ 显示保留时间(2025-02-01 至 2025-02-28)
|
||
- ✅ 完成状态显示(默认为"进行中")
|
||
|
||
4. **查看保留历史详情**
|
||
- 双击记录或点击"查看详情"按钮
|
||
- ✅ 显示完整的保留信息
|
||
|
||
5. **测试保留历史编辑**
|
||
- 点击"编辑记录"按钮
|
||
- 可以修改备注、完成状态等信息
|
||
- ✅ 保存成功
|
||
|
||
---
|
||
|
||
### 步骤6:测试保留历史导出
|
||
|
||
1. **在保留历史选项卡中**
|
||
- 点击"导出"按钮
|
||
|
||
2. **验证导出功能**
|
||
- ✅ 下载Excel文件成功
|
||
- ✅ 文件名:`党籍保留历史_YYYY-MM-DD.xlsx`
|
||
- ✅ 文件包含"测试党员张三"的记录
|
||
- ✅ 只包含已通过的记录(status=2)
|
||
|
||
---
|
||
|
||
## 🔄 完整数据流转验证
|
||
|
||
### 数据流转路径
|
||
|
||
```
|
||
1. 创建测试数据
|
||
↓
|
||
rs_party_membership_retention 表
|
||
status = '1' (待审批)
|
||
↓
|
||
|
||
2. 审批页面 - 待审批列表
|
||
↓
|
||
GET /rs/party/retention/list?status=1
|
||
✅ 显示测试数据
|
||
↓
|
||
|
||
3. 审批通过
|
||
↓
|
||
PUT /rs/party/retention/approve/{retentionId}
|
||
参数: approved=true, approvalOpinion='...'
|
||
↓
|
||
数据库更新: status = '2' (已通过)
|
||
↓
|
||
|
||
4. 审批记录列表
|
||
↓
|
||
GET /rs/party/retention/list?status=2,3
|
||
✅ 显示审批通过的记录
|
||
↓
|
||
|
||
5. 保留历史列表(关键验证)
|
||
↓
|
||
GET /rs/party/retention/history/list
|
||
(后端强制 status=2)
|
||
✅ 显示审批通过的记录
|
||
```
|
||
|
||
---
|
||
|
||
## 🧪 接口测试(可选)
|
||
|
||
### 使用Postman或curl测试
|
||
|
||
#### 1. 测试保留历史列表接口
|
||
|
||
```bash
|
||
# 获取Token(先登录)
|
||
TOKEN="your_token_here"
|
||
|
||
# 测试保留历史列表
|
||
curl -X GET "http://localhost:8080/rs/party/retention/history/list?pageNum=1&pageSize=10" \
|
||
-H "Authorization: Bearer ${TOKEN}" \
|
||
-H "Content-Type: application/json"
|
||
```
|
||
|
||
**预期响应**:
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"msg": "查询成功",
|
||
"rows": [
|
||
{
|
||
"retentionId": 1,
|
||
"name": "测试党员张三",
|
||
"destination": "美国",
|
||
"status": "2",
|
||
"statusText": "已通过",
|
||
"travelStartDate": "2025-02-01",
|
||
"travelEndDate": "2025-02-28",
|
||
"stayDays": 28
|
||
}
|
||
],
|
||
"total": 1
|
||
}
|
||
```
|
||
|
||
#### 2. 测试保留历史详情接口
|
||
|
||
```bash
|
||
# 替换 {retentionId} 为实际的ID
|
||
curl -X GET "http://localhost:8080/rs/party/retention/history/1" \
|
||
-H "Authorization: Bearer ${TOKEN}" \
|
||
-H "Content-Type: application/json"
|
||
```
|
||
|
||
**预期响应**:
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"msg": "操作成功",
|
||
"data": {
|
||
"retentionId": 1,
|
||
"name": "测试党员张三",
|
||
"status": "2",
|
||
"finalApproval": "同意该同志出国申请,保留党籍"
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## ✅ 测试检查清单
|
||
|
||
### 后端接口测试
|
||
- [ ] `GET /rs/party/retention/history/list` - 查询历史列表
|
||
- [ ] `GET /rs/party/retention/history/{retentionId}` - 查询历史详情
|
||
- [ ] `PUT /rs/party/retention/history` - 更新历史记录
|
||
- [ ] `POST /rs/party/retention/history/export` - 导出历史数据
|
||
|
||
### 前端功能测试
|
||
- [ ] 审批页面 - 待审批列表显示正常
|
||
- [ ] 审批页面 - 审批通过功能正常
|
||
- [ ] 审批页面 - 审批记录显示正常
|
||
- [ ] 保留历史 - 列表显示审批通过的数据
|
||
- [ ] 保留历史 - 详情查看功能正常
|
||
- [ ] 保留历史 - 编辑功能正常
|
||
- [ ] 保留历史 - 导出功能正常
|
||
|
||
### 数据流转测试
|
||
- [ ] 待审批数据创建成功(status=1)
|
||
- [ ] 审批通过后状态变更(status=2)
|
||
- [ ] 审批通过的数据从待审批列表消失
|
||
- [ ] 审批通过的数据出现在审批记录
|
||
- [ ] **审批通过的数据出现在保留历史(核心验证)**
|
||
|
||
### 权限测试
|
||
- [ ] 无审批权限的用户无法访问审批页面
|
||
- [ ] 无查询权限的用户无法查看保留历史
|
||
- [ ] 无编辑权限的用户无法编辑保留历史
|
||
|
||
---
|
||
|
||
## 🐛 常见问题排查
|
||
|
||
### 问题1:保留历史列表为空
|
||
|
||
**可能原因**:
|
||
1. 没有审批通过的数据(status=2)
|
||
2. 后端接口未正确实现
|
||
3. 前端接口调用错误
|
||
|
||
**排查步骤**:
|
||
```sql
|
||
-- 1. 检查数据库中是否有已通过的数据
|
||
SELECT * FROM rs_party_membership_retention WHERE status = '2';
|
||
|
||
-- 2. 检查后端日志
|
||
-- 查看是否有接口调用日志
|
||
|
||
-- 3. 检查前端Network
|
||
-- 打开浏览器开发者工具,查看Network请求
|
||
-- 确认调用的是 /rs/party/retention/history/list
|
||
```
|
||
|
||
### 问题2:审批后状态未更新
|
||
|
||
**可能原因**:
|
||
1. 审批接口调用失败
|
||
2. 数据库更新失败
|
||
3. 事务回滚
|
||
|
||
**排查步骤**:
|
||
```sql
|
||
-- 检查数据状态
|
||
SELECT
|
||
retention_id,
|
||
name,
|
||
status,
|
||
final_approval,
|
||
update_time
|
||
FROM rs_party_membership_retention
|
||
WHERE name = '测试党员张三';
|
||
|
||
-- 如果status仍为'1',说明审批未成功
|
||
```
|
||
|
||
### 问题3:权限不足
|
||
|
||
**错误提示**:`403 Forbidden` 或 `权限不足`
|
||
|
||
**解决方案**:
|
||
1. 确认用户有 `rs:partyretention:approve` 权限
|
||
2. 确认用户有 `rs:partyretention:list` 权限
|
||
3. 在系统管理 → 角色管理中分配权限
|
||
|
||
---
|
||
|
||
## 📊 测试报告模板
|
||
|
||
### 测试结果记录
|
||
|
||
| 测试项 | 预期结果 | 实际结果 | 状态 | 备注 |
|
||
|--------|---------|---------|------|------|
|
||
| 创建测试数据 | 插入成功,status=1 | | ⏳ | |
|
||
| 待审批列表显示 | 显示测试数据 | | ⏳ | |
|
||
| 审批通过操作 | 审批成功,status=2 | | ⏳ | |
|
||
| 审批记录显示 | 显示已通过记录 | | ⏳ | |
|
||
| **保留历史显示** | **显示已通过记录** | | ⏳ | **核心验证** |
|
||
| 保留历史详情 | 显示完整信息 | | ⏳ | |
|
||
| 保留历史编辑 | 编辑成功 | | ⏳ | |
|
||
| 保留历史导出 | 导出成功 | | ⏳ | |
|
||
|
||
### 测试结论
|
||
|
||
- [ ] ✅ 所有测试通过
|
||
- [ ] ⚠️ 部分测试失败(需要修复)
|
||
- [ ] ❌ 测试失败(需要重新开发)
|
||
|
||
### 问题记录
|
||
|
||
| 问题描述 | 严重程度 | 状态 | 解决方案 |
|
||
|---------|---------|------|---------|
|
||
| | | | |
|
||
|
||
---
|
||
|
||
## 🚀 下一步行动
|
||
|
||
### 测试通过后
|
||
1. ✅ 清理测试数据
|
||
2. ✅ 更新API文档
|
||
3. ✅ 编写用户手册
|
||
4. ✅ 培训审批人员
|
||
|
||
### 测试失败后
|
||
1. ❌ 记录问题详情
|
||
2. ❌ 分析失败原因
|
||
3. ❌ 修复代码
|
||
4. ❌ 重新测试
|
||
|
||
---
|
||
|
||
**测试脚本创建时间**:2025-01-09
|
||
**测试人员**:_________
|
||
**测试日期**:_________
|
||
**测试环境**:开发环境
|
||
|