|
|
@@ -1,157 +1,193 @@
|
|
|
-import { CACHE_USERINFO, CACHE_TOKEN, CACHE_EXPIRES_TIME } from '../../config.js';
|
|
|
+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';
|
|
|
+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{
|
|
|
- Util.getCodeLogin((res)=>{
|
|
|
- Util.wxgetUserInfo().then(userInfo=>{
|
|
|
- userInfo.code = res.code;
|
|
|
- that.getWxUserInfo(userInfo);
|
|
|
- }).catch(res=>{
|
|
|
- wx.hideLoading();
|
|
|
- });
|
|
|
- });
|
|
|
- }
|
|
|
- },
|
|
|
- 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);
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
- },
|
|
|
-})
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },
|
|
|
+})
|