This commit is contained in:
威勝 張 2025-01-21 19:18:28 +08:00
parent 33c365d76d
commit b43c2b0819
9 changed files with 1359 additions and 927 deletions

1
assets/js/api-host.js Normal file
View File

@ -0,0 +1 @@
export let api_host = 'http://localhost:5291';

View File

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

View File

@ -2,47 +2,65 @@
<div> <div>
<!-- Page Wrapper --> <!-- Page Wrapper -->
<div id="wrapper"> <div id="wrapper">
<!-- Sidebar --> <!-- Sidebar -->
<ul class="navbar-nav bg-gradient-primary sidebar sidebar-dark accordion" id="accordionSidebar"> <ul
class="navbar-nav bg-gradient-primary sidebar sidebar-dark accordion"
id="accordionSidebar"
>
<!-- Sidebar - Brand --> <!-- Sidebar - Brand -->
<a class="sidebar-brand d-flex align-items-center justify-content-center" href="index.html"> <a
class="sidebar-brand d-flex align-items-center justify-content-center"
href="index.html"
>
<!--<div class="sidebar-brand-icon rotate-n-15"> <!--<div class="sidebar-brand-icon rotate-n-15">
<i class="fas fa-laugh-wink"></i> <i class="fas fa-laugh-wink"></i>
</div>--> </div>-->
<div class="sidebar-brand-text mx-3"> <div class="sidebar-brand-text mx-3">
<img class="img-profile rounded-circle" style="width:20%" src="/img/lamiter_logo.JPEG"> <img
Manger class="img-profile rounded-circle"
style="width: 20%"
src="/img/lamiter_logo.JPEG"
/>
Manager
</div> </div>
</a> </a>
<!-- Divider --> <!-- Divider -->
<hr class="sidebar-divider my-0"> <hr class="sidebar-divider my-0" />
<!-- Nav Item - Dashboard --> <!-- Nav Item - Dashboard -->
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="index.html"> <a class="nav-link" href="index.html">
<i class="fas fa-fw fa-tachometer-alt"></i> <i class="fas fa-fw fa-tachometer-alt"></i>
<span>Dashboard</span></a> <span>Dashboard</span></a
>
</li> </li>
<!-- Divider --> <!-- Divider -->
<hr class="sidebar-divider"> <hr class="sidebar-divider" />
<!-- Heading --> <!-- Heading -->
<div class="sidebar-heading"> <div class="sidebar-heading">Interface</div>
Interface
</div>
<!-- Nav Item - Pages Collapse Menu --> <!-- Nav Item - Pages Collapse Menu -->
<li class="nav-item"> <li class="nav-item">
<a class="nav-link collapsed" href="#" data-toggle="collapse" data-target="#collapseTwo" <a
aria-expanded="true" aria-controls="collapseTwo"> 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> <i class="fas fa-fw fa-cog"></i>
<span>Components</span> <span>Components</span>
</a> </a>
<div id="collapseTwo" class="collapse" aria-labelledby="headingTwo" data-parent="#accordionSidebar"> <div
id="collapseTwo"
class="collapse"
aria-labelledby="headingTwo"
data-parent="#accordionSidebar"
>
<div class="bg-white py-2 collapse-inner rounded"> <div class="bg-white py-2 collapse-inner rounded">
<h6 class="collapse-header">Custom Components:</h6> <h6 class="collapse-header">Custom Components:</h6>
<a class="collapse-item" href="buttons.html">Buttons</a> <a class="collapse-item" href="buttons.html">Buttons</a>
@ -53,45 +71,67 @@
<!-- Nav Item - Utilities Collapse Menu --> <!-- Nav Item - Utilities Collapse Menu -->
<li class="nav-item"> <li class="nav-item">
<a class="nav-link collapsed" href="#" data-toggle="collapse" data-target="#collapseUtilities" <a
aria-expanded="true" aria-controls="collapseUtilities"> 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> <i class="fas fa-fw fa-wrench"></i>
<span>Utilities</span> <span>Utilities</span>
</a> </a>
<div id="collapseUtilities" class="collapse" aria-labelledby="headingUtilities" <div
data-parent="#accordionSidebar"> id="collapseUtilities"
class="collapse"
aria-labelledby="headingUtilities"
data-parent="#accordionSidebar"
>
<div class="bg-white py-2 collapse-inner rounded"> <div class="bg-white py-2 collapse-inner rounded">
<h6 class="collapse-header">Custom Utilities:</h6> <h6 class="collapse-header">Custom Utilities:</h6>
<a class="collapse-item" href="utilities-color.html">Colors</a> <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-border.html">Borders</a>
<a class="collapse-item" href="utilities-animation.html">Animations</a> <a class="collapse-item" href="utilities-animation.html"
>Animations</a
>
<a class="collapse-item" href="utilities-other.html">Other</a> <a class="collapse-item" href="utilities-other.html">Other</a>
</div> </div>
</div> </div>
</li> </li>
<!-- Divider --> <!-- Divider -->
<hr class="sidebar-divider"> <hr class="sidebar-divider" />
<!-- Heading --> <!-- Heading -->
<div class="sidebar-heading"> <div class="sidebar-heading">Addons</div>
Addons
</div>
<!-- Nav Item - Pages Collapse Menu --> <!-- Nav Item - Pages Collapse Menu -->
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="#" data-toggle="collapse" data-target="#collapsePages" aria-expanded="true" <a
aria-controls="collapsePages"> class="nav-link"
href="#"
data-toggle="collapse"
data-target="#collapsePages"
aria-expanded="true"
aria-controls="collapsePages"
>
<i class="fas fa-fw fa-folder"></i> <i class="fas fa-fw fa-folder"></i>
<span>Pages</span> <span>Pages</span>
</a> </a>
<div id="collapsePages" class="collapse" aria-labelledby="headingPages" <div
data-parent="#accordionSidebar"> id="collapsePages"
class="collapse"
aria-labelledby="headingPages"
data-parent="#accordionSidebar"
>
<div class="bg-white py-2 collapse-inner rounded"> <div class="bg-white py-2 collapse-inner rounded">
<h6 class="collapse-header">Login Screens:</h6> <h6 class="collapse-header">Login Screens:</h6>
<a class="collapse-item" href="login.html">Login</a> <a class="collapse-item" href="login.html">Login</a>
<a class="collapse-item" href="register.html">Register</a> <a class="collapse-item" href="register.html">Register</a>
<a class="collapse-item" href="forgot-password.html">Forgot Password</a> <a class="collapse-item" href="forgot-password.html"
>Forgot Password</a
>
<div class="collapse-divider"></div> <div class="collapse-divider"></div>
<h6 class="collapse-header">Other Pages:</h6> <h6 class="collapse-header">Other Pages:</h6>
<a class="collapse-item" href="404.html">404 Page</a> <a class="collapse-item" href="404.html">404 Page</a>
@ -104,47 +144,56 @@
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="charts.html"> <a class="nav-link" href="charts.html">
<i class="fas fa-fw fa-chart-area"></i> <i class="fas fa-fw fa-chart-area"></i>
<span>Charts</span></a> <span>Charts</span></a
>
</li> </li>
<!-- Nav Item - Tables --> <!-- Nav Item - Tables -->
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="tables.html"> <a class="nav-link" href="tables.html">
<i class="fas fa-fw fa-table"></i> <i class="fas fa-fw fa-table"></i>
<span>Tables</span></a> <span>Tables</span></a
>
</li> </li>
<!-- Divider --> <!-- Divider -->
<hr class="sidebar-divider d-none d-md-block"> <hr class="sidebar-divider d-none d-md-block" />
<!-- Sidebar Toggler (Sidebar) --> <!-- Sidebar Toggler (Sidebar) -->
<div class="text-center d-none d-md-inline"> <div class="text-center d-none d-md-inline">
<button class="rounded-circle border-0" id="sidebarToggle"></button> <button class="rounded-circle border-0" id="sidebarToggle"></button>
</div> </div>
</ul> </ul>
<!-- End of Sidebar --> <!-- End of Sidebar -->
<!-- Content Wrapper --> <!-- Content Wrapper -->
<div id="content-wrapper" class="d-flex flex-column"> <div id="content-wrapper" class="d-flex flex-column">
<!-- Main Content --> <!-- Main Content -->
<div id="content"> <div id="content">
<!-- Topbar --> <!-- Topbar -->
<nav class="navbar navbar-expand navbar-light bg-white topbar mb-4 static-top shadow"> <nav
class="navbar navbar-expand navbar-light bg-white topbar mb-4 static-top shadow"
>
<!-- Sidebar Toggle (Topbar) --> <!-- Sidebar Toggle (Topbar) -->
<button id="sidebarToggleTop" class="btn btn-link d-md-none rounded-circle mr-3"> <button
id="sidebarToggleTop"
class="btn btn-link d-md-none rounded-circle mr-3"
>
<i class="fa fa-bars"></i> <i class="fa fa-bars"></i>
</button> </button>
<!-- Topbar Search --> <!-- Topbar Search -->
<form <form
class="d-none d-sm-inline-block form-inline mr-auto ml-md-3 my-2 my-md-0 mw-100 navbar-search"> 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"> <div class="input-group">
<input type="text" class="form-control bg-light border-0 small" placeholder="Search for..." <input
aria-label="Search" aria-describedby="basic-addon2"> 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"> <div class="input-group-append">
<button class="btn btn-primary" type="button"> <button class="btn btn-primary" type="button">
<i class="fas fa-search fa-sm"></i> <i class="fas fa-search fa-sm"></i>
@ -155,21 +204,33 @@
<!-- Topbar Navbar --> <!-- Topbar Navbar -->
<ul class="navbar-nav ml-auto"> <ul class="navbar-nav ml-auto">
<!-- Nav Item - Search Dropdown (Visible Only XS) --> <!-- Nav Item - Search Dropdown (Visible Only XS) -->
<li class="nav-item dropdown no-arrow d-sm-none"> <li class="nav-item dropdown no-arrow d-sm-none">
<a class="nav-link dropdown-toggle" href="#" id="searchDropdown" role="button" <a
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> 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> <i class="fas fa-search fa-fw"></i>
</a> </a>
<!-- Dropdown - Messages --> <!-- Dropdown - Messages -->
<div class="dropdown-menu dropdown-menu-right p-3 shadow animated--grow-in" <div
aria-labelledby="searchDropdown"> 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"> <form class="form-inline mr-auto w-100 navbar-search">
<div class="input-group"> <div class="input-group">
<input type="text" class="form-control bg-light border-0 small" <input
placeholder="Search for..." aria-label="Search" type="text"
aria-describedby="basic-addon2"> class="form-control bg-light border-0 small"
placeholder="Search for..."
aria-label="Search"
aria-describedby="basic-addon2"
/>
<div class="input-group-append"> <div class="input-group-append">
<button class="btn btn-primary" type="button"> <button class="btn btn-primary" type="button">
<i class="fas fa-search fa-sm"></i> <i class="fas fa-search fa-sm"></i>
@ -182,18 +243,25 @@
<!-- Nav Item - Alerts --> <!-- Nav Item - Alerts -->
<li class="nav-item dropdown no-arrow mx-1"> <li class="nav-item dropdown no-arrow mx-1">
<a class="nav-link dropdown-toggle" href="#" id="alertsDropdown" role="button" <a
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> 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> <i class="fas fa-bell fa-fw"></i>
<!-- Counter - Alerts --> <!-- Counter - Alerts -->
<span class="badge badge-danger badge-counter">3+</span> <span class="badge badge-danger badge-counter">3+</span>
</a> </a>
<!-- Dropdown - Alerts --> <!-- Dropdown - Alerts -->
<div class="dropdown-list dropdown-menu dropdown-menu-right shadow animated--grow-in" <div
aria-labelledby="alertsDropdown"> class="dropdown-list dropdown-menu dropdown-menu-right shadow animated--grow-in"
<h6 class="dropdown-header"> aria-labelledby="alertsDropdown"
Alerts Center >
</h6> <h6 class="dropdown-header">Alerts Center</h6>
<a class="dropdown-item d-flex align-items-center" href="#"> <a class="dropdown-item d-flex align-items-center" href="#">
<div class="mr-3"> <div class="mr-3">
<div class="icon-circle bg-primary"> <div class="icon-circle bg-primary">
@ -202,7 +270,9 @@
</div> </div>
<div> <div>
<div class="small text-gray-500">December 12, 2019</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> <span class="font-weight-bold"
>A new monthly report is ready to download!</span
>
</div> </div>
</a> </a>
<a class="dropdown-item d-flex align-items-center" href="#"> <a class="dropdown-item d-flex align-items-center" href="#">
@ -224,76 +294,115 @@
</div> </div>
<div> <div>
<div class="small text-gray-500">December 2, 2019</div> <div class="small text-gray-500">December 2, 2019</div>
Spending Alert: We've noticed unusually high spending for your account. Spending Alert: We've noticed unusually high spending for
your account.
</div> </div>
</a> </a>
<a class="dropdown-item text-center small text-gray-500" href="#">Show All Alerts</a> <a
class="dropdown-item text-center small text-gray-500"
href="#"
>Show All Alerts</a
>
</div> </div>
</li> </li>
<!-- Nav Item - Messages --> <!-- Nav Item - Messages -->
<li class="nav-item dropdown no-arrow mx-1"> <li class="nav-item dropdown no-arrow mx-1">
<a class="nav-link dropdown-toggle" href="#" id="messagesDropdown" role="button" <a
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> 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> <i class="fas fa-envelope fa-fw"></i>
<!-- Counter - Messages --> <!-- Counter - Messages -->
<span class="badge badge-danger badge-counter">7</span> <span class="badge badge-danger badge-counter">7</span>
</a> </a>
<!-- Dropdown - Messages --> <!-- Dropdown - Messages -->
<div class="dropdown-list dropdown-menu dropdown-menu-right shadow animated--grow-in" <div
aria-labelledby="messagesDropdown"> class="dropdown-list dropdown-menu dropdown-menu-right shadow animated--grow-in"
<h6 class="dropdown-header"> aria-labelledby="messagesDropdown"
Message Center >
</h6> <h6 class="dropdown-header">Message Center</h6>
<a class="dropdown-item d-flex align-items-center" href="#"> <a class="dropdown-item d-flex align-items-center" href="#">
<div class="dropdown-list-image mr-3"> <div class="dropdown-list-image mr-3">
<img class="rounded-circle" src="/img/undraw_profile_1.svg" <img
alt="..."> class="rounded-circle"
src="/img/undraw_profile_1.svg"
alt="..."
/>
<div class="status-indicator bg-success"></div> <div class="status-indicator bg-success"></div>
</div> </div>
<div class="font-weight-bold"> <div class="font-weight-bold">
<div class="text-truncate">Hi there! I am wondering if you can help me with a <div class="text-truncate">
problem I've been having.</div> 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 class="small text-gray-500">Emily Fowler · 58m</div>
</div> </div>
</a> </a>
<a class="dropdown-item d-flex align-items-center" href="#"> <a class="dropdown-item d-flex align-items-center" href="#">
<div class="dropdown-list-image mr-3"> <div class="dropdown-list-image mr-3">
<img class="rounded-circle" src="/img/undraw_profile_2.svg" <img
alt="..."> class="rounded-circle"
src="/img/undraw_profile_2.svg"
alt="..."
/>
<div class="status-indicator"></div> <div class="status-indicator"></div>
</div> </div>
<div> <div>
<div class="text-truncate">I have the photos that you ordered last month, how <div class="text-truncate">
would you like them sent to you?</div> 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> <div class="small text-gray-500">Jae Chun · 1d</div>
</div> </div>
</a> </a>
<a class="dropdown-item d-flex align-items-center" href="#"> <a class="dropdown-item d-flex align-items-center" href="#">
<div class="dropdown-list-image mr-3"> <div class="dropdown-list-image mr-3">
<img class="rounded-circle" src="/img/undraw_profile_3.svg" <img
alt="..."> class="rounded-circle"
src="/img/undraw_profile_3.svg"
alt="..."
/>
<div class="status-indicator bg-warning"></div> <div class="status-indicator bg-warning"></div>
</div> </div>
<div> <div>
<div class="text-truncate">Last month's report looks great, I am very happy with <div class="text-truncate">
the progress so far, keep up the good work!</div> 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 class="small text-gray-500">Morgan Alvarez · 2d</div>
</div> </div>
</a> </a>
<a class="dropdown-item d-flex align-items-center" href="#"> <a class="dropdown-item d-flex align-items-center" href="#">
<div class="dropdown-list-image mr-3"> <div class="dropdown-list-image mr-3">
<img class="rounded-circle" src="https://source.unsplash.com/Mv9hjnEUHR4/60x60" <img
alt="..."> class="rounded-circle"
src="https://source.unsplash.com/Mv9hjnEUHR4/60x60"
alt="..."
/>
<div class="status-indicator bg-success"></div> <div class="status-indicator bg-success"></div>
</div> </div>
<div> <div>
<div class="text-truncate">Am I a good boy? The reason I ask is because someone <div class="text-truncate">
told me that people say this to all dogs, even if they aren't good...</div> Am I a good boy? The reason I ask is because someone
<div class="small text-gray-500">Chicken the Dog · 2w</div> 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> </div>
</a> </a>
<a class="dropdown-item text-center small text-gray-500" href="#">Read More Messages</a> <a
class="dropdown-item text-center small text-gray-500"
href="#"
>Read More Messages</a
>
</div> </div>
</li> </li>
@ -301,15 +410,28 @@
<!-- Nav Item - User Information --> <!-- Nav Item - User Information -->
<li class="nav-item dropdown no-arrow"> <li class="nav-item dropdown no-arrow">
<a class="nav-link dropdown-toggle" href="#" id="userDropdown" role="button" <a
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> class="nav-link dropdown-toggle"
<span class="mr-2 d-none d-lg-inline text-gray-600 small">Douglas McGee</span> href="#"
<img class="img-profile rounded-circle" id="userDropdown"
src="/img/undraw_profile.svg"> 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> </a>
<!-- Dropdown - User Information --> <!-- Dropdown - User Information -->
<div class="dropdown-menu dropdown-menu-right shadow animated--grow-in" <div
aria-labelledby="userDropdown"> class="dropdown-menu dropdown-menu-right shadow animated--grow-in"
aria-labelledby="userDropdown"
>
<a class="dropdown-item" href="#"> <a class="dropdown-item" href="#">
<i class="fas fa-user fa-sm fa-fw mr-2 text-gray-400"></i> <i class="fas fa-user fa-sm fa-fw mr-2 text-gray-400"></i>
Profile Profile
@ -323,27 +445,29 @@
Activity Log Activity Log
</a> </a>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<a class="dropdown-item" href="#" data-toggle="modal" data-target="#logoutModal"> <a
<i class="fas fa-sign-out-alt fa-sm fa-fw mr-2 text-gray-400"></i> 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 Logout
</a> </a>
</div> </div>
</li> </li>
</ul> </ul>
</nav> </nav>
<!-- End of Topbar --> <!-- End of Topbar -->
<!-- Begin Page Content --> <!-- Begin Page Content -->
<div class="container-fluid"> <div class="container-fluid">
<!-- Page Heading --> <!-- Page Heading -->
<NuxtPage></NuxtPage> <NuxtPage></NuxtPage>
</div> </div>
<!-- /.container-fluid --> <!-- /.container-fluid -->
</div> </div>
<!-- End of Main Content --> <!-- End of Main Content -->
@ -356,10 +480,8 @@
</div> </div>
</footer> </footer>
<!-- End of Footer --> <!-- End of Footer -->
</div> </div>
<!-- End of Content Wrapper --> <!-- End of Content Wrapper -->
</div> </div>
<!-- End of Page Wrapper --> <!-- End of Page Wrapper -->
@ -369,51 +491,81 @@
</a> </a>
<!-- Logout Modal--> <!-- Logout Modal-->
<div class="modal fade" id="logoutModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" <div
aria-hidden="true"> class="modal fade"
id="logoutModal"
tabindex="-1"
role="dialog"
aria-labelledby="exampleModalLabel"
aria-hidden="true"
>
<div class="modal-dialog" role="document"> <div class="modal-dialog" role="document">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Ready to Leave?</h5> <h5 class="modal-title" id="exampleModalLabel">Ready to Leave?</h5>
<button class="close" type="button" data-dismiss="modal" aria-label="Close"> <button
class="close"
type="button"
data-dismiss="modal"
aria-label="Close"
>
<span aria-hidden="true">×</span> <span aria-hidden="true">×</span>
</button> </button>
</div> </div>
<div class="modal-body">Select "Logout" below if you are ready to end your current session.</div> <div class="modal-body">
Select "Logout" below if you are ready to end your current session.
</div>
<div class="modal-footer"> <div class="modal-footer">
<button class="btn btn-secondary" type="button" data-dismiss="modal">Cancel</button> <button
<a class="btn btn-primary" href="login.html">Logout</a> class="btn btn-secondary"
type="button"
data-dismiss="modal"
>
Cancel
</button>
<a class="btn btn-primary" @click="logout">Logout</a>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</template> </template>
<script setup> <script setup>
import { useHead } from '#app' import { useHead } from "#app";
import { useRouter } from "vue-router"; //
const { $api_host } = useNuxtApp(); //API host
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: 'description', content: '' }, name: "viewport",
{ name: 'author', content: '' } content: "width=device-width, initial-scale=1, shrink-to-fit=no",
},
{ name: "description", 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" }, // `styles.css` public/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: '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" },
] ],
}) });
//
async function logout() {
localStorage.removeItem("token_TCM");
router.push("/").then(() => {
window.location.reload();
});
}
</script> </script>

