You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
apply-assistant-v3/components/quickLogin.vue

156 lines
3.9 KiB
Vue

<template>
<button open-type="getPhoneNumber" @getphonenumber="onGetPhoneNumber" class="no_style">
<span class="biggerSize" hover-class="none" hover-stop-propagation="false">
<slot></slot>
</span>
</button>
</template>
<script>
export default {
data() {
return {};
},
created() {
this.getCode((res) => {
uni.setStorageSync("apply-code", res);
});
},
props: {},
methods: {
onGetPhoneNumber(e) {
let that = this;
// that.$emit("successLogin");
// return;
console.log("e", e);
// 进行临时变量的判断, 如果在注册页面获取过手机号授权, 则不再重新获取手机号, 直接登录
if (uni.getStorageSync("TEMPORARY_CODE")) {
let wxRes = uni.getStorageSync("TEMPORARY_CODE");
that.G.Get(
4 months ago
that.api.login_wechat,
{
openId: wxRes.openId,
tel: wxRes.phoneNumber,
unionid: wxRes.unionid,
4 months ago
createFakerAgency: 1,
},
(res) => {
console.log("res", res);
that.setToken(res);
}
);
return;
}
if (e.detail.code) {
// 允许授权。拿button返回信息换取token
uni.checkSession({
success(e1) {
console.log("success", e1);
//session_key 未过期,并且在本生命周期一直有效
that.loginWX(e);
},
fail() {
// session_key 已经失效,需要重新执行登录流程
that.getCode((res) => {
console.log("res", res);
uni.setStorageSync("apply-code", res);
setTimeout(() => {
that.loginWX(e);
}, 300);
});
},
});
} else {
// 拒绝授权。
}
},
loginWX(e) {
let that = this;
console.log("loginWX", e);
that.G.Get(
that.api.login_getWxInfo,
{
code: uni.getStorageSync("apply-code"),
btnCode: e.detail.code,
iv: e.detail.iv,
encryptedData: e.detail.encryptedData,
},
(wxRes) => {
that.G.Get(
that.api.login_wechat,
{
openId: wxRes.openId,
tel: wxRes.phoneNumber,
unionid: wxRes.unionid,
4 months ago
createFakerAgency: 1,
},
(res) => {
that.setToken(res);
}
);
}
);
},
setToken($data) {
let that = this;
console.log("获取登录用户信息:", $data);
uni.setStorageSync("apply-userinfo", $data); // 获取用户信息, 参与实际逻辑
uni.setStorageSync("apply-userinfo-copy", JSON.stringify($data)); // 仅用于查看数据,不参与实际逻辑
uni.setStorageSync("apply-avatar", $data.imgSrc); // 单独存储 -- 头像,方便修改
uni.setStorageSync("apply-username", $data.userName); // 单独存储 -- 用户名,方便修改
uni.setStorageSync("apply-tel", $data.tel); // 单独存储 -- 手机号,方便修改
uni.setStorageSync("apply-token", $data.token); // 单独存储 -- token方便获取
uni.setStorageSync("apply-uid", $data.user.id); // 单独存储 -- 用户名,方便修改
uni.setStorageSync("apply-agencyId", $data.user.agencyId); // 单独存储 -- 代理id方便获取
uni.setStorageSync("apply-supplierAccount", $data.supplierAccount); // 单独存储 -- 是否是发单号,方便获取 0.不是发单号 1.是发单号
uni.$emit("isGlogin", {
uid: $data.user.id,
});
uni.removeStorageSync("TEMPORARY_CODE");
that.$emit("successLogin", $data);
},
getCode(callback = () => {}) {
uni.login({
success(wxRes) {
console.log("wxRes", wxRes);
callback(wxRes.code);
},
fail(res) {
console.log(res);
},
});
},
},
};
</script>
<style>
.no_style {
width: 100%;
height: 100%;
background-color: transparent;
border: none;
padding: 0;
margin: 0;
color: inherit;
font-size: inherit;
/* line-height: 0; */
}
.biggerSize {
position: relative;
}
.biggerSize::after {
content: "";
/* display: inline-block; */
width: 150%;
height: 140%;
position: absolute;
left: 50%;
top: 50%;
z-index: 99;
transform: translate(-50%, -50%);
}
</style>