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() {