perubahan edit akses menu belum fix

This commit is contained in:
2025-06-04 11:27:37 +07:00
parent 85241f5128
commit d08627c7b1
2 changed files with 89 additions and 134 deletions

View File

@@ -3,16 +3,16 @@ import typeUser from "@/data/dummy/keuangan.type_user.json";
import role_menu from "@/data/dummy/keuangan.role_menu.json"; import role_menu from "@/data/dummy/keuangan.role_menu.json";
import menu from "@/data/dummy/keuangan.menu.json"; import menu from "@/data/dummy/keuangan.menu.json";
import { useRoleMode } from "@/stores/api/roleMenu"; import {useRoleMode} from "@/stores/api/roleMenu";
import { useMenu } from "@/stores/api/menu"; import {useMenu} from "@/stores/api/menu";
import { useTypeUser } from "@/stores/api/typeUser"; import {useTypeUser} from "@/stores/api/typeUser";
const { getMenu } = useMenu(); const {getMenu} = useMenu();
const { getTypeUser } = useTypeUser(); const {getTypeUser} = useTypeUser();
const { roleMenuById } = storeToRefs(useRoleMode()); const {roleMenuById} = storeToRefs(useRoleMode());
const { listMenu } = storeToRefs(useMenu()); const {listMenu} = storeToRefs(useMenu());
const { listTypeUser } = storeToRefs(useTypeUser()); 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>([]);
@@ -22,156 +22,111 @@ const dataDetail = ref(null)
const dataMenu = async () => { const dataMenu = async () => {
await getMenu(); await getMenu();
await getTypeUser(); await getTypeUser();
// console.log("ini roleMenu:",roleMenuById.value.data); // if(){}
// console.log('ini semua tipe:',listTypeUser.value); console.log('iswufgh',roleMenuById.value.data)
return roleMenuById.value.data.map((role_menu: any) => { if(roleMenuById.value.data !=null && roleMenuById.value.data != ""){
menuItem.value = listMenu.value.find( return roleMenuById.value.data.map((role_menu: any) => {
(menu: any) => menu._id == role_menu.menu_id menuItem.value = listMenu.value.find(
); (menu: any) => menu._id == role_menu.menu_id
console.log("ini menunya:", menuItem.value); );
type_user.value = listTypeUser.value.find( type_user.value = listTypeUser.value.find(
(type_user: any) => type_user._id == role_menu.type_user_id (type_user: any) => type_user._id == role_menu.type_user_id
); );
// console.log("ini menunya:",menuItem); return {
return { _id: role_menu._id,
_id: role_menu._id, menu: menuItem?.value.display || "-",
menu: menuItem?.value.display || "-", type_user: type_user?.value.display || "-",
type_user: type_user?.value.display || "-", accessAdd: role_menu.access?.[0]?.add || 0,
accessAdd: role_menu.access?.[0]?.add || 0, accessUpdate: role_menu.access?.[1]?.update || 0,
accessUpdate: role_menu.access?.[1]?.update || 0, accessRead: role_menu.access?.[2]?.read || 0,
accessRead: role_menu.access?.[2]?.read || 0, accessDelete: role_menu.access?.[3]?.delete || 0,
accessDelete: role_menu.access?.[3]?.delete || 0, };
}; });
}); }else{
// console.log(data) checkMenu()
}
}; };
const checkMenu = () => { const checkMenu = () => {
// var arr = listMenu.value.filter((i:any) => !roleMenuById.value.data.includes(i._id)) // https://stackoverflow.com/questions/33577868/filter-array-not-in-another-array
// https://stackoverflow.com/questions/33577868/filter-array-not-in-another-array 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) => !roleMenuById.value.data.map((r:any) => r.menu_id).includes(i._id)) if (arr.length != 0) {
if(arr.length != 0){ data.value.push(...arr.map((i: any, index: bigint) => ({
data.value.push(...arr.map((i:any) => ({menu:i.display,accessAdd:0,accessUpdate:0,accessRead:0,accessDelete:0}))) _id: `${index + 1}`,
} menu: i.display,
// console.log("yang belum ada di role menu",arr) 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:",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) // await getTypeUser(data.value?.form$.data)
}; };
onMounted(async () => { onMounted(async () => {
// console.log(roleMenuById.value.data); // console.log(roleMenuById.value.data);
data.value = await dataMenu(); data.value = await dataMenu();
console.log(checkMenu()) console.log(checkMenu())
console.log(data.value); console.log('aaaaa', data.value);
}); });
// const columns = ref([
// { label: "Nama Menu", key: "menu" }, // Helper function to create checkbox config
// { label: "Tambah", key: "accessAdd" }, const createCheckbox = (namePrefix: string, menu: any,index:bigint) => ({
// { label: "Ubah", key: "accessUpdate" }, name: `${namePrefix}_${menu._id}`,
// { label: "Baca", key: "accessRead" }, type: 'checkbox',
// { label: "Hapus", key: "accessDelete" }, text: 'Ya',
// { label: "Aksi", key: "actions" }, default: namePrefix=='accessAdd'?menu.accessAdd:0,
// ]); 'true-value':"1",
'false-value':"0",
builder: {
type: 'checkbox',
label: 'Checkbox'
}
})
// Helper function to create a menu row
const createMenuRow = (menu: any, index: bigint) => [
[index + 1, 1, 1],
[menu.menu, 1, 1],
[createCheckbox('accessAdd', menu,index), 1, 1],
[createCheckbox('accessUpdate', menu,index), 1, 1],
[createCheckbox('accessRead', menu,index), 1, 1],
[createCheckbox('accessDelete', menu,index), 1, 1]
]
</script> </script>
<template> <template>
<div class="d-flex flex-column gap-1 mx-1 pa-7 pt-0 pb-0"> <div class="d-flex flex-column gap-1 mx-1 pa-7 pt-0 pb-0">
<!-- {{roleMenuById.data}} --> <Vueform ref="dataDetail" validate-on="change|step" method="post" :endpoint="onSubmit">
<!-- {{dataMenu}} --> <GridElement
<!-- {{data}} --> name="gridTable"
<pre>{{ data }}</pre> :widths="['80px', '','90px','90px','90px','90px']"
<!-- <MasterTable :columns="columns" :data="data"/> --> :presets="['grid']"
:cols="6"
:rows="1+data.length"
<Vueform ref="dataDetail" validate-on="change|step" method="post" :endpoint="onSubmit"> :grid="[
<GridElement
name="gridTable"
:presets="['grid-table']"
:cols="5"
:rows="2"
:grid="[
[ [
['No', 1, 1, null, null],
['Nama Menu', 1, 1, null, null], ['Nama Menu', 1, 1, null, null],
['Tambah', 1, 1, null, null], ['Tambah', 1, 1, null, null],
['Ubah', 1, 1, null, null], ['Ubah', 1, 1, null, null],
['Baca', 1, 1, null, null], ['Baca', 1, 1, null, null],
['Hapus', 1, 1, null, null], ['Hapus', 1, 1, null, null],
], ],
[ ...data.map((menu:any) => createMenuRow(menu))
['', 1, 1, null, null],
[
{
name: 'accessAdd',
type: 'checkbox',
text: 'Ya',
builder: {
type: 'checkbox',
label: 'Checkbox',
},
},
1,
1,
null,
null,
],
[
{
name: 'accessUpdate',
type: 'checkbox',
text: 'Ya',
builder: {
type: 'checkbox',
label: 'Checkbox',
},
},
1,
1,
null,
null,
],
[
{
name: 'accessRead',
type: 'checkbox',
text: 'Ya',
builder: {
type: 'checkbox',
label: 'Checkbox',
},
},
1,
1,
null,
null,
],
[
{
name: 'accessDelete',
type: 'checkbox',
text: 'Ya',
builder: {
type: 'checkbox',
label: 'Checkbox',
},
},
1,
1,
null,
null,
],
],
]" ]"
/> />
<ButtonElement <ButtonElement
name="primaryButton" name="primaryButton"
button-label="Simpan" button-label="Simpan"
:submits="true" :submits="true"
align="right" align="right"
/> />
</Vueform> </Vueform>
</div> </div>
</template> </template>

View File

@@ -53,7 +53,7 @@ onMounted(async() => {
<MasterDialogModal v-if="state" :stateValue="state" @stateValue="val => state = val" > <MasterDialogModal v-if="state" :stateValue="state" @stateValue="val => state = val" >
<template v-slot:text> <template v-slot:text>
<!-- <p>coba ini</p> --> <!-- <p>coba ini</p> -->
{{ type }} <!-- {{ type }}-->
<MasterFormTypeUser v-if="type=='create'"/> <MasterFormTypeUser v-if="type=='create'"/>
<MasterFormDetail1 v-if="type=='detail'"/> <MasterFormDetail1 v-if="type=='detail'"/>
</template> </template>