| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445 |
- <template>
- <view :style="viewColor" class="page-container">
- <view class='topic-home' :style="'background-color: '+bgColor+''">
- <!-- #ifdef H5 -->
- <view class="header">
- <view class="head-menu">
- <view class="iconfont icon-xiangzuo" @click="goback"></view>
- <view v-if="merchant" class="iconfont merchant" @click="goStore(topicData.group_mer_id)">
- <image class="icon_merchant" :src="merchant.mer_avatar"></image>
- </view>
- <view v-else class="iconfont icon-shouye4" @click="goHome"></view>
- </view>
- </view>
- <!-- #endif -->
- <view class="main_count">
- <view class="topic_image">
- <image :src="topicData.image" class="picture" mode="widthFix"></image>
- </view>
- <view class="main">
- <!-- 轮播 -->
- <view class="slider-wrapper" v-if="imgUrls.length>0">
- <swiper indicator-dots="true" :autoplay="autoplay" :circular="circular" :interval="interval" :duration="duration"
- indicator-color="rgba(255,255,255,0.6)" indicator-active-color="#fff">
- <block v-for="(item,index) in imgUrls" :key="index">
- <swiper-item>
- <view class='slide-navigator acea-row row-between-wrapper'>
- <image :src="item" class="slide-image"></image>
- </view>
- </swiper-item>
- </block>
- </swiper>
- </view>
- <!--商品-->
- <view class="product_list" :class="['theme'+theme, {'acea-row row-between-wrapper': (theme == 2 || theme == '')}]">
- <view class='item' v-for="(item,index) in activety_goods" :key="index" hover-class='none' @tap="goDetail(item)">
- <view class='pictrue'>
- <!-- <image class="image" :src='item.image'></image> -->
- <easy-loadimage mode="widthFix" :image-src="item.image"></easy-loadimage>
- </view>
- <view class="text">
- <view class='name line2'>
- {{item.store_name}}
- </view>
- <view class="acea-row row-middle">
- <view class='money'>¥<text class='num'>{{item.price}}</text></view>
- </view>
- <view v-if="theme != 1" class="score">{{item.rate}}评分 {{item.reply_count}}条评论</view>
- </view>
- </view>
- </view>
- </view>
- </view>
- </view>
- <home></home>
- <!-- #ifndef H5 -->
- <passwordPopup></passwordPopup>
- <!-- #endif -->
- </view>
- </template>
- <script>
- // +----------------------------------------------------------------------
- // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
- // +----------------------------------------------------------------------
- // | Copyright (c) 2016~2024 https://www.crmeb.com All rights reserved.
- // +----------------------------------------------------------------------
- // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
- // +----------------------------------------------------------------------
- // | Author: CRMEB Team <admin@crmeb.com>
- // +----------------------------------------------------------------------
- import {mapGetters} from "vuex";
- import {getTopicDetail,getTopicProLst,initiateAssistApi } from '../../../api/activity.js';
- import { goShopDetail } from '@/libs/order.js'
- import home from '@/components/home/index.vue'
- // #ifndef H5
- import passwordPopup from '@/components/passwordPopup';
- // #endif
- import easyLoadimage from '@/components/easy-loadimage/easy-loadimage.vue';
- import { toLogin } from '@/libs/login.js';
- const app = getApp();
- export default {
- computed: mapGetters(['isLogin','uid','viewColor']),
- components: {
- // #ifndef H5
- passwordPopup,
- // #endif
- home,
- easyLoadimage,
- },
- data() {
- return {
- group_id: '',
- systemInfo: app.globalData.statusBarHeight,
- bgColor: '',
- activety_goods: [],
- page: 1,
- limit: 30,
- loading: false,
- loadend: false,
- pageloading: false,
- autoplay: true,
- circular: true,
- interval: 3000,
- duration: 500,
- theme: 1,
- topicData: {},
- imgUrls: [],
- label_id: '',
- merchant: {}
- }
- },
- onLoad(options) {
- this.group_id = options.id
- this.getTopicDetail();
- },
- methods: {
- goback: function() {
- uni.navigateBack();
- },
- // 首页
- goHome() {
- uni.switchTab({
- url: '/pages/index/index'
- });
- },
- // 进入商户首页
- goStore(id){
- uni.navigateTo({
- url: `/pages/store/home/index?id=${id}`
- })
- },
- getTopicDetail(){
- let that = this;
- getTopicDetail(that.group_id).then(res => {
- that.$set(that, 'topicData', res.data)
- that.$set(that, 'theme', res.data.type)
- that.$set(that, 'bgColor', res.data.color)
- that.$set(that, 'imgUrls', res.data.banner)
- that.$set(that, 'label_id', res.data.label_id)
- that.$set(that, 'merchant', res.data.merchant)
- that.getProList()
- })
- .catch(err => {
- return this.$util.Tips({
- title: err
- }, {
- tab: 3,
- url: 1
- });
- });
- },
- getProList: function() {
- var that = this;
- var data = {
- page: that.page,
- limit: that.limit,
- labels: that.label_id,
- mer_id: that.topicData.group_mer_id
- };
- if (that.loadend) return;
- if (that.pageloading) return;
- this.pageloading = true
- getTopicProLst(data).then(res => {
- var activety_goods = res.data.list;
- var loadend = activety_goods.length < that.limit;
- that.page++;
- that.activety_goods = that.activety_goods.concat(activety_goods),
- that.page = that.page;
- that.pageloading = false;
- that.loadend = loadend;
- }).catch(err => {
- that.pageloading = false
- });
- },
- goDetail(item) {
- goShopDetail(item, this.uid).then(res => {
- if (this.isLogin) {
- initiateAssistApi(item.activity_id).then(res => {
- let id = res.data.product_assist_set_id;
- uni.hideLoading();
- uni.navigateTo({
- url: '/pages/activity/assist_detail/index?id=' + id
- });
- }).catch((err) => {
- uni.showToast({
- title: err,
- icon: 'none'
- })
- });
- } else {
- toLogin()
- }
- })
- }
- },
- /**
- * 页面上拉触底事件的处理函数
- */
- onReachBottom: function() {
- this.getProList()
- },
- // 滚动监听
- onPageScroll(e) {
- // 传入scrollTop值并触发所有easy-loadimage组件下的滚动监听事件
- uni.$emit('scroll');
- }
- }
- </script>
- <style lang="scss" scoped>
- .header {
- position: absolute;
- z-index: 6;
- display: flex;
- align-items: center;
- padding-right: 34rpx;
- height: 43px;
- padding-left: 33rpx;
- .head-menu {
- display: -webkit-box;
- display: -webkit-flex;
- display: flex;
- -webkit-box-align: center;
- -webkit-align-items: center;
- align-items: center;
- height: 27px;
- width: 70px;
- background: rgba(0, 0, 0, 0.3);
- border-radius: 13px;
- .icon-xiangzuo {
- font-size: 32rpx;
- color: #FFFFFF;
- }
- .iconfont {
- -webkit-box-flex: 1;
- -webkit-flex: 1;
- flex: 1;
- text-align: center;
- color: #fff;
- box-sizing: border-box;
- &.icon-xiangzuo {
- border-right: 1px solid #fff;
- }
- }
- .merchant{
- width: 36rpx;
- height: 36rpx;
- .icon_merchant{
- width: 36rpx;
- height: 36rpx;
- border-radius: 100%;
- }
- }
- }
- }
- .topic-home{
- position: relative;
- min-height: 100vh;
- padding-bottom: 30rpx;
- .topic_image{
- line-height: 0;
- .picture{
- width: 750rpx;
- }
- }
- }
- .main_count{
- .main{
- padding: 0 20rpx;
- }
- .slider-wrapper{
- width: 710rpx;
- height: 250rpx;
- margin: 40rpx 0;
- uni-swiper{
- height: 250rpx;
- }
- .slide-image{
- width: 710rpx;
- height: 250rpx;
- border-radius: 16rpx;
- }
- }
- .product_list{
- .item{
- background-color: #fff;
- }
- .image {
- width: 100%;
- height: 100%;
- border-radius: 20rpx 20rpx 0 0;
- }
- .text{
- color: #222222;
- }
- .money {
- display: flex;
- align-items: center;
- font-size: 26rpx;
- font-weight: bold;
- margin-top: 8rpx;
- color: var(--view-priceColor);
- }
- .score {
- margin-top: 10rpx;
- color: #737373;
- font-size: 20rpx;
- }
- &.theme2,&.theme{
- .item{
- position: relative;
- width: 345rpx;
- margin-bottom: 20rpx;
- border-radius: 20rpx;
- .pictrue {
- position: relative;
- width: 100%;
- height: 345rpx;
- }
- /deep/image,/deep/.easy-loadimage,uni-image{
- height: 345rpx;
- }
- .text {
- padding: 20rpx 17rpx 26rpx 17rpx;
- }
- .name{
- font-size: 13px;
- color: #282828;
- margin: 11px 0 5px 0;
- overflow: hidden;
- text-overflow: ellipsis;
- display: -webkit-box;
- -webkit-line-clamp: 2;
- -webkit-box-orient: vertical;
-
- }
- }
- }
- &.theme1{
- .item{
- display: inline-block;
- width: 225rpx;
- margin: 0 19rpx 16rpx 0;
- border-radius: 10rpx;
- &:nth-child(3n){
- margin-right: 0;
- }
- }
- .pictrue {
- position: relative;
- width: 100%;
- height: 226rpx;
- .image{
- border-radius: 10rpx 10rpx 0 0;
- }
- }
- /deep/image,/deep/.easy-loadimage,uni-image{
- width: 100%;
- height: 226rpx;
- border-radius: 10rpx 10rpx 0 0;
- }
- .text{
- padding: 12rpx 14rpx 16rpx;
- .name{
- font-size: 13px;
- color: #282828;
- margin-bottom: 10rpx;
- overflow: hidden;
- text-overflow: ellipsis;
- display: -webkit-box;
- -webkit-line-clamp: 2;
- -webkit-box-orient: vertical;
- line-height: 35rpx;
- height: 70rpx;
- }
- .money {
- font-size: 22rpx;
- }
- }
- }
- &.theme2{
- display: flex;
- justify-content: space-between;
- flex-wrap: wrap;
- .pictrue,/deep/image,/deep/.easy-loadimage,uni-image{
- border-radius: 20rpx 20rpx 0 0;
- }
- }
- &.theme3{
- .item{
- width: 710rpx;
- border-radius: 20rpx;
- margin-bottom: 30rpx;
- }
- .num{
- font-family: 'PingFangSC-Semibold';
- font-size: 32rpx;
- }
- .pictrue {
- position: relative;
- width: 710rpx;
- height: 710rpx;
- .image{
- border-radius: 20rpx 20rpx 0 0;
- }
- }
- /deep/image,/deep/.easy-loadimage,uni-image{
- width: 710rpx;
- height: 710rpx;
- max-height: 710rpx;
- border-radius: 20rpx 20rpx 0 0;
- }
- .text{
- padding: 24rpx 30rpx 34rpx;
- position: relative;
- .name{
- color: #222222;
- font-size: 34rpx;
- margin-bottom: 16rpx;
- overflow:hidden;
- text-overflow: ellipsis;
- display: -webkit-box;
- -webkit-line-clamp: 2;
- -webkit-box-orient: vertical;
- }
- .money{
- font-size: 22rpx;
- font-family: 'PingFangSC-Semibold';
- font-weight: bold;
- }
- .score{
- color: #737373;
- display: inline-block;
- float: right;
- position: relative;
- top: -34rpx;
- margin-top: 0;
- }
- }
- }
- }
- }
- </style>
|