149 lines
3.8 KiB
JavaScript
149 lines
3.8 KiB
JavaScript
import Vue from 'vue'
|
||
import {
|
||
thirdLogin
|
||
} from '../request/api.js'
|
||
import {
|
||
baseUrl
|
||
} from '../request/baseUrl.js'
|
||
export const isWechat = async () => {
|
||
// #ifdef H5
|
||
var ua = window.navigator.userAgent.toLowerCase();
|
||
|
||
//alert(ua);
|
||
// if (ua.match(/windowswechat/i) == "windowswechat") {
|
||
// //alert('这是电脑版微信浏览器');
|
||
// return false;
|
||
// } else {
|
||
// console.log('这不是微信浏览器');
|
||
// }
|
||
if (ua.match(/MicroMessenger/i) == 'micromessenger') {
|
||
return true;
|
||
}
|
||
|
||
return false;
|
||
// #endif
|
||
|
||
// #ifdef MP-WEIXIN
|
||
return true
|
||
// #endif
|
||
}
|
||
export const login = async () => {
|
||
// #ifdef H5
|
||
let appid = 'wx877c9b57a770f86e'
|
||
let url = "";
|
||
url = window.location.href;
|
||
var a =
|
||
`https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appid}&redirect_uri=${encodeURIComponent(url)}&response_type=code&scope=snsapi_userinfo&state=isLogin#wechat_redirect`
|
||
window.location.href = a
|
||
// #endif
|
||
|
||
|
||
// #ifdef MP-WEIXIN
|
||
let res = await wx.login()
|
||
if (res.errMsg === 'login:ok') {
|
||
wechatloginAfter(res.code)
|
||
}
|
||
console.log('小程序登录结果:', res);
|
||
// wechatloginAfter(res.code)
|
||
// #endif
|
||
}
|
||
export const getUrlParams = (key) => {
|
||
// let pages = getCurrentPages()
|
||
// let currentRoute = pages[pages.length - 1]
|
||
// return currentRoute.options[key]
|
||
// 获取当前页面的 URL 参数
|
||
// var pages = getCurrentPages(); // 获取当前页面栈
|
||
// var currentPage = pages[pages.length - 1]; // 获取当前页面
|
||
// var url = currentPage.route; // 获取当前页面路径
|
||
// var options;
|
||
|
||
// // 判断是否在微信小程序环境下
|
||
// if (uni.getSystemInfoSync().platform === 'mp-weixin') {
|
||
// // 在微信小程序中,通过 options 属性获取 URL 参数
|
||
// options = currentPage.options;
|
||
// } else {
|
||
var searchParams = new URLSearchParams(window.location.search);
|
||
// 获取code参数的值
|
||
var code = searchParams.get(key);
|
||
return code
|
||
// }
|
||
|
||
}
|
||
export const wechatloginAfter = async (code) => {
|
||
// 向后端发起请求
|
||
let {
|
||
data
|
||
} = await thirdLogin({
|
||
platform: 'wechat',
|
||
code
|
||
})
|
||
console.log(data);
|
||
if (!data.data || !data.data.userinfo || !data.data.userinfo?.token) {
|
||
uni.$u.toast('微信自动登录失败');
|
||
return
|
||
}
|
||
uni.setStorageSync('userInfo', data.data.userinfo)
|
||
uni.setStorageSync('token', data.data.userinfo.token)
|
||
uni.setStorageSync('thirdinfo', data.data.thirdinfo)
|
||
uni.navigateTo({
|
||
url: '/pages/index/index?code=',
|
||
})
|
||
// 本地存储token
|
||
// console.log('获取到的用户数据', data.data);
|
||
// localStorage.setItem('USER_INFO', JSON.stringify(data.data.userinfo))
|
||
// localStorage.setItem('TOKEN', data.data.userinfo.token)
|
||
// localStorage.setItem('USER_THIRD', JSON.stringify(data.data.thirdinfo))
|
||
// _this.userInfo = data.data.userinfo
|
||
// console.log(_this.userInfo);
|
||
}
|
||
|
||
function qsFormatter(href) {
|
||
if (href.includes("?")) {
|
||
var a = href.split("?")[1]
|
||
var b = a.split("&")
|
||
var r = {};
|
||
b.forEach(item => {
|
||
var kv = item.split("=")
|
||
r[kv[0]] = kv[1]
|
||
})
|
||
return r
|
||
} else {
|
||
return {}
|
||
}
|
||
}
|
||
|
||
function isPhoneNumber(phone) {
|
||
// 使用正则表达式匹配手机号
|
||
var pattern = /^1[3456789]\d{9}$/;
|
||
return pattern.test(phone);
|
||
}
|
||
|
||
// 格式化日期
|
||
|
||
Date.prototype.$formatDate = function() {
|
||
console.log(this);
|
||
const year = this.getFullYear(); // 年份
|
||
const month = this.getMonth() + 1; // 月份(注意月份范围是 0-11)
|
||
const day = this.getDate(); // 日期
|
||
|
||
// 拼接成字符串形式的日期
|
||
const formattedDate = `${year}年${(month < 10 ? '0' : '') + month}月${(day < 10 ? '0' : '') + day}日`;
|
||
|
||
return formattedDate;
|
||
}
|
||
|
||
function showImg(urls, index) {
|
||
uni.previewImage({
|
||
urls,
|
||
index
|
||
})
|
||
}
|
||
|
||
|
||
|
||
Vue.prototype.$getUrlParams = getUrlParams
|
||
Vue.prototype.$showImg = showImg
|
||
Vue.prototype.$isWechat = isWechat
|
||
Vue.prototype.$wechatloginAfter = wechatloginAfter
|
||
Vue.prototype.$login = login
|
||
Vue.prototype.$isPhoneNumber = isPhoneNumber |