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; const labels = { netease:['游戏名称','网易UID'], skin:['游戏名称','皮肤站UUID(自动获取)'] }; document.getElementById('rs-label1').textContent = labels[src][0]; document.getElementById('rs-label2').textContent = labels[src][1]; const uidGroup = document.getElementById('uid-group'); uidGroup.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 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 = ' 完成注册'; } }); } };