|
|
<template> <view class="container"> <view class="user-section"> <image class="bg" src="/static/img/user-bg.jpg"></image> <view class="user-info-box"> <view class="portrait-box"> <image class="portrait" :src="userInfo.portrait || '/static/img/missing-face.png'"></image> </view> <view class="info-box"> <text class="username">{{userInfo.name || '游客'}}</text> <text class="usercode" @click="checklogin()">编号{{userInfo.usercode || '请登录'}}</text> </view> </view> </view> <view class="cover-container"> <image class="arc" src="/static/img/arc.png"></image> <view class="tj-sction" v-if="showsh"> <view class="tj-item" @click="tochongzhi()"> <text class="num">{{personinfo.yue}}<text v-if="personinfo.djmoney" class="djmoney">冻结:{{personinfo.djmoney}}</text></text> <text>余额</text> </view> <view class="tj-item" @click="tocoupon()"> <text class="num">{{personinfo.yhqnum}}</text> <text>优惠券</text> </view> <view class="tj-item" @click="tojifen()"> <text class="num">{{personinfo.jifen}}</text> <text>积分</text> </view> </view> <view class="order-section"> <view class="order-item" @click="navTo('/pages/orderlist/orderlist?state=0')" hover-class="common-hover" :hover-stay-time="50"> <text class="yticon icon-shouye" style="color: #3883FA;"></text> <text>全部订单</text> </view> <view class="order-item" @click="navTo('/pages/orderlist/orderlist?state=1')" hover-class="common-hover" :hover-stay-time="50"> <text class="yticon icon-daifukuan" style="color: #3883FA;"></text> <text>已确认</text> </view> <view class="order-item" @click="navTo('/pages/orderlist/orderlist?state=2')" hover-class="common-hover" :hover-stay-time="50"> <text class="yticon icon-yishouhuo" style="color: #3883FA;"></text> <text>待确认</text> </view> <view class="order-item" @click="navTo('/pages/orderlist/orderlist?state=3')" hover-class="common-hover" :hover-stay-time="50"> <text class="yticon icon-shouhoutuikuan" style="color: #3883FA;"></text> <text>已取消</text> </view> </view> <!-- 浏览历史 --> <view class="history-section icon"> <view class="sec-header"> <text class="yticon icon-lishijilu"></text> <text v-if="recordlist.length>0">浏览历史</text> <text v-if="recordlist.length==0" @click="tipnomore()">浏览历史</text> <view class="clean" @click="cleanall()" v-if="recordlist.length>0">清除历史</view> </view> <scroll-view scroll-x class="h-list"> <image v-for="(item, index) in recordlist" :key="index" @click="navTo('/pages/product/product?cpid='+item.cpid)" :src="item.img" mode="aspectFill"></image> </scroll-view> <list-cell icon="icon-shoucang_xuanzhongzhuangtai" iconColor="#54b4ef" title="我的收藏" @eventClick="navTo('/pages/user/keep')"></list-cell> <view class="kf"> <view class="kfleft"> <image src="../../static/img/kefu.png"></image> </view> <view class="kfright"> <button class="kfbt" open-type="contact" >联系客服</button> </view> </view> <list-cell icon="icon-shezhi1" v-if="userInfo.openid" iconColor="#e07472" title="退出" border="" @eventClick="logout()"></list-cell> <list-cell icon="icon-shezhi1" v-if="!userInfo.openid" iconColor="#e07472" title="登录" border="" @eventClick="checklogin()"></list-cell> </view> </view> </view> </template> <script> // 功能列表小封装
import * as XLSX from '@/static/excel.js'; import listCell from '@/components/mix-list-cell'; let startY = 0, moveY = 0, pageAtTop = true; export default { components: { listCell }, data(){ return { coverTransform: 'translateY(0px)', coverTransition: '0s', moving: false, userInfo:[], recordlist:[], showsh:0, personinfo:[] } }, onShow(){ this.baseset(); let getuserinfo=uni.getStorageSync('userinfo'); //console.log(getuserinfo);
if(getuserinfo!=''){ this.getread_recordlsit(getuserinfo.uid); this.userInfo=getuserinfo; } this.userinfo(); }, onLoad(){ }, // #ifndef MP
onNavigationBarButtonTap(e) { const index = e.index; // if (index === 0) {
// this.navTo('/pages/set/set');
// }else if(index === 1){
// // #ifdef APP-PLUS
// const pages = getCurrentPages();
// const page = pages[pages.length - 1];
// const currentWebview = page.$getAppWebview();
// currentWebview.hideTitleNViewButtonRedDot({
// index
// });
// // #endif
// uni.navigateTo({
// url: '/pages/notice/notice'
// })
// }
}, // #endif
computed: { }, methods: { async baseset() { let reinfo=await this.$api.baseset({action:'baseset'}); this.showsh=reinfo.code; }, async userinfo() { let getuserinfo=uni.getStorageSync('userinfo'); let reinfo=await this.$api.userinfo({action:'userinfo',uid:getuserinfo.uid,aid:getuserinfo.aid}); this.personinfo=reinfo.data; }, //获取浏览列表
async getread_recordlsit(uid) { let reinfo=await this.$api.getread_recordlsit({action:'getread_recordlsit',uid:uid}); this.recordlist=reinfo.data; }, //清空浏览列表
async cleanrecord() { let reinfo=await this.$api.cleanrecord({action:'cleanrecord',uid:this.userInfo.uid}); if(reinfo.code==1){ this.getread_recordlsit() } uni.hideLoading(); }, //清空浏览历史
cleanall(){ let t=this; t.checklogin(); uni.showModal({ title: '温馨提示', content: '是否清空浏览历史记录?', success: function (res) { if (res.confirm) { uni.showLoading({ title:'正在清除...' }) t.cleanrecord() } else if (res.cancel) { //console.log('用户点击取消');
} } }); }, tipnomore(){ uni.showToast({ title:'暂无浏览历史',icon:'none' }) }, navTo(url){ let getuserinfo=uni.getStorageSync('userinfo'); if(getuserinfo==''){ // uni.navigateTo({
// url:'/pages/user/checklogin'
// })
uni.navigateTo({ url:'/pages/user/login' }) }else{ uni.navigateTo({ url }) } }, //点击积分
tojifen(){ let getuserinfo=uni.getStorageSync('userinfo'); if(getuserinfo==''){ uni.navigateTo({ url:'/pages/user/login' }) }else{ uni.navigateTo({ url:'/pages/user/jifen' }) } }, //点击余额
tochongzhi(){ let getuserinfo=uni.getStorageSync('userinfo'); if(getuserinfo==''){ uni.navigateTo({ url:'/pages/user/login' }) }else{ uni.navigateTo({ url:'/pages/user/chongzhi?yue='+this.personinfo.yue }) } }, tocoupon(){ let getuserinfo=uni.getStorageSync('userinfo'); if(getuserinfo==''){ uni.navigateTo({ url:'/pages/user/login' }) }else{ uni.navigateTo({ url:'/pages/coupon/coupon' }) } }, /** * 会员卡下拉和回弹 * 1.关闭bounce避免ios端下拉冲突 * 2.由于touchmove事件的缺陷(以前做小程序就遇到,比如20跳到40,h5反而好很多),下拉的时候会有掉帧的感觉 * transition设置0.1秒延迟,让css来过渡这段空窗期 * 3.回弹效果可修改曲线值来调整效果,推荐一个好用的bezier生成工具 http://cubic-bezier.com/
*/ coverTouchstart(e){ if(pageAtTop === false){ return; } this.coverTransition = 'transform .1s linear'; startY = e.touches[0].clientY; }, coverTouchmove(e){ moveY = e.touches[0].clientY; let moveDistance = moveY - startY; if(moveDistance < 0){ this.moving = false; return; } this.moving = true; if(moveDistance >= 80 && moveDistance < 100){ moveDistance = 80; } if(moveDistance > 0 && moveDistance <= 80){ this.coverTransform = `translateY(${moveDistance}px)`; } }, coverTouchend(){ if(this.moving === false){ return; } this.moving = false; this.coverTransition = 'transform 0.3s cubic-bezier(.21,1.93,.53,.64)'; this.coverTransform = 'translateY(0px)'; }, checklogin(){ let getuserinfo=uni.getStorageSync('userinfo'); if(getuserinfo==''){ // uni.navigateTo({
// url:'/pages/user/checklogin'
// })
uni.navigateTo({ url:'/pages/user/login' }) } }, logout(){ uni.showModal({ title: '温馨提示', content: '请问是否退出登录', success: function (res) { if (res.confirm) { uni.showToast({ title:'已退出' }) uni.clearStorage('userinfo'); uni.reLaunch({ url:'/pages/index/index' }) } else if (res.cancel) { } } }); } } } </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: 10upx; }
.user-section{ height: 520upx; padding: 100upx 30upx 0; position:relative; .bg{ position:absolute; left: 0; top: 0; width: 100%; height: 100%; filter: blur(1px); opacity: .7; } } .user-info-box{ height: 180upx; display:flex; align-items:center; position:relative; z-index: 1; .portrait{ width: 130upx; height: 130upx; border:5upx solid #fff; border-radius: 50%; } .username{ font-size: $font-lg + 6upx; color: $font-color-dark; margin-left: 20upx; } .usercode{ padding: 8rpx; border-radius: 15rpx; background-color: #4399FC; color: #fff; font-size: 35rpx; position: relative; left: 20rpx; } }
.vip-card-box{ display:flex; flex-direction: column; color: #f7d680; height: 240upx; background: linear-gradient(left, rgba(0,0,0,.7), rgba(0,0,0,.8)); border-radius: 16upx 16upx 0 0; overflow: hidden; position: relative; padding: 20upx 24upx; .card-bg{ position:absolute; top: 20upx; right: 0; width: 380upx; height: 260upx; } .b-btn{ position: absolute; right: 20upx; top: 16upx; width: 132upx; height: 40upx; text-align: center; line-height: 40upx; font-size: 22upx; color: #36343c; border-radius: 20px; background: linear-gradient(left, #f9e6af, #ffd465); z-index: 1; } .tit{ font-size: $font-base+2upx; color: #f7d680; margin-bottom: 28upx; .yticon{ color: #f6e5a3; margin-right: 16upx; font-size: $font-base+18upx; } } .e-b{ font-size: $font-sm; color: #d8cba9; margin-top: 10upx; } } .cover-container{ background: $page-color-base; margin-top: -150upx; padding: 0 30upx; position:relative; background: #f5f5f5; padding-bottom: 20upx; .arc{ position:absolute; left: 0; top: -34upx; width: 100%; height: 36upx; } } .tj-sction{ @extend %section; .tj-item{ @extend %flex-center; flex-direction: column; height: 140upx; font-size: $font-sm; color: #75787d; } .num{ font-size: $font-lg; color: $font-color-dark; margin-bottom: 8upx; } } .order-section{ @extend %section; padding: 28upx 0; margin-top: 20upx; .order-item{ @extend %flex-center; width: 120upx; height: 120upx; border-radius: 10upx; font-size: $font-sm; color: $font-color-dark; } .yticon{ font-size: 48upx; margin-bottom: 18upx; color: #fa436a; } .icon-shouhoutuikuan{ font-size:44upx; } } .history-section{ padding: 30upx 0 0; margin-top: 20upx; background: #fff; border-radius:10upx; .sec-header{ display:flex; align-items: center; font-size: $font-base; color: $font-color-dark; line-height: 40upx; margin-left: 30upx; .yticon{ font-size: 44upx; color: #5eba8f; margin-right: 16upx; line-height: 40upx; } } .h-list{ white-space: nowrap; padding: 30upx 30upx 0; image{ display:inline-block; width: 160upx; height: 160upx; margin-right: 20upx; border-radius: 10upx; } } } .clean{ position: absolute; right: 45upx; padding: 3upx 8upx; background-color: #DD524D; color: #fff; border-radius: 10upx; font-size: $font-base; } .kf{ display: flex; padding: 20upx $page-row-spacing; line-height:60upx; position:relative; align-items:center; image{ left: 90upx; width: 50upx; height: 50upx; } .kfright{ width: 30%; } .kfbt{ font-size: $font-base; background: none; position: relative; left: -35upx; color: $font-color-dark; } .kfbt::after {border: 0;} } /* 自定义样式,非组件 */ .myitem{ display: flex; align-items:center; padding: 20upx $page-row-spacing; image{ left: 90upx; width: 40upx; height: 40upx; } .myitemright{ width: 80%; font-size: $font-sm+2upx; color: $font-color-dark; margin-left: 15upx; margin-bottom: 10upx; } } </style>
|