check permission list เมนูทะเบียนประวัติ

This commit is contained in:
Warunee Tamkoo 2024-08-16 14:02:33 +07:00
parent 51707646e7
commit 6f2af7bb77
3 changed files with 82 additions and 11 deletions

View file

@ -10,7 +10,11 @@ interface DataOption2 {
id: number;
name: string;
}
interface DataOptionSys {
id: string;
name: string;
system: string;
}
interface DataOptionInsignia {
id: string;
name: string;
@ -55,4 +59,5 @@ export type {
InformationOps,
AddressOps,
InsigniaOps,
DataOptionSys,
};

View file

@ -1,6 +1,10 @@
<script setup lang="ts">
import { ref, onMounted } from "vue";
import { checkPermission } from "@/utils/permissions";
import {
checkPermission,
checkPermissionCreate,
checkPermissionList,
} from "@/utils/permissions";
import { useRoute, useRouter } from "vue-router";
import { useQuasar } from "quasar";
import http from "@/plugins/http";
@ -9,7 +13,10 @@ import axios from "axios";
/**
* importType
*/
import type { DataOption } from "@/modules/04_registryPerson/interface/index/Main";
import type {
DataOption,
DataOptionSys,
} from "@/modules/04_registryPerson/interface/index/Main";
import type { ResponseObject } from "@/modules/04_registryPerson/interface/response/Profile";
/**
@ -57,41 +64,49 @@ const profileId = ref<string>(route.params.id.toString());
const empType = ref<string>(pathRegistryEmp(route.name?.toString() ?? ""));
const formDetail = ref<ResponseObject>();
const itemsMenu = ref<DataOption[]>([
const itemsMenu = ref<DataOptionSys[]>([
{
id: "1",
name: "ช่วยราชการ",
system: "SYS_TEMPDUTY",
},
{
id: "2",
name: "ส่งตัวกลับ",
system: "SYS_TEMPDUTY2",
},
{
id: "3",
name: "แต่งตั้ง-เลื่อน-ย้าย",
system: "SYS_PROMOTION_OFFICER",
},
{
id: "4",
name: "ถึงแก่กรรม",
system: "SYS_PASSAWAY",
},
{
id: "5",
name: "ให้ออกจากราชการ",
system: "SYS_DISMISS",
},
{
id: "6",
name: "อื่นๆ",
system: "SYS_PLACEMENT_OTHER",
},
]);
const itemsMenuEmployee = ref<DataOption[]>([
const itemsMenuEmployee = ref<DataOptionSys[]>([
{
id: "1",
name: "ปรับระดับชั้นงาน - ย้าย",
system: "SYS_PROMOTION_EMP",
},
{
id: "2",
name: "ถึงแก่กรรม",
system: "SYS_PASSAWAY",
},
]);
@ -634,7 +649,20 @@ onMounted(async () => {
}}
</div>
<q-space />
<!-- list menu ของขาราชการฯ -->
<q-btn-dropdown
v-if="
empType === '' &&
checkPermissionList([
'SYS_TEMPDUTY',
'SYS_TEMPDUTY2',
'SYS_PROMOTION_OFFICER',
'SYS_PASSAWAY',
'SYS_DISMISS',
'SYS_PLACEMENT_OTHER',
])
"
size="md"
rounded
unelevated
@ -643,12 +671,9 @@ onMounted(async () => {
icon="mdi-home-export-outline"
dropdown-icon="mdi-chevron-down"
>
<q-list
v-if="empType === ''"
v-for="(item, index) in itemsMenu"
:key="index"
>
<q-list v-for="(item, index) in itemsMenu" :key="index">
<q-item
v-if="checkPermissionCreate(item.system)"
clickable
@click="
item.name == 'ช่วยราชการ'
@ -670,8 +695,25 @@ onMounted(async () => {
<q-item-section>{{ item.name }}</q-item-section>
</q-item>
</q-list>
<q-list v-else v-for="(item, index) in itemsMenuEmployee" :key="item.id">
</q-btn-dropdown>
<!-- list menu ของลกจางประจำ -->
<q-btn-dropdown
v-if="
empType === '-employee' &&
checkPermissionList(['SYS_PROMOTION_EMP', 'SYS_PASSAWAY'])
"
size="md"
rounded
unelevated
color="grey-4"
text-color="red"
icon="mdi-home-export-outline"
dropdown-icon="mdi-chevron-down"
>
<q-list v-for="item in itemsMenuEmployee" :key="item.id">
<q-item
v-if="checkPermissionCreate(item.system)"
clickable
@click="
item.name == 'ปรับระดับชั้นงาน - ย้าย'

View file

@ -18,3 +18,27 @@ export function checkPermission(route: any): RoleData | null {
return null;
}
}
export function checkPermissionCreate(sys: string) {
if (storeMenu.permissions && sys) {
return (
storeMenu.permissions.roles.find(
(item) => item.authSysId === sys && item.attrIsCreate
) ?? false
);
} else {
return false;
}
}
export function checkPermissionList(sys: string[]) {
if (storeMenu.permissions && sys) {
return (
storeMenu.permissions.roles.some(
(item) => sys.includes(item.authSysId) && item.attrIsCreate
) ?? false
);
} else {
return false;
}
}