diff --git a/src/api/desk/myMessage.js b/src/api/desk/myMessage.js index f15040f..1fbf1c7 100644 --- a/src/api/desk/myMessage.js +++ b/src/api/desk/myMessage.js @@ -14,3 +14,28 @@ export const getList = (current, size, params) => { }); }; +export const update = ids => { + return request({ + url: '/blade-desk/mesNotifyMessage/read', + method: 'post', + params: { + ids, + }, + cryptoToken: false, + cryptoData: false, + }); +}; + +export const count = (current, size, params) => { + return request({ + url: '/blade-desk/mesNotifyMessage/count', + method: 'get', + params: { + ...params, + current, + size, + }, + cryptoToken: false, + cryptoData: false, + }); +}; diff --git a/src/page/index/top/index.vue b/src/page/index/top/index.vue index f4cbae6..8dd2017 100644 --- a/src/page/index/top/index.vue +++ b/src/page/index/top/index.vue @@ -26,9 +26,10 @@
-
- - +
+ + + @@ -139,7 +140,8 @@ import { getUserInfo as getUerOauthInfo } from '@/api/user'; import { validatenull } from '@/utils/validate'; import func from '@/utils/func'; import { color } from 'echarts'; - +import { count } from '@/api/desk/myMessage'; +import EventBus from '@/utils/event-bus'; export default { components: { topLock, @@ -156,6 +158,7 @@ export default { name: 'top', data() { return { + unreadCount: 0, // 未读消息数量 userId: '', roleId: '', roleName: '', @@ -222,6 +225,26 @@ export default { created() { this.init(); }, + mounted() { + // 监听消息已读事件 + console.log('事件监听已注册'); + EventBus.$on('message-read', this.handleMessageRead); + + // 备用方案:监听 localStorage 变化 + window.addEventListener('storage', this.handleStorageChange); + }, + beforeUnmount() { + // 取消事件监听 + console.log('取消事件监听'); + EventBus.$off('message-read', this.handleMessageRead); + window.removeEventListener('storage', this.handleStorageChange); + }, + handleStorageChange(event) { + if (event.key === 'message-read-timestamp') { + console.log('检测到消息已读(storage事件)'); + this.getUnreadCount(); + } + }, computed: { func() { return func; @@ -239,6 +262,13 @@ export default { ]), }, methods: { + readMsg() { + this.$router.push({ + path: '/desk/myMessage', + // state: { id: row.id } + }); + // this.$message.info('消息功能正在开发中...'); + }, openSearch() { // this.$store.commit('SET_IS_SEARCH', true); console.log('route--------------------',this.$router) @@ -281,6 +311,26 @@ export default { this.roleId = res.data.roleId; this.deptId = res.data.deptId; }); + + // 获取未读消息数量 + this.getUnreadCount(); + }, + getUnreadCount() { + console.log('开始获取未读数量...'); + count('').then(res => { + console.log('获取未读数量响应:', res); + if (res.data.code === 200 && res.data.data) { + console.log('更新 unreadCount:', res.data.data); + this.unreadCount = res.data.data; + } + }).catch(err => { + console.error('获取未读消息数量失败:', err); + }); + }, + handleMessageRead() { + // 消息已读事件触发,重新获取未读数量 + console.log('收到消息已读事件,更新未读数量'); + this.getUnreadCount(); }, toDashboard() { this.$router.push({ path: '/' }); @@ -407,4 +457,20 @@ export default { .bar_title_third{ margin-left: 245px; } + +// 消息图标点击效果 +.msg-icon { + cursor: pointer; + transition: all 0.3s ease; + font-size: 18px; + + &:hover { + color: #409EFF; + transform: scale(1.1); + } + + &:active { + transform: scale(0.95); + } +} diff --git a/src/utils/event-bus.js b/src/utils/event-bus.js new file mode 100644 index 0000000..31f7a5b --- /dev/null +++ b/src/utils/event-bus.js @@ -0,0 +1,22 @@ +// Vue 3 事件总线 +const EventBus = { + events: {}, + $on(event, callback) { + if (!this.events[event]) { + this.events[event] = []; + } + this.events[event].push(callback); + }, + $off(event, callback) { + if (this.events[event]) { + this.events[event] = this.events[event].filter(cb => cb !== callback); + } + }, + $emit(event, data) { + if (this.events[event]) { + this.events[event].forEach(callback => callback(data)); + } + } +}; + +export default EventBus; diff --git a/src/views/desk/completedTasks.vue b/src/views/desk/completedTasks.vue index 019fb7d..9622ea9 100644 --- a/src/views/desk/completedTasks.vue +++ b/src/views/desk/completedTasks.vue @@ -88,7 +88,7 @@ export default { column: [ { label: '类型', - prop: 'type', + prop: 'bizType', sortable: false, type: 'select', filter: true, @@ -103,7 +103,7 @@ export default { }, { label: '标题', - prop: 'title', + prop: 'content', sortable: false, filter: true, span: 12, @@ -112,7 +112,7 @@ export default { }, { label: '创建人', - prop: 'createUser', + prop: 'createUserName', sortable: false, filter: true, span: 12, @@ -180,9 +180,10 @@ export default { this.onLoad(this.page); }, searchChange(params, done) { - this.query = params; + console.log('搜索参数:', params); + this.query = params; this.page.currentPage = 1; - this.onLoad(); + this.onLoad(this.page); done(); }, currentChange(currentPage) { diff --git a/src/views/desk/myMessage.vue b/src/views/desk/myMessage.vue index 66fa9ae..1845b63 100644 --- a/src/views/desk/myMessage.vue +++ b/src/views/desk/myMessage.vue @@ -15,22 +15,25 @@ @selection-change="selectionChange" @on-load="onLoad" > - - - + + + diff --git a/src/views/desk/todoList.vue b/src/views/desk/todoList.vue index e169aec..289bbe1 100644 --- a/src/views/desk/todoList.vue +++ b/src/views/desk/todoList.vue @@ -66,7 +66,7 @@ export default { column: [ { - label: '业务类型', + label: '类型', prop: 'bizType', sortable: false, type: 'select', @@ -75,13 +75,13 @@ export default { search: true, searchLabelWidth: 90, dicData: [ - { label: '外协审批', value: 'testType' }, + { label: '外协审批', value: 1 }, { label: '仓管审批', value: 2 }, { label: '槽液审批', value: 3 }, ], }, { - label: '业务内容', + label: '标题', prop: 'content', sortable: false, filter: true, @@ -91,7 +91,7 @@ export default { }, { label: '创建人', - prop: 'currentRoleName', + prop: 'createUserName', sortable: false, filter: true, span: 12, @@ -144,12 +144,15 @@ export default { }, searchReset() { this.query = {}; + + this.onLoad(this.page); }, searchChange(params, done) { + console.log('搜索参数:', params); this.query = params; this.page.currentPage = 1; - this.onLoad(); + this.onLoad(this.page); done(); }, currentChange(currentPage) { @@ -174,34 +177,7 @@ export default { }); }, - // onLoad(page, params = {}) { - // this.loading = true; - // this.data = [ - // { - // id: 1, - // type: 1, - // title: '请审核张三提交的外协审批流程', - // createUser: '张三', - // createTime: '2026-01-05 09:06:32', - // }, - // { - // id: 2, - // type: 2, - // title: '请审核李四提交的仓管审批流程', - // createUser: '张三', - // createTime: '2026-01-12 09:06:32', - // }, - // { - // id: 3, - // type: 3, - // title: '请审核王五提交的槽液审批流程', - // createUser: '张三', - // createTime: '2026-01-15 09:06:32', - // }, - // ]; - // this.page.total = this.data.length; - // this.loading = false; - // }, + }, }; diff --git a/vite.config.mjs b/vite.config.mjs index 3b8551c..1797640 100644 --- a/vite.config.mjs +++ b/vite.config.mjs @@ -61,12 +61,12 @@ export default ({ mode, command }) => { port: 2888, proxy: { '/api': { - target: 'http://192.168.0.104:80',//本地 + target: 'http://192.168.0.115:80',//本地 // target: 'http://192.168.1.5:82', // target: "http://192.168.1.4:82", - // target:'http://49.232.74.228:82', + // target: 'http://49.232.74.228:82', // target: "http://192.168.0.7", - //target: 'https://saber3.bladex.cn/api', + // target: 'https://saber3.bladex.cn/api', // target: 'http://49.232.74.228:82', // target: "http:192.168.0.220:80", // target: 'http:49.232.74.228:49',