View File

@ -1,5 +1,6 @@
// https://nuxt.com/docs/api/configuration/nuxt-config // https://nuxt.com/docs/api/configuration/nuxt-config
export default defineNuxtConfig({ export default defineNuxtConfig({
compatibilityDate: '2024-11-01', compatibilityDate: '2024-11-01',
devtools: { enabled: true } devtools: { enabled: true },
plugins: ['~/plugins/api-host.js']
}) })

View File

@ -9,7 +9,7 @@
<div class="col-lg-7"> <div class="col-lg-7">
<div class="p-5"> <div class="p-5">
<div class="text-center"> <div class="text-center">
<h1 class="h4 text-gray-900 mb-4">Create an Account!</h1> <h1 class="h4 text-gray-900 mb-4"> !</h1>
</div> </div>
<form class="user"> <form class="user">
<div class="form-group row"> <div class="form-group row">

View File

@ -1,103 +1,164 @@
<template> <template>
<body class="bg-gradient-primary"> <body class="bg-gradient-primary">
<div class="container">
<div class="container">
<!-- Outer Row --> <!-- Outer Row -->
<div class="row justify-content-center"> <div class="row justify-content-center">
<div class="col-xl-10 col-lg-12 col-md-9"> <div class="col-xl-10 col-lg-12 col-md-9">
<div class="card o-hidden border-0 shadow-lg my-5"> <div class="card o-hidden border-0 shadow-lg my-5">
<div class="card-body p-0"> <div class="card-body p-0">
<!-- Nested Row within Card Body --> <!-- Nested Row within Card Body -->
<div class="row"> <div class="row">
<div class="col-lg-6 d-none d-lg-block bg-login-image"></div> <div class="col-lg-6 d-none d-lg-block bg-login-image">
<img style="width: 100%" src="/img/lamiter_logo.JPEG" />
</div>
<div class="col-lg-6"> <div class="col-lg-6">
<div class="p-5"> <div class="p-5">
<div class="text-center"> <div class="text-center">
<h1 class="h4 text-gray-900 mb-4">Welcome Back!</h1> <h1 class="h4 text-gray-900 mb-4">Lamiter 歡迎你!</h1>
</div> </div>
<form class="user"> <form class="user">
<div class="form-group"> <div class="form-group">
<input type="email" class="form-control form-control-user" <input
id="exampleInputEmail" aria-describedby="emailHelp" type="email"
placeholder="Enter Email Address..."> class="form-control form-control-user"
id="exampleInputEmail"
aria-describedby="emailHelp"
v-model="email"
placeholder="輸入帳號或Email..."
/>
</div> </div>
<div class="form-group"> <div class="form-group">
<input type="password" class="form-control form-control-user" <input
id="exampleInputPassword" placeholder="Password"> type="password"
class="form-control form-control-user"
v-model="password"
id="exampleInputPassword"
placeholder="Password"
/>
</div> </div>
<div class="form-group"> <div class="form-group">
<div class="custom-control custom-checkbox small"> <div class="custom-control custom-checkbox small">
<input type="checkbox" class="custom-control-input" id="customCheck"> <input
<label class="custom-control-label" for="customCheck">Remember type="checkbox"
Me</label> class="custom-control-input"
id="customCheck"
/>
<label class="custom-control-label" for="customCheck"
>記住我</label
>
</div> </div>
</div> </div>
<a href="index.html" class="btn btn-primary btn-user btn-block"> <a
Login @click="login_in"
class="btn btn-primary btn-user btn-block"
>
登入
</a> </a>
<hr> <hr />
<!--
<a href="index.html" class="btn btn-google btn-user btn-block"> <a href="index.html" class="btn btn-google btn-user btn-block">
<i class="fab fa-google fa-fw"></i> Login with Google <i class="fab fa-google fa-fw"></i> Login with Google
</a> </a>
<a href="index.html" class="btn btn-facebook btn-user btn-block"> <a href="index.html" class="btn btn-facebook btn-user btn-block">
<i class="fab fa-facebook-f fa-fw"></i> Login with Facebook <i class="fab fa-facebook-f fa-fw"></i> Login with Facebook
</a> </a>-->
</form> </form>
<hr> <hr />
<div class="text-center"> <div class="text-center">
<a class="small" href="forgot-password.html">Forgot Password?</a> <a class="small" href="forgot-password.html">忘記密碼?</a>
</div> </div>
<div class="text-center"> <div class="text-center">
<a class="small" href="/Home_pages/create_user">Create an Account!</a> <a class="small" href="/Home_pages/create_user"
>創建帳號</a
>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div>
</div> </body>
</body>
</template> </template>
<script setup> <script setup>
import { useHead } from '#app' import { useHead } from "#app";
import { ref } from "vue";
import { useRouter } from "vue-router"; //
const { $api_host } = useNuxtApp(); //API host
const router = useRouter(); //
definePageMeta({ definePageMeta({
layout: false, // layout layout: false, // layout
}); });
useHead({ useHead({
title: 'Lamiter', title: "Lamiter",
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: 'description', content: '' }, name: "viewport",
{ name: 'author', content: '' } content: "width=device-width, initial-scale=1, shrink-to-fit=no",
},
{ name: "description", content: "" },
{ name: "author", content: "" },
], ],
link: [ link: [
{ rel: 'stylesheet', href: "https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i" }, // `styles.css` public/css {
{ rel: 'stylesheet', href: '/css/sb-admin-2.min.css' } , rel: "stylesheet",
{ rel: 'stylesheet', href: '/vendor/fontawesome-free/css/all.min.css'} href: "https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i",
}, // `styles.css` public/css
{ rel: "stylesheet", href: "/css/sb-admin-2.min.css" },
{ rel: "stylesheet", href: "/vendor/fontawesome-free/css/all.min.css" },
], ],
script: [ script: [
//{ src: 'https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js', crossorigin: 'anonymous' }, //{ 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" },
] ],
}) });
const email = ref("");
const password = ref("");
//
async function login_in() {
if (!email.value || !password.value) {
alert("請輸入帳號和密碼");
return;
}
if (email.value) {
const obj = { Username: email.value, Password: password.value };
try {
const response = await fetch(`${$api_host}/Users/authenticate`, {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(obj),
});
if (response.ok) {
const data = await response.json();
console.log("成功:", data);
var token_str = data.token;
localStorage.setItem('token_TCM', token_str);
router.push("/");
// data
} else {
console.error("登入失敗");
alert("帳號、密碼 錯誤");
}
} catch (error) {
alert("伺服器有誤");
}
} else {
alert("帳號、密碼 錯誤");
}
}
</script> </script>

