187 lines
4.5 KiB
JavaScript
187 lines
4.5 KiB
JavaScript
import $api from "@/api/index.js"
|
||
import $util from "@/utils/index.js"
|
||
import $store from "@/store/index.js"
|
||
var jweixin = require('jweixin-module');
|
||
|
||
export default {
|
||
//判断是否在微信中
|
||
async isWechat() {
|
||
var ua = window.navigator.userAgent.toLowerCase();
|
||
if (ua.match(/micromessenger/i) == 'micromessenger') {
|
||
//console.log('是微信客户端')
|
||
return true;
|
||
} else {
|
||
//console.log('不是微信客户端')
|
||
return false;
|
||
}
|
||
},
|
||
async initJssdk() {
|
||
// let page = window.location.href.split('#')[0]; //获取当前url然后传递给后台获取授权和签名信息
|
||
// let page = /(Android)/i.test(navigator.userAgent) ? window.location.href.split('?#')[0]+'?' : window.entryUrl;
|
||
let page = window.entryUrl;
|
||
// console.log(page)
|
||
var {
|
||
appid: appId,
|
||
timestamp,
|
||
nonceStr,
|
||
signature
|
||
} = await $api.base.getWebConfig({
|
||
page
|
||
});
|
||
// signature = signature + `abcdef`
|
||
jweixin.config({
|
||
debug: false,
|
||
appId,
|
||
timestamp,
|
||
nonceStr,
|
||
signature,
|
||
jsApiList: [ //这里是需要用到的接口名称
|
||
'checkJsApi', //判断当前客户端版本是否支持指定JS接口
|
||
'getLocation', //获取位置
|
||
'openLocation', //打开位置
|
||
'scanQRCode', //扫一扫接口
|
||
'chooseWXPay', //微信支付
|
||
'chooseImage', //拍照或从手机相册中选图接口
|
||
'previewImage', //预览图片接口
|
||
'uploadImage', //上传图片
|
||
'updateAppMessageShareData',
|
||
'updateTimelineShareData',
|
||
'onMenuShareAppMessage',
|
||
'onMenuShareTimeline',
|
||
'hideOptionMenu',
|
||
'showOptionMenu',
|
||
'showMenuItems'
|
||
]
|
||
});
|
||
},
|
||
wxReady: function(fn) {
|
||
jweixin.ready(function() {
|
||
fn()
|
||
})
|
||
},
|
||
async wxReady2() {
|
||
return new Promise((resolve, reject) => {
|
||
jweixin.ready(function() {
|
||
resolve(1)
|
||
})
|
||
});
|
||
},
|
||
// 关闭右上菜单
|
||
async hideOptionMenu() {
|
||
return new Promise((resolve, reject) => {
|
||
jweixin.hideOptionMenu()
|
||
});
|
||
},
|
||
// 开启右上菜单
|
||
async showOptionMenu() {
|
||
return new Promise((resolve, reject) => {
|
||
jweixin.showOptionMenu()
|
||
jweixin.showMenuItems({
|
||
menuList: [
|
||
'menuItem:share:appMessage',
|
||
'menuItem:share:timeline'
|
||
]
|
||
})
|
||
})
|
||
},
|
||
/*分享给微信朋友*/
|
||
shareAppMessage: function(title, desc, link, imgUrl) {
|
||
jweixin.updateAppMessageShareData({
|
||
title,
|
||
desc,
|
||
link,
|
||
imgUrl,
|
||
success: function(res) {
|
||
// console.log(res, "======shareAppMessage res")
|
||
}
|
||
})
|
||
jweixin.onMenuShareAppMessage({
|
||
title,
|
||
desc,
|
||
link,
|
||
imgUrl,
|
||
success: function(res) {
|
||
// console.log(res, "======onMenuShareAppMessage res")
|
||
}
|
||
})
|
||
},
|
||
/*分享微信朋友圈*/
|
||
shareTimelineMessage: function(title, link, imgUrl) {
|
||
jweixin.updateTimelineShareData({
|
||
title,
|
||
link,
|
||
imgUrl,
|
||
success: function(res) {
|
||
// console.log(res, "======shareTimelineMessage res")
|
||
}
|
||
})
|
||
jweixin.onMenuShareTimeline({
|
||
title,
|
||
link,
|
||
imgUrl,
|
||
success: function(res) {
|
||
// console.log(res, "======onMenuShareTimeline res")
|
||
}
|
||
})
|
||
},
|
||
async getWxLocation() {
|
||
let location = {
|
||
latitude: 0,
|
||
longitude: 0
|
||
}
|
||
return new Promise((resolve, reject) => {
|
||
try {
|
||
jweixin.checkJsApi({
|
||
jsApiList: ['getLocation'],
|
||
success: function(res) {
|
||
|
||
// 以键值对的形式返回,可用的api值true,不可用为false
|
||
// 如:{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"}
|
||
console.log(res, "=======checkJsApi")
|
||
|
||
|
||
let {
|
||
getLocation
|
||
} = res.checkResult
|
||
if (getLocation === true && getLocation !== 'false') {
|
||
|
||
jweixin.getLocation({
|
||
type: 'gcj02', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
|
||
success: function(res) {
|
||
console.log(res, "===== getLocation success")
|
||
resolve(res)
|
||
},
|
||
cancel: function(err){
|
||
console.log(err, "==== getLocation cancel")
|
||
resolve(location)
|
||
},
|
||
fail: function(err) {
|
||
console.log(err,"===== getLocation fail")
|
||
reject(err)
|
||
}
|
||
});
|
||
} else {
|
||
console.log(res, "==== getLocation else")
|
||
resolve(location)
|
||
}
|
||
},
|
||
fail: function(err){
|
||
console.log(res, "==== checkJsApi error")
|
||
}
|
||
})
|
||
} catch (e) {
|
||
console.log(1111111111111)
|
||
console.log(e)
|
||
jweixin.error((err) => {
|
||
console.log('wx-config-error', err);
|
||
if (err.errMsg.includes('invalid signature')) {
|
||
resolve(location)
|
||
}
|
||
});
|
||
}
|
||
|
||
});
|
||
|
||
}
|
||
}
|