darenListCom.vue 8.68 KB
<template>
    <div class="daren-list-com" v-if="item">
		<div class="box" @click.stop.prevent @click="jump(item)">
			<div class="top-box" v-if="item.shop_user" @click.stop.prevent @click="userJump(item,2)">
				<div class="top-left">

					<!-- 用户头像/昵称 -->
					<user-avatar class="user-avatar-box"
						:users="item.shop_user">
					</user-avatar>
				</div>
				<div class="top-right">
					<!-- 发布时间 -->
                    <div class="day" v-if="getDatetime(item.addtime, item.time).day">
                        {{getDatetime(item.addtime, item.time).day}}
                    </div>
                    <div class="date">{{getDatetime(item.addtime, item.time).date}}</div>
				</div>
			</div>

			<!-- 动态简介 -->
			<div class="intro-box" v-if="item.title">
				{{item.title}}
			</div>

			<!-- 中间图片部分 -->
			<div class="center-box" v-if="item.img">

				<!-- 达人图片展示(单独组建处理,宫格形式) -->
				<palace-grid
					:grids="{
		            list:imgArr
					}">
				</palace-grid>
			</div>

			<!-- 底部部分 -->
			<div class="bottom-box" v-if="item.goods">

				<!-- 热门信息 -->
				<div class="hot-info-box" v-if="item&&item.comment_content&&item.comment_content.content">
					<div class="hot-img-box">
						<img src="static/img/icon_popular_comment.png" class="hot-img" mode="heightFix" />
					</div>
					<div class="line"></div>
					<div class="info">
						{{item.comment_content.content}}
					</div>
				</div>

				<div class="goods-box">

					<!-- 商品标签组建 -->
					<div class="goods">
						<!-- goodsItem_4 -->
						<goods-item-4 @jump="goodsJump" @primary="goodsPrimary"
							:item="item.goods">
						</goods-item-4>
					</div>
				</div>

				<!-- 评论/点赞/查看按钮 -->
				<div class="comment-like-view-box">
					<div class="left">

						<!-- 评论 -->
						<div class="comment-box" v-if="item.comment">
							<img src="static/img/icon_daren_list_comment.png" class="icon-img" />
							<div class="number">{{item.comment}}</div>
						</div>

						<!-- 点赞 -->
						<div class="like-box" v-if="item.upper">
							<img src="static/img/icon_daren_list_like.png" class="icon-img" />
							<div class="number">{{item.upper}}</div>
						</div>
					</div>
					<div class="right">
						查看
					</div>
				</div>
			</div>

		</div>
    </div>
</template>

