<template>
|
<view class="container-trade" :style="{'min-height':hidefooter?'':'calc(100vh - 20rpx)'}">
|
<view class="search-container m-t-12 flex" v-if="!hidefooter">
|
<view class="flex m-r-20">
|
<view class="m-r-10" style="line-height: 80rpx;" @click="changeSearchType">
|
{{type=='category'?'按分类':'按店铺'}}
|
</view>
|
<u-icon name="arrow-down"></u-icon>
|
|
</view>
|
<view class="flex1 input">
|
<u-input :placeholder="type==='category'?'请输入分类名称':'请输入店铺名称'" v-model="query.name" clearable
|
@confirm="buttonSearchFlow" @clear="()=>{
|
$nextTick(()=>{buttonSearchFlow()})
|
}">
|
<template slot="suffix">
|
<uni-icons color="#20613D" type="search" size="24" @click="buttonSearchFlow"></uni-icons>
|
</template>
|
</u-input>
|
</view>
|
</view>
|
<view class="canteen-items" :style="{'min-height':hidefooter?'':'calc(100vh - 340rpx)'}">
|
<view v-if="(!list||list.length==0)&&true" style="width: 100%;min-height: 200rpx;">
|
|
</view>
|
<no-data v-if="(!list||list.length==0)&&true" style="width: 100%;margin-top: 220rpx;"></no-data>
|
<view class="" style="display: flex;flex-wrap: inherit;" v-else>
|
<view class="type-list">
|
<view v-for="(item,index) of list" @click="changeType(item)"
|
:class="[query.categoryId===item.id?'current':'']" :key="index" class="p10 flex type-item">
|
{{item.name || '-'}}
|
</view>
|
</view>
|
<view class="canteen-item-container">
|
<!-- <view class="component-filter-container" style="padding-top: 12rpx;">-->
|
<!-- <view class="flex1" @click="openParamPop">-->
|
<!-- 筛选-->
|
<!-- </view>-->
|
<!-- <view class="flex1">-->
|
<!-- 颜色<image src="../../../static/common/icon-arrow-down.png" class="icon-arrow-down"></image>-->
|
<!-- </view>-->
|
<!-- <view class="flex1">-->
|
<!-- 筛选<image src="../../../static/common/icon-arrow-down.png" class="icon-arrow-down"></image>-->
|
<!-- </view>-->
|
<!-- </view>-->
|
<!-- <u-divider></u-divider>-->
|
<view class="flex">
|
<view v-for="(item,index) of listFilter" :key="item.id" class="canteen-item list"
|
@click.stop="toDetailList(item)">
|
<view class="m-r-10">
|
<!-- @click.stop="previewImg(item.imageUrl)" -->
|
<image :src="item.imageUrl" :class="[!item.stock?'':'']" mode="scaleToFill"
|
class="cover" :lazy-load="true">
|
</image>
|
</view>
|
<view class="cateen_infos list">
|
<view class="title">{{item.name}}</view>
|
<view class="price">¥{{item.priceLow || 0}}-{{item.priceHigh||0}}</view>
|
<view class="desc">在售 {{item.stock||'0'}} 扎</view>
|
</view>
|
|
</view>
|
<view style="padding-bottom:40rpx">
|
</view>
|
</view>
|
<footer-msg v-if="!hidefooter" :more="page.total>0&&page.total>page.current*page.size"></footer-msg>
|
|
</view>
|
</view>
|
|
</view>
|
|
|
|
<view style="min-height:100rpx" v-if="!hidefooter">
|
</view>
|
<common-footer flg="1" v-if="!hidefooter">></common-footer>
|
|
<uni-popup ref="popup_param" type="bottom">
|
<view class="component-popup_input_all" v-if="currentCategory&¤tCategory.params">
|
<view class="text-center m-b-40" style="font-size: 48rpx;font-weight: 600;">商品参数设置</view>
|
<!-- 输入框-->
|
<view v-for="(item,i) in currentCategory.params" :key="i" class="m-t-20">
|
<view class="title topic-font" style="font-size: 40rpx;font-weight: 600;">{{item.name}}</view>
|
<view class="m-t-12 flex value-items">
|
<view class="value-item" @click="updateValue(item,each)" :class="[item.value===each?'cur':'']"
|
v-for="(each, j) in item.values" :key="j">
|
{{each || '-'}}
|
</view>
|
</view>
|
</view>
|
<view class="button-space"></view>
|
<view>
|
<view class="button-green button-white" @click="closeParamPop">关闭</view>
|
<view class="button-green" @click="updateParamsAndSearch">查询</view>
|
</view>
|
</view>
|
</uni-popup>
|
</view>
|
</template>
|
|
<script>
|
import {
|
mapState
|
} from 'vuex'
|
export default {
|
props: {
|
hidefooter: false,
|
catgoryTree: [],
|
supplierId: '',
|
},
|
data() {
|
return {
|
list: [],
|
showpop: false,
|
query: {
|
name: '',
|
categoryId: '',
|
},
|
currentCategory: {},
|
type: 'category', //supplier
|
|
|
}
|
},
|
// #ifdef PUB_CUSTOMER
|
onShareAppMessage() {
|
let that = this;
|
var name = that.currentInfo.customerDTO && that.currentInfo.customerDTO.name || that.currentInfo.supplierDTO &&
|
that.currentInfo.supplierDTO.name || that.currentInfo.partnerDTO && that.currentInfo.partnerDTO.name || ''
|
var url =
|
`/pages/home/home?shareId=${this.currentInfo&&this.currentInfo.id||''}&shareName=${name||''}`; //你的转发页面路径拼接参数
|
return {
|
title: "花满芫",
|
path: url,
|
}
|
},
|
onShareTimeline() {
|
let that = this;
|
var name = that.currentInfo.customerDTO && that.currentInfo.customerDTO.name || that.currentInfo.supplierDTO &&
|
that.currentInfo.supplierDTO.name || that.currentInfo.partnerDTO && that.currentInfo.partnerDTO.name || ''
|
var url =
|
`/pages/home/home?shareId=${this.currentInfo&&this.currentInfo.id||''}&shareName=${name||''}`; //你的转发页面路径拼接参数
|
return {
|
title: "花满芫",
|
path: url,
|
}
|
},
|
// #endif
|
onPullDownRefresh() {
|
this.$http.request('get', '/api/customer/flower/category/tree', {}).then(res => {
|
var data = res.data
|
this.list = data || []
|
if (this.list.length > 0) {
|
this.query.categoryId = this.list[0].id || ''
|
this.currentCategory = this.list[0] || {}
|
}
|
}).finally(() => {
|
uni.stopPullDownRefresh()
|
})
|
},
|
async onLoad(options) {
|
let selectId = options.categoryId || ''
|
//加载分类
|
this.$message.showLoading()
|
this.$http.request('get', '/api/customer/flower/category/tree', {}).then(res => {
|
this.$message.hideLoading()
|
var data = res.data
|
this.list = data || []
|
if (this.list.length > 0) {
|
if (selectId) {
|
for (var item of this.list) {
|
if (item.id == selectId) {
|
this.query.categoryId = item.id || ''
|
this.currentCategory = item
|
break
|
}
|
}
|
} else {
|
this.query.categoryId = this.list[0].id || ''
|
this.currentCategory = this.list[0] || {}
|
}
|
|
}
|
})
|
},
|
methods: {
|
changeSearchType() {
|
if (this.type == 'category') {
|
this.type = 'supplier'
|
this.query.name = ''
|
} else {
|
this.type = 'category'
|
this.query.name = ''
|
}
|
},
|
maxWeightPrice(item) {
|
var p = 0
|
if (item.weightA && item.weightA > p) {
|
p = item.weightA
|
}
|
if (item.weightB && item.weightB > p) {
|
p = item.weightB
|
}
|
if (item.weightC && item.weightC > p) {
|
p = item.weightC
|
}
|
if (item.weightD && item.weightD > p) {
|
p = item.weightD
|
}
|
if (item.weightE && item.weightE > p) {
|
p = item.weightE
|
}
|
if (item.weightO && item.weightO > p) {
|
p = item.weightO
|
}
|
return p
|
},
|
minWeightPrice(item) {
|
var p = -1
|
if (item.weightA && item.weightA < p) {
|
p = item.weightA
|
}
|
if (item.weightB && item.weightB < p) {
|
p = item.weightB
|
}
|
if (item.weightC && item.weightC < p) {
|
p = item.weightC
|
}
|
if (item.weightD && item.weightD < p) {
|
p = item.weightD
|
}
|
if (item.weightE && item.weightE < p) {
|
p = item.weightE
|
}
|
if (item.weightO && item.weightO < p) {
|
p = item.weightO
|
}
|
if (p < 0) {
|
p = 0
|
}
|
return p
|
},
|
refInit(catgoryTree) {
|
this.list = catgoryTree || []
|
if (this.list.length > 0) {
|
this.query.categoryId = this.list[0].id || ''
|
this.currentCategory = this.list[0] || {}
|
}
|
},
|
async updateParamsAndSearch() {
|
//todo 设置参数并查询
|
await this.refreshList()
|
this.$refs.popup_param.close()
|
},
|
openParamPop() {
|
//todo 同时设置查询参数为空吧
|
this.$refs.popup_param.open()
|
},
|
closeParamPop() {
|
this.$refs.popup_param.close()
|
},
|
buttonSearchFlow() {
|
|
if (this.type == 'category') {
|
//根据分类名称查询
|
this.$message.showLoading()
|
this.$http.request('get', '/api/customer/flower/category/tree', {
|
params: {
|
name: this.query.name || ''
|
}
|
}).then(res => {
|
var data = res.data
|
this.list = data || []
|
if (this.list.length > 0) {
|
this.query.categoryId = this.list[0].id || ''
|
this.currentCategory = this.list[0] || {}
|
} else {
|
this.query.categoryId = ''
|
this.currentCategory = {}
|
}
|
}).finally(() => {
|
this.$message.hideLoading()
|
})
|
} else {
|
uni.navigateTo({
|
url: '/sub_pages/customer/trade/list?' + 'supplierName=' + this.query.name
|
})
|
|
}
|
},
|
toDetailList(item) {
|
//去商品列表页面
|
console.log('toDetailList',this.supplierId)
|
uni.navigateTo({
|
url: `/sub_pages/customer/trade/list?categoryId=${item.id}&supplierId=${this.supplierId||''}`
|
})
|
},
|
changeType(item) {
|
this.query.categoryId = item.id || ''
|
this.currentCategory = item
|
},
|
|
|
async submitGood() {
|
var values = []
|
for (var item of this.list) {
|
if (item.shopnum > 0) {
|
values.push({
|
id: item.id,
|
num: item.shopnum
|
})
|
}
|
}
|
}
|
},
|
computed: {
|
...mapState({
|
address: state => {
|
return state.defaultaddress || {}
|
},
|
}),
|
listFilter() {
|
if (this.query.categoryId) {
|
var arr = []
|
if (this.list && this.list.length > 0) {
|
for (var item of this.list) {
|
if (item.id === this.query.categoryId || item.id === this.query.categoryId) {
|
// arr.push(item)
|
return item.children || []
|
}
|
}
|
}
|
return arr
|
} else {
|
return []
|
}
|
|
},
|
}
|
}
|
</script>
|
|
<style lang="scss" scoped>
|
.container-trade {
|
background-color: #FFFFFF;
|
padding-top: 20rpx;
|
|
.search-container {
|
margin: 0rpx 30rpx 20rpx 30rpx;
|
}
|
|
|
|
.type-list {
|
max-width: 178rpx;
|
width: 178rpx;
|
min-width: 178rpx;
|
background: #EEF7F5;
|
border-radius: 8rpx;
|
min-height: calc(100vh - 270rpx);
|
max-height: calc(100vh - 270rpx);
|
overflow-y: scroll;
|
margin-right: 16rpx;
|
|
.type-item {
|
text-align: center;
|
font-weight: 400;
|
font-size: 28rpx;
|
color: #000000;
|
line-height: 88rpx;
|
// padding-left: 30rpx;
|
// padding-right: 30rpx;
|
}
|
|
.type-item.current {
|
font-weight: 600;
|
font-size: 28rpx;
|
color: #04BA97;
|
}
|
}
|
|
.title-before-blue.green {
|
padding-left: 30rpx;
|
padding-bottom: 0rpx;
|
}
|
|
.title-before-blue:before {
|
color: #04BA97;
|
font-weight: 600;
|
min-width: 14rpx;
|
background: #04BA97;
|
border-radius: 8rpx;
|
display: inline-block;
|
}
|
|
|
.canteen-items {
|
// margin-left: 30rpx;
|
|
.canteen-item {
|
margin: 0 auto;
|
width: 164rpx;
|
// width: 690rpx;
|
// max-width: 690rpx;
|
min-height: 266rpx;
|
background: #FFFFFF;
|
margin-bottom: 44rpx;
|
max-width: 164rpx;
|
|
.cover {
|
width: 164rpx;
|
height: 164rpx;
|
background-size: 100% 100%;
|
border-radius: 8rpx;
|
border: 2rpx solid #f8f8f8;
|
}
|
|
.title {
|
font-weight: 500;
|
font-size: 28rpx;
|
color: #000000;
|
line-height: 40rpx;
|
min-height: 80rpx;
|
text-align: center;
|
}
|
|
.desc {
|
margin-top: 8rpx;
|
font-weight: 400;
|
font-size: 24rpx;
|
color: #6E9F66;
|
line-height: 34rpx;
|
height: 34rpx;
|
background-color: rgba(202, 229, 214, 0.57);
|
border-radius: 4rpx;
|
text-align: center;
|
|
}
|
|
.price {
|
font-weight: 400;
|
font-size: 24rpx;
|
color: #CF0000;
|
line-height: 34rpx;
|
text-align: center;
|
}
|
|
|
|
|
|
}
|
|
.canteen-item-container {
|
width: 100%;
|
min-height: 300rpx;
|
max-height: calc(100vh - 270rpx);
|
overflow-y: scroll;
|
}
|
|
.canteen-item:nth-child(3n+1) {
|
margin-left: 0rpx;
|
margin-right: 15rpx;
|
}
|
|
.canteen-item:nth-child(3n+2) {
|
margin-left: 15rpx;
|
margin-right: 15rpx;
|
}
|
|
.canteen-item:nth-child(3n+3) {
|
margin-left: 15rpx;
|
margin-right: 0rpx;
|
}
|
}
|
|
.canteen-footer-shop {
|
position: absolute;
|
position: fixed;
|
left: 30rpx;
|
bottom: 30rpx;
|
}
|
|
|
|
}
|
</style>
|