gaoluyang
15 小时以前 e6b1ff023a83c3185354696eaad2329ed7f5c21c
fix(hrm): 节假日日期改为范围选择,新增弹框加宽到 800px

- 日期改用 RangePicker,新增时按范围逐个生成节假日记录,编辑时回填为范围
- 节假日类型在字典缺失时回退到「休息日/工作日」
- 弹框 600px -> 800px,范围选择器的两个日期框不再被截断

Co-Authored-By: Claude Code <noreply@anthropic.com>
已修改2个文件
30 ■■■■■ 文件已修改
src/views/hrm/attendance/holiday/data.ts 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/hrm/attendance/holiday/modules/form.vue 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/hrm/attendance/holiday/data.ts
@@ -31,9 +31,9 @@
    {
      fieldName: 'date',
      label: '日期',
      component: 'DatePicker',
      component: 'RangePicker',
      componentProps: {
        placeholder: '选择日期',
        placeholder: ['开始日期', '结束日期'],
        valueFormat: 'YYYY-MM-DD',
        style: { width: '100%' },
      },
@@ -44,7 +44,12 @@
      label: '类型',
      component: 'RadioGroup',
      componentProps: {
        options: getDictOptions(DICT_TYPE.HRM_HOLIDAY_TYPE, 'number'),
        options: getDictOptions(DICT_TYPE.HRM_HOLIDAY_TYPE, 'number').length
          ? getDictOptions(DICT_TYPE.HRM_HOLIDAY_TYPE, 'number')
          : [
              { label: '休息日', value: 1 },
              { label: '工作日', value: 2 },
            ],
      },
      rules: 'selectRequired',
    },
@@ -160,4 +165,4 @@
      },
    },
  ];
}
}
src/views/hrm/attendance/holiday/modules/form.vue
@@ -53,12 +53,18 @@
      return;
    }
    modalApi.lock();
    const data = (await formApi.getValues()) as HrmAttendanceHolidayApi.Holiday;
    const data = (await formApi.getValues()) as HrmAttendanceHolidayApi.Holiday & {
      date: string | string[];
    };
    try {
      if (formType.value === 'update') {
        data.date = Array.isArray(data.date) ? data.date[0] : data.date;
        await updateAttendanceHoliday(data);
      } else {
        await createAttendanceHoliday(data);
        const dates = Array.isArray(data.date) ? data.date : [data.date];
        for (const date of dates) {
          await createAttendanceHoliday({ ...data, date });
        }
      }
      await modalApi.close();
      emit('success');
@@ -81,7 +87,8 @@
    }
    modalApi.lock();
    try {
      await formApi.setValues(await getAttendanceHoliday(data.id));
      const detail = await getAttendanceHoliday(data.id);
      await formApi.setValues({ ...detail, date: [detail.date, detail.date] });
    } finally {
      modalApi.unlock();
    }
@@ -90,7 +97,7 @@
</script>
<template>
  <Modal :title="getTitle" class="w-[600px]">
  <Modal :title="getTitle" class="w-[800px]">
    <Form class="mx-4" />
  </Modal>
</template>
</template>