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 @@ -
+