hookehuyr

fix(打卡详情页): 恢复草稿时增加作业有效性校验

在恢复打卡草稿前,检查草稿中保存的作业ID是否仍在当前可用作业列表中。如果作业已失效(如被删除或截止),则提示用户并清空草稿,避免恢复无效数据。
1 <!-- 1 <!--
2 * @Date: 2025-09-30 17:05 2 * @Date: 2025-09-30 17:05
3 * @LastEditors: hookehuyr hookehuyr@gmail.com 3 * @LastEditors: hookehuyr hookehuyr@gmail.com
4 - * @LastEditTime: 2026-01-26 09:42:45 4 + * @LastEditTime: 2026-01-26 11:43:57
5 * @FilePath: /mlaj/src/views/checkin/CheckinDetailPage.vue 5 * @FilePath: /mlaj/src/views/checkin/CheckinDetailPage.vue
6 * @Description: 用户打卡详情页 6 * @Description: 用户打卡详情页
7 --> 7 -->
...@@ -349,6 +349,31 @@ const checkAndRestoreDraft = async () => { ...@@ -349,6 +349,31 @@ const checkAndRestoreDraft = async () => {
349 349
350 const { payload } = draft 350 const { payload } = draft
351 351
352 + // 校验草稿中的作业是否仍然有效
353 + // 如果草稿中包含具体的作业ID,必须确保该作业在当前可用的作业列表(taskOptions)中存在
354 + const draftSubtaskId = payload.subtask_id || (payload.selected_task_value && payload.selected_task_value[0])
355 + if (draftSubtaskId) {
356 + // taskOptions 已经在 onMounted 中加载完毕
357 + const isValidTask = taskOptions.value.some(option => option.value == draftSubtaskId)
358 +
359 + if (!isValidTask) {
360 + console.log('[草稿清理] 作业已失效,中断恢复流程', draftSubtaskId)
361 + try {
362 + await showDialog({
363 + title: '草稿已失效',
364 + message: '您之前暂存的作业已失效(可能已截止或被删除),无法恢复。',
365 + confirmButtonText: '清空草稿',
366 + theme: 'round-button',
367 + })
368 + } catch (e) {
369 + // 用户点击确认或其他关闭操作
370 + } finally {
371 + clearDraft(draftKey.value)
372 + }
373 + return
374 + }
375 + }
376 +
352 // 检查是否有实质内容 377 // 检查是否有实质内容
353 const hasContent = (payload.message && payload.message.trim()) || 378 const hasContent = (payload.message && payload.message.trim()) ||
354 (payload.file_list && payload.file_list.length > 0) 379 (payload.file_list && payload.file_list.length > 0)
......