前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >资讯项 -组件封装

资讯项 -组件封装

作者头像
名字是乱打的
发布2022-11-06 09:32:20
8990
发布2022-11-06 09:32:20
举报
文章被收录于专栏:软件工程软件工程

1.效果图

2.代码

代码语言:javascript
复制
<template>
    <view class="p-20">
        <!-- 头像 -->
        <view class="flex align-center  justify-between">
            <view class="flex align-center justify-start">
                <image class="border-radius-100" :src="item.userPic" style="height: 65rpx; width: 65rpx;" lazy-load @click.stop="openMy"></image>
                <view class="flex-column justify-between ml-20">
                    <view class="font" style=" line-height: 1.5;" @click.stop="openMy">{{ item.userName }}</view>
                    <view class="font-small text-gray">{{ item.pushDate }}</view>
                </view>
            </view>
            <view
                class="flex align-center justify-center rounded bu-bg-color text-white font animated faster "
                style="width: 90rpx; height: 50rpx;"
                hover-class="rubberBand"
                @click="followOhter"
                v-if="item.hasFollow != true"
            >
                关注
            </view>
        </view>

        <view @click="openInfoDetail">
            <slot>
                <!-- 标题+略所文 -->
                <view class="font">{{ item.infoContent }}</view>
                <!-- 图片 -->
                <image class="rounded w-100" v-show="item.infoPreviewPic" :src="item.infoPreviewPic" style="height: 350rpx;" @click.stop="preViewPic(item.infoPreviewPic)"></image>
            </slot>
        </view>

        <!-- 功能栏 -->
        <view class="flex align-center" v-if="showOperationButton">
            <view class="flex justify-center align-center flex-1" hover-class="select-color-little" @click="infoShare">
                <text class="iconfont icon-fenxiang mr-10"></text>
                <text>{{ item.shareCount ? item.shareCount : '分享' }}</text>
            </view>

            <view class="flex justify-center align-center flex-1" hover-class="select-color-little" @click="clickComment">
                <text class="iconfont icon-pinglun2 mr-10"></text>
                <text>{{ item.commentCount ? item.commentCount : '评论' }}</text>
            </view>

            <view class="flex justify-center align-center flex-1" :class="item.hasLike == true ? 'select-color-little' : ''" @click="infoLike">
                <text class="iconfont icon-dianzan2 mr-10"></text>
                <text>{{ item.likeCount ? item.likeCount : '点赞' }}</text>
            </view>
        </view>
    </view>
</template>

<script>
export default {
    props: {
        item: Object,
        index: Number,
        pageInfo: {
            type: Object,
            default: () => ({
                lastPage: 'info-list',
                currPage: 'info-list'
            })
        },
        showOperationButton: {
            type: Boolean,
            default: true
        }
    },
    methods: {
        //打开个人空间
        openMy: function() {
            console.log('点击头像进入个人空间');
        },
        followOhter: function() {
            console.log('关注这个人哦');
            console.log(this.item);
            console.log(this.item.hasFollow != true);
            //通知父组件
            this.$emit('followOhter', this.index);
        },
        infoLike: function() {
            console.log('点赞');
            this.$emit('infoLike', this.index);
        },
        clickComment: function() {
            if (this.pageInfo.currPage == 'info-detail') {
                //唤醒输入键盘
                this.$emit('clickInfoCommentButton', this.item.infoId);
            } else {
                uni.navigateTo({
                    url: '/pages/info-detail/info-detail?info=' + JSON.stringify(this.item) + '&lastPageInfo=' + JSON.stringify(this.pageInfo) + '&initType=toComment'
                });
            }
        },
        infoShare: function() {
            this.$emit('shareInfo', this.item.infoId);
        },
        openInfoDetail: function() {
            console.log('打开资讯详情');
        },
        //点击图片预览事件
        preViewPic(picUrl) {
            this.$emit('preViewPic', picUrl);
        }
    },
    onLaunch() {
        let page = this.$scope.$getAppWebview();
        console.log(page);
    }
};
</script>

<style></style>
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-11-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.效果图
  • 2.代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档