Frontend/layouts/default.vue

572 lines
20 KiB
Vue
Raw Normal View History

2025-01-19 14:16:50 +08:00
<template>
2025-01-21 19:18:28 +08:00
<div>
<!-- Page Wrapper -->
2025-01-19 14:16:50 +08:00
<div id="wrapper">
2025-01-21 19:18:28 +08:00
<!-- Sidebar -->
<ul
class="navbar-nav bg-gradient-primary sidebar sidebar-dark accordion"
id="accordionSidebar"
>
<!-- Sidebar - Brand -->
<a
class="sidebar-brand d-flex align-items-center justify-content-center"
href="index.html"
>
<!--<div class="sidebar-brand-icon rotate-n-15">
2025-01-19 14:16:50 +08:00
<i class="fas fa-laugh-wink"></i>
2025-01-19 15:20:49 +08:00
</div>-->
2025-01-21 19:18:28 +08:00
<div class="sidebar-brand-text mx-3">
<img
class="img-profile rounded-circle"
style="width: 20%"
src="/img/lamiter_logo.JPEG"
/>
Lamiter
</div>
</a>
2025-01-19 14:16:50 +08:00
2025-01-21 19:18:28 +08:00
<!-- Divider -->
<hr class="sidebar-divider my-0" />
<!-- Nav Item - Dashboard -->
<li class="nav-item">
<a class="nav-link" href="index.html">
<i class="fas fa-fw fa-tachometer-alt"></i>
<span>Dashboard</span></a
>
</li>
<!-- Divider -->
<hr class="sidebar-divider" />
<!-- Heading -->
<div class="sidebar-heading">Interface</div>
<!-- Nav Item - Pages Collapse Menu -->
<li class="nav-item">
<a
class="nav-link collapsed"
href="#"
data-toggle="collapse"
data-target="#collapseTwo"
aria-expanded="true"
aria-controls="collapseTwo"
>
<i class="fas fa-fw fa-cog"></i>
<span>Components</span>
</a>
<div
id="collapseTwo"
class="collapse"
aria-labelledby="headingTwo"
data-parent="#accordionSidebar"
>
<div class="bg-white py-2 collapse-inner rounded">
<h6 class="collapse-header">Custom Components:</h6>
<a class="collapse-item" href="buttons.html">Buttons</a>
<a class="collapse-item" href="cards.html">Cards</a>
2025-01-19 14:16:50 +08:00
</div>
2025-01-21 19:18:28 +08:00
</div>
</li>
<!-- Nav Item - Utilities Collapse Menu -->
<li class="nav-item">
<a
class="nav-link collapsed"
href="#"
data-toggle="collapse"
data-target="#collapseUtilities"
aria-expanded="true"
aria-controls="collapseUtilities"
>
<i class="fas fa-fw fa-wrench"></i>
<span>Utilities</span>
</a>
<div
id="collapseUtilities"
class="collapse"
aria-labelledby="headingUtilities"
data-parent="#accordionSidebar"
>
<div class="bg-white py-2 collapse-inner rounded">
<h6 class="collapse-header">Custom Utilities:</h6>
<a class="collapse-item" href="utilities-color.html">Colors</a>
<a class="collapse-item" href="utilities-border.html">Borders</a>
<a class="collapse-item" href="utilities-animation.html"
>Animations</a
>
<a class="collapse-item" href="utilities-other.html">Other</a>
</div>
</div>
</li>
<!-- Divider -->
<hr class="sidebar-divider" />
<!-- Heading -->
<div class="sidebar-heading">Addons</div>
<!-- Nav Item - Pages Collapse Menu -->
<li class="nav-item">
<a
class="nav-link"
href="#"
data-toggle="collapse"
data-target="#collapsePages"
aria-expanded="true"
aria-controls="collapsePages"
>
<i class="fas fa-fw fa-folder"></i>
<span>Pages</span>
</a>
<div
id="collapsePages"
class="collapse"
aria-labelledby="headingPages"
data-parent="#accordionSidebar"
>
<div class="bg-white py-2 collapse-inner rounded">
<h6 class="collapse-header">Login Screens:</h6>
<a class="collapse-item" href="login.html">Login</a>
<a class="collapse-item" href="register.html">Register</a>
<a class="collapse-item" href="forgot-password.html"
>Forgot Password</a
>
<div class="collapse-divider"></div>
<h6 class="collapse-header">Other Pages:</h6>
<a class="collapse-item" href="404.html">404 Page</a>
<a class="collapse-item active" href="blank.html">Blank Page</a>
</div>
</div>
</li>
<!-- Nav Item - Charts -->
<li class="nav-item">
<a class="nav-link" href="charts.html">
<i class="fas fa-fw fa-chart-area"></i>
<span>Charts</span></a
>
</li>
<!-- Nav Item - Tables -->
<li class="nav-item">
<a class="nav-link" href="tables.html">
<i class="fas fa-fw fa-table"></i>
<span>Tables</span></a
>
</li>
<!-- Divider -->
<hr class="sidebar-divider d-none d-md-block" />
<!-- Sidebar Toggler (Sidebar) -->
<div class="text-center d-none d-md-inline">
<button class="rounded-circle border-0" id="sidebarToggle"></button>
</div>
</ul>
<!-- End of Sidebar -->
<!-- Content Wrapper -->
<div id="content-wrapper" class="d-flex flex-column">
<!-- Main Content -->
<div id="content">
<!-- Topbar -->
<nav
class="navbar navbar-expand navbar-light bg-white topbar mb-4 static-top shadow"
>
<!-- Sidebar Toggle (Topbar) -->
<button
id="sidebarToggleTop"
class="btn btn-link d-md-none rounded-circle mr-3"
>
<i class="fa fa-bars"></i>
</button>
<!-- Topbar Search -->
<form
class="d-none d-sm-inline-block form-inline mr-auto ml-md-3 my-2 my-md-0 mw-100 navbar-search"
>
<div class="input-group">
<input
type="text"
class="form-control bg-light border-0 small"
placeholder="Search for..."
aria-label="Search"
aria-describedby="basic-addon2"
/>
<div class="input-group-append">
<button class="btn btn-primary" type="button">
<i class="fas fa-search fa-sm"></i>
</button>
</div>
</div>
</form>
<!-- Topbar Navbar -->
<ul class="navbar-nav ml-auto">
<!-- Nav Item - Search Dropdown (Visible Only XS) -->
<li class="nav-item dropdown no-arrow d-sm-none">
<a
class="nav-link dropdown-toggle"
href="#"
id="searchDropdown"
role="button"
data-toggle="dropdown"
aria-haspopup="true"
aria-expanded="false"
>
<i class="fas fa-search fa-fw"></i>
2025-01-19 14:16:50 +08:00
</a>
2025-01-21 19:18:28 +08:00
<!-- Dropdown - Messages -->
<div
class="dropdown-menu dropdown-menu-right p-3 shadow animated--grow-in"
aria-labelledby="searchDropdown"
>
<form class="form-inline mr-auto w-100 navbar-search">
<div class="input-group">
<input
type="text"
class="form-control bg-light border-0 small"
placeholder="Search for..."
aria-label="Search"
aria-describedby="basic-addon2"
/>
<div class="input-group-append">
<button class="btn btn-primary" type="button">
<i class="fas fa-search fa-sm"></i>
</button>
</div>
2025-01-19 14:16:50 +08:00
</div>
2025-01-21 19:18:28 +08:00
</form>
2025-01-19 14:16:50 +08:00
</div>
2025-01-21 19:18:28 +08:00
</li>
<!-- Nav Item - Alerts -->
<li class="nav-item dropdown no-arrow mx-1">
<a
class="nav-link dropdown-toggle"
href="#"
id="alertsDropdown"
role="button"
data-toggle="dropdown"
aria-haspopup="true"
aria-expanded="false"
>
<i class="fas fa-bell fa-fw"></i>
<!-- Counter - Alerts -->
<span class="badge badge-danger badge-counter">3+</span>
2025-01-19 14:16:50 +08:00
</a>
2025-01-21 19:18:28 +08:00
<!-- Dropdown - Alerts -->
<div
class="dropdown-list dropdown-menu dropdown-menu-right shadow animated--grow-in"
aria-labelledby="alertsDropdown"
>
<h6 class="dropdown-header">Alerts Center</h6>
<a class="dropdown-item d-flex align-items-center" href="#">
<div class="mr-3">
<div class="icon-circle bg-primary">
<i class="fas fa-file-alt text-white"></i>
</div>
</div>
<div>
<div class="small text-gray-500">December 12, 2019</div>
<span class="font-weight-bold"
>A new monthly report is ready to download!</span
>
</div>
</a>
<a class="dropdown-item d-flex align-items-center" href="#">
<div class="mr-3">
<div class="icon-circle bg-success">
<i class="fas fa-donate text-white"></i>
</div>
</div>
<div>
<div class="small text-gray-500">December 7, 2019</div>
$290.29 has been deposited into your account!
</div>
</a>
<a class="dropdown-item d-flex align-items-center" href="#">
<div class="mr-3">
<div class="icon-circle bg-warning">
<i class="fas fa-exclamation-triangle text-white"></i>
</div>
2025-01-19 14:16:50 +08:00
</div>
2025-01-21 19:18:28 +08:00
<div>
<div class="small text-gray-500">December 2, 2019</div>
Spending Alert: We've noticed unusually high spending for
your account.
</div>
</a>
<a
class="dropdown-item text-center small text-gray-500"
href="#"
>Show All Alerts</a
>
2025-01-19 14:16:50 +08:00
</div>
2025-01-21 19:18:28 +08:00
</li>
<!-- Nav Item - Messages -->
<li class="nav-item dropdown no-arrow mx-1">
<a
class="nav-link dropdown-toggle"
href="#"
id="messagesDropdown"
role="button"
data-toggle="dropdown"
aria-haspopup="true"
aria-expanded="false"
>
<i class="fas fa-envelope fa-fw"></i>
<!-- Counter - Messages -->
<span class="badge badge-danger badge-counter">7</span>
2025-01-19 14:16:50 +08:00
</a>
2025-01-21 19:18:28 +08:00
<!-- Dropdown - Messages -->
<div
class="dropdown-list dropdown-menu dropdown-menu-right shadow animated--grow-in"
aria-labelledby="messagesDropdown"
>
<h6 class="dropdown-header">Message Center</h6>
<a class="dropdown-item d-flex align-items-center" href="#">
<div class="dropdown-list-image mr-3">
<img
class="rounded-circle"
src="/img/undraw_profile_1.svg"
alt="..."
/>
<div class="status-indicator bg-success"></div>
2025-01-19 14:16:50 +08:00
</div>
2025-01-21 19:18:28 +08:00
<div class="font-weight-bold">
<div class="text-truncate">
Hi there! I am wondering if you can help me with a
problem I've been having.
</div>
<div class="small text-gray-500">Emily Fowler · 58m</div>
</div>
</a>
<a class="dropdown-item d-flex align-items-center" href="#">
<div class="dropdown-list-image mr-3">
<img
class="rounded-circle"
src="/img/undraw_profile_2.svg"
alt="..."
/>
<div class="status-indicator"></div>
</div>
<div>
<div class="text-truncate">
I have the photos that you ordered last month, how would
you like them sent to you?
</div>
<div class="small text-gray-500">Jae Chun · 1d</div>
2025-01-19 14:16:50 +08:00
</div>
2025-01-21 19:18:28 +08:00
</a>
<a class="dropdown-item d-flex align-items-center" href="#">
<div class="dropdown-list-image mr-3">
<img
class="rounded-circle"
src="/img/undraw_profile_3.svg"
alt="..."
/>
<div class="status-indicator bg-warning"></div>
</div>
<div>
<div class="text-truncate">
Last month's report looks great, I am very happy with
the progress so far, keep up the good work!
</div>
<div class="small text-gray-500">Morgan Alvarez · 2d</div>
</div>
</a>
<a class="dropdown-item d-flex align-items-center" href="#">
<div class="dropdown-list-image mr-3">
<img
class="rounded-circle"
src="https://source.unsplash.com/Mv9hjnEUHR4/60x60"
alt="..."
/>
<div class="status-indicator bg-success"></div>
</div>
<div>
<div class="text-truncate">
Am I a good boy? The reason I ask is because someone
told me that people say this to all dogs, even if they
aren't good...
</div>
<div class="small text-gray-500">
Chicken the Dog · 2w
</div>
</div>
</a>
<a
class="dropdown-item text-center small text-gray-500"
href="#"
>Read More Messages</a
>
2025-01-19 14:16:50 +08:00
</div>
2025-01-21 19:18:28 +08:00
</li>
<div class="topbar-divider d-none d-sm-block"></div>
<!-- Nav Item - User Information -->
<li class="nav-item dropdown no-arrow">
<a
class="nav-link dropdown-toggle"
href="#"
id="userDropdown"
role="button"
data-toggle="dropdown"
aria-haspopup="true"
aria-expanded="false"
>
<span class="mr-2 d-none d-lg-inline text-gray-600 small"
>Douglas McGee</span
>
<img
class="img-profile rounded-circle"
src="/img/undraw_profile.svg"
/>
</a>
<!-- Dropdown - User Information -->
<div
class="dropdown-menu dropdown-menu-right shadow animated--grow-in"
aria-labelledby="userDropdown"
>
<a class="dropdown-item" href="#">
<i class="fas fa-user fa-sm fa-fw mr-2 text-gray-400"></i>
Profile
</a>
<a class="dropdown-item" href="#">
<i class="fas fa-cogs fa-sm fa-fw mr-2 text-gray-400"></i>
Settings
</a>
<a class="dropdown-item" href="#">
<i class="fas fa-list fa-sm fa-fw mr-2 text-gray-400"></i>
Activity Log
</a>
<div class="dropdown-divider"></div>
<a
class="dropdown-item"
href="#"
data-toggle="modal"
data-target="#logoutModal"
>
<i
class="fas fa-sign-out-alt fa-sm fa-fw mr-2 text-gray-400"
></i>
Logout
</a>
</div>
</li>
</ul>
</nav>
<!-- End of Topbar -->
<!-- Begin Page Content -->
<div class="container-fluid">
<!-- Page Heading -->
<NuxtPage></NuxtPage>
</div>
<!-- /.container-fluid -->
2025-01-19 14:16:50 +08:00
</div>
2025-01-21 19:18:28 +08:00
<!-- End of Main Content -->
2025-01-19 14:16:50 +08:00
2025-01-21 19:18:28 +08:00
<!-- Footer -->
<footer class="sticky-footer bg-white">
<div class="container my-auto">
<div class="copyright text-center my-auto">
<span>Copyright &copy; Your Website 2020</span>
2025-01-19 14:16:50 +08:00
</div>
2025-01-21 19:18:28 +08:00
</div>
</footer>
<!-- End of Footer -->
</div>
<!-- End of Content Wrapper -->
</div>
<!-- End of Page Wrapper -->
<!-- Scroll to Top Button-->
<a class="scroll-to-top rounded" href="#page-top">
<i class="fas fa-angle-up"></i>
</a>
<!-- Logout Modal-->
<div
class="modal fade"
id="logoutModal"
tabindex="-1"
role="dialog"
aria-labelledby="exampleModalLabel"
aria-hidden="true"
>
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Ready to Leave?</h5>
<button
class="close"
type="button"
data-dismiss="modal"
aria-label="Close"
>
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
Select "Logout" below if you are ready to end your current session.
</div>
<div class="modal-footer">
<button
class="btn btn-secondary"
type="button"
data-dismiss="modal"
>
Cancel
</button>
<a class="btn btn-primary" @click="logout">Logout</a>
</div>
2025-01-19 14:16:50 +08:00
</div>
2025-01-21 19:18:28 +08:00
</div>
2025-01-19 14:16:50 +08:00
</div>
2025-01-21 19:18:28 +08:00
</div>
2025-01-19 14:16:50 +08:00
</template>
<script setup>
2025-01-21 19:18:28 +08:00
import { useHead } from "#app";
import { useRouter } from "vue-router"; //匯入路徑
const { $api_host } = useNuxtApp(); //匯入API host
const router = useRouter(); // 匯入
2025-01-19 14:16:50 +08:00
useHead({
2025-01-21 19:18:28 +08:00
title: "Lamiter",
meta: [
{ charset: "utf-8" },
{ "http-equiv": "X-UA-Compatible", content: "IE=edge" },
{
name: "viewport",
content: "width=device-width, initial-scale=1, shrink-to-fit=no",
},
{ name: "description", content: "" },
{ name: "author", content: "" },
],
link: [
{ rel: "stylesheet", href: "/vendor/fontawesome-free/css/all.min.css" }, // 確保 `styles.css` 位於 public/css 資料夾中
{ rel: "stylesheet", href: "/css/sb-admin-2.min.css" },
],
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/bootstrap/js/bootstrap.bundle.min.js" },
{ src: "/vendor/jquery-easing/jquery.easing.min.js" },
{ src: "/js/sb-admin-2.min.js" },
],
});
//登出
async function logout() {
localStorage.removeItem("token_TCM");
router.push("/").then(() => {
window.location.reload();
});
}
2025-01-19 14:16:50 +08:00
</script>