xbx #50

Merged
theluyuan merged 4 commits from xbx into master 2020-07-07 06:47:14 +00:00
102 changed files with 461 additions and 327 deletions
Showing only changes of commit a127f08375 - Show all commits

2
.gitignore vendored
View File

@ -1,3 +1,3 @@
.vscode
node_modules
/node_modules/*
unpackage

View File

@ -40,13 +40,4 @@
* @return { String } 处理好的富文本
*/
unescapeHTML(temp){}
/**
* php时间戳转为格式化日期
* @param { String } timestamp 必填 php 返回的时间戳
* @param { String } spacer 可选 日期间隔符,默认 '-'
* @param { String } end 可选 年月日时分秒截止位置,默认 day可传 second
* @return { String } 格式化日期
*/
timestampToDate({timestamp, spacer = '-', end = 'day'} = {}) {}
```

View File

@ -103,6 +103,14 @@ export default {
cart_id: cart_id,
});
},
// 选择地区计算运费
getFreight({ freight_hash, city_id, area_id }) {
return vm.$u.post('Buy/change_addr', {
freight_hash: freight_hash,
city_id: city_id,
area_id: area_id,
});
},
// 商品详情
getGoodsDetails({ id }) {
return vm.$u.post('Goods/goodDetails', {

View File

@ -195,7 +195,7 @@ export default {
},
// 修改绑定手机号
changeMemberPhone({ old_mobile, old_code, new_mobile, new_code }) {
return vm.$u.post('Member/changeMemberInfo', {
return vm.$u.post('Member/memberChangeMobile', {
old_mobile: old_mobile,
old_code: old_code,
new_mobile: new_mobile,
@ -211,17 +211,36 @@ export default {
return vm.$u.post('Setting/CertificateInfo');
},
// 用户浏览记录
getBrowseList() {
return vm.$u.post('Member/BrowseList');
getBrowseList({ page }) {
return vm.$u.post('Member/BrowseList', {
page: page,
});
},
// 订单列表
getOrderList({ page }) {
return vm.$u.post('Goods/orderList', { page });
getOrderList({ page, type }) {
let params = { page: page };
if(type >= 0) Object.assign(params, {state_type: type})
return vm.$u.post('Goods/orderList', params);
},
// 订单详情
getOrderInfo({ order_id }) {
return vm.$u.post('Goods/orderInfo', { order_id });
},
// 查询订单的评价信息
getOrderEvaluateInfo({ id }) {
return vm.$u.post('Order/getOrderEvaluateInfo', { id });
},
// 订单评价/修改评价
updateOrderEvaluate({ id, content, scores_one, scores_two, scores_three, file }) {
return vm.$u.post('Order/orderEvaluate', {
id: id,
content: content,
scores_one: scores_one,
scores_two: scores_two,
scores_three: scores_three,
file: file,
});
},
}
}
}

View File

@ -118,16 +118,19 @@ export default {
// latitude,
}).then((res)=>{
if (res.errCode == 0) {
this.$refs.uToast.show({
title: res.message,
type: 'success',
// url: '/pageE/more/Address',
callback() {
uni.redirectTo({
url: '/pageE/more/Address'
});
}
})
uni.redirectTo({
url: '/pageE/more/Address'
});
// this.$refs.uToast.show({
// title: res.message,
// type: 'success',
// // url: '/pageE/more/Address',
// callback() {
// uni.redirectTo({
// url: '/pageE/more/Address'
// });
// }
// })
} else {
this.showToast(res.message, 'warning');
}
@ -148,16 +151,19 @@ export default {
// latitude,
}).then((res)=>{
if (res.errCode == 0) {
this.$refs.uToast.show({
title: res.message,
type: 'success',
// url: '/pageE/more/Address',
callback() {
uni.redirectTo({
url: '/pageE/more/Address'
});
}
})
uni.redirectTo({
url: '/pageE/more/Address'
});
// this.$refs.uToast.show({
// title: res.message,
// type: 'success',
// // url: '/pageE/more/Address',
// callback() {
// uni.redirectTo({
// url: '/pageE/more/Address'
// });
// }
// })
} else {
this.showToast(res.message, 'warning');
}

View File

@ -4,10 +4,10 @@
<image src="../static/image/2.png" class="address-icon"></image>
<view class="address">
<view class="user-info">
<view>胖胖</view>
<view>18220171014</view>
<view>{{ addressInfo.address_realname }}</view>
<view>{{ addressInfo.address_mob_phone }}</view>
</view>
<view class="address-text u-line-2">山东省泰安市泰山区东岳大街与克山路交汇口银山店四楼橙天影视南邻山东省泰安市泰山区东岳大街与克山路交汇口银山店四楼橙天影视南邻</view>
<view class="address-text u-line-2">{{ addressInfo.area_info + addressInfo.address_detail }}</view>
</view>
<image src="../static/image/1.png" class="right"></image>
</view>
@ -75,6 +75,8 @@ export default {
return {
orderInfo: {},
totalPrice: '0.00',
addressInfo: {},
freight: '',
}
},
filters: {
@ -92,36 +94,24 @@ export default {
onLoad(option) {
console.log(JSON.parse(option.info));
this.orderInfo = JSON.parse(option.info);
// this.orderListInit();
this.addressInfo = this.orderInfo.address_info;
this.showTotalPrice();
this.getFreight();
},
methods: {
// orderListInit() {
// this.orderList = this.orderInfo.store_list;
// for (const key in this.orderList) {
// if (this.orderList.hasOwnProperty(key)) {
// const element = this.orderList[key];
// let tempArray = Object.entries(this.orderInfo.store_cart_list);
// tempArray.forEach(item => {
// if (item[0])
// })
// let temp = this.orderInfo.store_cart_list.filters(store => {
// return store.store_id == item.store_id
// })
// element
// }
// }
// this.orderList.forEach(item => {
// let temp = this.orderInfo.store_cart_list.filters(store => {
// return store.store_id == item.store_id
// })
// Object.assign(item, { goods_list: temp });
// })
// console.log(this.orderList);
// },
showTotalPrice() {
},
getFreight() {
this.$u.api.getFreight({
freight_hash: this.orderInfo.freight_hash,
city_id: this.addressInfo.city_id,
area_id: this.addressInfo.area_id,
}).then(res => {
if(res.errCode == 0) {
// this.freight = res.
}
})
},
settlement() {
uni.navigateTo({
@ -177,6 +167,7 @@ export default {
}
}
.main {
margin-bottom: 100rpx;
> view {
.goods-info {
background-color: #ffffff;
@ -220,6 +211,7 @@ export default {
flex-shrink: 0;
}
.info {
flex: 1;
// width: 418rpx;
height: 160rpx;
display: flex;

View File

@ -85,6 +85,7 @@ export default {
},
//
settlementOrder() {
//
let id = [], temp = '';
this.checkedGoods.forEach(item => {
temp = item.cart_id + '|' + item.goods_num;
@ -147,16 +148,14 @@ export default {
this.cartUpdateNumber(e.index, e.value);
},
async cartUpdateNumber(id, number) {
try {
await this.$u.api.cartUpdateNumber({
cart_id: id,
quantity: number,
}).then(res => {
this.getCartList();
})
} catch (error) {
await this.$u.api.cartUpdateNumber({
cart_id: id,
quantity: number,
}).then(res => {
this.getCartList();
}
}).catch(() => {
this.geCartList();
})
},
totalChange(e) {
//
@ -193,16 +192,7 @@ export default {
}
},
onNavigationBarButtonTap(btn) {
console.log(btn);
// this.status = btn.text;
// #ifdef H5
if(this.status == '编辑'){
this.status = "完成";
} else {
this.status = "编辑";
}
console.log(this.status);
// #endif
// console.log(btn);
if(btn.index == 0){
let pages = getCurrentPages();
let page = pages[pages.length - 1];

View File

@ -2,7 +2,8 @@
<view class="edit-info">
<view class="user-info">
<view class="info-avatar">
<image src="../static/mine/23.png"></image>
<u-avatar :src="avatar" :size="120"></u-avatar>
<view class="avatar-text">更换头像</view>
</view>
<view class="info-item">
<view class="title">昵称</view>
@ -26,7 +27,7 @@
<image src="../static/mine/21.png"></image>
</view>
</view>
<view class="edit-tips">注意修改手机号需要原手机号获取验证码无原手机验证码请联系后台</view>
<view class="edit-tips">注意修改手机号需要原手机号获取验证码无原手机验证码请联系客服</view>
<view class="edit-btn" @click="updateMemberInfo">完成</view>
</view>
</template>
@ -55,7 +56,7 @@ export default {
minute: false,
second: false
},
nickname: '胖胖',
nickname: '',
gender: '', // 1 2
birthday: '',
phoneNumber: '',
@ -72,8 +73,8 @@ export default {
let userInfo = res.data.MemberArray;
[this.nickname, this.phoneNumber, this.birthday, this.gender, this.avatar] = [
userInfo.member_nickname,
userInfo.member_mobile,
common.timestampToDate({timestamp: userInfo.member_birthday}),
userInfo.member_mobile,
userInfo.member_birthday,
userInfo.member_sex,
userInfo.member_avatar,
];
@ -115,15 +116,16 @@ export default {
padding-top: 1rpx;
.user-info {
.info-avatar {
text-align: center;
height: 160rpx;
height: 202rpx;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
background: rgba(255,255,255,1);
> image {
flex-shrink: 0;
width: 120rpx;
height: 120rpx;
border-radius: 50%;
margin-top: 20rpx;
.avatar-text {
margin-top: 12rpx;
font-size: 24rpx;
color: rgba(255,120,15,1);
}
}
.info-item {

View File

@ -3,37 +3,50 @@
<view class="integral-top">
<view>
<view class="title">总积分</view>
<view class="value">999</view>
<view class="value">{{ memberInfo.member_points }}</view>
</view>
<view>
<view class="title">经验值</view>
<view class="value">999</view>
<view class="value">{{ memberInfo.member_exppoints }}</view>
</view>
<view>
<view class="title">预计进度</view>
<view class="value">999</view>
<view class="value">{{ memberInfo.next_grade_exppoints_diff }}</view>
</view>
</view>
<scroll-view scroll-y class="integral-botom">
<scroll-view scroll-y class="integral-botom" :style="{ height: integralHeight }">
<rich-text :nodes="nodes"></rich-text>
</scroll-view>
</view>
</template>
<script>
import common from '@/static/js/common.js';
export default {
data() {
return {
nodes: '<h1>2</h1><h1>2</h1><h1>2</h1><h1>2</h1><h1>2</h1><h1>2</h1><h1>2</h1><h1>2</h1><h1>2</h1><h1>2</h1><h1>2</h1><h1>2</h1><h1>2</h1><h1>2</h1><h1>2</h1><h1>2</h1><h1>2</h1><h1>2</h1>',
integralHeight: 0
memberInfo: {},
integralHeight: 0,
nodes: '',
}
},
onShow() {
this.setIntegralHeight();
this.getMemberPointsStat();
},
methods: {
setIntegralHeight() {
// this.integralHeight =
}
const res = uni.getSystemInfoSync();
// console.log(res.windowHeight);
this.integralHeight = res.windowHeight - 251 / 2 + 'px';
},
getMemberPointsStat() {
this.$u.api.getMemberPointsStat().then((res)=>{
if (res.errCode == 0) {
this.memberInfo = res.data;
this.nodes = common.unescapeHTML(this.memberInfo.points_rule);
}
})
},
},
};
</script>
@ -65,9 +78,11 @@ export default {
}
}
.integral-botom {
box-sizing: border-box;
padding: 30rpx;
position: absolute;
width: 750rpx;
height: calc(100vh - 251rpx);
width: 100%;
// height: calc(100vh - 251rpx);
background: rgba(255,255,255,1);
border-radius: 20rpx 20rpx 0rpx 0rpx;
top: 251rpx;

View File

@ -3,9 +3,9 @@
<view>
<u-tabs-swiper ref="tabs" :list="list" :is-scroll="false" active-color="#FF780F" :current="current" font-size="32" :show-bar="false" @change="tabsChange" height="88" ></u-tabs-swiper>
</view>
<swiper :current="swiperCurrent" @animationfinish="animationfinish">
<swiper :current="swiperCurrent" @animationfinish="animationfinish" :style="{ height: swiperHeight }">
<swiper-item class="swiper-item">
<scroll-view scroll-y class="integral">
<view class="integral">
<view class="integral-top">
<view>
<view class="title">总积分</view>
@ -17,17 +17,17 @@
</view>
<view>
<view class="title">预计进度</view>
<view class="value">999</view>
<view class="value">{{ memberInfo.next_grade_exppoints_diff }}</view>
</view>
</view>
<view class="integral-botom">
<scroll-view scroll-y class="integral-botom" :style="{ height: richHeight }">
<rich-text :nodes="nodes"></rich-text>
</view>
</scroll-view>
</scroll-view>
</view>
</swiper-item>
<swiper-item class="swiper-item">
<scroll-view scroll-y class="coupon">
<view v-for="(item, index) in 13" :key="index" class="coupon-item">
<view v-for="(item, index) in couponList" :key="index" class="coupon-item">
<img src="../static/mine/23.png" />
<view class="coupon-main">
<view class="coupon-title">萌店十元优惠券</view>
@ -39,6 +39,7 @@
</view>
<view class="coupon-btn">兑换</view>
</view>
<u-empty text="暂无优惠券" mode="coupon" color="#000" v-if="!couponList.length"></u-empty>
</scroll-view>
</swiper-item>
<swiper-item class="swiper-item">
@ -52,12 +53,14 @@
{{ item.pl_addtime > 0 ? item.pl_addtime : '+' + 10.00 }}
</view>
</view>
<u-empty text="暂无明细" mode="data" color="#000" v-if="!pointslogList.length"></u-empty>
</scroll-view>
</swiper-item>
</swiper>
</view>
</template>
<script>
import common from '@/static/js/common.js';
export default {
data() {
return {
@ -68,16 +71,20 @@ export default {
}, {
name: '积分明细'
}],
richHeight: '',
swiperHeight: '',
current: 0,
swiperCurrent: 0,
nodes: '<h1>2</h1><h1>2</h1><h1>2</h1><h1>2</h1><h1>2</h1><h1>2</h1><h1>2</h1><h1>2</h1><h1>2</h1><h1>2</h1><h1>2</h1><h1>2</h1><h1>2</h1><h1>2</h1><h1>2</h1><h1>2</h1><h1>2</h1><h1>2</h1>',
pointslogList: [],
memberInfo: {}
pointslogList: [],
couponList: [],
memberInfo: {},
nodes: '',
}
},
onShow() {
this.getMemberPointsStat();
this.getPointslogList();
this.setViewHeight();
},
methods: {
tabsChange(index) {
@ -92,6 +99,7 @@ export default {
this.$u.api.getMemberPointsStat().then((res)=>{
if (res.errCode == 0) {
this.memberInfo = res.data;
this.nodes = common.unescapeHTML(this.memberInfo.points_rule);
}
})
},
@ -101,7 +109,14 @@ export default {
this.pointslogList = res.data;
}
})
}
},
setViewHeight() {
const res = uni.getSystemInfoSync();
// console.log(res.windowHeight);
this.richHeight = res.windowHeight - (88 + 250) / 2 + 'px';
// console.log(this.richHeight);
this.swiperHeight = res.windowHeight - 88 / 2 + 'px';
},
},
}
</script>
@ -111,18 +126,20 @@ export default {
background-color: #ECECEC;
display: flex;
flex-direction: column;
> uni-swiper {
flex: 1;
}
// > uni-swiper {
// flex: 1;
// height: calc()
// }
.swiper-item {
padding-top: 10rpx;
.integral {
height: 100%;
position: relative;
overflow: hidden;
.integral-top {
padding: 79rpx 88rpx;
width: 750rpx;
height: 271rpx;
height: 270rpx;
background: linear-gradient(0deg,rgba(246,211,119,1) 1%,rgba(240,154,105,1) 100%);
display: flex;
justify-content: space-between;
@ -142,12 +159,13 @@ export default {
}
}
.integral-botom {
box-sizing: border-box;
padding: 30rpx;
position: absolute;
width: 750rpx;
// height: 856rpx;
width: 100%;
background: rgba(255,255,255,1);
border-radius: 20rpx 20rpx 0rpx 0rpx;
top: 251rpx;
top: 250rpx;
z-index: 9;
}
}

View File

@ -1,7 +1,7 @@
<template>
<view class="information">
<view class="info-avatar">
<image src="../static/mine/23.png"></image>
<u-avatar :src="userInfo.member_avatar" :size="120"></u-avatar>
</view>
<view class="info-item">
<view class="title">昵称</view>
@ -13,7 +13,7 @@
</view>
<view class="info-item">
<view class="title">生日</view>
<view class="value">{{ userInfo.member_birthday | dateFormat }}</view>
<view class="value">{{ userInfo.member_birthday }}</view>
</view>
<view class="info-item">
<view class="title">手机号</view>
@ -21,7 +21,7 @@
</view>
<view class="info-item">
<view class="title">等级</view>
<view class="value">{{ userInfo.level }}</view>
<view class="value">{{ userInfo.member_level }}</view>
</view>
<view class="info-item">
<view class="title">积分数</view>
@ -47,11 +47,6 @@ export default {
onNavigationBarButtonTap() {
this.toEditPage();
},
filters: {
dateFormat(value) {
return common.timestampToDate({ timestamp: value });
}
},
methods: {
getUserInfo() {
this.$u.api.getMemberInfo().then(res => {
@ -74,16 +69,11 @@ export default {
background-color: #ECECEC;
padding-top: 1rpx;
.info-avatar {
text-align: center;
display: flex;
align-items: center;
justify-content: center;
height: 160rpx;
background: rgba(255,255,255,1);
> image {
flex-shrink: 0;
width: 120rpx;
height: 120rpx;
border-radius: 50%;
margin-top: 20rpx;
}
}
.info-item {
display: flex;

View File

@ -24,11 +24,11 @@
<u-verification-code :seconds="seconds" @end="end" @start="start" ref="uNewCode" @change="newCodeChange" unique-key="new" change-text="x秒"></u-verification-code>
<view class="get-code" @click="getCode(1)">{{ btnText[1] }}</view>
</view>
<u-toast ref="uToast" />
</view>
</view>
<view class="tips">注意修改手机号需要原手机号获取验证码无原手机验证码请联系客服</view>
<view class="btn" @click="changeMemberPhone">保存</view>
<u-toast ref="uToast" />
</view>
</template>
<script>
@ -43,6 +43,9 @@ export default {
seconds: 60, //
}
},
onNavigationBarButtonTap(e) {
if( e.index == 0 ) uni.navigateBack();
},
methods: {
//
verifySendCode(type) {
@ -102,6 +105,12 @@ export default {
this.$u.toast(res.message);
//
refs.start();
} else {
this.$refs.uToast.show({
type: 'error',
title: res.message,
duration: 3000,
})
}
}).catch(() => {
uni.hideLoading();
@ -120,7 +129,12 @@ export default {
new_code: this.newCode,
}).then(res => {
if(res.errCode == 0) {
uni.navigateBack();
} else {
this.$refs.uToast.show({
type: 'error',
title: res.message
})
}
})
},
@ -129,7 +143,7 @@ export default {
},
start() {
// this.$u.toast('');
}
},
},
};
</script>

View File

@ -41,11 +41,14 @@ export default {
address_id: this.address.address_id
}).then((res)=>{
if(res.errCode == 0) {
this.$refs.uToast.show({
title: res.message,
type: 'success',
uni.redirectTo({
url: '/pageE/more/Address'
})
});
// this.$refs.uToast.show({
// title: res.message,
// type: 'success',
// url: '/pageE/more/Address'
// })
} else {
this.$refs.uToast.show({
title: res.message,

View File

@ -3,74 +3,14 @@
<view>
<u-tabs-swiper ref="tabs" :list="list" :is-scroll="false" active-color="#FF780F" :current="current" font-size="26" @change="tabsChange" height="88" :gutter="30"></u-tabs-swiper>
</view>
<swiper :current="swiperCurrent" @animationfinish="animationfinish">
<swiper-item class="swiper-item">
<swiper :current="swiperCurrent" @animationfinish="animationfinish" :style="{ height: swiperHeight }">
<swiper-item class="swiper-item" v-for="(item, index) in list" :key="index">
<scroll-view scroll-y style="height: 100%;" @scrolltolower="reachBottom">
<view>
<view class="item-container" v-for="(item, index) in orderList" :key="index">
<OrderItem :current="current"></OrderItem>
<view class="item-container" v-for="order in orderList" :key="order.order_id">
<OrderItem :current="index"></OrderItem>
</view>
<u-loadmore :status="loadStatus[5]" bgColor="#ECECEC" margin-bottom="20"></u-loadmore>
</view>
</scroll-view>
</swiper-item>
<swiper-item class="swiper-item">
<scroll-view scroll-y style="height: 100%;">
<view>
<view class="item-container" v-for="(item, index) in orderList" :key="index">
<OrderItem :current="current"></OrderItem>
</view>
<u-loadmore :status="loadStatus[5]" bgColor="#ECECEC" margin-bottom="20"></u-loadmore>
</view>
</scroll-view>
</swiper-item>
<swiper-item class="swiper-item">
<scroll-view scroll-y style="height: 100%;">
<view>
<view class="item-container" v-for="(item, index) in orderList" :key="index">
<OrderItem :current="current"></OrderItem>
</view>
<u-loadmore :status="loadStatus[5]" bgColor="#ECECEC" margin-bottom="20"></u-loadmore>
</view>
</scroll-view>
</swiper-item>
<swiper-item class="swiper-item">
<scroll-view scroll-y style="height: 100%;">
<view>
<view class="item-container" v-for="(item, index) in orderList" :key="index">
<OrderItem :current="current"></OrderItem>
</view>
<u-loadmore :status="loadStatus[5]" bgColor="#ECECEC" margin-bottom="20"></u-loadmore>
</view>
</scroll-view>
</swiper-item>
<swiper-item class="swiper-item">
<scroll-view scroll-y style="height: 100%;">
<view>
<view class="item-container" v-for="(item, index) in orderList" :key="index">
<OrderItem :current="current"></OrderItem>
</view>
<u-loadmore :status="loadStatus[5]" bgColor="#ECECEC" margin-bottom="20"></u-loadmore>
</view>
</scroll-view>
</swiper-item>
<swiper-item class="swiper-item">
<scroll-view scroll-y style="height: 100%;" @scrolltolower="reachBottom">
<view>
<view class="item-container" v-for="(item, index) in orderList" :key="index">
<OrderItem :current="current"></OrderItem>
</view>
<u-loadmore :status="loadStatus[5]" bgColor="#ECECEC" margin-bottom="20"></u-loadmore>
</view>
</scroll-view>
</swiper-item>
<swiper-item class="swiper-item">
<scroll-view scroll-y style="height: 100%;" @scrolltolower="reachBottom">
<view>
<view class="item-container" v-for="(item, index) in orderList" :key="index">
<OrderItem :current="current"></OrderItem>
</view>
<u-loadmore :status="loadStatus[6]" bgColor="#ECECEC" margin-bottom="20"></u-loadmore>
<u-loadmore :status="loadStatus[index]" bgColor="#ECECEC" margin-bottom="20" v-if="typeof orderList == Array ? (orderList.length >= 15) : (orderList >= 15)"></u-loadmore>
</view>
</scroll-view>
</swiper-item>
@ -97,44 +37,81 @@ export default {
}, {
name: '售后'
}],
orderList: 5,
orderList: 15,
loadStatus: ['loadmore','loadmore','loadmore','loadmore','loadmore','loadmore','loadmore'],
page: 0,
current: 0,
swiperCurrent: 0,
swiperHeight: '',
timer: true,
}
},
components: {
OrderItem
},
watch: {
current() {
this.page = 0;
this.getOrderList();
},
},
onLoad(option) {
if(option.current) {
this.current = Number(option.current);
this.swiperCurrent = this.current;
}
this.getOrderList();
this.setViewHeight();
},
methods: {
getOrderList() {
this.$u.api.getOrderList({
async getOrderList() {
let type;
// state_type 0: 10: 20: 30: 40:
switch (this.current) {
case 1:
type = 10; //
break;
case 2:
type = 0; //
break;
case 3:
type = 30; //
break;
case 4:
type = -1; // 穿
break;
case 5:
type = 20; //
break;
case 6:
type = 40; //
break;
default:
type = -1;
break;
}
const res = await this.$u.api.getOrderList({
page: this.page,
}).then(res => {
if(res.errCode == 0) {
}
type: type,
})
this.timer = false;
if(res.errCode == 0) {
if(res.data.length) this.orderList = this.orderList.concat(res.data);
}
return res.data.length;
},
reachBottom() {
// console.log(this.page);
if(this.page >= 3) return;
// loadStatus
console.log(this.loadStatus);
return false;
if(!this.timer) return false;
this.loadStatus.splice(this.current, 1, "loading");
this.page++;
setTimeout(() => {
this.orderList += 5;
this.getOrderList.then(length => {
this.loadStatus.splice(this.current, 1, "nomore");
}, 1200);
if(length == 0) this.page--;
}).catch(() => {
this.loadStatus.splice(this.current, 1, "nomore");
this.page--;
})
},
tabsChange(index) {
this.current = Number(index);
@ -144,7 +121,11 @@ export default {
let current = Number(e.detail.current);
this.swiperCurrent = current;
this.current = current;
}
},
setViewHeight() {
const sys = uni.getSystemInfoSync();
this.swiperHeight = sys.windowHeight - 88 / 2 + 'px';
},
}
};
</script>
@ -154,9 +135,9 @@ export default {
background-color: #ECECEC;
display: flex;
flex-direction: column;
> uni-swiper {
flex: 1;
}
// > uni-swiper {
// flex: 1;
// }
.swiper-item {
.item-container {
padding: 20rpx 30rpx;

View File

@ -74,6 +74,7 @@ export default {
return res.data.list;
}
},
//
reachBottom() {
// loadStatus
this.loadStatus = "loading";

View File

@ -56,11 +56,14 @@ export default {
time: new Date(this.time)
}).then((res)=>{
if(res.errCode == 0) {
this.$refs.uToast.show({
title: res.message,
type: 'success',
uni.redirectTo({
url: '/pageE/tool/Manicure'
})
});
// this.$refs.uToast.show({
// title: res.message,
// type: 'success',
// url: '/pageE/tool/Manicure'
// })
} else {
this.showToast(res.message, 'error');
}

View File

@ -1,21 +1,20 @@
<template>
<view class="mine-history">
<view class="history-box">
<view v-for="(item, index) in historyList" :key="index" class="history-item">
<view class="item-title">
<image src="../static/mine/23.png"></image>
<view>小米店铺</view>
</view>
<!-- <view class="item-image">
<img src="../static/mine/23.png" />
</view> -->
<image src="../static/mine/23.png" class="item-image"></image>
<view class="item-info">
<view class="info-name">{{ item }}</view>
<image src="../static/mine/22.png"></image>
<scroll-view scroll-y class="history-box" @scrolltolower="reachBottom">
<view class="item-box">
<view v-for="(item, index) in historyList.slice(0, 50)" :key="index" class="history-item">
<view class="item-title">
<image :src="item.store_avatar"></image>
<view>{{ item.store_name }}</view>
</view>
<image :src="item.goods_image" class="item-image"></image>
<view class="item-info">
<view class="info-name u-line-1">{{ item.goods_name }}</view>
</view>
</view>
</view>
</view>
<u-loadmore :status="loadStatus" bgColor="#ECECEC" margin-bottom="20" v-if="historyList.length > 9"></u-loadmore>
</scroll-view>
<u-empty text="暂无足迹" mode="list" color="#000" margin-top="240" v-if="!historyList.length"></u-empty>
</view>
</template>
@ -24,18 +23,138 @@
export default {
data() {
return {
historyList: [1, 2, 3, 6]
historyList: [
{
"goods_id": 13,
"goodsbrowse_time": "2020-06-28 15:45:56",
"goods_image": "http://deming.test/uploads/home/store/goods/1/1_2017092121142556524.jpg",//
"goods_name": "变频风冷无霜 独立双循环 LED显示 对开门冰箱(白色)",//
"store_id": 1,//id
"store_name": "官方自营店铺",//
"store_avatar": "http://deming.test/uploads/home/store/1/1_2020062410413137159.png"//
},
{
"goods_id": 13,
"goodsbrowse_time": "2020-06-28 15:45:56",
"goods_image": "http://deming.test/uploads/home/store/goods/1/1_2017092121142556524.jpg",//
"goods_name": "变频风冷无霜 独立双循环 LED显示 对开门冰箱(白色)",//
"store_id": 1,//id
"store_name": "官方自营店铺",//
"store_avatar": "http://deming.test/uploads/home/store/1/1_2020062410413137159.png"//
},
{
"goods_id": 13,
"goodsbrowse_time": "2020-06-28 15:45:56",
"goods_image": "http://deming.test/uploads/home/store/goods/1/1_2017092121142556524.jpg",//
"goods_name": "变频风冷无霜 独立双循环 LED显示 对开门冰箱(白色)",//
"store_id": 1,//id
"store_name": "官方自营店铺",//
"store_avatar": "http://deming.test/uploads/home/store/1/1_2020062410413137159.png"//
},
{
"goods_id": 13,
"goodsbrowse_time": "2020-06-28 15:45:56",
"goods_image": "http://deming.test/uploads/home/store/goods/1/1_2017092121142556524.jpg",//
"goods_name": "变频风冷无霜 独立双循环 LED显示 对开门冰箱(白色)",//
"store_id": 1,//id
"store_name": "官方自营店铺",//
"store_avatar": "http://deming.test/uploads/home/store/1/1_2020062410413137159.png"//
},
{
"goods_id": 13,
"goodsbrowse_time": "2020-06-28 15:45:56",
"goods_image": "http://deming.test/uploads/home/store/goods/1/1_2017092121142556524.jpg",//
"goods_name": "变频风冷无霜 独立双循环 LED显示 对开门冰箱(白色)",//
"store_id": 1,//id
"store_name": "官方自营店铺",//
"store_avatar": "http://deming.test/uploads/home/store/1/1_2020062410413137159.png"//
},
{
"goods_id": 12,
"goodsbrowse_time": "2020-06-28 15:44:41",
"goods_image": "http://deming.test/uploads/home/store/goods/1/1_2017092121050988491.jpg",
"goods_name": "扬子(YAIR) 小2匹 冷暖 自动清洗 定频空调柜机",
"store_id": 1,
"store_name": "官方自营店铺",
"store_avatar": "http://deming.test/uploads/home/store/1/1_2020062410413137159.png"
},
{
"goods_id": 11,
"goodsbrowse_time": "2020-06-28 15:38:11",
"goods_image": "http://deming.test/uploads/home/store/goods/1/1_2017092120564717575.jpg",
"goods_name": "1.5匹 变频 智能 二级能效极速侠 空调挂机",
"store_id": 1,
"store_name": "官方自营店铺",
"store_avatar": "http://deming.test/uploads/home/store/1/1_2020062410413137159.png"
},
{
"goods_id": 9,
"goodsbrowse_time": "2020-06-28 15:36:27",
"goods_image": "http://deming.test/uploads/home/store/goods/1/1_2017092120480147477.jpg",
"goods_name": "长虹CHANGHONG39M1 39英寸 窄边高清液晶电视(黑色)",
"store_id": 1,
"store_name": "官方自营店铺",
"store_avatar": "http://deming.test/uploads/home/store/1/1_2020062410413137159.png"
},
{
"goods_id": 8,
"goodsbrowse_time": "2020-06-28 15:36:06",
"goods_image": "http://deming.test/uploads/home/store/goods/1/1_2017092120445748551.jpg",
"goods_name": "先锋(Pioneer)LED-39B700S 39英寸 高清 网络 智能 液晶电视",
"store_id": 1,
"store_name": "官方自营店铺",
"store_avatar": "http://deming.test/uploads/home/store/1/1_2020062410413137159.png"
},
{
"goods_id": 10,
"goodsbrowse_time": "2020-06-24 16:14:29",
"goods_image": "http://deming.test/uploads/home/store/goods/1/1_2017092120493430154.jpg",
"goods_name": "39英寸64位24核安卓智能平板液晶电视黑色",
"store_id": 1,
"store_name": "官方自营店铺",
"store_avatar": "http://deming.test/uploads/home/store/1/1_2020062410413137159.png"
},
{
"goods_id": 28,
"goodsbrowse_time": "2020-06-23 17:07:45",
"goods_image": "http://deming.test/uploads/home/store/goods/1/1_2017092202022516767.jpg",
"goods_name": "南极人(NanJiren)纯棉床单四件套全棉床上用品婚庆被套4件套",
"store_id": 1,
"store_name": "官方自营店铺",
"store_avatar": "http://deming.test/uploads/home/store/1/1_2020062410413137159.png"
}
],
page: 1, // 1
loadStatus: 'loadmore',
timer: true,
};
},
onLoad() {
this.getBrowseList();
},
methods: {
getBrowseList () {
this.$u.api.getBrowseList().then(res => {
if(res.errCode == 0) {
this.historyList = res.data.storeInfo;
async getBrowseList () {
const res = await this.$u.api.getBrowseList({ page: this.page });
this.timer = false;
if(res.errCode == 0) {
this.historyList = res.data.storeInfo;
}
return res.data.storeInfo.length;
},
reachBottom() {
if(!this.timer) return false;
this.loadStatus = "loading";
this.page++;
this.getBrowseList({page: this.page}).then(length => {
if(length == 0) {
this.page--;
this.status = 'nomore';
} else {
this.status = 'loading';
}
}).catch(() => {
this.loadStatus = "nomore";
this.page--;
})
}
}
@ -46,50 +165,56 @@ export default {
min-height: calc(100vh - var(--window-top));
background: #ECECEC;
.history-box {
height: calc(100vh - var(--window-top));
padding: 20rpx 30rpx 0;
display: flex;
flex-wrap: wrap;
.history-item {
width: 220rpx;
height: 290rpx;
background: rgba(255,255,255,1);
border-radius: 10rpx;
padding: 20rpx 20rpx 22rpx;
margin: 0 10rpx 20rpx 0;
.item-title {
display: flex;
align-items: center;
> image {
width: 50rpx;
height: 50rpx;
border-radius: 50%;
margin-right: 19rpx;
}
> view {
font-size: 24rpx;
color: rgba(51,51,51,1);
}
}
.item-image {
margin: 20rpx 0 17rpx;
width: 180rpx;
height: 140rpx;
.item-box {
display: flex;
flex-wrap: wrap;
.history-item {
width: 220rpx;
height: 290rpx;
background: rgba(255,255,255,1);
border-radius: 10rpx;
}
.item-info {
display: flex;
justify-content: space-between;
align-items: center;
.info-name {
font-size: 22rpx;
color: rgba(51,51,51,1);
padding: 20rpx 20rpx 22rpx;
margin: 0 10rpx 20rpx 0;
.item-title {
display: flex;
align-items: center;
> image {
width: 50rpx;
height: 50rpx;
border-radius: 50%;
margin-right: 19rpx;
}
> view {
font-size: 24rpx;
color: rgba(51,51,51,1);
}
}
> image {
width: 37rpx;
height: 8rpx;
.item-image {
margin: 20rpx 0 17rpx;
width: 180rpx;
height: 140rpx;
border-radius: 10rpx;
}
.item-info {
display: flex;
justify-content: space-between;
align-items: center;
.info-name {
margin-right: 10rpx;
flex: 1;
font-size: 22rpx;
color: rgba(51,51,51,1);
}
> image {
width: 37rpx;
height: 8rpx;
}
}
}
}
}
}
</style>

View File

@ -619,9 +619,16 @@
"app-plus": {
"titleSize": "36px",
"titleNView": {
"autoBackButton": false,
"backgroundColor": "#FFFFFF",
"titleColor": "#333333",
"buttons": [
{
"type":"none",
"text":"取消",
"float":"left",
"fontSize":"14"
},
{
"type":"none",
"text":"\ue62d",
@ -629,11 +636,7 @@
"fontSrc": "/static/fonts/customer.ttf",
"fontSize":"20"
}
],
"autoBackButton": true,
"backButton": {
"badgeText": "取消"
}
]
}
}
}
@ -645,6 +648,7 @@
"app-plus": {
"titleSize": "36px",
"titleNView": {
"autoBackButton": false,
"backgroundColor": "#FFFFFF",
"titleColor": "#333333",
"buttons": [

View File

@ -2,7 +2,7 @@
<view class="mine">
<view class="mine-top">
<view class="top">
<image src="/static/image/mine/23.png" class="avatar" @click="toOtherPage('/mine/MineInfo')" />
<u-avatar :src="userInfo.member_avatar" :size="110"></u-avatar>
<view class="user-info">
<view class="info-left">
<view class="user-nickname" @click="toOtherPage('/mine/MineInfo')">{{ userInfo.member_nickname }}</view>
@ -13,7 +13,7 @@
</view>
<view class="info-right">
<view class="info-phone">{{ userInfo.member_mobile | phoneFormat }}</view>
<view class="user-rank">等级:{{ userInfo.level }}</view>
<view class="user-rank">等级:{{ userInfo.member_level }}</view>
</view>
</view>
<view class="member-service" @click="toOtherPage('/mine/MemberServe')">会员服务</view>
@ -32,7 +32,7 @@
<view>图文收藏</view>
</view>
<view @click="toOtherPage('/mine/Integral')">
<view>{{ userInfo.member_points }}</view>
<view>{{ userInfo ? userInfo.member_points : 0 }}</view>
<view>积分数</view>
</view>
<view @click="toOtherPage('/mine/MineConcerns')">
@ -166,15 +166,8 @@ export default {
display: flex;
align-items: center;
margin-bottom: 40rpx;
.avatar {
width: 110rpx;
height: 110rpx;
border-radius: 50%;
border: 2rpx solid rgba(251,251,251,1);
margin-right: 30rpx;
flex-shrink: 0;
}
.user-info {
margin-left: 30rpx;
display: flex;
.info-left {
margin-right: 15rpx;

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More