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.
153 lines
5.0 KiB
153 lines
5.0 KiB
<template>
|
|
<div class="m_container">
|
|
|
|
<div class="message_content" v-if="notifyMsgs.length>0" v-loading="load.list"
|
|
element-loading-text="拼命加载中"
|
|
element-loading-spinner="el-icon-loading"
|
|
>
|
|
<el-row>
|
|
<el-button @click="filters.hadRead=''">全部</el-button><el-button @click="filters.hadRead='0'">未读消息</el-button><el-button @click="filters.hadRead='1'">已读信息</el-button><el-button @click="setAllHadRead" v-if="filters.hadRead!='1'">全部标记为已读</el-button>
|
|
</el-row>
|
|
<div class="message_content_box" v-for="(item, index) in notifyMsgs" :key="index" @click="goToPage(item)">
|
|
<p class="date"> 发送者: <span style="font-size:14px;">{{item.sendUsername}}</span> 发送时间: <span style="font-size:14px;">{{item.operTime}}</span> <el-tag :type="item.hadRead=='1'?'primary':'danger'">{{item.hadRead=='1'?'已读':'未读'}}</el-tag> </p>
|
|
<span class="text">{{item.msg}}</span>
|
|
<div class="line"></div>
|
|
</div>
|
|
<el-pagination
|
|
@size-change="handleSizeChange"
|
|
@current-change="handleCurrentChange"
|
|
:current-page.sync="pageInfo.pageNum"
|
|
:page-size="pageInfo.pageSize"
|
|
layout="total, prev, pager, next"
|
|
:total="pageInfo.total">
|
|
</el-pagination>
|
|
</div>
|
|
<div class="message_content_box" v-else v-loading="load.list"
|
|
element-loading-text="拼命加载中"
|
|
element-loading-spinner="el-icon-loading"
|
|
>
|
|
|
|
<el-row>
|
|
<el-button @click="filters.hadRead=''">全部</el-button><el-button @click="filters.hadRead='0'">未读消息</el-button><el-button @click="filters.hadRead='1'">已读信息</el-button><el-button @click="setAllHadRead" v-if="filters.hadRead!='1'">全部标记为已读</el-button>
|
|
</el-row>
|
|
<el-result icon="success" subTitle="暂时没有消息">
|
|
</el-result>
|
|
</div>
|
|
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import { mapGetters } from 'vuex'
|
|
export default {
|
|
props:['msgClass'],
|
|
computed: {
|
|
...mapGetters(['userInfo']),
|
|
noticeMsg() {
|
|
return this.$store.getters.noticeMsg
|
|
},
|
|
},
|
|
data() {
|
|
return {
|
|
load:{list:false},
|
|
notifyMsgs:[],
|
|
filters:{
|
|
hadRead:'',
|
|
},
|
|
|
|
pageInfo:{//分页数据
|
|
total:0,//服务器端收到0时,会自动计算总记录数,如果上传>0的不自动计算。
|
|
pageSize:10,//每页数据
|
|
count:false,//是否需要重新计算总记录数
|
|
pageNum:1,//当前页码、从1开始计算
|
|
orderFields:['oper_time'],//排序列 如 ['sex','student_id'],必须为数据库字段
|
|
orderDirs:['desc']//升序 asc,降序desc 如 性别 升序、学生编号降序 ['asc','desc']
|
|
},
|
|
}
|
|
},
|
|
watch:{
|
|
'filters.hadRead':function(){
|
|
this.searchNoticeMsg();
|
|
}
|
|
},
|
|
|
|
methods:{
|
|
|
|
handleSizeChange(pageSize) {
|
|
this.pageInfo.pageSize=pageSize;
|
|
this.getNoticeMsg();
|
|
},
|
|
handleCurrentChange(pageNum) {
|
|
this.pageInfo.pageNum = pageNum;
|
|
this.getNoticeMsg();
|
|
},
|
|
searchNoticeMsg(){
|
|
this.pageInfo.count=true;
|
|
this.getNoticeMsg();
|
|
},
|
|
getNoticeMsg(){
|
|
let params = {
|
|
pageSize: this.pageInfo.pageSize,
|
|
pageNum: this.pageInfo.pageNum,
|
|
total: this.pageInfo.total,
|
|
count:this.pageInfo.count
|
|
};
|
|
if(this.pageInfo.orderFields!=null && this.pageInfo.orderFields.length>0){
|
|
let orderBys=[];
|
|
for(var i=0;i<this.pageInfo.orderFields.length;i++){
|
|
orderBys.push(this.pageInfo.orderFields[i]+" "+this.pageInfo.orderDirs[i])
|
|
}
|
|
params.orderBy= orderBys.join(",")
|
|
}
|
|
if(this.filters.hadRead){
|
|
params.hadRead=this.filters.hadRead
|
|
}
|
|
params.toUserid=this.userInfo.userid
|
|
this.load.list=true
|
|
this.$mdp.listNotifyMsg(params).then(res=>{
|
|
this.load.list=false
|
|
this.notifyMsgs=res.data.data;
|
|
this.pageInfo.total=res.data.total
|
|
this.pageInfo.count=false;
|
|
})
|
|
},
|
|
/**
|
|
* objType:对象类型:项目-1/任务-2/产品-3/需求-4/bug-5/迭代-6/团队-7
|
|
*
|
|
*/
|
|
goToPage(item){
|
|
if(item.hadRead!='1'){
|
|
this.$mdp.editSomeFieldsNotifyMsg({ids:[item.id],hadRead:'1'}).then(res=>{
|
|
item.hadRead="1"
|
|
this.$store.dispatch("setNoticeMsg",this.notifyMsgs)
|
|
})
|
|
}
|
|
if(item.url){
|
|
this.$mdp.openWin(item.url)
|
|
}
|
|
},
|
|
setAllHadRead(){
|
|
var ids=this.notifyMsgs.filter(k=>k.hadRead!=='1').map(i=>i.id)
|
|
if(ids.length<=0){
|
|
return;
|
|
}
|
|
this.$mdp.editSomeFieldsNotifyMsg({ids:ids,hadRead:'1'}).then(res=>{
|
|
var tips = res.data.tips
|
|
this.searchNoticeMsg();
|
|
this.$notify({position:'bottom-left',showClose:true,message:tips.msg,type:tips.isOk?'success':'error'})
|
|
|
|
})
|
|
}
|
|
},
|
|
|
|
mounted() {
|
|
this.searchNoticeMsg();
|
|
}
|
|
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
@import '../common.scss';
|
|
@import './index.scss';
|
|
</style>
|