lilishop-uniapp/pages/passport/login.vue

143 lines
3.9 KiB
Vue
Raw Normal View History

2021-05-13 11:03:32 +08:00
<template>
2021-09-10 10:45:37 +08:00
<view>
<!-- -->
<view v-if="codeLogin">
<!-- 背景 -->
<view class="login-ball bg-linear-gradient small"></view>
2021-05-13 11:03:32 +08:00
2021-09-10 10:45:37 +08:00
<view class="logo-cell">
<image class="logo" :src="config.logo" mode="aspectFit"></image>
</view>
<view class="title">{{config.name}}</view>
2021-05-13 11:03:32 +08:00
2021-09-10 10:45:37 +08:00
<!-- 验证码登录 -->
<codeLogin @open="open" :status="value" v-if="login && loginData.code" />
<!-- 账号密码登录 -->
<onClickLogin @open="open" :status="value" v-if="login && loginData.click" />
<view class="form"> </view>
2021-05-13 11:03:32 +08:00
2021-09-10 10:45:37 +08:00
<!-- 隐私政策 -->
<div class="privacy">
<u-checkbox-group :icon-size="24" width="45rpx">
<u-checkbox v-model="value" :active-color="lightColor"></u-checkbox>
2021-05-13 11:03:32 +08:00
2021-09-10 10:45:37 +08:00
</u-checkbox-group>
同意<span @click="handleClick('user')"></span><span @click="handleClick('privacy')"></span>
</div>
</view>
<view v-if="wechatLogin">
<wechatH5Login />
</view>
2021-05-13 11:03:32 +08:00
</view>
</template>
<script>
import codeLogin from "./codeLogin";
import onClickLogin from "./onClickLogin";
import { getUserInfo } from "@/api/members";
import storage from "@/utils/storage.js";
import { loginCallback } from "@/api/connect.js";
import { webConnect } from "@/api/connect.js";
import config from "@/config/config";
2021-09-10 10:45:37 +08:00
import wechatH5Login from "./wechatH5Login.vue";
2021-05-13 11:03:32 +08:00
export default {
onShow() {
//#ifdef H5
let isWXBrowser = /micromessenger/i.test(navigator.userAgent);
if (isWXBrowser) {
webConnect("WECHAT").then((res) => {
let data = res.data;
if (data.success) {
window.location = data.result;
}
});
}
//#endif
},
data() {
return {
config,
lightColor: this.$lightColor,
2021-09-10 10:45:37 +08:00
wechatLogin: false, //是否加载微信公众号登录
codeLogin: false, //是否加载正常验证码登录
2021-05-13 11:03:32 +08:00
value: true, //隐私政策
loginData: {
code: true, //验证码登录
click: false,
},
login: true, //登录
};
},
watch: {},
components: {
codeLogin,
onClickLogin,
2021-09-10 10:45:37 +08:00
wechatH5Login,
},
mounted() {
// #ifndef APP-PLUS
//判断是否微信浏览器
var ua = window.navigator.userAgent.toLowerCase();
if (ua.match(/MicroMessenger/i) == "micromessenger") {
this.wechatLogin = true;
return;
} else {
this.codeLogin = true;
}
// #endif
// #ifdef APP-PLUS
this.codeLogin = true;
// #endif
2021-05-13 11:03:32 +08:00
},
onLoad(options) {
if (options && options.state) {
this.stateLogin(options.state);
}
},
methods: {
handleClick(val) {
uni.navigateTo({
url: "/pages/mine/help/tips?type=" + val,
});
},
// open 开启另一个模板
open(val) {
Object.keys(this.loginData).forEach((item) => {
this.$set(this.loginData, item, false);
});
this.$set(this.loginData, val, true);
},
//联合信息返回登录
stateLogin(state) {
loginCallback(state).then((res) => {
let data = res.data;
if (data.success) {
storage.setAccessToken(data.result.accessToken);
storage.setRefreshToken(data.result.refreshToken);
// 登录成功
uni.showToast({
title: "登录成功!",
icon: "none",
});
getUserInfo().then((user) => {
storage.setUserInfo(user.data.result);
storage.setHasLogin(true);
});
getCurrentPages().length > 1
? uni.navigateBack({
delta: getCurrentPages().length - 2,
})
: uni.switchTab({
url: "/pages/tabbar/home/index",
});
}
});
},
},
};
</script>
<style lang="scss" scoped>
@import url("./login.scss");
</style>