页面展示的效果如图,需要定时更新未读消息

首先是后台的接口,查询未处理的消息数量

因为是七张消息表,数据我需要合在一起返回给前台:

这里使用UNION连接各个表

SELECT COUNT(*) AS `UNREAD_MSG`, 'CLEAN_MSG' AS `MSG_TYPE` FROM aisw_e_service_clean_msg WHERE MERCHANT_ID = #{merchantId} AND `ACCEPT_STATUS` = 0
UNION ALL
SELECT COUNT(*) AS `UNREAD_MSG`, 'DELIVERY_MSG' FROM aisw_e_service_delivery_msg WHERE MERCHANT_ID = #{merchantId} AND `ACCEPT_STATUS` = 0
UNION ALL
SELECT COUNT(*) AS `UNREAD_MSG`, 'FAULT_MSG' FROM aisw_e_service_fault_msg WHERE MERCHANT_ID = #{merchantId} AND `ACCEPT_STATUS` = 0
UNION ALL
SELECT COUNT(*) AS `UNREAD_MSG`, 'INVOICE_MSG' FROM aisw_e_service_invoice_msg WHERE MERCHANT_ID = #{merchantId} AND `ACCEPT_STATUS` = 0
UNION ALL
SELECT COUNT(*) AS `UNREAD_MSG`, 'ONE_CHECKOUT_MSG' FROM aisw_e_service_one_checkout_msg WHERE MERCHANT_ID = #{merchantId} AND `ACCEPT_STATUS` = 0
UNION ALL
SELECT COUNT(*) AS `UNREAD_MSG`, 'RENEWAL_MSG' FROM aisw_e_service_renewal_msg WHERE MERCHANT_ID = #{merchantId} AND `ACCEPT_STATUS` = 0
UNION ALL
SELECT COUNT(*) AS `UNREAD_MSG`, 'WAKE_MSG' FROM aisw_e_service_wake_msg WHERE MERCHANT_ID = #{merchantId} AND `ACCEPT_STATUS` = 0

结果集的样子:

+------------+------------------+
| UNREAD_MSG | MSG_TYPE |
+------------+------------------+
| 9 | CLEAN_MSG |
| 4 | DELIVERY_MSG |
| 2 | FAULT_MSG |
| 7 | INVOICE_MSG |
| 8 | ONE_CHECKOUT_MSG |
| 6 | RENEWAL_MSG |
| 2 | WAKE_MSG |
+------------+------------------+
7 rows in set (0.03 sec)

丢给前台的JSON:

{
"code": 200,
"data": [
{
"UNREAD_MSG": 8,
"MSG_TYPE": "CLEAN_MSG"
},
{
"UNREAD_MSG": 5,
"MSG_TYPE": "DELIVERY_MSG"
},
{
"UNREAD_MSG": 1,
"MSG_TYPE": "FAULT_MSG"
},
{
"UNREAD_MSG": 1,
"MSG_TYPE": "INVOICE_MSG"
},
{
"UNREAD_MSG": 8,
"MSG_TYPE": "ONE_CHECKOUT_MSG"
},
{
"UNREAD_MSG": 11,
"MSG_TYPE": "RENEWAL_MSG"
},
{
"UNREAD_MSG": 2,
"MSG_TYPE": "WAKE_MSG"
}
],
"message": "操作成功!",
"status": "success"
}

前台封装的API接口:

/**
* 获取未受理的消息数量
*/
export function getTagUnreads() {
return requestDefault({
url: '/sys/room/message/unreads',
method: 'get',
})
}

文件位置:

E:\nsp.asw\code\ehotel-web\src\api\roomService\serviceMessage.js

组件引入接口对象:

import { getTagUnreads } from '../../api/roomService/serviceMessage.js'

封装一个定时函数:

  methods: {
freshData() {
return setInterval(() => {
getTagUnreads()
.then(res => {
if (res.code === 200 && res.status === 'success') {
this.tags = res.data
}
})
}, 1000 * 5
)
},

}

data属性存储一个timer引用:

  data() {
return {
activeName: 'extension',
tags: [],
timer: null,
}
},

然后可以在Vue几个生命周期函数中调用

- Beforecreate() 实例创建之前

- Created() 实例创建后

- Mounted() 数据挂载后

在实例被销毁的时候,顺带把定时任务也释放

运行的时候我发现页面很慢加载出来,原因是因为定时设定了5秒后执行

我用了v-if动态渲染,如果初始数据没有就不加载了。。。(这个原因找了半天)

所以在执行之前初始化的时候就调用一次接口拿数据过来

之后在设置延迟获取

  created() {
getTagUnreads()
.then(res => {
if (res.code === 200 && res.status === 'success') {
this.tags = res.data
}
}) if (this.timer) clearInterval(this.timer)
else setTimeout(() => {this.timer = this.freshData()}, 3000
) },
destroyed() {
clearInterval(
this.timer)
}

然后各个标签获取需要翻译:

这里封装一个取数据的方法

    getCount(key) {
return this.tags.find(x => x.MSG_TYPE === key)['UNREAD_MSG']
}

渲染的时候判断消息数量是否大于0,等于0的情况就不要渲染消息标记出来

      <el-tab-pane label="故障报修申请" name="fault">
<span class="badge-container" slot="label">
故障报修申请
<span v-if="getCount('FAULT_MSG') > 0" class="tag">
{{getCount('FAULT_MSG')}}
</span>
</span>
<fault-list ref="fault" />
</el-tab-pane>

