jxg/jinxiangguo-home-master/App.vue

246 lines
6.1 KiB
Vue

<script>
export default {
onLaunch: async function() {
this.globalData.sysInfo = uni.getSystemInfoSync()
let token = uni.getStorageSync('jinxiangguo_login_token')
this.globalData.token = token
if (token) {
uni.request({
url: this.globalData.requestUrl + '/api/user',
header: {
'Authorization': 'Bearer ' + token
},
success: (res) => {
this.globalData.userinfo = res.data.data
}
})
// #ifdef H5
let sharecode = this.getQueryString('code')
if (sharecode) {
this.globalData.helpCode = sharecode
this.doHelp()
}
// #endif
} else {
// #ifdef MP-WEIXIN
const loginPromise = new Promise((resolve, reject) => {
wx.cloud.init()
let that = this
wx.cloud.callFunction({
name:'getOpenid'
}).then(res => {
// 根据unionid从后台要用户信息
uni.request({
url: that.globalData.requestUrl + '/api/user/wxLogin',
data: {
unionid: res.result.unionid
},
success(resuser) {
console.log('登录结果', resuser.data)
that.globalData.unionid = res.result.unionid
if (resuser.data.data.user) {
that.globalData.userinfo = resuser.data.data.user
that.globalData.token = resuser.data.data.token
}
resolve()
}
})
}).catch(err => {
console.log(err)
reject(err)
})
})
this.globalData.loginPromise = loginPromise
// #endif
}
let audio_bck = uni.getStorageSync('audio_bck')
let audio_click = uni.getStorageSync('audio_click')
if (audio_bck === '') audio_bck = 0
if (audio_click === '') audio_click = 0
const audioBck = uni.createInnerAudioContext()
audioBck.loop = true
audioBck.volume = audio_bck
audioBck.src = 'https://6a69-jinxiangguo-7g6kqddnb0a8aa47-1326817332.tcb.qcloud.la/audio/bck.mp3'
this.globalData.audioBck = audioBck
const audioClick = uni.createInnerAudioContext()
audioClick.autoplay = true
audioClick.volume = audio_click
audioClick.src = 'https://6a69-jinxiangguo-7g6kqddnb0a8aa47-1326817332.tcb.qcloud.la/audio/click.mp3'
this.globalData.audioClick = audioClick
setTimeout(() => {
this.globalData.isFirstOnLoad = false
}, 1000)
},
methods: {
// #ifdef H5
preloadImages: async function(urls) {
const promises = urls.map(url => {
return new Promise((resolve, reject) => {
const image = new Image();
image.src = url;
image.onload = () => resolve(url);
image.onerror = reject;
});
});
return Promise.all(promises);
},
wxinit: function() {
uni.request({
url: this.globalData.requestUrl + '/api/user/getJSSDK',
data: {
url: location.origin + location.pathname + location.search
},
success: (res) => {
console.log(res.data.data)
res.data.data.openTagList = ['wx-open-launch-weapp']
this.$wx.config(res.data.data)
},
fail: () => {
uni.showToast({
title: '微信配置初始化失败',
icon: 'fail'
})
}
})
},
isWechat: function() {
var ua = window.navigator.userAgent.toLowerCase();
if (ua.match(/micromessenger/i) == 'micromessenger') {
return true;
} else {
return false;
}
},
// 正则获取url参数
getQueryString: function (name) {
var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if(r!=null)return unescape(r[2]); return null;
},
// #endif
doHelp: function() {
let that = this
uni.request({
url: this.globalData.requestUrl + '/api/user/code/save',
data: {
code: this.globalData.helpCode
},
header: {
'Authorization': 'Bearer ' + this.globalData.token
},
method: 'POST',
success(res) {
if (res.data.code === 200) {
that.globalData.helpCode = ''
uni.showToast({
title: '助力成功',
icon: 'none'
})
}
}
})
},
playAudio: function () {
// 播放点击效果和背景音乐
if (this.globalData.audioBck.paused) {
this.globalData.audioBck.play()
}
if (this.globalData.audioClick.paused) {
this.globalData.audioClick.play()
}
}
},
onShow: function() {
if (!this.globalData.isFirstOnLoad && this.globalData.audioBck.paused) {
this.globalData.audioBck.play()
}
},
onHide: function() {
if (!this.globalData.audioBck.paused) {
this.globalData.audioBck.pause()
}
},
globalData: {
isFirstOnLoad: true, // 是否首次启动
sysInfo: {}, // 系统信息
audioBck: {}, // 背景音乐
audioClick: {}, // 点击音乐
requestUrl: process.env.NODE_ENV === 'development' ?
'http://jinxiangguo.tianci.com' :
'https://www.quxun.fun',
token: '', // 请求用token
unionid: '',
userinfo: {}, // 用户信息
helpCode: '', // 助力code
isReloadMarkers: true, // 是否需要重算硬币与圈圈
mapKey: 'FRDBZ-UU6L3-AOV3E-RSLD3-Y2PJ3-4MBYS' ,// 正式腾讯地图key
// mapKey: '6I7BZ-SUIKL-GVMPP-EY5NY-3PORV-GYBCH' // 测试腾讯地图key
}
}
</script>
<style>
/*每个页面公共css */
.center {
display: flex;
align-items: center;
justify-content: center;
}
uni-toast {
z-index: 10000;
}
uni-modal {
z-index: 10000;
}
.flex {
display: flex;
}
.pr-5 {
padding-right: 5px;
}
/* #ifdef MP-WEIXIN */
wx-slider .wx-slider-handle-wrapper{
height: 6px !important;
}
wx-slider .wx-slider-handle-wrapper::after {
content: "";
position: absolute;
right: -3px;
border-radius: 6px;
border: 2px solid #000;
box-sizing: border-box;
background-color: #C4FF46;
width: 12px;
height: 12px;
top: -3px;
}
wx-slider .wx-slider-handle-wrapper::before {
content: "";
position: absolute;
border-radius: 6px;
border: 2px solid #000;
box-sizing: border-box;
background-color: #C4FF46;
width: 12px;
height: 12px;
margin-top: -3px;
margin-left: -8px;
}
wx-slider .wx-slider-thumb {
border: 2px solid #000 !important;
box-sizing: border-box;
border-radius: 6px;
width: 12px !important;
}
/* #endif */
</style>