123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314 |
- <template>
- <view :style="viewColor">
- <view class="main">
- <view class='search acea-row row-between-wrapper'>
- <view class='input acea-row row-between-wrapper'>
- <text class='iconfont icon-sousuo2'></text>
- <input type='text' v-model="where.keyword" :focus="focus" placeholder='请输入关键字' placeholder-class='placeholder' @input="setValue" confirm-type="search" @confirm="searchBut()"></input>
- <i v-if="where.keyword" class="iconfont icon-guanbi1 icon-zhanwei" @click="where.keyword = ''"></i>
- <i v-else class="iconfont icon-zhanwei"></i>
- </view>
- <view class='bnt' @tap='searchBut'>搜索</view>
- </view>
- <view class="search-tabs acea-row">
- <view v-for="(item,index) in tabList" :key="index" @click="getList(item,index)" class="item" :class="{on : activeIndex == index}">{{item.title}}</view>
- </view>
- <view v-if="activeIndex == 2" class="tab-cont">
- <view class="author-wrap">
- <view class="user_plant_item" v-for="(item,index) in goods" :key="index" @click="goAuthor(item)">
- <image :src="(item.author&&item.author.avatar) || '/static/images/f.png'" mode=""></image>
- <view v-if="item.author" class="info">
- <view class="line1">
- <text class="name line1">{{item.author.nickname}}</text>
- </view>
- <view class="acea-row plant-des">
- <view class="des">
- 内容<text>{{(item.author.count_content<10000&&item.author.count_content>0) ? item.author.count_content : item.author.count_content>1000 ? (item.author.count_content/10000).toFixed(2)+'万' : 0}}</text>
- </view>
- <view class="des">
- 粉丝<text>{{(item.author.count_fans<10000&&item.author.count_fans>0) ? item.author.count_fans : item.author.count_fans>1000 ? (item.author.count_fans/10000).toFixed(2)+'万' : 0}}</text>
- </view>
- </view>
- <view class="btn" :class="!item.is_fans ? 'focusBtn' : ''" @click.stop="focusToggle(item)">
- <text v-if="!item.is_fans" class="iconfont icon-jiahao2"></text>
- {{item.is_fans ? '已关注' : '关注'}}
- </view>
- </view>
- </view>
- </view>
- <view :hidden="!loading" class="acea-row row-center-wrapper loadingicon">
- <text class="iconfont icon-jiazai loading"></text>
- </view>
- <emptyPage v-if="authorList.length == 0 && !loading" title="暂无作者~"></emptyPage>
- </view>
- <view v-else class="tab-cont">
- <view v-if="goods.length" class="goods-wrap">
- <view class="goods">
- <WaterfallsFlow :wfList='goods' :isFind="false" :isAuth="0"/>
- </view>
- </view>
- </view>
- <view :hidden="!loading" class="acea-row row-center-wrapper loadingicon">
- <text class="iconfont icon-jiazai loading"></text>
- </view>
- <emptyPage v-if="goods.length == 0 && !loading" title="暂无内容~"></emptyPage>
- </view>
- </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 WaterfallsFlow from '@/components/plantWaterfallsFlow/WaterfallsFlow.vue'
- import { graphicLstApi, followAuthorApi } from '@/api/community.js';
- import { toLogin } from '@/libs/login.js';
- import { mapGetters } from "vuex";
- import { configMap } from '@/utils';
- import emptyPage from '@/components/emptyPage.vue'
- const app = getApp();
- export default {
- components: {
- emptyPage,
- WaterfallsFlow,
- },
- data() {
- return {
- focus: false,
- goods: [],
- authorList: [
- {avatar: "",nickname: '爱吃酥脆紫菜的小西', count: 35, count_fans: 0, is_fans: 1},
- {avatar: "https://thirdwx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTKZw2XnQEyK8f1BIcNGVegibE9tPZBtjyu0AgyaPDEEwmyZnWydhXwXUnbrtGnXmam6WTzichTBcLgQ/132",nickname: '猪猪甜甜圈', count: 35, count_fans: 951, is_fans: 0},
- {avatar: "",nickname: '爱吃酥脆紫菜的小西', count: 35, count_fans: 951, is_fans: 1},
- ],
- keyword: '',
- loaded: false,
- loading: false,
- loadTitle: '加载更多',
- where: {
- keyword: "",
- search_type: "all",
- page: 1,
- limit: 30,
- topic_id: ''
- },
- searchValue: "",
- activeIndex: 0,
- tabList:[
- {title: "全部", value: 0, type: "all"},
- {title: "内容", value: 1, type: "content"},
- {title: "用户", value: 2, type: "user"},
- ]
- }
- },
- created() {},
- computed: {
- ...mapGetters(['isLogin', 'uid', 'viewColor']),
- ...configMap({community_status: 0})
- },
- watch: {},
- onLoad: function(options) {
- this.where.keyword = this.searchValue = options.searchValue ? options.searchValue : ''
- this.where.topic_id = options.id ? options.id : ''
- this.getGoods();
- },
- onShow() {},
- mounted: function() {},
- methods: {
- setValue: function(event) {
- this.$set(this.where, 'keyword', event.detail.value);
- },
- searchBut(){
- this.loadend = this.loading = false
- this.where.page = 1
- this.goods = []
- this.getGoods()
- },
- goAuthor(item){
- if(this.isLogin && this.community_status==1){
- uni.navigateTo({
- url: '/pages/plantGrass/plant_user/index?id='+item.uid
- })
- }else{
- toLogin()
- }
-
- },
- // 获取列表数据
- getList(item,index){
- this.activeIndex = index;
- this.where={
- keyword: this.where.keyword,
- search_type: item.type,
- page: 1,
- limit: 30,
- topic_id: ''
- }
- this.goods = []
- this.loadend = false
- this.loading = false
- this.getGoods()
- },
- // 获取社区内容列表
- getGoods: function() {
- let that = this;
- if (that.loadend) return;
- if (that.loading) return;
- that.loading = true;
- that.loadTitle = '';
- graphicLstApi(that.where).then(res => {
- that.loading = false;
- let list = res.data.list;
- let goodsList = that.$util.SplitArray(list, that.goods);
- let loadend = list.length < that.where.limit;
- that.loadend = loadend;
- that.loading = false;
- that.loadTitle = loadend ? '已全部加载' : '加载更多';
- that.$set(that, 'goods', goodsList);
- that.$set(that.where, 'page', that.where.page + 1);
- }).catch(err => {
- that.loading = false;
- that.goodsLoading = false;
- uni.showToast({
- title: err,
- icon: 'none'
- })
- });
- },
- /*关注*/
- focusToggle(item){
- let status = item.is_fans ? 0 : 1
- followAuthorApi(item.author.uid,{status: status}).then(res => {
- if (res.status === 200) {
- item.is_fans = item.is_fans ? false : true
- }
- this.$util.Tips({
- title: res.message
- });
- }).catch(err => {
- this.$util.Tips({
- title: err
- });
- });
- },
- },
- onReachBottom() {
- this.getGoods();
- },
- // 滚动监听
- onPageScroll(e) {
- // 传入scrollTop值并触发所有easy-loadimage组件下的滚动监听事件
- uni.$emit('scroll');
- }
- }
- </script>
- <style lang="scss" scoped>
- @import '../style/main.scss';
- .main .search {
- padding: 20rpx 0 0 10rpx;
- }
- .main .search .input {
- width: 580rpx;
- background-color: #f7f7f7;
- border-radius: 33rpx;
- padding: 0 20rpx 0 30rpx;
- box-sizing: border-box;
- height: 66rpx;
- position: relative;
- }
- .main .search .input input {
- width: 440rpx;
- font-size: 28rpx;
- }
- .main .search .input .placeholder {
- color: #bbb;
- }
- .main .search .input .iconfont {
- color: #000;
- font-size: 35rpx;
- }
- .main .search .input .icon-guanbi1 {
- font-size: 32rpx;
- color: #cccccc;
-
- }
- .main .search .bnt {
- width: 120rpx;
- text-align: center;
- height: 66rpx;
- line-height: 66rpx;
- font-size: 28rpx;
- color: #282828;
- }
- .search-tabs{
- align-items: center;
- padding: 40rpx 30rpx 30rpx;
- .item{
- color: #999999;
- font-size: 30rpx;
- position: relative;
- +.item{
- margin-left: 55rpx;
- }
- &.on{
- color: var(--view-theme);
- font-size: 34rpx;
- font-weight: bold;
- &::after{
- content: "";
- display: block;
- width: 40rpx;
- height: 5rpx;
- background: var(--view-theme);
- position: absolute;
- left: 50%;
- margin-left: -20rpx;
- bottom: -18rpx;
- }
- }
- }
- }
- .author-wrap{
- .focusBtn{
- color: var(--view-theme)!important;
- border-color: var(--view-theme)!important;
-
- }
- }
- .main {
- background: #ffffff;
- padding: 0 20rpx;
- min-height: 100vh;
- .goods-wrap{
- margin-top: 20rpx;
- }
- }
- .goods {
- display: flex;
- flex-wrap: wrap;
- justify-content: space-between;
- }
- .empty-box{
- display: flex;
- flex-direction: column;
- justify-content: center;
- align-items: center;
- margin-top: 0;
- padding-top: 200rpx;
- image{
- width: 414rpx;
- height: 240rpx;
- }
- .txt{
- font-size: 26rpx;
- color: #999;
- }
- }
- </style>
|