dl_mer_uniapp/components/discoverFlowItem/discoverFlowItem.vue
2025-03-04 16:03:38 +08:00

287 lines
6.6 KiB
Vue
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view :data-theme="theme">
<view @click="goDetail(items)" class="wf-page2">
<view class='pictrue skeleton-rect'>
<!-- <image :src='items.cover' mode="widthFix"></image> -->
<!-- <image :src='item.image[0]' mode="widthFix"></image> -->
<easy-loadimage mode="widthFix" :image-src="items.cover"></easy-loadimage>
<view class="video_img" v-if="items.type == 2">
<text class="iconfont icon-24gf-play"></text>
</view>
<!-- 审核状态:0-待审核1-审核通过2-审核失败3-平台关闭 -->
<view class="approval_status" v-if="items.auditStatus != 1">
<view v-if="items.auditStatus == 2" class="approval_title">审核未通过</view>
<view v-if="items.auditStatus == 3" class="approval_title">平台关闭</view>
<view v-if="items.auditStatus == 0" class="approval_title">正在审核</view>
<text v-if="items.auditStatus == 2 || items.auditStatus == 3" class="approval_info">查看未通过原因</text>
<text v-if="items.auditStatus == 0" class="approval_info">通过后将展示在列表</text>
</view>
</view>
<view class='text'>
<view v-if="items.title"class='name skeleton-rect mt30'>
<text class="text_name line2">
{{items.title}}
</text>
</view>
<view class="count acea-row skeleton-rect">
<view class="author acea-row">
<image class="image" :src="items.authorAvatar ? items.authorAvatar : urlDomain+'crmebimage/presets/morenT.png'" mode="widthFix"></image>
<text class="author_name line1">{{items.authorName}}</text>
</view>
<view class="like" @click.stop="likeToggle(items)">
<view class="like_count">
<text class="iconfont" :class="items.userIsLike ? 'icon-shoucang1' : 'icon-dianzan'"></text>
<text
class="collect">{{items.likeNum ? items.likeNum < 10000 ? items.likeNum : (items.likeNum / 10000).toFixed(2) + 'w' : '' }}</text>
</view>
</view>
</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>
// +----------------------------------------------------------------------
import {
toLogin
} from '@/libs/login.js';
import {
discoverNoteLike
} from '@/libs/follow.js';
import easyLoadimage from '@/components/base/easy-loadimage.vue'
import {
mapGetters
} from "vuex";
let app = getApp();
export default {
components: {
easyLoadimage
},
computed: {
...mapGetters(['uid', 'isLogin'])
},
props: {
// 区分从发现列表、我的主页作品进去点进去内容列表home从我的主页点进去
fromTo: {
type: String,
default: ''
},
items: {
type: Object,
default: {}
},
type: {
type: Number,
default: 0
},
tab: {
type: Number,
default: 1
}
},
data() {
return {
urlDomain: this.$Cache.get("imgHost"),
theme: app.globalData.theme
};
},
methods: {
//点赞
likeToggle(item) {
if (this.isLogin) {
discoverNoteLike(item.id).then(() => {
this.$set(item, 'userIsLike', !item.userIsLike);
if (!item.userIsLike) {
item.likeNum--;
item.likeNum = item.likeNum == 0 ? 0 : item.likeNum
} else {
item.likeNum++;
}
});
} else {
toLogin();
}
},
goDetail(item) {
if (item.type == 1) {
if (this.fromTo === 'home') {
uni.navigateTo({
url: `/pages/discover/discover_details/index?noteId=${item.id}`
});
} else {
uni.navigateTo({
url: `/pages/discover/discover_recommend/index?noteId=${item.id}`
});
}
}else{
uni.navigateTo({
//#ifdef APP
url: `/pages/discover/discover_video/appVideo/index?noteId=${item.id}&fromTo=${this.fromTo}`
//#endif
//#ifndef APP
url: `/pages/discover/discover_video/routineVideo/index?noteId=${item.id}&fromTo=${this.fromTo}`
//#endif
});
}
}
}
}
</script>
<style lang="scss" scoped>
.pictrue {
height: 339rpx;
border-radius: 16rpx;
position: relative;
/deep/image,
/deep/.easy-loadimage,
uni-image {
width: 100%;
max-width: 339rpx;
height: 339rpx;
border-radius: 16rpx;
}
.video_img {
position: absolute;
top: 16rpx;
right: 16rpx;
z-index: 10;
width: 40rpx;
height: 40rpx;
line-height: 40rpx;
background: (rgba(0, 0, 0, .5));
border-radius: 50%;
color: #fff;
text-align: center;
.iconfont {
font-size: 20rpx;
position: absolute;
left: 12rpx;
}
}
.plant-show {
width: 42rpx;
height: 42rpx;
border-radius: 100%;
background: rgba(0, 0, 0, .5);
display: flex;
align-items: center;
justify-content: center;
position: absolute;
top: 10rpx;
left: 10rpx;
.iconfont {
font-size: 20rpx;
color: #fff;
}
}
}
.loadfail-img {
width: 100%;
height: 345rpx;
}
.text {
padding-bottom: 6rpx;
width: 345rpx;
.name {
padding: 0 20rpx;
color: #333333;
font-size: 28rpx;
font-weight: bold;
}
.count {
padding: 0 20rpx;
margin-top: 22rpx;
justify-content: space-between;
.author {
align-items: center;
}
.author_name {
margin-left: 10rpx;
max-width: 120rpx;
font-size: 24rpx;
color: #333333;
max-width: 180rpx;
}
.author_time {
color: #666666;
}
.like {
font-size: 24rpx;
color: #999999;
display: flex;
.like_count {
display: flex;
align-items: center;
}
.iconfont {
font-size: 30rpx;
}
.icon-shoucang1 {
@include main_color(theme);
}
.collect {
font-size: 24rpx;
margin-left: 5rpx;
}
}
}
}
.wf-page2 .author .image,
.wf-page2 .author uni-image {
width: 46rpx !important;
height: 46rpx !important;
border-radius: 100%;
}
.approval_status {
width: 100%;
height: 100%;
background: rgba(0, 0, 0, .4);
position: absolute;
top: 0;
left: 0;
border-radius: 16rpx;
color: #fff;
text-align: center;
z-index: 5;
.approval_title {
font-size: 28rpx;
margin-top: 135rpx;
font-weight: bold;
}
.approval_info {
font-size: 24rpx;
margin-top: 24rpx;
}
}
</style>