This commit is contained in:
Viet An
2026-04-07 14:04:46 +07:00
parent d17a9e2588
commit bcfda00993
8 changed files with 86 additions and 20 deletions

View File

@@ -76,20 +76,61 @@ const route = useRoute();
const emit = defineEmits(["changetab", "langChanged"]); const emit = defineEmits(["changetab", "langChanged"]);
const { $find, $filter, $findIndex, $store } = useNuxtApp(); const { $find, $filter, $findIndex, $store } = useNuxtApp();
const lang = ref($store.lang); const lang = ref($store.lang);
var menu = $filter($store.common, { category: "topmenu" }); // var menu = $filter($store.common, { category: "topmenu" });
const menu = [
{
id: 1,
category: 'topmenu',
classify: 'left',
code: 'dashboard',
vi: 'Dashboard',
link: null,
detail: {
base: 'Dashboard',
component: 'DashboardMaster',
},
index: 0,
},
{
id: 2,
category: 'topmenu',
classify: 'left',
code: 'orders',
vi: 'Đơn hàng',
link: null,
detail: {
base: 'Orders',
component: 'OrdersMaster',
},
index: 0,
},
{
id: 1,
category: 'topmenu',
classify: 'left',
code: 'inventory',
vi: 'Tồn kho',
link: null,
detail: {
base: 'Inventory',
component: 'InventoryMaster',
},
index: 0,
},
]
if($store.rights.length>0) { if($store.rights.length>0) {
menu = menu.filter(v=>$findIndex($store.rights, {setting: v.id})>=0) menu = menu.filter(v=>$findIndex($store.rights, {setting: v.id})>=0)
} }
if(menu.length===0) { if(menu.length===0) {
$snackbar($store.lang==='vi'? 'Bạn không có quyền truy cập' : 'You do not have permission to access.') $snackbar($store.lang==='vi'? 'Bạn không có quyền truy cập' : 'You do not have permission to access.')
} }
menu.map(v=>{ // menu.map(v=>{
let arr = $filter($store.common, {category: 'submenu', classify: v.code}) // let arr = $filter($store.common, {category: 'submenu', classify: v.code})
if($store.rights.length>0) { // if($store.rights.length>0) {
arr = arr.filter(x=>$findIndex($store.rights, {setting: x.id})>=0) // arr = arr.filter(x=>$findIndex($store.rights, {setting: x.id})>=0)
} // }
v.submenu = arr.length>0? arr : null // v.submenu = arr.length>0? arr : null
}) // })
var leftmenu = $filter(menu, {category: 'topmenu', classify: 'left'}) var leftmenu = $filter(menu, {category: 'topmenu', classify: 'left'})
var currentTab = ref(leftmenu.length>0? leftmenu[0] : undefined) var currentTab = ref(leftmenu.length>0? leftmenu[0] : undefined)
var subTab = ref(); var subTab = ref();

View File

@@ -0,0 +1,5 @@
<script setup>
</script>
<template>
Dashboard
</template>

View File

@@ -0,0 +1,5 @@
<script setup>
</script>
<template>
Inventory
</template>

View File

@@ -0,0 +1,5 @@
<script setup>
</script>
<template>
Orders
</template>

View File

