From c58aff5b2a349c6b1fc8a4a3f474f7f8cc529e09 Mon Sep 17 00:00:00 2001 From: xuxueyang <xuxy@fengyuntec.com> Date: 星期五, 12 七月 2024 14:05:58 +0800 Subject: [PATCH] update 花农端首次上架 --- sub_pages/customer/trade/trade.vue | 351 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 329 insertions(+), 22 deletions(-) diff --git a/sub_pages/customer/trade/trade.vue b/sub_pages/customer/trade/trade.vue index 8183fd0..4539785 100644 --- a/sub_pages/customer/trade/trade.vue +++ b/sub_pages/customer/trade/trade.vue @@ -1,22 +1,329 @@ -<template> - <view> - - </view> -</template> - -<script> - export default { - data() { - return { - - } - }, - methods: { - - } - } -</script> - -<style> - -</style> +<template> + <view class="container-trade" style="min-height: calc(100vh - 20rpx );"> + <view class="search-container m-t-12 flex" v-if="!(!list||list.length==0)&&true"> + <view class="flex1 input"> + <u-input placeholder="请输入分类名称" v-model="query.name"> + <template slot="suffix"> + <uni-icons color="#20613D" type="search" size="24" @tap="buttonSearchFlow"></uni-icons> + </template> + </u-input> + </view> + </view> + <view class="canteen-items" style="min-height: calc(100vh - 160rpx);"> + <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"> + 销量 + </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"> + <image :src="item.imageUrl" mode="scaleToFill" class="cover" + @click.stop="previewImg(item.imageUrl)"> + </image> + </view> + <view class="cateen_infos list"> + <view class="title">{{item.name}}</view> + <view class="price">¥29.01-30.01</view> + + <view class="desc">在售14410扎</view> + <!-- <view class="icons flex"> + <uni-icons v-if="item.shopnum&&item.shopnum>=1" type="minus" size="32" + @click="mulnum(item)"></uni-icons> + <view class="curnums" v-if="item.shopnum&&item.shopnum>=1">{{item.shopnum}}</view> + <uni-icons type="plus-filled" size="32" @click="addnum(item)"></uni-icons> + </view> --> + </view> + <view style="padding-bottom:100rpx"> + </view> + </view> + + </view> + <footer-msg v-if="query.block&&query.schoolArea" + :more="page.total>0&&page.total>page.current*page.size"></footer-msg> + + </view> + </view> + + </view> + + + + <view style="min-height:200rpx"> + </view> + <common-footer flg="1"></common-footer> + + </view> +</template> + +<script> + import { + mapState + } from 'vuex' + export default { + data() { + return { + list: [], + showpop: false, + query: { + name: '', + categoryId: '', + }, + + } + }, + 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 || '' + } + }).finally(() => { + uni.stopPullDownRefresh() + }) + }, + async onLoad() { + + //加载分类 + 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 || '' + } + }) + }, + methods: { + buttonSearchFlow() { + //根据名称查询 + 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 || '' + } else { + this.query.categoryId = '' + } + }).finally(() => { + this.$message.hideLoading() + }) + }, + toDetailList(item) { + //去商品列表页面 + uni.navigateTo({ + url: `/sub_pages/customer/trade/list?categoryId=${item.id}` + }) + }, + changeType(item) { + this.query.categoryId = item.id || '' + }, + + + 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 - 300rpx); + max-height: calc(100vh - 300rpx); + 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; + 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; + } + + .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 - 200rpx); + 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> \ No newline at end of file -- Gitblit v1.9.3