แก้ไข รายการลา (user) #106

This commit is contained in:
DESKTOP-1R2VSQH\Lenovo ThinkPad E490 2023-12-14 10:52:31 +07:00
parent b03f1efcdc
commit 6269464231
14 changed files with 389 additions and 348 deletions

View file

@ -128,7 +128,8 @@ const formData = reactive<FremDetail>({
coupleDayStartDateHistory: new Date(), // () coupleDayStartDateHistory: new Date(), // ()
coupleDayEndDateHistory: new Date(), // () coupleDayEndDateHistory: new Date(), // ()
coupleDaySumTotalHistory: "", // () coupleDaySumTotalHistory: "", // ()
step: "", approveStep: "",
dear: "",
}); });
/** form ขอยกเลิก*/ /** form ขอยกเลิก*/
@ -157,22 +158,22 @@ async function fetchDataDetail(id: string) {
.get(config.API.leaveUserId(id), {}) .get(config.API.leaveUserId(id), {})
.then((res) => { .then((res) => {
const data = res.data.result; const data = res.data.result;
titleName.value = data.fullName; titleName.value = data.fullName ?? "-";
formData.id = data.id; formData.id = data.id ?? "-";
formData.leaveTypeName = data.leaveTypeName; formData.leaveTypeName = data.leaveTypeName ?? "-";
formData.leaveTypeId = data.leaveTypeId; formData.leaveTypeId = data.leaveTypeId ?? "-";
formData.fullname = data.fullname; formData.fullname = data.fullName ?? "-";
formData.dateSendLeave = formData.dateSendLeave =
data.dateSendLeave && date2Thai(data.dateSendLeave); data.dateSendLeave && date2Thai(data.dateSendLeave);
formData.status = data.status; formData.status = data.status ?? "-";
formData.leaveDateStart = formData.leaveDateStart =
data.leaveStartDate && date2Thai(data.leaveStartDate); data.leaveStartDate && date2Thai(data.leaveStartDate);
formData.leaveDateEnd = data.leaveEndDate && date2Thai(data.leaveEndDate); formData.leaveDateEnd = data.leaveEndDate && date2Thai(data.leaveEndDate);
formData.leaveCount = data.leaveTotal; formData.leaveCount = data.leaveTotal ?? "-";
formData.leaveWrote = data.leaveWrote; formData.leaveWrote = data.leaveWrote ?? "-";
formData.leaveAddress = data.leaveAddress; formData.leaveAddress = data.leaveAddress ?? "-";
formData.leaveNumber = data.leaveNumber; formData.leaveNumber = data.leaveNumber ?? "-";
formData.leaveDetail = data.leaveDetail; formData.leaveDetail = data.leaveDetail ?? "-";
formData.leaveDocument = data.leaveDocument; formData.leaveDocument = data.leaveDocument;
formData.leaveDraftDocument = data.leaveDraftDocument; formData.leaveDraftDocument = data.leaveDraftDocument;
formData.leaveLastStart = formData.leaveLastStart =
@ -184,50 +185,54 @@ async function fetchDataDetail(id: string) {
data.leavebirthDate && date2Thai(data.leavebirthDate); data.leavebirthDate && date2Thai(data.leavebirthDate);
formData.leavegovernmentDate = formData.leavegovernmentDate =
data.leavegovernmentDate && date2Thai(data.leavegovernmentDate); data.leavegovernmentDate && date2Thai(data.leavegovernmentDate);
formData.leaveSalary = data.leaveSalary; formData.leaveSalary = data.leaveSalary ?? "-";
formData.leaveSalaryText = data.leaveSalaryText; formData.leaveSalaryText = data.leaveSalaryText ?? "-";
formData.wifeDayName = data.wifeDayName; formData.wifeDayName = data.wifeDayName ?? "-";
formData.wifeDayDateBorn = formData.wifeDayDateBorn =
data.wifeDayDateBorn && date2Thai(data.wifeDayDateBorn); data.wifeDayDateBorn && date2Thai(data.wifeDayDateBorn);
formData.restDayOldTotal = data.restDayOldTotal; formData.restDayOldTotal = data.restDayOldTotal ?? "-";
formData.restDayCurrentTotal = data.restDayCurrentTotal; formData.restDayCurrentTotal = data.restDayCurrentTotal ?? "-";
formData.ordainDayStatus = data.ordainDayStatus ? "เคย" : "ไม่เคยบวช"; formData.ordainDayStatus = data.ordainDayStatus ? "เคย" : "ไม่เคยบวช";
formData.ordainDayLocationName = data.ordainDayLocationName; formData.ordainDayLocationName = data.ordainDayLocationName ?? "-";
formData.ordainDayLocationAddress = data.ordainDayLocationAddress; formData.ordainDayLocationAddress = data.ordainDayLocationAddress ?? "-";
formData.ordainDayLocationNumber = data.ordainDayLocationNumber; formData.ordainDayLocationNumber = data.ordainDayLocationNumber ?? "-";
formData.ordainDayOrdination = formData.ordainDayOrdination =
data.ordainDayOrdination && date2Thai(data.ordainDayOrdination); data.ordainDayOrdination && date2Thai(data.ordainDayOrdination);
formData.ordainDayBuddhistLentName = data.ordainDayBuddhistLentName; formData.ordainDayBuddhistLentName =
formData.ordainDayBuddhistLentAddress = data.ordainDayBuddhistLentAddress; data.ordainDayBuddhistLentName ?? "-";
formData.ordainDayBuddhistLentAddress =
data.ordainDayBuddhistLentAddress ?? "-";
formData.hajjDayStatus = data.hajjDayStatus formData.hajjDayStatus = data.hajjDayStatus
? "เคย" ? "เคย"
: "ไม่เคยไปประกอบพิธีฮัจญ์"; : "ไม่เคยไปประกอบพิธีฮัจญ์";
formData.absentDaySummon = data.absentDaySummon; formData.absentDaySummon = data.absentDaySummon ?? "-";
formData.absentDayLocation = data.absentDayLocation; formData.absentDayLocation = data.absentDayLocation ?? "-";
formData.absentDayRegistorDate = formData.absentDayRegistorDate =
data.absentDayRegistorDate && date2Thai(data.absentDayRegistorDate); data.absentDayRegistorDate && date2Thai(data.absentDayRegistorDate);
formData.absentDayGetIn = data.absentDayGetIn; formData.absentDayGetIn = data.absentDayGetIn ?? "-";
formData.absentDayAt = data.absentDayAt; formData.absentDayAt = data.absentDayAt ?? "-";
formData.studyDaySubject = data.studyDaySubject; formData.studyDaySubject = data.studyDaySubject ?? "-";
formData.studyDayDegreeLevel = data.studyDayDegreeLevel; formData.studyDayDegreeLevel = data.studyDayDegreeLevel ?? "-";
formData.studyDayUniversityName = data.studyDayUniversityName; formData.studyDayUniversityName = data.studyDayUniversityName ?? "-";
formData.studyDayTrainingSubject = data.studyDayTrainingSubject; formData.studyDayTrainingSubject =
formData.studyDayTrainingName = data.studyDayTrainingName; data.studyDayTrainingSubject ?? "-" ?? "-";
formData.studyDayCountry = data.studyDayCountry; formData.studyDayTrainingName = data.studyDayTrainingName ?? "-";
formData.studyDayScholarship = data.studyDayScholarship; formData.studyDayCountry = data.studyDayCountry ?? "-";
formData.coupleDayName = data.coupleDayName; formData.studyDayScholarship = data.studyDayScholarship ?? "-";
formData.coupleDayPosition = data.coupleDayPosition; formData.coupleDayName = data.coupleDayName ?? "-";
formData.coupleDayLevel = data.coupleDayLevel; formData.coupleDayPosition = data.coupleDayPosition ?? "-";
formData.coupleDayLevelCountry = data.coupleDayLevelCountry; formData.coupleDayLevel = data.coupleDayLevel ?? "-";
formData.coupleDayCountryHistory = data.coupleDayCountryHistory; formData.coupleDayLevelCountry = data.coupleDayLevelCountry ?? "-";
formData.coupleDayTotalHistory = data.coupleDayTotalHistory; formData.coupleDayCountryHistory = data.coupleDayCountryHistory ?? "-";
formData.coupleDayTotalHistory = data.coupleDayTotalHistory ?? "-";
formData.coupleDayStartDateHistory = formData.coupleDayStartDateHistory =
data.coupleDayStartDateHistory && data.coupleDayStartDateHistory &&
date2Thai(data.coupleDayStartDateHistory); date2Thai(data.coupleDayStartDateHistory);
formData.coupleDayEndDateHistory = formData.coupleDayEndDateHistory =
data.coupleDayEndDateHistory && date2Thai(data.coupleDayEndDateHistory); data.coupleDayEndDateHistory && date2Thai(data.coupleDayEndDateHistory);
formData.coupleDaySumTotalHistory = data.coupleDaySumTotalHistory; formData.coupleDaySumTotalHistory = data.coupleDaySumTotalHistory ?? "-";
formData.step = data.step; formData.approveStep = data.approveStep ?? "-";
formData.dear = data.dear ?? "-";
checkLeaveType(formData.leaveTypeId, formData.leaveTypeName); checkLeaveType(formData.leaveTypeId, formData.leaveTypeName);
}) })
.catch((err) => { .catch((err) => {

View file

@ -61,7 +61,7 @@ console.log(props);
</div> </div>
<div class="row"> <div class="row">
<div class="col text-grey-8">เอกสารแนบ</div> <div class="col text-grey-8">เอกสารแนบ</div>
<div class="col"> <div class="col" v-if="props.data.leaveDocument">
<q-btn <q-btn
:href="props.data.leaveDocument" :href="props.data.leaveDocument"
target="_blank" target="_blank"
@ -73,6 +73,7 @@ console.log(props);
<q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn <q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn
> >
</div> </div>
<div class="col" v-else>-</div>
</div> </div>
</div> </div>
</q-card-section> </q-card-section>

View file

@ -55,7 +55,7 @@ const props = defineProps({
</div> </div>
<div class="row"> <div class="row">
<div class="col text-grey-8">เอกสารแนบ</div> <div class="col text-grey-8">เอกสารแนบ</div>
<div class="col"> <div class="col" v-if="props.data.leaveDocument">
<q-btn <q-btn
:href="props.data.leaveDocument" :href="props.data.leaveDocument"
target="_blank" target="_blank"
@ -67,6 +67,7 @@ const props = defineProps({
<q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn <q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn
> >
</div> </div>
<div class="col" v-else>-</div>
</div> </div>
</div> </div>
</q-card-section> </q-card-section>

View file

@ -48,7 +48,7 @@ const props = defineProps({
</div> </div>
<div class="row"> <div class="row">
<div class="col text-grey-8">เอกสารแนบ</div> <div class="col text-grey-8">เอกสารแนบ</div>
<div class="col"> <div class="col" v-if="props.data.leaveDocument">
<q-btn <q-btn
:href="props.data.leaveDocument" :href="props.data.leaveDocument"
target="_blank" target="_blank"
@ -60,6 +60,7 @@ const props = defineProps({
<q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn <q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn
> >
</div> </div>
<div class="col" v-else>-</div>
</div> </div>
</div> </div>
</q-card-section> </q-card-section>

View file

@ -60,7 +60,7 @@ const props = defineProps({
</div> </div>
<div class="row"> <div class="row">
<div class="col text-grey-8">เอกสารแนบ</div> <div class="col text-grey-8">เอกสารแนบ</div>
<div class="col"> <div class="col" v-if="props.data.leaveDocument">
<q-btn <q-btn
:href="props.data.leaveDocument" :href="props.data.leaveDocument"
target="_blank" target="_blank"
@ -72,6 +72,7 @@ const props = defineProps({
<q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn <q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn
> >
</div> </div>
<div class="col" v-else>-</div>
</div> </div>
</div> </div>
</q-card-section> </q-card-section>

View file

@ -58,7 +58,7 @@ const props = defineProps({
</div> </div>
<div class="row"> <div class="row">
<div class="col text-grey-8">เอกสารแนบ</div> <div class="col text-grey-8">เอกสารแนบ</div>
<div class="col"> <div class="col" v-if="props.data.leaveDocument">
<q-btn <q-btn
:href="props.data.leaveDocument" :href="props.data.leaveDocument"
target="_blank" target="_blank"
@ -70,6 +70,7 @@ const props = defineProps({
<q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn <q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn
> >
</div> </div>
<div class="col" v-else>-</div>
</div> </div>
</div> </div>
</q-card-section> </q-card-section>

View file

@ -79,7 +79,7 @@ const props = defineProps({
</div> </div>
<div class="row"> <div class="row">
<div class="col text-grey-8">เอกสารแนบ</div> <div class="col text-grey-8">เอกสารแนบ</div>
<div class="col"> <div class="col" v-if="props.data.leaveDocument">
<q-btn <q-btn
:href="props.data.leaveDocument" :href="props.data.leaveDocument"
target="_blank" target="_blank"
@ -91,6 +91,7 @@ const props = defineProps({
<q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn <q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn
> >
</div> </div>
<div class="col" v-else>-</div>
</div> </div>
</div> </div>
</q-card-section> </q-card-section>

View file

@ -35,7 +35,7 @@ const props = defineProps({
</div> </div>
<div class="row"> <div class="row">
<div class="col text-grey-8">เอกสารแนบ</div> <div class="col text-grey-8">เอกสารแนบ</div>
<div class="col"> <div class="col" v-if="props.data.leaveDocument">
<q-btn <q-btn
:href="props.data.leaveDocument" :href="props.data.leaveDocument"
target="_blank" target="_blank"
@ -47,6 +47,7 @@ const props = defineProps({
<q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn <q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn
> >
</div> </div>
<div class="col" v-else>-</div>
</div> </div>
</div> </div>
</q-card-section> </q-card-section>

View file

@ -86,7 +86,7 @@ const props = defineProps({
</div> </div>
<div class="row"> <div class="row">
<div class="col text-grey-8">เอกสารแนบ</div> <div class="col text-grey-8">เอกสารแนบ</div>
<div class="col"> <div class="col" v-if="props.data.leaveDocument">
<q-btn <q-btn
:href="props.data.leaveDocument" :href="props.data.leaveDocument"
target="_blank" target="_blank"
@ -98,6 +98,7 @@ const props = defineProps({
<q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn <q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn
> >
</div> </div>
<div class="col" v-else>-</div>
</div> </div>
</div> </div>
</q-card-section> </q-card-section>

View file

@ -82,7 +82,7 @@ const props = defineProps({
</div> </div>
<div class="row"> <div class="row">
<div class="col text-grey-8">เอกสารแนบ</div> <div class="col text-grey-8">เอกสารแนบ</div>
<div class="col"> <div class="col" v-if="props.data.leaveDocument">
<q-btn <q-btn
:href="props.data.leaveDocument" :href="props.data.leaveDocument"
target="_blank" target="_blank"
@ -94,6 +94,7 @@ const props = defineProps({
<q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn <q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn
> >
</div> </div>
<div class="col" v-else>-</div>
</div> </div>
</div> </div>
</q-card-section> </q-card-section>

View file

@ -73,7 +73,7 @@ const props = defineProps({
</div> </div>
<div class="row"> <div class="row">
<div class="col text-grey-8">เอกสารแนบ</div> <div class="col text-grey-8">เอกสารแนบ</div>
<div class="col"> <div class="col" v-if="props.data.leaveDocument">
<q-btn <q-btn
:href="props.data.leaveDocument" :href="props.data.leaveDocument"
target="_blank" target="_blank"
@ -85,6 +85,7 @@ const props = defineProps({
<q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn <q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn
> >
</div> </div>
<div class="col" v-else>-</div>
</div> </div>
</div> </div>
</q-card-section> </q-card-section>

View file

@ -35,7 +35,7 @@ const props = defineProps({
</div> </div>
<div class="row"> <div class="row">
<div class="col text-grey-8">เอกสารแนบ</div> <div class="col text-grey-8">เอกสารแนบ</div>
<div class="col"> <div class="col" v-if="props.data.leaveDocument">
<q-btn <q-btn
:href="props.data.leaveDocument" :href="props.data.leaveDocument"
target="_blank" target="_blank"
@ -47,6 +47,7 @@ const props = defineProps({
<q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn <q-tooltip>ดาวนโหลดไฟล</q-tooltip></q-btn
> >
</div> </div>
<div class="col" v-else>-</div>
</div> </div>
</div> </div>
</q-card-section> </q-card-section>

View file

@ -75,7 +75,8 @@ interface FremDetail {
coupleDayStartDateHistory: Date; //ประวัติ ตั้งแต่วันที่ (ลาติดตามคู่สมรส) coupleDayStartDateHistory: Date; //ประวัติ ตั้งแต่วันที่ (ลาติดตามคู่สมรส)
coupleDayEndDateHistory: Date; //ประวัติ ถึงวันที่ (ลาติดตามคู่สมรส) coupleDayEndDateHistory: Date; //ประวัติ ถึงวันที่ (ลาติดตามคู่สมรส)
coupleDaySumTotalHistory: string; //ประวัติ ในกรณีลาติดต่อกับครั้งก่อน รวมทั้งนี้ด้วย เป็นเวลา กี่ปี กี่เดือน กี่วัน (ลาติดตามคู่สมรส) coupleDaySumTotalHistory: string; //ประวัติ ในกรณีลาติดต่อกับครั้งก่อน รวมทั้งนี้ด้วย เป็นเวลา กี่ปี กี่เดือน กี่วัน (ลาติดตามคู่สมรส)
step: string; approveStep: string;
dear: string;
} }
interface FormDelete { interface FormDelete {

View file

@ -1,317 +1,341 @@
import { defineStore } from "pinia" import { defineStore } from "pinia";
import { ref } from "vue" import { ref } from "vue";
import { useQuasar } from "quasar" import { useQuasar } from "quasar";
import type { QTableProps } from "quasar" import type { QTableProps } from "quasar";
import type { OptionData, TypeLeave } from "@/modules/05_leave/interface/index/main" import type {
import type { ListLeave, ListLeaveTable } from "@/modules/05_leave/interface/response/leave" OptionData,
import http from "@/plugins/http" TypeLeave,
import config from "@/app.config" } from "@/modules/05_leave/interface/index/main";
import type {
ListLeave,
ListLeaveTable,
} from "@/modules/05_leave/interface/response/leave";
import http from "@/plugins/http";
import config from "@/app.config";
import { useCounterMixin } from "@/stores/mixin" import { useCounterMixin } from "@/stores/mixin";
const mixin = useCounterMixin() const mixin = useCounterMixin();
const { date2Thai, messageError } = mixin const { date2Thai, messageError } = mixin;
const $q = useQuasar() const $q = useQuasar();
export const useLeaveStore = defineStore("Leave", () => { export const useLeaveStore = defineStore("Leave", () => {
const tabValue = ref<string>("calendar") const tabValue = ref<string>("calendar");
const typeLeave = ref<string | undefined>("") const typeLeave = ref<string | undefined>("");
const LeaveType = ref<string | null>("0") const LeaveType = ref<string | null>("0");
const LeaveStatus = ref<string | null>("0") const LeaveStatus = ref<string | null>("0");
const fiscalYearyear = ref<Number | null>(new Date().getFullYear()) const fiscalYearyear = ref<Number | null>(new Date().getFullYear());
const rows = ref<ListLeaveTable[]>([]) const rows = ref<ListLeaveTable[]>([]);
/** /**
* function Table * function Table
* @param data Table * @param data Table
*/ */
async function fetchListLeave(data: ListLeave[]) { async function fetchListLeave(data: ListLeave[]) {
let datalist: ListLeaveTable[] = data.map((e: ListLeave) => ({ let datalist: ListLeaveTable[] = data.map((e: ListLeave) => ({
id: e.id, id: e.id,
leaveTypeName: e.leaveTypeName, leaveTypeName: e.leaveTypeName,
leaveTypeId: e.leaveTypeId, leaveTypeId: e.leaveTypeId,
fullName: e.fullName, fullName: e.fullName,
dateSendLeave: e.dateSendLeave && date2Thai(e.dateSendLeave), dateSendLeave: e.dateSendLeave && date2Thai(e.dateSendLeave),
status: e.status, status: e.status,
statusConvert: convertStatud(e.status), statusConvert: convertStatud(e.status),
isDelete: e.isDelete, isDelete: e.isDelete,
})) }));
rows.value = datalist rows.value = datalist;
} }
//ฟังก์ชั่นแปลง Status //ฟังก์ชั่นแปลง Status
function convertStatud(val: string) { function convertStatud(val: string) {
switch (val) { switch (val) {
case "NEW": case "NEW":
return "ใหม่" return "ใหม่";
case "PENDING": case "PENDING":
return "กำลังดำเนินการ" return "กำลังดำเนินการ";
case "APPROVE": case "APPROVE":
return "อนุมัติ" return "อนุมัติ";
case "REJECT": case "REJECT":
return "ไม่อนุมัติ" return "ไม่อนุมัติ";
case "DELETE": case "DELETE":
return "ยกเลิก" return "ยกเลิก";
} }
} }
/** ประเภทการลา */ /** ประเภทการลา */
const typeOptions = ref<OptionData[]>([]) const typeOptions = ref<OptionData[]>([]);
const typeId = ref<string | undefined>("") const typeId = ref<string | undefined>("");
const typeOptionsMain = ref<OptionData[]>([]) const typeOptionsMain = ref<OptionData[]>([]);
const typeOptionsAdd = ref<OptionData[]>([]) const typeOptionsAdd = ref<OptionData[]>([]);
/** รายการข้อมูลประเภทใบลา */ /** รายการข้อมูลประเภทใบลา */
const options = ref<OptionData[]>([]) const options = ref<OptionData[]>([]);
/** /**
* function * function
* @param data * @param data
*/ */
async function fetchLeaveType(data: TypeLeave[]) { async function fetchLeaveType(data: TypeLeave[]) {
typeOptionsMain.value = [{ id: "00000000-0000-0000-0000-000000000000", name: "ทั้งหมด", code: "LV-000" }] typeOptionsMain.value = [
const optionType = data.map((e: TypeLeave) => ({ {
id: e.id, id: "00000000-0000-0000-0000-000000000000",
name: e.name, name: "ทั้งหมด",
code: e.code, code: "LV-000",
})) },
typeOptionsMain.value.push(...optionType) ];
typeOptions.value = typeOptionsMain.value const optionType = data.map((e: TypeLeave) => ({
console.log(typeOptions.value) id: e.id,
name: e.name,
code: e.code,
}));
typeOptionsMain.value.push(...optionType);
typeOptions.value = typeOptionsMain.value;
console.log(typeOptions.value);
typeOptionsAdd.value.push(...optionType) typeOptionsAdd.value.push(...optionType);
options.value = typeOptionsAdd.value options.value = typeOptionsAdd.value;
console.log(options.value) console.log(options.value);
} }
/** สถานะของการลา */ /** สถานะของการลา */
const statusOptionsMain = ref<any[]>([ const statusOptionsMain = ref<any[]>([
{ id: "ALL", name: "ทั้งหมด" }, { id: "ALL", name: "ทั้งหมด" },
{ id: "NEW ", name: "ใหม่" }, { id: "NEW", name: "ใหม่" },
{ id: "PENDING ", name: "กำลังดำเนินการ" }, { id: "PENDING", name: "กำลังดำเนินการ" },
{ id: "APPROVE ", name: "อนุมัติ " }, { id: "APPROVE", name: "อนุมัติ " },
{ id: "REJECT ", name: "ไม่อนุมัติ" }, { id: "REJECT", name: "ไม่อนุมัติ" },
{ id: "DELETE ", name: "ยกเลิก" }, { id: "DELETE", name: "ยกเลิก" },
]) ]);
const statusOptions = ref<any[]>(statusOptionsMain.value) const statusOptions = ref<any[]>(statusOptionsMain.value);
/** /**
* function Option * function Option
* @param val * @param val
* @param update * @param update
* @param refData * @param refData
*/ */
function filterOption(val: any, update: Function, refData: string) { function filterOption(val: any, update: Function, refData: string) {
switch (refData) { switch (refData) {
case "LeaveTypeOption": case "LeaveTypeOption":
update(() => { update(() => {
typeOptions.value = typeOptionsMain.value.filter((v: any) => v.name.indexOf(val) > -1) typeOptions.value = typeOptionsMain.value.filter(
}) (v: any) => v.name.indexOf(val) > -1
break );
case "LeaveStatusOption": });
update(() => { break;
statusOptions.value = statusOptionsMain.value.filter((v: any) => v.name.indexOf(val) > -1) case "LeaveStatusOption":
}) update(() => {
break statusOptions.value = statusOptionsMain.value.filter(
default: (v: any) => v.name.indexOf(val) > -1
break );
} });
} break;
/** รายการประเภทการลาของ ลาไปศึกษา ฝึกอบรม ปฎิบัติการวิจัย หรือดูงาน*/ default:
const optionsSpecific = ref([ break;
{ id: "s0", name: "ลาไปศึกษาต่อ", code: "s0" }, }
{ id: "s1", name: "ลาฝึกอบรม", code: "s1" }, }
{ id: "s2", name: "ลาปฎิบัติการวิจัย", code: "s2" }, /** รายการประเภทการลาของ ลาไปศึกษา ฝึกอบรม ปฎิบัติการวิจัย หรือดูงาน*/
{ id: "s3", name: "ลาดูงาน", code: "s3" }, const optionsSpecific = ref([
]) { id: "s0", name: "ลาไปศึกษาต่อ", code: "s0" },
{ id: "s1", name: "ลาฝึกอบรม", code: "s1" },
{ id: "s2", name: "ลาปฎิบัติการวิจัย", code: "s2" },
{ id: "s3", name: "ลาดูงาน", code: "s3" },
]);
/** รายการประเภทการลาของ ลาอุปสมบทหรือลาประกอบพิธีฮัจญ์*/ /** รายการประเภทการลาของ ลาอุปสมบทหรือลาประกอบพิธีฮัจญ์*/
const optionsOrdination = ref([ const optionsOrdination = ref([
{ id: "0", name: "ลาอุปสมบท", code: "0" }, { id: "0", name: "ลาอุปสมบท", code: "0" },
{ id: "1", name: "ลาประกอบพิธีฮัจญ์", code: "1" }, { id: "1", name: "ลาประกอบพิธีฮัจญ์", code: "1" },
]) ]);
/** data table filter & column ของรายการลา */ /** data table filter & column ของรายการลา */
const visibleColumns = ref<String[]>(["no", "leaveTypeName", "dateSendLeave", "status"]) const visibleColumns = ref<String[]>([
const columns = ref<QTableProps["columns"]>([ "no",
{ "leaveTypeName",
name: "no", "dateSendLeave",
align: "left", "status",
label: "ลำดับ", ]);
sortable: true, const columns = ref<QTableProps["columns"]>([
field: "no", {
headerStyle: "font-size: 14px", name: "no",
style: "font-size: 14px; width:5%;", align: "left",
}, label: "ลำดับ",
{ sortable: true,
name: "leaveTypeName", field: "no",
align: "left", headerStyle: "font-size: 14px",
label: "ประเภทการลา", style: "font-size: 14px; width:5%;",
sortable: true, },
field: "leaveTypeName", {
headerStyle: "font-size: 14px", name: "leaveTypeName",
style: "font-size: 14px; width:15%;", align: "left",
}, label: "ประเภทการลา",
{ sortable: true,
name: "dateSendLeave", field: "leaveTypeName",
align: "left", headerStyle: "font-size: 14px",
label: "วันที่ยื่นใบลา", style: "font-size: 14px; width:15%;",
sortable: true, },
field: "dateSendLeave", {
headerStyle: "font-size: 14px", name: "dateSendLeave",
style: "font-size: 14px; width:15%;", align: "left",
}, label: "วันที่ยื่นใบลา",
{ sortable: true,
name: "status", field: "dateSendLeave",
align: "left", headerStyle: "font-size: 14px",
label: "สถานะ", style: "font-size: 14px; width:15%;",
sortable: true, },
field: "status", {
headerStyle: "font-size: 14px", name: "status",
style: "font-size: 14px; width:10%;", align: "left",
}, label: "สถานะ",
]) sortable: true,
/** field: "status",
* headerStyle: "font-size: 14px",
* @param item style: "font-size: 14px; width:10%;",
* @param subitem },
*/ ]);
function typeConvert(item: string, subitem: any) { /**
// console.log('first',item) *
if (item !== "LV-006" && item !== "LV-008") { * @param item
typeLeave.value = convertSubtitle(item) * @param subitem
} else if (item === "LV-006") { */
typeLeave.value = convertSubtitleInfo(subitem) function typeConvert(item: string, subitem: any) {
} else if (item === "LV-008") { // console.log('first',item)
typeLeave.value = convertSubtitleInfo2(subitem) if (item !== "LV-006" && item !== "LV-008") {
} typeLeave.value = convertSubtitle(item);
typeId.value = convertId(item) } else if (item === "LV-006") {
} typeLeave.value = convertSubtitleInfo(subitem);
} else if (item === "LV-008") {
typeLeave.value = convertSubtitleInfo2(subitem);
}
typeId.value = convertId(item);
}
/** /**
* / * /
* @param val string * @param val string
* @returns * @returns
*/ */
function convertSubtitle(val: string) { function convertSubtitle(val: string) {
return options.value.find(x => x.code == val)?.name return options.value.find((x) => x.code == val)?.name;
} }
/** /**
* / * /
* @param val string * @param val string
* @returns * @returns
*/ */
function convertSubtitleInfo(val: string) { function convertSubtitleInfo(val: string) {
return optionsOrdination.value.find(x => x.id == val)?.name return optionsOrdination.value.find((x) => x.id == val)?.name;
} }
/** /**
* *
* @param val string * @param val string
* @returns * @returns
*/ */
function convertSubtitleInfo2(val: string) { function convertSubtitleInfo2(val: string) {
return optionsSpecific.value.find(x => x.id == val)?.name return optionsSpecific.value.find((x) => x.id == val)?.name;
} }
/** /**
* id api * id api
* @param val string * @param val string
* @returns * @returns
*/ */
function convertId(val: string) { function convertId(val: string) {
return options.value.find(x => x.code == val)?.id return options.value.find((x) => x.code == val)?.id;
} }
/** /**
* profile * profile
*/ */
const dateSendLeave = ref<Date>() //วันที่ยื่นใบลา const dateSendLeave = ref<Date>(); //วันที่ยื่นใบลา
const leaveTypeName = ref<string>("") //Name ประเภทการลา const leaveTypeName = ref<string>(""); //Name ประเภทการลา
const dear = ref<string>("") //เรียน const dear = ref<string>(""); //เรียน
const fullName = ref<string>("") //คำนำหน้า ชื่อ นามสกุล ผู้ยื่นขอ const fullName = ref<string>(""); //คำนำหน้า ชื่อ นามสกุล ผู้ยื่นขอ
const positionName = ref<string>("") //ตำแหน่งผู้ยื่นขอ const positionName = ref<string>(""); //ตำแหน่งผู้ยื่นขอ
const positionLevelName = ref<string>("") //ระดับผู้ยื่นขอ const positionLevelName = ref<string>(""); //ระดับผู้ยื่นขอ
const organizationName = ref<string>("") //สังกัดผู้ยื่นขอ const organizationName = ref<string>(""); //สังกัดผู้ยื่นขอ
const leaveLimit = ref<number>(0) //โควต้าลา(แต่ละประเภท)หน่วยเป็นวัน(ภายในปีนั้น) const leaveLimit = ref<number>(0); //โควต้าลา(แต่ละประเภท)หน่วยเป็นวัน(ภายในปีนั้น)
const leaveTotal = ref<number>(0) //ลาไปแล้ว(แต่ละประเภท)หน่วยเป็นวัน(ภายในปีนั้น) const leaveTotal = ref<number>(0); //ลาไปแล้ว(แต่ละประเภท)หน่วยเป็นวัน(ภายในปีนั้น)
const leaveRemain = ref<number>(0) //คงเหลือโควต้า(แต่ละประเภท)หน่วยเป็นวัน(ภายในปีนั้น) const leaveRemain = ref<number>(0); //คงเหลือโควต้า(แต่ละประเภท)หน่วยเป็นวัน(ภายในปีนั้น)
const restDayTotalOld = ref<number>(0) //จำนวนวันลาพักผ่อนสะสม จากปีที่ผ่านมา const restDayTotalOld = ref<number>(0); //จำนวนวันลาพักผ่อนสะสม จากปีที่ผ่านมา
const birthDate = ref<Date>() //วันเกิด const birthDate = ref<Date>(); //วันเกิด
const dateAppoint = ref<Date>() //วันที่เข้ารับราชการ const dateAppoint = ref<Date>(); //วันที่เข้ารับราชการ
const salary = ref<number>(0) //เงินเดือนปัจจุบัน const salary = ref<number>(0); //เงินเดือนปัจจุบัน
const salaryText = ref<string>("") //เงินเดือนปัจจุบัน(ภาษาไทย) const salaryText = ref<string>(""); //เงินเดือนปัจจุบัน(ภาษาไทย)
const leaveLast = ref<any>() const leaveLast = ref<any>();
const restDayCurrentTotal = ref<string>("") const restDayCurrentTotal = ref<string>("");
//ดึงข้อมูล profile จาก API //ดึงข้อมูล profile จาก API
async function fetchProfile() { async function fetchProfile() {
await http await http
.post(config.API.leaveProfile(), { type: typeId.value }) .post(config.API.leaveProfile(), { type: typeId.value })
.then((res: any) => { .then((res: any) => {
const data = res.data.result const data = res.data.result;
dateSendLeave.value = data.dateSendLeave dateSendLeave.value = data.dateSendLeave;
leaveTypeName.value = data.leaveTypeName leaveTypeName.value = data.leaveTypeName;
dear.value = data.dear dear.value = data.dear;
fullName.value = data.fullName fullName.value = data.fullName;
positionName.value = data.positionName positionName.value = data.positionName;
positionLevelName.value = data.positionLevelName positionLevelName.value = data.positionLevelName;
organizationName.value = data.organizationName organizationName.value = data.organizationName;
leaveLimit.value = data.leaveLimit leaveLimit.value = data.leaveLimit;
leaveTotal.value = data.leaveTotal leaveTotal.value = data.leaveTotal;
leaveRemain.value = data.leaveRemain leaveRemain.value = data.leaveRemain;
restDayTotalOld.value = data.restDayTotalOld restDayTotalOld.value = data.restDayTotalOld;
birthDate.value = data.birthDate birthDate.value = data.birthDate;
dateAppoint.value = data.dateAppoint dateAppoint.value = data.dateAppoint;
salary.value = data.salary salary.value = data.salary;
salaryText.value = data.salaryText salaryText.value = data.salaryText;
leaveLast.value = date2Thai(data.leaveLast) !== "0001-01-01T00:00:00" ? date2Thai(data.leaveLast) : "-" leaveLast.value =
restDayCurrentTotal.value = data.restDayCurrentTotal date2Thai(data.leaveLast) !== "0001-01-01T00:00:00"
}) ? date2Thai(data.leaveLast)
.catch((e: any) => { : "-";
messageError($q, e) restDayCurrentTotal.value = data.restDayCurrentTotal;
}) })
} .catch((e: any) => {
messageError($q, e);
});
}
return { return {
tabValue, tabValue,
typeOptions, typeOptions,
optionsSpecific, optionsSpecific,
statusOptions, statusOptions,
visibleColumns, visibleColumns,
columns, columns,
rows, rows,
LeaveType, LeaveType,
LeaveStatus, LeaveStatus,
fiscalYearyear, fiscalYearyear,
options, options,
optionsOrdination, optionsOrdination,
typeConvert, typeConvert,
typeLeave, typeLeave,
typeId, typeId,
fetchListLeave, fetchListLeave,
fetchLeaveType, fetchLeaveType,
filterOption, filterOption,
fetchProfile, fetchProfile,
//ส่งออกตัวแปร profileที่ได้จาก Api //ส่งออกตัวแปร profileที่ได้จาก Api
dateSendLeave, dateSendLeave,
leaveTypeName, leaveTypeName,
dear, dear,
fullName, fullName,
positionName, positionName,
positionLevelName, positionLevelName,
organizationName, organizationName,
leaveLimit, //โควต้าลา(แต่ละประเภท)หน่วยเป็นวัน(ภายในปีนั้น) leaveLimit, //โควต้าลา(แต่ละประเภท)หน่วยเป็นวัน(ภายในปีนั้น)
leaveTotal, //ลาไปแล้ว(แต่ละประเภท)หน่วยเป็นวัน(ภายในปีนั้น) leaveTotal, //ลาไปแล้ว(แต่ละประเภท)หน่วยเป็นวัน(ภายในปีนั้น)
leaveRemain, //คงเหลือโควต้า(แต่ละประเภท)หน่วยเป็นวัน(ภายในปีนั้น) leaveRemain, //คงเหลือโควต้า(แต่ละประเภท)หน่วยเป็นวัน(ภายในปีนั้น)
restDayTotalOld, restDayTotalOld,
birthDate, birthDate,
dateAppoint, dateAppoint,
salary, salary,
salaryText, salaryText,
leaveLast, leaveLast,
restDayCurrentTotal, restDayCurrentTotal,
} };
}) });