1. 会员等级背景图去掉校验 2. 当查询不到会员等级是,按无会员等级展示 3. 删除商城首页冗余配置在index中的引用 4. 换绑推广人时,计算上一个推广人的推广人数 5. pc后台清除推广人时,更新推广人数量 6. 保证砍价金额最小为0.01 7. 修复商品删除时购物车关联删除 8. 删除商品问题修复 9. 运费模板——指定包邮,包邮数量类型修改 10. 签到错误修复 11. 修复我的优惠券只查询20条的问题 12. 文章列表修复 13. 拼团商品详情页数据统计显示问题修复 14. PC后台,账户详情,持有优惠券列表修复 15. 支付查询参数修复 16. 修复过期优惠券可以重复领取 17. 订单邮费切换地址重复计算修复 18. 判断是否在指定包邮区域内 必须满足件数 + 金额 才能包邮 19. 支付页面,切换tab,金额计算问题修复 20. 物流模板新增、编辑——修复 21. 去除线下邮费的影响 22. 订单运费计算重写 23. 下单页面到店自提合计金额不应该计算商品邮费 24. 新人券领取后,部分使用时间为空——修复
614 lines
14 KiB
Vue
614 lines
14 KiB
Vue
<template>
|
|
<view class="new-users">
|
|
<view class="head">
|
|
<view class="user-card">
|
|
<view class="bg"></view>
|
|
<view class="user-info">
|
|
<image class="avatar" :src='userInfo.avatar' v-if="userInfo.avatar" @click="goEdit()"></image>
|
|
<image v-else class="avatar" src="/static/images/f.png" mode="" @click="goEdit()"></image>
|
|
<view class="info">
|
|
<!-- #ifdef MP -->
|
|
<view class="name" v-if="!userInfo.uid" @tap="openAuto">
|
|
请点击授权
|
|
</view>
|
|
<!-- #endif -->
|
|
<!-- #ifdef H5 -->
|
|
<view class="name" v-if="!userInfo.uid && isWeixin" @tap="openAuto">
|
|
请点击授权
|
|
</view>
|
|
<!-- #endif -->
|
|
<view class="name" v-if="userInfo.uid">
|
|
{{userInfo.nickname}}
|
|
<view class="vip" v-if="userInfo.vip">
|
|
<image :src="userInfo.vipIcon" alt="">
|
|
<view style="margin-left: 10rpx;" class="vip-txt">{{userInfo.vipName || ''}}</view>
|
|
</view>
|
|
</view>
|
|
<view class="num" v-if="userInfo.phone" @click="goEdit()">
|
|
<view class="num-txt">{{userInfo.phone}}</view>
|
|
<view class="icon">
|
|
<image src="/static/images/edit.png" mode=""></image>
|
|
</view>
|
|
</view>
|
|
<view class="phone" v-if="!userInfo.phone && isLogin" @tap="bindPhone">绑定手机号</view>
|
|
</view>
|
|
</view>
|
|
<view class="num-wrapper">
|
|
<view class="num-item" @click="goMenuPage('/pages/users/user_money/index')">
|
|
<text class="num">{{userInfo.nowMoney?Number(userInfo.nowMoney).toFixed(2):0}}</text>
|
|
<view class="txt">余额</view>
|
|
</view>
|
|
<view class="num-item" @click="goMenuPage('/pages/users/user_integral/index')">
|
|
<text class="num">{{userInfo.integral || 0}}</text>
|
|
<view class="txt">积分</view>
|
|
</view>
|
|
<view class="num-item" @click="goMenuPage('/pages/users/user_coupon/index')">
|
|
<text class="num">{{userInfo.couponCount || 0}}</text>
|
|
<view class="txt">优惠券</view>
|
|
</view>
|
|
</view>
|
|
<view class="sign" @click="goSignIn">签到</view>
|
|
</view>
|
|
<view class="order-wrapper">
|
|
<view class="order-hd flex">
|
|
<view class="left">订单中心</view>
|
|
<navigator class="right flex" hover-class="none" url="/pages/users/order_list/index" open-type="navigate">
|
|
查看全部
|
|
<text class="iconfont icon-xiangyou"></text>
|
|
</navigator>
|
|
</view>
|
|
<view class="order-bd">
|
|
<block v-for="(item,index) in orderMenu" :key="index">
|
|
<navigator class="order-item" hover-class="none" :url="item.url">
|
|
<view class="pic">
|
|
<image :src="item.img" mode=""></image>
|
|
<text class="order-status-num" v-if="item.num > 0">{{ item.num }}</text>
|
|
</view>
|
|
<view class="txt">{{item.title}}</view>
|
|
</navigator>
|
|
</block>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<!-- 轮播 -->
|
|
<view class="slider-wrapper" v-if="imgUrls.length>0">
|
|
<swiper indicator-dots="true" :autoplay="autoplay" :circular="circular" :interval="interval" :duration="duration"
|
|
indicator-color="rgba(255,255,255,0.6)" indicator-active-color="#fff">
|
|
<block v-for="(item,index) in imgUrls" :key="index">
|
|
<swiper-item>
|
|
<image :src="item.pic" class="slide-image" @click="navito(item.url)"></image>
|
|
</swiper-item>
|
|
</block>
|
|
</swiper>
|
|
</view>
|
|
<!-- 会员菜单 -->
|
|
<view class="user-menus" style="margin-top: 20rpx;">
|
|
<block v-for="(item,index) in MyMenus" :key="index">
|
|
<navigator class="item" :url="item.url" hover-class="none" v-if="!(item.url =='/pages/service/index' || (item.url =='/pages/users/user_spread_user/index' && !userInfo.isPromoter))">
|
|
<view class="left">
|
|
<image :src="item.pic"></image>
|
|
<text>{{item.name}}</text>
|
|
</view>
|
|
<view class="iconfont icon-xiangyou"></view>
|
|
</navigator>
|
|
</block>
|
|
<!-- #ifdef H5 -->
|
|
<view class="item" @click="kefuClick">
|
|
<view class="left">
|
|
<image :src="servicePic"></image>
|
|
<text>联系客服</text>
|
|
</view>
|
|
<view class="iconfont icon-xiangyou"></view>
|
|
</view>
|
|
<!-- #endif -->
|
|
<!-- #ifdef MP -->
|
|
<button class="item" open-type='contact' hover-class='none'>
|
|
<view class="left">
|
|
<image :src="servicePic"></image>
|
|
<text>联系客服</text>
|
|
</view>
|
|
<view class="iconfont icon-xiangyou"></view>
|
|
</button>
|
|
<!-- #endif -->
|
|
</view>
|
|
<img src="/static/images/support.png" alt="" class='support'>
|
|
<!-- #ifdef MP -->
|
|
<!-- <authorize @onLoadFun="onLoadFun" :isAuto="isAuto" :isShowAuth="isShowAuth" @authColse="authColse"></authorize> -->
|
|
<!-- #endif -->
|
|
</view>
|
|
</template>
|
|
<script>
|
|
import {
|
|
getMenuList,
|
|
getUserInfo
|
|
// setVisit
|
|
} from '@/api/user.js';
|
|
import {
|
|
orderData
|
|
} from '@/api/order.js';
|
|
import {
|
|
toLogin
|
|
} from '@/libs/login.js';
|
|
import {
|
|
mapGetters
|
|
} from "vuex";
|
|
// #ifdef H5
|
|
import Auth from '@/libs/wechat';
|
|
// #endif
|
|
// #ifdef MP
|
|
import authorize from '@/components/Authorize';
|
|
// #endif
|
|
const app = getApp();
|
|
export default {
|
|
components: {
|
|
// #ifdef MP
|
|
authorize
|
|
// #endif
|
|
},
|
|
computed: mapGetters(['isLogin']),
|
|
data() {
|
|
return {
|
|
orderMenu: [{
|
|
img: '/static/images/order1.png',
|
|
title: '待付款',
|
|
url: '/pages/users/order_list/index?status=0',
|
|
num: 0
|
|
},
|
|
{
|
|
img: '/static/images/order2.png',
|
|
title: '待发货',
|
|
url: '/pages/users/order_list/index?status=1',
|
|
num: 0
|
|
},
|
|
{
|
|
img: '/static/images/order3.png',
|
|
title: '待收货',
|
|
url: '/pages/users/order_list/index?status=2',
|
|
num: 0
|
|
},
|
|
{
|
|
img: '/static/images/order4.png',
|
|
title: '待评价',
|
|
url: '/pages/users/order_list/index?status=3',
|
|
num: 0
|
|
},
|
|
{
|
|
img: '/static/images/order5.png',
|
|
title: '售后/退款',
|
|
url: '/pages/users/user_return_list/index',
|
|
num: 0
|
|
},
|
|
],
|
|
imgUrls: [],
|
|
userMenu: [],
|
|
autoplay: true,
|
|
circular: true,
|
|
interval: 3000,
|
|
duration: 500,
|
|
isAuto: false, //没有授权的不会自动授权
|
|
isShowAuth: false, //是否隐藏授权
|
|
orderStatusNum: {},
|
|
userInfo: {},
|
|
MyMenus: [],
|
|
wechatUrl: [],
|
|
servicePic: '',
|
|
// #ifdef H5
|
|
isWeixin: Auth.isWeixin()
|
|
//#endif
|
|
}
|
|
},
|
|
onLoad() {
|
|
let that = this;
|
|
that.$set(that, 'MyMenus', app.globalData.MyMenus);
|
|
console.log('user页面',that.isLogin)
|
|
if (that.isLogin == false) {
|
|
// #ifdef H5 || APP-PLUS
|
|
toLogin()
|
|
// #endif
|
|
}
|
|
},
|
|
onShow: function() {
|
|
let that = this;
|
|
if (that.isLogin) {
|
|
this.getUserInfo();
|
|
this.getMyMenus();
|
|
// this.setVisit();
|
|
this.getOrderData();
|
|
}else{
|
|
toLogin();
|
|
}
|
|
},
|
|
methods: {
|
|
// 记录会员访问
|
|
// setVisit(){
|
|
// setVisit({
|
|
// url:'/pages/user/index'
|
|
// }).then(res=>{})
|
|
// },
|
|
navito(e){
|
|
window.location.href = 'https://' + e;
|
|
},
|
|
kefuClick(){
|
|
location.href = this.wechatUrl[0].wap_url;
|
|
},
|
|
getOrderData(){
|
|
let that = this;
|
|
orderData().then(res=>{
|
|
that.orderMenu.forEach((item, index) => {
|
|
switch (item.title) {
|
|
case '待付款':
|
|
item.num = res.data.unPaidCount
|
|
break
|
|
case '待发货':
|
|
item.num = res.data.unShippedCount
|
|
break
|
|
case '待收货':
|
|
item.num = res.data.receivedCount
|
|
break
|
|
case '待评价':
|
|
item.num = res.data.evaluatedCount
|
|
break
|
|
case '售后/退款':
|
|
item.num = res.data.refundCount
|
|
break
|
|
}
|
|
})
|
|
that.$set(that,'orderMenu',that.orderMenu);
|
|
})
|
|
},
|
|
// 打开授权
|
|
openAuto() {
|
|
console.log('点击事件','lala')
|
|
toLogin();
|
|
},
|
|
// 授权回调
|
|
onLoadFun() {
|
|
this.getUserInfo();
|
|
this.getMyMenus();
|
|
// this.setVisit();
|
|
this.getOrderData();
|
|
},
|
|
Setting: function() {
|
|
uni.openSetting({
|
|
success: function(res) {
|
|
console.log(res.authSetting)
|
|
}
|
|
});
|
|
},
|
|
// 授权关闭
|
|
authColse: function(e) {
|
|
this.isShowAuth = e
|
|
},
|
|
// 绑定手机
|
|
bindPhone() {
|
|
uni.navigateTo({
|
|
url: '/pages/users/user_phone/index'
|
|
})
|
|
},
|
|
/**
|
|
* 获取个人用户信息
|
|
*/
|
|
getUserInfo: function() {
|
|
const _app = getApp();
|
|
let that = this;
|
|
getUserInfo().then(res => {
|
|
that.userInfo = res.data;
|
|
that.$store.commit("SETUID", res.data.uid);
|
|
});
|
|
},
|
|
/**
|
|
*
|
|
* 获取个人中心图标
|
|
*/
|
|
getMyMenus: function() {
|
|
let that = this;
|
|
if (this.MyMenus.length) return;
|
|
getMenuList().then(res => {
|
|
that.$set(that, 'MyMenus', res.data.routine_my_menus);
|
|
that.wechatUrl = res.data.routine_my_menus.filter((item) => {
|
|
return item.url.indexOf('service') !== -1
|
|
})
|
|
res.data.routine_my_menus.map((item) => {
|
|
if(item.url.indexOf('service') !==-1) that.servicePic = item.pic
|
|
})
|
|
that.imgUrls = res.data.routine_my_banner
|
|
});
|
|
},
|
|
// 编辑页面
|
|
goEdit() {
|
|
if (this.isLogin == false) {
|
|
toLogin();
|
|
} else {
|
|
uni.navigateTo({
|
|
url: '/pages/users/user_info/index'
|
|
})
|
|
}
|
|
// uni.navigateTo({
|
|
// url: '/pages/users/user_info/index'
|
|
// })
|
|
},
|
|
// 签到
|
|
goSignIn() {
|
|
uni.navigateTo({
|
|
url: '/pages/users/user_sgin/index'
|
|
})
|
|
},
|
|
// goMenuPage
|
|
goMenuPage(url){
|
|
if(this.isLogin){
|
|
uni.navigateTo({
|
|
url
|
|
})
|
|
}else{
|
|
// #ifdef MP
|
|
this.openAuto()
|
|
// #endif
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
.support {
|
|
width: 219rpx;
|
|
height: 74rpx;
|
|
margin: 54rpx auto;
|
|
display: block;
|
|
}
|
|
.new-users {
|
|
.head {
|
|
padding-top: 30rpx;
|
|
background: #fff;
|
|
|
|
.user-card {
|
|
position: relative;
|
|
width: 710rpx;
|
|
height: 340rpx;
|
|
margin: 0 auto;
|
|
padding: 35rpx 28rpx;
|
|
background: linear-gradient(90deg, $bg-star 0%, $bg-end 100%);
|
|
box-shadow: 0px 10rpx 20rpx 0px rgba(255, 2, 0, 0.2);
|
|
border-radius: 24rpx;
|
|
|
|
.bg {
|
|
position: absolute;
|
|
left: 0;
|
|
top: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
background-image: url('~@/static/images/user_bg.png');
|
|
background-size: 100% 100%;
|
|
}
|
|
|
|
.user-info {
|
|
z-index: 20;
|
|
position: relative;
|
|
display: flex;
|
|
|
|
.avatar {
|
|
width: 120rpx;
|
|
height: 120rpx;
|
|
border-radius: 50%;
|
|
}
|
|
|
|
.info {
|
|
flex: 1;
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: space-between;
|
|
margin-left: 20rpx;
|
|
padding: 15rpx 0;
|
|
|
|
.name {
|
|
display: flex;
|
|
align-items: center;
|
|
color: #fff;
|
|
font-size: 31rpx;
|
|
|
|
.vip {
|
|
display: flex;
|
|
align-items: center;
|
|
padding: 6rpx 20rpx;
|
|
background: rgba(0, 0, 0, 0.2);
|
|
border-radius: 18px;
|
|
font-size: 20rpx;
|
|
margin-left: 12rpx;
|
|
// margin-top: 2rpx;
|
|
|
|
image {
|
|
width: 27rpx;
|
|
height: 27rpx;
|
|
}
|
|
}
|
|
}
|
|
|
|
.num {
|
|
display: flex;
|
|
align-items: center;
|
|
font-size: 26rpx;
|
|
color: rgba(255, 255, 255, 0.6);
|
|
|
|
image {
|
|
width: 22rpx;
|
|
height: 23rpx;
|
|
margin-left: 20rpx;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.num-wrapper {
|
|
z-index: 30;
|
|
position: relative;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
margin-top: 60rpx;
|
|
// padding: 0 47rpx;
|
|
color: #fff;
|
|
|
|
.num-item {
|
|
width: 33.33%;
|
|
text-align: center;
|
|
|
|
.num {
|
|
font-size: 42rpx;
|
|
font-weight: bold;
|
|
}
|
|
|
|
.txt {
|
|
margin-top: 8rpx;
|
|
font-size: 26rpx;
|
|
color: rgba(255, 255, 255, 0.6);
|
|
}
|
|
}
|
|
}
|
|
|
|
.sign {
|
|
z-index: 200;
|
|
position: absolute;
|
|
right: -12rpx;
|
|
top: 80rpx;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: 120rpx;
|
|
height: 60rpx;
|
|
background: linear-gradient(90deg, rgba(255, 225, 87, 1) 0%, rgba(238, 193, 15, 1) 100%);
|
|
border-radius: 29rpx 4rpx 4rpx 29rpx;
|
|
color: #282828;
|
|
font-size: 28rpx;
|
|
font-weight: bold;
|
|
}
|
|
}
|
|
|
|
.order-wrapper {
|
|
.order-hd {
|
|
justify-content: space-between;
|
|
padding: 0 20rpx 28rpx;
|
|
margin-top: 33rpx;
|
|
border-bottom: 1px solid #F5F5F5;
|
|
font-size: 30rpx;
|
|
color: #282828;
|
|
|
|
.right {
|
|
align-items: center;
|
|
color: #666666;
|
|
font-size: 26rpx;
|
|
|
|
.icon-xiangyou {
|
|
margin-left: 5rpx;
|
|
margin-top: 6rpx;
|
|
font-size: 26rpx;
|
|
}
|
|
}
|
|
}
|
|
|
|
.order-bd {
|
|
display: flex;
|
|
padding: 0 24rpx;
|
|
.order-item {
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: center;
|
|
align-items: center;
|
|
width: 20%;
|
|
height: 160rpx;
|
|
|
|
.pic {
|
|
position: relative;
|
|
text-align: center;
|
|
|
|
image {
|
|
width: 48rpx;
|
|
height: 48rpx;
|
|
}
|
|
}
|
|
|
|
.txt {
|
|
margin-top: 15rpx;
|
|
font-size: 26rpx;
|
|
color: #454545;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.slider-wrapper {
|
|
margin: 20rpx 0;
|
|
height: 130rpx;
|
|
|
|
swiper,
|
|
swiper-item {
|
|
height: 100%;
|
|
}
|
|
|
|
image {
|
|
width: 100%;
|
|
height: 130rpx;
|
|
}
|
|
}
|
|
|
|
.user-menus {
|
|
background-color: #fff;
|
|
|
|
.item {
|
|
position: relative;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
height: 90rpx;
|
|
padding: 0 30rpx;
|
|
|
|
.left {
|
|
display: flex;
|
|
align-items: center;
|
|
|
|
image {
|
|
width: 46rpx;
|
|
height: 46rpx;
|
|
margin-right: 25rpx;
|
|
}
|
|
}
|
|
|
|
&::before {
|
|
content: ' ';
|
|
position: absolute;
|
|
right: 0;
|
|
bottom: 0;
|
|
width: 655rpx;
|
|
height: 1px;
|
|
background-color: #EEEEEE;
|
|
}
|
|
|
|
&:last-child::before {
|
|
display: none;
|
|
}
|
|
}
|
|
button{
|
|
font-size: 28rpx;
|
|
}
|
|
}
|
|
|
|
.phone {
|
|
color: #fff;
|
|
}
|
|
|
|
.order-status-num {
|
|
|
|
min-width:12rpx;
|
|
background-color: #fff;
|
|
color: #ee5a52;
|
|
border-radius: 15px;
|
|
position: absolute;
|
|
right:-14rpx;
|
|
top: -15rpx;
|
|
font-size: 20rpx;
|
|
padding: 0 8rpx;
|
|
border: 1px solid #ee5a52;
|
|
}
|
|
}
|
|
</style>
|