|
|
|
@ -9,33 +9,9 @@ |
|
|
|
|
data() { |
|
|
|
|
return { |
|
|
|
|
goodsList: [], |
|
|
|
|
loadingText: "正在加载...", |
|
|
|
|
headerTop: "0px", |
|
|
|
|
headerPosition: "fixed", |
|
|
|
|
orderbyList: [{ |
|
|
|
|
text: "销量", |
|
|
|
|
selected: true, |
|
|
|
|
orderbyicon: false, |
|
|
|
|
orderby: 0 |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
text: "价格", |
|
|
|
|
selected: false, |
|
|
|
|
orderbyicon: ['sheng', 'jiang'], |
|
|
|
|
orderby: 0 |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
text: "好评", |
|
|
|
|
selected: false, |
|
|
|
|
orderbyicon: false, |
|
|
|
|
orderby: 0 |
|
|
|
|
} |
|
|
|
|
], |
|
|
|
|
orderby: "sheng" |
|
|
|
|
}; |
|
|
|
|
}, |
|
|
|
|
onLoad: function(option) { //option为object类型,会序列化上个页面传递的参数 |
|
|
|
|
console.log(option.cid); //打印出上个页面传递的参数。 |
|
|
|
|
if (option.id == 1) { |
|
|
|
|
uni.setNavigationBarTitle({ |
|
|
|
|
title: '商品列表' |
|
|
|
@ -46,221 +22,26 @@ |
|
|
|
|
title: '金币列表' |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
//兼容H5下排序栏位置 |
|
|
|
|
// #ifdef H5 |
|
|
|
|
//定时器方式循环获取高度为止,这么写的原因是onLoad中head未必已经渲染出来。 |
|
|
|
|
let Timer = setInterval(() => { |
|
|
|
|
let uniHead = document.getElementsByTagName('uni-page-head'); |
|
|
|
|
if (uniHead.length > 0) { |
|
|
|
|
this.headerTop = uniHead[0].offsetHeight + 'px'; |
|
|
|
|
clearInterval(Timer); //清除定时器 |
|
|
|
|
} |
|
|
|
|
}, 1); |
|
|
|
|
// #endif |
|
|
|
|
|
|
|
|
|
}, |
|
|
|
|
onPageScroll(e) { |
|
|
|
|
//兼容iOS端下拉时顶部漂移 |
|
|
|
|
if (e.scrollTop >= 0) { |
|
|
|
|
this.headerPosition = "fixed"; |
|
|
|
|
} else { |
|
|
|
|
this.headerPosition = "absolute"; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
}, |
|
|
|
|
//下拉刷新,需要自己在page.json文件中配置开启页面下拉刷新 "enablePullDownRefresh": true |
|
|
|
|
onPullDownRefresh() { |
|
|
|
|
setTimeout(() => { |
|
|
|
|
this.reload(); |
|
|
|
|
uni.stopPullDownRefresh(); |
|
|
|
|
}, 1000); |
|
|
|
|
|
|
|
|
|
}, |
|
|
|
|
//上拉加载,需要自己在page.json文件中配置"onReachBottomDistance" |
|
|
|
|
onReachBottom() { |
|
|
|
|
uni.showToast({ |
|
|
|
|
title: '触发上拉加载' |
|
|
|
|
}); |
|
|
|
|
let len = this.goodsList.length; |
|
|
|
|
if (len >= 40) { |
|
|
|
|
this.loadingText = "到底了"; |
|
|
|
|
return false; |
|
|
|
|
} else { |
|
|
|
|
this.loadingText = "正在加载..."; |
|
|
|
|
} |
|
|
|
|
let end_goods_id = this.goodsList[len - 1].goods_id; |
|
|
|
|
for (let i = 1; i <= 10; i++) { |
|
|
|
|
let goods_id = end_goods_id + i; |
|
|
|
|
let p = { |
|
|
|
|
goods_id: goods_id, |
|
|
|
|
img: '/static/img/goods/p' + (goods_id % 10 == 0 ? 10 : goods_id % 10) + '.jpg', |
|
|
|
|
name: '商品名称商品名称商品名称商品名称商品名称', |
|
|
|
|
price: '¥168', |
|
|
|
|
slogan: '1235人付款' |
|
|
|
|
}; |
|
|
|
|
this.goodsList.push(p); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
}, |
|
|
|
|
methods: { |
|
|
|
|
reload() { |
|
|
|
|
console.log("reload"); |
|
|
|
|
let tmpArr = [] |
|
|
|
|
this.goodsList = []; |
|
|
|
|
let end_goods_id = 0; |
|
|
|
|
for (let i = 1; i <= 10; i++) { |
|
|
|
|
let goods_id = end_goods_id + i; |
|
|
|
|
let p = { |
|
|
|
|
goods_id: goods_id, |
|
|
|
|
img: '/static/img/goods/p' + (goods_id % 10 == 0 ? 10 : goods_id % 10) + '.jpg', |
|
|
|
|
name: '商品名称商品名称商品名称商品名称商品名称', |
|
|
|
|
price: '¥168', |
|
|
|
|
slogan: '1235人付款' |
|
|
|
|
}; |
|
|
|
|
this.goodsList.push(p); |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
//商品跳转 |
|
|
|
|
toGoods(e) { |
|
|
|
|
uni.showToast({ |
|
|
|
|
title: '商品' + e.goods_id, |
|
|
|
|
icon: "none" |
|
|
|
|
}); |
|
|
|
|
uni.navigateTo({ |
|
|
|
|
url: '../goods' |
|
|
|
|
}); |
|
|
|
|
}, |
|
|
|
|
//排序类型 |
|
|
|
|
select(index) { |
|
|
|
|
let tmpTis = this.orderbyList[index].text + "排序 " |
|
|
|
|
if (this.orderbyList[index].orderbyicon) { |
|
|
|
|
let type = this.orderbyList[index].orderby == 0 ? '升序' : '降序'; |
|
|
|
|
if (this.orderbyList[index].selected) { |
|
|
|
|
type = this.orderbyList[index].orderby == 0 ? '降序' : '升序'; |
|
|
|
|
this.orderbyList[index].orderby = this.orderbyList[index].orderby == 0 ? 1 : 0; |
|
|
|
|
} |
|
|
|
|
tmpTis += type |
|
|
|
|
} |
|
|
|
|
this.orderbyList[index].selected = true; |
|
|
|
|
let len = this.orderbyList.length; |
|
|
|
|
for (let i = 0; i < len; i++) { |
|
|
|
|
if (i != index) { |
|
|
|
|
this.orderbyList[i].selected = false; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
uni.showToast({ |
|
|
|
|
title: tmpTis, |
|
|
|
|
icon: "none" |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
</script> |
|
|
|
|
|
|
|
|
|
<style lang="scss"> |
|
|
|
|
.icon { |
|
|
|
|
font-size: 26upx; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.header { |
|
|
|
|
width: 92%; |
|
|
|
|
padding: 0 4%; |
|
|
|
|
height: 79upx; |
|
|
|
|
display: flex; |
|
|
|
|
justify-content: space-around; |
|
|
|
|
align-items: flex-end; |
|
|
|
|
position: fixed; |
|
|
|
|
top: 0; |
|
|
|
|
z-index: 10; |
|
|
|
|
background-color: #fff; |
|
|
|
|
border-bottom: solid 1upx #eee; |
|
|
|
|
|
|
|
|
|
.target { |
|
|
|
|
width: 20%; |
|
|
|
|
height: 60upx; |
|
|
|
|
display: flex; |
|
|
|
|
justify-content: center; |
|
|
|
|
align-items: center; |
|
|
|
|
font-size: 28upx; |
|
|
|
|
margin-bottom: -2upx; |
|
|
|
|
color: #aaa; |
|
|
|
|
|
|
|
|
|
&.on { |
|
|
|
|
color: #555; |
|
|
|
|
border-bottom: 4upx solid #0083f5; |
|
|
|
|
font-weight: 600; |
|
|
|
|
font-size: 30upx; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.place { |
|
|
|
|
|
|
|
|
|
background-color: #ffffff; |
|
|
|
|
height: 100upx; |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.goods-list { |
|
|
|
|
.loading-text { |
|
|
|
|
width: 100%; |
|
|
|
|
display: flex; |
|
|
|
|
justify-content: center; |
|
|
|
|
align-items: center; |
|
|
|
|
height: 60upx; |
|
|
|
|
color: #979797; |
|
|
|
|
font-size: 24upx; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.product-list { |
|
|
|
|
width: 92%; |
|
|
|
|
padding: 0 4% 3vw 4%; |
|
|
|
|
display: flex; |
|
|
|
|
justify-content: space-between; |
|
|
|
|
flex-wrap: wrap; |
|
|
|
|
|
|
|
|
|
.product { |
|
|
|
|
width: 48%; |
|
|
|
|
border-radius: 20upx; |
|
|
|
|
background-color: #fff; |
|
|
|
|
margin: 0 0 15upx 0; |
|
|
|
|
box-shadow: 0upx 5upx 25upx rgba(0, 0, 0, 0.1); |
|
|
|
|
|
|
|
|
|
image { |
|
|
|
|
width: 100%; |
|
|
|
|
border-radius: 20upx 20upx 0 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.name { |
|
|
|
|
width: 92%; |
|
|
|
|
padding: 8upx 4%; |
|
|
|
|
display: -webkit-box; |
|
|
|
|
-webkit-box-orient: vertical; |
|
|
|
|
-webkit-line-clamp: 1; |
|
|
|
|
text-align: justify; |
|
|
|
|
overflow: hidden; |
|
|
|
|
font-size: 30upx; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.info { |
|
|
|
|
display: flex; |
|
|
|
|
justify-content: space-between; |
|
|
|
|
align-items: flex-end; |
|
|
|
|
width: 92%; |
|
|
|
|
padding: 10upx 4% 10upx 4%; |
|
|
|
|
|
|
|
|
|
.price { |
|
|
|
|
color: #e65339; |
|
|
|
|
font-size: 30upx; |
|
|
|
|
font-weight: 600; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.slogan { |
|
|
|
|
color: #807c87; |
|
|
|
|
font-size: 24upx; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
</style> |
|
|
|
|