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/api/outsourcingManagement/oemOrderSettlement.js b/src/api/outsourcingManagement/oemOrderSettlement.js new file mode 100644 index 0000000..ee0bd5f --- /dev/null +++ b/src/api/outsourcingManagement/oemOrderSettlement.js @@ -0,0 +1,11 @@ +// 外协订单结算 +import request from '@/axios'; + +// 获取列表 +export const getStatement = params =>{ + return request({ + url:"/api/blade-desk/mesOemStatement/page", + method:'get', + params + }) +} \ No newline at end of file diff --git a/src/api/outsourcingManagement/performanceCheck.js b/src/api/outsourcingManagement/performanceCheck.js index aeef633..3c47119 100644 --- a/src/api/outsourcingManagement/performanceCheck.js +++ b/src/api/outsourcingManagement/performanceCheck.js @@ -8,4 +8,22 @@ export const getList = params => { method: 'get', params }); +}; + +// 重新计算 +export const reCalculate = data => { + return request({ + url: '/api/blade-desk/mesOemMerits/updateData', + method: 'post', + data + }); +}; + +// 绩效保存 +export const saveData = data => { + return request({ + url: '/api/blade-desk/mesOemMerits/submitData', + method: 'post', + data + }); }; \ No newline at end of file diff --git a/src/api/outsourcingManagement/performanceReview.js b/src/api/outsourcingManagement/performanceReview.js index 8d25a33..6b0d21f 100644 --- a/src/api/outsourcingManagement/performanceReview.js +++ b/src/api/outsourcingManagement/performanceReview.js @@ -8,4 +8,13 @@ export const getList = params => { method: 'get', params }); +}; + +// 审核通过 +export const approvalData = data => { + return request({ + url: '/api/blade-desk/mesOemMerits/processSubmit', + method: 'post', + data + }); }; \ No newline at end of file diff --git a/src/api/outsourcingManagement/settlementRules.js b/src/api/outsourcingManagement/settlementRules.js new file mode 100644 index 0000000..0e9a45b --- /dev/null +++ b/src/api/outsourcingManagement/settlementRules.js @@ -0,0 +1,47 @@ +// 外协结算管理 +import request from '@/axios'; + +// 获取镀种规则维护列表 +export const getPlateList = params => { + return request({ + url: '/api/blade-desk/mesPlatingTypeRules/page', + method: 'get', + params + }); +}; + +// 镀种下拉 +export const getPlateSelect = params => { + return request({ + url: '/api/blade-desk/BA/Plating/listForSelect', + method: 'get', + params + }); +}; + +// 新增镀种规则 +export const addPlateData = data => { + return request({ + url: '/api/blade-desk/mesPlatingTypeRules/save', + method: 'post', + data + }); +}; + +// 修改镀种规则 +export const updatePlateData = data => { + return request({ + url: '/api/blade-desk/mesPlatingTypeRules/update', + method: 'post', + data + }); +}; + +// 删除逻辑规则 +export const deletePlateData = params => { + return request({ + url: '/api/blade-desk/mesPlatingTypeRules/remove', + method: 'post', + params + }); +}; \ No newline at end of file diff --git a/src/api/qualityManagement/productionTesting/productionDisposition.js b/src/api/qualityManagement/productionTesting/productionDisposition.js index fe21a09..7b292b3 100644 --- a/src/api/qualityManagement/productionTesting/productionDisposition.js +++ b/src/api/qualityManagement/productionTesting/productionDisposition.js @@ -117,4 +117,13 @@ export const getRelatedBatchList = (params) => { method: 'get', params }); +}; + +// 查询流程卡号相同数据 +export const getSameLotList = (params) => { + return request({ + url: '/api/blade-desk/QA/ReviewSheet/getByCardNo', + method: 'get', + params + }); }; \ No newline at end of file diff --git a/src/api/qualityManagement/productionTesting/productionQuality.js b/src/api/qualityManagement/productionTesting/productionQuality.js index 27d7d64..6acfbbe 100644 --- a/src/api/qualityManagement/productionTesting/productionQuality.js +++ b/src/api/qualityManagement/productionTesting/productionQuality.js @@ -64,14 +64,14 @@ export const applySameLot = (params) => { }); }; -// 获取硬度数据列表 -export const getHardnessList = (params) => { - return request({ - url: '/api/blade-desk/QA/IotHardness/getDataFirst', - method: 'get', - params - }); -}; +// // 获取硬度数据列表 +// export const getHardnessList = (params) => { +// return request({ +// url: '/api/blade-desk/QA/IotHardness/getDataFirst', +// method: 'get', +// params +// }); +// }; // 刷新硬度数据 export const refreshHardness = (params) => { @@ -83,11 +83,11 @@ export const refreshHardness = (params) => { }; // 获取测厚数据 -export const getThicknessList = (params) => { +export const getThicknessList = (data) => { return request({ - url: '/api/blade-desk/QA/IotThickness/getData', - method: 'get', - params + url: '/api/blade-desk/QA/IotThickness/queryChyData', + method: 'post', + data }); }; 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/src/views/oem/oemOrderSettlement/components/unsettled.vue b/src/views/oem/oemOrderSettlement/components/unsettled.vue index 77fea4b..ad9687f 100644 --- a/src/views/oem/oemOrderSettlement/components/unsettled.vue +++ b/src/views/oem/oemOrderSettlement/components/unsettled.vue @@ -29,7 +29,7 @@