From 32ff0b4a383877236be925f99a367f8f5813aab8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BA=84=E9=94=90=E6=B3=A2?= <10549902+zhuangruibo@user.noreply.gitee.com> Date: Mon, 1 Jun 2026 19:47:28 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=A7=E6=B3=95=E7=AB=AF-=E8=AE=A1=E5=88=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AppEntPlanNoticeController.java | 12 ++++++ .../IEfcodeCpNoticeMessageService.java | 7 +++ .../EfcodeCpNoticeMessageServiceImpl.java | 17 ++++++++ .../enforcement/my/notice/cp_notice_edit.vue | 6 +-- .../my/notice/cp_notice_message.vue | 34 +++++++++++++++ .../src/api/enterprise/planNotice.js | 5 ++- .../router/enterprise-app/ent-main-router.js | 2 +- .../enterprise/plan/planNoticeMessage.vue | 43 ++++++++++++++++++- 8 files changed, 120 insertions(+), 6 deletions(-) diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enterprise/AppEntPlanNoticeController.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enterprise/AppEntPlanNoticeController.java index 5789c331..80128e84 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enterprise/AppEntPlanNoticeController.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enterprise/AppEntPlanNoticeController.java @@ -116,4 +116,16 @@ public class AppEntPlanNoticeController { efcodeCpNoticeMessageService.insertByBo(bo); return R.ok(); } + + /** + * 标记某个预告下所有消息为企业已读 + * + * @param noticeId 预告ID + * @return 操作结果 + */ + @PutMapping("/message/markViewed") + public R markViewed(@RequestParam String noticeId) { + efcodeCpNoticeMessageService.markEnterpriseViewed(noticeId); + return R.ok(); + } } diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IEfcodeCpNoticeMessageService.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IEfcodeCpNoticeMessageService.java index ca889ade..81025e9b 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IEfcodeCpNoticeMessageService.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/IEfcodeCpNoticeMessageService.java @@ -73,4 +73,11 @@ public interface IEfcodeCpNoticeMessageService { * @return 未读消息数量 */ Long countUnreadNoticeMessage(String enterpriseNumber); + + /** + * 标记某个预告下所有消息为企业已读 + * + * @param noticeId 预告ID + */ + void markEnterpriseViewed(String noticeId); } diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EfcodeCpNoticeMessageServiceImpl.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EfcodeCpNoticeMessageServiceImpl.java index ef6ba6ba..397a1441 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EfcodeCpNoticeMessageServiceImpl.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EfcodeCpNoticeMessageServiceImpl.java @@ -6,6 +6,7 @@ import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.PageQuery; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -166,4 +167,20 @@ public class EfcodeCpNoticeMessageServiceImpl implements IEfcodeCpNoticeMessageS msgWrapper.eq(EfcodeCpNoticeMessage::getIsDelete, 0); return baseMapper.selectCount(msgWrapper); } + + /** + * 标记某个预告下所有消息为企业已读 + */ + @Override + public void markEnterpriseViewed(String noticeId) { + if (StringUtils.isBlank(noticeId)) { + return; + } + LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate(); + updateWrapper.eq(EfcodeCpNoticeMessage::getNoticeId, noticeId) + .eq(EfcodeCpNoticeMessage::getEnterpriseViewed, 0) + .eq(EfcodeCpNoticeMessage::getIsDelete, 0) + .set(EfcodeCpNoticeMessage::getEnterpriseViewed, 1); + baseMapper.update(null, updateWrapper); + } } diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/notice/cp_notice_edit.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/notice/cp_notice_edit.vue index 2e3df08e..ef80b1ae 100644 --- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/notice/cp_notice_edit.vue +++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/notice/cp_notice_edit.vue @@ -256,7 +256,7 @@ @@ -274,7 +274,7 @@
{{ item.enterpriseName }}
{{ item.enterpriseNumber }}
- + @@ -463,7 +463,7 @@ const onOpenEnterprisePicker = () => { const onEnterpriseSearchInput = (val) => { if (enterpriseSearchTimer) clearTimeout(enterpriseSearchTimer); const keyword = (val || '').trim(); - if (keyword.length < 3) { + if (keyword.length < 2) { enterpriseOptions.value = []; return; } diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/notice/cp_notice_message.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/notice/cp_notice_message.vue index 2eecfc8b..a5e3e62d 100644 --- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/notice/cp_notice_message.vue +++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/notice/cp_notice_message.vue @@ -73,11 +73,45 @@ const loading = ref(false); const inputMessage = ref(''); const sending = ref(false); const messageAreaRef = ref(null); +let pollTimer = null; onMounted(() => { loadMessages(); + startPolling(); }); +onUnmounted(() => { + stopPolling(); +}); + +const startPolling = () => { + stopPolling(); + pollTimer = setInterval(() => { + pollMessages(); + }, 16000); +}; + +const stopPolling = () => { + if (pollTimer) { + clearInterval(pollTimer); + pollTimer = null; + } +}; + +// 轮询加载新消息(静默,不显示loading) +const pollMessages = () => { + if (!noticeId.value) return; + getNoticeMessages(noticeId.value, (res) => { + if (res.code === 200 && Array.isArray(res.data)) { + const oldCount = messageList.value.length; + messageList.value = res.data; + if (res.data.length > oldCount) { + scrollToBottom(); + } + } + }); +}; + const loadMessages = () => { if (!noticeId.value) return; loading.value = true; diff --git a/zdxt-web-client/zdxt-efcode-enterprise-app/src/api/enterprise/planNotice.js b/zdxt-web-client/zdxt-efcode-enterprise-app/src/api/enterprise/planNotice.js index 4a2a930f..6b600caa 100644 --- a/zdxt-web-client/zdxt-efcode-enterprise-app/src/api/enterprise/planNotice.js +++ b/zdxt-web-client/zdxt-efcode-enterprise-app/src/api/enterprise/planNotice.js @@ -1,4 +1,4 @@ -import { _get, _post } from "../../http/index"; +import { _get, _post, _put } from "../../http/index"; let enterpriseAppBaseUrl = "/app-ent"; @@ -13,3 +13,6 @@ export const getPlanNoticeMessageList = (params, success, error) => _get(enterpr //执法预告新增留言 export const addPlanNoticeMessage = (params, success, error) => _post(enterpriseAppBaseUrl +"/planNotice/message",params,success,error); + +//标记预告消息为企业已读 +export const markMessageViewed = (noticeId, success, error) => _put(enterpriseAppBaseUrl +"/planNotice/message/markViewed?noticeId=" + noticeId, {}, success, error); diff --git a/zdxt-web-client/zdxt-efcode-enterprise-app/src/router/enterprise-app/ent-main-router.js b/zdxt-web-client/zdxt-efcode-enterprise-app/src/router/enterprise-app/ent-main-router.js index ba437b66..6c3dcd6b 100644 --- a/zdxt-web-client/zdxt-efcode-enterprise-app/src/router/enterprise-app/ent-main-router.js +++ b/zdxt-web-client/zdxt-efcode-enterprise-app/src/router/enterprise-app/ent-main-router.js @@ -8,7 +8,7 @@ const routes = [ { path: "/enterprisetest", redirect: "/enterprise/enterpriseHome", - name: "enterpriseRoot", + name: "enterpriseRootTest", }, // 企业端登录 { diff --git a/zdxt-web-client/zdxt-efcode-enterprise-app/src/views/enterprise/plan/planNoticeMessage.vue b/zdxt-web-client/zdxt-efcode-enterprise-app/src/views/enterprise/plan/planNoticeMessage.vue index b5825548..ff31fb94 100644 --- a/zdxt-web-client/zdxt-efcode-enterprise-app/src/views/enterprise/plan/planNoticeMessage.vue +++ b/zdxt-web-client/zdxt-efcode-enterprise-app/src/views/enterprise/plan/planNoticeMessage.vue @@ -59,7 +59,7 @@