avue中实现消息的实时展示
生活随笔
收集整理的這篇文章主要介紹了
avue中实现消息的实时展示
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
“
大家好,我是雄雄,歡迎關注微信公眾號:雄雄的小課堂。
”前言
一個功能寫了大半天,主要是數據表設計的有點復雜,且這個項目是10月份就寫的放那的,里面有些東西都忘記了……先看數據庫結構,然后理思路,最后實現功能。
效果如下:
其實現在看看,也不是很難。
實現思路
項目背景:大致就是給教練用的系統,這個消息功能就是XXX運動員完成了XX方案時,該系統就會實時通知(對了,忘記加定時了,,,發完文章之后就去加…)。
方案表有一個方案的完成狀態,通過該字段做判斷,在前臺展示消息。
方案表新加了個更改時間字段,為了在前臺展示完成該方案的時間。
實現思路是將完成了的方案,封裝成消息公告對象,最后添加在消息表中,展示在前臺。每次去查詢方案表中已完成了的方案時,都會執行添加消息的方法,這樣就會造成添加重復,不管完成了的方案有沒有被添加過,都會重新添加一次,所以又在方案表中新加了個作為區分的字段。
在前臺實現遍歷消息公告表,遍歷展示在指定位置。
代碼實現
項目中用的是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,今天記錄完畢!
總結
以上是生活随笔為你收集整理的avue中实现消息的实时展示的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦幻西游帮派名字 梦幻西游帮派名字推荐
- 下一篇: 喜乐安康是什么意思 喜乐安康解释