diff --git a/src/api/org/api.org.ts b/src/api/org/api.org.ts index 8ad1a24..8705ab9 100644 --- a/src/api/org/api.org.ts +++ b/src/api/org/api.org.ts @@ -54,6 +54,8 @@ export default { dataUserSalary: `${profileOrg}/salary/user`, dataUserSalaryByType: (type: string) => `${org}/profile${type}/salary/user`, dataUserAssessments: `${profileOrg}/assessments/user`, + dataUserPortfolio: `${env.API_URI}/development/portfolio/user`, + dataUserPerformance: `${env.API_URI}/evaluation/performance/user`, dataUserNopaid: `${profileOrg}/nopaid/user`, dataUserNopaidByType: (type: string) => `${org}/profile${type}/nopaid/user`, @@ -61,8 +63,7 @@ export default { dataUserCertificateByType: (emType: string, type: string) => `${org}/profile${emType}/${type}/user`, - dataUserEvaByType: (type: string) => - `${org}/profile/${type}/user`, + dataUserEvaByType: (type: string) => `${org}/profile/${type}/user`, dataUserOther: `${profileOrg}/other/user`, dataUserOtherByType: (type: string) => `${org}/profile${type}/other/user`, diff --git a/src/modules/05_leave/components/DialogDetail.vue b/src/modules/05_leave/components/DialogDetail.vue index dd0aece..163ff1b 100644 --- a/src/modules/05_leave/components/DialogDetail.vue +++ b/src/modules/05_leave/components/DialogDetail.vue @@ -140,6 +140,8 @@ const formData = reactive({ approveStep: "", dear: "", leaveRange: "", + leaveRangeEnd: "", + leaveSubTypeName: "", }); /** Form รายละเอียดข้อมูล*/ @@ -154,6 +156,7 @@ const formDataCancle = reactive({ leaveAddress: "", leaveNumber: "", leaveDetail: "", + leaveSubTypeName: "", leaveTotal: 0, leaveStartDate: new Date(), leaveEndDate: new Date(), @@ -194,8 +197,7 @@ async function fetchDataDetail(id: string) { formData.dateSendLeave = data.dateSendLeave && date2Thai(data.dateSendLeave); formData.status = data.status ?? "-"; - formData.leaveDateStart = - data.leaveStartDate && date2Thai(data.leaveStartDate); + formData.leaveDateStart = data.leaveStartDate && date2Thai(data.leaveStartDate); formData.leaveDateEnd = data.leaveEndDate && date2Thai(data.leaveEndDate); formData.leaveCount = calculateDurationYmd( data.leaveStartDate, @@ -205,9 +207,11 @@ async function fetchDataDetail(id: string) { formData.leaveAddress = data.leaveAddress ?? "-"; formData.leaveNumber = data.leaveNumber ?? "-"; formData.leaveDetail = data.leaveDetail ?? "-"; + formData.leaveSubTypeName = data.leaveSubTypeName ?? null; formData.leaveDocument = data.leaveDocument; formData.leaveDraftDocument = data.leaveDraftDocument; formData.leaveRange = data.leaveRange; + formData.leaveRangeEnd = data.leaveRangeEnd; formData.leaveLastStart = data.leaveLastStart && date2Thai(data.leaveLastStart); formData.leaveLastEnd = @@ -226,7 +230,7 @@ async function fetchDataDetail(id: string) { data.wifeDayDateBorn && date2Thai(data.wifeDayDateBorn); formData.restDayOldTotal = data.restDayOldTotal ?? "-"; formData.restDayCurrentTotal = data.restDayCurrentTotal ?? "-"; - formData.ordainDayStatus = data.ordainDayStatus ? "เคย" : "ไม่เคยบวช"; + formData.ordainDayStatus = data.ordainDayStatus; formData.ordainDayLocationName = data.ordainDayLocationName ?? "-"; formData.ordainDayLocationAddress = data.ordainDayLocationAddress ?? "-"; formData.ordainDayLocationNumber = data.ordainDayLocationNumber ?? "-"; @@ -236,9 +240,7 @@ async function fetchDataDetail(id: string) { data.ordainDayBuddhistLentName ?? "-"; formData.ordainDayBuddhistLentAddress = data.ordainDayBuddhistLentAddress ?? "-"; - formData.hajjDayStatus = data.hajjDayStatus - ? "เคย" - : "ไม่เคยไปประกอบพิธีฮัจญ์"; + formData.hajjDayStatus = data.hajjDayStatus; formData.absentDaySummon = data.absentDaySummon ?? "-"; formData.absentDayLocation = data.absentDayLocation ?? "-"; formData.absentDayRegistorDate = @@ -301,15 +303,24 @@ function checkLeaveType( checkForm.value = "FormChildbirth"; } else if (type === "LV-005") { checkForm.value = "FormHoliday"; - } else if (type === "LV-006" && ordainDayLocationName === "") { - checkForm.value = "FormHajj"; - } else if (type === "LV-006") { + } else if (type === "LV-006" && formData.leaveSubTypeName === "ลาอุปสมบท") { checkForm.value = "FormUpasom"; + } else if ( + type === "LV-006" && + formData.leaveSubTypeName === "ลาประกอบพิธีฮัจญ์" + ) { + checkForm.value = "FormHajj"; } else if (type === "LV-007") { checkForm.value = "FormCheckSelect"; - } else if (type === "LV-008" && studyDayTrainingSubject === "") { + } else if ( + type === "LV-008" && + formData.leaveSubTypeName === "ลาไปศึกษาต่อ" + ) { checkForm.value = "FormStudy"; - } else if (type === "LV-008") { + } else if ( + type === "LV-008" && + formData.leaveSubTypeName === "ลาฝึกอบรม/ปฎิบัติการวิจัย/ดูงาน" + ) { checkForm.value = "FormLeaveToTraining"; } else if (type === "LV-009") { checkForm.value = "FormLeaveToWorkInternational"; @@ -344,6 +355,7 @@ async function fetchDataCancelDetail(id: string) { formDataCancle.leaveNumber = data.leaveNumber ?? "-"; formDataCancle.leaveResonDelete = data.leaveReasonDelete ?? "-"; formDataCancle.leaveDetail = data.leaveDetail ?? "-"; + formDataCancle.leaveSubTypeName = data.leaveSubTypeName ?? null; formDataCancle.leaveDocDelete = data.leaveDocDelete ?? null; }) .catch((err) => { @@ -498,7 +510,7 @@ watch( /> - + /> -->
("type", { required: true }); const $q = useQuasar(); const dataStore = useLeaveStore(); const mixin = useCounterMixin(); -const { date2Thai, dateToISO, messageError, convertDateToAPI } = mixin; +const { + date2Thai, + dateToISO, + messageError, + convertDateToAPI, + showLoader, + hideLoader, +} = mixin; const edit = ref(true); const leaveDocumentRef = ref(null); @@ -46,6 +53,7 @@ const formDataSick = reactive({ leaveStartDate: null, leaveEndDate: null, leaveRange: "ALL", + leaveRangeEnd: "ALL", leaveTotal: "", leaveLast: null, leaveDetail: "", @@ -121,6 +129,7 @@ function onValidate() { formData.append("type", formDataSick.type); formData.append("leaveRange", formDataSick.leaveRange); + formData.append("leaveRangeEnd", formDataSick.leaveRangeEnd); formData.append( "leaveStartDate", convertDateToAPI(formDataSick.leaveStartDate) ?? "" @@ -144,12 +153,29 @@ function onValidate() { */ const isLeave = ref(true); const reasonLeave = ref(""); + +const checkDate = computed(() => { + if ( + convertDateToAPI(formDataSick.leaveStartDate) == + convertDateToAPI(formDataSick.leaveEndDate) + ) { + return true; + } else { + return false; + } +}); + async function fetchCheck() { + showLoader(); await http .post(config.API.leaveCheck(), { type: dataStore.typeId ?? null, StartLeaveDate: convertDateToAPI(formDataSick.leaveStartDate) ?? null, EndLeaveDate: convertDateToAPI(formDataSick.leaveEndDate) ?? null, + leaveRange: formDataSick.leaveRange, + leaveRangeEnd: checkDate.value + ? formDataSick.leaveRange + : formDataSick.leaveRangeEnd, }) .then((res: any) => { const data = res.data.result; @@ -162,39 +188,14 @@ async function fetchCheck() { }) .catch((e: any) => { messageError($q, e); + hideLoader(); }) .finally(() => { + hideLoader(); leaveDocumentRef.value.resetValidation(); }); } -/** - * ฟังก์ชั่นแปลงครึ่งวัน/ทั้งวัน - */ -const isReadOnly = computed(() => { - const conditionleaveRange = - formDataSick.leaveRange === "MORNING" || - formDataSick.leaveRange === "AFTERNOON"; - if (conditionleaveRange) { - formDataSick.leaveEndDate = formDataSick.leaveStartDate; // Set formDataSick.leaveEndDate to null - formDataSick.leaveTotal = 0.5; - } else { - formDataSick.leaveTotal = null; - } - return conditionleaveRange; -}); - -/** - * แก้ไขClassเมื่อ status เป็น edit - * @param val status edit true/false - */ -function inputEdit(val: boolean) { - return { - "full-width cursor-pointer ": val, - "full-width cursor-pointer inputgreen": !val, - }; -} - /** แจ้งเมื่อวันลาไม่ถูกต้อง */ const dateEndInputStyle = computed(() => { return !isLeave.value ? "input-alert" : ""; @@ -212,6 +213,7 @@ watch(props.data, () => { formDataSick.leaveTotal = props.data.leaveTotal; formDataSick.leaveDetail = props.data.leaveDetail; formDataSick.leaveRange = props.data.leaveRange; + formDataSick.leaveRangeEnd = props.data.leaveRangeEnd; leaveDocumentList.value = props.data.leaveDocument; statusCheck.value = props.data.status; formDataSick.leaveDocument = []; @@ -228,6 +230,7 @@ onMounted(() => { formDataSick.leaveTotal = props.data.leaveTotal; formDataSick.leaveDetail = props.data.leaveDetail; formDataSick.leaveRange = props.data.leaveRange; + formDataSick.leaveRangeEnd = props.data.leaveRangeEnd; leaveDocumentList.value = props.data.leaveDocument; statusCheck.value = props.data.status; leaveId.value = props.data.id; @@ -243,255 +246,297 @@ onMounted(() => {
-
- - -
- - - +
+
-
-
- - - - - - - - - - - - - +
+
+
+ + + + + +
- +
+ + + +
+ +
+
+
+ + + + + +
+ +
+ + + +
+
+
+ +
+
+
+ + + +
+ +
+ +
+
+
+
- + + /> +
- + + hide-bottom-space + bg-color="white" + /> +
- + +
+ +
+
- + - - + > + + +
diff --git a/src/modules/05_leave/components/FormLeave/03_Birth.vue b/src/modules/05_leave/components/FormLeave/03_Birth.vue index 9f481de..d851308 100644 --- a/src/modules/05_leave/components/FormLeave/03_Birth.vue +++ b/src/modules/05_leave/components/FormLeave/03_Birth.vue @@ -13,7 +13,14 @@ import type { FormRef } from "@/modules/05_leave/interface/request/BirthForm"; const $q = useQuasar(); const dataStore = useLeaveStore(); const mixin = useCounterMixin(); -const { date2Thai, dateToISO, messageError, convertDateToAPI } = mixin; +const { + date2Thai, + dateToISO, + messageError, + convertDateToAPI, + showLoader, + hideLoader, +} = mixin; const edit = ref(true); const leaveId = ref(""); @@ -46,6 +53,8 @@ const formDataBirth = reactive({ leaveEndDate: null, leaveTotal: "", leaveLast: "", + leaveRange: "ALL", + leaveRangeEnd: "ALL", leaveDetail: "", leaveDocument: [], }); @@ -115,6 +124,8 @@ function onValidate() { formData.append("leaveNumber", dataStore.telephoneNumber); formData.append("leaveDetail", formDataBirth.leaveDetail); formData.append("leaveTotal", formDataBirth.leaveTotal); + formData.append("leaveRange", formDataBirth.leaveRange); + formData.append("leaveRangeEnd", formDataBirth.leaveRangeEnd); props.onSubmit(formData, isLeave.value); } @@ -122,18 +133,36 @@ function onValidate() { const isLeave = ref(true); const reasonLeave = ref(""); + +const checkDate = computed(() => { + if ( + convertDateToAPI(formDataBirth.leaveEndDate) == + convertDateToAPI(formDataBirth.leaveStartDate) + ) { + return true; + } else { + return false; + } +}); + /** * check ว่าลาได้ไหม จาก api * @param formData */ async function fetchCheck() { + showLoader(); await http .post(config.API.leaveCheck(), { type: dataStore.typeId ?? null, StartLeaveDate: convertDateToAPI(formDataBirth.leaveStartDate) ?? null, EndLeaveDate: convertDateToAPI(formDataBirth.leaveEndDate) ?? null, + leaveRange: formDataBirth.leaveRange, + leaveRangeEnd: checkDate.value + ? formDataBirth.leaveRange + : formDataBirth.leaveRangeEnd, }) .then((res: any) => { + hideLoader(); const data = res.data.result; isLeave.value = data.isLeave; formDataBirth.leaveTotal = data.totalDate; @@ -142,6 +171,7 @@ async function fetchCheck() { : "จำนวนวันลาเกินที่กำหนด"; }) .catch((e: any) => { + hideLoader(); messageError($q, e); }); } @@ -161,6 +191,7 @@ watch(props.data, () => { formDataBirth.leaveEndDate = props.data.leaveEndDate; formDataBirth.leaveTotal = props.data.leaveTotal; formDataBirth.leaveDetail = props.data.leaveDetail; + formDataBirth.leaveRangeEnd = props.data.leaveRangeEnd; leaveDocumentList.value = props.data.leaveDocument; statusCheck.value = props.data.status; formDataBirth.leaveDocument = []; @@ -176,6 +207,8 @@ onMounted(() => { formDataBirth.leaveTotal = props.data.leaveTotal; formDataBirth.leaveDetail = props.data.leaveDetail; leaveDocumentList.value = props.data.leaveDocument; + formDataBirth.leaveRange = props.data.leaveRange; + formDataBirth.leaveRangeEnd = props.data.leaveRangeEnd; statusCheck.value = props.data.status; leaveId.value = props.data.id; } @@ -190,222 +223,293 @@ onMounted(() => {
-
- +
+
+ +
- - - - - +
+
+
+ + + + + +
- - - - - - - - - -
-
- - - +
+ + + +
- + +
+
+
+ + + + + +
+ +
+ + + +
+
+
+ +
+
+
+ + + +
+ +
+ +
+
+
+ +
+
+
+ +
+ +
+ +
+
+
+ +
+ +
+
- - - +
+ + + +
diff --git a/src/modules/05_leave/components/FormLeave/04_HelpWifeBirthForm.vue b/src/modules/05_leave/components/FormLeave/04_HelpWifeBirthForm.vue index 8dca57c..590f2ea 100644 --- a/src/modules/05_leave/components/FormLeave/04_HelpWifeBirthForm.vue +++ b/src/modules/05_leave/components/FormLeave/04_HelpWifeBirthForm.vue @@ -14,8 +14,17 @@ import type { FormRef } from "@/modules/05_leave/interface/request/HelpWifeForm" const $q = useQuasar(); const dataStore = useLeaveStore(); const mixin = useCounterMixin(); -const { date2Thai, calculateDurationYmd, dateToISO, messageError,convertDateToAPI } = mixin; +const { + date2Thai, + calculateDurationYmd, + dateToISO, + messageError, + convertDateToAPI, + showLoader, + hideLoader, +} = mixin; +const leaveText = ref(""); const edit = ref(true); const leaveId = ref(""); @@ -49,6 +58,8 @@ const formDataHelpWife = reactive({ leaveEndDate: null, leaveTotal: "", leaveDetail: "", + leaveRange: "ALL", + leaveRangeEnd: "ALL", leaveDocument: [], }); @@ -115,20 +126,22 @@ function onValidate() { formData.append("type", formDataHelpWife.type); formData.append( "leaveStartDate", - convertDateToAPI(formDataHelpWife.leaveStartDate)??'' + convertDateToAPI(formDataHelpWife.leaveStartDate) ?? "" ); formData.append( "leaveEndDate", - convertDateToAPI(formDataHelpWife.leaveEndDate)??'' + convertDateToAPI(formDataHelpWife.leaveEndDate) ?? "" ); formData.append("leaveWrote", formDataHelpWife.leaveWrote); formData.append("leaveAddress", dataStore.currentAddress); formData.append("leaveNumber", dataStore.telephoneNumber); formData.append("leaveDetail", formDataHelpWife.leaveDetail); formData.append("wifeDayName", formDataHelpWife.wifeDayName); + formData.append("leaveRange", formDataHelpWife.leaveRange); + formData.append("leaveRangeEnd", formDataHelpWife.leaveRangeEnd); formData.append( "wifeDayDateBorn", - convertDateToAPI(formDataHelpWife.wifeDayDateBorn)??'' + convertDateToAPI(formDataHelpWife.wifeDayDateBorn) ?? "" ); formData.append("leaveTotal", formDataHelpWife.leaveTotal); @@ -136,48 +149,53 @@ function onValidate() { } } -/** - * function อัพเดทค่า LeaveTotal - */ -function updateLeaveTotal() { - const newLeaveTotal = calculateDurationYmd( - formDataHelpWife.leaveStartDate, - formDataHelpWife.leaveEndDate - ); - formDataHelpWife.leaveTotal = newLeaveTotal; -} - const reasonLeave = ref(""); +const checkDate = computed(() => { + if ( + convertDateToAPI(formDataHelpWife.leaveEndDate) == + convertDateToAPI(formDataHelpWife.leaveStartDate) + ) { + return true; + } else { + return false; + } +}); /** * check ว่าลาได้ไหม จาก api * @param formData */ async function fetchCheck() { + showLoader(); await http .post(config.API.leaveCheck(), { type: dataStore.typeId ?? null, StartLeaveDate: convertDateToAPI(formDataHelpWife.leaveStartDate) ?? null, EndLeaveDate: convertDateToAPI(formDataHelpWife.leaveEndDate) ?? null, + leaveRange: formDataHelpWife.leaveRange, + leaveRangeEnd: checkDate.value + ? formDataHelpWife.leaveRange + : formDataHelpWife.leaveRangeEnd, }) .then((res: any) => { const data = res.data.result; isLeave.value = data.isLeave; formDataHelpWife.leaveTotal = data.totalDate - data.sumDateWork - data.sumDateHoliday; - reasonLeave.value = data.message ? data.message : "จำนวนวันลาเกินที่กำหนด"; + hideLoader(); }) .catch((e: any) => { messageError($q, e); + hideLoader(); }); } /** ตรวจสอบว่ามีการส่งข้อมูลเข้ามาที่ฟอร์มไหม เมื่อมีการส่งจะ map ข้อมูลเข้า v-model ของฟอร์ม */ -watch(props.data, () => { +watch(props.data, async () => { if (props.data) { formDataHelpWife.leaveWrote = props.data.leaveWrote; formDataHelpWife.wifeDayName = props.data.wifeDayName; @@ -185,6 +203,8 @@ watch(props.data, () => { formDataHelpWife.leaveStartDate = props.data.leaveStartDate; formDataHelpWife.leaveEndDate = props.data.leaveEndDate; formDataHelpWife.leaveTotal = props.data.leaveTotal; + formDataHelpWife.leaveRangeEnd = props.data.leaveRangeEnd; + formDataHelpWife.leaveRange = props.data.leaveRange; formDataHelpWife.leaveDetail = props.data.leaveDetail; formDataHelpWife.leaveDocument = []; leaveDocumentList.value = props.data.leaveDocument; @@ -193,7 +213,7 @@ watch(props.data, () => { }); /**Hook */ -onMounted(() => { +onMounted(async () => { if (props.data) { formDataHelpWife.leaveWrote = props.data.leaveWrote; formDataHelpWife.wifeDayName = props.data.wifeDayName; @@ -203,6 +223,8 @@ onMounted(() => { formDataHelpWife.leaveTotal = props.data.leaveTotal; formDataHelpWife.leaveDetail = props.data.leaveDetail; leaveDocumentList.value = props.data.leaveDocument; + formDataHelpWife.leaveRange = props.data.leaveRange; + formDataHelpWife.leaveRangeEnd = props.data.leaveRangeEnd; statusCheck.value = props.data.status; leaveId.value = props.data.id; } @@ -217,139 +239,204 @@ onMounted(() => {
- - - - - - +
+ +
- - - - - - - - -
+
+
+
+ + + + + +
+ +
+ + + +
+
+
+ +
+
+
+ + + + + +
+ +
+ + + +
+
+
+ +
+
+
+ + + +
+
+
+ +
{ />
- - - - - +
+ + + + + +
+
- + + /> +
- + + /> +
- + +
+ +
+
- - - +
+ + + +
diff --git a/src/modules/05_leave/components/FormLeave/05_VacationForm.vue b/src/modules/05_leave/components/FormLeave/05_VacationForm.vue index 1844424..2c6730d 100644 --- a/src/modules/05_leave/components/FormLeave/05_VacationForm.vue +++ b/src/modules/05_leave/components/FormLeave/05_VacationForm.vue @@ -1,7 +1,6 @@ @@ -230,141 +283,212 @@ onMounted(() => {
- +
+ +
- - - - - +
+
+
+ + + + + +
- - - - - -
(""); const edit = ref(true); const leaveId = ref(""); +const checkDate = computed(() => { + if ( + convertDateToAPI(formDataFollowSpouse.leaveEndDate) == + convertDateToAPI(formDataFollowSpouse.leaveStartDate) + ) { + return true; + } else { + return false; + } +}); /** รับ props มาจากหน้าหลัก */ const props = defineProps({ @@ -54,6 +68,8 @@ const formDataFollowSpouse = reactive({ leaveTotal: "", //จำนวนวันลา leaveTotalDay: "", //จำนวนวันลา leaveSalaryText: "", + leaveRange: "ALL", + leaveRangeEnd: "ALL", leaveSalary: 0, //เงินเดือนปัจจุบัน coupleDayName: "", //ชื่อคู่สมรส coupleDayPosition: "", //ตำแหน่งคู่สมรส @@ -173,7 +189,10 @@ function onValidate() { formDataFollowSpouse.coupleDayPosition ); // formData.append("coupleDayName", formDataFollowSpouse.coupleDayName); // - formData.append("leaveTotal", formDataFollowSpouse.leaveTotalDay); // + formData.append("leaveTotal", formDataFollowSpouse.leaveTotal); // + + formData.append("leaveRange", formDataFollowSpouse.leaveRange); + formData.append("leaveRangeEnd", formDataFollowSpouse.leaveRangeEnd); props.onSubmit(formData, isLeave.value); } } @@ -186,23 +205,34 @@ const reasonLeave = ref(""); */ const isLeave = ref(true); async function fetchCheck() { + showLoader(); await http .post(config.API.leaveCheck(), { type: dataStore.typeId ?? null, StartLeaveDate: convertDateToAPI(formDataFollowSpouse.leaveStartDate) ?? null, EndLeaveDate: convertDateToAPI(formDataFollowSpouse.leaveEndDate) ?? null, + leaveRange: formDataFollowSpouse.leaveRange, + leaveRangeEnd: checkDate.value + ? formDataFollowSpouse.leaveRange + : formDataFollowSpouse.leaveRangeEnd, }) .then((res: any) => { const data = res.data.result; isLeave.value = data.isLeave; formDataFollowSpouse.leaveTotalDay = data.totalDate; + leaveText.value = calculateDurationYmd( + formDataFollowSpouse.leaveStartDate, + formDataFollowSpouse.leaveEndDate + ); reasonLeave.value = data.message ? data.message : "จำนวนวันลาเกินที่กำหนด"; + hideLoader(); }) .catch((e: any) => { messageError($q, e); + hideLoader(); }); } @@ -250,6 +280,8 @@ watch(props.data, async () => { formDataFollowSpouse.coupleDayName = props.data.coupleDayName; formDataFollowSpouse.coupleDayPosition = props.data.coupleDayPosition; formDataFollowSpouse.coupleDayLevel = props.data.coupleDayLevel; + formDataFollowSpouse.leaveRange = props.data.leaveRange; + formDataFollowSpouse.leaveRangeEnd = props.data.leaveRangeEnd; formDataFollowSpouse.coupleDayLevelCountry = props.data.coupleDayLevelCountry; formDataFollowSpouse.coupleDayCountryHistory = @@ -266,7 +298,8 @@ watch(props.data, async () => { props.data.leaveStartDate, props.data.leaveEndDate ); - formDataFollowSpouse.leaveTotal = leaveTotal; + leaveText.value = leaveTotal; + const coupleDayTotalHistory = await calculateDurationYmd( props.data.coupleDayStartDateHistory, props.data.coupleDayEndDateHistory @@ -285,6 +318,9 @@ onMounted(async () => { formDataFollowSpouse.leaveEndDate = new Date(props.data.leaveEndDate); formDataFollowSpouse.leaveDetail = props.data.leaveDetail; formDataFollowSpouse.leaveTotal = props.data.leaveTotal; + formDataFollowSpouse.leaveRange = props.data.leaveRange; + formDataFollowSpouse.leaveRangeEnd = props.data.leaveRangeEnd; + formDataFollowSpouse.leaveSalaryText = props.data.leaveSalaryText; formDataFollowSpouse.leaveSalary = props.data.leaveSalary; formDataFollowSpouse.coupleDayName = props.data.coupleDayName; @@ -306,7 +342,8 @@ onMounted(async () => { props.data.leaveStartDate, props.data.leaveEndDate ); - formDataFollowSpouse.leaveTotal = leaveTotal; + leaveText.value = leaveTotal; + const coupleDayTotalHistory = await calculateDurationYmd( props.data.coupleDayStartDateHistory, props.data.coupleDayEndDateHistory @@ -326,144 +363,199 @@ onMounted(async () => {
- - - - - - +
+ +
- - - - - - - - +
+
+
+ + + + + +
-
+ + +
+ + + + + +
+ + + +
+ + + +
+
+
+ +
{ readonly />
-
+
{
{
{
{
{
ประวัติการลาติดตามคู่สมรสครั้งสุดท้าย
+ { borderless :enableTimePicker="false" :readonly="!edit || statusCheck === 'NEW'" + :min-date="formDataFollowSpouse.coupleDayStartDateHistory" week-start="0" @update:model-value="updateLeaveHistoryTotal()" > @@ -681,7 +775,7 @@ onMounted(async () => { (""); const leaveStartDateRef = ref(null); const leaveEndDateRef = ref(null); const leaveWroteRef = ref(null); +const leaveText = ref(""); /** รับ props มาจากหน้าหลัก */ const props = defineProps({ @@ -56,6 +57,8 @@ const formDataRehabilitation = reactive({ leaveEndDate: null, leaveDocument: [], leaveDetail: "", + leaveRange: "ALL", + leaveRangeEnd: "ALL", leaveDraftDocument: null, }); @@ -94,6 +97,9 @@ async function onValidate() { formData.append("leaveWrote", formDataRehabilitation.leaveWrote); // formData.append("leaveDetail", formDataRehabilitation.leaveDetail); // formData.append("leaveTotal", formDataRehabilitation.leaveTotal); // + + formData.append("leaveRange", formDataRehabilitation.leaveRange); + formData.append("leaveRangeEnd", formDataRehabilitation.leaveRangeEnd); props.onSubmit(formData, isLeave.value); } @@ -108,11 +114,22 @@ const fileUploadDoc = async (files: any) => { const reasonLeave = ref(""); const isLeave = ref(true); +const checkDate = computed(() => { + if ( + convertDateToAPI(formDataRehabilitation.leaveEndDate) == + convertDateToAPI(formDataRehabilitation.leaveStartDate) + ) { + return true; + } else { + return false; + } +}); + /** * check ว่าลาได้ไหม จาก api * @param formData */ -async function FetchCheck() { +async function fetchCheck() { showLoader(); await http .post(config.API.leaveCheck(), { @@ -121,11 +138,19 @@ async function FetchCheck() { convertDateToAPI(formDataRehabilitation.leaveStartDate) ?? null, EndLeaveDate: convertDateToAPI(formDataRehabilitation.leaveEndDate) ?? null, + leaveRange: formDataRehabilitation.leaveRange, + leaveRangeEnd: checkDate.value + ? formDataRehabilitation.leaveRange + : formDataRehabilitation.leaveRangeEnd, }) .then((res: any) => { const data = res.data.result; isLeave.value = data.isLeave; formDataRehabilitation.leaveTotal = data.totalDate; + leaveText.value = calculateDurationYmd( + formDataRehabilitation.leaveStartDate, + formDataRehabilitation.leaveEndDate + ); reasonLeave.value = data.message ? data.message @@ -165,7 +190,7 @@ const dateEndInputStyle = computed(() => { const leaveDocumentList = ref(); const leaveDraftDocument = ref(); const statusCheck = ref(""); -watch(props.data, () => { +watch(props.data, async () => { if (props.data) { formDataRehabilitation.leaveWrote = props.data.leaveWrote; formDataRehabilitation.leaveStartDate = new Date(props.data.leaveStartDate); @@ -173,24 +198,41 @@ watch(props.data, () => { formDataRehabilitation.leaveDetail = props.data.leaveDetail; leaveDraftDocument.value = props.data.leaveDraftDocument; leaveDocumentList.value = props.data.leaveDocument; + formDataRehabilitation.leaveRange = props.data.leaveRange; + formDataRehabilitation.leaveRangeEnd = props.data.leaveRangeEnd; formDataRehabilitation.leaveDraftDocument = null; formDataRehabilitation.leaveDocument = []; statusCheck.value = props.data.status; + const leaveTotal = await calculateDurationYmd( + props.data.leaveStartDate, + props.data.leaveEndDate + ); + leaveText.value = leaveTotal; } }); /**Hook */ -onMounted(() => { +onMounted(async () => { if (props.data) { formDataRehabilitation.leaveWrote = props.data.leaveWrote; formDataRehabilitation.leaveStartDate = new Date(props.data.leaveStartDate); formDataRehabilitation.leaveEndDate = new Date(props.data.leaveEndDate); formDataRehabilitation.leaveDetail = props.data.leaveDetail; + + formDataRehabilitation.leaveRange = props.data.leaveRange; + formDataRehabilitation.leaveRangeEnd = props.data.leaveRangeEnd; + leaveDraftDocument.value = props.data.leaveDraftDocument; leaveDocumentList.value = props.data.leaveDocument; statusCheck.value = props.data.status; leaveId.value = props.data.id; - FetchCheck(); + const leaveTotal = await calculateDurationYmd( + props.data.leaveStartDate, + props.data.leaveEndDate + ); + leaveText.value = leaveTotal; + + fetchCheck(); } }); @@ -204,154 +246,207 @@ onMounted(() => {
- +
+ +
- - - - - +
+
+
+ + + + + +
- - - - - + - +
+ + + +
+
+
- +
+ +
{ outlined readonly bg-color="white" - v-model="dataStore.dear" + v-model="dataStore.commanderPosition" label="เรียน" /> + { :props="props" @click="onClickView(props.row.id, props.row.status)" > - {{ convert(props.row) }} + {{ props.row.leaveTypeName ? `${props.row.leaveTypeName} ${props.row.leaveSubTypeName ? `(${props.row.leaveSubTypeName})`:''}`: '-' }} +import { useLeaveStore } from "@/modules/05_leave/store"; + +const store = useLeaveStore(); +const { converstType } = store; /** * รับ prop จาก component */ @@ -26,22 +30,16 @@ const props = defineProps({
ลาตั้งแต่วันที่
-
{{ props.data.leaveDateStart }}
+
{{ props.data.leaveDateStart }} {{ `${props.data.leaveRange && props.data.leaveRange !== 'ALL' ? `(${converstType(props.data.leaveRange)})`:''}` }}
ลาถึงวันที่
-
{{ props.data.leaveDateEnd }}
+
{{ props.data.leaveDateEnd }} {{ `${props.data.leaveDateStart !== props.data.leaveDateEnd ? `${props.data.leaveRangeEnd && props.data.leaveRangeEnd !== 'ALL' ? `(${converstType(props.data.leaveRangeEnd)})`:''}` :''}` }}
จำนวนวันที่ลา
- {{ - props.data.leaveRange == "ALL" - ? props.data.leaveTotal + " วัน" - : props.data.leaveRange == "MORNING" - ? "ลาครึ่งวันเช้า (0.5)" - : "ลาครึ่งวันบ่าย (0.5)" - }} + {{ props.data.leaveTotal ? props.data.leaveTotal + " วัน" : "-" }}
diff --git a/src/modules/05_leave/components/formDetail/04_HelpWifeBirthForm.vue b/src/modules/05_leave/components/formDetail/04_HelpWifeBirthForm.vue index cbc3e8e..80ec85d 100644 --- a/src/modules/05_leave/components/formDetail/04_HelpWifeBirthForm.vue +++ b/src/modules/05_leave/components/formDetail/04_HelpWifeBirthForm.vue @@ -1,4 +1,8 @@ @@ -412,32 +354,67 @@ onMounted(async () => {
- - +
+ +
+
+ + เพิ่มชื่อผลงาน + +
+
+
+ +
+
+ + ลบ + +
+
@@ -459,7 +436,6 @@ onMounted(async () => {
{ lazy-rules hide-bottom-space /> - +
+
+ + + + + +
+
@@ -494,7 +506,6 @@ onMounted(async () => {
{ @update:model-value="updateInput(formCommand)" hide-bottom-space /> - + +
+
+ + + + +
+
@@ -527,8 +574,97 @@ onMounted(async () => {
+
+ +
+
{{ item.title }}
+ +
+ + ดาวน์โหลดต้นแบบ +
+
+ + ดูไฟล์เอกสาร +
+
+
+
+
+
+ + + + +
+
+
+
+
+ -
+ -
+ -
+ -
+ -
+ -
+
diff --git a/src/modules/06_evaluate/components/step/step3.vue b/src/modules/06_evaluate/components/step/step3.vue index 8333f63..019a960 100644 --- a/src/modules/06_evaluate/components/step/step3.vue +++ b/src/modules/06_evaluate/components/step/step3.vue @@ -22,13 +22,23 @@ const evaluateId = ref(route.params.id.toString()); const emit = defineEmits(["update:file"]); const selectedItem = ref(1); -const fileName = ref([ - "1-แบบพิจารณาคุณสมบัติบุคคล", - "2-แบบแสดงรายละเอียดการเสนอผลงาน", - "3-แบบตรวจสอบความถูกต้องครบถ้วนของข้อมูลเพื่อประกอบการคัดเลือกบุคคล (เอกสารแบบ ก)", - "4-แบบประเมินคุณลักษณะบุคคล", - "5-แบบสรุปข้อมูลของผู้ขอรับการคัดเลือก (เอกสารหมายเลข 9)", - "6-ผลงานที่จะส่งประเมิน (เอกสารหมายเลข 11)", +const formTemplates = ref([ + { + title: "แบบพิจารณาคุณสมบัติบุคคล", + fileName: "1-แบบพิจารณาคุณสมบัติบุคคล", + }, + { + title: "แบบแสดงรายละเอียดการเสนอผลงาน", + fileName: "2-แบบแสดงรายละเอียดการเสนอผลงาน", + }, + { + title: "แบบประเมินคุณลักษณะบุคคล", + fileName: "4-แบบประเมินคุณลักษณะบุคคล", + }, + { + title: "ผลงานที่จะส่งประเมิน (เอกสารหมายเลข 11)", + fileName: "6-ผลงานที่จะส่งประเมิน (เอกสารหมายเลข 11)", + }, ]); /** @@ -38,7 +48,7 @@ const fileName = ref([ function handleItemClick(itemNumber: number) { store.tabPanels = itemNumber.toString(); selectedItem.value = itemNumber; - fetchDocument(fileName.value[itemNumber - 1]); + fetchDocument(formTemplates.value[itemNumber - 1].fileName); } /** @@ -50,14 +60,14 @@ async function fetchDocument(fileName: string) { evaluateId.value && (await http .get(config.API.loadFileDocument("เล่ม 1", evaluateId.value, fileName)) - .then((res) => { - downloadFile(res.data.downloadUrl); + .then(async (res) => { + await downloadFile(res.data.downloadUrl); }) .catch((err) => { messageError($q, err); }) .finally(() => { - showLoader(); + hideLoader(); })); } @@ -66,7 +76,6 @@ async function fetchDocument(fileName: string) { * @param url ลิงก์ดาวน์โหลดไฟล์ */ async function downloadFile(url: string) { - showLoader(); await axios .get(url, { responseType: "blob", @@ -81,84 +90,28 @@ async function downloadFile(url: string) { }) .catch((err) => { messageError($q, err); - }) - .finally(() => { - hideLoader(); }); } /** HooK lifecycle*/ onMounted(async () => { - await fetchDocument(fileName.value[selectedItem.value - 1]); + await fetchDocument(formTemplates.value[selectedItem.value - 1].fileName); }); diff --git a/src/modules/06_evaluate/components/step/step4.vue b/src/modules/06_evaluate/components/step/step4.vue index d4ed7b9..56d583d 100644 --- a/src/modules/06_evaluate/components/step/step4.vue +++ b/src/modules/06_evaluate/components/step/step4.vue @@ -1,7 +1,215 @@ diff --git a/src/modules/06_evaluate/components/step/step6.vue b/src/modules/06_evaluate/components/step/step6.vue index 7a37b25..9907555 100644 --- a/src/modules/06_evaluate/components/step/step6.vue +++ b/src/modules/06_evaluate/components/step/step6.vue @@ -34,36 +34,25 @@ const fileEvaluation1 = ref(); const formCommand = reactive({ commanderFullname: "", commanderPosition: "", + commanderPositionOld: "", + commanderOrg: "", + commanderOrgOld: "", commanderAboveFullname: "", commanderAbovePosition: "", + commanderAbovePositionOld: "", + commanderAboveOrgOld: "", + commanderAboveOrg: "", author: "", - subject: "", + subject: [""], assignedPosition: "", }); -/** ref input*/ -const commanderFullnameRef = ref(null); -const commanderPositionRef = ref(null); -const commanderAboveFullnameRef = ref(null); -const commanderAbovePositionRef = ref(null); -const fileEvaluation1Ref = ref(null); -const performanceRef = ref(null); -const performanceOwnerRef = ref(null); -const assignedPositionRef = ref(null); const modalView = ref(false); /** function อัปเดท ผลงาน,ผู้เซ็นเอกสาร*/ function updateInput(value: any) { const ref = { - commanderFullnameRef: commanderFullnameRef.value, - commanderPositionRef: commanderPositionRef.value, - commanderAboveFullnameRef: commanderAboveFullnameRef.value, - commanderAbovePositionRef: commanderAbovePositionRef.value, - fileEvaluation1Ref: fileEvaluation1Ref.value, downloadFile: [downloadUrl.value], - performance: performanceRef.value, - performanceOwner: performanceOwnerRef.value, - assignedPosition: assignedPositionRef.value, }; emit("update:form", value, ref); } @@ -146,17 +135,25 @@ async function fetcheSigner(id: string) { const data = res.data.result; formCommand.commanderFullname = data.commanderFullnameDoc2; formCommand.commanderPosition = data.commanderPositionDoc2; + formCommand.commanderPositionOld = data.commanderPositionOldDoc2; + formCommand.commanderOrg = data.commanderOrgDoc2; + formCommand.commanderOrgOld = data.commanderOrgOldDoc2; formCommand.commanderAboveFullname = data.commanderAboveFullnameDoc2; formCommand.commanderAbovePosition = data.commanderAbovePositionDoc2; + formCommand.commanderAbovePositionOld = + data.commanderAbovePositionOldDoc2; + formCommand.commanderAboveOrgOld = data.commanderAboveOrgOldDoc2; + formCommand.commanderAboveOrg = data.commanderAboveOrgDoc2; formCommand.author = data.authorDoc2; formCommand.subject = data.subjectDoc2; formCommand.assignedPosition = data.assignedPosition; - store.statusUpload6 = data.commanderFullnameDoc2 === null ? false : true; + store.statusUpload6 = data.isUpdated; }) - .catch(() => { - store.statusUpload6 = false; - getCommander(); + .catch((err) => { + messageError($q, err); + // store.statusUpload6 = false; + // getCommander(); }) .finally(() => { hideLoader(); @@ -181,28 +178,17 @@ async function fetchCheckDate() { const downloadUrl = ref(""); /** function เช็คไฟล์อัปโหลด*/ -function checkDoc() { - // showLoader(); - http +async function checkDoc() { + await http .get( config.API.loadFileDocument("เล่ม 2", evaluateId.value, "1-เอกสารเล่ม 2") ) .then((res: any) => { downloadUrl.value = res.data.downloadUrl; }) - .catch(() => {}) .finally(() => { - // hideLoader(); const ref = { - commanderFullnameRef: commanderFullnameRef.value, - commanderPositionRef: commanderPositionRef.value, - commanderAboveFullnameRef: commanderAboveFullnameRef.value, - commanderAbovePositionRef: commanderAbovePositionRef.value, - fileEvaluation1Ref: fileEvaluation1Ref.value, downloadFile: [downloadUrl.value], - performance: performanceRef.value, - performanceOwner: performanceOwnerRef.value, - assignedPosition: assignedPositionRef.value, }; emit("update:form", formCommand, ref); @@ -221,8 +207,15 @@ function getCommander() { }) .catch((e) => { messageError($q, e); - }) - .finally(() => {}); + }); +} + +function onAddSubject() { + formCommand.subject.push(""); +} + +function onDeleteSubject(index: number) { + formCommand.subject.splice(index, 1); } watch( @@ -273,27 +266,12 @@ onMounted(async () => {
ผลงาน
-
-
-
-
+
+
+
+
- { :rules="[(val:string) => !!val || `${'กรุณากรอกเจ้าของผลงาน'}`]" lazy-rules /> +
+
{ label="ตำแหน่งที่ได้รับ" hide-bottom-space :rules="[ - (val:string) => !!val || `${'กรุณากรอกตำแหน่งที่ได้รับ'}`, - ]" + (val:string) => !!val || `${'กรุณากรอกตำแหน่งที่ได้รับ'}`, + ]" lazy-rules />
+ +
+ + เพิ่มชื่อผลงาน + +
+ +
+
+ +
+
+ + ลบ + +
+
@@ -340,8 +369,7 @@ onMounted(async () => {
{ lazy-rules hide-bottom-space /> - +
+
+ + + + + +
+
@@ -376,8 +448,7 @@ onMounted(async () => {
{ @update:model-value="updateInput(formCommand)" hide-bottom-space /> - + +
+
+ + + + +
+
@@ -434,7 +549,6 @@ onMounted(async () => {
{ - downloadFile(res.data.downloadUrl); + .then(async (res) => { + await downloadFile(res.data.downloadUrl); }) .catch((err) => { messageError($q, err); + }) + .finally(() => { + hideLoader(); })); } @@ -63,9 +66,6 @@ async function downloadFile(url: string) { }) .catch((err) => { messageError($q, err); - }) - .finally(() => { - hideLoader(); }); } diff --git a/src/modules/06_evaluate/components/step/step8.vue b/src/modules/06_evaluate/components/step/step8.vue index cd8dcf2..ef226e4 100644 --- a/src/modules/06_evaluate/components/step/step8.vue +++ b/src/modules/06_evaluate/components/step/step8.vue @@ -69,20 +69,20 @@ async function fetchPathUpload( showLoader(); await http .post(config.API.loadPathDocument(volume, id), body) - .then((res) => { + .then(async (res) => { const foundKey: string | undefined = Object.keys(res.data).find( (key) => res.data[key]?.fileName !== undefined && res.data[key]?.fileName !== "" ); - foundKey && uploadfile(res.data[foundKey]?.uploadUrl, file); + foundKey && (await uploadfile(res.data[foundKey]?.uploadUrl, file)); }) .catch((err) => { messageError($q, err); + }) + .finally(() => { hideLoader(); }); - // .finally(() => { - // }); } } @@ -103,16 +103,12 @@ async function uploadfile(uploadUrl: string, file: any) { }) .catch((err) => { messageError($q, err); - }) - .finally(() => { - hideLoader(); }); } const downloadUrl = ref(""); /** function เช็คไฟล์อัปโหลด*/ function checkDoc() { - showLoader(); http .get( config.API.loadFileDocument( @@ -123,12 +119,6 @@ function checkDoc() { ) .then((res: any) => { downloadUrl.value = res.data.downloadUrl; - }) - .catch((e) => { - // messageError($q, e); - }) - .finally(() => { - hideLoader(); }); } @@ -141,7 +131,6 @@ const assignedPosition = ref(""); * @param id ประเมิน */ async function fetcheSigner(id: string) { - showLoader(); await http .get(config.API.evaluationSignerDoc2(id)) .then((res) => { @@ -151,16 +140,21 @@ async function fetcheSigner(id: string) { assignedPosition.value = data.assignedPosition; evaluationResult.value = data.evaluationResult; }) - .catch(() => {}) - .finally(() => { - hideLoader(); + .catch((err) => { + messageError($q, err); }); } /** lifecycleHook*/ onMounted(async () => { - await checkDoc(); - await fetcheSigner(evaluateId.value); + try { + showLoader(); + await Promise.all([checkDoc(), fetcheSigner(evaluateId.value)]); + } catch (error) { + console.log(error); + } finally { + hideLoader(); + } }); @@ -178,7 +172,12 @@ onMounted(async () => { />
-
+
เอกสารเล่ม 2 (ฉบับแก้ไข)
diff --git a/src/modules/06_evaluate/components/viewstep/popupHistory.vue b/src/modules/06_evaluate/components/viewstep/popupHistory.vue index 90af293..fd03ab9 100644 --- a/src/modules/06_evaluate/components/viewstep/popupHistory.vue +++ b/src/modules/06_evaluate/components/viewstep/popupHistory.vue @@ -73,7 +73,7 @@ const columns = ref([ style: "font-size: 14px", }, ]); -const row = ref(); +const row = ref([]); /** * function เรียกข้อมูลประวัติการประเมิน diff --git a/src/modules/06_evaluate/components/viewstep/viewStep1.vue b/src/modules/06_evaluate/components/viewstep/viewStep1.vue index dfc9002..d749a44 100644 --- a/src/modules/06_evaluate/components/viewstep/viewStep1.vue +++ b/src/modules/06_evaluate/components/viewstep/viewStep1.vue @@ -1,5 +1,6 @@ +div @@ -556,7 +617,6 @@ onMounted(async () => { -
@@ -577,24 +637,187 @@ onMounted(async () => { ประสบการณ์ในการปฏิบัติงาน
-
-
+
- ผลงานที่เคยเสนอขอประเมิน (ถ้ามี) + ผลงานที่เคยเสนอขอประเมิน (ถ้ามี) + + เพิ่มข้อมูล +
-
-
- +
+
+ + + + + +
+
+ + + + + + + +
+
+ + + + + +
+
+ +
+
+ +
+
+ +
+
+
+ + + + +
+
+