Compare commits
1 Commits
main
...
feature/la
Author | SHA1 | Date | |
---|---|---|---|
6041663842 |
@ -531,73 +531,84 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { useHead } from "#app";
|
import { useHead,useState } from "#app";
|
||||||
import { useRouter } from "vue-router"; //匯入路徑
|
import { useRouter } from "vue-router";
|
||||||
const { $api_host } = useNuxtApp(); //匯入API host
|
import { ref, onMounted } from "vue";
|
||||||
const router = useRouter(); // 匯入
|
|
||||||
|
const { $api_host } = useNuxtApp();
|
||||||
|
const router = useRouter();
|
||||||
|
|
||||||
useHead({
|
useHead({
|
||||||
title: "Manager",
|
title: "Manager",
|
||||||
meta: [
|
meta: [
|
||||||
{ charset: "utf-8" },
|
{ charset: "utf-8" },
|
||||||
{ "http-equiv": "X-UA-Compatible", content: "IE=edge" },
|
{ "http-equiv": "X-UA-Compatible", content: "IE=edge" },
|
||||||
{
|
{ name: "viewport", content: "width=device-width, initial-scale=1, shrink-to-fit=no" },
|
||||||
name: "viewport",
|
|
||||||
content: "width=device-width, initial-scale=1, shrink-to-fit=no",
|
|
||||||
},
|
|
||||||
{ name: "description", content: "" },
|
{ name: "description", content: "" },
|
||||||
{ name: "author", content: "" },
|
{ name: "author", content: "" },
|
||||||
],
|
],
|
||||||
link: [
|
link: [
|
||||||
{ rel: "stylesheet", href: "/vendor/fontawesome-free/css/all.min.css" }, // 確保 `styles.css` 位於 public/css 資料夾中
|
{ rel: "stylesheet", href: "/vendor/fontawesome-free/css/all.min.css" },
|
||||||
{ rel: "stylesheet", href: "/css/sb-admin-2.min.css" },
|
{ rel: "stylesheet", href: "/css/sb-admin-2.min.css" },
|
||||||
],
|
],
|
||||||
script: [
|
script: [
|
||||||
//{ src: 'https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js', crossorigin: 'anonymous' },
|
|
||||||
{ src: "/vendor/jquery/jquery.min.js" },
|
{ src: "/vendor/jquery/jquery.min.js" },
|
||||||
{ src: "/vendor/bootstrap/js/bootstrap.bundle.min.js" },
|
{ src: "/vendor/bootstrap/js/bootstrap.bundle.min.js" },
|
||||||
{ src: "/vendor/jquery-easing/jquery.easing.min.js" },
|
{ src: "/vendor/jquery-easing/jquery.easing.min.js" },
|
||||||
{ src: "/js/sb-admin-2.min.js" },
|
{ src: "/js/sb-admin-2.min.js" },
|
||||||
],
|
],
|
||||||
});
|
});
|
||||||
//登出
|
|
||||||
|
// 🔐 Token 狀態管理(確保 SSR 不報錯)
|
||||||
|
const authToken = useState("authToken", () => process.client ? localStorage.getItem("token_TCM") || "" : "");
|
||||||
|
|
||||||
|
// 🔐 登出
|
||||||
async function logout() {
|
async function logout() {
|
||||||
|
if (process.client) {
|
||||||
localStorage.removeItem("token_TCM");
|
localStorage.removeItem("token_TCM");
|
||||||
|
}
|
||||||
router.push("/").then(() => {
|
router.push("/").then(() => {
|
||||||
window.location.reload();
|
window.location.reload();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
var token; // 加上分號
|
// 🔍 Token 驗證
|
||||||
const token_check = ()=>{
|
const token_check = async () => {
|
||||||
// 检查本地存储中是否存在JWT令牌
|
if (!process.client) return; // 確保只在瀏覽器端執行
|
||||||
token = localStorage.getItem("token_TCM");
|
|
||||||
console.log(token);
|
const token = authToken.value;
|
||||||
// 確認有無token
|
console.log("Token:", token);
|
||||||
if (token != null) {
|
|
||||||
$.ajax({
|
if (!token) {
|
||||||
type: "GET",
|
console.log("未登入,跳轉回首頁");
|
||||||
url: $api_host + "/Users/token_check_user",
|
//router.push("/Home_pages/");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
const response = await fetch(`${$api_host}/Users/token_check_user`, {
|
||||||
|
method: "GET",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: token,
|
Authorization: token,
|
||||||
},
|
},
|
||||||
success: function (response) {
|
|
||||||
// 若層級為8 則無法登入
|
|
||||||
if(response.level<=6 ){
|
|
||||||
router.push("/Home_pages/");
|
|
||||||
}
|
|
||||||
},
|
|
||||||
error: function (xhr) {
|
|
||||||
console.log(xhr);
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
} else {
|
|
||||||
console.log("pass");
|
if (!response.ok) throw new Error(`HTTP 錯誤! 狀態碼: ${response.status}`);
|
||||||
|
|
||||||
|
const data = await response.json();
|
||||||
|
console.log("用戶驗證結果:", data);
|
||||||
|
|
||||||
|
// 若層級為 8 則無法登入
|
||||||
|
if (data.level <= 6) {
|
||||||
router.push("/Home_pages/");
|
router.push("/Home_pages/");
|
||||||
}
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error("驗證失敗:", error);
|
||||||
|
router.push("/Home_pages/");
|
||||||
}
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 🚀 自動執行
|
||||||
// 自啟
|
|
||||||
onMounted(token_check);
|
onMounted(token_check);
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -109,6 +109,7 @@ async function submitCompany() {
|
|||||||
const response = await fetch(`${$api_host}/api/Company_detail_table/Add_campany`, {
|
const response = await fetch(`${$api_host}/api/Company_detail_table/Add_campany`, {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
headers: {
|
headers: {
|
||||||
|
Authorization: token,
|
||||||
'Content-Type': 'application/json'
|
'Content-Type': 'application/json'
|
||||||
},
|
},
|
||||||
body: JSON.stringify(companyData)
|
body: JSON.stringify(companyData)
|
||||||
@ -126,12 +127,19 @@ async function submitCompany() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 检查本地存储中是否存在JWT令牌
|
||||||
|
const token = localStorage.getItem("token_TCM");
|
||||||
//獲取資料
|
//獲取資料
|
||||||
const companies = ref([]);
|
const companies = ref([]);
|
||||||
const get_data = async () => {
|
const get_data = async () => {
|
||||||
try {
|
try {
|
||||||
const response = await fetch(`${$api_host}/api/Company_detail_table/get_all_campany`);
|
const response = await fetch(`${$api_host}/api/Company_detail_table/get_all_campany`,{
|
||||||
|
method:'GET',
|
||||||
|
headers: {
|
||||||
|
Authorization: token,
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
},
|
||||||
|
});
|
||||||
if (!response.ok) throw new Error(`HTTP 錯誤! 狀態碼: ${response.status}`);
|
if (!response.ok) throw new Error(`HTTP 錯誤! 狀態碼: ${response.status}`);
|
||||||
|
|
||||||
const data = await response.json();
|
const data = await response.json();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user