fix(打卡详情页): 恢复草稿时增加作业有效性校验
在恢复打卡草稿前,检查草稿中保存的作业ID是否仍在当前可用作业列表中。如果作业已失效(如被删除或截止),则提示用户并清空草稿,避免恢复无效数据。
Showing
1 changed file
with
26 additions
and
1 deletions
| 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) | ... | ... |
-
Please register or login to post a comment