update aside

This commit is contained in:
Dede Fuji Abdul
2023-10-18 14:14:16 +07:00
parent 36945917b0
commit a7ead70332
4 changed files with 569 additions and 23 deletions

View File

@@ -11,57 +11,516 @@ import type { MenuItemModel } from '@/utils/interfaces'
import { useRoute } from 'vue-router'
export const useMenuStore = defineStore('menu', () => {
const navigation: MenuItemModel[] = [
// const navigation: MenuItemModel[] = [
// {
// name: 'Gangguan',
// href: '/gangguan',
// icon: LightningSlash,
// children: [
// {
// name: 'Daftar',
// href: '/gangguan/1',
// icon: LightningSlash,
// children: [
// {
// name: 'Daftar Keluhan Dialihkan Ke Posko Lain',
// href: '/gangguan/1/1',
// icon: LightningSlash,
// children: [],
// },
// {
// name: 'Daftar Gangguan Melapor Lebih Dari 1 Kali',
// href: '/gangguan/1/2',
// icon: LightningSlash,
// children: [],
// },
// {
// name: 'Daftar Gangguan Response Time',
// href: '/gangguan/1/3',
// icon: LightningSlash,
// children: [],
// },
// {
// name: 'Daftar Gangguan Recovery Time',
// href: '/gangguan/1/4',
// icon: LightningSlash,
// children: [],
// },
// {
// name: 'Daftar Gangguan Selesai Tanpa ID Pelanggan',
// href: '/gangguan/1/5',
// icon: LightningSlash,
// children: [],
// },
// {
// name: 'Daftar Gangguan Berdasarkan Media',
// href: '/gangguan/1/6',
// icon: LightningSlash,
// children: [],
// },
// {
// name: 'Daftar Gangguan Diselesaikan Mobile APKT',
// href: '/gangguan/1/7',
// icon: LightningSlash,
// children: [],
// },
// ],
// },
// {
// name: 'Rekapitulasi',
// href: '/gangguan/2',
// icon: LightningSlash,
// children: [
// {
// name: 'Rekapitulasi Gangguan All',
// href: '/gangguan/2/1',
// icon: LightningSlash,
// children: [],
// },
// {
// name: 'Rekapitulasi Gangguan Per Jenis Gangguan',
// href: '/gangguan/2/2',
// icon: LightningSlash,
// children: [],
// },
// {
// name: 'Rekapitulasi Gangguan Per Jenis Gangguan SE 004',
// href: '/gangguan/2/3',
// icon: LightningSlash,
// children: [],
// },
// {
// name: 'Rekapitulasi Gangguan Per Posko',
// href: '/gangguan/2/4',
// icon: LightningSlash,
// children: [],
// },
// {
// name: 'Rekapitulasi Gangguan Per Regu',
// href: '/gangguan/2/5',
// icon: LightningSlash,
// children: [],
// },
// {
// name: 'Rekapitulasi Gangguan Per Tanggal',
// href: '/gangguan/2/6',
// icon: LightningSlash,
// children: [],
// },
// {
// name: 'Rekapitulasi Gangguan Berdasarkan Media',
// href: '/gangguan/2/7',
// icon: LightningSlash,
// children: [],
// },
// {
// name: 'Rekapitulasi Gangguan Alih Posko',
// href: '/gangguan/2/8',
// icon: LightningSlash,
// children: [],
// },
// {
// name: 'Rekapitulasi Gangguan Per Status',
// href: '/gangguan/2/9',
// icon: LightningSlash,
// children: [],
// },
// {
// name: 'Rekapitulasi Gangguan Diselesaikan Mobile APKT',
// href: '/gangguan/2/10',
// icon: LightningSlash,
// children: [],
// },
// {
// name: 'Rekapitulasi Rating Per Posko',
// href: '/gangguan/2/11',
// icon: LightningSlash,
// children: [],
// },
// {
// name: 'Rekapitulasi Rating Per Regu',
// href: '/gangguan/2/12',
// icon: LightningSlash,
// children: [],
// },
// {
// name: 'Rekapitulasi Koreksi Transaksi Individual',
// href: '/gangguan/2/13',
// icon: LightningSlash,
// children: [],
// },
// {
// name: 'Rekapitulasi Cleansing Transaksi TM',
// href: '/gangguan/2/14',
// icon: LightningSlash,
// children: [],
// },
// ],
// },
// ],
// },
// {
// name: 'Keluhan',
// href: '/keluhan',
// icon: SmileySad,
// children: [
// {
// name: 'Daftar',
// icon: SmileySad,
// href: '/keluhan/1',
// children: [
// {
// name: 'Daftar Keluhan Dialihkan Ke Unit Lain',
// href: '/keluhan/1/1',
// icon: SmileySad,
// children: [],
// },
// {
// name: 'Daftar Keluhan Pelanggan Lebih Dari 1 Kali',
// href: '/keluhan/1/2',
// icon: SmileySad,
// children: [],
// },
// {
// name: 'Daftar Keluhan Response Time',
// href: '/keluhan/1/3',
// icon: SmileySad,
// children: [],
// },
// {
// name: 'Daftar Keluhan Recovery Time',
// href: '/keluhan/1/4',
// icon: SmileySad,
// children: [],
// },
// {
// name: 'Daftar Keluhan Selesai Tanpa ID Pelanggan',
// href: '/keluhan/1/5',
// icon: SmileySad,
// children: [],
// },
// {
// name: 'Daftar Keluhan Berdasarkan Media',
// href: '/keluhan/1/6',
// icon: SmileySad,
// children: [],
// },
// {
// name: 'Daftar Keluhan Selesai di CC123',
// href: '/keluhan/1/7',
// icon: SmileySad,
// children: [],
// },
// ],
// },
// {
// name: 'Rekapitulasi',
// icon: SmileySad,
// href: '/keluhan/2',
// children: [
// {
// name: 'Rekapitulasi Keluhan All',
// href: '/keluhan/2/1',
// icon: SmileySad,
// children: [],
// },
// {
// name: 'Rekapitulasi Keluhan Per Fungsi Bidang',
// href: '/keluhan/2/2',
// icon: SmileySad,
// children: [],
// },
// {
// name: 'Rekapitulasi Keluhan Per Jenis Keluhan',
// href: '/keluhan/2/3',
// icon: SmileySad,
// children: [],
// },
// {
// name: 'Rekapitulasi Keluhan Per Tanggal',
// href: '/keluhan/2/4',
// icon: SmileySad,
// children: [],
// },
// {
// name: 'Rekapitulasi Keluhan Per Unit',
// href: '/keluhan/2/5',
// icon: SmileySad,
// children: [],
// },
// {
// name: 'Rekapitulasi Keluhan Berdasarkan Media',
// href: '/keluhan/2/6',
// icon: SmileySad,
// children: [],
// },
// ],
// },
// ],
// },
// {
// name: 'Monalisa',
// href: '/monalisa',
// icon: Monitor,
// children: [
// {
// name: 'Gangguan',
// icon: Monitor,
// href: '/monalisa/1',
// children: [
// {
// name: 'Rekapitulasi',
// href: '/monalisa/1/1',
// icon: Monitor,
// children: [
// {
// name: 'Jumlah Kali Gangguan',
// href: '/monalisa/1/1/1',
// icon: Monitor,
// children: [],
// },
// {
// name: 'Recovery Time (RCT) Gangguan',
// href: '/monalisa/1/1/2',
// icon: Monitor,
// children: [],
// },
// {
// name: 'Response Time (RPT) Gangguan',
// href: '/monalisa/1/1/3',
// icon: Monitor,
// children: [],
// },
// {
// name: 'Rekapitulasi Gangguan Per Jenis Gangguan',
// href: '/monalisa/1/1/4',
// icon: Monitor,
// children: [],
// },
// {
// name: 'Rekapitulasi Lapor Ulang Gangguan',
// href: '/monalisa/1/1/5',
// icon: Monitor,
// children: [],
// },
// {
// name: 'Rekapitulasi ENS Gangguan',
// href: '/monalisa/1/1/6',
// icon: Monitor,
// children: [],
// },
// {
// name: 'Rekapitulasi Gangguan Belum Selesai',
// href: '/monalisa/1/1/7',
// icon: Monitor,
// children: [],
// },
// ],
// },
// ],
// },
// {
// name: 'Keluhan',
// icon: Monitor,
// href: '/monalisa/2',
// children: [
// {
// name: 'Rekapitulasi',
// href: '/monalisa/2/1',
// icon: Monitor,
// children: [
// {
// name: 'Jumlah Kali Keluhan',
// href: '/monalisa/2/1/1',
// icon: Monitor,
// children: [],
// },
// {
// name: 'Recovery Time (RCT) Keluhan',
// href: '/monalisa/2/1/2',
// icon: Monitor,
// children: [],
// },
// {
// name: 'Response Time (RPT) Keluhan',
// href: '/monalisa/2/1/3',
// icon: Monitor,
// children: [],
// },
// {
// name: 'Rekapitulasi Gangguan Per Jenis Keluhan',
// href: '/monalisa/2/1/4',
// icon: Monitor,
// children: [],
// },
// {
// name: 'Rekapitulasi Lapor Ulang Keluhan',
// href: '/monalisa/2/1/5',
// icon: Monitor,
// children: [],
// },
// {
// name: 'Rekapitulasi Keluhan Belum Selesai',
// href: '/monalisa/2/1/6',
// icon: Monitor,
// children: [],
// },
// ],
// },
// ],
// },
// {
// name: 'Laporan KPI',
// icon: Monitor,
// href: '/monalisa/3',
// children: [
// {
// name: 'Bulanan',
// icon: Monitor,
// href: '/monalisa/3/1',
// children: [
// {
// name: 'Penurunan Jumlah Komplain',
// icon: Monitor,
// href: '/monalisa/3/1/1',
// children: [],
// },
// {
// name: 'Aging Complaint',
// icon: Monitor,
// href: '/monalisa/3/1/2',
// children: [],
// },
// {
// name: 'Energy Not Sales (ENS)',
// icon: Monitor,
// href: '/monalisa/3/1/3',
// children: [],
// },
// {
// name: 'Kepatuhan dan Akurasi Dalam Pelaporan',
// icon: Monitor,
// href: '/monalisa/3/1/4',
// children: [],
// },
// ],
// },
// {
// name: 'Kumulatif',
// icon: Monitor,
// href: '/monalisa/3/2',
// children: [
// {
// name: 'Penurunan Jumlah Komplain',
// icon: Monitor,
// href: '/monalisa/3/2/1',
// children: [],
// },
// {
// name: 'Aging Complaint',
// icon: Monitor,
// href: '/monalisa/3/2/2',
// children: [],
// },
// {
// name: 'Energy Not Sales (ENS)',
// icon: Monitor,
// href: '/monalisa/3/2/3',
// children: [],
// },
// {
// name: 'Kepatuhan dan Akurasi Dalam Pelaporan',
// icon: Monitor,
// href: '/monalisa/3/2/4',
// children: [],
// }
// ],
// }
// ],
// },
// ],
// },
// {
// name: 'Check In Dan Check Out',
// href: '/check-in-out',
// icon: Swap,
// children: [
// {
// name: 'Laporan Check In /Check Out (CICO)',
// href: '/check-in-out/1',
// icon: Swap,
// children: [
// {
// name: 'Laporan Check In /Check Out (CICO)',
// href: '/check-in-out/1/1',
// icon: Swap,
// children: [],
// },
// ],
// },
// ],
// },
// ]
const navigation = ref<MenuItemModel[]>([
{
name: 'Gangguan',
href: '/gangguan',
icon: LightningSlash,
expanded: false,
children: [
{
name: 'Daftar',
href: '/gangguan/1',
icon: LightningSlash,
expanded: false,
children: [
{
name: 'Daftar Keluhan Dialihkan Ke Posko Lain',
href: '/gangguan/1/1',
icon: LightningSlash,
expanded: false,
children: [],
},
{
name: 'Daftar Gangguan Melapor Lebih Dari 1 Kali',
href: '/gangguan/1/2',
icon: LightningSlash,
expanded: false,
children: [],
},
{
name: 'Daftar Gangguan Response Time',
href: '/gangguan/1/3',
icon: LightningSlash,
expanded: false,
children: [],
},
{
name: 'Daftar Gangguan Recovery Time',
href: '/gangguan/1/4',
icon: LightningSlash,
expanded: false,
children: [],
},
{
name: 'Daftar Gangguan Selesai Tanpa ID Pelanggan',
href: '/gangguan/1/5',
icon: LightningSlash,
expanded: false,
children: [],
},
{
name: 'Daftar Gangguan Berdasarkan Media',
href: '/gangguan/1/6',
icon: LightningSlash,
expanded: false,
children: [],
},
{
name: 'Daftar Gangguan Diselesaikan Mobile APKT',
href: '/gangguan/1/7',
icon: LightningSlash,
expanded: false,
children: [],
},
],
@@ -70,89 +529,104 @@ export const useMenuStore = defineStore('menu', () => {
name: 'Rekapitulasi',
href: '/gangguan/2',
icon: LightningSlash,
expanded: false,
children: [
{
name: 'Rekapitulasi Gangguan All',
href: '/gangguan/2/1',
icon: LightningSlash,
expanded: false,
children: [],
},
{
name: 'Rekapitulasi Gangguan Per Jenis Gangguan',
href: '/gangguan/2/2',
icon: LightningSlash,
expanded: false,
children: [],
},
{
name: 'Rekapitulasi Gangguan Per Jenis Gangguan SE 004',
href: '/gangguan/2/3',
icon: LightningSlash,
expanded: false,
children: [],
},
{
name: 'Rekapitulasi Gangguan Per Posko',
href: '/gangguan/2/4',
icon: LightningSlash,
expanded: false,
children: [],
},
{
name: 'Rekapitulasi Gangguan Per Regu',
href: '/gangguan/2/5',
icon: LightningSlash,
expanded: false,
children: [],
},
{
name: 'Rekapitulasi Gangguan Per Tanggal',
href: '/gangguan/2/6',
icon: LightningSlash,
expanded: false,
children: [],
},
{
name: 'Rekapitulasi Gangguan Berdasarkan Media',
href: '/gangguan/2/7',
icon: LightningSlash,
expanded: false,
children: [],
},
{
name: 'Rekapitulasi Gangguan Alih Posko',
href: '/gangguan/2/8',
icon: LightningSlash,
expanded: false,
children: [],
},
{
name: 'Rekapitulasi Gangguan Per Status',
href: '/gangguan/2/9',
icon: LightningSlash,
expanded: false,
children: [],
},
{
name: 'Rekapitulasi Gangguan Diselesaikan Mobile APKT',
href: '/gangguan/2/10',
icon: LightningSlash,
expanded: false,
children: [],
},
{
name: 'Rekapitulasi Rating Per Posko',
href: '/gangguan/2/11',
icon: LightningSlash,
expanded: false,
children: [],
},
{
name: 'Rekapitulasi Rating Per Regu',
href: '/gangguan/2/12',
icon: LightningSlash,
expanded: false,
children: [],
},
{
name: 'Rekapitulasi Koreksi Transaksi Individual',
href: '/gangguan/2/13',
icon: LightningSlash,
expanded: false,
children: [],
},
{
name: 'Rekapitulasi Cleansing Transaksi TM',
href: '/gangguan/2/14',
icon: LightningSlash,
expanded: false,
children: [],
},
],
@@ -163,52 +637,61 @@ export const useMenuStore = defineStore('menu', () => {
name: 'Keluhan',
href: '/keluhan',
icon: SmileySad,
expanded: false,
children: [
{
name: 'Daftar',
icon: SmileySad,
href: '/keluhan/1',
expanded: false,
children: [
{
name: 'Daftar Keluhan Dialihkan Ke Unit Lain',
href: '/keluhan/1/1',
icon: SmileySad,
expanded: false,
children: [],
},
{
name: 'Daftar Keluhan Pelanggan Lebih Dari 1 Kali',
href: '/keluhan/1/2',
icon: SmileySad,
expanded: false,
children: [],
},
{
name: 'Daftar Keluhan Response Time',
href: '/keluhan/1/3',
icon: SmileySad,
expanded: false,
children: [],
},
{
name: 'Daftar Keluhan Recovery Time',
href: '/keluhan/1/4',
icon: SmileySad,
expanded: false,
children: [],
},
{
name: 'Daftar Keluhan Selesai Tanpa ID Pelanggan',
href: '/keluhan/1/5',
icon: SmileySad,
expanded: false,
children: [],
},
{
name: 'Daftar Keluhan Berdasarkan Media',
href: '/keluhan/1/6',
icon: SmileySad,
expanded: false,
children: [],
},
{
name: 'Daftar Keluhan Selesai di CC123',
href: '/keluhan/1/7',
icon: SmileySad,
expanded: false,
children: [],
},
],
@@ -217,41 +700,48 @@ export const useMenuStore = defineStore('menu', () => {
name: 'Rekapitulasi',
icon: SmileySad,
href: '/keluhan/2',
expanded: false,
children: [
{
name: 'Rekapitulasi Keluhan All',
href: '/keluhan/2/1',
icon: SmileySad,
expanded: false,
children: [],
},
{
name: 'Rekapitulasi Keluhan Per Fungsi Bidang',
href: '/keluhan/2/2',
icon: SmileySad,
expanded: false,
children: [],
},
{
name: 'Rekapitulasi Keluhan Per Jenis Keluhan',
href: '/keluhan/2/3',
icon: SmileySad,
expanded: false,
children: [],
},
{
name: 'Rekapitulasi Keluhan Per Tanggal',
href: '/keluhan/2/4',
icon: SmileySad,
expanded: false,
children: [],
},
{
name: 'Rekapitulasi Keluhan Per Unit',
href: '/keluhan/2/5',
icon: SmileySad,
expanded: false,
children: [],
},
{
name: 'Rekapitulasi Keluhan Berdasarkan Media',
href: '/keluhan/2/6',
icon: SmileySad,
expanded: false,
children: [],
},
],
@@ -262,57 +752,67 @@ export const useMenuStore = defineStore('menu', () => {
name: 'Monalisa',
href: '/monalisa',
icon: Monitor,
expanded: false,
children: [
{
name: 'Gangguan',
icon: Monitor,
href: '/monalisa/1',
expanded: false,
children: [
{
name: 'Rekapitulasi',
href: '/monalisa/1/1',
icon: Monitor,
expanded: false,
children: [
{
name: 'Jumlah Kali Gangguan',
href: '/monalisa/1/1/1',
icon: Monitor,
expanded: false,
children: [],
},
{
name: 'Recovery Time (RCT) Gangguan',
href: '/monalisa/1/1/2',
icon: Monitor,
expanded: false,
children: [],
},
{
name: 'Response Time (RPT) Gangguan',
href: '/monalisa/1/1/3',
icon: Monitor,
expanded: false,
children: [],
},
{
name: 'Rekapitulasi Gangguan Per Jenis Gangguan',
href: '/monalisa/1/1/4',
icon: Monitor,
expanded: false,
children: [],
},
{
name: 'Rekapitulasi Lapor Ulang Gangguan',
href: '/monalisa/1/1/5',
icon: Monitor,
expanded: false,
children: [],
},
{
name: 'Rekapitulasi ENS Gangguan',
href: '/monalisa/1/1/6',
icon: Monitor,
expanded: false,
children: [],
},
{
name: 'Rekapitulasi Gangguan Belum Selesai',
href: '/monalisa/1/1/7',
icon: Monitor,
expanded: false,
children: [],
},
],
@@ -323,46 +823,54 @@ export const useMenuStore = defineStore('menu', () => {
name: 'Keluhan',
icon: Monitor,
href: '/monalisa/2',
expanded: false,
children: [
{
name: 'Rekapitulasi',
href: '/monalisa/2/1',
icon: Monitor,
expanded: false,
children: [
{
name: 'Jumlah Kali Keluhan',
href: '/monalisa/2/1/1',
icon: Monitor,
expanded: false,
children: [],
},
{
name: 'Recovery Time (RCT) Keluhan',
href: '/monalisa/2/1/2',
icon: Monitor,
expanded: false,
children: [],
},
{
name: 'Response Time (RPT) Keluhan',
href: '/monalisa/2/1/3',
icon: Monitor,
expanded: false,
children: [],
},
{
name: 'Rekapitulasi Gangguan Per Jenis Keluhan',
href: '/monalisa/2/1/4',
icon: Monitor,
expanded: false,
children: [],
},
{
name: 'Rekapitulasi Lapor Ulang Keluhan',
href: '/monalisa/2/1/5',
icon: Monitor,
expanded: false,
children: [],
},
{
name: 'Rekapitulasi Keluhan Belum Selesai',
href: '/monalisa/2/1/6',
icon: Monitor,
expanded: false,
children: [],
},
],
@@ -373,34 +881,40 @@ export const useMenuStore = defineStore('menu', () => {
name: 'Laporan KPI',
icon: Monitor,
href: '/monalisa/3',
expanded: false,
children: [
{
name: 'Bulanan',
icon: Monitor,
href: '/monalisa/3/1',
expanded: false,
children: [
{
name: 'Penurunan Jumlah Komplain',
icon: Monitor,
href: '/monalisa/3/1/1',
expanded: false,
children: [],
},
{
name: 'Aging Complaint',
icon: Monitor,
href: '/monalisa/3/1/2',
expanded: false,
children: [],
},
{
name: 'Energy Not Sales (ENS)',
icon: Monitor,
href: '/monalisa/3/1/3',
expanded: false,
children: [],
},
{
name: 'Kepatuhan dan Akurasi Dalam Pelaporan',
icon: Monitor,
href: '/monalisa/3/1/4',
expanded: false,
children: [],
},
],
@@ -409,29 +923,34 @@ export const useMenuStore = defineStore('menu', () => {
name: 'Kumulatif',
icon: Monitor,
href: '/monalisa/3/2',
expanded: false,
children: [
{
name: 'Penurunan Jumlah Komplain',
icon: Monitor,
href: '/monalisa/3/2/1',
expanded: false,
children: [],
},
{
name: 'Aging Complaint',
icon: Monitor,
href: '/monalisa/3/2/2',
expanded: false,
children: [],
},
{
name: 'Energy Not Sales (ENS)',
icon: Monitor,
href: '/monalisa/3/2/3',
expanded: false,
children: [],
},
{
name: 'Kepatuhan dan Akurasi Dalam Pelaporan',
icon: Monitor,
href: '/monalisa/3/2/4',
expanded: false,
children: [],
}
],
@@ -444,32 +963,57 @@ export const useMenuStore = defineStore('menu', () => {
name: 'Check In Dan Check Out',
href: '/check-in-out',
icon: Swap,
expanded: false,
children: [
{
name: 'Laporan Check In /Check Out (CICO)',
href: '/check-in-out/1',
icon: Swap,
expanded: false,
children: [
{
name: 'Laporan Check In /Check Out (CICO)',
href: '/check-in-out/1/1',
icon: Swap,
expanded: false,
children: [],
},
],
},
],
},
]
])
const sidebarOpen = ref(false)
const route = useRoute()
const menuSelected = ref(route.fullPath)
const toggleSidebar = () => (sidebarOpen.value = !sidebarOpen.value)
const toggleExpandedByHref = (href: string, newExpanded: boolean): void => {
const toggleItemExpanded = (items: MenuItemModel[]): void => {
for (const item of items) {
if (item.href === href) {
item.expanded = newExpanded
} else {
if (newExpanded) {
if (!href.includes(item.href)) {
item.expanded = !newExpanded;
}
}
}
if (item.children && item.children.length > 0) {
toggleItemExpanded(item.children)
}
}
}
toggleItemExpanded(navigation.value)
}
return {
navigation,
toggleSidebar,
sidebarOpen,
menuSelected
menuSelected,
toggleExpandedByHref
}
})