You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

127 lines
4.1 KiB

<template v-loadding="load.list">
<!--
<el-dropdown trigger="hover" class="avatar-container" @command="handleNoticeMsgClick">
<div class="avatar-wrapper" @click="goToMsgCenter">
<i class="el-icon-bell"></i>
<span>消息中心</span>
</div>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="toPay" >待付款订单(<font color=red>{{noticeMsg.toPayNum || 0}}</font>)</el-dropdown-item>
<el-dropdown-item command="toSend" >待发货订单(<font color=red>{{noticeMsg.toSendNum || 0}}</font>)</el-dropdown-item>
<el-dropdown-item command="toRece" >待收货订单(<font color=red>{{noticeMsg.hadSendNum || 0}}</font>)</el-dropdown-item>
<el-dropdown-item command="hadFinish" >已完成订单(<font color=red>{{noticeMsg.hadFinishNum}}</font>)</el-dropdown-item>
<el-dropdown-item command="hadCancel" >已取消订单(<font color=red>{{noticeMsg.hadCancelNum}}</font>)</el-dropdown-item>
<el-dropdown-item command="toApprova" >待审核订单(<font color=red>{{noticeMsg.toApprovaNum || 0}}</font>)</el-dropdown-item>
<el-dropdown-item command="hadApprova" >已审核订单(<font color=red>{{noticeMsg.hadApprovaNum}}</font>)</el-dropdown-item>
<el-dropdown-item command="doGetNoticeMsg" >刷新 </el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
-->
<div class="notify-box" >
<el-link @click="goToMsgCenter"><el-badge :value="unreadMsgCount"><i class="el-icon-bell"></i>消息中心</el-badge></el-link>
</div>
</template>
<script>
import {
editSomeFieldsNotifyMsg
} from '@/api/mdp/sys/notifyMsg'
import {
getNoticeMsg,goToPage
} from '@/api/cpd'
export default {
computed: {
noticeMsg() {
return this.$store.getters.noticeMsg
},
unreadMsgCount(){
var msgs=this.$store.getters.noticeMsg
if(!msgs){
return 0;
}
return msgs.filter(k=>k.hadRead!='1').length;
}
},
watch:{
unreadMsgCount(count,old){
var that = this;
if(old>count){
return;
}
if(count>1){
this.$notify.warning({title:'未读消息',message:'有'+count+'条未读消息待处理',showClose:true,position:'bottom-right',
onClick:function(){
that.goToMsgCenter();
}
})
}else if(count==1){
var msgObj=this.noticeMsg.filter(k=>k.hadRead!='1')[0]
that.$notify.warning({title:'未读消息',message:msgObj.msg,showClose:true,position:'bottom-right',
onClick:function(){
that.goToPage(msgObj);
}
})
}
}
},
data(){
return {
load:{list:false},
}
},
methods: {
goToMsgCenter(){
this.$router.push({path:"/my/work/message"});
},
goToPage(item){
if(item.hadRead!='1'){
editSomeFieldsNotifyMsg({ids:[item.id],hadRead:'1'}).then(res=>{
item.hadRead="1"
this.$store.dispatch("setNoticeMsg",this.notifyMsgs)
})
}
goToPage(this,item);
},
doGetNoticeMsgNoTips(){
this.load.list=true;
getNoticeMsg({pageSize:20,pageNum:1,count:false,orderBy:'oper_time desc'}).then(res=>{
this.load.list=false;
var tips = res.data.tips;
if(tips.isOk){
this.$store.dispatch("setNoticeMsg",res.data.data)
}else{
this.$message.error(tips.msg)
}
})
},
doGetNoticeMsgNoRead(){
this.load.list=true;
getNoticeMsg({hadRead:'0',pageSize:20,pageNum:1,count:false,orderBy:'oper_time desc'}).then(res=>{
this.load.list=false;
var tips = res.data.tips;
if(tips.isOk&&res.data.data.length>0){
this.$store.dispatch("setNoticeMsg",res.data.data)
}else if(!tips.isOk){
this.$message.error(tips.msg)
}
})
},
},
mounted(){
this.doGetNoticeMsgNoTips()
setInterval(this.doGetNoticeMsgNoRead, 60000 * 5);
//setInterval(this.doGetNoticeMsgNoRead, 5000);
}
}
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
.notify-box {
margin-top:0px;
margin-right:10px;
}
</style>