123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197 |
- import Vue from 'vue'
- import Storage from '@/utils/storage'
- import { API } from '@/utils/request'
- import * as API_Connect from '@/api/connect'
- import 'wx-promise-pro'
- import store from '@/store'
- const mp_type = 'miniprogram_uu_sleep'
- const mixin = {
- data() {
- return {
- // 项目名称
- projectName: 'UU睡眠',
- // 图片上传API
- MixinUploadApi: `${API.base}/uploaders`,
- // 是否已经授权 默认false
- hasAuth: false,
- }
- },
- onLoad(query) {
- },
- /** 解决在真机上下拉不回弹 */
- onPullDownRefresh() {
- wx.stopPullDownRefresh()
- },
- onShareAppMessage(){
- },
- methods: {
- async checkHasLogin() {
- const {
- code
- } = await wx.pro.login({
- timeout: 8000
- })
- const uuid = Storage.getItem('uuid')
- let result = await API_Connect.checkHasLogin({
- code,
- uuid,
- mp_type
- })
- // console.log('是否登录返回=', result)
- let _this = this
- if (result.autologin === 'yes') {
- _this.hasAuth = true
- Storage.setItem('haslogin', { uid: result.uid, loginType: 'auto' })
- const {
- access_token,
- refresh_token,
- access_token_timeout,
- refresh_token_timeout,
- uid,
- no_union_id
- } = result
- // 如果登录成功 存储token(access_token refresh_token) uid 获取用户数据
- if (access_token && refresh_token && uid) {
- const now=Math.round(new Date()/1000)
- store.dispatch('setAccessTokenAction', access_token)
- store.dispatch('setRefreshTokenAction', refresh_token)
- Storage.setItem('uid', uid)
- Storage.setItem('access_token_timeout',now+access_token_timeout-60)
- Storage.setItem('refresh_token_timeout',now+refresh_token_timeout-60)
- Storage.setItem('haslogin', { uid: result.uid, loginType: 'auto' })
- // this.autoBindPart()
- store.dispatch('getUserDataAction').then(()=>{
- let page = Storage.getItem('goPage')
- console.log('mixin-goPage===', page);
- uni.switchTab({
- url: '/pages/tabBar/home'
- })
- })
- } else if (no_union_id) {
- Storage.setItem('haslogin', { loginType: 'hand_movement' })
- uni.reLaunch({
- url:'/pages/login/auth'
- })
- } else {
- uni.reLaunch({
- url:'/pages/login/index'
- })
- }
- } else {
- uni.showModal({
- title: '提示',
- content: "您还未登录,是否前往登录呢?",
- confirmText: "确定",
- showCancel: true,
- success: function(res) {
- if (res.confirm) {
- uni.reLaunch({
- url:'/pages/login/auth'
- })
- }
- }
- })
- }
- },
- // 处理result
- disposeResult(result) {
- const {
- access_token,
- refresh_token,
- access_token_timeout,
- refresh_token_timeout,
- uid,
- no_union_id
- } = result
- // 如果登录成功 存储token(access_token refresh_token) uid 获取用户数据
- if (access_token && refresh_token && uid) {
- const now=Math.round(new Date()/1000)
- store.dispatch('setAccessTokenAction', access_token)
- store.dispatch('setRefreshTokenAction', refresh_token)
- Storage.setItem('uid', uid)
- Storage.setItem('access_token_timeout',now+access_token_timeout-60)
- Storage.setItem('refresh_token_timeout',now+refresh_token_timeout-60)
- Storage.setItem('haslogin', { uid: result.uid, loginType: 'auto' })
- // this.autoBindPart()
- store.dispatch('getUserDataAction').then(()=>{
- let page = Storage.getItem('goPage')
- console.log('mixin-goPage===', page);
- uni.switchTab({
- url: '/pages/tabBar/home'
- })
- })
- } else if (no_union_id) {
- Storage.setItem('haslogin', { loginType: 'hand_movement' })
- uni.reLaunch({
- url:'/pages/login/auth'
- })
- } else {
- uni.reLaunch({
- url:'/pages/login/index'
- })
- }
- },
- async toAutoLogin() {
- this.hasAuth = true
- // 检测是否登录 如果已经登录 或者登录结果为账户未发现 则不再进行自动登录
- // if (Storage.getItem('refresh_token') || Storage.getItem('login_result') === 'account_not_found') return
- let final = {}
- const {
- code
- } = await wx.pro.login({
- timeout: 8000
- })
- const uuid = Storage.getItem('uuid')
- try {
- let result = await API_Connect.loginByAuto({
- code,
- uuid,
- mp_type
- })
- if (result.reson === 'unionid_not_found') { // 如果已经进行过用户授权但是没有获取到unionID
- let {
- encryptedData,
- iv
- } = await wx.pro.getUserInfo({
- withCredentials: true,
- lang: 'zh_CN'
- })
- final = await API_Connect.accessUnionID({
- code,
- uuid,
- encrypted_data: encryptedData,
- iv
- })
- }
- if(result.reson === 'account_not_found' || final.reson === 'account_not_found'){ //没有绑定账号 跳到登陆页面
- uni.reLaunch({
- url:'/pages/login/index'
- })
- }
- Storage.setItem('login_result', result.reson)
- Storage.setItem('haslogin', { loginType: 'hand_movement' })
- this.disposeResult(result)
- } catch (e) {
- Storage.setItem('login_result', false)
- if (e.response.data.code === 'E133') {
- uni.redirectTo({
- url: '/pages/tabBar/home'
- })
- this.hasAuth = false
- Storage.removeItem('uuid')
- }
- }
- },
- }
- }
- Vue.prototype.$toAutoLogin = mixin.methods.toAutoLogin
- Vue.prototype.$checkHasLogin = mixin.methods.checkHasLogin
- export default mixin
|