Files
hzdyjs/🎯业务逻辑优化-行程变更选项卡.md
T
2025-10-14 16:41:19 +08:00

10 KiB
Raw Blame History

🎯 业务逻辑优化 - 行程变更选项卡

📋 优化内容

问题描述

原有问题:

  • ❌ "变更申请"选项卡显示所有状态的数据(待审核、已通过、已拒绝)
  • ❌ 已通过的数据出现在两个选项卡中(既在变更申请,又在变更记录)
  • ❌ 业务逻辑不清晰,用户体验不佳

正确的业务逻辑:

  • ✅ 变更申请选项卡:只显示**待审核(status=0)**的数据
  • ✅ 变更记录选项卡:只显示**已通过(status=1)**的数据
  • ✅ 已通过的数据会自动从"变更申请"流转到"变更记录"

✅ 修复内容

修改文件

文件路径:

web/src/views/rs/overseas/itinerary-change.vue

修改详情

1. 更新选项卡标签(更清晰)

修改位置:第 8 行和第 121 行

<!-- 修改前 -->
<el-tab-pane label="变更申请" name="all">
<el-tab-pane label="变更记录" name="my">

<!-- 修改后 -->
<el-tab-pane label="变更申请(待审核)" name="all">
<el-tab-pane label="变更记录(已通过)" name="my">

优势:

  • ✅ 标签名称更明确,用户一眼就能看出数据范围
  • ✅ 符合业务逻辑,避免混淆

2. 修改查询逻辑(核心)

修改位置:第 701-718 行

// 修改前(错误)
const getList = async () => {
  state.loading = true;
  try {
    const response = await listItineraryChange(state.queryParams);
    state.changeList = response.rows;
    state.total = response.total;
  } catch (error) {
    console.error('获取变更行程列表失败:', error);
  } finally {
    state.loading = false;
  }
};

// 修改后(正确)
const getList = async () => {
  state.loading = true;
  try {
    // 如果用户没有手动选择状态,默认只显示待审核的申请
    const params = { ...state.queryParams };
    if (!params.status) {
      params.status = '0'; // 默认只显示待审核状态
    }
    const response = await listItineraryChange(params);
    state.changeList = response.rows;
    state.total = response.total;
  } catch (error) {
    console.error('获取变更行程列表失败:', error);
  } finally {
    state.loading = false;
  }
};

核心逻辑:

  • ✅ 当用户未选择状态时,默认 status='0'(待审核)
  • ✅ 用户可以手动选择其他状态进行筛选
  • ✅ 符合业务需求:变更申请默认只显示待审核数据

🔄 业务流程说明

完整流程

1️⃣ 用户提交变更申请
   ↓
   状态:待审核(status=0)
   显示位置:变更申请(待审核)选项卡
   ↓
2️⃣ 审批人审批
   ↓
   ├── 审批通过 → 状态:已通过(status=1)
   │   显示位置:变更记录(已通过)选项卡 ✅
   │
   └── 审批拒绝 → 状态:已拒绝(status=2)
       显示位置:变更申请(待审核)选项卡
       可操作:重新提交或删除

数据流转规则

状态 状态值 显示选项卡 可见按钮
待审核 0 变更申请(待审核) 查看、变更历史、撤回、删除
已通过 1 变更记录(已通过) 查看、变更历史
已拒绝 2 变更申请(待审核)* 查看、变更历史、重新提交、删除

注意:

  • 已拒绝的数据默认不显示在"变更申请"中,需要手动选择状态="已拒绝"才能查看
  • 用户可以通过搜索条件中的"变更状态"下拉框筛选不同状态的数据

📊 状态字典数据

rs_itinerary_change_status

字典值 字典标签 说明
0 待审核 刚提交的申请,等待审批
1 已通过 审批通过,变更生效
2 已拒绝 审批拒绝,需要重新提交
3 已撤回 用户主动撤回申请

🎯 用户体验优化

优化前 vs 优化后

优化前:

  • ❌ 打开"变更申请"选项卡:显示所有状态的数据(混乱)
  • ❌ 待审核和已通过的数据混在一起
  • ❌ 用户需要手动筛选才能看到待审核的申请

优化后:

  • ✅ 打开"变更申请(待审核)"选项卡:只显示待审核的数据(清晰)
  • ✅ 打开"变更记录(已通过)"选项卡:只显示已通过的数据(明确)
  • ✅ 数据自动分类,用户体验更好

搜索功能

变更申请(待审核)选项卡:

  • 默认显示:待审核(status=0)
  • 可选状态:待审核、已通过、已拒绝(支持手动筛选)
  • 其他搜索条件:申请人姓名、目的地国家

变更记录(已通过)选项卡:

  • 默认显示:已通过(status=1)
  • 后端强制过滤:只返回已通过的数据
  • 其他搜索条件:目的地国家

🚀 测试验证

验证步骤

步骤1:重启前端(1分钟)

操作:

# 在 web 目录下
npm run dev

等待:

  ➜  Local:   http://localhost/
  ➜  ready in xxx ms

步骤2:打开浏览器测试(2分钟)

