refactor(mes): 优化假期设置交互,精简接口对齐后端

1. 右键改左键点击弹出设置弹窗,阻止非当前月切换
2. 弹窗打开时调 get-by-day 接口回显已有 type 和 remark
3. 新增备注(remark)输入框,时间戳传参用 formatDate 转换
4. HolidayType 枚举抽取到 mes/utils/constants.ts 统一管理
5. 精简 API:移除 page/export/update/delete,create 改为 save
pull/871/MERGE
YunaiV 2026-02-16 21:01:41 +08:00
parent 369d3bbff2
commit 23531c6c5b
3 changed files with 15 additions and 25 deletions

View File

@ -20,28 +20,13 @@ export const CalHolidayApi = {
return await request.get({ url: `/mes/cal/holiday/list` })
},
// 查询假期设置详情
getHoliday: async (id: number) => {
return await request.get({ url: `/mes/cal/holiday/get?id=` + id })
// 根据日期查询假期设置
getHolidayByDay: async (day: string) => {
return await request.get({ url: `/mes/cal/holiday/get-by-day`, params: { day } })
},
// 新增假期设置(含 upsert 逻辑)
createHoliday: async (data: CalHolidayVO) => {
return await request.post({ url: `/mes/cal/holiday/create`, data })
},
// 修改假期设置
updateHoliday: async (data: CalHolidayVO) => {
return await request.put({ url: `/mes/cal/holiday/update`, data })
},
// 删除假期设置
deleteHoliday: async (id: number) => {
return await request.delete({ url: `/mes/cal/holiday/delete?id=` + id })
},
// 导出假期设置 Excel
exportHoliday: async (params: any) => {
return await request.download({ url: `/mes/cal/holiday/export-excel`, params })
// 保存假期设置(含 upsert 逻辑)
saveHoliday: async (data: CalHolidayVO) => {
return await request.post({ url: `/mes/cal/holiday/save`, data })
}
}

View File

@ -78,12 +78,17 @@ defineExpose({ open })
/** 提交表单 */
const emit = defineEmits(['success'])
const submitForm = async () => {
await formRef.value.validate()
//
if (!formRef) return
const valid = await formRef.value.validate()
if (!valid) return
//
formLoading.value = true
try {
await CalHolidayApi.saveHoliday(formData.value as any)
message.success('设置成功')
dialogVisible.value = false
//
emit('success')
} finally {
formLoading.value = false

View File

@ -3,9 +3,9 @@
<ContentWrap>
<el-calendar v-model="currentDate">
<template #date-cell="{ data }">
<div class="calendar-cell" @contextmenu.prevent="onRightClick(data)">
<div class="calendar-cell-header">
<span class="solar-day" :class="{ weekend: isWeekend(data.day) }">
<div class="h-full p-4px" @click.stop="onClickDay(data)">
<div class="flex justify-between items-center">
<span class="text-16px font-500" :class="{ 'text-#f56c6c': isWeekend(data.day) }">
{{ data.day.split('-')[2] }}
</span>
<el-tag v-if="holidaySet.has(data.day)" size="small" effect="dark" type="success">