avue中实现消息的实时展示

简介: avue中实现消息的实时展示

前言


一个功能写了大半天,主要是数据表设计的有点复杂,且这个项目是10月份就写的放那的,里面有些东西都忘记了……先看数据库结构,然后理思路,最后实现功能。


效果如下:

26f2384d8a02d1bce0ecf420b1d7ce7d.png

其实现在看看,也不是很难。



实现思路


  1. 项目背景:大致就是给教练用的系统,这个消息功能就是XXX运动员完成了XX方案时,该系统就会实时通知(对了,忘记加定时了,,,发完文章之后就去加…)。


  1. 方案表有一个方案的完成状态,通过该字段做判断,在前台展示消息。


  1. 方案表新加了个更改时间字段,为了在前台展示完成该方案的时间。


  1. 实现思路是将完成了的方案,封装成消息公告对象,最后添加在消息表中,展示在前台。每次去查询方案表中已完成了的方案时,都会执行添加消息的方法,这样就会造成添加重复,不管完成了的方案有没有被添加过,都会重新添加一次,所以又在方案表中新加了个作为区分的字段。


  1. 在前台实现遍历消息公告表,遍历展示在指定位置。



代码实现


项目中用的是avue,HTML中的代码如下:

<avue-notice @click="handleClick"
            :data="noticeList"
                       :option="option"
                       @page-change="pageChange">
          </avue-notice>


methods中的代码如下:(主要是用来遍历消息)

getNoticeList(){
      getNoticeStsteByDeptId().then(res => {
        const data  = res.data.data;
        for (let i = 0; i < data.length; i++) {
          let listInfo =
          {
            title: '',
            subtitle: '',
            tag: '',
            status: 0,
            id:0,
          };
          listInfo.subtitle = data[i].createTime;
          listInfo.tag = "查看";
          listInfo.title = data[i].title+"已经完成了"+data[i].content+"训练方案";
          listInfo.status = data[i].status;
          listInfo.id = data[i].id;
          if(data[i].status===1) {
            this.weiduNoticeCount += 1;
          }
          this.noticeList.push(listInfo);
        }
        this.xiaoxiLabel = "消息("+this.weiduNoticeCount+")";
      });
    },


声明的变量:

data () {
    return {
      activeName: 'second',
      option: {
        props: {
          img: 'img',
          title: 'title',
          subtitle: 'subtitle',
          tag: 'tag',
          status: 'status',
          id:'id'
        },
      },
      //公告信息
      noticeList: [],
      //未读的公告
      weiduNoticeCount:0,
      //消息的文本
      xiaoxiLabel:"",
    }
  },


单击公告时,将状态修改为已读:

//单击时,修改状态为已完成
    handleClick(item){
      var id = item.id;
      //根据编号修改信息
      updateNew(id).then(() => {
        this.$message({
          type: "success",
          message: "已读!"
        });
        done();
        this.getNoticeList();
      }, error => {
        window.console.log(error);
        loading();
      });
    },


notice.js中的方法如下:

/**
 * 获取消息(已完成的,根据机构编号)
 * @param id
 * @returns {*}
 */
export const getNoticeStsteByDeptId = () => {
  return request({
    url: '/api/blade-desk/notice/getNoticeStsteByDeptId',
    method: 'get',
  })
}
/**
 * 修改状态,原来的那个看不懂……
 * @returns {*}
 * @param id
 */
export const updateNew = (id) => {
  return request({
    url: '/api/blade-desk/notice/updateNew',
    method: 'get',
    params: {
      id
    }
  })
}



最后就是后台控制器中的代码:

