|
@@ -1,4 +1,5 @@
|
|
<template>
|
|
<template>
|
|
|
|
+ <!-- #ifdef H5 -->
|
|
<zj-page-layout
|
|
<zj-page-layout
|
|
:hasFooter="false"
|
|
:hasFooter="false"
|
|
:isScroll="true"
|
|
:isScroll="true"
|
|
@@ -9,19 +10,24 @@
|
|
<view class="header-container">
|
|
<view class="header-container">
|
|
<u-tabs
|
|
<u-tabs
|
|
:list="categoryList"
|
|
:list="categoryList"
|
|
- @click="click"
|
|
|
|
- :scrollable="false"
|
|
|
|
|
|
+ :current="categoryCurrent"
|
|
|
|
+ @click="clickCategory"
|
|
|
|
+ keyName="categoryName"
|
|
|
|
+ :scrollable="categoryList.length === 4 ? false : true"
|
|
lineColor="#01C30B">
|
|
lineColor="#01C30B">
|
|
</u-tabs>
|
|
</u-tabs>
|
|
<u-search
|
|
<u-search
|
|
placeholder="输入商品名称搜索"
|
|
placeholder="输入商品名称搜索"
|
|
:showAction="false"
|
|
:showAction="false"
|
|
clearabled
|
|
clearabled
|
|
- v-model="keyword">
|
|
|
|
|
|
+ v-model="keyword"
|
|
|
|
+ @search="refreshList"
|
|
|
|
+ @clear="refreshList">
|
|
</u-search>
|
|
</u-search>
|
|
<u-tabs
|
|
<u-tabs
|
|
:list="tabList"
|
|
:list="tabList"
|
|
- @click="click"
|
|
|
|
|
|
+ :current="tabCurrent"
|
|
|
|
+ @click="clickTab"
|
|
:scrollable="false"
|
|
:scrollable="false"
|
|
lineColor="#01C30B">
|
|
lineColor="#01C30B">
|
|
</u-tabs>
|
|
</u-tabs>
|
|
@@ -29,24 +35,22 @@
|
|
</template>
|
|
</template>
|
|
|
|
|
|
<view class="common-goods-list">
|
|
<view class="common-goods-list">
|
|
- <view class="item" @tap="$navPage(`/pages/goods/detail`)">
|
|
|
|
|
|
+ <view class="item" v-for="(item, index) in dataList" :key="index" @tap="toGoodsDetail(item.id)">
|
|
<view class="top">
|
|
<view class="top">
|
|
<image src="@/static/common/logo.png"></image>
|
|
<image src="@/static/common/logo.png"></image>
|
|
<view class="user">
|
|
<view class="user">
|
|
- <view class="name">张三</view>
|
|
|
|
- <view class="time">23小时前发布</view>
|
|
|
|
|
|
+ <view class="name">{{item.userName}}</view>
|
|
|
|
+ <view class="time">{{item.createTime}}</view>
|
|
</view>
|
|
</view>
|
|
- <view class="price">¥1888.00</view>
|
|
|
|
|
|
+ <view class="price">{{item.amount | priceFilter2}}</view>
|
|
</view>
|
|
</view>
|
|
- <view class="title">商品名称</view>
|
|
|
|
- <view class="des">商品描述</view>
|
|
|
|
|
|
+ <view class="title">{{item.title}}</view>
|
|
|
|
+ <view class="des">{{item.content}}</view>
|
|
<view class="imgs">
|
|
<view class="imgs">
|
|
- <image src="@/static/user/other_speech.png"></image>
|
|
|
|
- <image src="@/static/user/other_speech.png"></image>
|
|
|
|
- <image src="@/static/user/other_speech.png"></image>
|
|
|
|
|
|
+ <image :src="imgUrl + it.imgUrl" v-for="(it, idx) in item.goodsFiles" :key="idx"></image>
|
|
</view>
|
|
</view>
|
|
<view class="bottom">
|
|
<view class="bottom">
|
|
- <view class="left-location">天河区棠下</view>
|
|
|
|
|
|
+ <view class="left-location"><text class="iconfont icon-dingwei"></text>{{item.address}}</view>
|
|
<view class="right-stats">
|
|
<view class="right-stats">
|
|
<view class="it">
|
|
<view class="it">
|
|
<text class="iconfont icon-dianzan"></text>
|
|
<text class="iconfont icon-dianzan"></text>
|
|
@@ -64,75 +68,143 @@
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
+
|
|
|
|
+ <Loading :loadStatus="loadStatus" :dataList="dataList" />
|
|
</zj-page-layout>
|
|
</zj-page-layout>
|
|
|
|
+ <!-- #endif -->
|
|
|
|
+ <!-- #ifndef H5 -->
|
|
|
|
+ <web-view :src="webViewHref('/pages/goods/list')"></web-view>
|
|
|
|
+ <!-- #endif -->
|
|
</template>
|
|
</template>
|
|
|
|
|
|
<script>
|
|
<script>
|
|
|
|
+ // #ifdef H5
|
|
export default {
|
|
export default {
|
|
data() {
|
|
data() {
|
|
return {
|
|
return {
|
|
imgUrl: this.$imageUrl,
|
|
imgUrl: this.$imageUrl,
|
|
- categoryList: [
|
|
|
|
- {name: '家用空调', value: 1},
|
|
|
|
- {name: '商用空调', value: 2},
|
|
|
|
- {name: '冷冻空调', value: 3},
|
|
|
|
- {name: '特种空调', value: 4},
|
|
|
|
- ],
|
|
|
|
|
|
+ categoryList: [],
|
|
|
|
+ categoryId: '',
|
|
tabList: [
|
|
tabList: [
|
|
- {name: '默认顺序', value: 1},
|
|
|
|
- {name: '在售商品', value: 2},
|
|
|
|
- {name: '离我最近', value: 3},
|
|
|
|
- {name: '人气最高', value: 4},
|
|
|
|
|
|
+ {name: '默认顺序', value: 0},
|
|
|
|
+ {name: '在售商品', value: 1},
|
|
|
|
+ {name: '离我最近', value: 2},
|
|
|
|
+ {name: '人气最高', value: 3},
|
|
],
|
|
],
|
|
|
|
+ tabCurrent: 0,
|
|
keyword: '',
|
|
keyword: '',
|
|
dataList: [],
|
|
dataList: [],
|
|
pageNum: 1,
|
|
pageNum: 1,
|
|
|
|
+ loadStatus: 0,
|
|
refresherTriggered: false,
|
|
refresherTriggered: false,
|
|
}
|
|
}
|
|
},
|
|
},
|
|
|
|
|
|
- async onLoad() {
|
|
|
|
- // await this.getList()
|
|
|
|
|
|
+ computed:{
|
|
|
|
+ categoryCurrent() {
|
|
|
|
+ if(this.categoryId) {
|
|
|
|
+ return this.categoryList.map(item => item.categoryId).indexOf(this.categoryId)
|
|
|
|
+ }else {
|
|
|
|
+ return 0
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ async onLoad({categoryId, keyword}) {
|
|
|
|
+ console.log(categoryId);
|
|
|
|
+ console.log(keyword);
|
|
|
|
+ this.categoryId = categoryId;
|
|
|
|
+ this.keyword = keyword;
|
|
|
|
+ await this.getCategory();
|
|
|
|
+ await this.getList();
|
|
},
|
|
},
|
|
|
|
|
|
methods: {
|
|
methods: {
|
|
|
|
+ async getCategory() {
|
|
|
|
+ return new Promise((resolve, reject) => {
|
|
|
|
+ this.$api.get('/goods/category/list')
|
|
|
|
+ .then(res => {
|
|
|
|
+ this.categoryList = res.data || [];
|
|
|
|
+ }).finally(res => {
|
|
|
|
+ resolve(1);
|
|
|
|
+ })
|
|
|
|
+ })
|
|
|
|
+ },
|
|
|
|
+
|
|
//获取列表数据
|
|
//获取列表数据
|
|
async getList() {
|
|
async getList() {
|
|
- this.$api.post('/xxx/xxxlist', {
|
|
|
|
|
|
+ let params = {};
|
|
|
|
+ if(this.tabCurrent === 1) {
|
|
|
|
+ params.status = '1';
|
|
|
|
+ }else if(this.tabCurrent === 2) {
|
|
|
|
+ params.lng = this.lng;
|
|
|
|
+ params.lat = this.lat;
|
|
|
|
+ }else if(this.tabCurrent === 3) {
|
|
|
|
+ params.visitOrderBy = 'YES';
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ this.$api.get('/goods/list', {
|
|
pageNum: this.pageNum,
|
|
pageNum: this.pageNum,
|
|
pageSize: 10,
|
|
pageSize: 10,
|
|
|
|
+ categoryId: this.categoryId,
|
|
|
|
+ title: this.keyword,
|
|
|
|
+ ...params
|
|
}).then(res => {
|
|
}).then(res => {
|
|
this.loadStatus = 0;
|
|
this.loadStatus = 0;
|
|
let list = res.data.records;
|
|
let list = res.data.records;
|
|
- if(list.length < 10){
|
|
|
|
- this.loadStatus = 2;
|
|
|
|
|
|
+ if (list.length < 10) {
|
|
|
|
+ this.loadStatus = 2;
|
|
}
|
|
}
|
|
this.dataList = this.dataList.concat(list);
|
|
this.dataList = this.dataList.concat(list);
|
|
}).catch(() => {
|
|
}).catch(() => {
|
|
- this.loadStatus = 2;
|
|
|
|
- }).finally(res => {
|
|
|
|
- this.refresherTriggered = false;
|
|
|
|
- })
|
|
|
|
|
|
+ this.loadStatus = 2;
|
|
|
|
+ })
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ clickCategory(item) {
|
|
|
|
+ this.categoryId = item.categoryId;
|
|
|
|
+ this.refreshList();
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ clickTab(item) {
|
|
|
|
+ this.tabCurrent = item.value;
|
|
|
|
+ this.refreshList();
|
|
},
|
|
},
|
|
|
|
|
|
// 滚动到底部
|
|
// 滚动到底部
|
|
scrolltolower(e) {
|
|
scrolltolower(e) {
|
|
- if (this.loadStatus === 0) {
|
|
|
|
- this.pageNum++;
|
|
|
|
- this.getList();
|
|
|
|
- }
|
|
|
|
|
|
+ if (this.loadStatus === 0) {
|
|
|
|
+ this.pageNum++;
|
|
|
|
+ this.getList();
|
|
|
|
+ }
|
|
},
|
|
},
|
|
|
|
|
|
// 触发下拉刷新
|
|
// 触发下拉刷新
|
|
- refresherrefresh(e) {
|
|
|
|
- this.refresherTriggered = true;
|
|
|
|
- this.dataList = [];
|
|
|
|
- this.pageNum = 1;
|
|
|
|
- this.getList();
|
|
|
|
|
|
+ async refresherrefresh(e) {
|
|
|
|
+ this.refresherTriggered = true;
|
|
|
|
+ // await this.getCategory();
|
|
|
|
+ this.refreshList();
|
|
|
|
+ this.refresherTriggered = false;
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ refreshList() {
|
|
|
|
+ this.dataList = [];
|
|
|
|
+ this.pageNum = 1;
|
|
|
|
+ this.getList();
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ toGoodsDetail(id) {
|
|
|
|
+ this.$navToPage({
|
|
|
|
+ url: `/pages/goods/detail?${id}`
|
|
|
|
+ })
|
|
},
|
|
},
|
|
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ // #endif
|
|
|
|
+ // #ifndef H5
|
|
|
|
+
|
|
|
|
+ // #endif
|
|
</script>
|
|
</script>
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
<style lang="scss" scoped>
|