【Vue】未读消息标记功能
页面展示的效果如图,需要定时更新未读消息

首先是后台的接口,查询未处理的消息数量
因为是七张消息表,数据我需要合在一起返回给前台:
这里使用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】未读消息标记功能的更多相关文章
- Android 高仿QQ滑动弹出菜单标记已读、未读消息
在上一篇博客<Android 高仿微信(QQ)滑动弹出编辑.删除菜单效果,增加下拉刷新功能>里,已经带着大家学习如何使用SwipeMenuListView这一开源库实现滑动列表弹出菜单,接 ...
- Android系统 小米/三星/索尼 应用启动图标未读消息数(BadgeNumber)动态提醒
http://www.51itong.net/android-badgenumber-9789.html Android系统 小米/三星/索尼 应用启动图标未读消息数(BadgeNumber)动态提醒 ...
- wing带你玩转自定义view系列(2) 简单模仿qq未读消息去除效果
上一篇介绍了贝塞尔曲线的简单应用 仿360内存清理效果 这一篇带来一个 两条贝塞尔曲线的应用 : 仿qq未读消息去除效果. 转载请注明出处:http://blog.csdn.net/wingicho ...
- iOS 未读消息角标 仿QQ拖拽 简单灵活 支持xib(源码)
一.效果 二.简单用法 超级简单,2行代码集成:xib可0代码集成,只需拖一个view关联LFBadge类即可 //一般view上加角标 _badge1 = [[LFBadge alloc] init ...
- 未读消息(小红点),前端与 RabbitMQ实时消息推送实践,贼简单~
前几天粉丝群里有个小伙伴问过:web 页面的未读消息(小红点)怎么实现比较简单,刚好本周手头有类似的开发任务,索性就整理出来供小伙伴们参考,没准哪天就能用得上呢. 之前在 <springboot ...
- 桌面图标未读消息(小米,sony,三星手机)
新消息来了,在桌面的Laucher图标上显示新消息数 /** * 应用桌面图标未读消息显示工具类 * 只支持 小米,三星和索尼 */ public class BadgeUtil { final st ...
- [iOS微博项目 - 3.6] - 获取未读消息
github: https://github.com/hellovoidworld/HVWWeibo A.获取登陆用户未读消息 1.需求 获取所有未读消息,包括新微博.私信.@.转发.关注等 把未 ...
- Android BGABadgeView:新消息/未接来电/未读消息/新通知圆球红点提示(1)
Android BGABadgeView:新消息/未接来电/未读消息/新通知圆球红点提示(1) 现在很多的APP会有新消息/未接来电/未读消息/新通知圆球红点提示,典型的以微信.QQ新消息提示为 ...
- 【Python学习笔记】-APP图标显示未读消息数目
以小米手机系统为例,当安装的某个APP有未读消息时,就会在该APP图标的右上角显示未读消息的数目.本文主要解说怎样用Python语言实现图标显示未读消息的数目.首先,还是要用到Python中PIL库, ...
- android 实现类似qq未读消息点击循环显示
public void jumpUnread(boolean cycle) { List<ContactLogModel> dataList = adapter.getContactLog ...
随机推荐
- itest(爱测试)开源接口测试&敏捷测试管理平台8.1.0发布
(一)itest 简介 itest 开源敏捷测试管理,testOps 践行者,极简的任务管理,测试管理,缺陷管理,测试环境管理,接口测试,接口Mock 6合1,又有丰富的统计分析.可按测试包分配测试用 ...
- js jquery input radio点击事件
HTML: <input type="radio" name="myname" value="1" />1 <input ...
- Kubernetes监控手册03-宿主监控实操
生产环境大都是在 Linux 下的,所以这篇文章我们先来分享如何使用 Categraf 采集 Linux OS 相关的指标.读完本篇内容,你应该可以完成机器层面的监控了. 原理概述 Categraf ...
- 在线Token、随机密码生成工具
在线生成自定义长度,包含大写或小写字母.数字或符号的随机字符串.无论你需要生成API访问令牌.账户激活令牌,还是随机密码字符串,它都能帮你快速完成. 在线Token.随机密码生成工具
- Java设计模式-责任链模式,应用接口多个参数验证,订单多个费用的计算
Java设计模式-责任链模式,应用接口多个参数验证,订单多个费用的计算 1.定义请求和返回对象的上下文对象 package com.example.core.mydemo.java.filter; i ...
- Thread.sleep 延时查询或延时查询前更新es缓存数据
Thread.sleep 延时查询或延时查询前更新es缓存数据 MQ消息的顺序性,或发送MQ的发送端未严格事务处理,可能存在数据未落库的情况,而导致接收端处理MQ消息的时候,查询为空. //demo1 ...
- spark高级分析2的数据集地址
第二章 数据分析 wget https://archive.ics.uci.edu/ml/machine-learning-databases/00210/donation.zip 第三章 音乐推 ...
- k8s中的亲和性、污点与容忍(调度到不同的宿主机)
本文章并未经过严格实践,如有错误,辛苦指出. 背景 服务需要多副本,来保证高可靠.多活. 那么问题来了,假如这些副本都在同一个宿主机上,或者同一个交换机下-宿主机.交换机其中一项坏掉了,那多副本还有什 ...
- Nginx+Fail2ban 实现同一ip在一分钟内连续三次请求同一接口并响应成功时进行封禁
1. 安装 Fail2Ban 和 Nginx 如果尚未安装 Fail2Ban 和 Nginx,可以使用以下命令进行安装: # CentOS默认的仓库中可能不包含Nginx,所以需要添加EPEL(Ext ...
- Netty(三)Netty模型
1. Netty模型 Netty主要基于主从Reactor多线程模型做了一定的改进,其中主从Reactor多线程模型有多个Reactor. 简版图: 说明: BossGroup线程维护Selector ...