123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- <template>
- <view
- class="login-container"
- :style="{
- background: `url(${getImageUrl(ICON_CFG.login_bg)}) no-repeat `,
- backgroundSize: '100%',
- }"
- >
- <button class="login-btn" open-type="getUserInfo" @getuserinfo="getUserInfo">
- <u-icon name="weixin-fill" color="#fefefe" size="28"></u-icon>
- 一键微信登录
- </button>
- </view>
- </template>
- <script>
- import { ICON_CFG } from '@/common/EnumConst';
- import { getImageUrl, setStorageObj } from '@/util';
- export default {
- name: 'login',
- props: {},
- data() {
- return {
- ICON_CFG,
- };
- },
- created() {
- },
- onLoad() {
- },
- methods: {
- getImageUrl,
- // 获取用户信息
- getUserInfo(e) {
- if (e.mp.detail.userInfo) {
- this.userInfo = e.mp.detail.userInfo;
- this.hasUserInfo = true;
- this.login();
- } else {
- uni.showModal({
- title: '警告',
- content: '您点击了拒绝授权,将无法进入小程序,请授权之后再进入!',
- showCancel: false,
- confirmText: '返回授权',
- success: function (res) {
- if (res.confirm) {
- console.log('用户点击了“返回授权”');
- }
- },
- });
- }
- },
- // 登录并获取用户信息
- login() {
- uni.login({
- provider: 'weixin',
- success: (loginRes) => {
- // 登录成功,获取用户code
- const { code } = loginRes;
- // 发送code到后台换取openId, sessionKey, unionId
- uni.request({
- url: `${process.env.UNI_API_PREFIX}/cp/usr/wx/login`, // 你的登录API地址
- method: 'POST',
- data: {
- code,
- ...this.userInfo,
- },
- success: (res) => {
- if (res.data && res.data.code === 200) {
- const { data } = res.data;
- // 将用户信息和session存储到本地
- setStorageObj('userInfo', data.user);
- setStorageObj('token', data.token);
- this.realoadPage();
- } else {
- uni.showToast({
- title: '登录失败',
- icon: 'none',
- });
- }
- },
- fail: () => {
- uni.showToast({
- title: '请求失败',
- icon: 'none',
- });
- },
- });
- },
- fail: (err) => {
- console.log('uni.login 接口调用失败,将无法正常使用开放接口等服务', err);
- uni.showToast({
- title: '登录失败',
- icon: 'none',
- });
- },
- });
- },
- realoadPage() {
- let pages = getCurrentPages(); //获取当前页面
- let beforePage = pages[pages.length - 2]; //获取上一个页面的实例
- //1、调用上一个页面onLoad
- beforePage.onLoad();
- uni.navigateBack({
- delta: 1,
- });
- },
- },
- };
- </script>
- <style lang="scss" src="./index.scss" />;
|