等待后端更新接口
This commit is contained in:
+52
-19
@@ -143,15 +143,32 @@
|
||||
return values;
|
||||
}
|
||||
|
||||
function setStatus(form, message) {
|
||||
function setStatus(form, type, message) {
|
||||
var status = query('[data-security-status]', form);
|
||||
|
||||
if (status) status.textContent = message;
|
||||
if (!status) return;
|
||||
if (root.ProfileUI && root.ProfileUI.setApiState && type) {
|
||||
root.ProfileUI.setApiState(status, type, message);
|
||||
return;
|
||||
}
|
||||
status.textContent = message || '';
|
||||
}
|
||||
|
||||
function setSubmitting(form, isSubmitting) {
|
||||
queryAll('button[type="submit"]', form).forEach(function (button) {
|
||||
if (!button.dataset.defaultLabel) button.dataset.defaultLabel = button.textContent;
|
||||
button.disabled = isSubmitting;
|
||||
button.textContent = isSubmitting ? '提交中…' : button.dataset.defaultLabel;
|
||||
});
|
||||
}
|
||||
|
||||
function setBoundPhoneStatus(type, message) {
|
||||
queryAll('[data-security-bound-phone]').forEach(function (node) {
|
||||
if (root.ProfileUI && root.ProfileUI.setApiState && type) {
|
||||
root.ProfileUI.setApiState(node, type, message);
|
||||
return;
|
||||
}
|
||||
node.textContent = message || '';
|
||||
});
|
||||
}
|
||||
|
||||
@@ -211,6 +228,7 @@
|
||||
|
||||
if (!api || !documentRef) return;
|
||||
if (redirectUnauthorized(api)) return;
|
||||
setBoundPhoneStatus('loading', '正在读取已绑定手机号…');
|
||||
|
||||
try {
|
||||
profile = await api.currentProfile();
|
||||
@@ -218,14 +236,10 @@
|
||||
message = isPhone(boundPhone)
|
||||
? '验证码将发送至 ' + maskPhone(boundPhone)
|
||||
: '未获取到已绑定手机号';
|
||||
queryAll('[data-security-bound-phone]').forEach(function (node) {
|
||||
node.textContent = message;
|
||||
});
|
||||
setBoundPhoneStatus('', message);
|
||||
} catch (error) {
|
||||
if (redirectUnauthorized(api, error)) return;
|
||||
queryAll('[data-security-bound-phone]').forEach(function (node) {
|
||||
node.textContent = '读取已绑定手机号失败';
|
||||
});
|
||||
setBoundPhoneStatus('error', '读取已绑定手机号失败,请刷新后重试。');
|
||||
showMessage(error.message || '账号资料加载失败');
|
||||
}
|
||||
}
|
||||
@@ -236,28 +250,31 @@
|
||||
|
||||
if (redirectUnauthorized(api)) return;
|
||||
if (!values.oldPassword || !values.newPassword) {
|
||||
setStatus(form, 'error', '请填写当前密码和新密码');
|
||||
showMessage('请填写原密码和新密码');
|
||||
return;
|
||||
}
|
||||
if (String(values.newPassword).length < 6) {
|
||||
setStatus(form, 'error', '新密码至少需要 6 位');
|
||||
showMessage('新密码至少需要 6 位');
|
||||
return;
|
||||
}
|
||||
if (values.newPassword !== values.confirmPassword) {
|
||||
setStatus(form, 'error', '两次新密码不一致');
|
||||
showMessage('两次新密码不一致');
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
setSubmitting(form, true);
|
||||
setStatus(form, '提交中...');
|
||||
setStatus(form, 'loading', '正在修改密码…');
|
||||
await api.changePassword(buildPasswordChangeBody(values));
|
||||
setStatus(form, '密码已修改');
|
||||
setStatus(form, '', '密码已修改');
|
||||
showMessage('密码已修改');
|
||||
form.reset();
|
||||
} catch (error) {
|
||||
if (redirectUnauthorized(api, error)) return;
|
||||
setStatus(form, '修改失败');
|
||||
setStatus(form, 'error', '修改失败,请稍后重试。');
|
||||
showMessage(error.message || '密码修改失败');
|
||||
} finally {
|
||||
setSubmitting(form, false);
|
||||
@@ -270,32 +287,33 @@
|
||||
|
||||
if (redirectUnauthorized(api)) return;
|
||||
if (!body.phone || !body.smsCode) {
|
||||
setStatus(form, 'error', '请填写新手机号和验证码');
|
||||
showMessage('请填写新手机号和验证码');
|
||||
return;
|
||||
}
|
||||
if (!isPhone(body.phone)) {
|
||||
setStatus(form, 'error', '请输入正确的新手机号');
|
||||
showMessage('请输入正确的新手机号');
|
||||
return;
|
||||
}
|
||||
if (!isSmsCode(body.smsCode)) {
|
||||
setStatus(form, 'error', '请输入正确的短信验证码');
|
||||
showMessage('请输入正确的短信验证码');
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
setSubmitting(form, true);
|
||||
setStatus(form, '提交中...');
|
||||
setStatus(form, 'loading', '正在换绑手机号…');
|
||||
await api.changePhone(body);
|
||||
boundPhone = body.phone;
|
||||
queryAll('[data-security-bound-phone]').forEach(function (node) {
|
||||
node.textContent = '验证码将发送至 ' + maskPhone(boundPhone);
|
||||
});
|
||||
setStatus(form, '手机号已换绑');
|
||||
setBoundPhoneStatus('', '验证码将发送至 ' + maskPhone(boundPhone));
|
||||
setStatus(form, '', '手机号已换绑');
|
||||
showMessage('手机号已换绑');
|
||||
form.reset();
|
||||
} catch (error) {
|
||||
if (redirectUnauthorized(api, error)) return;
|
||||
setStatus(form, '换绑失败');
|
||||
setStatus(form, 'error', '换绑失败,请稍后重试。');
|
||||
showMessage(error.message || '手机号换绑失败');
|
||||
} finally {
|
||||
setSubmitting(form, false);
|
||||
@@ -311,6 +329,7 @@
|
||||
if (!form || redirectUnauthorized(api)) return;
|
||||
values = getFormValues(form);
|
||||
if (!isPhone(values.phone)) {
|
||||
setStatus(form, 'error', '请输入正确的新手机号');
|
||||
showMessage('请输入正确的新手机号');
|
||||
return;
|
||||
}
|
||||
@@ -318,16 +337,19 @@
|
||||
values = getFormValues(form);
|
||||
values.validToken = takeCaptchaToken(form);
|
||||
button.disabled = true;
|
||||
setStatus(form, 'loading', '正在发送验证码…');
|
||||
|
||||
try {
|
||||
await api.sendSmsCode(getCaptchaOperation('phone'), {
|
||||
phone: values.phone,
|
||||
validToken: values.validToken || ''
|
||||
});
|
||||
setStatus(form, '', '验证码已发送,请查收短信。');
|
||||
showMessage('验证码已发送');
|
||||
startSmsCooldown(button);
|
||||
} catch (error) {
|
||||
if (redirectUnauthorized(api, error)) return;
|
||||
setStatus(form, 'error', '验证码发送失败,请稍后重试。');
|
||||
showMessage(error.message || '验证码发送失败');
|
||||
button.disabled = false;
|
||||
}
|
||||
@@ -340,6 +362,7 @@
|
||||
|
||||
if (!form || redirectUnauthorized(api)) return;
|
||||
if (!isPhone(boundPhone)) {
|
||||
setStatus(form, 'error', '未获取到已绑定手机号,请刷新后重试。');
|
||||
showMessage('未获取到已绑定手机号,请刷新后重试');
|
||||
return;
|
||||
}
|
||||
@@ -347,16 +370,19 @@
|
||||
values = getFormValues(form);
|
||||
values.validToken = takeCaptchaToken(form);
|
||||
button.disabled = true;
|
||||
setStatus(form, 'loading', '正在发送验证码…');
|
||||
|
||||
try {
|
||||
await api.sendSmsCode(getCaptchaOperation('deactivate'), {
|
||||
phone: boundPhone,
|
||||
validToken: values.validToken || ''
|
||||
});
|
||||
setStatus(form, '', '验证码已发送,请查收短信。');
|
||||
showMessage('验证码已发送');
|
||||
startSmsCooldown(button);
|
||||
} catch (error) {
|
||||
if (redirectUnauthorized(api, error)) return;
|
||||
setStatus(form, 'error', '验证码发送失败,请稍后重试。');
|
||||
showMessage(error.message || '验证码发送失败');
|
||||
button.disabled = false;
|
||||
}
|
||||
@@ -368,10 +394,12 @@
|
||||
|
||||
if (redirectUnauthorized(api)) return;
|
||||
if (!isSmsCode(values.smsCode)) {
|
||||
setStatus(form, 'error', '请输入正确的短信验证码');
|
||||
showMessage('请输入正确的短信验证码');
|
||||
return;
|
||||
}
|
||||
if (!isDangerConfirmed(values.confirmText)) {
|
||||
setStatus(form, 'error', '请完整输入“确认注销”');
|
||||
showMessage('请完整输入“确认注销”');
|
||||
return;
|
||||
}
|
||||
@@ -379,13 +407,13 @@
|
||||
|
||||
try {
|
||||
setSubmitting(form, true);
|
||||
setStatus(form, '提交中...');
|
||||
setStatus(form, 'loading', '正在提交注销申请…');
|
||||
await api.deactivateAccount(buildDeactivateBody(values));
|
||||
showMessage('账号已提交注销');
|
||||
root.location.href = 'index.html';
|
||||
} catch (error) {
|
||||
if (redirectUnauthorized(api, error)) return;
|
||||
setStatus(form, '注销失败');
|
||||
setStatus(form, 'error', '注销失败,请稍后重试。');
|
||||
showMessage(error.message || '账号注销失败');
|
||||
} finally {
|
||||
setSubmitting(form, false);
|
||||
@@ -415,6 +443,11 @@
|
||||
|
||||
if (!form) return;
|
||||
event.preventDefault();
|
||||
if (!form.checkValidity()) {
|
||||
setStatus(form, 'error', '请检查表单填写是否正确');
|
||||
form.reportValidity();
|
||||
return;
|
||||
}
|
||||
formType = form.getAttribute('data-security-form');
|
||||
|
||||
if (formType === 'password') submitPassword(form);
|
||||
|
||||
Reference in New Issue
Block a user