From b9ece259205f54d67660123e4bca0011d01410a6 Mon Sep 17 00:00:00 2001 From: "DESKTOP-1R2VSQH\\Lenovo ThinkPad E490" Date: Mon, 25 Dec 2023 14:18:29 +0700 Subject: [PATCH] =?UTF-8?q?=E0=B8=81=E0=B8=B2=E0=B8=A3=E0=B8=A5=E0=B8=B2?= =?UTF-8?q?=20>>=20=E0=B8=8A=E0=B9=88=E0=B8=AD=E0=B8=87=E0=B8=9B=E0=B8=A3?= =?UTF-8?q?=E0=B8=B0=E0=B9=80=E0=B8=A0=E0=B8=97=E0=B9=83=E0=B8=9A=E0=B8=A5?= =?UTF-8?q?=E0=B8=B2=20(user)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/modules/05_leave/store.ts | 624 ++++++++++++++++++---------------- 1 file changed, 322 insertions(+), 302 deletions(-) diff --git a/src/modules/05_leave/store.ts b/src/modules/05_leave/store.ts index c8aee6c..cd8885b 100644 --- a/src/modules/05_leave/store.ts +++ b/src/modules/05_leave/store.ts @@ -1,324 +1,344 @@ -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 = [] - typeOptionsMain.value.push(...optionType) - typeOptions.value = typeOptionsMain.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", + }, + ]; + console.log(typeOptionsMain.value); - typeOptionsAdd.value = [] - typeOptionsAdd.value.push(...optionType) - options.value = typeOptionsAdd.value - } + const optionType = data.map((e: TypeLeave) => ({ + id: e.id, + name: e.name, + code: e.code, + })); - /** สถานะของการลา */ - 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) + typeOptionsMain.value.push(...optionType); + typeOptions.value = typeOptionsMain.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" }, - ]) + typeOptionsAdd.value = []; + typeOptionsAdd.value.push(...optionType); + options.value = typeOptionsAdd.value; + } - /** รายการประเภทการลาของ ลาอุปสมบทหรือลาประกอบพิธีฮัจญ์*/ - const optionsOrdination = ref([ - { id: "0", name: "ลาอุปสมบท", code: "0" }, - { id: "1", name: "ลาประกอบพิธีฮัจญ์", code: "1" }, - ]) + /** สถานะของการลา */ + 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); - /** 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) - } + /** + * 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" }, + ]); - /** - *ฟังก์ชั่นแปลงประเภทแบบฟอร์มลา ลาอุปสมบท/ลาประกอบพิธีฮัจญ์ - * @param val ค่า string - * @returns ส่งค่าที่แปลงแล้ว - */ - function convertSubtitle(val: string) { - return options.value.find(x => x.code == val)?.name - } + /** รายการประเภทการลาของ ลาอุปสมบทหรือลาประกอบพิธีฮัจญ์*/ + const optionsOrdination = ref([ + { id: "0", name: "ลาอุปสมบท", code: "0" }, + { id: "1", name: "ลาประกอบพิธีฮัจญ์", code: "1" }, + ]); - /** - *ฟังก์ชั่นแปลงประเภทแบบฟอร์มลา ลาอุปสมบท/ลาประกอบพิธีฮัจญ์ ย่อย - * @param val ค่า string - * @returns ส่งค่าที่แปลงแล้ว - */ - function convertSubtitleInfo(val: string) { - return optionsOrdination.value.find(x => x.id == val)?.name - } + /** 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 convertSubtitleInfo2(val: string) { - return optionsSpecific.value.find(x => x.id == val)?.name - } + /** + *ฟังก์ชั่นแปลงประเภทแบบฟอร์มลา ลาอุปสมบท/ลาประกอบพิธีฮัจญ์ + * @param val ค่า string + * @returns ส่งค่าที่แปลงแล้ว + */ + function convertSubtitle(val: string) { + return options.value.find((x) => x.code == val)?.name; + } - /** - *ฟังก์ชั่นหา id จาก api - * @param val ค่า string - * @returns ส่งค่าที่แปลงแล้ว - */ - function convertId(val: string) { - return options.value.find(x => x.code == val)?.id - } + /** + *ฟังก์ชั่นแปลงประเภทแบบฟอร์มลา ลาอุปสมบท/ลาประกอบพิธีฮัจญ์ ย่อย + * @param val ค่า string + * @returns ส่งค่าที่แปลงแล้ว + */ + function convertSubtitleInfo(val: string) { + return optionsOrdination.value.find((x) => x.id == val)?.name; + } - /** - *ตัวแปร 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) - }) - } + /** + *ฟังก์ชั่นแปลง ลาไปศึกษา ฝึกอบรม ปฎิบัติการวิจัย หรือดูงาน + * @param val ค่า string + * @returns ส่งค่าที่แปลงแล้ว + */ + function convertSubtitleInfo2(val: string) { + return optionsSpecific.value.find((x) => x.id == val)?.name; + } - return { - tabValue, - typeOptions, - optionsSpecific, - statusOptions, + /** + *ฟังก์ชั่นหา id จาก api + * @param val ค่า string + * @returns ส่งค่าที่แปลงแล้ว + */ + function convertId(val: string) { + return options.value.find((x) => x.code == val)?.id; + } - visibleColumns, - columns, - rows, - LeaveType, - LeaveStatus, + /** + *ตัวแปร 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); + }); + } - fiscalYearyear, - options, - optionsOrdination, - typeConvert, - typeLeave, - typeId, + return { + tabValue, + typeOptions, + optionsSpecific, + statusOptions, - fetchListLeave, - fetchLeaveType, - filterOption, - fetchProfile, + visibleColumns, + columns, + rows, + LeaveType, + LeaveStatus, - //ส่งออกตัวแปร profileที่ได้จาก Api - dateSendLeave, - leaveTypeName, - dear, - fullName, - positionName, - positionLevelName, - organizationName, - leaveLimit, //โควต้าลา(แต่ละประเภท)หน่วยเป็นวัน(ภายในปีนั้น) - leaveTotal, //ลาไปแล้ว(แต่ละประเภท)หน่วยเป็นวัน(ภายในปีนั้น) - leaveRemain, //คงเหลือโควต้า(แต่ละประเภท)หน่วยเป็นวัน(ภายในปีนั้น) - restDayTotalOld, - birthDate, - dateAppoint, - salary, - salaryText, - leaveLast, - restDayCurrentTotal, - convertStatud, - } -}) + fiscalYearyear, + options, + optionsOrdination, + typeConvert, + typeLeave, + typeId, + + fetchListLeave, + fetchLeaveType, + filterOption, + fetchProfile, + + //ส่งออกตัวแปร profileที่ได้จาก Api + dateSendLeave, + leaveTypeName, + dear, + fullName, + positionName, + positionLevelName, + organizationName, + leaveLimit, //โควต้าลา(แต่ละประเภท)หน่วยเป็นวัน(ภายในปีนั้น) + leaveTotal, //ลาไปแล้ว(แต่ละประเภท)หน่วยเป็นวัน(ภายในปีนั้น) + leaveRemain, //คงเหลือโควต้า(แต่ละประเภท)หน่วยเป็นวัน(ภายในปีนั้น) + restDayTotalOld, + birthDate, + dateAppoint, + salary, + salaryText, + leaveLast, + restDayCurrentTotal, + convertStatud, + }; +});