2025-11-05 10:33:46 +08:00

241 lines
6.7 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { handleShareAppMsg } from "../../utils/configs";
import { onGoH5Page } from "../../utils/getUserInfo";
import { onMaiDian } from "../../utils/maiDian";
import {
apiGetCaptchaImage,
apiSendSms,
apiGetWxUserCode,
apiLogin,
} from "../../api/login/index";
const H5Link = require("../../api/base").allBaseUrl.GDEnvs.web;
Page({
data: {
logoUrl: "../../assets/images/login/logo.jpg",
checkedUrl: "../../assets/images/login/icon_check.svg",
errorIconUrl: "../../assets/images/login/error.svg",
codeUrl: "",
isChecked: false,
loginType: "auto",
// manual
time: 60,
phone: "",
code: "",
sms: "",
uuid: "",
phoneError: false,
codeError: false,
smsError: false,
canLogin: false,
firstSend: true,
},
/** 触发同意单选框 */
handleCheck() {
this.setData({ isChecked: !this.data.isChecked });
},
/** 获取图形验证码 */
async handleGetCode() {
const res = await apiGetCaptchaImage();
try {
this.setData({ codeUrl: "data:image/gif;base64," + res.data.img });
this.setData({ uuid: res.data.uuid });
} catch (error) {
console.log(error);
}
},
/** 发送验证码 */
async handleSendSms() {
if (!this.blurPhone()) {
wx.showToast({ title: "请填写手机号", icon: "none" });
return;
}
if (!this.data.firstSend) {
this.handleGetCode();
this.setData({ codeError: true });
this.setData({ firstSend: true });
return;
}
this.setData({ codeError: false });
wx.showLoading({ title: "加载中" });
const params = {
userName: this.data.phone,
imageCode: this.data.code,
uuid: this.data.uuid,
};
const smsResult = await apiSendSms(params);
if (smsResult.code === "1000") {
this.setData({ firstSend: false });
} else {
this.setData({ codeError: true });
wx.showToast({ title: smsResult.msg, icon: "none" });
}
wx.hideLoading();
try {
this.setData({ time: this.data.time - 1 });
let timer = setInterval(() => {
if (this.data.time === 0) {
clearInterval(timer);
this.setData({ time: 60 });
return;
}
this.setData({ time: this.data.time - 1 });
}, 1000);
} catch (error) {
console.log(error);
}
},
/** 跳转协议页面 */
handelJumpToProtocol(e: any) {
const url = `${H5Link}/operate/dynamic?id=${e.target.dataset.field}`;
onGoH5Page({ is_need_login: false, url });
},
/** 绑定手机号输入 */
handlePhoneInput(e: { detail: { value: string } }) {
this.setData({
phone: e.detail.value,
});
if (
this.data.sms.length === 6 &&
this.data.phone.length === 11 &&
this.data.code.length === 4
) {
this.setData({ canLogin: true });
} else {
this.setData({ canLogin: false });
}
},
handleBindCode(e: { detail: { value: string } }) {
this.setData({ code: e.detail.value });
if (
this.data.sms.length === 6 &&
this.data.phone.length === 11 &&
this.data.code.length === 4
) {
this.setData({ canLogin: true });
} else {
this.setData({ canLogin: false });
}
},
handleBindSms(e: { detail: { value: string } }) {
this.setData({ sms: e.detail.value });
if (
this.data.sms.length === 6 &&
this.data.phone.length === 11 &&
this.data.code.length === 4
) {
this.setData({ canLogin: true });
} else {
this.setData({ canLogin: false });
}
},
/** 手机号输入框失焦检查 */
blurPhone() {
const phone = this.data.phone;
const reg = /^[1][3-9][0-9]{9}$/;
const res = reg.test(phone);
if (!res) {
this.setData({ phoneError: true });
} else {
this.setData({ phoneError: false });
}
return res;
},
/** 手动登录 */
handleManualLogin() {
onMaiDian("其他手机号登录-曝光");
this.setData({ loginType: "manual" });
this.handleGetCode();
},
/** 手动登录提交 */
async handleManualSubmit() {
if (!this.data.canLogin) return;
if (!this.data.isChecked) {
wx.showToast({ title: "请阅读并同意协议", icon: "none" });
return;
}
const that = this;
wx.showLoading({ title: "加载中" });
wx.login({
success(wxRes) {
console.warn("wxRes", wxRes);
apiGetWxUserCode({ code: wxRes.code }).then((res) => {
apiLogin({
loginType: 2,
userName: that.data.phone,
smsCode: that.data.sms,
openId: res.data.openid,
}).then((result) => {
if (result.code === "1000") {
onMaiDian("其他手机号登录-点击-登录");
wx.setStorage({
key: "user_info",
data: {
token: result.data.authorizeToken,
phone: result.data.phone,
userName: result.data.userName,
userId: result.data.userId,
uniqueCode: result.data.uniqueCode,
},
success() {
wx.hideLoading();
wx.reLaunch({ url: "/pages/index/index" });
},
});
} else {
that.handleGetCode();
that.setData({ codeError: true });
that.setData({ smsError: true });
that.setData({ firstSend: true });
wx.showToast({ title: result.msg, icon: "none" });
}
});
});
},
fail(wxResFail) {
console.warn("wxResFail", wxResFail);
wx.showModal({ showCancel: true, content: wxResFail.errMsg });
},
});
},
/** 一键登录 */
bindgetrealtimephonenumber(e: any) {
if (e.detail.errno === "1400001") {
wx.showToast({ title: "登录失败,请联系客服", icon: "error" });
return;
}
if (!e.detail.code) return;
wx.showLoading({ title: "加载中" });
wx.login({
success(wxRes) {
apiGetWxUserCode({ code: wxRes.code }).then((res) => {
// onMaiDian("微信一键登录-点击-登录");
if (res.code !== "200")
return wx.showToast({ title: res.msg, icon: "none" });
wx.setStorage({
key: "user_info",
data: res.data.buyer,
success() {
wx.hideLoading();
wx.navigateBack({ delta: 2 });
},
});
});
},
});
},
handleUncheck() {
wx.showToast({ title: "请阅读并同意协议", icon: "none" });
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
handleShareAppMsg();
},
onLoad() {
wx.removeStorageSync("user_info");
onMaiDian("微信一键登录-曝光");
},
});