Vue项目 消息页面 未读变已读 、传数组、处理时间的函数、页面刷新

 MessageItem.vue 子组件

<template>
  <div class="my-course-content">
    <div style="width: 980px" v-if="messList && messList.length > 0">
      <div class="course-main" style="width: 980px">
        <div
          class="course-item"
          v-for="(item, index) in messList"
          :key="item.id"
          :class="cur === index ? 'active' : ''"
          @mouseenter="showDelete(index)"
          @mouseleave="closeDelete"
          @click="goRead(item)"
        >
          <div class="item-dot" v-if="item.status === 1"></div>
          <div class="item-main">
            <p class="title">{{ item.title }}</p>
            <p class="time">
              {{ dateFormat(item.createTime, "yyyy-MM-dd hh:mm:ss") }}
            </p>
          </div>
          <div class="delete" v-show="cur === index">
            <img
              src="/image/about/remove.png"
              alt=""
              @click="goDelete(item.id)"
            />
          </div>
        </div>
      </div>
    </div>
    <div class="course-empty" v-else>
      <el-empty
        image="/image/about/mess-empty.png"
        description="暂无消息"
      ></el-empty>
    </div>
  </div>
</template>

<script>
import messageApi from "../../../common/api/message";
import tokenApi from "../../../common/api/token";
import { Loading } from "element-ui";
export default {
  props: {
    messList: {
      type: Array,
      default: [],
      cur: -1,
    },
  },
  data() {
    return {
      cur: -1,
    };
  },
  onLoad() {
  },
  methods: {
    //处理时间的函数
    dateFormat(datetime, fmt) {
      datetime = new Date(datetime);
      var o = {
        "M+": datetime.getMonth() + 1, //月份
        "d+": datetime.getDate(), //日
        "h+": datetime.getHours(), //小时
        "m+": datetime.getMinutes(), //分
        "s+": datetime.getSeconds(), //秒
        "q+": Math.floor((datetime.getMonth() + 3) / 3), //季度
        S: datetime.getMilliseconds(), //毫秒
      };
      if (/(y+)/.test(fmt))
        fmt = fmt.replace(
          RegExp.$1,
          (datetime.getFullYear() + "").substr(4 - RegExp.$1.length)
        );
      for (var k in o)
        if (new RegExp("(" + k + ")").test(fmt))
          fmt = fmt.replace(
            RegExp.$1,
            RegExp.$1.length == 1
              ? o[k]
              : ("00" + o[k]).substr(("" + o[k]).length)
          );
      return fmt;
    },
    //鼠标移入移出,添加的样式和显示隐藏‘垃圾桶’按钮
    showDelete(index) {
      this.cur = index;
    },
    closeDelete() {
      this.cur = -1;
    },
    //点击 将未读变为已读的功能 已读2 未读1
    goRead(item) {
      if (item.status === 2) {
        return;
      } else if (item.status === 1) {
        //未读状态
        const idArr = [];
        idArr.push(item.id);
        tokenApi.createToken().then((res) => {
          //标记为已读
          messageApi
            .makeRead({
              ids: idArr,
              token: res.data.token,
            })
            .then((res) => {
              //去红点 标记为已读
              if (res.meta.code === "200") {
                this.$message({
                  message: "已读消息成功",
                  type: "success",
                });
                this.$router.go(0);
              } else {
                this.$message({
                  message: "读取消息失败!",
                  type: "success",
                });
              }
            })
            .catch((err) => {
              console.log(err);
            });
        });
      }
    },
    //删除消息
    goDelete(id) {
      tokenApi.createToken().then((res) => {
        console.log(res);
      });
    },
  },
};
</script>

token.js

import request from './request'

export default {
  createToken() {
    return request({
      url: '/api/token/createToken',
      method: 'post'
    })
  },
}

message.js

import { Decrypt } from '../../utils/aes'
import request from './request'

export default {
  //查询消息 /message/getByMemberId
  getMessageById(params) {
    return request({
      url: '/api/message/getByMemberId',
      method: 'post',
      data: params,
      headers: {
        'Authorization': Decrypt(localStorage.getItem('token'))
      }
    })
  },
  //标记为已读
  makeRead({ ids, token }) {
    return request({
      url: '/api/message/makeRead',
      method: 'post',
      data: ids,
      headers: {
        'Authorization': Decrypt(localStorage.getItem('token')),
        'token': token
      }
    })
  },
}

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值