You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

423 lines
9.3 KiB

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

<template>
<view class="userbox" :class="['theme', themeObj.name]">
<!-- 头部个人信息 不变-->
<view class="userHeader">
<image src="/static/images/user/user-bg.png" class="user_bg"></image>
<view class="nav">
<view class="user" @click="onLogin">
<image :src="userdata.avatar" v-if="userdata.avatar"></image>
<image src="../../../static/images/face.jpg" v-else></image>
<view class="text">{{userdata.realname || '-'}}</view>
</view>
</view>
<view class="vip">
<image src="/static/images/user/vip-card.png" class="vip_bg"></image>
<view class="vipname">
<text class="iconfont icon-zuanshi zuanshi"></text>
<text class="names">
商城尊享会员
</text>
<text class="vip_level">会员</text>
</view>
<view class="banquan">
商城版权所有©
</view>
</view>
</view>
<!-- 中间菜单栏 -->
<!-- #ifndef H5 -->
<view class="userMenu" @touchstart="coverTouchStart" @touchmove="coverTouchMove" @touchend="coverTouchEnd" :style="'transform:' + coverTransform + ';transition:' + coverTransition">
<image src="/static/images/user/arc.png" class="arc"></image>
<!-- 我的账户 -->
<my-account :colors="colors"></my-account>
<!-- 全部订单 -->
<my-order :orderText="orderText" :colors="colors"></my-order>
<!-- 我的足迹 -->
<my-footprint :logList="logList" :colors="colors"></my-footprint>
<!-- 我的服务 -->
<my-server :serverList="serverList" :colors="colors" :userinfo="userdata"></my-server>
</view>
<!-- #endif -->
<!-- #ifdef H5 -->
<view class="userMenu" @touchmove.stop.prevent="moveHandle" @touchstart="coverTouchStart" @touchmove="coverTouchMove" @touchend="coverTouchEnd" :style="'transform:' + coverTransform + ';transition:' + coverTransition">
<image src="/static/images/user/arc.png" class="arc"></image>
<!-- 我的账户 -->
<!-- <my-account :colors="colors"></my-account> -->
</view>
<view class="place" >
<!-- 全部订单 -->
<my-order :orderText="orderText" :colors="colors"></my-order>
<!-- 我的足迹 -->
<my-footprint :logList="logList" :colors="colors"></my-footprint>
<!-- 我的服务 -->
<my-server :serverList="serverList" :colors="colors"></my-server>
</view>
<!-- #endif -->
</view>
</template>
<script>
let app = getApp();
import { getConfig, getUserInfo,getToken, getGoodsHistory } from '@/utils/auth';
import myAccount from "../../commponent/user/my-account";
import listCell from "../../commponent/user/list-cell";
import myOrder from "../../commponent/user/my-order";
import myFootprint from "../../commponent/user/my-footprint";
import myServer from "../../commponent/user/my-server";
import { ORDER_NAVS } from '../../../config/order.js'
import { getStatusList } from '@/api/index.js'
export default {
data() {
return {
colors: '',
themeObj: app.globalData.themeObj,
startY: 0,
//原始坐标
moving: false,
//当前元素的状态(是否移动)
coverTransform: 'translateY(0px)',
//元素的移动
coverTransition: '0s',
//动画效果
orderText: ORDER_NAVS.slice(1),
logList: [],
serverList: [{
name: '我的收藏',
icon: 'icon-shoucang',
url: '/pages/views/user/mycollection',
id: 1,
elseUrl: ''
},
// {
// name: '地址管理',
// icon: 'icon-dizhi',
// url: '/pages/views/user/myaddress',
// id: 2,
// elseUrl: ''
// },
{
name: '分销中心',
icon: 'icon-fenxiao',
url: '/pages/views/user/mydistribution',
id: 6,
elseUrl: ''
}, {
name: '分享',
icon: 'icon-fenxiang1',
url: '/pages/views/user/extension',
id: 7,
elseUrl: ''
}, {
name: '联系我们',
icon: 'icon-kefu1',
url: '/pages/views/user/contactUs',
id: 8,
elseUrl: ''
}, {
name: '设置',
icon: 'icon-shezhi2',
url: '/pages/views/setting/index',
id: 9,
elseUrl: ''
}],
oldcolor: '',
userdata: {}
};
},
components: {
myAccount,
listCell,
myOrder,
myFootprint,
myServer
},
props: {},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
this.themeObj = app.globalData.themeObj
uni.setTabBarStyle({
selectedColor: this.themeObj .color
});
this.themeObj .tabList.forEach((v, index) => {
uni.setTabBarItem({
//设置tabBar 首页图标
index: index,
selectedIconPath: v
});
})
if (!getToken()) {
uni.navigateTo({
url: '/pages/login/index1'
})
return
}
this.logList = getGoodsHistory()
let colors = app.globalData.newColor;
let oldcolor = this.colors;
let userdata = getUserInfo() || {};
this.userdata = userdata
this.getOrderStatus()
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {},
methods: {
getOrderStatus() {
getStatusList({userId: getUserInfo().id}).then(res => {
const result = res.result
const obj = {
'state6': result.unconfirmed,
state0: result.unpaid,
state1: result.notSend,
// state2: result.send,
// state3: result.complete,
// state4: result.other,
// state5: result.cancel,
}
const navs = ORDER_NAVS.slice(1).map((v, index) => {
v._num = obj['state' + (v.id + '')] || 0
return v
})
this.orderText = navs
})
},
onLogin(){
let token = getToken()
if(getToken()){
return
}
uni.navigateTo({
url:'../../login/login'
})
},
coverTouchStart(e) {
//滑动开始 记录目标原始坐标
this.setData({
startY: e.touches[0].clientY,
coverTransition: 'transform .2s linear'
});
},
moveHandle(){ //阻止下拉默认事件
},
coverTouchMove(e) {
//滑动中
let moveY = e.touches[0].clientY; //记录移动的坐标
let startY = this.startY;
let moveDistance = moveY - startY; //计算当前坐标与原始坐标的差
if (moveDistance < 0) {
//如果小于0 不做操作
this.setData({
moving: false
});
return;
}
this.setData({
moving: true
});
if (moveDistance >= 60) {
//如果差在该区间内
moveDistance = 60;
}
if (moveDistance > 0 && moveDistance <= 60) {
this.setData({
coverTransform: `translateY(${moveDistance}px)`
});
}
},
coverTouchEnd(e) {
//滑动结束 回到原始位置
if (this.moving == false) {
return;
}
this.setData({
coverTransform: 'translateY(0px)',
moving: false,
coverTransition: 'transform 0.3s cubic-bezier(.21,1.93,.53,.64)'
});
},
}
};
</script>
<style scoped lang="scss">
.userHeader {
height: 520upx;
width: 100vw;
position: relative;
padding: 50upx 4%;
}
.userHeader .user_bg {
height: 100%;
width: 100%;
display: block;
position: absolute;
top: 0;
left: 0;
}
.userHeader .nav {
height: 180upx;
display: flex;
align-items: center;
justify-content: space-between;
}
.user {
display: flex;
-webkit-box-align: center;
-webkit-align-items: center;
align-items: center;
overflow: hidden;
z-index: 200;
width: 100%;
}
.user image {
width: 130upx;
height: 130upx;
border: 5upx solid #fff;
border-radius: 50%;
}
.user .text {
font-size: 24upx;
color: #fff;
margin-left: 20upx;
width: 76%;
line-height: 30upx;
height: 30upx;
white-space: break-spaces;
}
.vip {
height: 240upx;
position: relative;
display: flex;
padding: 20upx 24upx;
border-radius: 16upx 16upx 0 0;
width: 100%;
overflow: hidden;
}
.banquan {
position: absolute;
color: #f6e5a3;
top: 100upx;
left: 24upx;
font-size: 24upx;
}
.vip .vip_bg {
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
}
.vipname {
z-index: 5;
display: flex;
width: 100%;
height: 60upx;
position: relative;
align-items: center;
}
.vipname .zuanshi {
color: #f6e5a3;
font-size: 42upx;
line-height: 60upx;
}
.vipname .names {
color: #f6e5a3;
line-height: 20upx;
font-size: 24upx;
margin-left: 20upx;
}
.vip_level {
width: 115upx;
height: 35upx;
text-align: center;
line-height: 35upx;
font-size: 20upx;
color: #333;
background: linear-gradient(270deg, #f9e6af, #ffd465);
border-radius: 20upx;
position: absolute;
top: 12upx;
right: 10upx;
}
/* 中间菜单栏 */
.userMenu {
margin-top: -178upx;
padding: 0 4%;
position: relative;
background-color: #f8f8f8;
padding-bottom: 10upx;
}
.userMenu .arc {
width: 100%;
height: 36upx;
position: absolute;
top: -34upx;
left: 0;
}
.place{
padding: 0 4%;
position: relative;
background-color: #f8f8f8;
padding-bottom: 40upx;
}
</style>