|
@@ -1,7 +1,7 @@
|
|
|
<template>
|
|
|
<view class="page">
|
|
|
<navbar-line :bgColor="bgColor" :hasPlacer="false">
|
|
|
- <view class="header-loc align-center" @tap="chooseLoc">
|
|
|
+ <view class="header-loc align-center" @tap="navTo('/pages/address/address')">
|
|
|
<image src="/static/mang-loc.png" class="image_19" mode="aspectFill" />
|
|
|
<text class="text_43">沂蒙云谷·创意孵化中心</text>
|
|
|
</view>
|
|
@@ -13,95 +13,42 @@
|
|
|
<view class="group_20"><zetank-notice colors="#55aaff" :noticeList="ads" :interval="3000"></zetank-notice></view>
|
|
|
</view>
|
|
|
<view class="p-entry">
|
|
|
- <view class="flex-col items-center grid-item">
|
|
|
+ <view class="flex-col items-center grid-item" v-for="(item,i) in cats" :key="i">
|
|
|
<image
|
|
|
- src="/static/mang-dianxin.png"
|
|
|
+ :src="item.cate_logo"
|
|
|
class="image"
|
|
|
+ mode="aspectFill"
|
|
|
/>
|
|
|
- <text class="text">点心</text>
|
|
|
- </view>
|
|
|
- <view class="flex-col items-center grid-item">
|
|
|
- <image
|
|
|
- src="/static/mang-dangao.png"
|
|
|
- class="image"
|
|
|
- />
|
|
|
- <text class="text">蛋糕</text>
|
|
|
- </view>
|
|
|
- <view class="flex-col items-center grid-item">
|
|
|
- <image
|
|
|
- src="/static/mang-buding.png"
|
|
|
- class="image"
|
|
|
- />
|
|
|
- <text class="text">布丁</text>
|
|
|
- </view>
|
|
|
- <view class="flex-col items-center grid-item">
|
|
|
- <image
|
|
|
- src="/static/mang-pdangao.png"
|
|
|
- class="image"
|
|
|
- />
|
|
|
- <text class="text">纸杯蛋糕</text>
|
|
|
- </view>
|
|
|
- <view class="flex-col items-center grid-item">
|
|
|
- <image
|
|
|
- src="/static/mang-pisa.png"
|
|
|
- class="image"
|
|
|
- />
|
|
|
- <text class="text">披萨</text>
|
|
|
- </view>
|
|
|
- <view class="flex-col items-center grid-item">
|
|
|
- <image
|
|
|
- src="/static/mang-tusi.png"
|
|
|
- class="image"
|
|
|
- />
|
|
|
- <text class="text">吐司</text>
|
|
|
- </view>
|
|
|
- <view class="flex-col items-center grid-item">
|
|
|
- <image
|
|
|
- src="/static/mang-all.png"
|
|
|
- class="image"
|
|
|
- />
|
|
|
- <text class="text">全部</text>
|
|
|
+ <text class="text">{{item.cate_name}}</text>
|
|
|
</view>
|
|
|
</view>
|
|
|
|
|
|
<view class="p-tabs align-center justify-between">
|
|
|
- <view class="flex-col text-wrapper">
|
|
|
+ <view class="flex-col text-wrapper" :class="{active: i === tabCurrentIndex}"
|
|
|
+ v-for="(item,i) in tabs" :key="i" @tap="tapTab(i)"
|
|
|
+ >
|
|
|
<image
|
|
|
src="/static/mang-tabbg.png"
|
|
|
class="image_8"
|
|
|
/>
|
|
|
- <text class="text_9">智能排序</text>
|
|
|
- </view>
|
|
|
- <view class="flex-col text-wrapper active">
|
|
|
- <image
|
|
|
- src="/static/mang-tabbg.png"
|
|
|
- class="image_8"
|
|
|
- />
|
|
|
- <text class="text_9">距离最近</text>
|
|
|
+ <text class="text_9">{{item.name}}</text>
|
|
|
</view>
|
|
|
- <view class="flex-col text-wrapper">
|
|
|
- <image
|
|
|
- src="/static/mang-tabbg.png"
|
|
|
- class="image_8"
|
|
|
- />
|
|
|
- <text class="text_9">评分最高</text>
|
|
|
- </view>
|
|
|
</view>
|
|
|
|
|
|
<view class="p-list">
|
|
|
- <view class="flex-row section_2 view_6" v-for="(item,idx) in 3" :key="idx" @tap="navTo('/pages/mang/detail')">
|
|
|
+ <view class="flex-row section_2 view_6" v-for="(item,idx) in tabs[tabCurrentIndex].list" :key="idx" @tap="navTo('/pages/mang/detail')">
|
|
|
<image
|
|
|
- src="/static/temp/pro.png"
|
|
|
+ :src="item.goods_img"
|
|
|
class="group_11"
|
|
|
mode="aspectFill"
|
|
|
/>
|
|
|
<view class="flex-col text_21 view_7">
|
|
|
- <text class="text_25 clamp">稻香村糕点随机盲盒</text>
|
|
|
+ <text class="text_25 clamp">{{item.goods_name}}</text>
|
|
|
<view class="stars align-center">
|
|
|
<image
|
|
|
src="/static/mang_star.png"
|
|
|
class="image_14"
|
|
|
- v-for="(item,idx) in 3"
|
|
|
+ v-for="(item,idx) in item.rank"
|
|
|
:key="idx"
|
|
|
/>
|
|
|
</view>
|
|
@@ -109,13 +56,13 @@
|
|
|
<view class="flex-row group_16">
|
|
|
<view class="group_17">
|
|
|
<text class="text_27">¥</text>
|
|
|
- <text class="text_28">38.8</text>
|
|
|
+ <text class="text_28">{{item.shop_price}}</text>
|
|
|
</view>
|
|
|
- <text class="text_29">¥44~68</text>
|
|
|
+ <text class="text_29">¥{{item.market_price}}</text>
|
|
|
</view>
|
|
|
</view>
|
|
|
- <text class="text_30">898m</text>
|
|
|
- <view class="flex-col text-wrapper_2"><text class="text_23 text_31 clamp">仅剩3份</text></view>
|
|
|
+ <text class="text_30" v-if="item.distance">{{item.distance}}</text>
|
|
|
+ <view class="flex-col text-wrapper_2"><text class="text_23 text_31 clamp">仅剩{{item.num}}份</text></view>
|
|
|
</view>
|
|
|
</view>
|
|
|
|
|
@@ -133,8 +80,18 @@ export default {
|
|
|
},
|
|
|
data() {
|
|
|
return {
|
|
|
- ads: [{ title: '1已帮助减少2486g数量的食品浪费' }, { title: '2已帮助减少2486g数量的食品浪费' }],
|
|
|
+ ads: [],
|
|
|
bgColor:'transparent',
|
|
|
+ cats:[
|
|
|
+ {img:'/static/mang-all.png',name:'全部'},
|
|
|
+ ],
|
|
|
+ tabCurrentIndex: 0,
|
|
|
+ tabs:[
|
|
|
+ {name:'智能排序',type:1,loadingType: 'more', list: [], page: 1,loaded:false},
|
|
|
+ {name:'距离最近',type:2,loadingType: 'more', list: [], page: 1,loaded:false},
|
|
|
+ {name:'评分最高',type:3,loadingType: 'more', list: [], page: 1,loaded:false},
|
|
|
+ ],
|
|
|
+ pageSize: 20,
|
|
|
};
|
|
|
},
|
|
|
onPageScroll(e) {
|
|
@@ -146,10 +103,80 @@ export default {
|
|
|
this.bgColor = "transparent";
|
|
|
}
|
|
|
},
|
|
|
+ onShow() {
|
|
|
+ this.getList('refresh')
|
|
|
+ this.getCats();
|
|
|
+ this.getAds();
|
|
|
+ },
|
|
|
+ onPullDownRefresh() {
|
|
|
+ this.getList('refresh')
|
|
|
+ this.getCats();
|
|
|
+ this.getAds();
|
|
|
+ },
|
|
|
+ onReachBottom() {
|
|
|
+ this.getList()
|
|
|
+ },
|
|
|
methods:{
|
|
|
- async chooseLoc(){
|
|
|
- this.navTo('/pages/address/address')
|
|
|
- }
|
|
|
+ getAds(){
|
|
|
+ this.ads=[{ title: '1已帮助减少2486g数量的食品浪费' }, { title: '2已帮助减少2486g数量的食品浪费' }]
|
|
|
+ },
|
|
|
+ async getCats(){
|
|
|
+ let res = await this.$request('goods.catelist')
|
|
|
+ let cats =res.data || [];
|
|
|
+ this.cats = cats.slice(0,7);
|
|
|
+ this.cats.push({cate_logo:'/static/mang-all.png',cate_name:'全部'})
|
|
|
+ },
|
|
|
+ async getList(source){
|
|
|
+ //这里是将订单挂载到tab列表下
|
|
|
+ let index = this.tabCurrentIndex;
|
|
|
+ let navItem = this.tabs[index];
|
|
|
+ if (source === 'refresh') {
|
|
|
+ if(navItem.loadingType == 'loading'){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ navItem.loadingType = 'more';
|
|
|
+ navItem.page=1;
|
|
|
+ navItem.list=[];
|
|
|
+ navItem.loaded=false;
|
|
|
+ }
|
|
|
+ if (navItem.loadingType === 'loading' || navItem.loadingType == 'noMore') {
|
|
|
+ //防止重复加载
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ navItem.loadingType = 'loading';
|
|
|
+ let res = await this.$request('goods.list',{
|
|
|
+ sort_type:navItem.type,
|
|
|
+ page: navItem.page,
|
|
|
+ limit: this.pageSize
|
|
|
+ });
|
|
|
+ uni.stopPullDownRefresh();
|
|
|
+ let result = res.data.row || [];
|
|
|
+ if ( this.pageSize > result.length) {
|
|
|
+ navItem.loadingType = 'noMore';
|
|
|
+ } else {
|
|
|
+ navItem.loadingType = 'more';
|
|
|
+ }
|
|
|
+ // 页数加一
|
|
|
+ navItem.page++;
|
|
|
+ navItem.loaded = true;
|
|
|
+ if(source === 'refresh'){
|
|
|
+ navItem.page=2;
|
|
|
+ navItem.list = result;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ result.forEach(item => {
|
|
|
+ navItem.list.push(item);
|
|
|
+ });
|
|
|
+ },
|
|
|
+ tapTab(idx){
|
|
|
+ if(idx === this.tabCurrentIndex){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ this.tabCurrentIndex = idx;
|
|
|
+ this.getList('refresh');
|
|
|
+ },
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
};
|
|
|
</script>
|