gaoluyang
92 分钟以前 a64ce8440a35f1fbcfaffb4b135bfa12abe0cd95
fix(hrm): 排班页切换月份/部门后未重新查询时阻止保存

未重新「查询排班」时网格里的空格并不代表休息,直接保存会把已有排班清掉。
保存前校验当前月份/部门与最近一次查询一致,不一致提示先查询。

Co-Authored-By: Claude Code <noreply@anthropic.com>
已修改1个文件
12 ■■■■■ 文件已修改
src/views/hrm/schedule/index.vue 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/hrm/schedule/index.vue
@@ -81,6 +81,9 @@
const saving = ref(false);
/** 是否已执行过查询 */
const loaded = ref(false);
/** 最近一次「查询排班」对应的月份/部门,保存前校验,避免拿旧数据覆盖 */
const loadedMonth = ref('');
const loadedDeptId = ref<number>();
// ========== 员工勾选 ==========
/** Checkbox 变更事件(仅取 checked 字段) */
@@ -608,6 +611,8 @@
    }
    scheduleMap.value = map;
    loaded.value = true;
    loadedMonth.value = month.value;
    loadedDeptId.value = deptId.value;
  } finally {
    loading.value = false;
  }
@@ -621,6 +626,13 @@
  if (!month.value || !employees.value.length) {
    return;
  }
  // 月份/部门改过但没有重新查询时,页面上的空格不代表「休息」,保存会把已有排班清掉
  if (loadedMonth.value !== month.value || loadedDeptId.value !== deptId.value) {
    message.warning(
      '月份或部门已变更,请先点击「查询排班」加载最新数据后再保存,避免误清已有排班',
    );
    return;
  }
  Modal.confirm({
    title: '确认保存',
    content: `将保存当前页 ${employees.value.length} 名员工在 ${month.value} 的全部排班,确定继续吗?`,