const RegisterPage = { captcha: null, codeId: null, async render() { try { this.captcha = await API.get('/captcha'); } catch { this.captcha = null; } return `
`; }, toggleSource() { const src = document.getElementById('rs').value; document.getElementById('rs-label1').textContent = '游戏名称'; document.getElementById('rs-label2').textContent = src === 'netease' ? '网易UID' : '皮肤站UUID(自动获取)'; document.getElementById('uid-group').style.display = src === 'netease' ? '' : 'none'; document.getElementById('rgu').required = src === 'netease'; }, async refreshCaptcha() { try { const c = await API.get('/captcha'); document.getElementById('captcha-img').innerHTML = c.svg; document.getElementById('captcha-id').value = c.id; document.getElementById('captcha-a').value = ''; } catch {} }, mount() { this.toggleSource(); document.getElementById('send-code-btn').addEventListener('click', async () => { const captcha = document.getElementById('captcha-a'); if (captcha && !captcha.value.trim()) { alert('请先完成人机验证'); return; } const email = document.getElementById('re').value.trim(); if (!email) { alert('请先填写邮箱'); return; } const btn = document.getElementById('send-code-btn'); btn.disabled = true; btn.textContent = '发送中...'; try { const r = await API.post('/auth/send-verify-code', { email }); this.codeId = r.code_id; if (r.dev) alert('验证码: ' + r.code); btn.textContent = '\u2713 已发送'; document.getElementById('vf-code').focus(); } catch(ex) { alert(ex.message); btn.disabled = false; btn.textContent = '发送验证码'; } }); document.getElementById('reg-form').addEventListener('submit', async e => { e.preventDefault(); const btn = e.target.querySelector('button[type="submit"]'); const err = document.getElementById('regerr'); const ok = document.getElementById('regok'); err.classList.add('hidden'); ok.classList.add('hidden'); btn.disabled = true; btn.innerHTML = ' 注册中...'; try { await Auth.register({ username: document.getElementById('ru').value.trim(), password: document.getElementById('rp').value, email: document.getElementById('re').value.trim(), game_name: document.getElementById('rgn').value.trim(), game_uid: document.getElementById('rgu').value.trim(), source: document.getElementById('rs').value, captcha_id: document.getElementById('captcha-id')?.value, captcha_answer: document.getElementById('captcha-a')?.value.trim(), code_id: this.codeId, code: document.getElementById('vf-code').value.trim(), }); ok.textContent = '注册成功!即将跳转登录...'; ok.classList.remove('hidden'); setTimeout(() => location.hash = '#/login', 2000); } catch (ex) { err.textContent = ex.message; err.classList.remove('hidden'); btn.disabled = false; btn.innerHTML = ' 完成注册'; } }); } };