Browse Source

消息中心

master
xuhuajiao 1 year ago
parent
commit
7cb9a2b904
  1. 96
      src/views/system/user/messageCenter/index.vue

96
src/views/system/user/messageCenter/index.vue

@ -21,8 +21,7 @@
/> />
</el-select> </el-select>
</div> </div>
<div v-loading="loading" class="message-center-list">
<div v-if="hasMore && loading===false" class="more-btn" @click="loadMore"><i class="iconfont icon-jiazaigengduo" />点击加载更多</div>
<div v-loading="loading" class="message-center-list" @scroll="listenScroll">
<div v-for="(item,index) in items" :key="index" class="message-item" @click="handleDetail(item)"> <div v-for="(item,index) in items" :key="index" class="message-item" @click="handleDetail(item)">
<div class="message-date">{{ item.createTime | parseTime }}</div> <div class="message-date">{{ item.createTime | parseTime }}</div>
<div class="message-cont"> <div class="message-cont">
@ -38,7 +37,10 @@
<div class="message-more">查看详情<i class="iconfont icon-chakan" /></div> <div class="message-more">查看详情<i class="iconfont icon-chakan" /></div>
</div> </div>
</div> </div>
<el-empty v-if="items.length === 0 && loading===false" :image-size="200" />
<el-empty v-if="items.length === 0 && loading === false" :image-size="200" />
<div v-else-if="!hasNextPage && loading === false" class="more-btn no-data">暂无更多数据</div>
<div v-else class="more-btn"><i class="iconfont icon-jiazaigengduo" />加载中...</div>
<el-dialog :visible.sync="messageVisible" :modal-append-to-body="false" :close-on-click-modal="false" append-to-body title="消息详情" @closed="closeDialog"> <el-dialog :visible.sync="messageVisible" :modal-append-to-body="false" :close-on-click-modal="false" append-to-body title="消息详情" @closed="closeDialog">
<div class="setting-dialog"> <div class="setting-dialog">
@ -73,7 +75,6 @@ export default {
components: { DateRangePicker, detail }, components: { DateRangePicker, detail },
data() { data() {
return { return {
selections: [],
blurryTime: [], blurryTime: [],
search: null, search: null,
unread: null, unread: null,
@ -97,62 +98,93 @@ export default {
messageVisible: false, messageVisible: false,
detailInfo: {}, detailInfo: {},
currentMessage: null, currentMessage: null,
hasMore: true //
hasMore: true, //
hasNextPage: false
} }
}, },
created() { created() {
this.loadData()
this.getListMessage()
}, },
methods: { methods: {
handleClick(index) { handleClick(index) {
this.listIndex = index this.listIndex = index
if (index === 0) {
this.blurryTime = []
this.search = null
this.unread = null
this.getListMessage()
}
this.getIndex() this.getIndex()
}, },
handleSearch() { handleSearch() {
this.page.page = 0 this.page.page = 0
this.page.totalPages = 0 this.page.totalPages = 0
this.items = [] this.items = []
this.loadData()
this.getListMessage()
}, },
getListMessage() { getListMessage() {
this.loading = true
const params = { const params = {
'search': this.search, 'search': this.search,
'page': this.page.page, 'page': this.page.page,
'size': this.page.size, 'size': this.page.size,
'unread': this.unread, 'unread': this.unread,
'startTime': this.blurryTime[0],
'endTime': this.blurryTime[1]
'startTime': this.blurryTime && this.blurryTime[0],
'endTime': this.blurryTime && this.blurryTime[1]
} }
FetchMySystemNotice(params).then(res => { FetchMySystemNotice(params).then(res => {
const listData = res.content const listData = res.content
if (listData.length === 0) { if (listData.length === 0) {
this.loading = false
this.hasNextPage = false
} else { } else {
this.loading = true
this.hasNextPage = true
} }
this.page.total = res.totalElements this.page.total = res.totalElements
this.page.totalPages = res.totalPages this.page.totalPages = res.totalPages
this.items = [...listData, ...this.items]
if (this.page.page >= this.page.totalPages) {
this.hasMore = false
} else {
this.hasMore = true
}
// this.items = [...listData, ...this.items]
this.items = this.items.concat(listData)
console.log('this.page.page', this.page.page)
console.log('this.page.totalPages', this.page.totalPages - 1)
console.log('this.page.total', this.page.total)
console.log('this.items', this.items.length)
setTimeout(() => {
this.loading = false this.loading = false
}, 1000)
}) })
}, },
loadData() {
this.loading = true
setTimeout(() => {
this.getListMessage()
this.page.page++
}, 1000)
// loadData() {
// this.loading = true
// setTimeout(() => {
// this.getListMessage()
// this.page.page++
// }, 1000)
// },
// loadMore() {
// if (this.loading) {
// return
// }
// this.loadData()
// },
//
listenScroll(e) {
const ele = e.srcElement ? e.srcElement : e.target
if (ele.scrollTop + ele.offsetHeight > ele.scrollHeight - 100) { // div
this.addMoreData()
}
}, },
loadMore() {
if (this.loading) {
return
//
addMoreData() {
if (this.hasNextPage) {
this.page.page++
if (this.page.page >= this.page.totalPages) {
this.hasNextPage = false
} else {
this.getListMessage()
}
} }
this.loadData()
}, },
handleDetail(item) { handleDetail(item) {
this.currentMessage = this.items.find(i => i.noticeId === item.noticeId) this.currentMessage = this.items.find(i => i.noticeId === item.noticeId)
@ -200,7 +232,10 @@ export default {
// } // }
// const list = [] // const list = []
// const allList = await this.getAllNoRead(params, list) // const allList = await this.getAllNoRead(params, list)
FetchReadedAll({ 'newsType': 0 }).then(res => {
const params = {
'newsType': 1
}
FetchReadedAll(params).then(res => {
console.log(res) console.log(res)
if (res) { if (res) {
this.items.forEach(item => { this.items.forEach(item => {
@ -267,7 +302,7 @@ export default {
overflow: hidden; overflow: hidden;
overflow-y: scroll; overflow-y: scroll;
.more-btn{ .more-btn{
margin-bottom: 30px;
// margin-bottom: 30px;
line-height: 30px; line-height: 30px;
font-size: 14px; font-size: 14px;
text-align: center; text-align: center;
@ -276,6 +311,9 @@ export default {
i{ i{
display: inline-block; display: inline-block;
} }
&.no-data{
color: #a6adb6;
}
} }
.message-item{ .message-item{
font-size: 14px; font-size: 14px;

Loading…
Cancel
Save