@@ -1,9 +1,12 @@
<template> <template>
<div style="min-height: 100vh" class="has-background-white" data-theme="light" lang="vi" v-if="authorized"> <div
<slot /> style="min-height: 100vh"
class="has-background-white"
data-theme="light"
lang="vi"
>
<slot></slot>
<SnackBar v-if="snackbar" v-bind="snackbar" @close="$store.removeSnackbar()" /> <SnackBar v-if="snackbar" v-bind="snackbar" @close="$store.removeSnackbar()" />
<Modal v-if="showmodal" v-bind="showmodal" @close="showmodal = undefined" /> <Modal v-if="showmodal" v-bind="showmodal" @close="showmodal = undefined" />
</div> </div>
</template> </template>
@@ -39,12 +42,12 @@ async function checkRedirect() {
}, },
true true
); );
if (row === "error" || row === undefined) $requestLogin(); if (row === "error" || row === undefined) return; /* $requestLogin(); */
else { else {
row.token = route.query.token; row.token = route.query.token;
$store.commit("login", row); $store.commit("login", row);
} }
} else if (!$store.login) return $requestLogin(); } else if (!$store.login) return /* $requestLogin(); */
await checkLogin(); await checkLogin();
} }
async function checkLogin() { async function checkLogin() {
@@ -58,9 +61,10 @@ async function checkLogin() {
true true
)); ));
let authtoken = await $getdata("token", { token: $store.login.token }, undefined, true); let authtoken = await $getdata("token", { token: $store.login.token }, undefined, true);
if (authtoken ? authtoken.expiry : true) return $requestLogin(); if (authtoken ? authtoken.expiry : true) return /* $requestLogin(); */
authorized.value = true; authorized.value = true;
} else $requestLogin(); }
// else $requestLogin();
} }
onMounted(() => { onMounted(() => {
checkRedirect() checkRedirect()

View File

@@ -7,9 +7,9 @@ export default defineNuxtPlugin(() => {
const module = "application"; const module = "application";
const mode = "dev"; const mode = "dev";
const paths = [ const paths = [
{ name: "dev", url: "https://dev.api.utopia.com.vn/" }, { name: "dev", url: "https://erpapi.bigdatatech.vn/" },
{ name: "local", url: "http://localhost:8000/" }, { name: "local", url: "http://localhost:8000/" },
{ name: "prod", url: "https://api.utopia.com.vn/" }, { name: "prod", url: "https://erpapi.bigdatatech.vn/" },
]; ];
const path = paths.find((v) => v.name === mode).url; const path = paths.find((v) => v.name === mode).url;
const apis = [ const apis = [

View File

@@ -1,8 +1,8 @@
export default defineNuxtPlugin(async (nuxtApp) => { export default defineNuxtPlugin(async (nuxtApp) => {
const { $getapi, $readyapi } = useNuxtApp() const { $getapi, $readyapi } = useNuxtApp()
let connlist = $readyapi(['moneyunit', 'datatype', 'filterchoice', 'colorchoice', 'textalign', 'placement', 'colorscheme', let connlist = $readyapi(['datatype', 'filterchoice', 'colorchoice', 'textalign', 'placement', 'colorscheme',
'filtertype', 'sorttype', 'tablesetting', 'settingchoice', 'sharechoice', 'menuchoice', 'settingtype', 'settingclass', 'filtertype', 'sorttype', 'tablesetting', 'settingchoice', 'sharechoice', 'menuchoice', 'settingtype', 'settingclass',
'common', 'sex', 'legaltype', 'cart']) 'sex', 'legaltype', 'cart'])
let filter = connlist.filter(v=>!v.ready) let filter = connlist.filter(v=>!v.ready)
if(filter.length>0) await $getapi(filter) if(filter.length>0) await $getapi(filter)
}) })

View File

@@ -1,4 +1,7 @@
import { defineNuxtPlugin } from "#app"; import { defineNuxtPlugin } from "#app";
import Dashboard from '@/components/dashboard/Dashboard.vue';
import Orders from '@/components/orders/Orders.vue';
import Inventory from '@/components/inventory/Inventory.vue';
import Notebox from "~/components/common/Notebox.vue"; import Notebox from "~/components/common/Notebox.vue";
import ProductCountbox from "~/components/common/ProductCountbox.vue"; import ProductCountbox from "~/components/common/ProductCountbox.vue";
import SvgIcon from "~/components/SvgIcon.vue"; import SvgIcon from "~/components/SvgIcon.vue";
@@ -126,6 +129,9 @@ const components = {
DebtCustomer, DebtCustomer,
Due, Due,
Overdue, Overdue,
Dashboard,
Orders,
Inventory
}; };
export default defineNuxtPlugin((nuxtApp) => { export default defineNuxtPlugin((nuxtApp) => {