perubahan edit akses menu fix

This commit is contained in:
2025-06-04 12:29:39 +07:00
parent d08627c7b1
commit 35772f38c9
2 changed files with 64 additions and 47 deletions

View File

@@ -16,15 +16,15 @@ const {listTypeUser} = storeToRefs(useTypeUser());
const data = ref<any>([]); const data = ref<any>([]);
const menuItem = ref<any>([]); const menuItem = ref<any>([]);
const type_user = ref<any>([]); const type_user = ref<any>([]);
const dataDetail = ref(null) const dataDetail = ref(null)
const dataMenu = async () => { const dataMenu = async () => {
await getMenu(); await Promise.all([
await getTypeUser(); getMenu(),
// if(){} getTypeUser()
console.log('iswufgh',roleMenuById.value.data) ])
if(roleMenuById.value.data !=null && roleMenuById.value.data != ""){ // filtering role akses menu terhadap tipe user
if (roleMenuById.value.data != null && roleMenuById.value.data != "") {
return roleMenuById.value.data.map((role_menu: any) => { return roleMenuById.value.data.map((role_menu: any) => {
menuItem.value = listMenu.value.find( menuItem.value = listMenu.value.find(
(menu: any) => menu._id == role_menu.menu_id (menu: any) => menu._id == role_menu.menu_id
@@ -42,33 +42,36 @@ const dataMenu = async () => {
accessDelete: role_menu.access?.[3]?.delete || 0, accessDelete: role_menu.access?.[3]?.delete || 0,
}; };
}); });
}else{ } else {
checkMenu() checkMenu()
} }
}; };
const checkMenu = () => { const checkMenu = () => {
// https://stackoverflow.com/questions/33577868/filter-array-not-in-another-array // Filter the listMenu based on roleMenuById
var arr = listMenu.value.filter((i: any) => !roleMenuById.value.data.map((r: any) => r.menu_id).includes(i._id)) var arr = listMenu.value.filter((i: any) =>
if (arr.length != 0) { !roleMenuById.value.data ||
data.value.push(...arr.map((i: any, index: bigint) => ({ !roleMenuById.value.data.map((r: any) => r.menu_id).includes(i._id)
_id: `${index + 1}`, );
menu: i.display, // Check if arr is not empty or roleMenuById.value.data is null
accessAdd: 0, if (arr.length !== 0 || !roleMenuById.value.data) {
accessUpdate: 0, arr.forEach((i: any, index: number) => {
accessRead: 0, data.value.push({
accessDelete: 0 _id: `${index + 1}`,
}))) menu: i.display,
accessAdd: 0,
accessUpdate: 0,
accessRead: 0,
accessDelete: 0
});
});
} }
} }
const onSubmit = async () => { const onSubmit = async () => {
// console.log("ini disimpan:",data.value?.data.typeUser);
console.log("ini disimpan:", dataDetail.value?.form$.data); console.log("ini disimpan:", dataDetail.value?.form$.data);
// await getTypeUser(data.value?.form$.data)
}; };
onMounted(async () => { onMounted(async () => {
// console.log(roleMenuById.value.data);
data.value = await dataMenu(); data.value = await dataMenu();
console.log(checkMenu()) console.log(checkMenu())
console.log('aaaaa', data.value); console.log('aaaaa', data.value);
@@ -76,28 +79,40 @@ onMounted(async () => {
// Helper function to create checkbox config // Helper function to create checkbox config
const createCheckbox = (namePrefix: string, menu: any,index:bigint) => ({ const createCheckbox = (namePrefix: string, menu: any) => {
name: `${namePrefix}_${menu._id}`, const accessMap = {
type: 'checkbox', accessAdd: menu.accessAdd,
text: 'Ya', accessUpdate: menu.accessUpdate,
default: namePrefix=='accessAdd'?menu.accessAdd:0, accessRead: menu.accessRead,
'true-value':"1", accessDelete: menu.accessDelete
'false-value':"0", };
builder: { return {
name: `${namePrefix}_${menu._id}`,
type: 'checkbox', type: 'checkbox',
label: 'Checkbox' text: 'Ya',
} default: accessMap[namePrefix] !== undefined ? accessMap[namePrefix] : 0,
}) 'true-value': "1",
'false-value': "0",
builder: {
type: 'checkbox',
label: 'Checkbox'
}
};
};
// Helper function to create a menu row // Helper function to create a menu row
const createMenuRow = (menu: any, index: bigint) => [ let count = 0
[index + 1, 1, 1], const createMenuRow = (menu: any) => {
[menu.menu, 1, 1], count += 1; // Use the current counter value and then increment it
[createCheckbox('accessAdd', menu,index), 1, 1], return [
[createCheckbox('accessUpdate', menu,index), 1, 1], [`${count}`, 1, 1],
[createCheckbox('accessRead', menu,index), 1, 1], [menu.menu, 1, 1],
[createCheckbox('accessDelete', menu,index), 1, 1] [createCheckbox('accessAdd', menu), 1, 1],
] [createCheckbox('accessUpdate', menu), 1, 1],
[createCheckbox('accessRead', menu), 1, 1],
[createCheckbox('accessDelete', menu), 1, 1]
]
}
</script> </script>
<template> <template>
@@ -121,12 +136,14 @@ const createMenuRow = (menu: any, index: bigint) => [
...data.map((menu:any) => createMenuRow(menu)) ...data.map((menu:any) => createMenuRow(menu))
]" ]"
/> />
<ButtonElement <ButtonElement
name="primaryButton" class="mt-6"
button-label="Simpan" name="primaryButton"
:submits="true" button-label="Simpan"
align="right" :submits="true"
/> align="right"
/>
</Vueform> </Vueform>
</div> </div>
</template> </template>

View File

@@ -31,7 +31,7 @@ onMounted(async() => {
</script> </script>
<!-- ini list --> <!-- ini list -->
<template> <template>
<div class="d-flex pt-6 align-center justify-end"> <div class="d-flex pt-6 align-center ml-3 mb-6">
<v-btn class="mr-16" color="primary" variant="tonal" @click="state= !state; type='create'"><v-icon>mdi-plus</v-icon> Tipe User</v-btn> <v-btn class="mr-16" color="primary" variant="tonal" @click="state= !state; type='create'"><v-icon>mdi-plus</v-icon> Tipe User</v-btn>
</div> </div>
<v-row no-gutters> <v-row no-gutters>