This commit is contained in:
Viet An
2026-06-08 23:13:00 +07:00
parent c1fa84083f
commit 853f969921
26 changed files with 131 additions and 1410 deletions

View File

@@ -1,14 +1,13 @@
<template>
<nav
class="navbar has-shadow sticky px-3"
style="top: 0"
class="navbar has-shadow sticky top-0 px-3"
role="navigation"
>
<div class="navbar-brand mr-5">
<span class="navbar-item is-gap-1">
<div class="navbar-item is-gap-1">
<div class="size-4 has-background-primary rounded-full"></div>
<span class="fs-16 font-semibold has-text-primary">{{ $dayjs().format("DD/MM") }}</span>
</span>
</div>
<a
class="navbar-item p-0 has-text-primary"
@click="changeTab(leftmenu[0])"
@@ -34,7 +33,7 @@
aria-label="menu"
aria-expanded="false"
data-target="navMenu"
@click="handleClick()"
@click="toggleBurger"
>
<span aria-hidden="true"></span>
<span aria-hidden="true"></span>
@@ -125,7 +124,7 @@ import Avatarbox from "~/components/common/Avatarbox.vue";
import { watch } from "vue";
const router = useRouter();
const route = useRoute();
const emit = defineEmits(["changetab", "langChanged"]);
const emit = defineEmits(["changeTab"]);
const { $find, $filter, $store, $snackbar } = useNuxtApp();
const lang = ref($store.lang);
const menu = $filter($store.common, { category: "topmenu" });
@@ -145,18 +144,19 @@ menu.forEach((topmenu) => {
});
const leftmenu = $filter(menu, { category: "topmenu", classify: "left" });
var currentTab = ref(leftmenu[0]);
var subTab = ref();
var tabConfig = $find(menu, { code: "configuration" });
var avatar = ref();
var isAdmin = ref();
const handleClick = function () {
const currentTab = ref(leftmenu[0]);
const subTab = ref();
const tabConfig = $find(menu, { code: "configuration" });
const avatar = ref();
const isAdmin = ref();
function toggleBurger() {
const target = document.getElementById("burger");
target.classList.toggle("is-active");
const target1 = document.getElementById("navMenu");
target1.classList.toggle("is-active");
};
const closeMenu = function () {
}
function closeMenu() {
if (!document) return;
const target = document.getElementById("burger");
const target1 = document.getElementById("navMenu");
@@ -165,28 +165,27 @@ const closeMenu = function () {
target.classList.remove("is-active");
target1.classList.remove("is-active");
}
};
}
function changeTab(tab, subtab) {
if (tab.submenu && tab.submenu.length > 0 && !subtab && !tab.detail) {
subtab = tab.submenu[0];
}
currentTab.value = tab;
subTab.value = subtab;
emit("changetab", tab, subtab);
emit("changeTab", tab, subtab);
closeMenu();
let query = subtab ? { tab: tab.code, subtab: subtab.code } : { tab: tab.code };
router.push({ query: query });
}
function openProfile() {
let modal = {
$store.commit("showmodal", {
component: "user/Profile",
width: "1100px",
height: "360px",
title: $store.lang === "vi" ? "Thông tin cá nhân" : "User profile",
};
$store.commit("showmodal", modal);
});
}
let found = route.query.tab ? $find(menu, { code: route.query.tab }) : undefined;
const found = route.query.tab && $find(menu, { code: route.query.tab });
if (found || currentTab.value) changeTab(found || currentTab.value);
onMounted(() => {
if (!$store.login) return;
@@ -200,7 +199,7 @@ onMounted(() => {
});
watch(
() => $store.login,
(newVal, oldVal) => {
(newVal) => {
if (!newVal) return;
avatar.value = {
image: null,