【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 ...
随机推荐
- k8s中查看pod的yaml文件的案例
在Kubernetes (K8s) 中,Pod 的 YAML 文件定义了 Pod 的配置和规格.当你想要查看 Pod 的 YAML 文件参数参考时,通常是为了了解可以配置哪些字段以及这些字段的含义. ...
- python-使用pyecharts绘制各省份985学校数量图
1.环境 代码运行环境:python3.7 相关的库:pyecharts 1.7.1 代码编辑器:visual studio code 2.目的 通过使用pyecharts库,来绘制全国各省985高校 ...
- react 数组列表
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- EF MYSQL DB FIRST 出现2次数据库名
环境:使用ADO设计器添加的数据库实体,运行时出现 :Table 'world.world.city' doesn't exist . world 是mysql的演示数据库. MySql.Data.E ...
- windows 通过cmd命令(netsh wlan命令)连接wifi
引用:https://www.cnblogs.com/moonbaby/p/11188135.html 1)显示本机保存的profiles,配置文件是以wifi的ssid命名的. netsh wlan ...
- javascript 生成器和迭代器
前置知识 生成器函数会返回一种称为Generator的迭代器 迭代器是一个对象,定义一个序列,并在终止时返回一个返回值 Symbol.iterator为每一个对象定义了默认的迭代器,可以被for..o ...
- 3个线程分别交替输出xyz字符,输出10遍
一位群友分享的**公司面试题 3个线程分别交替输出xyz字符,输出10遍 public class XYZ implements Runnable { private static AtomicInt ...
- 基于 Swagger 增强 UI FytApi.MUI
FytApi.MUI 介绍 基于swagger的轻量级,注入化的api-ui组件 支持netcore 3.1/5.0/6.0 特点 零浸入.轻量.简单.好看.好用 可配置权限认证以及Header,支持 ...
- ConvertLatOrLonFilter-经纬度格式转换-保留6位
ConvertLatOrLonFilter-经纬度格式转换-保留6位 /** * 转换经纬度 * 小数点最后最多为6位 * @param latOrLon * @return */ private S ...
- 报错 ERR !npicode ELIFECYCLE dev: wue-cli-service serve
在系统变量 Path 里面加上:%SystemRoot%\system32,关掉终端,重新启动项目.