You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
357 lines
11 KiB
357 lines
11 KiB
<template>
|
|
<!-- 商户列表 -->
|
|
<view>
|
|
<loadlogo v-if="!loadlogo" />
|
|
<view class="content" v-if="loadlogo">
|
|
<far-bottom></far-bottom>
|
|
<filtertab @selectAreaid="selectAreaid" @selectClassid="selectClassid" @selectClassTwoid="selectClassTwoid"
|
|
@selectOrders="selectOrders" :requestType="'2'" :cate_one="cate_one" :cate_two="cate_two" :title="title" @getOrderId="shopInit"></filtertab>
|
|
<view class="shop b-color-f8">
|
|
<block v-if="!!shopInfoList && shopInfoList.length>0">
|
|
<view class="shangjia">
|
|
<view class="shangjia-i" :class="{shangjiaISty: item2.goods.length == 0}" v-for="(item2, key2) in shopInfoList"
|
|
:key="key2">
|
|
<view class="a shangjia-i-t" @click="navigateTo(item2.shop_url)">
|
|
<view class="shangjia-i-l">
|
|
<image class="image" :src="item2.logo" mode="aspectFill"></image>
|
|
</view>
|
|
<view class="shangjia-i-r">
|
|
<view class="shangjia-i-r-d">
|
|
<view class="dis-flex flex-y-center flex-x-between">
|
|
<view class="shop3-title-width shangjia-i-r-t1 over-omit onelist-hidden">{{ item2.storename }}</view>
|
|
<view class="store-containerIcon dis-flex flex-y-center">
|
|
<image :src="imgfixUrls + 'homePage/home_logo2.png'" class="image30" v-if="item2['attestation']['attestation'] == 2" />
|
|
<!-- <img src="@imgfixUrls + 'merchant/qyrz.png" /> -->
|
|
<image :src="imgfixUrls + 'homePage/home_logo3.png'" class="image30" v-if="item2['attestation']['bondflag'] == 1" />
|
|
<image :src="imgfixUrls + 'diypage/720icon.png'" mode="" class="m-right10" v-if="item2.panorama===1"></image>
|
|
<image :src="imgfixUrls + 'diypage/videoicon.png'" mode="" v-if="item2.videourl===1"></image>
|
|
</view>
|
|
</view>
|
|
<view class="shangjia-i-r-t2 over-omit dis-flex flex-x-between flex-y-center">
|
|
<view class="dis-flex flex-y-center">
|
|
<view class="shangjia-i-r-t2-icon">
|
|
<view class="star star-dark">
|
|
<view class="i icon iconfont icon-shoucangxiao" v-for="(item3, key3) in 5" :key="key3"></view>
|
|
</view>
|
|
<view class="star star-light">
|
|
<view class="star-width" :style="'width:'+(item2.score / 5) * 100+'%;'">
|
|
<view class="i icon iconfont icon-shoucangxiao" v-for="(item3, key3) in 5" :key="key3"></view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view class="f-28 col-6 star-grade">{{item2.score}}分</view>
|
|
</view>
|
|
<view class="shop3-distance f-24 col-6" v-if="!!item2.distance">{{item2.distance}}</view>
|
|
</view>
|
|
<view class="shangjia-i-r-t3 over-omit">
|
|
<view class="p" v-html="item2.storehours"></view>
|
|
</view>
|
|
<view class="shangjia-i-r-t4 over-omit">
|
|
<view v-for="(item3,index3) in item2.tags" class="tags_view">{{item3}}</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view class="shangjia-i-b" v-if="((shopFold && shopFoldIndex == key2) || (shopFoldIndex !== key2)) && item2.goods.length > 0">
|
|
<view class="shangjia-i-b-t1" v-if="item2.goods.length <= 2">
|
|
<view class="shangjia-i-b-i" v-for="(tag, key3) in item2.goods" :key="key3" v-if="key3 == 0">
|
|
<view class="em" :class="tag.css">{{ tag.tag }}</view>
|
|
<view class="span">{{ tag.name }}</view>
|
|
</view>
|
|
</view>
|
|
<view class="shangjia-i-b-t1" @click="shangjiaFold(key2)" v-if="item2.goods.length > 2">
|
|
<view class="i icon iconfont icon-unfold"></view>
|
|
<view class="shangjia-i-b-i" v-for="(tag, key3) in item2.goods" :key="key3" v-if="key3 == 0">
|
|
<view class="em" :class="tag.css">{{ tag.tag }}</view>
|
|
<view class="span">{{ tag.name }}</view>
|
|
</view>
|
|
</view>
|
|
<view class="shangjia-i-b-i" v-for="(tag, key3) in item2.goods" :key="key3" v-if="item2.goods.length == 2 && key3 == 1">
|
|
<view class="em" :class="tag.css">{{ tag.tag }}</view>
|
|
<view class="span">{{ tag.name }}</view>
|
|
</view>
|
|
<view class="shangjia-i-b-t2" v-if="item2.goods.length > 2">
|
|
<view class="em" :class="tag.css" v-for="(tag, key3) in item2.goods" :key="key3" v-if="key3 > 0">{{ tag.tag }}</view>
|
|
</view>
|
|
</view>
|
|
<view class="shangjia-i-b" v-if="!shopFold && shopFoldIndex == key2 && item2.goods.length > 2">
|
|
<view class="shangjia-i-b-t1" @click="shangjiaUpFold(key2)">
|
|
<view class="i icon iconfont icon-fold"></view>
|
|
<view class="shangjia-i-b-i" v-for="(tag, key3) in item2.goods" :key="key3">
|
|
<view class="em" :class="tag.css">{{ tag.tag }}</view>
|
|
<view class="span">{{ tag.name }}</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<load-more :isMore="loadingMore"></load-more>
|
|
</view>
|
|
</block>
|
|
<block v-else>
|
|
<none-mores></none-mores>
|
|
</block>
|
|
</view>
|
|
</view>
|
|
<GoTopBtn :page-scroll="pageScroll"></GoTopBtn>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import App from "@/common/js/app.js"
|
|
import Loadlogo from '@/components/template/loadlogo'
|
|
import loadMore from '@/components/template/loadmore.vue'
|
|
import GoTopBtn from "@/components/template/GoTopBtn.vue"
|
|
import listMixin from "@/common/js/pageListMixin.js"
|
|
import noneMores from '@/components/template/nonemores.vue'
|
|
// #ifdef H5
|
|
import wxApi from "@/common/js/wxApi.js"
|
|
// #endif
|
|
import filtertab from "@/components/template/filtertab.vue"
|
|
export default {
|
|
mixins: [listMixin],
|
|
data() {
|
|
return {
|
|
showTabbar: false,
|
|
homeInfoData: {},
|
|
goodsListData: [],
|
|
loadlogo: false, //页面是否加载完成,
|
|
currentType: null,
|
|
current_page: 1,
|
|
order: "",
|
|
cate_one: "",
|
|
cate_two: "",
|
|
region_id: "",
|
|
lat: "",
|
|
lng: "",
|
|
shopInfoList: [],
|
|
pageScroll: 0,
|
|
total: null,
|
|
shopFold: true,
|
|
shopFoldIndex: -1,
|
|
loadingMore: true,
|
|
title:'',
|
|
search:'',
|
|
onPage:true
|
|
}
|
|
},
|
|
watch: {
|
|
|
|
},
|
|
components: {
|
|
Loadlogo,
|
|
GoTopBtn,
|
|
loadMore,
|
|
noneMores,
|
|
filtertab
|
|
},
|
|
computed: {
|
|
agencyData() {
|
|
return uni.getStorageSync('agencyData')
|
|
},
|
|
curLoction(){
|
|
return uni.getStorageSync('curLoction')
|
|
}
|
|
},
|
|
onLoad(option) {
|
|
let _this = this;
|
|
_this.setData({
|
|
cate_one: option.cate_one > 0 ? option.cate_one : "",
|
|
cate_two: option.cate_two > 0 ? option.cate_two : "",
|
|
title: option.title? option.title : "",
|
|
search:option.search?option.search:""
|
|
})
|
|
|
|
console.log(_this.cate_one,_this.cate_two,_this.title)
|
|
_this.shopInit('',option.title,true)
|
|
},
|
|
methods: {
|
|
shopInit(orderid,title,flag) {
|
|
if(this.onPage && !flag) return
|
|
let _this = this;
|
|
// _this.title = title;
|
|
_this.setData({
|
|
orderid
|
|
});
|
|
_this.getShoplist(1, orderid, _this.cate_one, _this.cate_two, _this.agencyData.areaid, _this.curLoction.latitude, _this.curLoction.longitude)
|
|
},
|
|
getShoplist(page = 1, order = "", cate_one = "", cate_two = "", region_id = "", lat = "", lng = "", isPage = false) {
|
|
let _this = this,
|
|
requestData = {
|
|
page,
|
|
order,
|
|
cate_one,
|
|
cate_two,
|
|
region_id,
|
|
lat,
|
|
lng,
|
|
is_total: 1,
|
|
search:_this.search
|
|
};
|
|
App._post_form('&p=store&do=homeList', requestData, res => {
|
|
let storeList = res.data.list;
|
|
if (!!storeList && storeList.length > 0) {
|
|
for (let i = 0; i < storeList.length; i++) {
|
|
let goodsList = [];
|
|
for (let j in storeList[i].goods) {
|
|
let goodsData = storeList[i].goods[j];
|
|
if (goodsData !== '') {
|
|
|
|
if (j == 'active') {
|
|
goodsData.css = 'qiang'
|
|
goodsData.tag = '抢'
|
|
} else if (j == 'coupon') {
|
|
goodsData.css = 'hui'
|
|
goodsData.tag = '券'
|
|
} else if (j == 'fightgroup') {
|
|
goodsData.css = 'pin'
|
|
goodsData.tag = '拼'
|
|
} else if (j == 'groupon') {
|
|
goodsData.css = 'tuan'
|
|
goodsData.tag = '团'
|
|
} else if (j == 'halfcard') {
|
|
goodsData.css = 'ka'
|
|
goodsData.tag = '卡'
|
|
} else if (j == 'packages') {
|
|
goodsData.css = 'li'
|
|
goodsData.tag = '礼'
|
|
} else if (j == 'bargain') {
|
|
goodsData.css = 'kan'
|
|
goodsData.tag = '砍'
|
|
}
|
|
goodsList.push(goodsData);
|
|
}
|
|
}
|
|
storeList[i].goods = goodsList;
|
|
}
|
|
}
|
|
if (isPage) {
|
|
if (storeList.length > 0) {
|
|
_this["shopInfoList"].push(...storeList);
|
|
} else {
|
|
_this.loadingMore = true;
|
|
}
|
|
} else {
|
|
_this.setData({
|
|
shopInfoList: storeList,
|
|
loadingMore: storeList.length === 0 || _this.current_page === res.data.total,
|
|
total: res.data.total
|
|
})
|
|
}
|
|
}, false, () => {
|
|
_this.search = '';
|
|
_this.loadlogo = true;
|
|
})
|
|
},
|
|
navigateTo(url) {
|
|
let isHttpUrl = url.indexOf('https') !== -1;
|
|
if (isHttpUrl) {
|
|
location.href = url;
|
|
} else {
|
|
App.navigationTo({
|
|
url: url
|
|
})
|
|
}
|
|
},
|
|
shangjiaFold(key2) {
|
|
this.shopFold = false
|
|
this.shopFoldIndex = key2
|
|
},
|
|
shangjiaUpFold(key2) {
|
|
this.shopFold = true
|
|
this.shopFoldIndex = key2
|
|
},
|
|
selectAreaid(cityItemData) {
|
|
if(this.onPage){
|
|
this.onPage = false;
|
|
return
|
|
}
|
|
let _this = this,
|
|
{
|
|
order,
|
|
cate_one,
|
|
cate_two
|
|
} = _this;
|
|
_this.setData({
|
|
region_id: cityItemData.id,
|
|
current_page: 1,
|
|
})
|
|
_this.getShoplist(1, order, cate_one, cate_two, cityItemData.id, _this.curLoction.latitude, _this.curLoction.longitude);
|
|
},
|
|
selectClassid(classItemData) {
|
|
if(this.onPage) return
|
|
let _this = this,
|
|
{
|
|
order,
|
|
region_id
|
|
} = _this;
|
|
if (classItemData.list.length === 0) {
|
|
_this.getShoplist(1, order, classItemData.cate_one, "", region_id, _this.curLoction.latitude, _this.curLoction.longitude);
|
|
_this.setData({
|
|
current_page: 1,
|
|
})
|
|
}
|
|
_this.setData({
|
|
cate_one: classItemData.cate_one
|
|
});
|
|
// _this.title = '';
|
|
},
|
|
selectClassTwoid(classItemTwoData) {
|
|
if(this.onPage) return
|
|
let _this = this,
|
|
{
|
|
order,
|
|
region_id,
|
|
cate_one
|
|
} = _this;
|
|
_this.getShoplist(1, order, cate_one, classItemTwoData.cate_two, region_id, _this.curLoction.latitude, _this.curLoction.longitude);
|
|
_this.setData({
|
|
cate_two: classItemTwoData.cate_two,
|
|
current_page: 1,
|
|
});
|
|
// _this.title = '';
|
|
},
|
|
selectOrders(ordersItem) {
|
|
if(this.onPage) return
|
|
let _this = this,
|
|
{
|
|
region_id,
|
|
cate_one,
|
|
cate_two
|
|
} = _this;
|
|
_this.getShoplist(1, ordersItem.val, cate_one, cate_two, region_id, _this.curLoction.latitude, _this.curLoction.longitude);
|
|
_this.setData({
|
|
order: ordersItem.val,
|
|
current_page: 1
|
|
})
|
|
}
|
|
},
|
|
mounted() {
|
|
|
|
},
|
|
onReachBottom(e) {
|
|
console.log('Bottom')
|
|
let _this = this,
|
|
{
|
|
order,
|
|
cate_one,
|
|
cate_two,
|
|
region_id,
|
|
current_page,
|
|
total
|
|
} = _this;
|
|
if (current_page >= total) {
|
|
_this.loadingMore = true;
|
|
return false;
|
|
}
|
|
_this.getShoplist(++_this.current_page, order, cate_one, cate_two, region_id, _this.curLoction.latitude, _this.curLoction.longitude, true)
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss">
|
|
@import "../../../common/css/old_diyPages";
|
|
|
|
page {
|
|
background-color: #f7f7f7;
|
|
}
|
|
</style>
|
|
|