From b29fe788b7b74462c6a2630445935db256d75b2e Mon Sep 17 00:00:00 2001 From: AnandaTon Date: Thu, 14 Dec 2023 16:23:32 +0700 Subject: [PATCH] =?UTF-8?q?=E0=B9=80=E0=B8=9E=E0=B8=B4=E0=B9=88=E0=B8=A1?= =?UTF-8?q?=20api=20=E0=B8=A3=E0=B8=B2=E0=B8=A2=E0=B8=81=E0=B8=B2=E0=B8=A3?= =?UTF-8?q?=E0=B8=A5=E0=B8=B2=20||=20=20=E0=B8=AB=E0=B8=99=E0=B9=89?= =?UTF-8?q?=E0=B8=B2=E0=B8=A3=E0=B8=B2=E0=B8=A2=E0=B8=81=E0=B8=B2=E0=B8=A3?= =?UTF-8?q?=E0=B8=A5=E0=B8=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../05_leave/components/DialogDetail.vue | 839 +++++++++--------- .../components/formDetail/formCancel.vue | 68 ++ .../05_leave/interface/response/leave.ts | 229 ++--- src/modules/05_leave/store.ts | 621 +++++++------ 4 files changed, 893 insertions(+), 864 deletions(-) create mode 100644 src/modules/05_leave/components/formDetail/formCancel.vue diff --git a/src/modules/05_leave/components/DialogDetail.vue b/src/modules/05_leave/components/DialogDetail.vue index 47d6069..d3ae223 100644 --- a/src/modules/05_leave/components/DialogDetail.vue +++ b/src/modules/05_leave/components/DialogDetail.vue @@ -1,247 +1,241 @@ diff --git a/src/modules/05_leave/components/formDetail/formCancel.vue b/src/modules/05_leave/components/formDetail/formCancel.vue new file mode 100644 index 0000000..ce59263 --- /dev/null +++ b/src/modules/05_leave/components/formDetail/formCancel.vue @@ -0,0 +1,68 @@ + + + + + diff --git a/src/modules/05_leave/interface/response/leave.ts b/src/modules/05_leave/interface/response/leave.ts index 3fa4390..a361889 100644 --- a/src/modules/05_leave/interface/response/leave.ts +++ b/src/modules/05_leave/interface/response/leave.ts @@ -1,134 +1,141 @@ interface ListLeave { - id: string; //*Id การยื่นขอลา - leaveTypeName: string; //Name ประเภทการลา - leaveTypeId: string; //Id ประเภทการลา - fullName: string; //คำนำหน้า ชื่อ นามสกุล คนขอลา - dateSendLeave: Date | null; //วันที่ยื่นใบลา - status: string; //สถานะการของลา - isDelete: boolean; //ขอยกเลิกคำขอลา ถ้าเคยขอแล้วจะเป็น true ไม่เคยเป็น false + id: string //*Id การยื่นขอลา + leaveTypeName: string //Name ประเภทการลา + leaveTypeId: string //Id ประเภทการลา + fullName: string //คำนำหน้า ชื่อ นามสกุล คนขอลา + dateSendLeave: Date | null //วันที่ยื่นใบลา + status: string //สถานะการของลา + isDelete: boolean //ขอยกเลิกคำขอลา ถ้าเคยขอแล้วจะเป็น true ไม่เคยเป็น false } interface ListLeaveTable { - id: string; - leaveTypeName: string; - leaveTypeId: string; - fullName: string; - dateSendLeave: string | null; - status: string; - isDelete: boolean; + id: string + leaveTypeName: string + leaveTypeId: string + fullName: string + dateSendLeave: string | null + status: string + isDelete: boolean } interface FremDetail { - id: string; //Id การยื่นขอลา - leaveTypeName: string; // Name ประเภทการลา - leaveTypeId: string; //Id ประเภทการลา - fullname: string; //คำนำหน้า ชื่อ นามสกุล คนขอลา - dateSendLeave: Date; // วันที่ยืนใบลา - status: string; //สถานะการของลา - leaveDateStart: Date; //วันเริ่มการลา - leaveDateEnd: Date; //วันสิ้นสุดการลา - leaveCount: number; //จำนวนวันลา - leaveWrote: string; //เขียนที่ - leaveAddress: string; //สถานที่ติดต่อขณะลา - leaveNumber: string; //หมายเลขที่ติดต่อขณะลา - leaveDetail: string; //รายละเอียดการลา - leaveDocument: string; //อัปโหลดเอกสารประกอบรายละเอียด - leaveDraftDocument: string; //อัปโหลดแบบฟอร์มการลา - leaveLastStart: Date; //ลาครั้งสุดท้ายในประเภทนั้น ๆ เริ่มเมื่อวันที่(ลาป่วย ลาคลอดบุตร และลากิจส่วนตัว)(Auto) - leaveLastEnd: Date; //ลาครั้งสุดท้ายในประเภทนั้น ๆ สิ้นสุดเมื่อวันที่(ลาป่วย ลาคลอดบุตร และลากิจส่วนตัว)(Auto) - leaveTotal: number; //จำนวนวันที่ลา(Auto) - leavebirthDate: Date; //วันเดือนปีเกิด(Auto) - leavegovernmentDate: Date; //วันที่เข้ารับราชการ(Auto) - leaveSalary: number; //เงินเดือนปัจจุบัน(Auto) - leaveSalaryText: string; //เงินเดือนปัจจุบัน(เขียนเป็นคำอ่าน) - leaveTypeDay: string; //ประเภทการลาในวันนั้นเช่น - wifeDayName: string; //ชื่อภรรยา(ลาไปช่วยเหลือภริยาที่คลอดบุตร) - wifeDayDateBorn: Date; //วันที่คลอด(ลาไปช่วยเหลือภริยาที่คลอดบุตร) - restDayOldTotal: number; //จำนวนวันลาพักผ่อนสะสม จากปีที่ผ่านมา(ลาพักผ่อน)(Auto) - restDayCurrentTotal: number; //จำนวนวันลาพักผ่อนประจำปีปัจจุบัน(ลาพักผ่อน)(Auto) - ordainDayStatus: string; //เคย/ไม่เคยบวช (ให้เลือก) (ลาอุปสมบท) - ordainDayLocationName: string; //สถานที่บวช ชื่อวัด(ลาอุปสมบท) - ordainDayLocationAddress: string; //สถานที่บวช ที่อยู่(ลาอุปสมบท) - ordainDayLocationNumber: string; //สถานที่บวช หมายเลขโทรศัพท์(ลาอุปสมบท) - ordainDayOrdination: Date; //สถานที่บวช วันอุปสมบท(ลาอุปสมบท) - ordainDayBuddhistLentName: string; //สถานที่จำพรรษา ชื่อวัด(ลาอุปสมบท) - ordainDayBuddhistLentAddress: string; //สถานที่จำพรรษา ที่อยู่(ลาอุปสมบท) - hajjDayStatus: string; //เคย/ไม่เคยไปประกอบพิธีฮัจญ์ (ให้เลือก) (ลาประกอบพิธีฮัจญ์) - absentDaySummon: string; //ได้รับหมายเรียกของ (ลาเข้ารับการตรวจเลือกหรือเข้ารับการเตรียมพล) - absentDayLocation: string; //ที่ (ลาเข้ารับการตรวจเลือกหรือเข้ารับการเตรียมพล) - absentDayRegistorDate: Date; //ลงวันที่ (ลาเข้ารับการตรวจเลือกหรือเข้ารับการเตรียมพล) - absentDayGetIn: string; //ให้เข้ารับการ (ลาเข้ารับการตรวจเลือกหรือเข้ารับการเตรียมพล) - absentDayAt: string; //ณ ที่ (ลาเข้ารับการตรวจเลือกหรือเข้ารับการเตรียมพล) - studyDaySubject: string; //กรณีลาไปศึกษาต่อ ศึกษาวิชา (ลาไปศึกษา ฝึกอบรม ปฏิบัติการวิจัย หรือดูงาน) - studyDayDegreeLevel: string; //กรณีลาไปศึกษาต่อ ขั้นปริญญา (ลาไปศึกษา ฝึกอบรม ปฏิบัติการวิจัย หรือดูงาน) - studyDayUniversityName: string; //กรณีลาไปศึกษาต่อ ชื่อสถานศึกษา (ลาไปศึกษา ฝึกอบรม ปฏิบัติการวิจัย หรือดูงาน) - studyDayTrainingSubject: string; //กรณีลาไปฝึกอบรม ปฏิบัติการวิจัย หรือดูงาน ด้าน/หลักสูตร (ลาไปศึกษา ฝึกอบรม ปฏิบัติการวิจัย หรือดูงาน) - studyDayTrainingName: string; //กรณีลาไปฝึกอบรม ปฏิบัติการวิจัย หรือดูงาน ณ สถานที่ (ลาไปศึกษา ฝึกอบรม ปฏิบัติการวิจัย หรือดูงาน) - studyDayCountry: string; //ประเทศ (ลาไปศึกษา ฝึกอบรม ปฏิบัติการวิจัย หรือดูงาน) - studyDayScholarship: string; //ด้วยทุน (ลาไปศึกษา ฝึกอบรม ปฏิบัติการวิจัย หรือดูงาน) - coupleDayName: string; //ชื่อคู่สมรส (ลาติดตามคู่สมรส) - coupleDayPosition: string; //ตำแหน่งคู่สมรส (ลาติดตามคู่สมรส) - coupleDayLevel: string; //ระดับคู่สมรส (ลาติดตามคู่สมรส) - coupleDayLevelCountry: string; //ไปปฏิบัติราชการ ณ ประเทศ (ลาติดตามคู่สมรส) - coupleDayCountryHistory: string; //ประวัติ ประเทศ (ลาติดตามคู่สมรส) - coupleDayTotalHistory: string; //ประวัติ เป็นเวลา กี่ปี กี่เดือน กี่วัน (ลาติดตามคู่สมรส) - coupleDayStartDateHistory: Date; //ประวัติ ตั้งแต่วันที่ (ลาติดตามคู่สมรส) - coupleDayEndDateHistory: Date; //ประวัติ ถึงวันที่ (ลาติดตามคู่สมรส) - coupleDaySumTotalHistory: string; //ประวัติ ในกรณีลาติดต่อกับครั้งก่อน รวมทั้งนี้ด้วย เป็นเวลา กี่ปี กี่เดือน กี่วัน (ลาติดตามคู่สมรส) - approveStep: string; - dear: string; + id: string //Id การยื่นขอลา + leaveTypeName: string // Name ประเภทการลา + leaveTypeId: string //Id ประเภทการลา + fullname: string //คำนำหน้า ชื่อ นามสกุล คนขอลา + dateSendLeave: Date // วันที่ยืนใบลา + status: string //สถานะการของลา + leaveDateStart: Date //วันเริ่มการลา + leaveDateEnd: Date //วันสิ้นสุดการลา + leaveCount: number //จำนวนวันลา + leaveWrote: string //เขียนที่ + leaveAddress: string //สถานที่ติดต่อขณะลา + leaveNumber: string //หมายเลขที่ติดต่อขณะลา + leaveDetail: string //รายละเอียดการลา + leaveDocument: string //อัปโหลดเอกสารประกอบรายละเอียด + leaveDraftDocument: string //อัปโหลดแบบฟอร์มการลา + leaveLastStart: Date //ลาครั้งสุดท้ายในประเภทนั้น ๆ เริ่มเมื่อวันที่(ลาป่วย ลาคลอดบุตร และลากิจส่วนตัว)(Auto) + leaveLastEnd: Date //ลาครั้งสุดท้ายในประเภทนั้น ๆ สิ้นสุดเมื่อวันที่(ลาป่วย ลาคลอดบุตร และลากิจส่วนตัว)(Auto) + leaveTotal: number //จำนวนวันที่ลา(Auto) + leavebirthDate: Date //วันเดือนปีเกิด(Auto) + leavegovernmentDate: Date //วันที่เข้ารับราชการ(Auto) + leaveSalary: number //เงินเดือนปัจจุบัน(Auto) + leaveSalaryText: string //เงินเดือนปัจจุบัน(เขียนเป็นคำอ่าน) + leaveTypeDay: string //ประเภทการลาในวันนั้นเช่น + wifeDayName: string //ชื่อภรรยา(ลาไปช่วยเหลือภริยาที่คลอดบุตร) + wifeDayDateBorn: Date //วันที่คลอด(ลาไปช่วยเหลือภริยาที่คลอดบุตร) + restDayOldTotal: number //จำนวนวันลาพักผ่อนสะสม จากปีที่ผ่านมา(ลาพักผ่อน)(Auto) + restDayCurrentTotal: number //จำนวนวันลาพักผ่อนประจำปีปัจจุบัน(ลาพักผ่อน)(Auto) + ordainDayStatus: string //เคย/ไม่เคยบวช (ให้เลือก) (ลาอุปสมบท) + ordainDayLocationName: string //สถานที่บวช ชื่อวัด(ลาอุปสมบท) + ordainDayLocationAddress: string //สถานที่บวช ที่อยู่(ลาอุปสมบท) + ordainDayLocationNumber: string //สถานที่บวช หมายเลขโทรศัพท์(ลาอุปสมบท) + ordainDayOrdination: Date //สถานที่บวช วันอุปสมบท(ลาอุปสมบท) + ordainDayBuddhistLentName: string //สถานที่จำพรรษา ชื่อวัด(ลาอุปสมบท) + ordainDayBuddhistLentAddress: string //สถานที่จำพรรษา ที่อยู่(ลาอุปสมบท) + hajjDayStatus: string //เคย/ไม่เคยไปประกอบพิธีฮัจญ์ (ให้เลือก) (ลาประกอบพิธีฮัจญ์) + absentDaySummon: string //ได้รับหมายเรียกของ (ลาเข้ารับการตรวจเลือกหรือเข้ารับการเตรียมพล) + absentDayLocation: string //ที่ (ลาเข้ารับการตรวจเลือกหรือเข้ารับการเตรียมพล) + absentDayRegistorDate: Date //ลงวันที่ (ลาเข้ารับการตรวจเลือกหรือเข้ารับการเตรียมพล) + absentDayGetIn: string //ให้เข้ารับการ (ลาเข้ารับการตรวจเลือกหรือเข้ารับการเตรียมพล) + absentDayAt: string //ณ ที่ (ลาเข้ารับการตรวจเลือกหรือเข้ารับการเตรียมพล) + studyDaySubject: string //กรณีลาไปศึกษาต่อ ศึกษาวิชา (ลาไปศึกษา ฝึกอบรม ปฏิบัติการวิจัย หรือดูงาน) + studyDayDegreeLevel: string //กรณีลาไปศึกษาต่อ ขั้นปริญญา (ลาไปศึกษา ฝึกอบรม ปฏิบัติการวิจัย หรือดูงาน) + studyDayUniversityName: string //กรณีลาไปศึกษาต่อ ชื่อสถานศึกษา (ลาไปศึกษา ฝึกอบรม ปฏิบัติการวิจัย หรือดูงาน) + studyDayTrainingSubject: string //กรณีลาไปฝึกอบรม ปฏิบัติการวิจัย หรือดูงาน ด้าน/หลักสูตร (ลาไปศึกษา ฝึกอบรม ปฏิบัติการวิจัย หรือดูงาน) + studyDayTrainingName: string //กรณีลาไปฝึกอบรม ปฏิบัติการวิจัย หรือดูงาน ณ สถานที่ (ลาไปศึกษา ฝึกอบรม ปฏิบัติการวิจัย หรือดูงาน) + studyDayCountry: string //ประเทศ (ลาไปศึกษา ฝึกอบรม ปฏิบัติการวิจัย หรือดูงาน) + studyDayScholarship: string //ด้วยทุน (ลาไปศึกษา ฝึกอบรม ปฏิบัติการวิจัย หรือดูงาน) + coupleDayName: string //ชื่อคู่สมรส (ลาติดตามคู่สมรส) + coupleDayPosition: string //ตำแหน่งคู่สมรส (ลาติดตามคู่สมรส) + coupleDayLevel: string //ระดับคู่สมรส (ลาติดตามคู่สมรส) + coupleDayLevelCountry: string //ไปปฏิบัติราชการ ณ ประเทศ (ลาติดตามคู่สมรส) + coupleDayCountryHistory: string //ประวัติ ประเทศ (ลาติดตามคู่สมรส) + coupleDayTotalHistory: string //ประวัติ เป็นเวลา กี่ปี กี่เดือน กี่วัน (ลาติดตามคู่สมรส) + coupleDayStartDateHistory: Date //ประวัติ ตั้งแต่วันที่ (ลาติดตามคู่สมรส) + coupleDayEndDateHistory: Date //ประวัติ ถึงวันที่ (ลาติดตามคู่สมรส) + coupleDaySumTotalHistory: string //ประวัติ ในกรณีลาติดต่อกับครั้งก่อน รวมทั้งนี้ด้วย เป็นเวลา กี่ปี กี่เดือน กี่วัน (ลาติดตามคู่สมรส) + approveStep: string + dear: string +} + +interface FromCancelDetail { + id: string //*Id การยื่นขอลา + leaveTypeName: String //Name ประเภทการลา + fullname: String //คำนำหน้า ชื่อ นามสกุล คนขอลา + status: String //สถานะการของลา + leaveDocDelete: string //เอกสารการยกเลิกการลา + leaveResonDelete: String //เหตุผลการยกเลิกการลา + leaveWrote: String //เขียนที่ + leaveAddress: String //สถานที่ติดต่อขณะลา + leaveNumber: String //หมายเลขที่ติดต่อขณะลา + leaveDetail: String //รายละเอียดการลา + leaveTotal: number //จำนวนวันที่ลา + leaveStartDate: Date //วัน เดือน ปีเริ่มต้นลา + leaveEndDate: Date //วัน เดือน ปีสิ้นสุดลา } interface FormDelete { - writeAt: string; - reason: string; - doc: any; + writeAt: string + reason: string + doc: any } interface FormDeleteRef { - writeAt: object | null; - reason: object | null; - doc: object | null; - [key: string]: any; + writeAt: object | null + reason: object | null + doc: object | null + [key: string]: any } interface DataCalendar { - dateSendLeave: Date; - fullName: string; - id: string; - leaveEndDate: Date; - leaveStartDate: Date; - leaveTypeId: string; - leaveTypeName: string; - status: string; - keycloakId: string; + dateSendLeave: Date + fullName: string + id: string + leaveEndDate: Date + leaveStartDate: Date + leaveTypeId: string + leaveTypeName: string + status: string + keycloakId: string } interface LeaveType { - code: string; - createdAt: Date; - createdFullName: string; - createdUserId: string; - id: string; - lastUpdateFullName: string; - lastUpdateUserId: string; - lastUpdatedAt: Date | null; - limit: Number; - name: string; + code: string + createdAt: Date + createdFullName: string + createdUserId: string + id: string + lastUpdateFullName: string + lastUpdateUserId: string + lastUpdatedAt: Date | null + limit: Number + name: string } interface FilterList { - id: string; - name: string | null; - color: string; + id: string + name: string | null + color: string } -export type { - ListLeave, - ListLeaveTable, - FremDetail, - FormDelete, - FormDeleteRef, - DataCalendar, - LeaveType, - FilterList, -}; +export type { ListLeave, ListLeaveTable, FremDetail, FormDelete, FormDeleteRef, DataCalendar, LeaveType, FilterList, FromCancelDetail } diff --git a/src/modules/05_leave/store.ts b/src/modules/05_leave/store.ts index 8ae425c..e2f8ecf 100644 --- a/src/modules/05_leave/store.ts +++ b/src/modules/05_leave/store.ts @@ -1,341 +1,324 @@ -import { defineStore } from "pinia"; -import { ref } from "vue"; -import { useQuasar } from "quasar"; +import { defineStore } from "pinia" +import { ref } from "vue" +import { useQuasar } from "quasar" -import type { QTableProps } from "quasar"; -import type { - OptionData, - TypeLeave, -} 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 type { QTableProps } from "quasar" +import type { OptionData, TypeLeave } 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"; -const mixin = useCounterMixin(); -const { date2Thai, messageError } = mixin; -const $q = useQuasar(); +import { useCounterMixin } from "@/stores/mixin" +const mixin = useCounterMixin() +const { date2Thai, messageError } = mixin +const $q = useQuasar() export const useLeaveStore = defineStore("Leave", () => { - const tabValue = ref("calendar"); - const typeLeave = ref(""); - const LeaveType = ref("0"); - const LeaveStatus = ref("0"); - const fiscalYearyear = ref(new Date().getFullYear()); - const rows = ref([]); + const tabValue = ref("calendar") + const typeLeave = ref("") + const LeaveType = ref("0") + const LeaveStatus = ref("0") + const fiscalYearyear = ref(new Date().getFullYear()) + const rows = ref([]) - /** - * function เรียกข้อมูลรายการลา Table - * @param data ข้อมูลรายการลา Table - */ - async function fetchListLeave(data: ListLeave[]) { - let datalist: ListLeaveTable[] = data.map((e: ListLeave) => ({ - id: e.id, - leaveTypeName: e.leaveTypeName, - leaveTypeId: e.leaveTypeId, - fullName: e.fullName, - dateSendLeave: e.dateSendLeave && date2Thai(e.dateSendLeave), - status: e.status, - statusConvert: convertStatud(e.status), - isDelete: e.isDelete, - })); - rows.value = datalist; - } + /** + * function เรียกข้อมูลรายการลา Table + * @param data ข้อมูลรายการลา Table + */ + async function fetchListLeave(data: ListLeave[]) { + let datalist: ListLeaveTable[] = data.map((e: ListLeave) => ({ + id: e.id, + leaveTypeName: e.leaveTypeName, + leaveTypeId: e.leaveTypeId, + fullName: e.fullName, + dateSendLeave: e.dateSendLeave && date2Thai(e.dateSendLeave), + status: e.status, + statusConvert: convertStatud(e.status), + isDelete: e.isDelete, + })) + rows.value = datalist + } - //ฟังก์ชั่นแปลง Status - function convertStatud(val: string) { - switch (val) { - case "NEW": - return "ใหม่"; - case "PENDING": - return "กำลังดำเนินการ"; - case "APPROVE": - return "อนุมัติ"; - case "REJECT": - return "ไม่อนุมัติ"; - case "DELETE": - return "ยกเลิก"; - } - } + //ฟังก์ชั่นแปลง Status + function convertStatud(val: string) { + switch (val) { + case "NEW": + return "ใหม่" + case "PENDING": + return "กำลังดำเนินการ" + case "APPROVE": + return "อนุมัติ" + case "REJECT": + return "ไม่อนุมัติ" + case "DELETE": + return "ยกเลิก" + } + } - /** ประเภทการลา */ - const typeOptions = ref([]); - const typeId = ref(""); - const typeOptionsMain = ref([]); - const typeOptionsAdd = ref([]); - /** รายการข้อมูลประเภทใบลา */ - const options = ref([]); - /** - * function เรียกข้อมูลประเภทการลา - * @param data ประเภทการลา - */ - async function fetchLeaveType(data: TypeLeave[]) { - typeOptionsMain.value = [ - { - id: "00000000-0000-0000-0000-000000000000", - name: "ทั้งหมด", - code: "LV-000", - }, - ]; - const optionType = data.map((e: TypeLeave) => ({ - id: e.id, - name: e.name, - code: e.code, - })); - typeOptionsMain.value.push(...optionType); - typeOptions.value = typeOptionsMain.value; - console.log(typeOptions.value); + /** ประเภทการลา */ + const typeOptions = ref([]) + const typeId = ref("") + const typeOptionsMain = ref([]) + const typeOptionsAdd = ref([]) + /** รายการข้อมูลประเภทใบลา */ + const options = ref([]) + /** + * function เรียกข้อมูลประเภทการลา + * @param data ประเภทการลา + */ + async function fetchLeaveType(data: TypeLeave[]) { + typeOptionsMain.value = [ + { + id: "00000000-0000-0000-0000-000000000000", + name: "ทั้งหมด", + code: "LV-000", + }, + ] + const optionType = data.map((e: TypeLeave) => ({ + 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); - options.value = typeOptionsAdd.value; - console.log(options.value); - } + typeOptionsAdd.value.push(...optionType) + options.value = typeOptionsAdd.value + console.log(options.value) + } - /** สถานะของการลา */ - const statusOptionsMain = ref([ - { id: "ALL", name: "ทั้งหมด" }, - { id: "NEW", name: "ใหม่" }, - { id: "PENDING", name: "กำลังดำเนินการ" }, - { id: "APPROVE", name: "อนุมัติ " }, - { id: "REJECT", name: "ไม่อนุมัติ" }, - { id: "DELETE", name: "ยกเลิก" }, - ]); - const statusOptions = ref(statusOptionsMain.value); + /** สถานะของการลา */ + const statusOptionsMain = ref([ + { id: "ALL", name: "ทั้งหมด" }, + { id: "NEW", name: "ใหม่" }, + { id: "PENDING", name: "กำลังดำเนินการ" }, + { id: "APPROVE", name: "อนุมัติ " }, + { id: "REJECT", name: "ไม่อนุมัติ" }, + { id: "DELETE", name: "ยกเลิก" }, + ]) + const statusOptions = ref(statusOptionsMain.value) - /** - * function ต้นหาข้อมูลของ Option - * @param val ค่าที่ต้องการฟิลเตอร์ - * @param update อัพเดทค่า - * @param refData ดาต้าที่ต้องการฟิลเตอร์ - */ - function filterOption(val: any, update: Function, refData: string) { - switch (refData) { - case "LeaveTypeOption": - update(() => { - typeOptions.value = typeOptionsMain.value.filter( - (v: any) => v.name.indexOf(val) > -1 - ); - }); - break; - case "LeaveStatusOption": - update(() => { - statusOptions.value = statusOptionsMain.value.filter( - (v: any) => v.name.indexOf(val) > -1 - ); - }); - break; - default: - break; - } - } - /** รายการประเภทการลาของ ลาไปศึกษา ฝึกอบรม ปฎิบัติการวิจัย หรือดูงาน*/ - const optionsSpecific = ref([ - { id: "s0", name: "ลาไปศึกษาต่อ", code: "s0" }, - { id: "s1", name: "ลาฝึกอบรม", code: "s1" }, - { id: "s2", name: "ลาปฎิบัติการวิจัย", code: "s2" }, - { id: "s3", name: "ลาดูงาน", code: "s3" }, - ]); + /** + * function ต้นหาข้อมูลของ Option + * @param val ค่าที่ต้องการฟิลเตอร์ + * @param update อัพเดทค่า + * @param refData ดาต้าที่ต้องการฟิลเตอร์ + */ + function filterOption(val: any, update: Function, refData: string) { + switch (refData) { + case "LeaveTypeOption": + update(() => { + typeOptions.value = typeOptionsMain.value.filter((v: any) => v.name.indexOf(val) > -1) + }) + break + case "LeaveStatusOption": + update(() => { + statusOptions.value = statusOptionsMain.value.filter((v: any) => v.name.indexOf(val) > -1) + }) + break + default: + break + } + } + /** รายการประเภทการลาของ ลาไปศึกษา ฝึกอบรม ปฎิบัติการวิจัย หรือดูงาน*/ + 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([ - { id: "0", name: "ลาอุปสมบท", code: "0" }, - { id: "1", name: "ลาประกอบพิธีฮัจญ์", code: "1" }, - ]); + /** รายการประเภทการลาของ ลาอุปสมบทหรือลาประกอบพิธีฮัจญ์*/ + const optionsOrdination = ref([ + { id: "0", name: "ลาอุปสมบท", code: "0" }, + { id: "1", name: "ลาประกอบพิธีฮัจญ์", code: "1" }, + ]) - /** data table filter & column ของรายการลา */ - const visibleColumns = ref([ - "no", - "leaveTypeName", - "dateSendLeave", - "status", - ]); - const columns = ref([ - { - name: "no", - align: "left", - label: "ลำดับ", - sortable: true, - field: "no", - headerStyle: "font-size: 14px", - style: "font-size: 14px; width:5%;", - }, - { - name: "leaveTypeName", - align: "left", - label: "ประเภทการลา", - sortable: true, - field: "leaveTypeName", - headerStyle: "font-size: 14px", - style: "font-size: 14px; width:15%;", - }, - { - name: "dateSendLeave", - align: "left", - label: "วันที่ยื่นใบลา", - sortable: true, - field: "dateSendLeave", - headerStyle: "font-size: 14px", - style: "font-size: 14px; width:15%;", - }, - { - name: "status", - align: "left", - label: "สถานะ", - sortable: true, - field: "status", - headerStyle: "font-size: 14px", - style: "font-size: 14px; width:10%;", - }, - ]); - /** - *ฟังก์ชั่นแปลงประเภทแบบฟอร์มลา - * @param item ประเภทแบบฟอร์ม - * @param subitem ประเภทแบบฟอร์มย่อย - */ - function typeConvert(item: string, subitem: any) { - // console.log('first',item) - if (item !== "LV-006" && item !== "LV-008") { - typeLeave.value = convertSubtitle(item); - } else if (item === "LV-006") { - typeLeave.value = convertSubtitleInfo(subitem); - } else if (item === "LV-008") { - typeLeave.value = convertSubtitleInfo2(subitem); - } - typeId.value = convertId(item); - } + /** data table filter & column ของรายการลา */ + const visibleColumns = ref(["no", "leaveTypeName", "dateSendLeave", "status"]) + const columns = ref([ + { + name: "no", + align: "left", + label: "ลำดับ", + sortable: true, + field: "no", + headerStyle: "font-size: 14px", + style: "font-size: 14px; width:5%;", + }, + { + name: "leaveTypeName", + align: "left", + label: "ประเภทการลา", + sortable: true, + field: "leaveTypeName", + headerStyle: "font-size: 14px", + style: "font-size: 14px; width:15%;", + }, + { + name: "dateSendLeave", + align: "left", + label: "วันที่ยื่นใบลา", + sortable: true, + field: "dateSendLeave", + headerStyle: "font-size: 14px", + style: "font-size: 14px; width:15%;", + }, + { + name: "status", + align: "left", + label: "สถานะ", + sortable: true, + field: "status", + headerStyle: "font-size: 14px", + style: "font-size: 14px; width:10%;", + }, + ]) + /** + *ฟังก์ชั่นแปลงประเภทแบบฟอร์มลา + * @param item ประเภทแบบฟอร์ม + * @param subitem ประเภทแบบฟอร์มย่อย + */ + function typeConvert(item: string, subitem: any) { + // console.log('first',item) + if (item !== "LV-006" && item !== "LV-008") { + typeLeave.value = convertSubtitle(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 - * @returns ส่งค่าที่แปลงแล้ว - */ - function convertSubtitle(val: string) { - return options.value.find((x) => x.code == val)?.name; - } + /** + *ฟังก์ชั่นแปลงประเภทแบบฟอร์มลา ลาอุปสมบท/ลาประกอบพิธีฮัจญ์ + * @param val ค่า string + * @returns ส่งค่าที่แปลงแล้ว + */ + function convertSubtitle(val: string) { + return options.value.find(x => x.code == val)?.name + } - /** - *ฟังก์ชั่นแปลงประเภทแบบฟอร์มลา ลาอุปสมบท/ลาประกอบพิธีฮัจญ์ ย่อย - * @param val ค่า string - * @returns ส่งค่าที่แปลงแล้ว - */ - function convertSubtitleInfo(val: string) { - return optionsOrdination.value.find((x) => x.id == val)?.name; - } + /** + *ฟังก์ชั่นแปลงประเภทแบบฟอร์มลา ลาอุปสมบท/ลาประกอบพิธีฮัจญ์ ย่อย + * @param val ค่า string + * @returns ส่งค่าที่แปลงแล้ว + */ + function convertSubtitleInfo(val: string) { + return optionsOrdination.value.find(x => x.id == val)?.name + } - /** - *ฟังก์ชั่นแปลง ลาไปศึกษา ฝึกอบรม ปฎิบัติการวิจัย หรือดูงาน - * @param val ค่า string - * @returns ส่งค่าที่แปลงแล้ว - */ - function convertSubtitleInfo2(val: string) { - return optionsSpecific.value.find((x) => x.id == val)?.name; - } + /** + *ฟังก์ชั่นแปลง ลาไปศึกษา ฝึกอบรม ปฎิบัติการวิจัย หรือดูงาน + * @param val ค่า string + * @returns ส่งค่าที่แปลงแล้ว + */ + function convertSubtitleInfo2(val: string) { + return optionsSpecific.value.find(x => x.id == val)?.name + } - /** - *ฟังก์ชั่นหา id จาก api - * @param val ค่า string - * @returns ส่งค่าที่แปลงแล้ว - */ - function convertId(val: string) { - return options.value.find((x) => x.code == val)?.id; - } + /** + *ฟังก์ชั่นหา id จาก api + * @param val ค่า string + * @returns ส่งค่าที่แปลงแล้ว + */ + function convertId(val: string) { + return options.value.find(x => x.code == val)?.id + } - /** - *ตัวแปร profile ที่จะส่งออก - */ - const dateSendLeave = ref(); //วันที่ยื่นใบลา - const leaveTypeName = ref(""); //Name ประเภทการลา - const dear = ref(""); //เรียน - const fullName = ref(""); //คำนำหน้า ชื่อ นามสกุล ผู้ยื่นขอ - const positionName = ref(""); //ตำแหน่งผู้ยื่นขอ - const positionLevelName = ref(""); //ระดับผู้ยื่นขอ - const organizationName = ref(""); //สังกัดผู้ยื่นขอ - const leaveLimit = ref(0); //โควต้าลา(แต่ละประเภท)หน่วยเป็นวัน(ภายในปีนั้น) - const leaveTotal = ref(0); //ลาไปแล้ว(แต่ละประเภท)หน่วยเป็นวัน(ภายในปีนั้น) - const leaveRemain = ref(0); //คงเหลือโควต้า(แต่ละประเภท)หน่วยเป็นวัน(ภายในปีนั้น) - const restDayTotalOld = ref(0); //จำนวนวันลาพักผ่อนสะสม จากปีที่ผ่านมา - const birthDate = ref(); //วันเกิด - const dateAppoint = ref(); //วันที่เข้ารับราชการ - const salary = ref(0); //เงินเดือนปัจจุบัน - const salaryText = ref(""); //เงินเดือนปัจจุบัน(ภาษาไทย) - const leaveLast = ref(); - const restDayCurrentTotal = ref(""); - //ดึงข้อมูล profile จาก API - async function fetchProfile() { - await http - .post(config.API.leaveProfile(), { type: typeId.value }) - .then((res: any) => { - const data = res.data.result; - dateSendLeave.value = data.dateSendLeave; - leaveTypeName.value = data.leaveTypeName; - dear.value = data.dear; - fullName.value = data.fullName; - positionName.value = data.positionName; - positionLevelName.value = data.positionLevelName; - organizationName.value = data.organizationName; - leaveLimit.value = data.leaveLimit; - leaveTotal.value = data.leaveTotal; - leaveRemain.value = data.leaveRemain; - restDayTotalOld.value = data.restDayTotalOld; - birthDate.value = data.birthDate; - dateAppoint.value = data.dateAppoint; - salary.value = data.salary; - salaryText.value = data.salaryText; - leaveLast.value = - date2Thai(data.leaveLast) !== "0001-01-01T00:00:00" - ? date2Thai(data.leaveLast) - : "-"; - restDayCurrentTotal.value = data.restDayCurrentTotal; - }) - .catch((e: any) => { - messageError($q, e); - }); - } + /** + *ตัวแปร profile ที่จะส่งออก + */ + const dateSendLeave = ref() //วันที่ยื่นใบลา + const leaveTypeName = ref("") //Name ประเภทการลา + const dear = ref("") //เรียน + const fullName = ref("") //คำนำหน้า ชื่อ นามสกุล ผู้ยื่นขอ + const positionName = ref("") //ตำแหน่งผู้ยื่นขอ + const positionLevelName = ref("") //ระดับผู้ยื่นขอ + const organizationName = ref("") //สังกัดผู้ยื่นขอ + const leaveLimit = ref(0) //โควต้าลา(แต่ละประเภท)หน่วยเป็นวัน(ภายในปีนั้น) + const leaveTotal = ref(0) //ลาไปแล้ว(แต่ละประเภท)หน่วยเป็นวัน(ภายในปีนั้น) + const leaveRemain = ref(0) //คงเหลือโควต้า(แต่ละประเภท)หน่วยเป็นวัน(ภายในปีนั้น) + const restDayTotalOld = ref(0) //จำนวนวันลาพักผ่อนสะสม จากปีที่ผ่านมา + const birthDate = ref() //วันเกิด + const dateAppoint = ref() //วันที่เข้ารับราชการ + const salary = ref(0) //เงินเดือนปัจจุบัน + const salaryText = ref("") //เงินเดือนปัจจุบัน(ภาษาไทย) + const leaveLast = ref() + const restDayCurrentTotal = ref("") + //ดึงข้อมูล profile จาก API + async function fetchProfile() { + await http + .post(config.API.leaveProfile(), { type: typeId.value }) + .then((res: any) => { + const data = res.data.result + dateSendLeave.value = data.dateSendLeave + leaveTypeName.value = data.leaveTypeName + dear.value = data.dear + fullName.value = data.fullName + positionName.value = data.positionName + positionLevelName.value = data.positionLevelName + organizationName.value = data.organizationName + leaveLimit.value = data.leaveLimit + leaveTotal.value = data.leaveTotal + leaveRemain.value = data.leaveRemain + restDayTotalOld.value = data.restDayTotalOld + birthDate.value = data.birthDate + dateAppoint.value = data.dateAppoint + salary.value = data.salary + salaryText.value = data.salaryText + leaveLast.value = date2Thai(data.leaveLast) !== "0001-01-01T00:00:00" ? date2Thai(data.leaveLast) : "-" + restDayCurrentTotal.value = data.restDayCurrentTotal + }) + .catch((e: any) => { + messageError($q, e) + }) + } - return { - tabValue, - typeOptions, - optionsSpecific, - statusOptions, + return { + tabValue, + typeOptions, + optionsSpecific, + statusOptions, - visibleColumns, - columns, - rows, - LeaveType, - LeaveStatus, + visibleColumns, + columns, + rows, + LeaveType, + LeaveStatus, - fiscalYearyear, - options, - optionsOrdination, - typeConvert, - typeLeave, - typeId, + fiscalYearyear, + options, + optionsOrdination, + typeConvert, + typeLeave, + typeId, - fetchListLeave, - fetchLeaveType, - filterOption, - fetchProfile, + fetchListLeave, + fetchLeaveType, + filterOption, + fetchProfile, - //ส่งออกตัวแปร profileที่ได้จาก Api - dateSendLeave, - leaveTypeName, - dear, - fullName, - positionName, - positionLevelName, - organizationName, - leaveLimit, //โควต้าลา(แต่ละประเภท)หน่วยเป็นวัน(ภายในปีนั้น) - leaveTotal, //ลาไปแล้ว(แต่ละประเภท)หน่วยเป็นวัน(ภายในปีนั้น) - leaveRemain, //คงเหลือโควต้า(แต่ละประเภท)หน่วยเป็นวัน(ภายในปีนั้น) - restDayTotalOld, - birthDate, - dateAppoint, - salary, - salaryText, - leaveLast, - restDayCurrentTotal, - }; -}); + //ส่งออกตัวแปร profileที่ได้จาก Api + dateSendLeave, + leaveTypeName, + dear, + fullName, + positionName, + positionLevelName, + organizationName, + leaveLimit, //โควต้าลา(แต่ละประเภท)หน่วยเป็นวัน(ภายในปีนั้น) + leaveTotal, //ลาไปแล้ว(แต่ละประเภท)หน่วยเป็นวัน(ภายในปีนั้น) + leaveRemain, //คงเหลือโควต้า(แต่ละประเภท)หน่วยเป็นวัน(ภายในปีนั้น) + restDayTotalOld, + birthDate, + dateAppoint, + salary, + salaryText, + leaveLast, + restDayCurrentTotal, + convertStatud, + } +})