消息日志

feasure-livedata
lld 2026-04-02 02:11:50 +08:00
parent c0834c750b
commit 8d3012abc1
3 changed files with 81 additions and 22 deletions

View File

@ -34,6 +34,13 @@ export function updateMessage(data) {
data: data data: data
}) })
} }
export function updateRead(data) {
return request({
url: '/warn/message/updateRead',
method: 'put',
data: data
})
}
// 删除系统消息中心 // 删除系统消息中心
export function delMessage(id) { export function delMessage(id) {
@ -42,6 +49,14 @@ export function delMessage(id) {
method: 'delete' method: 'delete'
}) })
} }
// 删除系统消息中心
export function removeBatch(data) {
return request({
url: '/warn/message/removeBatch',
method: 'delete',
data: data
})
}
export function getMessages(query) { export function getMessages(query) {
return request({ return request({
url: '/warn/message/getMessage', url: '/warn/message/getMessage',
@ -49,3 +64,11 @@ export function getMessages(query) {
params: query params: query
}) })
} }
export function getMsgOverview(query) {
return request({
url: '/warn/message/getMsgOverview',
method: 'get',
params: query
})
}

View File

@ -56,7 +56,7 @@
<uni-swipe-action ref="swipeAction" class="message-list"> <uni-swipe-action ref="swipeAction" class="message-list">
<uni-swipe-action-item <uni-swipe-action-item
v-for="(item, index) in messageList" v-for="(item, index) in msgList"
:right-options="options" :right-options="options"
:key="index" :key="index"
@click="deleteItem($event, item)" @click="deleteItem($event, item)"
@ -71,12 +71,12 @@
</view> </view>
<view class="item-content"> <view class="item-content">
<view class="item-title">{{ item.title }}</view> <view class="item-title">{{ item.title }}</view>
<view class="item-desc">{{ item.desc }}</view> <view class="item-desc">{{ item.content }}</view>
</view> </view>
<!-- 右侧时间+角标列 --> <!-- 右侧时间+角标列 -->
<view class="item-right"> <view class="item-right">
<view class="item-time"> <view class="item-time">
<uni-dateformat :date="item.time" :format="isTodayDate(item.time)?'hh:mm':'yyyy-MM-dd hh:mm:ss'" <uni-dateformat :date="item.createTime" :format="isTodayDate(item.createTime)?'hh:mm':'yyyy-MM-dd hh:mm:ss'"
:threshold="[60000, 3600000]"></uni-dateformat> :threshold="[60000, 3600000]"></uni-dateformat>
</view> </view>
<view v-if="item.numBadge"> <view v-if="item.numBadge">
@ -98,6 +98,7 @@
<script> <script>
import UniDividerText from "../../components/uni-divider/uni-divider-text.vue"; import UniDividerText from "../../components/uni-divider/uni-divider-text.vue";
import {isTodayDate} from "@/utils/agri"; import {isTodayDate} from "@/utils/agri";
import {getMsgOverview, removeBatch, updateRead} from "@/api/warn/message";
export default { export default {
components: { components: {
UniDividerText UniDividerText
@ -107,13 +108,13 @@ export default {
title: '消息中心', title: '消息中心',
isShowTips: true, isShowTips: true,
isShowNumBadge: true, isShowNumBadge: true,
messageList: [ messageList: [],
msgList: [
{ {
// video111 / camera_ // video111 / camera_
imgUrl: 'https://img.xiaoces.com/photos/news/camera_.png', // imgUrl: 'https://img.xiaoces.com/photos/news/camera_.png', //
title: '视频中心', title: '视频中心',
desc: '[画面变化] DS-2DE4423DW-D/GLT/XM(FW116231321313123123123132312dgvbdfg7...', msgType: 'video',
time: Date.now(),
badge: true, badge: true,
numBadge: null, // numBadge: null, //
width: '60rpx' width: '60rpx'
@ -122,9 +123,8 @@ export default {
// device imei1 device_status3 // device imei1 device_status3
imgUrl: 'https://img.xiaoces.com/photos/news/device_status3.png', // imgUrl: 'https://img.xiaoces.com/photos/news/device_status3.png', //
// iconBg: '#4285F4', // iconBg: '#4285F4',
msgType: 'status',
title: '设备状态', title: '设备状态',
desc: '[设备在线] 十方',
time: Date.now()-3200000,
badge: true, badge: true,
numBadge: null, numBadge: null,
width: '60rpx' width: '60rpx'
@ -133,9 +133,8 @@ export default {
// notice_1 notice_2 notice_ // notice_1 notice_2 notice_
imgUrl: 'https://img.xiaoces.com/photos/news/notice_.png', // imgUrl: 'https://img.xiaoces.com/photos/news/notice_.png', //
iconBg: '#FFA726', iconBg: '#FFA726',
msgType: 'notice',
title: '系统通知', title: '系统通知',
desc: '没有新的消息',
time: Date.now()-3900000,
badge: false, badge: false,
numBadge: 5, // numBadge: 5, //
width: '40rpx' width: '40rpx'
@ -145,8 +144,7 @@ export default {
imgUrl: 'https://img.xiaoces.com/photos/news/play1.png', imgUrl: 'https://img.xiaoces.com/photos/news/play1.png',
// iconBg: '#FFA726', // iconBg: '#FFA726',
title: '活动中心', title: '活动中心',
desc: '没有新的消息', msgType: 'event',
time: Date.now()-119900000,
badge: false, badge: false,
numBadge: 25, // numBadge: 25, //
width: '100rpx' width: '100rpx'
@ -162,6 +160,9 @@ export default {
], ],
} }
}, },
onShow() {
this.getMsgOverview();
},
methods: { methods: {
isTodayDate, isTodayDate,
navBack() { navBack() {
@ -177,7 +178,11 @@ export default {
cancelText: '取消', cancelText: '取消',
confirmText: '确定', confirmText: '确定',
success: (res) => { success: (res) => {
updateRead().then(response => {
if (response.code === 200) {
this.getMsgOverview();
}
})
} }
}) })
console.log('清除未读:当前页面全部已读') console.log('清除未读:当前页面全部已读')
@ -204,6 +209,22 @@ export default {
this.$modal.showToast('模块建设中~') this.$modal.showToast('模块建设中~')
console.log('进入AI识别暂未开发') console.log('进入AI识别暂未开发')
}, },
getMsgOverview() {
getMsgOverview().then(response => {
if (response.code === 200) {
this.messageList = response.data;
this.msgList.forEach((item, index) => {
this.messageList.forEach((msgItem, msgIndex) => {
if (msgItem.msgType === item.msgType) {
item.numBadge = msgItem.unreadCount
item.content = msgItem.content
item.createTime = msgItem.createTime
}
})
})
}
})
},
handleItemClick(item) { handleItemClick(item) {
this.$modal.showToast('敬请期待~') this.$modal.showToast('敬请期待~')
console.log('点击消息:', item.title) console.log('点击消息:', item.title)
@ -225,7 +246,11 @@ export default {
cancelText: '取消', cancelText: '取消',
confirmText: '确定', confirmText: '确定',
success: (res) => { success: (res) => {
removeBatch({msgType:"status"}).then(response => {
if (response.code === 200) {
this.getMsgOverview()
}
})
} }
}) })
}, },

View File

@ -31,7 +31,8 @@
</view> </view>
</view> </view>
</view> </view>
<uni-load-more iconType="auto" :status="status" :content-text="contentText" /> <uni-load-more iconType="auto" v-if="messageList.length >=10"
:status="status" :content-text="contentText" />
</scroll-view> </scroll-view>
<view class="empty__item tn-margin-top empty__view" v-else> <view class="empty__item tn-margin-top empty__view" v-else>
<tn-empty icon="https://resource.tuniaokj.com/images/empty/alien/2.png" <tn-empty icon="https://resource.tuniaokj.com/images/empty/alien/2.png"
@ -42,7 +43,7 @@
</template> </template>
<script> <script>
import {listMessage} from "@/api/warn/message"; import {listMessage, updateRead} from "@/api/warn/message";
import * as mqttUtil from "@/utils/mqtt"; import * as mqttUtil from "@/utils/mqtt";
export default { export default {
@ -68,9 +69,10 @@ export default {
onLoad() { onLoad() {
// //
// this.getSortDate(); // this.getSortDate();
this.getList() this.getList();
}, },
onShow() { onShow() {
this.updateRead();
console.info("消息日志监听") console.info("消息日志监听")
mqttUtil.setOnMessageCallback(this.ackAlarm); mqttUtil.setOnMessageCallback(this.ackAlarm);
}, },
@ -164,15 +166,24 @@ export default {
this.isHaveOldData = false; this.isHaveOldData = false;
} }
}).finally(()=>{ }).finally(()=>{
if (this.messageList.length>10) {
// scrollId // scrollId
this.$nextTick(() => { this.$nextTick(() => {
// //
this.scrollId = "item"+this.messageList[9].id; this.scrollId = "item"+this.messageList[9].id;
}); });
}
// //
this.refreshing = false; this.refreshing = false;
}) })
}, },
updateRead() {
updateRead({msgType: "status"}).then(response => {
if (response.code === 200) {
console.info("更新已读成功")
}
})
},
onLoadMore() { onLoadMore() {
if (!this.sortNewId) { if (!this.sortNewId) {
this.sortNewId = this.msgList[this.msgList.length - 1].id; this.sortNewId = this.msgList[this.msgList.length - 1].id;