1
This commit is contained in:
153
frontend/unpackage/dist/dev/mp-weixin/pages/my/sms-login.js
vendored
Normal file
153
frontend/unpackage/dist/dev/mp-weixin/pages/my/sms-login.js
vendored
Normal file
@@ -0,0 +1,153 @@
|
||||
"use strict";
|
||||
const common_vendor = require("../../common/vendor.js");
|
||||
const common_http = require("../../common/http.js");
|
||||
const _sfc_main = {
|
||||
data() {
|
||||
return { phone: "", code: "", countdown: 0, timer: null, sending: false, logging: false, showDebug: true };
|
||||
},
|
||||
computed: {
|
||||
btnText() {
|
||||
return this.countdown > 0 ? `${this.countdown}s` : this.sending ? "发送中..." : "获取验证码";
|
||||
},
|
||||
trimmedPhone() {
|
||||
return String(this.phone || "").trim();
|
||||
},
|
||||
sendBodyJson() {
|
||||
return JSON.stringify({ phone: this.trimmedPhone, scene: "login" }, null, 2);
|
||||
},
|
||||
loginBodyJson() {
|
||||
return JSON.stringify({ phone: this.trimmedPhone, code: String(this.code || "").trim() }, null, 2);
|
||||
}
|
||||
},
|
||||
onUnload() {
|
||||
if (this.timer)
|
||||
clearInterval(this.timer);
|
||||
},
|
||||
methods: {
|
||||
validatePhone(p) {
|
||||
return /^1\d{10}$/.test(String(p || "").trim());
|
||||
},
|
||||
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 p = String(this.phone || "").trim();
|
||||
if (!this.validatePhone(p))
|
||||
return common_vendor.index.showToast({ title: "请输入正确的手机号", icon: "none" });
|
||||
this.sending = true;
|
||||
try {
|
||||
const res = await common_http.post("/api/auth/sms/send", { phone: p, scene: "login" });
|
||||
const cd = Number(res && res.cooldownSec || 60);
|
||||
this.startCountdown(cd);
|
||||
common_vendor.index.showToast({ title: "验证码已发送", icon: "none" });
|
||||
} catch (e) {
|
||||
const msg = e && e.message || "发送失败";
|
||||
common_vendor.index.showToast({ title: msg, icon: "none" });
|
||||
} finally {
|
||||
this.sending = false;
|
||||
}
|
||||
},
|
||||
async doLogin() {
|
||||
if (this.logging)
|
||||
return;
|
||||
const p = String(this.phone || "").trim();
|
||||
const c = String(this.code || "").trim();
|
||||
if (!this.validatePhone(p))
|
||||
return common_vendor.index.showToast({ title: "请输入正确的手机号", icon: "none" });
|
||||
if (!/^\d{6}$/.test(c))
|
||||
return common_vendor.index.showToast({ title: "验证码格式不正确", icon: "none" });
|
||||
this.logging = true;
|
||||
try {
|
||||
const data = await common_http.post("/api/auth/sms/login", { phone: p, code: c });
|
||||
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);
|
||||
common_vendor.index.showToast({ title: "登录成功", icon: "none" });
|
||||
setTimeout(() => {
|
||||
common_vendor.index.reLaunch({ url: "/pages/index/index" });
|
||||
}, 300);
|
||||
}
|
||||
} catch (e) {
|
||||
const msg = e && e.message || "登录失败";
|
||||
common_vendor.index.showToast({ title: msg, icon: "none" });
|
||||
} finally {
|
||||
this.logging = false;
|
||||
}
|
||||
},
|
||||
async quickRegister() {
|
||||
if (this.logging)
|
||||
return;
|
||||
const p = String(this.phone || "").trim();
|
||||
if (!this.validatePhone(p))
|
||||
return common_vendor.index.showToast({ title: "请输入正确的手机号", icon: "none" });
|
||||
this.logging = true;
|
||||
try {
|
||||
const data = await common_http.post("/api/auth/register", { phone: p });
|
||||
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);
|
||||
common_vendor.index.showToast({ title: "注册成功", icon: "none" });
|
||||
setTimeout(() => {
|
||||
common_vendor.index.reLaunch({ url: "/pages/index/index" });
|
||||
}, 300);
|
||||
}
|
||||
} catch (e) {
|
||||
const msg = e && e.message || "注册失败";
|
||||
common_vendor.index.showToast({ title: msg, icon: "none" });
|
||||
} finally {
|
||||
this.logging = false;
|
||||
}
|
||||
},
|
||||
copy(text) {
|
||||
try {
|
||||
common_vendor.index.setClipboardData({ data: String(text || "") });
|
||||
common_vendor.index.showToast({ title: "已复制", icon: "none" });
|
||||
} catch (e) {
|
||||
}
|
||||
},
|
||||
toggleDebug() {
|
||||
this.showDebug = !this.showDebug;
|
||||
}
|
||||
}
|
||||
};
|
||||
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
||||
return common_vendor.e({
|
||||
a: $data.phone,
|
||||
b: common_vendor.o(($event) => $data.phone = $event.detail.value),
|
||||
c: $data.code,
|
||||
d: common_vendor.o(($event) => $data.code = $event.detail.value),
|
||||
e: common_vendor.t($options.btnText),
|
||||
f: $data.countdown > 0 || $data.sending,
|
||||
g: common_vendor.o((...args) => $options.sendCode && $options.sendCode(...args)),
|
||||
h: $data.logging,
|
||||
i: common_vendor.o((...args) => $options.doLogin && $options.doLogin(...args)),
|
||||
j: $data.logging,
|
||||
k: common_vendor.o((...args) => $options.quickRegister && $options.quickRegister(...args)),
|
||||
l: common_vendor.t($data.showDebug ? "收起" : "展开"),
|
||||
m: common_vendor.o((...args) => $options.toggleDebug && $options.toggleDebug(...args)),
|
||||
n: $data.showDebug
|
||||
}, $data.showDebug ? {
|
||||
o: common_vendor.t($options.sendBodyJson),
|
||||
p: common_vendor.o(($event) => $options.copy($options.sendBodyJson)),
|
||||
q: common_vendor.t($options.loginBodyJson),
|
||||
r: common_vendor.o(($event) => $options.copy($options.loginBodyJson))
|
||||
} : {});
|
||||
}
|
||||
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render]]);
|
||||
wx.createPage(MiniProgramPage);
|
||||
//# sourceMappingURL=../../../.sourcemap/mp-weixin/pages/my/sms-login.js.map
|
||||
Reference in New Issue
Block a user