เงินเดือน => permission ผังบัญชีค่าจ้างลูกจ้างประจำ

This commit is contained in:
DESKTOP-1R2VSQH\Lenovo ThinkPad E490 2024-08-09 16:59:57 +07:00
parent 864b67fbe5
commit 38d5697a7c
9 changed files with 323 additions and 252 deletions

View file

@ -22,6 +22,7 @@ const { dialogConfirm, showLoader, hideLoader, messageError, success } =
/** props*/
const modal = defineModel<boolean>("modal", { required: true });
const actionsType = defineModel<string>("actionsType", { default: "" });
const isEdit = defineModel<boolean>("isStatusEdit", { required: true });
const props = defineProps({
data: {
@ -39,6 +40,7 @@ const groupOldOp = ref<DataOptions[]>([]);
const groupOldOpMain = ref<DataOptions[]>([]);
const posLevelOp = ref<any[]>([]);
const posNameListOp = ref<DataListOptions[]>([]);
const isReadonly = ref<boolean>(false);
const formData = reactive<any>({
id: "",
@ -104,10 +106,10 @@ function onSubmit() {
? config.API.salaryFormula()
: config.API.salaryFormulaById(formData.id);
await http[!isEdit.value ? "post" : "put"](url, body)
.then(() => {
success($q, "บันทึกข้อมูลสำเร็จ");
.then(async () => {
await props.getDataMain?.();
closeDialog();
props.getDataMain?.();
await success($q, "บันทึกข้อมูลสำเร็จ");
})
.catch((e) => {
messageError($q, e);
@ -120,7 +122,6 @@ function onSubmit() {
/** ดึงข้อมูล กลุ่มงาน */
function getPosType() {
showLoader();
http
.get(config.API.salaryEmployeePosType())
.then((res) => {
@ -134,9 +135,6 @@ function getPosType() {
})
.catch((e) => {
messageError($q, e);
})
.finally(() => {
hideLoader();
});
}
@ -145,7 +143,6 @@ function getPosName() {
if (formData.posType) {
formData.posName = "";
formData.posLevel = "";
showLoader();
http
.get(config.API.salaryEmployeePositionType(formData.posType.name))
.then((res) => {
@ -162,9 +159,6 @@ function getPosName() {
})
.catch((e) => {
messageError($q, e);
})
.finally(() => {
hideLoader();
});
}
}
@ -238,26 +232,37 @@ function getSalaryGroup() {
/** function fetch ข้อมูลหลักเกณฑ์ */
function getDataEdit() {
http.get(config.API.salaryFormula() + `/${formData.id}`).then(async (res) => {
const data = res.data.result;
formData.posType = posTypeOp.value.find((a: any) => a.id == data.posTypeId);
formData.posName = data.position;
getPosNameEdit();
setTimeout(() => {
getPosLevelEdit();
formData.posLevel = posLevelOp.value.find(
(item: any) => item.id == data.posLevelId
showLoader();
http
.get(config.API.salaryFormula() + `/${formData.id}`)
.then(async (res) => {
const data = res.data.result;
formData.posType = posTypeOp.value.find(
(a: any) => a.id == data.posTypeId
);
formData.reson = data.details;
formData.rateOldMin = data.salaryMin;
formData.groupOld = groupOldOp.value.filter((b: any) =>
data.salaryEmployeeMinIds.includes(b.id)
);
formData.rateMaxOld = data.salary;
formData.groupRateHigh = data.salaryEmployeeId;
formData.rateHighMax = data.salaryMax;
}, 200);
});
formData.posName = data.position;
getPosNameEdit();
setTimeout(() => {
getPosLevelEdit();
formData.posLevel = posLevelOp.value.find(
(item: any) => item.id == data.posLevelId
);
formData.reson = data.details;
formData.rateOldMin = data.salaryMin;
formData.groupOld = groupOldOp.value.filter((b: any) =>
data.salaryEmployeeMinIds.includes(b.id)
);
formData.rateMaxOld = data.salary;
formData.groupRateHigh = data.salaryEmployeeId;
formData.rateHighMax = data.salaryMax;
}, 200);
})
.catch(() => {})
.finally(() => {
setTimeout(() => {
hideLoader();
}, 1500);
});
}
watch(
() => modal.value,
@ -267,8 +272,11 @@ watch(
getSalaryGroup();
if (isEdit.value) {
isReadonly.value = actionsType.value === "view" ? true : false;
formData.id = props.data?.id ? props.data.id : null;
getDataEdit();
} else {
isReadonly.value = false;
}
}
}
@ -328,7 +336,13 @@ const getClass = (val: boolean) => {
<q-card class="col-12" style="width: 80%">
<q-form greedy @submit.prevent @validation-success="onSubmit">
<Header
:tittle="isEdit ? 'แก้ไขหลักเกณฑ์' : 'เพิ่มหลักเกณฑ์'"
:tittle="
isEdit && actionsType === 'view'
? 'รายละเอียด'
: isEdit
? 'แก้ไขหลักเกณฑ์'
: 'เพิ่มหลักเกณฑ์'
"
:close="closeDialog"
/>
<q-separator />
@ -338,7 +352,8 @@ const getClass = (val: boolean) => {
<div class="col-4">
<q-select
ref="posTypeRef"
:class="getClass(true)"
:class="getClass(!isReadonly)"
:readonly="isReadonly"
dense
outlined
v-model="formData.posType"
@ -366,9 +381,9 @@ const getClass = (val: boolean) => {
<div class="col-4">
<q-select
ref="posNameRef"
:class="getClass(true)"
:class="getClass(!isReadonly)"
:readonly="isReadonly || formData.posType"
dense
:readonly="formData.posType"
outlined
v-model="formData.posName"
label="ตำแหน่ง"
@ -394,8 +409,8 @@ const getClass = (val: boolean) => {
</div>
<div class="col-4">
<q-select
:readonly="formData.posName"
:class="getClass(true)"
:class="getClass(!isReadonly)"
:readonly="isReadonly || formData.posName"
ref="posLevelRef"
dense
outlined
@ -419,20 +434,23 @@ const getClass = (val: boolean) => {
</q-select>
</div>
<div class="col-8">
<div class="col-12">
<q-input
:class="getClass(true)"
:class="getClass(!isReadonly)"
:readonly="isReadonly"
dense
outlined
v-model="formData.reson"
label="หมายเหตุ"
type="textarea"
/>
</div>
<div class="col-12 text-bold">ตราคาจาง</div>
<div class="col-4">
<q-input
:class="getClass(true)"
:class="getClass(!isReadonly)"
:readonly="isReadonly"
ref="rateOldMinRef"
dense
outlined
@ -449,7 +467,8 @@ const getClass = (val: boolean) => {
</div>
<div class="col-4">
<q-select
:class="getClass(true)"
:class="getClass(!isReadonly)"
:readonly="isReadonly"
ref="groupOldRef"
dense
outlined
@ -481,7 +500,8 @@ const getClass = (val: boolean) => {
</div>
<div class="col-4">
<q-input
:class="getClass(true)"
:class="getClass(!isReadonly)"
:readonly="isReadonly"
ref="rateMaxOldRef"
dense
outlined
@ -503,7 +523,8 @@ const getClass = (val: boolean) => {
</div>
<div class="col-4">
<q-select
:class="getClass(true)"
:class="getClass(!isReadonly)"
:readonly="isReadonly"
ref="groupRateHighRef"
dense
outlined
@ -533,7 +554,8 @@ const getClass = (val: boolean) => {
</div>
<div class="col-4">
<q-input
:class="getClass(true)"
:class="getClass(!isReadonly)"
:readonly="isReadonly"
ref="rateHighMaxRef"
dense
outlined