<template> <view class="container"> <view class="vheigh"></view> <view class="top-image"> <image src="../../static/img/user-top.png" mode=""></image> </view> <view class="" style="height: 150rpx;"></view> <view class="user-box"> <view class="user-info flex"> <image class="avatar" :src="userInfo.avatar" mode="" v-if="userInfo.avatar"></image> <image class="avatar" src="../../static/error/missing-face.png" mode="" v-else></image> <view class="user-name-id"> <view class="user-name clamp2">{{userInfo.nickname || '游客'}}</view> <view class="user-uid">邀请码:{{userInfo.uid || ''}}</view> </view> </view> <view class="main flex"> <view class="oitem" @click="navTo('/pages/user/award')"> <view class="oitem-val"> {{ userInfo.brokerage_price || '0.00' }} </view> <view class="oitem-font">我的佣金</view> </view> <view class="oitem" @click="navTo('/pages/user/scoreAccumulate')"> <view class="oitem-val"> {{ userInfo.integral || '0.00' }} </view> <view class="oitem-font">我的积分</view> </view> <view class="oitem" @click="navTo('/pages/user/yue')"> <view class="oitem-val"> {{userInfo.now_money || '0.00'}} </view> <view class="oitem-font">我的余额</view> </view> </view> <view class="u-set" v-if="userInfo && userInfo.vip_name"> <image src="../../static/icon/vip.png" mode="widthFix"></image> <view class="u-set-tit"> {{userInfo.vip_name}} </view> </view> </view> <view class="main-box"> <view class="title flex" @click="navTo('/pages/order/order?state=0')"> <view class="title-left"> <view class="title-font">我的订单</view> </view> <view class="title-right-wrap"> 全部<image class="title-right" src="../../static/icon/back.png" mode=""></image> </view> </view> <view class="main flex"> <view class="oitem" @click="navTo('/pages/order/order?state=0')"> <image class="oitem-image" src="../../static/icon/o1.png" mode=""></image> <view class="oitem-font">待付款</view> </view> <view class="oitem" @click="navTo('/pages/order/order?state=1')"> <image class="oitem-image" src="../../static/icon/o2.png" mode=""></image> <view class="oitem-font">待发货</view> </view> <view class="oitem" @click="navTo('/pages/order/order?state=2')"> <image class="oitem-image" src="../../static/icon/o3.png" mode=""></image> <view class="oitem-font">待收货</view> </view> <view class="oitem" @click="navTo('/pages/order/order?state=3')"> <image class="oitem-image" src="../../static/icon/o4.png" mode=""></image> <view class="oitem-font">已完成</view> </view> </view> </view> <view class="user-list-wrap"> <view class="user-list flex" @click="navTo('/pages/user/shareQrCode')"> <image src="../../static/icon/user_share.png" mode="" class="left-img"></image> <view class=""> 邀请好友 </view> <image src="../../static/icon/back.png" mode="" class="right-img"></image> </view> <view class="user-list flex" @click="navTo('/pages/user/team')" style="border-radius: 20rpx 20rpx 0 0;"> <image src="../../static/icon/gn1.png" mode="" class="left-img"></image> <view class=""> 我的团队 </view> <image src="../../static/icon/back.png" mode="" class="right-img"></image> </view> <view class="user-list flex" @click="navTo('/pages/user/favorites')" style="border-radius: 20rpx 20rpx 0 0;"> <image src="../../static/icon/gift.png" mode="" class="left-img"></image> <view class=""> 我的收藏 </view> <image src="../../static/icon/back.png" mode="" class="right-img"></image> </view> <view class="user-list flex" @click="navTo('/pages/set/address')"> <image src="../../static/icon/u2.png" mode="" class="left-img"></image> <view class=""> 收货地址 </view> <image src="../../static/icon/back.png" mode="" class="right-img"></image> </view> <view class="user-list flex" @click="openKf()" style="border-radius:0 0 20rpx 20rpx;"> <image src="../../static/icon/u3.png" mode="" class="left-img"></image> <view class=""> 客服 </view> <image src="../../static/icon/back.png" mode="" class="right-img"></image> </view> <view class="user-list flex" @click="navTo('/pages/set/userinfo')"> <image src="../../static/icon/u4.png" mode="" class="left-img"></image> <view class=""> 设置 </view> <image src="../../static/icon/back.png" mode="" class="right-img"></image> </view> </view> <view class="" style="height: 20rpx;"></view> <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> </view> </template> <script> 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, check, getUser } 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 { current: 2, id: '', //是否已签到 store_name: '', achievement: '', code: '', text: 'shxsophina' ,//客服微信 userInfo:{}, }; }, onShow() { // 判断是否已经登录 // if (this.hasLogin) { // this.loadBaseData(); // } this.loadBaseData(); }, filters: { phone(e) { var subStr1 = e.substr(0, 3); var subStr2 = e.substr(e.length - 4, 4); var subStr = subStr1 + '...' + subStr2; e = subStr; return e; } }, 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', ['hasLogin']) }, methods: { ...mapMutations('user', ['setUserInfo']), qhx() { check({ verify_code: this.code, is_confirm: 1 //1是核销,0是查看 }) .then(e => { this.$api.msg('核销成功'); this.close(); }) .catch(e => { console.log(e); }); }, phone(e) { console.log(e, 'e++++') if (e.length > 10) { var subStr1 = e.substr(0, 3); var subStr2 = e.substr(e.length - 4, 4); var subStr = subStr1 + '...' + subStr2; e = subStr; return e; } else { return false } }, sao() { let obj = this; // #ifndef H5 uni.scanCode({ success(e) { obj.code = e.result; obj.$refs.popuphx.open(); console.log(obj.$refs.popuphx); } }); // #endif }, comfirm(text) { console.log(text); const result = this.uniCopy(text); if (result === false) { uni.showToast({ title: '不支持' }); } else { uni.showToast({ title: '复制成功', icon: 'none' }); } this.$refs.popupkf.close(); }, uniCopy(content) { /** * 小程序端 和 app端的复制逻辑 */ //#ifndef H5 uni.setClipboardData({ data: content, success: function() { console.log('success'); return true; } }); //#endif /** * H5端的复制逻辑 */ // #ifdef H5 if (!document.queryCommandSupported('copy')) { //为了兼容有些浏览器 queryCommandSupported 的判断 // 不支持 return false; } let textarea = document.createElement('textarea'); textarea.value = content; textarea.readOnly = 'readOnly'; document.body.appendChild(textarea); textarea.select(); // 选择对象 textarea.setSelectionRange(0, content.length); //核心 let result = document.execCommand('copy'); // 执行浏览器复制命令 textarea.remove(); return result; // #endif }, // 加载初始数据 loadBaseData() { this.getUser() getUserInfo({}) .then(({ data }) => { this.setUserInfo(data); }) .catch(e => { console.log(e); }); }, getUser() { getUser({}).then(res => { this.userInfo = res.data; }) }, /** * 统一跳转接口,拦截未登录路由 * navigator标签现在默认没有转场动画,所以用view */ navTo(url) { console.log(url); if (!this.hasLogin) { // 保存地址 saveUrl(); // 登录拦截 interceptor(); } else { uni.navigateTo({ url }); } }, close() { this.$refs.popuphx.close(); this.code = ''; }, // 打开客服 openKf() { this.$refs.popupkf.open(); }, // 关闭客服 cancel() { this.$refs.popupkf.close(); }, // 打开绑定 open() { this.$refs.gspass.open(); }, cast() { set_waiter({ uid: this.id }) .then(e => { this.$api.msg('绑定成功'); this.$refs.gspass.close(); this.id = ''; }) .catch(err => { this.$refs.gspass.close(); this.id = ''; }); }, cancelpass() { this.$refs.gspass.close(); this.id = ''; } } }; </script> <style lang="scss"> .container, page { min-height: 100%; height: auto; background-color: $page-color-base; } .vheigh { height: var(--status-bar-height); background-color: $base-color; } .top-image { position: absolute; top: 0; left: 0; right: 0; height: 300rpx; image { width: 100%; height: 100%; } } .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; 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; } } } } .user-box { position: relative; z-index: 2; width: 690rpx; margin: 0 auto; /* #ifdef MP-WEIXIN */ margin: -100rpx auto 0; /* #endif */ background: #ffffff; box-shadow: 0px 4rpx 13rpx 0px rgba(229, 229, 229, 0.46); border-radius: 20rpx; display: flex; flex-direction: column; align-items: center; padding: 54rpx 0 30rpx; line-height: 1; position: relative; .main { width: 100%; padding: 50rpx 0 10rpx; .oitem:nth-child(2n) { border-left: 1px solid #333333; border-right: 1px solid #333333; } .oitem { width: 33%; display: flex; flex-direction: column; align-items: center; .oitem-image { height: 40rpx; width: 42rpx; } .oitem-val { font-size: 36rpx; font-weight: bold; color: #333333; } .oitem-font { margin-top: 20rpx; font-size: 24rpx; font-weight: 500; color: #333333; } } } .u-set { flex-shrink: 0; position: absolute; top: 85rpx; right: 0rpx; height: 56rpx; border-bottom-left-radius: 100rpx; border-top-left-radius: 100rpx; background-color: #d5b861; image { width: 178rpx; height: 56rpx; position: relative; text-align: center; top: 0; left: 0; } .u-set-tit { position: absolute; top: 0; right: 0; width: 125rpx; text-align: center; height: 56rpx; line-height: 56rpx; font-size: 22rpx; padding-right: 10rpx; color: #93794B; } } .user-info { justify-content: flex-start; width: 100%; padding-left: 40rpx; .avatar { border-radius: 50%; width: 132rpx; height: 132rpx; background-color: #eee; margin-right: 18rpx; } .user-uid { padding-top: 10rpx; font-size: 24rpx; font-weight: 500; color: #666666; } } .user-name { width: 300rpx; margin-top: 14rpx; font-size: 30rpx; font-family: PingFang SC; font-weight: bold; color: #333333; } .user-shop { margin-top: 10rpx; display: flex; justify-content: flex-start; align-items: center; .user-shop-item { position: relative; margin: 0 10rpx; width: 105rpx; height: 42rpx; .user-shop-icon { position: absolute; top: 0; left: 0; right: 0; width: 105rpx; height: 42rpx; } .user-shopname { padding-left: 18rpx; position: relative; z-index: 2; font-size: 20rpx; font-family: PingFang SC; font-weight: 500; color: #977843; line-height: 42rpx; text-align: center; } } } // .user-shop { // margin-top: 10rpx; // display: flex; // justify-content: center; // align-items: center; // .user-shop-icon { // width: 22rpx; // height: 22rpx; // } // .user-shopname { // margin-left: 6rpx; // font-size: 20rpx; // font-family: PingFang SC; // font-weight: 500; // color: #ff7e3e; // } // } .user-money { width: 100%; margin-top: 50rpx; justify-content: center; .user-money-item { width: 50%; display: flex; flex-direction: column; justify-content: center; align-items: center; .user-money-num { font-size: 36rpx; font-family: PingFang SC; font-weight: bold; color: #333333; } .user-money-font { margin-top: 20rpx; font-size: 22rpx; font-family: PingFang SC; font-weight: 500; color: #666666; } } .user-xian { width: 1px; height: 77rpx; background: #eeeeee; } } } .main-box { margin: 20rpx 30rpx; background: #ffffff; box-shadow: 0px 4rpx 14rpx 0px rgba(229, 229, 229, 0.46); border-radius: 20rpx; .title { display: flex; justify-content: space-between; align-items: center; padding: 24rpx; // border-bottom: 1px solid #eeeeee; .title-left { display: flex; align-items: center; image { width: 35rpx; } .title-icon { width: 32rpx; height: 32rpx; } .title-font { margin-left: 20rpx; font-size: 30rpx; font-weight: bold; color: #333333; } } .title-right-wrap { font-size: 26rpx; font-weight: 400; color: #666666; .title-right { margin-left: 10rpx; width: 14rpx; height: 24rpx; } } } .main { padding: 50rpx 0 30rpx; .jg { width: 1px; height: 100rpx; background: #eeeeee; } .oitem { width: 33%; display: flex; flex-direction: column; align-items: center; .oitem-image { height: 40rpx; width: 42rpx; } .oitem-val { font-size: 36rpx; font-weight: bold; color: #333333; } .oitem-font { margin-top: 20rpx; font-size: 24rpx; font-family: PingFang SC; font-weight: 500; color: #333333; } } } } .tool-list { width: 690rpx; margin: 20rpx auto 0; background: #ffffff; box-shadow: 0px 0px 20rpx 0px rgba(50, 50, 52, 0.06); border-radius: 20rpx; } .psw-wrapper { width: 548rpx; padding: 20rpx 0; background-color: #ffffff; border-radius: 15rpx 15rpx; .psw-title { width: 100%; font-size: 35rpx; padding: 0 0 40rpx; text-align: center; font-weight: 800; } .psw-content { width: 100%; font-size: 32rpx; text-align: center; } .psw-price { font-weight: bold; font-size: 68rpx; text-align: center; padding-top: 10rpx; } .psw-jg { height: 1px; width: 500rpx; background-color: #eee; margin: auto; } .psw-paytype { justify-content: space-between; padding: 10rpx 25rpx 30rpx; font-size: 26rpx; } .psw-ipt { display: block; background-color: #dce3ed; height: 90rpx; width: 464rpx; padding-left: 30rpx; margin: 0 auto; font-size: 80rpx; } .psw-btn text { display: inline-block; text-align: center; width: 50%; padding-top: 29rpx; font-size: 35rpx; } .psw-qd { color: #ff4c4c; } } .hx-wrapper { width: 536rpx; height: 630rpx; position: relative; // background-color: #fff; .hx-img { width: 536rpx; height: 281rpx; image { width: 536rpx; height: 281rpx; } } .hx-close { position: absolute; left: 243rpx; bottom: -80rpx; width: 52rpx; height: 52rpx; image { width: 52rpx; height: 52rpx; } } .hx-body { width: 536rpx; height: 349rpx; background-color: #fff; border-radius: 0 0 10rpx 10rpx; .hx-title { width: 536rpx; font-size: 36rpx; font-weight: 500; color: #333333; line-height: 1; padding-top: 42rpx; text-align: center; } input { width: 439rpx; height: 68rpx; background: #dbf3e9; border-radius: 10rpx; margin: 39rpx auto 0; padding-left: 26rpx; .hx-placeholder { font-size: 26rpx; font-weight: 500; color: #ff4c4c; } } .hx-btn { margin: 44rpx auto 0; width: 353rpx; height: 71rpx; background: #ff4c4c; border-radius: 34rpx; font-size: 36rpx; font-weight: 500; color: #f8f9f9; line-height: 71rpx; text-align: center; } } } .user-list { width: 691rpx; height: 104rpx; background: #FFFFFF; // box-shadow: 0px 0px 20rpx 0px rgba(50, 50, 52, 0.06); // border-radius: 28rpx; margin: auto; padding: 0 25rpx; .left-img { width: 40rpx; height: 40rpx; } view { padding-left: 20rpx; flex-grow: 1; font-size: 29rpx; font-weight: bold; color: #5D5D5D; } .right-img { width: 13rpx; height: 23rpx; } } .user-list-wrap { margin: 20rpx 30rpx; background: #FFFFFF; box-shadow: 0px 4rpx 13rpx 0px rgba(229, 229, 229, 0.46); border-radius: 20rpx; } .yexq { margin-top: 20rpx; width: 100%; font-size: 28rpx; font-weight: bold; color: #333333; justify-content: space-between; padding: 0 33rpx; image { margin-right: 10rpx; } .yexq-item { width: 50%; } .huer { justify-content: flex-start; } .qianger { justify-content: flex-end; } } </style>