View File

@ -1,11 +1,23 @@
<template> <template>
<div> <div>lamiter 的首頁</div>
lamiter 的首頁
</div>
</template> </template>
<script setup> <script setup>
definePageMeta({
layout: 'default' // import { onMounted } from "vue";
}) const { $api_host } = useNuxtApp();
definePageMeta({
layout: "default", //
});
function test() {
console.log($api_host);
}
//
onMounted(() => {
test();
});
</script> </script>

View File

@ -1,35 +1,84 @@
<template> <template></template>
</template>
<script setup> <script setup>
import { useHead } from '#app' import { useHead } from "#app"; //Head
import { ref } from "vue";
import { onMounted } from "vue"; //
import { useRouter } from "vue-router"; //
const { $api_host } = useNuxtApp(); //API host
const router = useRouter(); //
definePageMeta({ definePageMeta({
layout: false, // layout layout: false, // layout
}); });
useHead({ useHead({
title: 'Lamiter', title: "Lamiter",
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: 'description', content: '' }, name: "viewport",
{ name: 'author', content: '' } content: "width=device-width, initial-scale=1, shrink-to-fit=no",
},
{ name: "description", content: "" },
{ name: "author", content: "" },
], ],
link: [ link: [
{ rel: 'stylesheet', href: "https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i" }, // `styles.css` public/css {
{ rel: 'stylesheet', href: '/css/sb-admin-2.min.css' } , rel: "stylesheet",
{ rel: 'stylesheet', href: '/vendor/fontawesome-free/css/all.min.css'} href: "https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i",
}, // `styles.css` public/css
{ rel: "stylesheet", href: "/css/sb-admin-2.min.css" },
{ rel: "stylesheet", href: "/vendor/fontawesome-free/css/all.min.css" },
], ],
script: [ script: [
//{ src: 'https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js', crossorigin: 'anonymous' }, //{ 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" },
] ],
}) });
console.log($api_host);
var token; //
//token
function token_check() {
// JWT
token = localStorage.getItem("token_TCM");
console.log(token);
// token
if (token != null) {
$.ajax({
type: "GET",
url: $api_host + "/Users/token_check_user",
headers: {
Authorization: token,
},
success: function (response) {
// 10 BOSS
if(response.level==10){
router.push("/Lamiter_pages/");
}
// 9
if(response.level==9){
router.push("/Manage_pages/");
}
},
error: function (xhr) {
console.log("false");
},
});
} else {
console.log("pass");
router.push("/Home_pages/");
}
}
//
onMounted(() => {
token_check();
});
</script> </script>

4
plugins/api-host.js Normal file
View File

@ -0,0 +1,4 @@
export default defineNuxtPlugin(nuxtApp => {
// 定義 api_host 為全局變數
nuxtApp.provide('api_host', 'http://localhost:5291');
});