<script>

	// 引入组件
	import userAvatar from "@/components/userAvatarBox/userAvatarBox";
	import palaceGrid from "@/components/palaceGrid/palaceGrid";
	import goodsItem4 from "@/components/goodsItem_4/goodsItem_4";

    export default {
		name: "darenListCom",
        data() {
            return {
                imgArr: []
            }
        },
		props: ["item"],
        computed: {

            // 计算显示日期
            getDatetime() {

                function isLeapYear(year) {
                    if (year % 4 == 0&&year % 100 != 0||year % 400 ==0) {
                        return true;
                    } else {
                        return false;
                    }
                }

                return function(addTime, nowTime, index = undefined) {

                    // 返回数据
                    let result = {
                        year: "",
                        day: "",
                        date: ""
                    };

                    // 设置时间对象
                    let now = new Date(nowTime * 1000);
                    let add = new Date(addTime * 1000);

                    // 一年中的第几天
                    let nowDays = Math.ceil(( now - new Date(now.getFullYear().toString())) / (24 * 60 * 60 * 1000)) + 1;
                    let addDays = Math.ceil(( add - new Date(add.getFullYear().toString())) / (24 * 60 * 60 * 1000)) + 1;

                    // 根据情况,判断今天/昨天/前天
                    if (nowDays === addDays && now.getFullYear() === add.getFullYear()) {						// 今天
                        result.year = "";
                        result.day = "";
                        result.date = (add.getHours() >= 10 ? add.getHours() : "0" + add.getHours()) + ":" + (add.getMinutes() >= 10 ? add.getMinutes() : "0" + add.getMinutes());
                    } else if (nowDays > addDays && now.getFullYear() === add.getFullYear()) {				// 正常大于,判断大于多少,设置昨天/前天/日期
                        result.year = "";
                        if (nowDays - addDays === 1) {
                            result.day = "昨天";
                            result.date = (add.getHours() >= 10 ? add.getHours() : "0" + add.getHours()) + ":" + (add.getMinutes() >= 10 ? add.getMinutes() : "0" + add.getMinutes());
                        } else if (nowDays - addDays === 2) {
                            result.day = "前天";
                            result.date = (add.getHours() >= 10 ? add.getHours() : "0" + add.getHours()) + ":" + (add.getMinutes() >= 10 ? add.getMinutes() : "0" + add.getMinutes());
                        } else {
                            result.day = "";
                            result.date = (add.getMonth() + 1) + "-" + add.getDate() + " " + (add.getHours() >= 10 ? add.getHours() : "0" + add.getHours()) + ":" + (add.getMinutes() >= 10 ? add.getMinutes() : "0" + add.getMinutes());
                        }
                    } else if (now.getFullYear() > add.getFullYear()) {				// 跨年,判断设置年份和闰年等,设置昨天/前天/日期

                        // 设置年
                        if (!this.years.includes(add.getFullYear())) {
                            result.year = add.getFullYear();
                            this.years.push(add.getFullYear());
                        } else {
                            result.year = "";
                        }

                        // 一年的天数
                        let fullYearDay = 365;

                        // 判断是否为闰年
                        if (isLeapYear(add.getFullYear())) {
                            fullYearDay = 366;
                        }

                        // 判断是夸一年还是多年
                        if (now.getFullYear() - add.getFullYear() === 1) {

                            // 设置昨天/前天/日期
                            if (nowDays + fullYearDay - addDays === 1) {
                                result.day = "昨天";
                                result.date = (add.getHours() >= 10 ? add.getHours() : "0" + add.getHours()) + ":" + (add.getMinutes() >= 10 ? add.getMinutes() : "0" + add.getMinutes());
                            } else if (nowDays + fullYearDay - addDays === 2) {
                                result.day = "前天";
                                result.date = (add.getHours() >= 10 ? add.getHours() : "0" + add.getHours()) + ":" + (add.getMinutes() >= 10 ? add.getMinutes() : "0" + add.getMinutes());
                            }
                        }  else {
                            result.day = "";
                            result.date = (add.getMonth() + 1) + "-" + add.getDate();
                        }
                    }

                    return result;
                }
            }
        },
		components: {
			userAvatar,
			palaceGrid,
			goodsItem4
        },
        mounted() {

            // 如果有图片数组,处理图片数组
            if (this.item.img && this.item.img.length) {

                // 遍历数组
                this.item.img.forEach((item, index) => {
                    this.imgArr.push({
                        img: item,
                        w: 0,
                        h: 0
                    });

                    // 判断如果有视频,添加有视频属性到imgArr中
                    if (index === 0 && this.item.video && this.item.video_img) {
                        this.$set(this.imgArr[index], "v", true);
                    }
                });
            }
        },
		methods: {

			/**
			 * 点击跳转
			 * @param {object} item [数据对象]
			 */
			jump(item) {
				this.$emit("jump", item);
			},

			/**
			 * 用户头像/昵称,点击跳转
			 * @param {object} item [数据对象]
			 */
			userJump(item,type) {
                this.$set(item, "type", "2");
				this.$emit("userJump", item);
			},

			/**
			 * 点击跳转商品
			 * @param {object} item [数据对象]
			 */
			goodsJump(item) {
				this.$emit("goodsJump", item);
			},

			/**
			 * 点击跳转商品购买
			 * @param {object} item [数据对象]
			 */
			goodsPrimary(item) {
				this.$emit("goodsPrimary", item);
			},
		}
    }
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style rel="stylesheet/less" lang="less" scoped>
    @import './darenListCom';
</style>