perubahan edit akses menu fix
This commit is contained in:
@@ -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>
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user