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

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

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

这里使用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. vue3项目安装依赖报错 npm ERR! code ERESOLVE

    vue3项目安装依赖报错 npm ERR! code ERESOLVE npm ERR! ERESOLVE could not resolve npm ERR! npm ERR! While reso ...

  2. react路由过渡动画效果

    render() { return ( <div> <li><Link to="/home">Home</Link></li& ...

  3. webpack配置图片处理

    # 安装 npm i -D url-loader html-loader file-loader # loader配置 module: { rules: [ // 图片处理 { test: /\.(p ...

  4. 带你了解磁盘驱动程序(xv6)

    磁盘驱动程序 本文来聊聊磁盘驱动程序,驱动程序是硬件的接口,操作系统通过这个接口来控制硬件工作,所以驱动程序就好比是硬件和系统之间的桥梁.这是百科上给出的解释,可能看起来还是云里雾里,我来做做注解. ...

  5. Java访问权限修饰符(public , private , protected)

    访问权限修饰符包括:public.protected.private和默认修饰符(friendly/包访问权限). 可以修饰在类.字段.方法前面. public:公开权限,所有类都可以访问. prot ...

  6. ABC326

    上次说我的写法low的人的AT号在这里!!( 我又来提供 low 算法了. 从 D 开始. T4 我们把 \(\text{A}\) 看成 \(1\),把 \(\text{B}\) 看成 \(2\),把 ...

  7. 在阿里云WINDOWS机器上部署的JAVA SpringBoot 时不时的无效 。

    用telnet 能通.但代码的HTTP 访问不了. 解决方法,在运行时加-Dserver.address=0.0.0.0,让它监听所有: java -Dserver.address=0.0.0.0 - ...

  8. 如何将 iPhone 的照片同步到 windows 电脑上

    首先在电脑上,新建一个文件夹,并把共享权限打开. 文件夹 右键 属性,共享,添加 Everyone. 然后,让手机和电脑连接到同一个局域网,手机热点即可. 在手机端看 文件 app,找到电脑的共享文件 ...

  9. js金额格式化

    function fmoney(s, n) //s:传入的float数字 ,n:希望返回小数点几位 { n = n > 0 && n <= 20 ? n : 2; s = ...

  10. /etc/shadow文件破解,密码破解,md5,SHA256,SHA512破解

    环境 Kali系统 John the Ripper密码破解者 shadow文件解析 文件的格式为: {用户名}:{加密后的口令密码}:{口令最后修改时间距原点(1970-1-1)的天数}:{口令最小修 ...