From 73341eba8e313c2aead0476026bc362b8c4be4b1 Mon Sep 17 00:00:00 2001 From: xuxueyang <xuxy@fengyuntec.com> Date: 星期四, 12 九月 2024 16:05:06 +0800 Subject: [PATCH] update 优化 --- pages/home/home.vue | 444 ++++++++++++++++++++++++++++++++++++------------------- 1 files changed, 291 insertions(+), 153 deletions(-) diff --git a/pages/home/home.vue b/pages/home/home.vue index 7e40797..1695491 100644 --- a/pages/home/home.vue +++ b/pages/home/home.vue @@ -19,39 +19,41 @@ </view> </view> </view> - <view class="search-container m-t-12 flex"> + <view class="search-container m-t-12 flex" @click="goto('/pages/home/components/home-search',false)"> <view class="flex1 input"> - <u-input placeholder="请输入花名" v-model="search_flow"> + <u-input placeholder="请输入花名或店铺名" disabled v-model="search_flow"> <template slot="suffix"> - <uni-icons color="#20613D" type="search" size="24" @click="buttonSearchFlow"></uni-icons> + <!-- @click="buttonSearchFlow" --> + <uni-icons color="#20613D" type="search" size="24"></uni-icons> </template> </u-input> </view> </view> <!-- banner --> - <uni-swiper-dot class="uni-swiper-dot-box" @clickItem=clickItem :info="info" :current="currentBanner" - :mode="'dot'" :dots-styles="dotsStyles[0]" field="content"> - <swiper class="swiper-box" @change="changeBanner" :interval="10000" :circular="true" :current="0" - v-if="banners&&banners.length>0" :autoplay="true"> - <swiper-item v-for="(item, index) in banners" :key="index"> - <view class="swiper-item" :class="'swiper-item' + index"> - <image @click="previewImg(item.url||item.image)" class="home-banner-image" mode="scaleToFill" - :src="item.url||item.image"> - </image> - </view> - </swiper-item> - </swiper> - <swiper class="swiper-box" @change="changeBanner" :current="0" v-if="!banners||banners.length==0"> - <swiper-item v-for="(item, index) in 1" :key="index"> - <view class="swiper-item" :class="'swiper-item' + index"> - <image class="home-banner-image" mode="scaleToFill" - src="https://hmy-flower.oss-cn-shanghai.aliyuncs.com/62/62ddac6297104e369aba646be704064dbanner@2x.png"> - </image> - </view> - </swiper-item> - </swiper> - </uni-swiper-dot> + <!-- <uni-swiper-dot class="uni-swiper-dot-box" @clickItem=clickItem :info="info" :current="currentBanner" + :mode="'dot'" :dots-styles="dotsStyles[0]" field="content"> --> + <swiper class="swiper-box" @change="changeBanner" :interval="10000" :circular="true" :current="0" + v-if="banners&&banners.length>0" :autoplay="true"> + <swiper-item v-for="(item, index) in banners" :key="index"> + <view class="swiper-item" :class="'swiper-item' + index"> + <!-- @click="previewImg(item.url||item.image)" --> + <image class="home-banner-image" mode="scaleToFill" @click="clickBanner(item)" + :src="item.url||item.image"> + </image> + </view> + </swiper-item> + </swiper> + <swiper class="swiper-box" @change="changeBanner" :current="0" v-if="!banners||banners.length==0"> + <swiper-item v-for="(item, index) in 1" :key="index"> + <view class="swiper-item" :class="'swiper-item' + index"> + <image class="home-banner-image" mode="scaleToFill" + src="https://hmy-flower.oss-cn-shanghai.aliyuncs.com/62/62ddac6297104e369aba646be704064dbanner@2x.png"> + </image> + </view> + </swiper-item> + </swiper> + <!-- </uni-swiper-dot> --> <!-- tip --> <view class="m-t-12" @click="getNoticeMore"> <uni-notice-bar class="notice-bar" color="#333" background-color="#fff" show-get-more show-icon @@ -59,19 +61,53 @@ <span v-if="!currentNotice||!currentNotice.id"> </span> </view> <!-- 当前分类 --> - <home-category></home-category> + <home-category ref="home_category"></home-category> <!-- 特别的几个公告图片 --> - <home-banner-imgs></home-banner-imgs> + <home-banner-imgs ref="home_banner"></home-banner-imgs> <!-- 均价情况 --> <!-- <home-price></home-price> --> <!-- 几个专区 --> - <home-zones></home-zones> + <home-zones ref="home_zeros"></home-zones> <!-- 置顶的花列表 --> - <home-top-flow></home-top-flow> + <home-top-flow ref="home_top_flow"></home-top-flow> - <view style="min-height:200rpx"> + <view style="min-height:140rpx"> </view> <common-footer flg="0"></common-footer> + + <uni-popup ref="coupon_home" type="center" border-radius="10px 10px 0 0"> + <view class="coupon-container" style="width: 690rpx;"> + <view class="coupont-item all"> + <view class="flex container img100"> + <view class="info-price"> + <view class="price1"> + {{dto_home_coupon.maxDiscountAmount?(`${dto_home_coupon.maxDiscountAmount}折`):(`¥${dto_home_coupon.couponDiscountValue}`)}} + </view> + <view class="price2"> + {{dto_home_coupon.minOrderAmount?(`满¥${dto_home_coupon.minOrderAmount}可用`):'无门槛'}} + </view> + </view> + <view class="info flex1"> + <view class="title"> + {{dto_home_coupon.couponName||'-'}} + </view> + <view class="time" v-if="dto_home_coupon.getEndDate"> + <!-- 领取后{{dto_home_coupon.usageTimeNum||''}}{{dto_home_coupon.usageTimeTypeName||''}}有效 --> + {{dto_home_coupon.getEndDate|| '-'}}前有效 + </view> + <view class="button" @click="getCoupon(dto_home_coupon)"> + 立即领取 + </view> + </view> + </view> + + <view class="tip"> + <span class="t-red">*</span>此券每人限领1张。仅限用于花满芜鲜花交易平台鲜切花花款满额使用,不可与其他优惠同享、不可叠加使用 + </view> + </view> + </view> + </uni-popup> + </view> </template> @@ -104,7 +140,16 @@ homeZones, homeTopFlow }, - + onPullDownRefresh() { + // 下拉刷新方法 + this.init() + this.$message.showLoading() + this.init_children() + setTimeout(() => { + this.$message.hideLoading() + uni.stopPullDownRefresh() + }, 2000) + }, data() { return { search_flow: '', @@ -161,145 +206,234 @@ hide_footer: false, noticeList: [], currentNoticeIndex: 0, - currentNotice: {} + currentNotice: {}, + dto_home_coupon: {} }; }, - // onShareAppMessage() { - // let that = this; - // var url = - // `/pages/home/home?shareId=${this.currentInfo&&this.currentInfo.id||''}&shareName=${this.currentInfo&&this.currentInfo.nickName||''}`; //你的转发页面路径拼接参数 - // return { - // title: "校购GO小狗狗", - // path: url, - // } - // }, - // onShareTimeline() { - // let that = this; - // var url = "/pages/home/home" //你的分享页面路径 - // return { - // title: '校购GO小狗狗', - // path: url, - // query: `shareId=${this.currentInfo&&this.currentInfo.id||''}&shareName=${this.currentInfo&&this.currentInfo.nickName||''}`, //你的参数拼接,注意:不需要加? - // // imageUrl: 'https://cdn.uviewui.com/uview/swiper/1.jpg' //你分享的封面 - // }; - // }, + 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, + } + }, + onReachBottom() { + console.log('onReachBottom') + if (this.$refs && this.$refs.home_top_flow) { + // console.log(this.$refs.home_top_flow) + this.$refs.home_top_flow.fun_GetMore() + } + }, + onLoad(options) { + this.init() + }, + methods: { + async getCoupon(item) { + this.$message.showLoading() + const { + code, + data + } = await this.$http.request('post', '/api/v2/coupon/app/receive', { + data: { + couponId: item.id, + num: 1 + } + }) + if (code == 0) { + this.$refs.coupon_home.close() - onLoad(options) { - // if(options.partnerUserId){ - // //需要前往注册了 - // uni.navigateTo({ - // url: '/pages/login/supplier-login' - // }) - // } - // console.log('home created') - //这里进行一次初始化即可 - // this.$http.request('get', '/api/school/area/list', { + this.$message.showToast('领取成功') + } + }, + init_children() { + this.$refs.home_top_flow && this.$refs.home_top_flow.init && this.$refs.home_top_flow.init() + this.$refs.home_category && this.$refs.home_category.init && this.$refs.home_category.init() + this.$refs.home_banner && this.$refs.home_banner.init && this.$refs.home_banner.init() + this.$refs.home_zeros && this.$refs.home_zeros.init && this.$refs.home_zeros.init() + }, + init() { + // if(options.partnerUserId){ + // //需要前往注册了 + // uni.navigateTo({ + // url: '/pages/login/supplier-login' + // }) + // } + // console.log('home created') + //这里进行一次初始化即可 + // this.$http.request('get', '/api/school/area/list', { - // }).then(res => { - // if (res.code == 0) { - // this.schools = res.data || [] - // } - // }) + // }).then(res => { + // if (res.code == 0) { + // this.schools = res.data || [] + // } + // }) - // uni.navigateTo({ - // url: '/sub_pages/customer/trade/detail' - // }) + // uni.navigateTo({ + // url: '/sub_pages/customer/trade/detail' + // }) - //获取banner图 - this.$http.request('get', '/api/pub/banner/list', {}).then(res => { - if (res.code == 0) { - this.banners = res.data || [] - if (this.banners.length == 0) { - this.banners.push({ - url: 'https://hmy-flower.oss-cn-shanghai.aliyuncs.com/62/62ddac6297104e369aba646be704064dbanner@2x.png' - }) - } else { - for (var item of this.banners) { - // http://106.14.123.210/files/group1/e8/e1c17f7229514e5da211d8d47b09906b.jpeg - try { - if (item.url) { - var t = JSON.parse(item.url) - if (Array.isArray(t)) { - item.url = t[0] || '' - } else { - item.url = t.url || '' + //获取banner图 + this.$http.request('get', '/api/pub/banner/list', {}).then(res => { + if (res.code == 0) { + this.banners = [] + + var tarr = res.data || [] + if (tarr.length == 0) { + // tarr.push({ + // url: 'https://hmy-flower.oss-cn-shanghai.aliyuncs.com/62/62ddac6297104e369aba646be704064dbanner@2x.png' + // }) + this.banners = tarr + } else { + var result = [] + for (var item of tarr) { + // http://106.14.123.210/files/group1/e8/e1c17f7229514e5da211d8d47b09906b.jpeg + try { + if (item.url) { + var t = JSON.parse(item.url) + if (Array.isArray(t)) { + // item.url = t[0] || '' + for (var url of t) { + result.push({ + ...item, + url: url || '' + }) + } + } else { + // item.url = t.url || '' + result.push({ + ...item, + url: t.url || '' + }) + } } - } - } catch (e) { - // console.log('error',e) + } catch (e) { + // console.log('error',e) + } } + this.banners = result + } + console.log('this.banners', this.banners) + } + }) + + var areaIndex = uni.getStorageSync('areaIndex') + if (!areaIndex && areaIndex !== 0) { + + } else { + this.areaIndex = areaIndex + } + //如果已经登录,加载一下默认地址 + let that = this + setTimeout(() => { + if (that.currentInfo.id && !that.address.id) { + that.$http.request('get', '/api/address/default/detail').then(res => { + if (res.data) { + that.$store.commit('setDefaultAddress', { + ...res.data + }) + + } + }) + } + + }, 2000) + //公告 + var type = '' + // #ifdef PUB_CUSTOMER + type = 'customer' + // #endif + // #ifdef PUB_SUPPLIER + type = 'supplier' + // #endif + // #ifdef PUB_PARTNER + type = 'partner' + // #endif + + this.$http.request('get', '/api/pub/announcement/list/' + type, { + params: { + size: 5, + status: 'A' + } + }).then(res => { + if (res.code === 0) { + // (res.data && res.data.records || []) + this.noticeList = res.data || [] + console.log('this.noticeList', this.noticeList) + if (this.noticeList.length > 0) { + this.currentNotice = this.noticeList[0] + if (this.currentNotice.title && this.currentNotice.title.length >= 30) { + this.scrollable = true + } else { + this.scrollable = false + } + let that = this + if (this.noticeList.length >= 1) { + setInterval(() => { + console.log('interval,1') + that.currentNoticeIndex += 1 + that.currentNoticeIndex %= that.noticeList.length + that.currentNotice = that.noticeList[that.currentNoticeIndex] + that.scrollable = false + that.$nextTick(() => { + if (that.currentNotice.title && that.currentNotice.title + .length >= 30) { + that.scrollable = true + } else { + that.scrollable = false + } + }) + + }, 8000) + } + } } - } - }) + }) - var areaIndex = uni.getStorageSync('areaIndex') - if (!areaIndex && areaIndex !== 0) { - - } else { - this.areaIndex = areaIndex - } - //如果已经登录,加载一下默认地址 - let that = this - setTimeout(() => { - if (that.currentInfo.id && !that.address.id) { - that.$http.request('get', '/api/address/default/detail').then(res => { - if (res.data) { - that.$store.commit('setDefaultAddress', { - ...res.data - }) - + let tmp = this + var value = this.$storage.getItem('cache_home_show_coupon') + if (!value || true) { + //首页优惠券 + this.$storage.setItem('cache_home_show_coupon', '1') + this.$http.request('get', '/api/v2/coupon/home/alert').then(res => { + if (res.code == 0) { + var list = res.data || [] + var dto = list.length >= 1 ? list[0] : undefined + if (dto) { + // 显示弹窗图片 + this.dto_home_coupon = dto + tmp.$refs.coupon_home.open() + } } }) } + }, - }, 2000) - //公告 - this.$http.request('get', '/api/pub/announcement/list', { - params: { - size: 5, - // status: 'A' + clickBanner(item) { + if (item.id) { + uni.navigateTo({ + url: '/pages/home/components/home-banner-detail?id=' + item.id + }) + } else if (item.url) { + this.previewImg(item.url) } - }).then(res => { - if (res.code === 0) { - // (res.data && res.data.records || []) - this.noticeList = res.data || [] - console.log('this.noticeList', this.noticeList) - if (this.noticeList.length > 0) { - this.currentNotice = this.noticeList[0] - if (this.currentNotice.title && this.currentNotice.title.length >= 30) { - this.scrollable = true - } else { - this.scrollable = false - } - let that = this - if (this.noticeList.length >= 1) { - setInterval(() => { - console.log('interval,1') - that.currentNoticeIndex += 1 - that.currentNoticeIndex %= that.noticeList.length - that.currentNotice = that.noticeList[that.currentNoticeIndex] - that.scrollable = false - that.$nextTick(() => { - if (that.currentNotice.title && that.currentNotice.title - .length >= 30) { - that.scrollable = true - } else { - that.scrollable = false - } - }) - - }, 8000) - } - - } - } - }) - - - }, - methods: { + }, goToAddress() { if (!this.currentInfo.id) { this.$message.showToast('请先前往登录') @@ -347,4 +481,8 @@ <style lang="scss" scoped> @import "./home.scss"; + + /* #ifdef PUB_CUSTOMER */ + @import "@/sub_pages/customer/coupon/coupon.scss"; + /* #endif */ </style> \ No newline at end of file -- Gitblit v1.9.3