258 lines
9.1 KiB
Vue
258 lines
9.1 KiB
Vue
<template>
|
|
<view class="waper">
|
|
<view class="banner">
|
|
<image class="bgImg" src="../../static/image/mine/myBgimg.png" mode=""></image>
|
|
<view class="info" v-if="userInfo">
|
|
<view class="img">
|
|
<image :src="userInfo.avatar" mode=""></image>
|
|
</view>
|
|
<view class="text" v-if="userInfo.token">
|
|
<view>{{userInfo.nickname}}</view>
|
|
<view @click="toUrl({ url: '/pages/my/myProfile' })">查看并编辑个人资料</view>
|
|
</view>
|
|
<view class="text" v-else @click="login">
|
|
<view>请登录</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view class="menu-box">
|
|
<!-- <image class="bgImg" src="../../static/image/mine/mineList.png" mode=""></image> -->
|
|
<view class="con-box">
|
|
<view class="waper_box">
|
|
<view class="waper_list" v-for="(i, index) in menuList" :key="index" v-if="!i.check || (configData && configData.examine == 'false')">
|
|
<view class="title">
|
|
<view>{{i.title}}</view>
|
|
</view>
|
|
<view class="cont">
|
|
<view class="list" v-for="(item, itemIndex) in i.list" :key="itemIndex" @click="toUrl(item)">
|
|
<view class="img">
|
|
<image :src="item.icon" mode=""></image>
|
|
</view>
|
|
<view class="text">{{item.name}}</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view class="btn" v-if="userInfo && userInfo.token">
|
|
<view @click="logOut">退出登录</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<uni-popup class="popupRefund" ref="popup" background-color="#fff">
|
|
<view class="popup-content">
|
|
<image class="bgImg" src="https://common/refundPopup.png" mode=""></image>
|
|
<view class="con">
|
|
<view class="title">温馨提示</view>
|
|
<view class="text">确定退出登录吗?</view>
|
|
<view class="btn-box">
|
|
<view class="close" @click="dialogClose">取消</view>
|
|
<view class="save" @click="dialogConfirm">确认</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</uni-popup>
|
|
<tabbar name="mine"></tabbar>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import tabbar from '@/components/tabbar/index.vue'
|
|
export default {
|
|
components: { tabbar },
|
|
data () {
|
|
return {
|
|
userInfo: null,
|
|
configData: null,
|
|
menuList: [
|
|
{
|
|
title: '票务订单',
|
|
check: false,
|
|
list: [
|
|
{ name: '门票订单', icon: '../../static/image/mine/mpdd.png', url: '/pages/my/myOrder?index=' },
|
|
{ name: '商城订单', icon: '../../static/image/mine/scdd.png', url: '/pages/shop/order?index=0' },
|
|
{ name: '酒店订单', icon: '../../static/image/mine/jddd.png', url: '/pages/hotelOrder/list?index=1' },
|
|
]
|
|
},
|
|
{
|
|
title: '更多服务',
|
|
check: false,
|
|
list: [
|
|
{ name: '游客信息', icon: '../../static/image/mine/ykxx.png', url: '/pages/my/tourist' },
|
|
{ name: '我的收藏', icon: '../../static/image/mine/wdsc.png', url: '/pages/my/heart' },
|
|
{ name: '投诉建议', icon: '../../static/image/mine/tsjy.png', url: '/pages/my/complaint' },
|
|
{ name: '旅游年卡', icon: '../../static/image/mine/lynk.png', url: '/pages/my/annualCard' },
|
|
{ name: '一卡通', icon: '../../static/image/mine/ykt.png', url: '/pages/my/IPass' },
|
|
{ name: '联系客服', icon: '../../static/image/mine/lxkf.png', type: 'service' },
|
|
{ name: '投诉电话', icon: '../../static/image/mine/tsdh.png', type: 'complaint' },
|
|
{ name: '购物车', icon: '../../static/image/mine/gwc.png', url: '/pages/shop/cart' },
|
|
{ name: '收货地址', icon: '../../static/image/mine/shdz.png', url: '/pages/shop/addressList' }
|
|
]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
onLoad () {
|
|
this.configData = uni.getStorageSync('configData');
|
|
},
|
|
onShow () {
|
|
this.getUesr();
|
|
},
|
|
methods: {
|
|
dialogConfirm() {
|
|
uni.removeStorageSync("ztc_token");
|
|
uni.removeStorageSync("user_nickname");
|
|
uni.removeStorageSync("user_avatar");
|
|
this.getUesr()
|
|
uni.showToast({ mask: true, title: '退出登录成功', icon: 'success' })
|
|
this.dialogClose()
|
|
},
|
|
dialogClose () {
|
|
this.$refs.popup.close()
|
|
},
|
|
logOut () {
|
|
this.$refs.popup.open()
|
|
},
|
|
getUesr () {
|
|
this.userInfo = {
|
|
nickname: uni.getStorageSync('user_nickname'),
|
|
avatar: uni.getStorageSync('user_avatar') ? this.$utils.setImgUrl(uni.getStorageSync('user_avatar')) : require('../../static/image/common/user.png'),
|
|
token: uni.getStorageSync('ztc_token')
|
|
}
|
|
},
|
|
login() {
|
|
uni.navigateTo({ url: '/pages/login/login' })
|
|
},
|
|
toUrl (info) {
|
|
if (info.url) {
|
|
if (!this.userInfo.token) {
|
|
uni.showToast({ title: '请登录后操作', icon: 'none', mask: true })
|
|
setTimeout(() => {
|
|
uni.navigateTo({
|
|
url: '/pages/login/login'
|
|
})
|
|
}, 1500)
|
|
return false;
|
|
}
|
|
uni.navigateTo({ url: info.url })
|
|
} else {
|
|
if (info.type === 'service') {
|
|
uni.makePhoneCall({ phoneNumber: this.configData.phone }).catch((e) => {});
|
|
} else if (info.type === 'complaint') {
|
|
uni.makePhoneCall({ phoneNumber: this.configData.complaintPhone }).catch((e) => {});
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss">
|
|
.waper{
|
|
width: 100%;
|
|
.banner{
|
|
width: 100%; height: 400rpx; position: relative;
|
|
.bgImg {
|
|
width: 100%; height: 400rpx;
|
|
}
|
|
.info{
|
|
width: 100%; height: 148rpx; position: absolute; left: 0; bottom: 56rpx; box-sizing: border-box; padding: 0 32rpx; padding-left: 216rpx;
|
|
.img{
|
|
width: 148rpx; height: 148rpx; position: absolute; left: 32rpx; top: 0;
|
|
image{ border-radius: 50%; }
|
|
}
|
|
.text{
|
|
width: 100%; height: 100%; display: flex; flex-direction: column; justify-content: center;
|
|
view{
|
|
&:nth-child(1){ line-height: 56rpx; color: #333; font-size: 40rpx; font-weight: 500; }
|
|
&:nth-child(2){ margin-top: 10rpx; line-height: 34rpx; font-size: 24rpx; color: #666; }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
.card {
|
|
position: relative;
|
|
margin: -20rpx 32rpx 0;
|
|
width: 686rpx;
|
|
height: 212rpx;
|
|
.bgImg {
|
|
width: 100%;
|
|
height: 100%;
|
|
}
|
|
.title {
|
|
position: absolute;
|
|
top: 24rpx;
|
|
left: 40rpx;
|
|
.name {
|
|
font-weight: bold;
|
|
font-size: 42rpx;
|
|
color: #FFFFFF;
|
|
}
|
|
.day {
|
|
margin-top: 12rpx;
|
|
font-size: 24rpx;
|
|
color: rgba(255,255,255,0.7);
|
|
}
|
|
}
|
|
.icon {
|
|
position: absolute;
|
|
width: 124rpx;
|
|
height: 124rpx;
|
|
top: -1rpx;
|
|
right: -1rpx;
|
|
}
|
|
}
|
|
.menu-box {
|
|
position: relative;
|
|
// margin-top: -78rpx;
|
|
.bgImg {
|
|
width: 750rpx;
|
|
height: 1088rpx;
|
|
}
|
|
.con-box {
|
|
padding-bottom: 40rpx;
|
|
// top: 52rpx;
|
|
width: 100%;
|
|
.waper_box{
|
|
width: 100%; box-sizing: border-box; padding: 0 32rpx;
|
|
// position: relative; margin-top: -20rpx;
|
|
.waper_list{
|
|
width: 100%; background: #fff; border-radius: 10rpx; box-sizing: border-box; padding: 24rpx 0; margin-bottom: 20rpx;
|
|
.title{
|
|
box-sizing: border-box; padding-left: 24rpx;
|
|
view{ line-height: 50rpx; color: #333; font-size: 32rpx; font-weight: 500; position: relative; z-index: 3; }
|
|
}
|
|
.cont{
|
|
width: 100%; display: flex; flex-wrap: wrap;
|
|
.list{
|
|
width: 25%; display: flex; flex-direction: column; justify-content: center; align-items: center; margin-top: 36rpx;
|
|
.img{ width: 64rpx; height: 64rpx; }
|
|
.text{ margin-top: 8rpx; color: #333; font-size: 24rpx; }
|
|
}
|
|
}
|
|
&:last-child{ margin-bottom: 0; }
|
|
&:first-child{
|
|
.cont {
|
|
width: 100%; box-sizing: border-box; padding: 0 54rpx;
|
|
.list {
|
|
width: 120rpx; margin-right: 108rpx;
|
|
&:last-child{ margin-right: 0; }
|
|
.img {
|
|
width: 80rpx !important;
|
|
height: 80rpx !important;
|
|
}
|
|
.text{
|
|
font-size: 26rpx;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
.btn{
|
|
width: 100%; margin-top: 80rpx; box-sizing: border-box; padding: 0 60rpx;
|
|
view{ height: 90rpx; background: #03AE80; border-radius: 100rpx; line-height: 90rpx; text-align: center; font-weight: 500; font-size: 32rpx; color: #F6F9FF; }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</style> |