<template> <view class="Circle_friends"> <view class="circle_friends_wrapper"> <zbpSwiper></zbpSwiper> <view class="tabs_wrapper"> <u-tabs :list="tabsData.list" @click="tabsChange" lineColor="#F84221" keyName="cate_name"></u-tabs> </view> <view class="goods"> <block v-for="(item,index) in cateGoods" :key="index"> <view class="goods_item" @click="gogogo(item)"> <image class="goods_img" :src="item.image[0]" mode="aspectFit"></image> <view class="botm"> <view class="title">{{item.title}}</view> <view class="goods_info flex_a_c"> <view class="l_info flex_a_c"> <image :src="(item.author && item.author.avatar) || '/static/images/f.png'" mode="aspectFit" class="g_img"></image> <view class="g_name">{{item.author && item.author.nickname}}</view> </view> <view class="nice_box" @click.stop="giveStart(item)"> <text class="iconfont" :class="item.relevance_id ? 'icon-shoucang1' : 'icon-dianzan'"></text> <text class="collect">{{item.count_start}}</text> </view> </view> </view> </view> </block> </view> <view class="empty_wrapper" v-if="emptyShow"> <u-empty :show="emptyShow" mode="list" icon="http://cdn.uviewui.com/uview/empty/list.png"></u-empty> </view> </view> <u-picker :defaultIndex="[0,0]" :show="showPicker" ref="uPicker" :columns="columnData" @confirm="confirm" @cancel="showPicker = false" @change="changeHandler" keyName="name"></u-picker> <!-- <view class="bg_color"></view> --> <!-- <m-tabbar native> <template v-slot:tabbar_index_2> <view class="custom_style"> <view class="custom_style_icon"></view> </view> </template> </m-tabbar> --> </view> </template> <script> import mTabbar from '@/components/m-tabbar/m-tabbar.vue' import zbpSwiper from '@/components/zbpSwiper' import { getSlideAPI } from '@/api/lihai.js' import { graphicLstApi, getTopicList, graphicStartApi } from '@/api/community.js' import { getIndexData, getDiy } from '@/api/api.js' import { getGeocoder, merClassifly } from '@/api/store.js'; import { getArea, getStreet } from '@/api/article.js'; import { Toast } from '@/libs/uniApi' export default { components: { mTabbar, zbpSwiper }, data() { return { bgColor: '', showPicker: false, columnData: [], show: false, swiper: { url: [{ img: '' }], indicatorDots: true, // 显示面板指示点 vertical: false, // 滑动方向是否为纵向 autoplay: true, // 是否自动切换 interval: 2000, // 自动切换时间间隔 duration: 500 // 滑动动画时长 }, tabsData: { list: [], tabsActive: 0 }, where: { category_id: 0, page: 1, limit: 30 }, currentItemId: 69, // 默认获取 社区的数据 0 表示推荐 || 69 社区 keyword: '', location: '', emptyShow: false, street: '', cateGoods: [] } }, onPullDownRefresh() { this.getCateList() this.getGoods() this.selfLocation() this.Area() uni.stopPullDownRefresh() }, onLoad() { this.getCateList() this.getGoods() this.selfLocation() this.Area() }, onShow() {}, methods: { confirm(e) { this.where.street_id = e.value[1].code this.showPicker = false }, changeHandler(e) { const { columnIndex, value, values, index, picker = this.$refs.uPicker } = e; if (columnIndex === 0) { getStreet({ area_code: value[0]['code'] }).then(res => { this.$refs.uPicker.setColumnValues(1, res.data); }); } }, Area() { getArea({ city_code: 510500 }).then(res => { this.$refs.uPicker.setColumnValues(0, res.data); this.Street(res.data[0]['code']); }); }, Street(code) { getStreet({ area_code: code }).then(res => { this.$refs.uPicker.setColumnValues(1, res.data); }); }, gogogo(item) { if (this.tabsData.tabsActive == 1) { uni.navigateTo({ url: `/pages/short_video/appSwiper/index?id=${this.cateGoods[0].community_id}` }) } else { uni.navigateTo({ url: '/pages/plantGrass/plant_detail/index?id=' + item.community_id }) } }, giveStart(item) { let status = item.relevance_id ? 0 : 1 graphicStartApi(item.community_id, { status: status }).then(res => { Toast(res.message) this.getGoods() }) }, dianji() { this.show = !this.show }, // 获取发现商品 getGoods: function() { // 数据写死:默认社区数据 category_id=69&page=1&limit=30 graphicLstApi(this.where).then(res => { this.cateGoods = res.data.list res.data.list.length <= 0 ? this.emptyShow = true : this.emptyShow = false }) }, /*获取分类列表*/ async getCateList() { const { data } = await getTopicList() this.tabsData.list = [{ cate_name: "推荐", category_id: 0 }, { cate_name: "视频", category_id: -1, children: [] }, ...data] }, tabsChange(item) { this.where.category_id = item.category_id this.getGoods() this.street_id = item.id this.tabsData.tabsActive = item.index if (item.index == 1) { uni.navigateTo({ url: `/pages/short_video/appSwiper/index?id=${this.cateGoods[0].community_id}` }) } }, selfLocation() { uni.getLocation({ type: 'gcj02', success: (res) => { let latitude, longitude; latitude = res.latitude.toString(); longitude = res.longitude.toString(); getGeocoder({ lat: latitude, long: longitude }).then(res => { this.$store.commit('setLocation', res.data) this.street = res.data.address_component.street }).catch(err => { uni.showToast({ title: err, icon: 'none' }) }) }, fail: (err) => { uni.showToast({ title: err.errMsg, icon: 'none', duration: 1000 }); } }); }, } } </script> <style lang="scss"> page { // background: linear-gradient(180deg, #FFFFFF 0%, #F6F6F6 100%); } .Circle_friends { position: relative; padding: 0 0 87.72rpx 0; background: linear-gradient(180deg, #FFFFFF 0%, #F6F6F6 100%); } .circle_friends_wrapper { position: relative; z-index: 2; } .search_wrapper { width: 694.74rpx; margin: 0 auto; } .tabs_wrapper { width: 694.74rpx; margin: 0 auto; margin-bottom: 21.05rpx; } .empty_wrapper { display: flex; align-items: center; justify-content: center; } .goods { margin: 0 auto; width: 694.74rpx; display: flex; flex-wrap: wrap; justify-content: space-between; .goods_item { width: 342.11rpx; height: 491.23rpx; border-radius: 8px; overflow: hidden; background-color: #fff; display: flex; flex-direction: column; margin-bottom: 10.53rpx; .goods_img { width: 100%; height: 294.74rpx; } .botm { flex: 1; padding: 0 14.04rpx; padding-bottom: 21.05rpx; display: flex; flex-direction: column; justify-content: space-between; .title { margin: 12px 0; width: 100%; overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; } .goods_info { justify-content: space-between; .g_img { width: 60rpx; height: 60rpx; border-radius: 50%; } .g_name { margin-left: 8.77rpx; width: 100.63rpx; text-overflow: ellipsis; /* 溢出显示省略号 */ overflow: hidden; /* 溢出隐藏 */ white-space: nowrap; /* 强制不换行 */ } .nice_box { display: flex; align-items: center; .isshow { color: #FE3530 !important; } .iconfont { font-size: 30rpx; } .icon-shoucang1 { color: #F84221; } .collect { font-size: 24rpx; margin-left: 5rpx; } } } } } } </style>