操作:

  1. 访问:http://localhost
  2. 登录系统
  3. 进入:人事管理 → 出国行程变更申请
  4. 查看两个选项卡

预期结果:

**变更申请(待审核)**选项卡:

  • ✅ 默认只显示状态="待审核"的数据
  • ✅ 如果没有待审核数据,显示空列表
  • ✅ 可以手动选择其他状态进行筛选

**变更记录(已通过)**选项卡:

  • ✅ 只显示状态="已通过"的数据
  • ✅ 如果没有已通过数据,显示空列表
  • ✅ 搜索条件中没有"申请人"字段(因为是当前登录用户的记录)

步骤3:测试数据流转(3分钟)

创建测试数据(如果需要):

-- 插入一条待审核的变更申请
INSERT INTO rs_overseas_itinerary_change (
    change_id, record_id, application_id, applicant_id, applicant_name,
    department, original_destination, new_destination,
    original_start_date, original_end_date, new_start_date, new_end_date,
    change_reason, status, tenant_id, deleted, create_time, create_by
) VALUES (
    1848100000000000000,  -- 变更申请ID
    1848000000000000001,  -- 出国记录ID(需要是真实存在的recordId)
    1847000000000000001,  -- 原出国申请ID
    1,                    -- 申请人ID(当前登录用户ID)
    '测试用户',           -- 申请人姓名
    '测试部门',           -- 部门
    '美国',               -- 原目的地
    '英国',               -- 新目的地
    '2025-01-01',         -- 原开始日期
    '2025-01-10',         -- 原结束日期
    '2025-01-05',         -- 新开始日期
    '2025-01-15',         -- 新结束日期
    '因公务需要调整行程', -- 变更原因
    '0',                  -- 待审核状态
    '000000',             -- 租户ID
    0,                    -- 未删除
    NOW(),                -- 创建时间
    1                     -- 创建人ID
);

测试流程:

  1. 查看变更申请选项卡

    • ✅ 应该看到刚插入的待审核数据
  2. 审批通过(在审批页面操作)

    • 进入:人事管理 → 出国行程变更审批
    • 找到待审批记录
    • 点击"通过"
  3. 回到变更申请页面

    • **变更申请(待审核)**选项卡:
      • ✅ 刚才的数据消失了(因为状态变为已通过)
    • **变更记录(已通过)**选项卡:
      • ✅ 刚才的数据出现了(因为是已通过状态)

说明:

  • ✅ 数据自动流转,符合业务逻辑
  • ✅ 已通过的数据只在"变更记录"中显示

📝 后端API说明

相关API接口

查询变更申请列表:

GET /rs/itinerary/change/list
参数:status (可选,0=待审核, 1=已通过, 2=已拒绝)

查询我的变更记录列表:

GET /rs/itinerary/change/my/list
说明:后端强制 status='1',只返回已通过的数据

后端Service实现

文件位置:

backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/service/impl/RsOverseasItineraryChangeServiceImpl.java

核心方法:

/**
 * 查询我的变更记录列表(当前登录用户的已通过变更申请)
 * 说明:变更记录Tab只显示已通过审批的变更申请,这些是真正生效的变更记录
 */
@Override
public TableDataInfo<RsOverseasItineraryChangeVo> queryMyChangeList(RsOverseasItineraryChangeQuery query) {
    Long userId = LoginHelper.getUserId();
    query.setApplicantId(userId);
    query.setStatus("1"); // 只查询已通过的变更申请
    return queryPageList(query);
}

说明:

  • ✅ 后端强制设置 status='1'
  • ✅ 前端无需传递 status 参数
  • ✅ 保证"变更记录"选项卡只显示已通过的数据

🎯 总结

修复内容

  1. ✅ 选项卡标签优化

    • 变更申请 → 变更申请(待审核)
    • 变更记录 → 变更记录(已通过)
  2. ✅ 查询逻辑优化

    • 变更申请:默认只显示待审核(status=0)
    • 变更记录:强制只显示已通过(status=1)
  3. ✅ 业务流程明确

    • 待审核 → 变更申请选项卡
    • 已通过 → 自动流转到变更记录选项卡
    • 已拒绝 → 需要手动筛选才能看到

优化效果

  • ✅ 业务逻辑清晰:数据自动分类,符合业务流程
  • ✅ 用户体验提升:一眼就能看到待处理的申请
  • ✅ 数据流转明确:已通过的数据自动流转到变更记录

🚀 立即执行

操作步骤

1️⃣ 重启前端

cd web
npm run dev

2️⃣ 测试验证

  • 打开浏览器:http://localhost
  • 进入:人事管理 → 出国行程变更申请
  • 查看两个选项卡的数据

3️⃣ 验证业务流程

  • 提交一条变更申请 → 应该出现在"变更申请(待审核)"
  • 审批通过后 → 应该自动流转到"变更记录(已通过)"

修复完成时间:2025-10-14 00:50
修复内容:业务逻辑优化,选项卡数据分类
影响范围:前端查询逻辑,不影响后端


🎯 现在就重启前端验证效果吧! 🚀