From a002901d2628c6df9b998342c5a6c853bc9f8b62 Mon Sep 17 00:00:00 2001 From: ko1234 Date: Mon, 13 Oct 2025 14:06:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=9B=9E=E5=88=B0=E9=A6=96?= =?UTF-8?q?=E9=A0=81=E6=8C=89=E9=88=95=20|=20=E5=84=AA=E5=8C=96=E8=A6=96?= =?UTF-8?q?=E8=A7=92=E8=A8=AD=E5=AE=9A=E9=82=8F=E8=BC=AF=20|=20=E8=AA=BF?= =?UTF-8?q?=E6=95=B4=E6=AC=8A=E9=99=90=E6=B8=85=E9=99=A4=E9=82=8F=E8=BC=AF?= =?UTF-8?q?=20|=20=E6=9B=B4=E6=96=B0=E5=BA=AB=E5=AD=98=E9=A1=AF=E7=A4=BA?= =?UTF-8?q?=E9=82=8F=E8=BC=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/forge/Forge.vue | 25 ++++++++++++++++++- src/hooks/baja/useSystemStatusByBaja.js | 3 +++ src/router/index.js | 3 +++ src/stores/useUserInfoStore.js | 18 +++++++++++-- .../components/DashboardDescriptionCard.vue | 14 ++++++++--- .../dashboard/components/DashboardProduct.vue | 4 +-- .../dashboardForgeCards/CookingCard.vue | 2 +- .../history/components/HistorySearch.vue | 24 +++++++++--------- src/views/history/components/HistoryTable.vue | 8 +++--- .../components/InventorySettingAddModal.vue | 14 ++++++++--- .../components/InventorySettingTable.vue | 10 ++++---- 11 files changed, 91 insertions(+), 34 deletions(-) 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 @@