From c42cd1d1c10e36b858a9f099d2dc1c85ab720b5f Mon Sep 17 00:00:00 2001 From: wangmingyong Date: Mon, 11 May 2026 11:36:59 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=A7=E6=B3=95=E7=AB=AF=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/FooterBar.vue | 114 +++++ .../router/enforcement-app/enf-main-router.js | 29 +- .../src/store/messageState.js | 22 + .../enforcementHome.vue} | 49 +- .../enforcement/message/messageCenter.vue | 474 ++++++++++++++++++ .../views/enforcement/my/enforcementMy.vue | 348 +++++++++++++ .../enforcement/query/enforcementQuery.vue | 43 ++ 7 files changed, 1030 insertions(+), 49 deletions(-) create mode 100644 zdxt-web-client/zdxt-efcode-enforcement-app/src/components/FooterBar.vue create mode 100644 zdxt-web-client/zdxt-efcode-enforcement-app/src/store/messageState.js rename zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/{enforcementHomeV2.vue => home/enforcementHome.vue} (92%) create mode 100644 zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/message/messageCenter.vue create mode 100644 zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/enforcementMy.vue create mode 100644 zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/query/enforcementQuery.vue diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/FooterBar.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/FooterBar.vue new file mode 100644 index 00000000..fda56273 --- /dev/null +++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/FooterBar.vue @@ -0,0 +1,114 @@ + + + + + diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/router/enforcement-app/enf-main-router.js b/zdxt-web-client/zdxt-efcode-enforcement-app/src/router/enforcement-app/enf-main-router.js index e5e4732f..306b5ea5 100644 --- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/router/enforcement-app/enf-main-router.js +++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/router/enforcement-app/enf-main-router.js @@ -13,7 +13,7 @@ const routes = [ { path: "/enforcement/enforcementHome", name: "enforcementHome", - component: () => import("@/views/enforcement/enforcementHomeV2.vue"), + component: () => import("@/views/enforcement/home/enforcementHome.vue"), meta: { isKeepAlive: false, }, @@ -36,6 +36,33 @@ const routes = [ isKeepAlive: false, }, }, + // 执法端-查询(tabbar) + { + path: "/enforcement/query", + name: "enforcementQuery", + component: () => import("@/views/enforcement/query/enforcementQuery.vue"), + meta: { + isKeepAlive: true, + }, + }, + // 执法端-消息中心(tabbar) + { + path: "/enforcement/message", + name: "enforcementMessage", + component: () => import("@/views/enforcement/message/messageCenter.vue"), + meta: { + isKeepAlive: true, + }, + }, + // 执法端-我的(tabbar) + { + path: "/enforcement/my", + name: "enforcementMy", + component: () => import("@/views/enforcement/my/enforcementMy.vue"), + meta: { + isKeepAlive: true, + }, + }, ]; export {routes}; diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/store/messageState.js b/zdxt-web-client/zdxt-efcode-enforcement-app/src/store/messageState.js new file mode 100644 index 00000000..2883364c --- /dev/null +++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/store/messageState.js @@ -0,0 +1,22 @@ +import { ref, computed } from 'vue'; + +/** + * 消息未读数(跨 tabbar 页面共享) + * - 模块级单例,四个 tabbar 页面(首页/查询/消息/我的)共享同一份 + * - 消息中心页面负责写入;其他页面仅读取用于 footer-bar 角标展示 + */ +export const messageUnread = ref(0); + +/** 格式化为角标展示值(0 显示空) */ +export const messageUnreadBadge = computed(() => (messageUnread.value > 0 ? messageUnread.value : '')); + +/** 直接设置未读总数 */ +export const setMessageUnread = (count) => { + messageUnread.value = Number(count) || 0; +}; + +// 占位 default 导出:src/store 目录会被 globalStore.js 通过 import.meta.glob +// 以 { import: 'default' } 的方式扫描,缺少 default 会触发 +// "does not provide an export named 'default'" 错误。 +// 此处导出一个不带 $id 的对象,globalStore 会自动跳过注册,不影响 Pinia。 +export default {}; diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/enforcementHomeV2.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/home/enforcementHome.vue similarity index 92% rename from zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/enforcementHomeV2.vue rename to zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/home/enforcementHome.vue index 0a4172d7..293e0713 100644 --- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/enforcementHomeV2.vue +++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/home/enforcementHome.vue @@ -191,24 +191,7 @@ - + @@ -786,34 +769,4 @@ const toScanEntQRCode = (type) => { .info-card-bg-decor--green { color: #059669; } - -/* ===== 底部导航栏 ===== */ -.footer-bar { - flex-shrink: 0; - display: flex; - align-items: center; - justify-content: space-around; - background: #fff; - padding: 8px 0; - padding-bottom: calc(8px + env(safe-area-inset-bottom)); - box-shadow: 0 -2px 12px rgba(0,0,0,0.06); - - .footer-item { - display: flex; - flex-direction: column; - align-items: center; - gap: 3px; - color: #999; - font-size: 11px; - - svg { - width: 24px; - height: 24px; - } - - &--active { - color: #3b82f6; - } - } -} diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/message/messageCenter.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/message/messageCenter.vue new file mode 100644 index 00000000..506f0ec9 --- /dev/null +++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/message/messageCenter.vue @@ -0,0 +1,474 @@ + + + + + diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/enforcementMy.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/enforcementMy.vue new file mode 100644 index 00000000..67f47e81 --- /dev/null +++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/enforcementMy.vue @@ -0,0 +1,348 @@ + + + + + diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/query/enforcementQuery.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/query/enforcementQuery.vue new file mode 100644 index 00000000..ad504915 --- /dev/null +++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/query/enforcementQuery.vue @@ -0,0 +1,43 @@ + + + + +