<template> <view class="container"> <view class="vheigh"></view> <view class="user-top"> <view class="userinfo"> <view class="user-info" @click="navTo('/pages/set/set')"> <view class="avatar"> <image class="avatarimg" :src="userInfo.avatar || '/static/error/missing-face.png'" mode=""> </image> </view> <view class="name">{{ userInfo.nickname || '游客' }}</view> <view class="vip" v-if="userInfo.level_name"> <image class="vip-bg" src="../../static/img/vip.png" mode=""></image> <view class="vip-title">{{ userInfo.level_name }}</view> </view> </view> <view class="sy-box flex"> <view class="sy-item" @click="navTo('/pages/user/mygs')"> <view class="sy-item-val">{{ userInfo.brokeage_price > 0 ? userInfo.brokeage_price : '0.00' }} </view> <view class="sy-item-name">我的佣金</view> </view> <view class="jg"></view> <view class="sy-item" @click="navTo('/pages/money/qudou')"> <view class="sy-item-val">{{ userInfo.now_money || '0.00' }}</view> <view class="sy-item-name">我的余额</view> </view> <view class="jg"></view> <view class="sy-item" @click="navTo('/pages/user/team')"> <view class="sy-item-val">{{ userInfo.sum_pay || '0' }}</view> <view class="sy-item-name">我的团队</view> </view> </view> </view> </view> <view class="my-order"> <view class="box-title flex "> <view class="title"><text>我的订单</text></view> <view class="link" @click="navTo('/pages/order/order?state=5')" hover-class="common-hover">查看全部<text class="iconfont iconenter"></text></view> </view> <view class="order-section"> <!-- 后添加 --> <view class="order-item" @click="navTo('/pages/order/order?state=0')" hover-class="common-hover" :hover-stay-time="50"> <view class=" icon1 position-relative"> <image class="icon-img" src="/static/user/a.png" mode="aspectFit"></image> </view> <text>待付款</text> </view> <view class="order-item" @click="navTo('/pages/order/order?state=1')" hover-class="common-hover" :hover-stay-time="50"> <view class=" icon1 position-relative"> <image class="icon-img" src="/static/user/b.png" mode="aspectFit"></image> <view class="corner" v-if="orderInfo.unshipped_count > 0"> <text>{{ orderInfo.unshipped_count }}</text> </view> </view> <text>待发货</text> </view> <view class="order-item" @click="navTo('/pages/order/order?state=2')" hover-class="common-hover" :hover-stay-time="50"> <view class="icon1 position-relative"> <image class="icon-img" src="/static/user/c.png" mode="aspectFit"></image> <view class="corner" v-if="orderInfo.received_count > 0"> <text>{{ orderInfo.received_count }}</text> </view> </view> <text>待收货</text> </view> <view class="order-item" @click="navTo('/pages/order/order?state=3')" hover-class="common-hover" :hover-stay-time="50"> <view class="icon1 position-relative"> <image class="icon-img" src="/static/user/d.png" mode="aspectFit"></image> <view class="corner" v-if="orderInfo.evaluated_count > 0"> <text>{{ orderInfo.evaluated_count }}</text> </view> </view> <text>已完成</text> </view> </view> </view> <uni-list class="tool-list margin-t-30"> <uni-list-item class="item" title="我的素材" @click="navTo('/pages/user/release')" thumb="/static/icon/user-sc.png"></uni-list-item> <!-- <uni-list-item class="item" title="我的检测" @click="navTo('/pages/user/jiance')" thumb="/static/icon/user-jc.png"></uni-list-item> --> <uni-list-item class="item" title="推广海报" @click="navTo('/pages/user/shareQrCode')" thumb="/static/icon/user-tg.png"></uni-list-item> <!-- <uni-list-item class="item" title="收款信息" @click="navTo('/pages/collection/collection')" thumb="/static/icon/user_page.png"></uni-list-item> --> <uni-list-item class="item" title="收货地址" @click="navTo('/pages/address/address')" thumb="/static/icon/user-dz.png"></uni-list-item> <uni-list-item class="item" title="客服" @click="openKf()" thumb="/static/icon/user-kf.png"></uni-list-item> <uni-list-item class="item" title="设置" @click="navTo('/pages/set/set')" thumb="/static/icon/user_set.png"></uni-list-item> </uni-list> <uni-popup ref="popupkf" type="center"> <view class="popup-box"> <view class="img"> <image src="../../static/img/img009.png" mode=""></image> </view> <view class="mian"> <view class="delivery"> <view class="title">已经为您定制专属客服</view> <image src="../../static/img/img010.png" mode=""></image> </view> <view class="nocancel">客服VX:{{ text }}</view> <view class="comfirm-box"> <view class="cancel" @click="cancel">取消</view> <view class="comfirm" @click="comfirm(text)">复制微信</view> </view> </view> </view> </uni-popup> <u-tabbar activeColor="#01A6A8" inactive-color='#666666' :list="tabbar"></u-tabbar> </view> </template> <script> import { tabbar1 } from '@/utils/tabbar.js'; import { mapState, mapMutations } from 'vuex'; import uniList from '@/components/uni-list/uni-list.vue'; import uniListItem from '@/components/uni-list-item/uni-list-item.vue'; import { orderData, getUserInfo, } from '@/api/user.js'; import { saveUrl, interceptor } from '@/utils/loginUtils.js'; let startY = 0, moveY = 0, pageAtTop = true; export default { components: { uniList, uniListItem }, data() { return { tabbar: tabbar1, text: '', //客服微信 }; }, onShow() { // 判断是否已经登录 if (this.hasLogin) { this.loadBaseData(); } }, onReady() { // 初始化获取页面宽度 uni.createSelectorQuery() .select('.container') .fields({ size: true }, data => { // 计算最多下拉的高度 this.userDowm = Math.floor((data.width / 750) * 185); // 计算最大触发修改高度事件 this.userMaxDowm = Math.floor((data.width / 750) * 250); } ) .exec(); }, computed: { ...mapState('user', ['userInfo', 'orderInfo', 'hasLogin']) }, methods: { ...mapMutations('user', ['setUserInfo', 'setOrderInfo']), // 加载初始数据 loadBaseData() { getUserInfo({}) .then(({ data }) => { this.setUserInfo(data); // 获取用户数据完毕后在获取订单数据防止多次跳转到登录页 orderData({}) .then(({ data }) => { this.setOrderInfo(data); }) .catch(e => { this.setOrderInfo({ complete_count: 0, //完成 received_count: 0, //待收货 unshipped_count: 0, //待发货 order_count: 0, //订单总数 unpaid_count: 0 //待付款 }); }); }) .catch(e => { console.log(e); }); }, /** * 统一跳转接口,拦截未登录路由 * navigator标签现在默认没有转场动画,所以用view */ navTo(url) { const obj = this; if (!this.hasLogin) { // 保存地址 saveUrl(); // 登录拦截 interceptor(); } else { uni.navigateTo({ url, fail(e) { uni.switchTab({ url, }); } }); } }, useTool(e) { this.navTo(e.path); }, // 打开客服 openKf() { this.$refs.popupkf.open(); }, // 关闭客服 cancel() { this.$refs.popupkf.close(); } } }; </script> <style lang="scss"> %flex-center { display: flex; flex-direction: column; justify-content: center; align-items: center; } %section { display: flex; justify-content: space-around; align-content: center; background: #fff; border-radius: 10rpx; } .container, page { min-height: 100%; height: auto; background-color: $page-color-base; } .vheigh { height: var(--status-bar-height); background-color: $base-color; } .user-section { height: 435rpx; padding: 15rpx 30rpx 0; position: relative; .bg { position: absolute; left: 0; top: 0; width: 100%; height: 100%; background-color: $base-color; } } .user-info-box { height: 180rpx; color: white; display: flex; align-items: center; justify-content: space-between; position: relative; z-index: 1; .detail { height: 130rpx; .portrait-box { height: 100%; .portrait { width: 130rpx; height: 100%; border: 5rpx solid #fff; border-radius: 50%; } } .info-box { margin-left: 20rpx; line-height: 1.5; .username { font-size: $font-lg + 6rpx; height: 100%; } } } .config { font-size: 48rpx; height: 130rpx; .setting { margin-right: 51rpx; } } } .vip-card-box { display: flex; flex-direction: column; color: #f7d680; height: 240rpx; background: linear-gradient(left, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.8)); border-radius: 16rpx 16rpx 0 0; overflow: hidden; position: relative; padding: 20rpx 24rpx; .card-bg { position: absolute; top: 20rpx; right: 0; width: 380rpx; height: 260rpx; } .b-btn { position: absolute; right: 20rpx; top: 16rpx; width: 132rpx; height: 40rpx; text-align: center; line-height: 40rpx; font-size: 22rpx; color: #36343c; border-radius: 20px; background: linear-gradient(left, #f9e6af, #ffd465); z-index: 1; } .tit { font-size: $font-base + 2rpx; color: #f7d680; margin-bottom: 28rpx; .iconfont { color: #f6e5a3; margin-right: 16rpx; } } .e-b { font-size: $font-sm; color: #d8cba9; margin-top: 10rpx; } } .cover-container { background: $page-color-base; margin-top: -150rpx; padding: 0 30rpx; position: relative; background: #f5f5f5; padding-bottom: 20rpx; .arc { position: absolute; left: 0; top: -34rpx; width: 100%; height: 36rpx; } } .tj-sction { @extend %section; .tj-item { @extend %flex-center; flex-direction: column; height: 140rpx; font-size: $font-sm; color: #75787d; } .num { font-size: $font-lg; color: $font-color-dark; margin-bottom: 8rpx; } } .item-box { border-radius: 10rpx; background-color: white; margin-top: 20rpx; .box-title { line-height: 1; padding: 30rpx; .title { font-size: $font-lg; font-weight: bold; } .link { font-size: $font-base - 2rpx; color: $font-color-light; } } .order-section { @extend %section; padding: 28rpx 0; .order-item { @extend %flex-center; width: 120rpx; height: 120rpx; border-radius: 10rpx; font-size: $font-sm; color: $font-color-dark; } .iconfont { font-size: 48rpx; margin-bottom: 18rpx; color: #fa436a; } .icon-shouhoutuikuan { font-size: 44rpx; } .icon { height: 50rpx; width: 48rpx; margin-bottom: 18rpx; background-size: 100%; background-repeat: no-repeat; background-position: center; .icon-img { width: 100%; height: 100%; } } } } .history-section { // padding: 30rpx 0 0; margin-top: 20rpx; background: #fff; border-radius: 10rpx; .sec-header { display: flex; align-items: center; font-size: $font-base; color: $font-color-dark; line-height: 40rpx; margin-left: 30rpx; padding-top: 30rpx; .iconfont { font-size: 44rpx; color: $color-red; margin-right: 16rpx; line-height: 40rpx; } } .h-list { white-space: nowrap; padding: 30rpx 30rpx 0; .h-list-image { display: inline-block; width: 160rpx; height: 160rpx; margin-right: 20rpx; border-radius: 10rpx; } } } .user-top { background-image: url("../../static/img/use-bg.png"); background-size: 750rpx auto; background-repeat: no-repeat; padding: 60rpx 30rpx 0rpx 30rpx; .userinfo { background-color: #FFFFFF; border-radius: 20rpx; } .user-info { display: flex; flex-direction: column; justify-content: center; align-items: center; padding: 30rpx; .avatar { width: 134rpx; height: 134rpx; border-radius: 50%; overflow: hidden; .avatarimg { width: 134rpx; height: 134rpx; } .real { bottom: 0; width: 120rpx; height: 34rpx; } } .name { margin-top: 20rpx; font-size: 32rpx; } .phone { justify-content: start; margin-top: 13rpx; font-size: 30rpx; font-family: PingFang SC; font-weight: 500; color: #ffffff; .green { margin-left: 12rpx; position: relative; width: 100rpx; height: 40rpx; .green-bg { position: absolute; top: 0; left: 0; right: 0; width: 100%; height: 100%; } .green-title { line-height: 30rpx; text-align: center; position: relative; z-index: 10; font-size: 20rpx; font-family: PingFang SC; font-weight: 500; // color: #93794b; color: #fff; } } } .vip { margin-top: 20rpx; position: relative; width: 120rpx; height: 40rpx; .vip-bg { position: absolute; top: 0; left: 0; right: 0; width: 100%; height: 100%; } .vip-title { width: 120rpx; line-height: 40rpx; text-align: center; position: relative; z-index: 10; font-size: 20rpx; font-family: PingFang SC; font-weight: 500; color: #93794b; } } } .sy-box { bottom: 105rpx; height: 148rpx; .sy-item { flex-grow: 1; text-align: center; font-size: 28rpx; font-weight: 500; } .jg { width: 2rpx; height: 68rpx; } } } .my-order { width: 690rpx; margin: 20rpx auto 0; border-radius: 20rpx; } .box-title { line-height: 1; padding: 30rpx; background: #ffffff; .title { font-size: $font-lg; font-weight: bold; } .link { font-size: $font-base - 2rpx; color: $font-color-light; // width: 51rpx; // height: 25rpx; // font-size: 26rpx; // font-family: SourceHanSansCN; // font-weight: 400; // color: #666666; // line-height: 54rpx; // display: inline-block } } // .order{ // margin-top: 70rpx; // } .order-section { @extend %section; padding: 40rpx 0; align-items: center; .order-item { @extend %flex-center; // width: 120rpx; width: 25%; border-radius: 10rpx; font-size: $font-sm; color: $font-color-dark; } .xian { height: 30rpx; width: 1rpx; background: #000000; } .order-num { font-size: $font-sm + 10rpx; margin-bottom: 10rpx; } .iconfont { font-size: 48rpx; margin-bottom: 18rpx; color: #fa436a; } .icon-shouhoutuikuan { font-size: 44rpx; } .icon { height: 88rpx; width: 90rpx; margin-bottom: 18rpx; background-size: 100%; background-repeat: no-repeat; background-position: center; .icon-img { width: 100%; height: 100%; } } .icon1 { height: 50rpx; width: 48rpx; margin-bottom: 18rpx; background-size: 100%; background-repeat: no-repeat; background-position: center; .icon-img { width: 100%; height: 100%; } } } .qd-box { width: 690rpx; height: 210rpx; background: #ffffff; box-shadow: 0px 0px 20rpx 0px rgba(50, 50, 52, 0.06); border-radius: 20rpx; margin: -105rpx auto 30rpx; position: relative; padding: 0 40rpx; font-size: 26rpx; font-family: PingFang SC; font-weight: 500; color: #666666; image { flex-shrink: 0; width: 65rpx; height: 68rpx; } .qd-info { flex-grow: 1; padding-left: 24rpx; line-height: 46rpx; } .qd-btn { width: 190rpx; height: 80rpx; line-height: 80rpx; border-radius: 20px; background: #dc262b; border-radius: 20rpx; text-align: center; font-size: 32rpx; font-family: PingFang SC; font-weight: 500; color: #ffffff; } .qded { background: #e8e8e8; color: #999999; } } .tool-box { padding-top: 30rpx; padding-bottom: 46rpx; width: 690rpx; background: #ffffff; box-shadow: 0px 0px 20rpx 0px rgba(50, 50, 52, 0.06); border-radius: 20rpx; margin: 30rpx auto; flex-wrap: wrap; justify-content: flex-start; align-content: space-around; margin-top: -100rpx; z-index: 10; position: relative; .tool-item { width: 20%; height: 120rpx; flex-shrink: 0; flex-direction: column; align-content: space-between; justify-content: center; font-size: 28rpx; font-family: PingFang SC; font-weight: 500; color: #0c1732; .tool-item-img { width: 68rpx; height: 90rpx; position: relative; flex-shrink: 0; .tool-logo { position: absolute; width: 56rpx; height: 56rpx; top: 0; left: 0; bottom: 0; right: 0; margin: auto; } } .tool-item-name { display: inline-block; font-size: 26rpx; } } } .tool-list { width: 690rpx; margin: auto; background: transparent; .item { background: #ffffff; border-radius: 20rpx; box-shadow: 0px 0px 20rpx 0px rgba(50, 50, 52, 0.06); margin-bottom: 10rpx; } } .popup-box { width: 522rpx; height: 605rpx; background-color: #ffffff; border-radius: 20rpx; position: relative; .img { position: relative; top: -56rpx; left: 0; width: 522rpx; height: 132rpx; display: flex; justify-content: center; image { border-radius: 20rpx 20rpx 0 0; width: 450rpx; height: 132rpx; } } .mian { margin-top: -44rpx; display: flex; flex-direction: column; align-items: center; // padding: 32rpx 32rpx; background-color: #ffffff; border-radius: 0 0 20rpx 20rpx; text-align: center; .delivery { font-size: 40rpx; color: #333333; display: flex; align-items: center; flex-direction: column; .title {} image { margin-top: 48rpx; width: 172rpx; height: 160rpx; } } .nocancel { font-size: 32rpx; color: #333333; margin-top: 14rpx; } .comfirm-box { margin-top: 52rpx; display: flex; // margin-bottom: 32rpx; // justify-content: space-around; .cancel { display: flex; align-items: center; justify-content: center; width: 197rpx; height: 74rpx; border: 1px solid #dcc786; border-radius: 38rpx; font-size: 32rpx; color: #605128; } .comfirm { margin-left: 32rpx; display: flex; align-items: center; justify-content: center; width: 197rpx; height: 74rpx; background: linear-gradient(-90deg, #d1ba77 0%, #f7e8ad 100%); border-radius: 38px; font-size: 32rpx; color: #605128; } } } } .popup { width: 560rpx; padding-bottom: 45rpx; background-color: #ffffff; border-radius: 15rpx; text-align: center; line-height: 1; .popup-dox { position: relative; .popup-logo { margin: -160rpx auto 0; width: 400rpx; height: 200rpx; } } .popup-title { margin-top: 85rpx; font-size: 40rpx; font-family: PingFang SC; font-weight: bold; color: #2a2a2a; text { font-size: 56rpx; color: #e83f30; } } .popup-tip { margin-top: 20rpx; font-size: 28rpx; font-family: PingFang SC; font-weight: 500; color: #8c8c8c; text { color: #e83f30; } } .popup-btn { margin: 58rpx auto 0; width: 270rpx; height: 66rpx; background: #f0c838; border-radius: 34rpx; text-align: center; line-height: 66rpx; font-size: 36rpx; font-family: Source Han Sans CN; font-weight: 500; color: #ffffff; } } .page-btm { background-color: #f5f5f5; font-size: 20rpx; text-align: center; color: #d6d6d8; } </style>