/**
  * 获取已完成的消息
  */
 @GetMapping("/getNoticeStsteByDeptId")
 @ApiOperationSupport(order = 1)
 @ApiOperation(value = "详情", notes = "传入notice")
 public R<List<Notice>> getNoticeStsteByDeptId() {
  //获取当前用户所在的部门
  Long deptId = Long.parseLong(WebUtil.getCookieVal("dept_id"));
  //根据部门和状态查询信息
  List<Programme> programmeList = programmeService.getPaogramStateBydeptId(2,deptId,0);
  //遍历方案集合,得到方案的修改时间、方案名称,完成方案的人,添加到公告表中
  for(Programme programme : programmeList){
   //方案民称
   String programName = programme.getPnme();
   //时间
   Date updatetime = programme.getUpdateTime();
   Athletes athletes = new Athletes();
   athletes.setId(programme.getPaid());
   Athletes detail = athletesService.getOne(Condition.getQueryWrapper(athletes));
   String athName = detail.getAname();
   //调用添加公告的方法
   Notice notice = new Notice();
   notice.setContent(programName);
   notice.setCreateTime(updatetime);
   notice.setTitle(athName);
   //公告状态,4已读.1未读,
   notice.setStatus(1);
   //添加
   noticeService.save(notice);
  }
  //查询公告里面的信息
  List<Notice> noticeList = noticeService.list();
  return R.data(noticeList);
 }
 /**
  * 修改信息
  */
 @GetMapping("/updateNew")
 @ApiOperation(value = "修改", notes = "传入notice")
 public R updateNew(Long id) {
  Notice notice = noticeService.getById(id);
  notice.setStatus(4);
  return R.status(noticeService.updateById(notice));
 }

OK,今天记录完毕!

目录
相关文章
element ui实现多层级复杂表单的操作(添加与回显)之表单操作交互操作
element ui实现多层级复杂表单的操作(添加与回显)之表单操作交互操作
823 0
element ui实现多层级复杂表单的操作(添加与回显)之表单操作交互操作
|
物联网 大数据 区块链
我的CSDN博客十年
版权声明:本文为半吊子子全栈工匠(wireless_com,同公众号)原创文章,未经允许不得转载。 https://blog.csdn.net/wireless_com/article/details/84144030 一不留神,已经在CSDN写了十年的博客(http://blog.csdn.net/wireless_com)。
1771 0
|
17天前
|
存储 弹性计算 人工智能
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾
2025年9月24日,阿里云弹性计算团队多位产品、技术专家及服务器团队技术专家共同在【2025云栖大会】现场带来了《通用计算产品发布与行业实践》的专场论坛,本论坛聚焦弹性计算多款通用算力产品发布。同时,ECS云服务器安全能力、资源售卖模式、计算AI助手等用户体验关键环节也宣布升级,让用云更简单、更智能。海尔三翼鸟云服务负责人刘建锋先生作为特邀嘉宾,莅临现场分享了关于阿里云ECS g9i推动AIoT平台的场景落地实践。
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾
|
8天前
|
云安全 人工智能 安全
Dify平台集成阿里云AI安全护栏,构建AI Runtime安全防线
阿里云 AI 安全护栏加入Dify平台,打造可信赖的 AI
|
11天前
|
人工智能 运维 Java
Spring AI Alibaba Admin 开源!以数据为中心的 Agent 开发平台
Spring AI Alibaba Admin 正式发布!一站式实现 Prompt 管理、动态热更新、评测集构建、自动化评估与全链路可观测,助力企业高效构建可信赖的 AI Agent 应用。开源共建,现已上线!
1044 34
|
11天前
|
机器学习/深度学习 人工智能 搜索推荐
万字长文深度解析最新Deep Research技术:前沿架构、核心技术与未来展望
近期发生了什么自 2025 年 2 月 OpenAI 正式发布Deep Research以来,深度研究/深度搜索(Deep Research / Deep Search)正在成为信息检索与知识工作的全新范式:系统以多步推理驱动大规模联网检索、跨源证据。
805 55
|
9天前
|
文字识别 测试技术 开发者
Qwen3-VL新成员 2B、32B来啦!更适合开发者体质
Qwen3-VL家族重磅推出2B与32B双版本,轻量高效与超强推理兼备,一模型通吃多模态与纯文本任务!
697 11
下一篇
开通oss服务