jxg/jinxiangguo-home-master/pages/my/my.vue

677 lines
16 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<view class="back" @click="goGame">
<image src="https://6a69-jinxiangguo-7g6kqddnb0a8aa47-1326817332.tcb.qcloud.la/img/my/back.png" mode="widthFix"></image>
</view>
<scroll-view scroll-y>
<view class="top">
<view class="balance">
<view class="price-bck">
<view class="logo-bck">
<image src="https://6a69-jinxiangguo-7g6kqddnb0a8aa47-1326817332.tcb.qcloud.la/img/my/icon-橡果.png" mode="widthFix"></image>
</view>
{{userinfo.amount}}
</view>
</view>
<view class="avatar-group">
<view class="avatar">
<!-- #ifdef H5 -->
<image :src="avatar" mode="heightFix"></image>
<!-- #endif -->
<!-- #ifdef MP-WEIXIN -->
<button open-type="chooseAvatar" @chooseavatar="avatarHandler" class="avatar-btn">
<image :src="avatar" mode="heightFix"></image>
</button>
<!-- #endif -->
</view>
</view>
</view>
<view style="margin-top: -30px;" class="my-bck">
<view class="center-circle">
<view class="circle-left">
</view>
<view class="circle-center">
</view>
<view class="circle-right">
</view>
</view>
<view class="center-content">
<view class="nickname">
{{userinfo.name}}
<image v-if="JSON.stringify(userinfo) !== '{}'" @click="openPopupUseredit"
src="https://6a69-jinxiangguo-7g6kqddnb0a8aa47-1326817332.tcb.qcloud.la/img/my/edit.png" mode="widthFix"></image>
</view>
<view v-if="JSON.stringify(userinfo) !== '{}'" class="userid">
ID:{{userinfo.id}}
</view>
<view class="content-menu">
<view @click="openPopupMycoin">
<image src="https://6a69-jinxiangguo-7g6kqddnb0a8aa47-1326817332.tcb.qcloud.la/img/my/icon-我的硬币.png" mode="widthFix"></image>
<text>我的硬币</text>
</view>
<view @click="openPopupRank">
<image src="https://6a69-jinxiangguo-7g6kqddnb0a8aa47-1326817332.tcb.qcloud.la/img/my/icon-排行榜.png" mode="widthFix"></image>
<text>排行榜</text>
</view>
</view>
<view class="pd-25">
<view class="menu-list">
<view class="list-item" @click="openPopupLearning">
<view class="item-left">
<image src="https://6a69-jinxiangguo-7g6kqddnb0a8aa47-1326817332.tcb.qcloud.la/img/my/icon-新手教程.png" mode="widthFix"></image>
</view>
<view class="item-center">
新手教程
</view>
<view class="item-right">
<image src="https://6a69-jinxiangguo-7g6kqddnb0a8aa47-1326817332.tcb.qcloud.la/img/game/setsystem/icon-right.png" mode="widthFix"></image>
</view>
</view>
<view class="list-item" @click="openPopupShare">
<view class="item-left">
<image src="https://6a69-jinxiangguo-7g6kqddnb0a8aa47-1326817332.tcb.qcloud.la/img/my/icon-邀请好友.png" mode="widthFix"></image>
</view>
<view class="item-center">
邀请好友
</view>
<view class="item-right">
<image src="https://6a69-jinxiangguo-7g6kqddnb0a8aa47-1326817332.tcb.qcloud.la/img/game/setsystem/icon-right.png" mode="widthFix"></image>
</view>
</view>
<!-- #ifdef MP-WEIXIN -->
<view class="list-item">
<button open-type="contact" bindcontact="handleContact" hover-class="none" class="contact-kefu">
<view class="item-left">
<image src="https://6a69-jinxiangguo-7g6kqddnb0a8aa47-1326817332.tcb.qcloud.la/img/my/icon-联系客服.png" mode="widthFix"></image>
</view>
<view class="item-center">
联系客服
</view>
<view class="item-right">
<image src="https://6a69-jinxiangguo-7g6kqddnb0a8aa47-1326817332.tcb.qcloud.la/img/game/setsystem/icon-right.png" mode="widthFix"></image>
</view>
</button>
</view>
<!-- #endif -->
<view class="list-item" @click="openPopupShequ">
<view class="item-left">
<image src="https://6a69-jinxiangguo-7g6kqddnb0a8aa47-1326817332.tcb.qcloud.la/img/my/icon社区号.png" mode="widthFix"></image>
</view>
<view class="item-center">
社区号
</view>
<view class="item-center item-shequ">
<image src="https://6a69-jinxiangguo-7g6kqddnb0a8aa47-1326817332.tcb.qcloud.la/img/my/logo-微信.png" mode="widthFix"></image>
<image src="https://6a69-jinxiangguo-7g6kqddnb0a8aa47-1326817332.tcb.qcloud.la/img/my/logo-qq.png" mode="widthFix"></image>
<image src="https://6a69-jinxiangguo-7g6kqddnb0a8aa47-1326817332.tcb.qcloud.la/img/my/logo-抖音.png" mode="widthFix"></image>
</view>
<view class="item-right">
<image src="https://6a69-jinxiangguo-7g6kqddnb0a8aa47-1326817332.tcb.qcloud.la/img/game/setsystem/icon-right.png" mode="widthFix"></image>
</view>
</view>
<view class="list-item" @click="openPopupSetSystem">
<view class="item-left">
<image src="https://6a69-jinxiangguo-7g6kqddnb0a8aa47-1326817332.tcb.qcloud.la/img/game/set.png" mode="widthFix"></image>
</view>
<view class="item-center">
设置
</view>
<view class="item-right">
<image src="https://6a69-jinxiangguo-7g6kqddnb0a8aa47-1326817332.tcb.qcloud.la/img/game/setsystem/icon-right.png" mode="widthFix"></image>
</view>
</view>
<view class="list-item" @click="openPopupContactus">
<view class="item-left">
<image src="https://6a69-jinxiangguo-7g6kqddnb0a8aa47-1326817332.tcb.qcloud.la/img/my/icon-联系我们.png" mode="widthFix"></image>
</view>
<view class="item-center">
联系我们
</view>
<view class="item-right">
<image src="https://6a69-jinxiangguo-7g6kqddnb0a8aa47-1326817332.tcb.qcloud.la/img/game/setsystem/icon-right.png" mode="widthFix"></image>
</view>
</view>
</view>
<!-- #ifdef H5 -->
<view v-if="!proxy.$wx || !app.isWechat()" class="back-login">
<view class="back-btn" @click="logout">
退出登录
</view>
</view>
<!-- #endif -->
</view>
</view>
</view>
</scroll-view>
<!-- 弹窗:我的硬币 -->
<popup-mycoin ref="pMycoin"></popup-mycoin>
<!-- 弹窗:排行榜 -->
<popup-rank ref="pRank"></popup-rank>
<!-- 弹窗:新手教程 -->
<popup-learning ref="pLearning"></popup-learning>
<!-- 弹窗:邀请好友 -->
<popup-share ref="pShare"></popup-share>
<!-- 弹窗:社区号 -->
<popup-shequ ref="pShequ"></popup-shequ>
<!-- 弹窗:设置 -->
<popup-setsystem ref="pSetsystem"></popup-setsystem>
<!-- 弹窗:联系我们 -->
<popup-contactus ref="pContactus"></popup-contactus>
<!-- 弹窗:修改昵称 -->
<popup-useredit ref="pUseredit" @closeEdit="closeEdit"></popup-useredit>
</template>
<script>
// #ifdef MP-WEIXIN
export default {
onShareAppMessage() {
let user = getApp().globalData.userinfo,
path = '/pages/game/game'
if ('code' in user) {
path += '?scene=' + user.code
}
return {
title: '快来一起寻宝吧~',
path: path
}
}
}
// #endif
</script>
<script setup>
import {
nextTick
} from 'vue';
const app = getApp()
import {
ref,
onMounted,
getCurrentInstance
} from 'vue'
const {
proxy
} = getCurrentInstance() // 全局对象
/* 一系列窗口对象 */
const pMycoin = ref() // 我的硬币
const pRank = ref() // 排行榜
const pLearning = ref() // 新手教程
const pShare = ref() // 邀请好友
const pShequ = ref() // 社区
const pSetsystem = ref() // 系统设置
const pContactus = ref() // 联系我们
const pUseredit = ref()
const userinfo = ref(app.globalData.userinfo)
const avatar = ref(app.globalData.userinfo.avatar)
// #ifdef MP-WEIXIN
const avatarHandler = (e) => {
console.log(e);
uni.uploadFile({
url: app.globalData.requestUrl + '/api/file/upload',
filePath: e.detail.avatarUrl,
name: 'file',
success(res) {
let data = JSON.parse(res.data)
if (data.code !== 200) {
uni.showToast({
title: '上传失败,请重试',
icon: 'none'
});
return;
}
uni.request({
url: app.globalData.requestUrl + '/api/user/save/avatar',
data: {
avatar: data.data[0]
},
method: 'POST',
header: {
'Authorization': 'Bearer ' + app.globalData.token
},
success: (res) => {
if (res.data.code === 200) {
uni.showToast({
title: '头像修改成功',
icon: 'none'
});
app.globalData.userinfo.avatar = data.data[0];
avatar.value = data.data[0];
} else {
uni.showToast({
title: '上传失败,请重试',
icon: 'none'
});
}
},
complete: () => {
uni.hideLoading()
}
})
console.log('上传完成', res);
},
fail(err) {
console.log('err', err)
}
})
}
// #endif
const closeEdit = (e) => {
if (!e) return
uni.request({
url: app.globalData.requestUrl + '/api/user',
header: {
'Authorization': 'Bearer ' + app.globalData.token
},
success: (res) => {
if (res.data.code === 200) {
app.globalData.userinfo = res.data.data
userinfo.value = res.data.data
} else {
uni.showToast({
title: '获取用户信息失败,请重试',
icon: 'none'
})
}
}
})
}
const logout = () => {
// #ifdef H5
if (proxy.$wx && app.isWechat()) return
uni.showModal({
title: '确认退出登录吗?',
success: function(res) {
if (res.confirm) {
uni.removeStorageSync('jinxiangguo_login_token') // 移除token刷新页面
location.reload()
}
}
})
// #endif
}
const openPopupUseredit = () => {
app.playAudio()
pUseredit.value.open()
}
// 打开我的硬币弹窗
const openPopupMycoin = () => {
app.playAudio()
pMycoin.value.open()
}
// 打开排行榜弹窗
const openPopupRank = () => {
app.playAudio()
pRank.value.open()
}
// 打开新手教程弹窗
const openPopupLearning = () => {
app.playAudio()
pLearning.value.open()
}
// 打开邀请好友弹窗
const openPopupShare = () => {
app.playAudio()
pShare.value.open()
}
// 打开社区号弹窗
const openPopupShequ = () => {
app.playAudio()
pShequ.value.open()
}
// 打开系统设置弹窗
const openPopupSetSystem = () => {
app.playAudio()
pSetsystem.value.open()
}
// 打开联系我们弹窗
const openPopupContactus = () => {
app.playAudio()
pContactus.value.open()
}
const goGame = () => {
app.playAudio()
uni.navigateBack()
}
const getUser = () => {
uni.showLoading()
uni.request({
url: app.globalData.requestUrl + '/api/user',
header: {
'Authorization': 'Bearer ' + app.globalData.token
},
success: (res) => {
if (res.data.code === 200) {
app.globalData.userinfo = res.data.data
userinfo.value = res.data.data
} else {
uni.showToast({
title: '获取用户信息失败,请重试',
icon: 'none'
})
}
},
complete: () => {
uni.hideLoading()
}
})
}
onMounted(() => {
// #ifdef H5
if (!app.globalData.token) {
uni.redirectTo({
url: '/pages/index/index'
})
return
}
if (JSON.stringify(app.globalData.userinfo) !== '{}') return
getUser()
// #endif
// #ifdef MP-WEIXIN
// await app.globalData.loginPromise // 等待登录完毕
if (app.globalData.unionid) {
if (JSON.stringify(app.globalData.userinfo) !== '{}') return
getUser()
} else {
app.callback = res => {
if (JSON.stringify(app.globalData.userinfo) !== '{}') return
getUser()
}
}
// #endif
})
</script>
<style scoped>
.contact-kefu {
width: 100%;
display: flex;
padding: 0;
line-height: 1;
font-size: 16px;
background-color: transparent;
}
.contact-kefu::after {
border: none;
}
.avatar-btn {
width: 100px;
height: 100px;
padding: 0;
}
.balance {
padding: 10px;
}
.price-bck image {
width: 18px;
}
.logo-bck {
height: 26px;
width: 26px;
background: #C4FF46;
border-radius: 13px;
display: flex;
align-items: center;
justify-content: center;
margin-right: 5px;
}
.price-bck {
height: 26px;
background: rgba(255, 255, 255, .8);
border-radius: 13px;
display: flex;
align-items: center;
padding-right: 10px;
font-size: 12px;
font-weight: 700;
font-family: Noto Sans S Chinese;
}
.back-btn {
background: linear-gradient(137.8deg, #C2FF8F 0%, #0DFFB9 99.99%);
border-radius: 25px;
height: 50px;
width: 100%;
display: flex;
align-items: center;
justify-content: center;
font-size: 15px;
}
.back-login {
display: flex;
padding: 10px;
}
.item-shequ image:first-child {
width: 24px;
height: auto;
}
.item-shequ image:last-child {
width: 22px;
height: auto;
}
.item-shequ image {
margin: 0 4px;
}
.item-shequ {
justify-content: flex-end;
}
.item-right image {
width: 10px !important;
height: auto;
}
.item-right {
padding: 5px;
}
.item-center {
flex: 1;
padding: 0 10px;
}
.list-item view {
display: flex;
align-items: center;
}
.list-item image {
width: 20px;
height: auto;
}
.list-item {
display: flex;
padding: 15px;
}
.menu-list {
border-radius: 15px;
background-color: rgba(255, 255, 255, 0.5);
margin: 10px;
}
.pd-25 {
width: 100%;
}
.content-menu image {
width: 18px;
height: auto;
}
.content-menu view text {
padding-left: 5px;
}
.content-menu view {
height: 78px;
display: flex;
align-items: center;
justify-content: center;
flex: 1;
border-radius: 15px;
margin: 10px;
font-size: 14px;
}
.content-menu view:first-child {
background: linear-gradient(137.8deg, #C2FF8F 0%, #0DFFB9 99.99%);
}
.content-menu view:last-child {
background-color: #000;
color: #fff;
}
.content-menu {
display: flex;
width: 100%;
}
.userid {
font-size: 13px;
font-weight: 400;
padding: 5px;
}
.nickname image {
width: 20px;
height: auto;
}
.nickname {
font-family: Noto Sans S Chinese;
font-size: 28px;
font-weight: 700;
line-height: 42px;
text-align: end;
}
.center-content {
background: linear-gradient(182.09deg, #FFFDD8 -0.23%, #FFFFFF 91.61%);
height: calc(100vh - 235px);
display: flex;
align-items: center;
flex-direction: column;
padding: 15px;
}
.circle-left {
width: calc(100% / 2 - 43px);
background: #FFFDD8;
height: calc(100% + 2px);
top: -1px;
border-radius: 15px 22px 0 0;
position: absolute;
}
.circle-center {
width: 92px;
height: 36px;
position: absolute;
left: calc(50% - 46px);
background: radial-gradient(circle at 50% -22px, transparent, transparent 56px, #FFFDD8 56px);
}
.center-circle {
display: flex;
position: relative;
height: 35px;
}
.circle-right {
position: absolute;
height: 100%;
right: 0;
height: calc(100% + 2px);
top: -1px;
width: calc(100% / 2 - 43px);
border-radius: 22px 15px 0 0;
background: #FFFDD8;
}
.avatar image {
height: 100%;
}
.avatar {
border-radius: 50px;
border: 3px solid #000;
box-sizing: border-box;
background-color: #fff;
overflow: hidden;
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
}
.avatar-group {
border-radius: 50px;
display: flex;
align-items: center;
justify-content: center;
border: 3px solid transparent;
width: 100px;
height: 100px;
}
.top {
display: flex;
width: 100%;
flex-direction: column;
align-items: center;
justify-content: flex-end;
height: 200px;
background: url('https://6a69-jinxiangguo-7g6kqddnb0a8aa47-1326817332.tcb.qcloud.la/img/my/star1.png') no-repeat top 60px left calc(50% + 80px),
url('https://6a69-jinxiangguo-7g6kqddnb0a8aa47-1326817332.tcb.qcloud.la/img/my/star2.png') no-repeat top 107px left 83px;
background-size: 40px auto,
20px auto;
}
.back image {
width: 12px;
height: auto;
}
.back {
position: absolute;
z-index: 99999999;
left: 0;
/* #ifdef H5 */
top: 0;
/* #endif */
/* #ifdef MP-WEIXIN */
top: 34px;
/* #endif */
padding: 20px 10px 10px 20px;
}
scroll-view {
height: calc(100vh);
}
</style>
<style>
page {
background: linear-gradient(180deg, #FBC379 0%, #FFF500 40.82%) !important;
}
</style>