refactor: employee role check
Some checks failed
Spell Check / Spell Check with Typos (push) Failing after 6s

This commit is contained in:
puriphatt 2025-07-03 13:54:10 +07:00
parent c991e9e03f
commit 2d7b0189ee
3 changed files with 63 additions and 18 deletions

View file

@ -22,6 +22,7 @@ const prop = withDefaults(
inTable?: boolean; inTable?: boolean;
addButton?: boolean; addButton?: boolean;
prefixId?: string; prefixId?: string;
hideAction?: boolean;
}>(), }>(),
{ {
gridView: false, gridView: false,
@ -265,7 +266,7 @@ defineEmits<{
@click.stop="$emit('view', props.row)" @click.stop="$emit('view', props.row)"
/> />
<KebabAction <KebabAction
v-if="!inTable" v-if="!inTable && !hideAction"
:id-name="props.row.firstName" :id-name="props.row.firstName"
:status="props.row.status" :status="props.row.status"
@view="$emit('view', props.row)" @view="$emit('view', props.row)"
@ -280,9 +281,10 @@ defineEmits<{
<template v-slot:item="props"> <template v-slot:item="props">
<div class="col-12 col-md-3 col-sm-6"> <div class="col-12 col-md-3 col-sm-6">
<PersonCard <PersonCard
history
:hide-action="hideAction"
:id="`card-${props.row.firstNameEN}`" :id="`card-${props.row.firstNameEN}`"
:field-selected="fieldSelected" :field-selected="fieldSelected"
history
:prefix-id="props.row.firstNameEN ?? props.rowIndex" :prefix-id="props.row.firstNameEN ?? props.rowIndex"
:data="{ :data="{
code: props.row.code, code: props.row.code,

View file

@ -23,6 +23,7 @@ defineProps<{
history?: boolean; history?: boolean;
prefixId?: string; prefixId?: string;
separateEnter?: boolean; separateEnter?: boolean;
hideAction?: boolean;
}>(); }>();
defineEmits<{ defineEmits<{
@ -76,6 +77,7 @@ defineEmits<{
/> />
<KebabAction <KebabAction
v-if="!hideAction"
:id-name="prefixId" :id-name="prefixId"
:status="disabled ? 'INACTIVE' : 'ACTIVE'" :status="disabled ? 'INACTIVE' : 'ACTIVE'"
@view=" @view="

View file

@ -1639,6 +1639,15 @@ const emptyCreateDialog = ref(false);
</div> </div>
</template> </template>
<template v-slot:action> <template v-slot:action>
<q-btn
icon="mdi-eye-outline"
:id="`btn-eye-${props.row.branch[0].customerName || props.row.branch[0].firstName}`"
size="sm"
dense
round
flat
@click.stop="editCustomerForm(props.row.id)"
/>
<KebabAction <KebabAction
v-if="canAccess('customer', 'edit')" v-if="canAccess('customer', 'edit')"
:status="props.row.status" :status="props.row.status"
@ -1774,6 +1783,7 @@ const emptyCreateDialog = ref(false);
" "
> >
<TableEmpoloyee <TableEmpoloyee
:hide-action="!canAccess('customer', 'edit')"
v-model:page-size="pageSize" v-model:page-size="pageSize"
v-model:current-page="currentPageEmployee" v-model:current-page="currentPageEmployee"
:grid-view="gridView" :grid-view="gridView"
@ -3980,6 +3990,7 @@ const emptyCreateDialog = ref(false);
v-model:on-create-data-list="onCreateImageList" v-model:on-create-data-list="onCreateImageList"
:on-create="employeeFormState.dialogModal" :on-create="employeeFormState.dialogModal"
:hidden-footer="!employeeFormState.isImageEdit" :hidden-footer="!employeeFormState.isImageEdit"
:change-disabled="!canAccess('customer', 'edit')"
@add-image=" @add-image="
async (v) => { async (v) => {
if (!v) return; if (!v) return;
@ -4474,11 +4485,18 @@ const emptyCreateDialog = ref(false);
} }
" "
:title=" :title="
employeeFormState.currentEmployee setPrefixName(
? $i18n.locale === 'eng' {
? `${employeeFormState.currentEmployee.firstNameEN} ${employeeFormState.currentEmployee.lastNameEN}` namePrefix: employeeFormState.currentEmployee.namePrefix,
: `${employeeFormState.currentEmployee.firstName} ${employeeFormState.currentEmployee.lastName}` firstName:
: '-' employeeFormState.currentEmployee.firstName ||
employeeFormState.currentEmployee.firstNameEN,
lastName: employeeFormState.currentEmployee.lastName,
firstNameEN: employeeFormState.currentEmployee.firstNameEN,
lastNameEN: employeeFormState.currentEmployee.lastNameEN,
},
{ locale },
)
" "
:badge-class=" :badge-class="
currentFromDataEmployee.gender === 'male' currentFromDataEmployee.gender === 'male'
@ -4551,6 +4569,7 @@ const emptyCreateDialog = ref(false);
> >
<ProfileBanner <ProfileBanner
:prefix="employeeFormState.currentEmployee.firstName" :prefix="employeeFormState.currentEmployee.firstName"
:readonly="!canAccess('customer', 'edit')"
hideFade hideFade
@update:current-tab=" @update:current-tab="
() => { () => {
@ -4593,7 +4612,9 @@ const emptyCreateDialog = ref(false);
? setPrefixName( ? setPrefixName(
{ {
namePrefix: employeeFormState.currentEmployee.namePrefix, namePrefix: employeeFormState.currentEmployee.namePrefix,
firstName: employeeFormState.currentEmployee.firstName, firstName:
employeeFormState.currentEmployee.firstName ||
employeeFormState.currentEmployee.firstNameEN,
lastName: employeeFormState.currentEmployee.lastName, lastName: employeeFormState.currentEmployee.lastName,
firstNameEN: employeeFormState.currentEmployee.firstNameEN, firstNameEN: employeeFormState.currentEmployee.firstNameEN,
lastNameEN: employeeFormState.currentEmployee.lastNameEN, lastNameEN: employeeFormState.currentEmployee.lastNameEN,
@ -4786,7 +4807,10 @@ const emptyCreateDialog = ref(false);
}" }"
scroll-element="#drawer-employee-form-content" scroll-element="#drawer-employee-form-content"
> >
<template v-slot:btn-drawer-passport> <template
v-if="canAccess('customer', 'edit')"
v-slot:btn-drawer-passport
>
<q-btn <q-btn
id="form-add-passport" id="form-add-passport"
dense dense
@ -4800,7 +4824,10 @@ const emptyCreateDialog = ref(false);
/> />
</template> </template>
<template v-slot:btn-drawer-visa> <template
v-if="canAccess('customer', 'edit')"
v-slot:btn-drawer-visa
>
<q-btn <q-btn
id="form-add-visa" id="form-add-visa"
dense dense
@ -4813,7 +4840,10 @@ const emptyCreateDialog = ref(false);
/> />
</template> </template>
<template v-slot:btn-drawer-employee-checkup> <template
v-if="canAccess('customer', 'edit')"
v-slot:btn-drawer-employee-checkup
>
<q-btn <q-btn
id="form-add-checkup" id="form-add-checkup"
dense dense
@ -4826,7 +4856,10 @@ const emptyCreateDialog = ref(false);
/> />
</template> </template>
<template v-slot:btn-drawer-employee-work-history> <template
v-if="canAccess('customer', 'edit')"
v-slot:btn-drawer-employee-work-history
>
<q-btn <q-btn
id="form-add-work-history" id="form-add-work-history"
dense dense
@ -4854,7 +4887,10 @@ const emptyCreateDialog = ref(false);
<div <div
class="rounded row q-py-sm q-mx-lg q-px-md" class="rounded row q-py-sm q-mx-lg q-px-md"
style="position: absolute; z-index: 999; right: 0; top: 0" style="position: absolute; z-index: 999; right: 0; top: 0"
v-if="currentFromDataEmployee.status !== 'INACTIVE'" v-if="
currentFromDataEmployee.status !== 'INACTIVE' &&
canAccess('customer', 'edit')
"
> >
<div class="surface-1 row rounded"> <div class="surface-1 row rounded">
<UndoButton <UndoButton
@ -5372,7 +5408,7 @@ const emptyCreateDialog = ref(false);
/> />
{{ $t('customerEmployee.form.group.passport') }} {{ $t('customerEmployee.form.group.passport') }}
<AddButton <AddButton
v-if="$q.screen.lt.md" v-if="$q.screen.lt.md && canAccess('customer', 'edit')"
id="btn-add-work" id="btn-add-work"
icon-only icon-only
class="q-ml-sm" class="q-ml-sm"
@ -5456,6 +5492,7 @@ const emptyCreateDialog = ref(false);
<template v-slot:button> <template v-slot:button>
<div <div
v-if="canAccess('customer', 'edit')"
class="surface-1 row rounded" class="surface-1 row rounded"
style="min-height: 35px" style="min-height: 35px"
> >
@ -5589,7 +5626,7 @@ const emptyCreateDialog = ref(false);
/> />
{{ $t('customerEmployee.form.group.visa') }} {{ $t('customerEmployee.form.group.visa') }}
<AddButton <AddButton
v-if="$q.screen.lt.md" v-if="$q.screen.lt.md && canAccess('customer', 'edit')"
id="btn-add-work" id="btn-add-work"
icon-only icon-only
class="q-ml-sm" class="q-ml-sm"
@ -5654,6 +5691,7 @@ const emptyCreateDialog = ref(false);
<template v-slot:button> <template v-slot:button>
<div <div
v-if="canAccess('customer', 'edit')"
class="surface-1 row rounded" class="surface-1 row rounded"
style="min-height: 35px" style="min-height: 35px"
> >
@ -5771,7 +5809,7 @@ const emptyCreateDialog = ref(false);
{{ $t(`customerEmployee.formHealthCheck.title`) }} {{ $t(`customerEmployee.formHealthCheck.title`) }}
<AddButton <AddButton
v-if="$q.screen.lt.md" v-if="$q.screen.lt.md && canAccess('customer', 'edit')"
id="btn-add-work" id="btn-add-work"
icon-only icon-only
class="q-ml-sm" class="q-ml-sm"
@ -5899,7 +5937,7 @@ const emptyCreateDialog = ref(false);
/> />
{{ $t(`customerEmployee.form.group.workHistory`) }} {{ $t(`customerEmployee.form.group.workHistory`) }}
<AddButton <AddButton
v-if="$q.screen.lt.md" v-if="$q.screen.lt.md && canAccess('customer', 'edit')"
id="btn-add-work" id="btn-add-work"
icon-only icon-only
class="q-ml-sm" class="q-ml-sm"
@ -6004,7 +6042,10 @@ const emptyCreateDialog = ref(false);
</template> </template>
<template v-if="employeeFormState.currentTab === 'other'"> <template v-if="employeeFormState.currentTab === 'other'">
<FormEmployeeOther <FormEmployeeOther
:hide-action="currentFromDataEmployee.status === 'INACTIVE'" :hide-action="
currentFromDataEmployee.status === 'INACTIVE' ||
!canAccess('customer', 'edit')
"
v-if="employeeFormState.currentTab === 'other'" v-if="employeeFormState.currentTab === 'other'"
id="drawer-other" id="drawer-other"
prefix-id="drawer-employee" prefix-id="drawer-employee"