【Vue】未读消息标记功能的更多相关文章

  1. Android 高仿QQ滑动弹出菜单标记已读、未读消息

    在上一篇博客<Android 高仿微信(QQ)滑动弹出编辑.删除菜单效果,增加下拉刷新功能>里,已经带着大家学习如何使用SwipeMenuListView这一开源库实现滑动列表弹出菜单,接 ...

  2. Android系统 小米/三星/索尼 应用启动图标未读消息数(BadgeNumber)动态提醒

    http://www.51itong.net/android-badgenumber-9789.html Android系统 小米/三星/索尼 应用启动图标未读消息数(BadgeNumber)动态提醒 ...

  3. wing带你玩转自定义view系列(2) 简单模仿qq未读消息去除效果

    上一篇介绍了贝塞尔曲线的简单应用 仿360内存清理效果 这一篇带来一个  两条贝塞尔曲线的应用 : 仿qq未读消息去除效果. 转载请注明出处:http://blog.csdn.net/wingicho ...

  4. iOS 未读消息角标 仿QQ拖拽 简单灵活 支持xib(源码)

    一.效果 二.简单用法 超级简单,2行代码集成:xib可0代码集成,只需拖一个view关联LFBadge类即可 //一般view上加角标 _badge1 = [[LFBadge alloc] init ...

  5. 未读消息(小红点),前端与 RabbitMQ实时消息推送实践,贼简单~

    前几天粉丝群里有个小伙伴问过:web 页面的未读消息(小红点)怎么实现比较简单,刚好本周手头有类似的开发任务,索性就整理出来供小伙伴们参考,没准哪天就能用得上呢. 之前在 <springboot ...

  6. 桌面图标未读消息(小米,sony,三星手机)

    新消息来了,在桌面的Laucher图标上显示新消息数 /** * 应用桌面图标未读消息显示工具类 * 只支持 小米,三星和索尼 */ public class BadgeUtil { final st ...

  7. [iOS微博项目 - 3.6] - 获取未读消息

    github: https://github.com/hellovoidworld/HVWWeibo   A.获取登陆用户未读消息 1.需求 获取所有未读消息,包括新微博.私信.@.转发.关注等 把未 ...

  8. Android BGABadgeView:新消息/未接来电/未读消息/新通知圆球红点提示(1)

     Android BGABadgeView:新消息/未接来电/未读消息/新通知圆球红点提示(1) 现在很多的APP会有新消息/未接来电/未读消息/新通知圆球红点提示,典型的以微信.QQ新消息提示为 ...

  9. 【Python学习笔记】-APP图标显示未读消息数目

    以小米手机系统为例,当安装的某个APP有未读消息时,就会在该APP图标的右上角显示未读消息的数目.本文主要解说怎样用Python语言实现图标显示未读消息的数目.首先,还是要用到Python中PIL库, ...

  10. android 实现类似qq未读消息点击循环显示

    public void jumpUnread(boolean cycle) { List<ContactLogModel> dataList = adapter.getContactLog ...

随机推荐

  1. php分页查询 子查询

     分页查询                 将查询结果只显示一部分                 通过两个参数:参数1 起始数据的索引下标                             参 ...

  2. vue侦听器 - watch

    使用watch来侦听data中数据的变化,watch中的属性一定是data 中已经存在的数据. 当需要监听一个对象的改变时,普通的watch方法无法监听到对象内部属性的改变,只有data中的数据才能够 ...

  3. 红白机基本原理(二) CPU

    CPU 首发公号:Rand_cs NES 使用的 CPU 为 6502,但与标准的 6502 有些许不同,最大的不同在于 NES 使用的芯片拥有一个 pAPU(pseudo-Audio Process ...

  4. 解决:Maven PKIX path building failed: sun.security.provider.certpath

    在构建SpringBoot项目时,maven下载依赖会报 PKIX path building failed: sun.security.provider.certpath的错误. 使用https:/ ...

  5. linux系统下,安装redis教程,以redis 6.2.6为例

    1.下载安装包 手动下载:进入官网选择下载版本https://download.redis.io/releases/ 命令下载: cd /usr/local wget http://download. ...

  6. Java格式化手机号和身份证号,中间使用星号*隐藏

    Java格式化手机号和身份证号,中间使用星号*隐藏 package com.example.core.mydemo.java; /** * renterMobile=111****1198 * idN ...

  7. 字符串— trim()、trimStart() 和 trimEnd()

    在今天的教程中,我们将一起来学习JavaScript 字符串trim().trimStart() 和 trimEnd(). 01.trim() 学习如何使用 JavaScript  trim()方法从 ...

  8. 在Winform程序中动态绘制系统名称,代替图片硬编码名称

    在以前我做程序的时候,一般在登录窗口里面显示程序名称,登录窗口一般设置一张背景图片,由于程序的名称一般都是确定的,所以也不存在太大的问题,不过如果客户定制不同的系统的时候,需要使用Photoshop修 ...

  9. mysql8的collate问题和修改

    环境 os:centos 7.6 数据库:8.0.22 64bit 问题: 字段a,b它们的collate不一样,结果关联的时候,发现错误. 查询了以下,发现挺多的,逐个修改挺麻烦的,于是整理了如下s ...

  10. HTTP协议 学习:1-报文分析

    HTTP协议 学习:1-报文分析 背景 上一讲我们介绍了HTTP协议的一些 概念 ,对HTTP协议有了一个基础的认识. 正如之前学习MQTT协议一样,我们需要对HTTP的报文进行分析. HTTP 报文 ...