2
This commit is contained in:
@@ -7,55 +7,97 @@ const _sfc_main = {
|
||||
form: {
|
||||
shopName: "",
|
||||
name: "",
|
||||
phone: "",
|
||||
password: "",
|
||||
confirmPassword: ""
|
||||
email: "",
|
||||
code: "",
|
||||
password: ""
|
||||
},
|
||||
shopNameFocused: false,
|
||||
nameFocused: false,
|
||||
phoneFocused: false,
|
||||
passwordFocused: false,
|
||||
confirmPasswordFocused: false
|
||||
emailFocused: false,
|
||||
codeFocused: false,
|
||||
pwdFocused: false,
|
||||
countdown: 0,
|
||||
timer: null,
|
||||
sending: false
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
btnText() {
|
||||
if (this.countdown > 0)
|
||||
return `${this.countdown}s`;
|
||||
if (this.sending)
|
||||
return "发送中...";
|
||||
return "获取验证码";
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
validate() {
|
||||
const phone = String(this.form.phone || "").trim();
|
||||
const ok = /^1[3-9]\d{9}$/.test(phone);
|
||||
const email = String(this.form.email || "").trim();
|
||||
const ok = /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/.test(email);
|
||||
if (!ok) {
|
||||
common_vendor.index.showToast({ title: "请输入正确的手机号", icon: "none" });
|
||||
common_vendor.index.showToast({ title: "请输入正确的邮箱地址", icon: "none" });
|
||||
return false;
|
||||
}
|
||||
if (!this.form.password) {
|
||||
common_vendor.index.showToast({ title: "请输入密码", icon: "none" });
|
||||
if (!/^\d{6}$/.test(String(this.form.code || "").trim())) {
|
||||
common_vendor.index.showToast({ title: "验证码格式不正确", icon: "none" });
|
||||
return false;
|
||||
}
|
||||
if (this.form.password.length < 6) {
|
||||
if (String(this.form.password || "").length < 6) {
|
||||
common_vendor.index.showToast({ title: "密码至少6位", icon: "none" });
|
||||
return false;
|
||||
}
|
||||
if (!this.form.confirmPassword) {
|
||||
common_vendor.index.showToast({ title: "请确认密码", icon: "none" });
|
||||
return false;
|
||||
}
|
||||
if (this.form.password !== this.form.confirmPassword) {
|
||||
common_vendor.index.showToast({ title: "两次密码不一致", icon: "none" });
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
startCountdown(sec) {
|
||||
this.countdown = sec;
|
||||
if (this.timer)
|
||||
clearInterval(this.timer);
|
||||
this.timer = setInterval(() => {
|
||||
if (this.countdown <= 1) {
|
||||
clearInterval(this.timer);
|
||||
this.timer = null;
|
||||
this.countdown = 0;
|
||||
return;
|
||||
}
|
||||
this.countdown--;
|
||||
}, 1e3);
|
||||
},
|
||||
async sendCode() {
|
||||
if (this.sending || this.countdown > 0)
|
||||
return;
|
||||
const e = String(this.form.email || "").trim();
|
||||
const ok = /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/.test(e);
|
||||
if (!ok)
|
||||
return common_vendor.index.showToast({ title: "请输入正确的邮箱地址", icon: "none" });
|
||||
this.sending = true;
|
||||
try {
|
||||
const res = await common_http.post("/api/auth/email/send", { email: e, scene: "login" });
|
||||
const cd = Number(res && res.cooldownSec || 60);
|
||||
this.startCountdown(cd);
|
||||
common_vendor.index.showToast({ title: "验证码已发送", icon: "none" });
|
||||
} catch (e2) {
|
||||
const msg = e2 && e2.message || "发送失败";
|
||||
common_vendor.index.showToast({ title: msg, icon: "none" });
|
||||
} finally {
|
||||
this.sending = false;
|
||||
}
|
||||
},
|
||||
async onRegister() {
|
||||
if (!this.validate())
|
||||
return;
|
||||
const phone = String(this.form.phone || "").trim();
|
||||
const email = String(this.form.email || "").trim();
|
||||
const name = String(this.form.name || "").trim();
|
||||
const password = String(this.form.password || "");
|
||||
try {
|
||||
const data = await common_http.post("/api/auth/register", { phone, name: name || void 0, password });
|
||||
const data = await common_http.post("/api/auth/email/register", { email, code: String(this.form.code || "").trim(), name, password: String(this.form.password || "") });
|
||||
if (data && data.token) {
|
||||
common_vendor.index.setStorageSync("TOKEN", data.token);
|
||||
if (data.user && data.user.phone)
|
||||
common_vendor.index.setStorageSync("USER_MOBILE", data.user.phone);
|
||||
if (data.user && data.user.email)
|
||||
common_vendor.index.setStorageSync("USER_EMAIL", data.user.email);
|
||||
if (name)
|
||||
try {
|
||||
common_vendor.index.setStorageSync("USER_NAME", name);
|
||||
} catch (_) {
|
||||
}
|
||||
common_vendor.index.showToast({ title: "注册成功", icon: "none" });
|
||||
setTimeout(() => {
|
||||
common_vendor.index.reLaunch({ url: "/pages/index/index" });
|
||||
@@ -115,49 +157,52 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
||||
q: $data.nameFocused ? 1 : "",
|
||||
r: $data.form.name ? 1 : "",
|
||||
s: common_vendor.p({
|
||||
d: "M6.62,10.79C8.06,13.62 10.38,15.94 13.21,17.38L15.41,15.18C15.69,14.9 16.08,14.82 16.43,14.93C17.55,15.3 18.75,15.5 20,15.5A1,1 0 0,1 21,16.5V20A1,1 0 0,1 20,21A17,17 0 0,1 3,4A1,1 0 0,1 4,3H7.5A1,1 0 0,1 8.5,4C8.5,5.25 8.7,6.45 9.07,7.57C9.18,7.92 9.1,8.31 8.82,8.59L6.62,10.79Z"
|
||||
d: "M20 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm-1 4l-7 4-7-4V6l7 4 7-4v2z"
|
||||
}),
|
||||
t: common_vendor.p({
|
||||
viewBox: "0 0 24 24"
|
||||
}),
|
||||
v: common_vendor.o(($event) => $data.phoneFocused = true),
|
||||
w: common_vendor.o(($event) => $data.phoneFocused = false),
|
||||
x: $data.form.phone,
|
||||
y: common_vendor.o(common_vendor.m(($event) => $data.form.phone = $event.detail.value, {
|
||||
v: common_vendor.o(($event) => $data.emailFocused = true),
|
||||
w: common_vendor.o(($event) => $data.emailFocused = false),
|
||||
x: $data.form.email,
|
||||
y: common_vendor.o(common_vendor.m(($event) => $data.form.email = $event.detail.value, {
|
||||
trim: true
|
||||
})),
|
||||
z: $data.phoneFocused ? 1 : "",
|
||||
A: $data.form.phone ? 1 : "",
|
||||
z: $data.emailFocused ? 1 : "",
|
||||
A: $data.form.email ? 1 : "",
|
||||
B: common_vendor.p({
|
||||
d: "M12,17A2,2 0 0,0 14,15C14,13.89 13.1,13 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V10C4,8.89 4.9,8 6,8H7V6A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,3A3,3 0 0,0 9,6V8H15V6A3,3 0 0,0 12,3Z"
|
||||
d: "M3 10h18v2H3v-2zm0 6h12v2H3v-2zM3 6h18v2H3V6z"
|
||||
}),
|
||||
C: common_vendor.p({
|
||||
viewBox: "0 0 24 24"
|
||||
}),
|
||||
D: common_vendor.o(($event) => $data.passwordFocused = true),
|
||||
E: common_vendor.o(($event) => $data.passwordFocused = false),
|
||||
F: $data.form.password,
|
||||
G: common_vendor.o(common_vendor.m(($event) => $data.form.password = $event.detail.value, {
|
||||
D: common_vendor.o(($event) => $data.codeFocused = true),
|
||||
E: common_vendor.o(($event) => $data.codeFocused = false),
|
||||
F: $data.form.code,
|
||||
G: common_vendor.o(common_vendor.m(($event) => $data.form.code = $event.detail.value, {
|
||||
trim: true
|
||||
})),
|
||||
H: $data.passwordFocused ? 1 : "",
|
||||
I: $data.form.password ? 1 : "",
|
||||
H: $data.codeFocused ? 1 : "",
|
||||
I: $data.form.code ? 1 : "",
|
||||
J: common_vendor.p({
|
||||
d: "M12,17A2,2 0 0,0 14,15C14,13.89 13.1,13 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V10C4,8.89 4.9,8 6,8H7V6A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,3A3,3 0 0,0 9,6V8H15V6A3,3 0 0,0 12,3Z"
|
||||
}),
|
||||
K: common_vendor.p({
|
||||
viewBox: "0 0 24 24"
|
||||
}),
|
||||
L: common_vendor.o(($event) => $data.confirmPasswordFocused = true),
|
||||
M: common_vendor.o(($event) => $data.confirmPasswordFocused = false),
|
||||
N: $data.form.confirmPassword,
|
||||
O: common_vendor.o(common_vendor.m(($event) => $data.form.confirmPassword = $event.detail.value, {
|
||||
L: common_vendor.o(($event) => $data.pwdFocused = true),
|
||||
M: common_vendor.o(($event) => $data.pwdFocused = false),
|
||||
N: $data.form.password,
|
||||
O: common_vendor.o(common_vendor.m(($event) => $data.form.password = $event.detail.value, {
|
||||
trim: true
|
||||
})),
|
||||
P: $data.confirmPasswordFocused ? 1 : "",
|
||||
Q: $data.form.confirmPassword ? 1 : "",
|
||||
R: common_vendor.o((...args) => $options.onRegister && $options.onRegister(...args)),
|
||||
S: common_vendor.o((...args) => $options.onGoLogin && $options.onGoLogin(...args))
|
||||
P: $data.pwdFocused ? 1 : "",
|
||||
Q: $data.form.password ? 1 : "",
|
||||
R: common_vendor.t($options.btnText),
|
||||
S: $data.countdown > 0 || $data.sending,
|
||||
T: common_vendor.o((...args) => $options.sendCode && $options.sendCode(...args)),
|
||||
U: common_vendor.o((...args) => $options.onRegister && $options.onRegister(...args)),
|
||||
V: common_vendor.o((...args) => $options.onGoLogin && $options.onGoLogin(...args))
|
||||
};
|
||||
}
|
||||
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render]]);
|
||||
|
||||
Reference in New Issue
Block a user