diff --git a/public/img-table-dark.png b/public/img-table-dark.png
new file mode 100644
index 00000000..76bc34c7
Binary files /dev/null and b/public/img-table-dark.png differ
diff --git a/public/img-table-light.png b/public/img-table-light.png
new file mode 100644
index 00000000..19747e12
Binary files /dev/null and b/public/img-table-light.png differ
diff --git a/src/components/01_branch-management/BtnAddComponet.vue b/src/components/01_branch-management/BtnAddComponet.vue
index c4f4e699..1a864b1b 100644
--- a/src/components/01_branch-management/BtnAddComponet.vue
+++ b/src/components/01_branch-management/BtnAddComponet.vue
@@ -8,6 +8,7 @@ defineProps<{
-import { ref } from 'vue';
+import { ref, watch } from 'vue';
import { useRouter } from 'vue-router';
+import { useI18n } from 'vue-i18n';
+
+const { t, locale } = useI18n();
const router = useRouter();
const currentRoute = ref('');
-const labelMenu: {
- label: string;
- icon: string;
- route: string;
-}[] = [
- { label: 'Dashboard', icon: 'img:/file-account-outline.png', route: '' },
+
+const labelMenu = ref<{ label: string; icon: string; route: string }[]>([
{
- label: 'จัดการสาขา',
+ label: 'drawerDashboard',
+ icon: 'img:/file-account-outline.png',
+ route: '',
+ },
+ {
+ label: 'drawerBranchManagement',
icon: 'mdi-sitemap-outline',
route: '/branch-management',
},
{
- label: 'จัดการบุคลากร',
- icon: 'mdi-account-settings-outline',
+ label: 'drawerPersonnelManagement',
+ icon: 'mdi:account-settings-outline',
route: '/personnel-management',
},
- { label: 'จัดการลูกค้า', icon: 'mdi-account-settings-outline', route: '' },
- { label: 'สินค้าและบริการ', icon: 'mdi-package-variant', route: '' },
- { label: 'ใบเสนอราคา', icon: 'mdi-package-variant', route: '' },
- { label: 'รายการคำขอ', icon: 'mdi-package-variant', route: '' },
- { label: 'ใบสั่งงาน', icon: 'mdi-package-variant', route: '' },
- { label: 'ใบรับสินค้า', icon: 'mdi-package-variant', route: '' },
- { label: 'รายการทางบัญชี', icon: 'mdi-account-cash-outline', route: '' },
- { label: 'รายงาน', icon: 'mdi-file-chart-outline', route: '' },
-];
+ {
+ label: 'drawerCustomerManagement',
+ icon: 'mdi-account-settings-outline',
+ route: '',
+ },
+ {
+ label: 'drawerProductsAndServices',
+ icon: 'raphael:package',
+ route: '',
+ },
+ { label: 'drawerQuotation', icon: 'raphael:package', route: '' },
+ { label: 'drawerRequestList', icon: 'raphael:package', route: '' },
+ { label: 'drawerWorkOrder', icon: 'raphael:package', route: '' },
+ { label: 'drawerInvoice', icon: 'raphael:package', route: '' },
+ {
+ label: 'drawerAccountingLedger',
+ icon: 'mdi-account-cash-outline',
+ route: '',
+ },
+ { label: 'drawerReport', icon: 'mdi-file-chart-outline', route: '' },
+]);
const leftDrawerOpen = defineModel('leftDrawerOpen', {
default: false,
@@ -70,9 +86,10 @@ function navigateTo(label: string, destination: string) {
-
+
+
- {{ v.label }}
+ {{ $t(v.label) }}
diff --git a/src/css/app.scss b/src/css/app.scss
index be2b6fc4..e0c5fb80 100644
--- a/src/css/app.scss
+++ b/src/css/app.scss
@@ -4,19 +4,24 @@
@import 'open-props/shadows';
@import 'open-props/zindex';
+:root {
+ --_bg-box-content: var(--blue-5);
+ --_color-box-content-text: var(--_bg-box-content);
+ --_bg-box-content-text: white;
+ --_bg-tooltip-branch: var(--indigo-0);
+ --_bg-tooltip-branch-arrow: var(--_bg-tooltip-branch);
+}
+
html {
--brand-1: #035aa1;
--brand-2: #f50000;
-
--border-color: var(--gray-4);
-
--foreground: black;
--background: var(--gray-1);
--surface-0: var(--background);
--surface-1: white;
--surface-2: var(--gray-1);
--surface-3: var(--gray-2);
-
color: var(--foreground);
background-color: var(--background);
}
@@ -24,9 +29,7 @@ html {
:where(.dark, .body--dark) {
--brand-1: var(--blue-7);
--brand-2: #f50000;
-
--border-color: var(--gray-8);
-
--foreground: white;
--background: var(--gray-10);
--surface-0: var(--background);
diff --git a/src/i18n/en-US/drawer-component.ts b/src/i18n/en-US/drawer-component.ts
new file mode 100644
index 00000000..b511b0ed
--- /dev/null
+++ b/src/i18n/en-US/drawer-component.ts
@@ -0,0 +1,13 @@
+export default {
+ drawerDashboard: 'Dashboard',
+ drawerBranchManagement: 'Branch Management',
+ drawerPersonnelManagement: 'Personnel Management',
+ drawerCustomerManagement: 'Customer Management',
+ drawerProductsAndServices: 'Products and Services',
+ drawerQuotation: 'Quotation',
+ drawerRequestList: 'Request List',
+ drawerWorkOrder: 'Work Order',
+ drawerInvoice: 'Invoice',
+ drawerAccountingLedger: 'Accounting Ledger',
+ drawerReport: 'Report',
+};
diff --git a/src/i18n/en-US/index.ts b/src/i18n/en-US/index.ts
index 64c0e5cf..d7f1fb3c 100644
--- a/src/i18n/en-US/index.ts
+++ b/src/i18n/en-US/index.ts
@@ -1,5 +1,6 @@
// This is just an example,
// so you can safely delete all default props below
+import drawerComponent from './drawer-component';
export default {
ok: 'Confirm',
@@ -9,4 +10,5 @@ export default {
search: 'Search',
download: 'Download',
save: 'Save',
+ ...drawerComponent,
};
diff --git a/src/i18n/th-th/drawer-component.ts b/src/i18n/th-th/drawer-component.ts
new file mode 100644
index 00000000..80cb7c46
--- /dev/null
+++ b/src/i18n/th-th/drawer-component.ts
@@ -0,0 +1,13 @@
+export default {
+ drawerDashboard: 'Dashboard',
+ drawerBranchManagement: 'การจัดการสาขา',
+ drawerPersonnelManagement: 'จัดการบุคลากร',
+ drawerCustomerManagement: 'จัดการลูกค้า',
+ drawerProductsAndServices: 'สินค้าและบริการ',
+ drawerQuotation: 'ใบเสนอราคา',
+ drawerRequestList: 'รายการคําขอ',
+ drawerWorkOrder: 'ใบสั่งงาน',
+ drawerInvoice: 'ใบรับสินค้า',
+ drawerAccountingLedger: 'รายการทางบัญชี',
+ drawerReport: 'รายงาน',
+};
diff --git a/src/i18n/th-th/index.ts b/src/i18n/th-th/index.ts
index 2b72d1bf..75e5d2ea 100644
--- a/src/i18n/th-th/index.ts
+++ b/src/i18n/th-th/index.ts
@@ -1,3 +1,5 @@
+import drawerComponent from './drawer-component';
+
export default {
ok: 'ยืนยัน',
cancel: 'ยกเลิก',
@@ -6,4 +8,5 @@ export default {
search: 'ค้นหา',
download: 'ดาวน์โหลด',
save: 'บันทึก',
+ ...drawerComponent,
};
diff --git a/src/layouts/MainLayout.vue b/src/layouts/MainLayout.vue
index 69a8623c..ed442512 100644
--- a/src/layouts/MainLayout.vue
+++ b/src/layouts/MainLayout.vue
@@ -3,6 +3,7 @@ import { ref } from 'vue';
import { storeToRefs } from 'pinia';
import { useQuasar } from 'quasar';
import { getName, getRole, logout } from 'src/services/keycloak';
+import { useI18n } from 'vue-i18n';
import useLoader from 'stores/loader';
import DrawerComponent from 'components/DrawerComponent.vue';
@@ -24,10 +25,21 @@ const $q = useQuasar();
const loaderStore = useLoader();
const { visible } = storeToRefs(loaderStore);
+const { locale } = useI18n({ useScope: 'global' });
const leftDrawerOpen = ref($q.screen.gt.sm);
const filterUnread = ref(false);
const unread = ref(1);
+
+const currentLanguage = ref('ไทย');
+const language: {
+ value: string;
+ label: string;
+}[] = [
+ { value: 'th-th', label: 'ไทย' },
+ { value: 'en-US', label: 'English' },
+];
+
const notiOpen = ref(false);
const notiMenu = ref([
{
@@ -255,12 +267,42 @@ function doLogout() {
style="color: var(--gray-6)"
@click="$q.dark.toggle()"
/>
+
+
+
+
+
+
+ {{ v.label }}
+
+
+
+
+
-
+
diff --git a/src/pages/01_branch-management/MainPage.vue b/src/pages/01_branch-management/MainPage.vue
index 42ad0978..dc023d8c 100644
--- a/src/pages/01_branch-management/MainPage.vue
+++ b/src/pages/01_branch-management/MainPage.vue
@@ -9,17 +9,46 @@ import AppBox from 'components/app/AppBox.vue';