diff --git a/src/router/index.js b/src/router/index.js index b9cc42f..fad3f7d 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -11,12 +11,12 @@ import Vue from 'vue' // import VueAnalytics from 'vue-analytics' import Router from 'vue-router' import Meta from 'vue-meta' -import { TokenService } from '@/services' +import {TokenService} from '@/services' // Routes import paths from './paths' -function route (options) { +function route(options) { let path = options.path; let view = options.view; let name = options.name; @@ -26,8 +26,8 @@ function route (options) { path, meta, component: (resovle) => import( - `@/views/${view}.vue` - ).then(resovle) + `@/views/${view}.vue` + ).then(resovle) } } @@ -35,51 +35,54 @@ Vue.use(Router) // Create a new router const router = new Router({ - mode: 'history', - routes: paths.map(path => route(path)).concat([ - { path: '*', redirect: '/dashboard' } - ]), - scrollBehavior (to, from, savedPosition) { - if (savedPosition) { - return savedPosition + mode: 'history', + routes: paths.map(path => route(path)).concat([ + {path: '*', redirect: '/dashboard'} + ]), + scrollBehavior(to, from, savedPosition) { + if (savedPosition) { + return savedPosition + } + if (to.hash) { + return {selector: to.hash} + } + return {x: 0, y: 0} } - if (to.hash) { - return { selector: to.hash } - } - return { x: 0, y: 0 } - } }) -Vue.use(Meta) + +Vue.use(Meta, { + refreshOnceOnNavigation: true +}) import {$hasRole} from '@/services/acl/role'; router.beforeEach((to, from, next) => { - const isPublic = to.matched.some(record => record.meta.public); - const onlyWhenLoggedOut = to.matched.some(record => record.meta.onlyWhenLoggedOut); - const loggedIn = !!TokenService.getToken(); - const roles = (to.meta && to.meta.roles) ? to.meta.roles : null; + const isPublic = to.matched.some(record => record.meta.public); + const onlyWhenLoggedOut = to.matched.some(record => record.meta.onlyWhenLoggedOut); + const loggedIn = !!TokenService.getToken(); + const roles = (to.meta && to.meta.roles) ? to.meta.roles : null; if (to.meta.title) { document.title = to.meta.title; } - if (!isPublic && !loggedIn) { - return next({ - path:'/login', - query: {redirect: to.fullPath} // Store the full path to redirect the user to after login - }); - } + if (!isPublic && !loggedIn) { + return next({ + path: '/login', + query: {redirect: to.fullPath} // Store the full path to redirect the user to after login + }); + } - // Do not allow user to visit login page or register page if they are logged in - if (loggedIn && onlyWhenLoggedOut ) { - return next('/') - } + // Do not allow user to visit login page or register page if they are logged in + if (loggedIn && onlyWhenLoggedOut) { + return next('/') + } - // Do not allow user to visit Pages then not access roles - if (roles && !$hasRole(roles)) { - return next('/') - } + // Do not allow user to visit Pages then not access roles + if (roles && !$hasRole(roles)) { + return next('/') + } - next(); + next(); }); // Bootstrap Analytics diff --git a/src/router/paths.js b/src/router/paths.js index 7463583..edac23c 100644 --- a/src/router/paths.js +++ b/src/router/paths.js @@ -4,316 +4,316 @@ * official documentation https://router.vuejs.org/en/ */ export default [ - { - path: '/dashboard', - name: 'Dashboard', - view: 'Dashboard', - meta: { - title:'CSSD Dashboard' - } - }, - { - path: '/my-info', - name: 'MyInfo', - view: 'User/MyInfo', - meta: { - title:'My Inf | CSSD Dashboard' - } - }, - { - path: '/manage-users', - name: 'ManageUsers', - view: 'User/List', - meta: { - roles: 'Admin|Supervisor', - title:'Manage User | CSSD Dashboard' - } - }, - { - path: '/test-type/create', - name: 'AddTestType', - view: 'TestType/AddEdit', - meta: { - title:'Add Test Typ | CSSD Dashboard' - } - }, - { - path: '/test-type/:testType/edit', - name: 'EditTestType', - view: 'TestType/AddEdit', - meta: { - roles: 'Admin', - title:'Edit Test Typ | CSSD Dashboard' - } - }, - { - path: '/test-types', - name: 'ListTestType', - view: 'TestType/List', - meta: { - roles: 'Admin', - title:'List Test Typ | CSSD Dashboard' - } - }, - { - path: '/medical-center', - name: 'ManageMedicalCenter', - view: 'MedicalCenter/List', - meta: { - title:'Manage Medical Center | CSSD Dashboard', - roles: 'Admin' - } - }, - { - path: '/medical-center/create', - name: 'AddMedicalCenter', - view: 'MedicalCenter/AddEdit', - meta: { - title:'Add Medical Center | CSSD Dashboard', - roles: 'Admin' - } - }, - { - path: '/medical-center/:medicalCenter/edit', - name: 'EditMedicalCenter', - view: 'MedicalCenter/AddEdit', - meta: { - title:'Edit Medical Center | CSSD Dashboard', - roles: 'Admin' - } - }, - { - path: '/add-operator/:medicalCenter', - name: 'AddOperator', - view: 'Auth/Register', - meta: { - title:'Add Operator | CSSD Dashboard', - roles: 'Admin' - } - }, - { - path: '/operator-list/:medicalCenter', - name: 'OperatorList', - view: 'MedicalCenter/OperatorList', - meta: { - title:'Operator List | CSSD Dashboard', - roles: 'Admin' - } - }, - { - path: '/login', - name: 'Login', - view: 'Auth/Login', - meta: { - title:'Login | CSSD Dashboard', - public: true, // Allow access to even if not logged in - onlyWhenLoggedOut: true - } - }, - { - path: '/register', - name: 'Register', - view: 'Auth/Register', - meta: { - title:'Register | CSSD Dashboard', - public: true, // Allow access to even if not logged in - onlyWhenLoggedOut: true, - roles: 'Admin' - } - }, - { - path: '/forgot-password', - name: 'ForgotPassword', - view: 'Auth/ForgotPassword', - meta: { - title:'Forgot Password | CSSD Dashboard', - public: true, // Allow access to even if not logged in - onlyWhenLoggedOut: true + { + path: '/dashboard', + name: 'Dashboard', + view: 'Dashboard', + meta: { + title: 'CSSD Dashboard' + } }, - }, - { - path: '/ShowTestResult/:testResult', - name: 'ShowTestResult', - view: 'TestResult/Show', - meta: { - title:'Show Test Result | CSSD Dashboard', - public: true, + { + path: '/my-info', + name: 'MyInfo', + view: 'User/MyInfo', + meta: { + title: 'My Info | CSSD Dashboard' + } + }, + { + path: '/manage-users', + name: 'ManageUsers', + view: 'User/List', + meta: { + roles: 'Admin|Supervisor', + title: 'Manage User | CSSD Dashboard' + } + }, + { + path: '/test-type/create', + name: 'AddTestType', + view: 'TestType/AddEdit', + meta: { + title: 'Add Test Typ | CSSD Dashboard' + } + }, + { + path: '/test-type/:testType/edit', + name: 'EditTestType', + view: 'TestType/AddEdit', + meta: { + roles: 'Admin', + title: 'Edit Test Typ | CSSD Dashboard' + } + }, + { + path: '/test-types', + name: 'ListTestType', + view: 'TestType/List', + meta: { + roles: 'Admin', + title: 'List Test Typ | CSSD Dashboard' + } + }, + { + path: '/medical-center', + name: 'ManageMedicalCenter', + view: 'MedicalCenter/List', + meta: { + title: 'Manage Medical Center | CSSD Dashboard', + roles: 'Admin' + } + }, + { + path: '/medical-center/create', + name: 'AddMedicalCenter', + view: 'MedicalCenter/AddEdit', + meta: { + title: 'Add Medical Center | CSSD Dashboard', + roles: 'Admin' + } + }, + { + path: '/medical-center/:medicalCenter/edit', + name: 'EditMedicalCenter', + view: 'MedicalCenter/AddEdit', + meta: { + title: 'Edit Medical Center | CSSD Dashboard', + roles: 'Admin' + } + }, + { + path: '/add-operator/:medicalCenter', + name: 'AddOperator', + view: 'Auth/Register', + meta: { + title: 'Add Operator | CSSD Dashboard', + roles: 'Admin' + } + }, + { + path: '/operator-list/:medicalCenter', + name: 'OperatorList', + view: 'MedicalCenter/OperatorList', + meta: { + title: 'Operator List | CSSD Dashboard', + roles: 'Admin' + } + }, + { + path: '/login', + name: 'Login', + view: 'Auth/Login', + meta: { + title: 'Login | CSSD Dashboard', + public: true, // Allow access to even if not logged in + onlyWhenLoggedOut: true + } + }, + { + path: '/register', + name: 'Register', + view: 'Auth/Register', + meta: { + title: 'Register | CSSD Dashboard', + public: true, // Allow access to even if not logged in + onlyWhenLoggedOut: true, + roles: 'Admin' + } + }, + { + path: '/forgot-password', + name: 'ForgotPassword', + view: 'Auth/ForgotPassword', + meta: { + title: 'Forgot Password | CSSD Dashboard', + public: true, // Allow access to even if not logged in + onlyWhenLoggedOut: true + }, + }, + { + path: '/ShowTestResult/:testResult', + name: 'ShowTestResult', + view: 'TestResult/Show', + meta: { + title: 'Show Test Result | CSSD Dashboard', + public: true, + }, + }, + { + path: '/result-test', + name: 'AllResultTest', + view: 'TestResult/List', + meta: { + title: 'All Result Test | CSSD Dashboard', + } + }, + { + path: '/add-test-result', + name: 'SubmitTestResult', + view: 'TestResult/AddEdit', + meta: { + title: 'Submit Test Result | CSSD Dashboard', + } + }, + { + path: '/test-result/:testResult/edit', + name: 'EditTestResult', + view: 'TestResult/AddEdit', + meta: { + title: 'Edit Test Result | CSSD Dashboard', + } + }, + { + path: '/test-result/NotVerified', + name: 'NotVerifyTestResult', + view: 'TestResult/List', + meta: { + title: 'Not Verify Test Resul | CSSD Dashboard' + } + }, + { + path: '/statistics', + name: 'Statistics', + view: 'Statistics/Chart', + meta: { + title: 'Statistics | CSSD Dashboard', + } + }, + { + path: '/add-package', + name: 'AddPackage', + view: 'Package/AddEdit', + meta: { + title: 'Add Package | CSSD Dashboard', + } + }, + { + path: '/packages', + name: 'AllPackage', + view: 'Package/List', + meta: { + title: 'All Package | CSSD Dashboard', + } + }, + { + path: '/packages/:package/edit', + name: 'EditPackage', + view: 'Package/AddEdit', + meta: { + title: 'Edit Package | CSSD Dashboard', + } + }, + { + path: '/add-label', + name: 'AddLabel', + view: 'Label/AddEdit', + meta: { + title: 'Add Label | CSSD Dashboard', + } + }, + { + path: '/labels', + name: 'AllLabels', + view: 'Label/List', + meta: { + title: 'All Labels | CSSD Dashboard', + } + }, + { + path: '/label/:label/edit', + name: 'EditLabel', + view: 'Label/AddEdit', + meta: { + title: 'Edit Label | CSSD Dashboard', + } + }, + { + path: '/add-cycle', + name: 'AddCycle', + view: 'Cycle/AddEdit', + meta: { + title: 'Add Cycle | CSSD Dashboard', + } + }, + { + path: '/cycles', + name: 'AllCycle', + view: 'Cycle/List', + meta: { + title: 'All Cycle | CSSD Dashboard', + } + }, + { + path: '/cycle/:cycle/edit', + name: 'EditCycle', + view: 'Cycle/AddEdit', + meta: { + title: 'Edit Cycle | CSSD Dashboard', + } + }, + { + path: '/add-Item', + name: 'AddItem', + view: 'Item/AddEdit', + meta: { + title: 'Add Item | CSSD Dashboard', + } + }, + { + path: '/Items', + name: 'AllItem', + view: 'Item/List', + meta: { + title: 'All Item | CSSD Dashboard', + } + }, + { + path: '/Item/:Item/edit', + name: 'EditItem', + view: 'Item/AddEdit', + meta: { + title: 'Edit Item | CSSD Dashboard', + } + }, + { + path: '/my-Items', + name: 'MyItem', + view: 'MyItem/List', + meta: { + title: 'My Item | CSSD Dashboard', + } + }, + { + path: '/my-Package', + name: 'MyPackage', + view: 'MyPackage/List', + meta: { + title: 'My Package | CSSD Dashboard', + } + }, + { + path: '/tickets', + name: 'Tickets', + view: 'Tickets/List', + meta: { + title: 'Tickets | CSSD Dashboard', + } + }, + /* { + path: '/ShowPackage/:package', + name: 'ShowPackage', + view: 'Package/ShowPackage', + meta:{ + title:'Show Package | CSSD Dashboard', + } + },*/ + { + path: '/Intro', + name: 'Intro', + view: 'Intro/Intro', + meta: { + title: 'Intro | CSSD Dashboard', + } }, - }, - { - path: '/result-test', - name: 'AllResultTest', - view: 'TestResult/List', - meta:{ - title:'All Result Test | CSSD Dashboard', - } - }, - { - path: '/add-test-result', - name: 'SubmitTestResult', - view: 'TestResult/AddEdit', - meta:{ - title:'Submit Test Result | CSSD Dashboard', - } - }, - { - path: '/test-result/:testResult/edit', - name: 'EditTestResult', - view: 'TestResult/AddEdit', - meta:{ - title:'Edit Test Result | CSSD Dashboard', - } - }, - { - path: '/test-result/NotVerified', - name: 'NotVerifyTestResult', - view: 'TestResult/List', - meta:{ - title:'Not Verify Test Resul | CSSD Dashboard' - } - }, - { - path: '/statistics', - name: 'Statistics', - view: 'Statistics/Chart', - meta:{ - title:'Statistics | CSSD Dashboard', - } - }, - { - path: '/add-package', - name: 'AddPackage', - view: 'Package/AddEdit', - meta:{ - title:'Add Package | CSSD Dashboard', - } - }, - { - path: '/packages', - name: 'AllPackage', - view: 'Package/List', - meta:{ - title:'All Package | CSSD Dashboard', - } - }, - { - path: '/packages/:package/edit', - name: 'EditPackage', - view: 'Package/AddEdit', - meta:{ - title:'Edit Package | CSSD Dashboard', - } - }, - { - path: '/add-label', - name: 'AddLabel', - view: 'Label/AddEdit', - meta:{ - title:'Add Label | CSSD Dashboard', - } - }, - { - path: '/labels', - name: 'AllLabels', - view: 'Label/List', - meta:{ - title:'All Labels | CSSD Dashboard', - } - }, - { - path: '/label/:label/edit', - name: 'EditLabel', - view: 'Label/AddEdit', - meta:{ - title:'Edit Label | CSSD Dashboard', - } - }, - { - path: '/add-cycle', - name: 'AddCycle', - view: 'Cycle/AddEdit', - meta:{ - title:'Add Cycle | CSSD Dashboard', - } - }, - { - path: '/cycles', - name: 'AllCycle', - view: 'Cycle/List', - meta:{ - title:'All Cycle | CSSD Dashboard', - } - }, - { - path: '/cycle/:cycle/edit', - name: 'EditCycle', - view: 'Cycle/AddEdit', - meta:{ - title:'Edit Cycle | CSSD Dashboard', - } - }, - { - path: '/add-Item', - name: 'AddItem', - view: 'Item/AddEdit', - meta:{ - title:'Add Item | CSSD Dashboard', - } - }, - { - path: '/Items', - name: 'AllItem', - view: 'Item/List', - meta:{ - title:'All Item | CSSD Dashboard', - } - }, - { - path: '/Item/:Item/edit', - name: 'EditItem', - view: 'Item/AddEdit', - meta:{ - title:'Edit Item | CSSD Dashboard', - } - }, - { - path: '/my-Items', - name: 'MyItem', - view: 'MyItem/List', - meta:{ - title:'My Item | CSSD Dashboard', - } - }, - { - path: '/my-Package', - name: 'MyPackage', - view: 'MyPackage/List', - meta:{ - title:'My Package | CSSD Dashboard', - } - }, - { - path: '/tickets', - name: 'Tickets', - view: 'Tickets/List', - meta:{ - title:'Tickets | CSSD Dashboard', - } - }, -/* { - path: '/ShowPackage/:package', - name: 'ShowPackage', - view: 'Package/ShowPackage', - meta:{ - title:'Show Package | CSSD Dashboard', - } - },*/ - { - path: '/Intro', - name: 'Intro', - view: 'Intro/Intro', - meta:{ - title:'Intro | CSSD Dashboard', - } - }, ] diff --git a/src/views/Auth/ForgotPassword.vue b/src/views/Auth/ForgotPassword.vue index 304916e..22c6051 100644 --- a/src/views/Auth/ForgotPassword.vue +++ b/src/views/Auth/ForgotPassword.vue @@ -1,70 +1,77 @@ diff --git a/src/views/Auth/Login.vue b/src/views/Auth/Login.vue index 6a951db..902acdb 100644 --- a/src/views/Auth/Login.vue +++ b/src/views/Auth/Login.vue @@ -1,96 +1,104 @@ diff --git a/src/views/Label/List.vue b/src/views/Label/List.vue index 023c785..000c8b5 100644 --- a/src/views/Label/List.vue +++ b/src/views/Label/List.vue @@ -145,6 +145,12 @@ import {urls} from "@/config/urls"; import {mapMutations, mapGetters} from "vuex"; export default { + metaInfo() { + return { + title: this.$route.meta.title, + meta: this.$route.meta.metaTags || [] + } + }, data: () => ({ headers: [ {sortable: false, text: "ID", value: "Label ID"}, diff --git a/src/views/MedicalCenter/AddEdit.vue b/src/views/MedicalCenter/AddEdit.vue index 5084ca8..093de14 100644 --- a/src/views/MedicalCenter/AddEdit.vue +++ b/src/views/MedicalCenter/AddEdit.vue @@ -71,6 +71,12 @@ import {ApiService} from "@/services"; import {urls} from "@/config/urls"; export default { + metaInfo() { + return { + title: this.$route.meta.title, + meta: this.$route.meta.metaTags || [] + } + }, data() { return { medicalCenter: { diff --git a/src/views/MedicalCenter/List.vue b/src/views/MedicalCenter/List.vue index 29e1068..b9e478b 100644 --- a/src/views/MedicalCenter/List.vue +++ b/src/views/MedicalCenter/List.vue @@ -1,154 +1,164 @@ diff --git a/src/views/MedicalCenter/OperatorList.vue b/src/views/MedicalCenter/OperatorList.vue index 3390a57..58cd70f 100644 --- a/src/views/MedicalCenter/OperatorList.vue +++ b/src/views/MedicalCenter/OperatorList.vue @@ -1,200 +1,189 @@ \ No newline at end of file diff --git a/src/views/MyItem/List.vue b/src/views/MyItem/List.vue index f235470..c3eb2a1 100644 --- a/src/views/MyItem/List.vue +++ b/src/views/MyItem/List.vue @@ -167,6 +167,12 @@ import {mapMutations, mapGetters, mapActions} from "vuex"; import toast from "@/services/global/toast.service"; export default { + metaInfo() { + return { + title: this.$route.meta.title, + meta: this.$route.meta.metaTags || [] + } + }, data: () => ({ headers: [ // {sortable: true,text: "ID",value: "id"}, diff --git a/src/views/MyPackage/List.vue b/src/views/MyPackage/List.vue index 202733e..d21b743 100644 --- a/src/views/MyPackage/List.vue +++ b/src/views/MyPackage/List.vue @@ -56,10 +56,16 @@ {{ item.status }}