From 8d6c3c4a8d24cba3a9921fb0243e4421a9e7a527 Mon Sep 17 00:00:00 2001 From: canglan Date: Mon, 17 Aug 2026 04:50:10 +0800 Subject: [PATCH] fix: notifications page crash + email code dev-mode false error MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - notifications.js: EventOptions(current) referenced undefined 'Current' (case typo) -> ReferenceError crashed add/edit modal, page unusable - auth.js send-verify-code: dev mode (SMTP down) deleted captcha row before returning code, so register always failed with '验证码无效或已过期' even with correct code. Keep row; it's deleted after successful verify. --- backend/routes/auth.js | 3 ++- public/js/pages/notifications.js | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/backend/routes/auth.js b/backend/routes/auth.js index a6f8265..7ac31b0 100644 --- a/backend/routes/auth.js +++ b/backend/routes/auth.js @@ -29,7 +29,8 @@ router.post('/send-verify-code', async (req, res) => { code, }); if (!sent) { - await query('DELETE FROM captchas WHERE id = ?', [codeId]); + // SMTP 未配置/发送失败(dev 模式): 保留验证码记录, 前端直接显示验证码; + // 注册校验通过后会自动删除, 不会出现"验证码正确却报错"的问题 return res.status(200).json({ code_id: codeId, code, dev: true }); } res.json({ code_id: codeId, message: '验证码已发送' }); diff --git a/public/js/pages/notifications.js b/public/js/pages/notifications.js index ab8ab85..ae132ee 100644 --- a/public/js/pages/notifications.js +++ b/public/js/pages/notifications.js @@ -84,7 +84,7 @@ const NotificationsPage = { async del(id) { if(await U.confirm('确认删除?')){ try { await API.req('DELETE',`/notifications/${id}`); this.load(); } catch(ex){alert(ex.message);} } } }; -function EventOptions(current) { return ['all','ticket_created','ticket_claimed','ticket_transferred','ticket_updated'].map(e=>``).join(''); } +function EventOptions(current) { return ['all','ticket_created','ticket_claimed','ticket_transferred','ticket_updated'].map(e=>``).join(''); } function EventsLabel(v) { return v==='all'?'全部事件':v.split(',').map(s=>s.trim()).map(EventsLabelSingle).join(', '); } function EventsLabelSingle(e) { return {all:'全部',ticket_created:'工单创建',ticket_claimed:'工单认领',ticket_transferred:'工单转交',ticket_updated:'工单更新'}[e]||e; } function bindEventToggles() {