เงินเดือน => permission รอบการขึ้นเงินเดือน

This commit is contained in:
DESKTOP-1R2VSQH\Lenovo ThinkPad E490 2024-08-13 10:10:21 +07:00
parent 1333e53c63
commit dcdc8c5d4b
2 changed files with 40 additions and 16 deletions

View file

@ -96,10 +96,18 @@ function onSubmit() {
function inputEdit(val: boolean) { function inputEdit(val: boolean) {
return { return {
"full-width cursor-pointer inputgreen ": val, "full-width cursor-pointer inputgreen ": val,
"full-width cursor-pointer inputgreen": !val, "full-width cursor-pointer ": !val,
}; };
} }
function onUpdatePeriod(val: string) {
if (val === "SPECIAL") {
isActive.value = true;
} else {
isActive.value = false;
}
}
/** callbackFunction ทำการ fetch ข้อมูลไฟล์เมื่อเปิด Dialog*/ /** callbackFunction ทำการ fetch ข้อมูลไฟล์เมื่อเปิด Dialog*/
watch( watch(
() => modal.value, () => modal.value,
@ -137,6 +145,7 @@ watch(
<div class="q-gutter-y-sm"> <div class="q-gutter-y-sm">
<datepicker <datepicker
:readonly="isRead" :readonly="isRead"
:class="inputEdit(!isRead)"
menu-class-name="modalfix" menu-class-name="modalfix"
v-model="year" v-model="year"
class="col-2" class="col-2"
@ -152,9 +161,9 @@ watch(
<template #trigger> <template #trigger>
<q-input <q-input
:readonly="isRead" :readonly="isRead"
:class="inputEdit(!isRead)"
ref="yearRef" ref="yearRef"
dense dense
:class="inputEdit(isReadonly)"
hide-bottom-space hide-bottom-space
outlined outlined
:model-value="year === 0 ? null : Number(year) + 543" :model-value="year === 0 ? null : Number(year) + 543"
@ -176,7 +185,7 @@ watch(
<q-select <q-select
:readonly="isRead" :readonly="isRead"
ref="periodRef" ref="periodRef"
:class="inputEdit(isReadonly)" :class="inputEdit(!isRead)"
v-model="period" v-model="period"
label="รอบการขึ้นเงินเดือน" label="รอบการขึ้นเงินเดือน"
dense dense
@ -189,6 +198,7 @@ watch(
lazy-rules lazy-rules
:rules="[(val) => !!val || `${'กรุณาเลือกรอบการขึ้นเงินเดือน'}`]" :rules="[(val) => !!val || `${'กรุณาเลือกรอบการขึ้นเงินเดือน'}`]"
hide-bottom-space hide-bottom-space
@update:model-value="onUpdatePeriod"
/> />
<datepicker <datepicker
:readonly="isRead" :readonly="isRead"
@ -212,7 +222,7 @@ watch(
ref="effectiveDateRef" ref="effectiveDateRef"
outlined outlined
dense dense
:class="inputEdit(isReadonly)" :class="inputEdit(!isRead)"
:readonly="isRead" :readonly="isRead"
hide-bottom-space hide-bottom-space
:model-value=" :model-value="
@ -246,6 +256,7 @@ watch(
type="checkbox" type="checkbox"
v-model="isActive" v-model="isActive"
:readonly="isRead" :readonly="isRead"
:disabled="period === 'SPECIAL'"
/> />
<span class="control"></span> <span class="control"></span>
</label> </label>

View file

@ -1,6 +1,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { ref, watch, onMounted } from "vue"; import { ref, watch, onMounted } from "vue";
import { useSalaryDataStore } from "@/modules/13_salary/store/SalaryStore"; import { useSalaryDataStore } from "@/modules/13_salary/store/SalaryStore";
import { checkPermission } from "@/utils/permissions";
import { useCounterMixin } from "@/stores/mixin"; import { useCounterMixin } from "@/stores/mixin";
import config from "@/app.config"; import config from "@/app.config";
import http from "@/plugins/http"; import http from "@/plugins/http";
@ -294,11 +295,10 @@ onMounted(async () => {
</template> </template>
</datepicker> </datepicker>
</div> </div>
<div> <div v-if="checkPermission($route)?.attrIsCreate">
<q-btn <q-btn
id="addComplaints" id="addComplaints"
for="addComplaints" for="addComplaints"
size="12px"
flat flat
round round
color="primary" color="primary"
@ -370,19 +370,28 @@ onMounted(async () => {
</q-tr> </q-tr>
</template> </template>
<template v-slot:body="props"> <template v-slot:body="props">
<q-tr :props="props" class="cursor-pointer"> <q-tr :props="props">
<q-td> <q-td auto-width>
<q-btn <q-btn
v-if="
checkPermission($route)?.attrIsGet ||
(checkPermission($route)?.attrIsUpdate &&
props.row.isClose !== true) ||
(checkPermission($route)?.attrIsDelete &&
props.row.revisionId == null) ||
(checkPermission($route)?.attrIsGet &&
checkPermission($route)?.attrIsUpdate)
"
flat flat
dense dense
icon="mdi-dots-vertical" color="secondary"
class="q-pa-none q-ml-xs" icon="mdi-dots-horizontal-circle-outline"
color="grey-13" round
size="12px"
> >
<q-menu> <q-menu>
<q-list dense style="min-width: 200px"> <q-list dense style="min-width: 200px">
<q-item <q-item
v-if="checkPermission($route)?.attrIsGet"
clickable clickable
v-close-popup v-close-popup
@click.stop=" @click.stop="
@ -397,14 +406,14 @@ onMounted(async () => {
color="edit" color="edit"
size="17px" size="17px"
:name=" :name="
props.row.revisionId !== null props.row.revisionId !== null || !checkPermission($route)?.attrIsUpdate
? 'mdi-eye-outline' ? 'mdi-eye-outline'
: 'edit' : 'edit'
" "
/> />
<div class="q-pl-md"> <div class="q-pl-md">
{{ {{
props.row.revisionId !== null props.row.revisionId !== null || !checkPermission($route)?.attrIsUpdate
? "ดูข้อมูล" ? "ดูข้อมูล"
: "แก้ไขข้อมูล" : "แก้ไขข้อมูล"
}} }}
@ -417,7 +426,8 @@ onMounted(async () => {
v-if=" v-if="
props.row.isClose === false && props.row.isClose === false &&
props.row.isActive === true && props.row.isActive === true &&
props.row.revisionId !== null props.row.revisionId !== null &&
checkPermission($route)?.attrIsUpdate
" "
clickable clickable
v-close-popup v-close-popup
@ -435,7 +445,10 @@ onMounted(async () => {
</q-item-section> </q-item-section>
</q-item> </q-item>
<q-item <q-item
v-if="props.row.revisionId == null" v-if="
props.row.revisionId == null &&
checkPermission($route)?.attrIsDelete
"
clickable clickable
v-close-popup v-close-popup
@click.stop="deleteData(props.row.id)" @click.stop="deleteData(props.row.id)"