diff --git a/packageRc/pages/policy/policyList.vue b/packageRc/pages/policy/policyList.vue index 450b982..5f0e191 100644 --- a/packageRc/pages/policy/policyList.vue +++ b/packageRc/pages/policy/policyList.vue @@ -329,6 +329,7 @@ export default { // }) }, popupSearch(data) { + console.log(data[0].data[1]); // 获取此次提交前,旧的政策类型值 const oldTypeL = this.queryParams.policyTypeL || ""; @@ -339,6 +340,15 @@ export default { selections[item.type] = active.dictLabel === "全部" ? "" : active.dictValue; }); + // 政策类型选中 '0' 时传 tag 并清空 policyTypeL + if (selections.policyTypeL === '0') { + const tag = uni.getStorageSync('userInfo')?.userTagName || {}; + this.queryParams.tag = tag + selections.policyTypeL = "" + } else { + delete this.queryParams.tag + } + // 核心判定逻辑: // 如果发现“政策类型(policyTypeL)”发生了变化 if (selections.policyTypeL !== oldTypeL) { diff --git a/pages.json b/pages.json index 8f7a916..e20a623 100644 --- a/pages.json +++ b/pages.json @@ -27,6 +27,12 @@ "navigationBarTitleText": "消息" } }, + { + "path": "pages/msglog/messageDetail", + "style": { + "navigationBarTitleText": "消息详情" + } + }, { "path": "pages/careerfair/careerfair", "style": { diff --git a/pages/mine/mine.vue b/pages/mine/mine.vue index 7294b4e..20f867d 100644 --- a/pages/mine/mine.vue +++ b/pages/mine/mine.vue @@ -101,6 +101,7 @@ 消息 + {{ unreadNoticeCount > 99 ? '99+' : unreadNoticeCount }} @@ -192,6 +193,9 @@ const feedbackPopup = ref(null); const { userInfo, Completion } = storeToRefs(useUserStore()); const counts = ref({}); +// 计算未读消息数量 +const unreadNoticeCount = computed(() => counts.value.unreadNoticeCount || 0); + // 提醒设置 const reminderEnabled = ref(true); const reminderFrequency = ref('realtime'); @@ -442,6 +446,23 @@ function submitFeedback() { font-size: 28rpx; color: #333333; } + .unread-badge{ + display: inline-flex; + align-items: center; + justify-content: center; + min-width: 32rpx; + height: 32rpx; + padding: 0 10rpx; + margin-left: 12rpx; + background: linear-gradient(135deg, #FF4757, #FF6B81); + border-radius: 16rpx; + font-size: 20rpx; + font-weight: 500; + color: #FFFFFF; + line-height: 32rpx; + text-align: center; + box-shadow: 0 2rpx 8rpx rgba(255, 71, 87, 0.4); + } } .row-right{ color: #6E6E6E; diff --git a/pages/msglog/messageDetail.vue b/pages/msglog/messageDetail.vue new file mode 100644 index 0000000..e299701 --- /dev/null +++ b/pages/msglog/messageDetail.vue @@ -0,0 +1,343 @@ + + + + + diff --git a/pages/msglog/read.vue b/pages/msglog/read.vue index fe72212..e89ac7e 100644 --- a/pages/msglog/read.vue +++ b/pages/msglog/read.vue @@ -4,6 +4,7 @@ + {{ item.notReadCount || '' }} - {{ item.title }} + + + {{ item.title }} + {{ item.date }} {{ item.subTitle || '消息' }} @@ -66,26 +75,8 @@ async function loadData() { } function seeDetail(item, index) { - if (item.noticeType === '4') { - useReadMsg().markAsRead(item, index); - if (item.bussinessId) { - navTo(`/packageA/pages/post/post?jobId=${encodeURIComponent(item.bussinessId)}&encryptJobId=${encodeURIComponent(item.bussinessId)}`); - } - return; - } - switch (item.title) { - case '职位上新': - useReadMsg().markAsRead(item, index); - navTo('/packageA/pages/newJobPosition/newJobPosition'); - break; - case '招聘会预约提醒': - useReadMsg().markAsRead(item, index); - navTo('/packageA/pages/reservation/reservation'); - break; - case '系统通知': - navTo('/packageA/pages/systemNotification/systemNotification'); - break; - } + uni.setStorageSync('currentMessageDetail', item); + navTo('/pages/msglog/messageDetail'); } defineExpose({ loadData }); @@ -110,6 +101,8 @@ defineExpose({ loadData }); align-items: center; padding: 26rpx 36rpx; margin: 0 0 28rpx 0 + &.unread + background: linear-gradient(135deg, #FFFAFA 0%, #FFFFFF 100%) .card-img width: 96rpx; height: 96rpx; @@ -121,6 +114,9 @@ defineExpose({ loadData }); .card-img-flame width: 100%; height: 100% + .card-img-default + width: 60% + height: 60% .subscript position: absolute; right: 0; @@ -147,15 +143,31 @@ defineExpose({ loadData }); color: #333333; display: flex; justify-content: space-between; + align-items: center; width: 100% - text - font-family: 'PingFangSC-Medium', 'PingFang SC', 'Helvetica Neue', Helvetica, Arial, 'Microsoft YaHei', sans-serif; + .title-left + display: flex + align-items: center + min-width: 0 + flex: 1 + .unread-dot + width: 14rpx + height: 14rpx + background: #F73636 + border-radius: 50% + margin-right: 12rpx + flex-shrink: 0 + .unread-text + font-weight: 600 + text + font-family: 'PingFangSC-Medium', 'PingFang SC', 'Helvetica Neue', Helvetica, Arial, 'Microsoft YaHei', sans-serif; .card-time font-weight: 400; font-size: 28rpx; color: #AAAAAA; height: 100% margin: 4rpx; + flex-shrink: 0 .info-text font-weight: 400; font-size: 28rpx; diff --git a/pages/msglog/unread.vue b/pages/msglog/unread.vue index b9b7088..a23089e 100644 --- a/pages/msglog/unread.vue +++ b/pages/msglog/unread.vue @@ -4,6 +4,7 @@ + {{ item.notReadCount }} - {{ item.title }} + + + {{ item.title }} + {{ item.date }} {{ item.subTitle || '消息' }} @@ -64,7 +73,8 @@ async function loadData() { } function seeDetail(item) { - console.log(item); + uni.setStorageSync('currentMessageDetail', item); + navTo('/pages/msglog/messageDetail'); } defineExpose({ loadData }); @@ -89,6 +99,8 @@ defineExpose({ loadData }); align-items: center; padding: 26rpx 36rpx; margin: 0 0 28rpx 0 + &.unread + background: linear-gradient(135deg, #FFFAFA 0%, #FFFFFF 100%) .card-img width: 96rpx; height: 96rpx; @@ -100,6 +112,9 @@ defineExpose({ loadData }); .card-img-flame width: 100%; height: 100% + .card-img-default + width: 60% + height: 60% .subscript position: absolute; right: 0; @@ -126,15 +141,31 @@ defineExpose({ loadData }); color: #333333; display: flex; justify-content: space-between; + align-items: center; width: 100% - text - font-family: 'PingFangSC-Medium', 'PingFang SC', 'Helvetica Neue', Helvetica, Arial, 'Microsoft YaHei', sans-serif; + .title-left + display: flex + align-items: center + min-width: 0 + flex: 1 + .unread-dot + width: 14rpx + height: 14rpx + background: #F73636 + border-radius: 50% + margin-right: 12rpx + flex-shrink: 0 + .unread-text + font-weight: 600 + text + font-family: 'PingFangSC-Medium', 'PingFang SC', 'Helvetica Neue', Helvetica, Arial, 'Microsoft YaHei', sans-serif; .card-time font-weight: 400; font-size: 28rpx; color: #AAAAAA; height: 100% margin: 4rpx; + flex-shrink: 0 .info-text font-weight: 400; font-size: 28rpx; diff --git a/stores/useReadMsg.js b/stores/useReadMsg.js index 256bdee..934a407 100644 --- a/stores/useReadMsg.js +++ b/stores/useReadMsg.js @@ -39,7 +39,7 @@ export const useReadMsg = defineStore('readMsg', () => { // 未读消息列表 const unreadMsgList = computed(() => - msgList.value.filter(msg => msg.notReadCount > 0) + msgList.value.filter(msg => msg.isRead == 0) ) diff --git a/utils/request.js b/utils/request.js index 0dcea0a..994cc32 100644 --- a/utils/request.js +++ b/utils/request.js @@ -198,11 +198,14 @@ export function createRequest(url, data = {}, method = 'GET', loading = false, h data: requestData, header, success: resData => { + const responseData = handleResponseData(resData.data) + console.log('[请求] 接口地址:', config.baseUrl + url) + console.log('[请求] 解密后数据:', JSON.stringify(responseData)) // 响应拦截 if (resData.statusCode === 200) { - const responseData = handleResponseData(resData.data) - console.log('[请求] 接口地址:', config.baseUrl + url) - console.log('[请求] 解密后数据:', JSON.stringify(responseData)) + // const responseData = handleResponseData(resData.data) + // console.log('[请求] 接口地址:', config.baseUrl + url) + // console.log('[请求] 解密后数据:', JSON.stringify(responseData)) const { code, msg