diff --git a/src/components/forge/Forge.vue b/src/components/forge/Forge.vue index 7dd56cd..2373470 100644 --- a/src/components/forge/Forge.vue +++ b/src/components/forge/Forge.vue @@ -39,6 +39,7 @@ const { subComponents, clearSprites, updateTemp, + fitToView, } = useSystemStatusByBaja(); // 用於存儲 meter label 的 2D 位置 @@ -182,6 +183,28 @@ onUnmounted(() => { ) " > + +
+ +

更新時間 : {{ props.realTime }}

@@ -246,7 +269,7 @@ onUnmounted(() => { } .homeViewWrapper { - transform: scale(1.5) translateX(350%) translateY(0%) !important; + display: none !important; } .heatbar { diff --git a/src/hooks/baja/useSystemStatusByBaja.js b/src/hooks/baja/useSystemStatusByBaja.js index f3efa09..9664676 100644 --- a/src/hooks/baja/useSystemStatusByBaja.js +++ b/src/hooks/baja/useSystemStatusByBaja.js @@ -141,6 +141,8 @@ export default function useSystemStatusByBaja() { } = JSON.parse(searchParams.value.target_position); const newTarget = new THREE.Vector3(x1, y1, z1); forgeViewer.value.navigation.setView(newPosition, newTarget); + // 強制 up vector 為 Z 軸朝上,確保視角水平 + forgeViewer.value.navigation.setCameraUpVector(new THREE.Vector3(0, 0, 1)); }; const hideAllObjects = (instanceTree, filDbids = []) => { @@ -497,5 +499,6 @@ export default function useSystemStatusByBaja() { clearSprites, clearSingleSprite, updateTemp, + fitToView, }; } diff --git a/src/router/index.js b/src/router/index.js index 2fdb5f3..5887471 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -88,16 +88,19 @@ router.beforeEach(async (to, from, next) => { if (location.pathname.includes("logoutConfirm")) { document.cookie = "JWT-Authorization="; auth.user.token = ""; + auth.clearAuthPage && auth.clearAuthPage(); // 清除 cookie token next({ path: "/login" }); } if ((authRequired && !token) || to.path === "/") { auth.user.token = ""; + auth.clearAuthPage && auth.clearAuthPage(); next({ path: "/login" }); } else if (!authRequired) { document.cookie = "JWT-Authorization="; auth.user.token = ""; + auth.clearAuthPage && auth.clearAuthPage(); } else { auth.user.token = token; } diff --git a/src/stores/useUserInfoStore.js b/src/stores/useUserInfoStore.js index 27ef6dd..af6b175 100644 --- a/src/stores/useUserInfoStore.js +++ b/src/stores/useUserInfoStore.js @@ -1,18 +1,32 @@ import { defineStore } from "pinia"; import { ref } from "vue"; + + +const AUTH_PAGE_KEY = "pccv_auth_page"; + const useUserInfoStore = defineStore("userInfo", () => { const user = ref({ token: "", expires: 0, }); - const auth_page = ref([]); + // 初始化時從 sessionStorage 載入 + const storedAuthPage = sessionStorage.getItem(AUTH_PAGE_KEY); + const auth_page = ref(storedAuthPage ? JSON.parse(storedAuthPage) : []); + const updateAuthPage = (data) => { auth_page.value = data; + sessionStorage.setItem(AUTH_PAGE_KEY, JSON.stringify(data)); }; - return { user, auth_page, updateAuthPage }; + // 提供一個清除權限的方法(例如登出時用) + const clearAuthPage = () => { + auth_page.value = []; + sessionStorage.removeItem(AUTH_PAGE_KEY); + }; + + return { user, auth_page, updateAuthPage, clearAuthPage }; }); export default useUserInfoStore; diff --git a/src/views/dashboard/components/DashboardDescriptionCard.vue b/src/views/dashboard/components/DashboardDescriptionCard.vue index f798123..163ac58 100644 --- a/src/views/dashboard/components/DashboardDescriptionCard.vue +++ b/src/views/dashboard/components/DashboardDescriptionCard.vue @@ -1,8 +1,16 @@