mirror of
https://github.com/crmeb/CRMEB.git
synced 2026-11-03 08:20:36 +00:00
194 lines
4.6 KiB
JavaScript
194 lines
4.6 KiB
JavaScript
import {
|
|
CACHE_USERINFO,
|
|
CACHE_TOKEN,
|
|
CACHE_EXPIRES_TIME
|
|
} from '../../config.js';
|
|
import Util from '../../utils/util.js';
|
|
import {
|
|
getLogo
|
|
} from '../../api/api.js';
|
|
import {
|
|
login
|
|
} from '../../api/user.js';
|
|
|
|
let app = getApp();
|
|
|
|
Component({
|
|
properties: {
|
|
iShidden: {
|
|
type: Boolean,
|
|
value: true,
|
|
},
|
|
//是否自动登录
|
|
isAuto: {
|
|
type: Boolean,
|
|
value: true,
|
|
},
|
|
isGoIndex: {
|
|
type: Boolean,
|
|
value: true,
|
|
},
|
|
},
|
|
data: {
|
|
cloneIner: null,
|
|
loading: false,
|
|
errorSum: 0,
|
|
errorNum: 3,
|
|
canIUseGetUserProfile: false // 判断是否为最新获取用户信息函数
|
|
},
|
|
attached() {
|
|
this.get_logo_url();
|
|
this.setAuthStatus();
|
|
if (wx.getUserProfile) {
|
|
this.setData({
|
|
canIUseGetUserProfile: true
|
|
})
|
|
}
|
|
},
|
|
methods: {
|
|
close() {
|
|
let pages = getCurrentPages();
|
|
let currPage = pages[pages.length - 1];
|
|
if (this.data.isGoIndex) {
|
|
wx.switchTab({
|
|
url: '/pages/index/index'
|
|
});
|
|
} else {
|
|
this.setData({
|
|
iShidden: true
|
|
});
|
|
if (currPage && currPage.data.iShidden != undefined) {
|
|
currPage.setData({
|
|
iShidden: true
|
|
});
|
|
}
|
|
}
|
|
},
|
|
get_logo_url: function() {
|
|
var that = this;
|
|
if (wx.getStorageSync('logo_url')) return this.setData({
|
|
logo_url: wx.getStorageSync('logo_url')
|
|
});
|
|
getLogo().then(res => {
|
|
wx.setStorageSync('logo_url', res.data.logo_url);
|
|
that.setData({
|
|
logo_url: res.data.logo_url
|
|
});
|
|
});
|
|
},
|
|
//检测登录状态并执行自动登录
|
|
setAuthStatus() {
|
|
var that = this;
|
|
Util.chekWxLogin().then((res) => {
|
|
let pages = getCurrentPages();
|
|
let currPage = pages[pages.length - 1];
|
|
if (currPage && currPage.data.iShidden != undefined) {
|
|
currPage.setData({
|
|
iShidden: true
|
|
});
|
|
}
|
|
if (res.isLogin) {
|
|
if (!Util.checkLogin()) return Promise.reject({
|
|
authSetting: true,
|
|
msg: '用户token失效',
|
|
userInfo: res.userInfo
|
|
});
|
|
that.triggerEvent('onLoadFun', app.globalData.userInfo);
|
|
} else {
|
|
wx.showLoading({
|
|
title: '正在登录中'
|
|
});
|
|
that.setUserInfo(res.userInfo, true);
|
|
}
|
|
}).catch(res => {
|
|
if (res.authSetting === false) {
|
|
//没有授权不会自动弹出登录框
|
|
if (that.data.isAuto === false) return;
|
|
//自动弹出授权
|
|
that.setData({
|
|
iShidden: false
|
|
});
|
|
} else if (res.authSetting) {
|
|
//授权后登录token失效了
|
|
that.setUserInfo(res.userInfo);
|
|
}
|
|
})
|
|
},
|
|
// 获取用户信息
|
|
getUserProfile() {
|
|
let that = this;
|
|
wx.showLoading({
|
|
title: '正在登录中'
|
|
});
|
|
wx.getUserProfile({
|
|
desc: '用于完善会员资料', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
|
|
success: (res) => {
|
|
Util.getCodeLogin((code) => {
|
|
let userInfo = res;
|
|
userInfo.code = code.code;
|
|
that.getWxUserInfo(userInfo);
|
|
})
|
|
},
|
|
fail: (err) => {
|
|
wx.hideLoading();
|
|
}
|
|
});
|
|
},
|
|
//授权
|
|
setUserInfo(userInfo, isLogin) {
|
|
let that = this;
|
|
wx.showLoading({
|
|
title: '正在登录中'
|
|
});
|
|
if (isLogin) {
|
|
that.getWxUserInfo(userInfo);
|
|
} else {
|
|
wx.hideLoading();
|
|
that.setData({
|
|
iShidden: false
|
|
});
|
|
}
|
|
},
|
|
getWxUserInfo: function(userInfo) {
|
|
let that = this;
|
|
userInfo.spread_spid = app.globalData.spid; //获取推广人ID
|
|
userInfo.spread_code = app.globalData.code; //获取推广人分享二维码ID
|
|
login(userInfo).then(res => {
|
|
app.globalData.token = res.data.token;
|
|
app.globalData.isLog = true;
|
|
app.globalData.userInfo = res.data.userInfo;
|
|
app.globalData.expiresTime = res.data.expires_time;
|
|
wx.setStorageSync(CACHE_TOKEN, res.data.token);
|
|
wx.setStorageSync(CACHE_EXPIRES_TIME, res.data.expires_time);
|
|
wx.setStorageSync(CACHE_USERINFO, JSON.stringify(res.data.userInfo));
|
|
if (res.data.cache_key) wx.setStorage({
|
|
key: 'cache_key',
|
|
data: res.data.cache_key
|
|
});
|
|
//取消登录提示
|
|
wx.hideLoading();
|
|
//关闭登录弹出窗口
|
|
that.setData({
|
|
iShidden: true,
|
|
errorSum: 0
|
|
});
|
|
//执行登录完成回调
|
|
that.triggerEvent('onLoadFun', app.globalData.userInfo);
|
|
}).catch((err) => {
|
|
wx.hideLoading();
|
|
that.data.errorSum++;
|
|
that.setData({
|
|
errorSum: that.data.errorSum
|
|
});
|
|
if (that.data.errorSum >= that.data.errorNum) {
|
|
Util.Tips({
|
|
title: err
|
|
});
|
|
} else {
|
|
that.setUserInfo(userInfo);
|
|
}
|
|
});
|
|
}
|
|
},
|
|
})
|