<template> <view class='productSort'> <view class="title"> 参与话题 <text class="iconfont icon-guanbi5" @click="close"></text> </view> <view class="con-box"> <view class='aside'> <scroll-view scroll-y="true" style="height: 100%; overflow: hidden;"> <view v-for="(item,index) in productList" :key="item.category_id"> <view v-show="item.children && item.children.length > 0" class='item acea-row row-center-wrapper' :class='index==navActive?"on":""' @click='tap(index,"b"+index)'><text class="item_text">{{item.cate_name}}</text> </view> </view> </scroll-view> </view> <view class='conter'> <scroll-view scroll-y="true" style="height: 100%; overflow: hidden;"> <view v-for="(item,index) in childList" :key="item.topic_id"> <view class='list' @click.stop="confirmTopic(item)"> <view class='item acea-row'> <view class='picture'> <image :src='item.pic'></image> </view> <view class="name line1">{{item.topic_name}}</view> </view> </view> </view> </scroll-view> </view> </view> </view> </template> <script> // +---------------------------------------------------------------------- // | CRMEB [ CRMEB赋能开发者,助力企业发展 ] // +---------------------------------------------------------------------- // | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved. // +---------------------------------------------------------------------- // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 // +---------------------------------------------------------------------- // | Author: CRMEB Team <admin@crmeb.com> // +---------------------------------------------------------------------- let app = getApp(); import { getTopicList } from '@/api/community.js'; export default { data() { return { navlist: [], productList: [], navActive: 0, childList: [] } }, watch: {}, mounted() { if (!this.productList.length) { this.getAllCategory(); } }, methods: { // 点击关闭按钮 close() { this.$emit('close'); }, tap: function(index, id) { this.navActive = index; this.childList = this.productList[index].children }, getAllCategory: function() { let that = this; let value = "" getTopicList().then(res => { let arr = [ // {category_id: "",count_use: 0,count_view: 0,pic: null,topic_id: '',topic_name: "不添加任何话题"} ] that.productList = res.data; if (that.productList[0].children && that.productList[0].children.length > 0) { that.productList[0].children = [...arr, ...that.productList[0].children] } else { that.productList[0].children = arr } that.childList = that.productList[0].children; }) }, confirmTopic(item) { this.$emit('getTopic', item); } } } </script> <style scoped lang="scss"> .productSort { display: flex; flex-direction: column; width: 100%; height: 70vh; background: #ffffff; border-radius: 16rpx 16rpx 0 0; .title { text-align: center; padding: 40rpx 0; position: relative; color: #333333; font-size: 34rpx; font-weight: bold; .iconfont { color: #8A8A8A; font-size: 28rpx; position: absolute; right: 30rpx; top: 42rpx; font-weight: normal; } } .con-box { flex: 1; display: flex; overflow: hidden; } } .productSort .aside { overflow-y: auto; overflow-x: hidden; border-right: 1px solid #EEEEEE; width: 202rpx; height: 100%; overflow: hidden; } .productSort .aside .item { line-height: 100rpx; width: 100%; font-size: 26rpx; color: #666666; } .productSort .aside .item_text { padding-left: 20rpx; overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; } .productSort .aside .item.on { width: 100%; text-align: center; font-weight: bold; color: #333333; } .productSort .conter { flex: 1; height: 100%; padding: 0 30rpx; background-color: #ffffff; margin-top: 20rpx; } .productSort .conter .list { flex-wrap: wrap; } .productSort .conter .list .item { margin-top: 26rpx; margin-bottom: 40rpx; align-items: center; } .productSort .conter .list .item .picture { width: 88rpx; height: 88rpx; border-radius: 100%; position: relative; &::before { content: "#"; display: block; width: 88rpx; height: 88rpx; line-height: 88rpx; border-radius: 100%; color: #ffffff; font-size: 40rpx; text-align: center; position: absolute; top: 0; left: 0; background: rgba(0, 0, 0, .3); } } .productSort .conter .listw:first-child .picture { &::before { content: "\\"; background: #D8D8D8; } } .productSort .conter .list .item .picture image { width: 100%; height: 100%; border-radius: 100%; } .productSort .conter .list .name { margin-left: 30rpx; font-size: 28rpx; color: #282828; font-weight: bold; max-width: 300rpx; } </style>