ดาวน์โหลด/อัปโหลดแบบฟอร์ม
@@ -254,7 +318,7 @@ function onValidate() {
อัปโหลด
-
+
@@ -262,7 +326,7 @@ function onValidate() {
- อัปโหลด
+ อัปโหลด
diff --git a/src/modules/05_leave/componenst/Forms/12_FollowSpouseForm.vue b/src/modules/05_leave/componenst/Forms/12_FollowSpouseForm.vue
index 670c3c6..b2da1c6 100644
--- a/src/modules/05_leave/componenst/Forms/12_FollowSpouseForm.vue
+++ b/src/modules/05_leave/componenst/Forms/12_FollowSpouseForm.vue
@@ -2,9 +2,17 @@
import { ref, reactive, watch, computed, onMounted } from "vue"
import type { FormData, FormRef } from "@/modules/05_leave/interface/request/FollowSpouseForm"
import { useCounterMixin } from "@/stores/mixin"
+import { useLeaveStore } from "@/modules/05_leave/store"
+import { useQuasar } from "quasar"
+import http from "@/plugins/http"
+import config from "@/app.config"
+import { useRouter } from "vue-router"
+const dataStore = useLeaveStore()
+const $q = useQuasar()
const mixin = useCounterMixin()
-const { date2Thai, arabicNumberToText, calculateDurationYmd } = mixin
+const router = useRouter()
+const { dialogConfirm, date2Thai, arabicNumberToText, calculateDurationYmd, dateToISO, success, messageError } = mixin
const edit = ref
(true)
/** รับ props มาจากหน้าหลัก */
@@ -20,29 +28,30 @@ const props = defineProps({
})
/** ข้อมูล v-model ของฟอร์ม */
-const formData = reactive({
+const formDataFollowSpouse = reactive({
+ type: dataStore.typeId,
leaveWrote: "",
leaveStartDate: null,
leaveEndDate: null,
leaveTotal: "", //จำนวนวันลา
- salaryText: 25000,
+ leaveSalaryText: 25000,
leaveSalary: 25000, //เงินเดือนปัจจุบัน
coupleDayName: "", //ชื่อคู่สมรส
coupleDayPosition: "", //ตำแหน่งคู่สมรส
coupleDayLevel: "", //ระดับคู่สมรส
coupleDayLevelCountry: "", //ไปปฏิบัติราชการ ณ ประเทศ
- followHistoryCountry: "", //ประวัติการลาติดตามคู่สมรส
- followHistoryTime: "",
- followHistoryStart: null,
- followHistoryEnd: null,
+ followHistoryCountry: "ลาว", //ประวัติการลาติดตามคู่สมรส
+ followHistoryTime: "0 วัน",
+ followHistoryStart: new Date(),
+ followHistoryEnd: new Date(),
leaveDetail: "ในกรณีลาติดต่อกับครั้งก่อน รวมทั้งนี้ด้วย เป็นเวลา ...ปี, ...เดือน, ...วัน", //รายละเอียดการลา
leaveDocument: [], //เอกสารปะกอบ
})
/** แปลงตัวแปร Salary */
-const formattSalaryText = arabicNumberToText(formData.salaryText)
+const formattleaveSalaryText = arabicNumberToText(formDataFollowSpouse.leaveSalaryText)
const formattSalary = computed(() => {
- return formData.leaveSalary !== null ? formData.leaveSalary.toLocaleString("th-TH") : ""
+ return formDataFollowSpouse.leaveSalary !== null ? formDataFollowSpouse.leaveSalary.toLocaleString("th-TH") : ""
})
/** ตัวแปร ref สำหรับแสดง validate */
@@ -86,15 +95,16 @@ const FormRef: FormRef = {
/** ตรวจสอบว่ามีการส่งข้อมูลเข้ามาที่ฟอร์มไหม เมื่อมีการส่งจะ map ข้อมูลเข้า v-model ของฟอร์ม */
watch(props.data, async () => {
// console.log("data==>", props.data)
- formData.leaveWrote = props.data.leaveWrote
- formData.leaveStartDate = props.data.leaveStartDate
- formData.leaveEndDate = props.data.leaveEndDate
- formData.leaveTotal = props.data.leaveTotal
- formData.leaveDetail = props.data.leaveDetail
- formData.leaveDocument = props.data.leaveDocument
+ formDataFollowSpouse.leaveWrote = props.data.leaveWrote
+ formDataFollowSpouse.leaveStartDate = props.data.leaveStartDate
+ formDataFollowSpouse.leaveEndDate = props.data.leaveEndDate
+ formDataFollowSpouse.leaveTotal = props.data.leaveTotal
+ formDataFollowSpouse.leaveDetail = props.data.leaveDetail
+ formDataFollowSpouse.leaveDocument = props.data.leaveDocument
})
/** ส่วนของการประกาศและเลือกไฟล์เอกสารประกอบ */
+const nameFile = ref("")
const fileDocDataUpload = ref([])
const fileUploadDoc = async (files: any) => {
files.forEach((file: any) => {
@@ -115,16 +125,66 @@ function onValidate() {
}
}
if (hasError.every(result => result === true)) {
- props.onSubmit(formData)
+ onSubmit()
}
}
+/** ฟังก์ชั่น บันทึก */
+const onSubmit = async () => {
+ dialogConfirm(
+ $q,
+ async () => {
+ await saveFormData()
+ },
+ "ยืนยันการยื่นใบลา",
+ "ต้องการยืนยันการยื่นใบลานี้ใช่หรือไม่ ?"
+ )
+
+ console.log("save")
+}
+
+async function saveFormData() {
+ const formData = new FormData()
+ const blob = formDataFollowSpouse.leaveDocument.slice(0, formDataFollowSpouse.leaveDocument[0].size)
+ const newFile = new File(blob, nameFile.value, {
+ type: formDataFollowSpouse.leaveDocument[0].type,
+ })
+
+ formData.append("leaveDocument", newFile) //
+ formData.append("type", formDataFollowSpouse.type) //
+ formData.append("leaveStartDate", dateToISO(formDataFollowSpouse.leaveStartDate)) //
+ formData.append("leaveEndDate", dateToISO(formDataFollowSpouse.leaveEndDate)) //
+ formData.append("followHistoryStart", dateToISO(formDataFollowSpouse.followHistoryStart)) //
+ formData.append("followHistoryEnd", dateToISO(formDataFollowSpouse.followHistoryEnd)) //
+ formData.append("leaveWrote", formDataFollowSpouse.leaveWrote) //
+ formData.append("leaveDetail", formDataFollowSpouse.leaveDetail) //
+ formData.append("leaveSalaryText", formDataFollowSpouse.leaveSalaryText) //
+ formData.append("leaveSalary", formDataFollowSpouse.leaveSalary) //
+ formData.append("followHistoryTime", formDataFollowSpouse.followHistoryTime) //
+ formData.append("followHistoryCountry", formDataFollowSpouse.followHistoryCountry) //
+ formData.append("coupleDayLevelCountry", formDataFollowSpouse.coupleDayLevelCountry) //
+ formData.append("coupleDayLevel", formDataFollowSpouse.coupleDayLevel) //
+ formData.append("coupleDayPosition", formDataFollowSpouse.coupleDayPosition) //
+ formData.append("coupleDayName", formDataFollowSpouse.coupleDayName) //
+ formData.append("leaveTotal", formDataFollowSpouse.leaveTotal) //
+
+ await http
+ .post(config.API.leaveUser(), formData)
+ .then((res: any) => {
+ success($q, "บันทึกสำเร็จ")
+ router.push(`/leave`)
+ })
+ .catch((e: any) => {
+ messageError($q, e)
+ })
+}
+
/**
* function อัพเดทค่า LeaveTotal
*/
function updateLeaveTotal() {
- const newLeaveTotal = calculateDurationYmd(formData.leaveStartDate, formData.leaveEndDate)
- formData.leaveTotal = newLeaveTotal
+ const newLeaveTotal = calculateDurationYmd(formDataFollowSpouse.leaveStartDate, formDataFollowSpouse.leaveEndDate)
+ formDataFollowSpouse.leaveTotal = newLeaveTotal
console.log("test")
}
@@ -145,7 +205,7 @@ function updateLeaveTotal() {
hide-bottom-space
bg-color="white"
outlined
- v-model="formData.leaveWrote"
+ v-model="formDataFollowSpouse.leaveWrote"
label="เขียนที่"
:readonly="!edit"
:rules="[val => !!val || `${'เขียนที่'}`]"
@@ -153,7 +213,7 @@ function updateLeaveTotal() {
@@ -192,7 +252,7 @@ function updateLeaveTotal() {
{{ year + 543 }}
@@ -217,9 +277,9 @@ function updateLeaveTotal() {
for="leaveEndDateRef"
hide-bottom-space
bg-color="white"
- :readonly="!formData.leaveStartDate"
+ :readonly="!formDataFollowSpouse.leaveStartDate"
class="full-width datepicker"
- :model-value="formData.leaveEndDate != null ? date2Thai(formData.leaveEndDate) : null"
+ :model-value="formDataFollowSpouse.leaveEndDate != null ? date2Thai(formDataFollowSpouse.leaveEndDate) : null"
:label="`${'ลาถึงวันที่'}`"
:rules="[val => !!val || `${'กรุณาเลือกลาถึงวันที่'}`]"
>
@@ -236,7 +296,7 @@ function updateLeaveTotal() {
outlined
ref="leaveTotalRef"
for="leaveTotalRef"
- v-model="formData.leaveTotal"
+ v-model="formDataFollowSpouse.leaveTotal"
label="เป็นเวลา"
readonly
hide-bottom-space
@@ -264,7 +324,7 @@ function updateLeaveTotal() {
for="leaveSalaryRef"
dense
outlined
- v-model="formattSalaryText"
+ v-model="formattleaveSalaryText"
label="เงินเดือนปัจจุบัน"
readonly
/>
@@ -279,7 +339,7 @@ function updateLeaveTotal() {
dense
bg-color="white"
outlined
- v-model="formData.coupleDayName"
+ v-model="formDataFollowSpouse.coupleDayName"
label="ชื่อคู่สมรส"
:readonly="!edit"
:rules="[val => !!val || `${'ชื่อคู่สมรส'}`]"
@@ -294,7 +354,7 @@ function updateLeaveTotal() {
dense
outlined
bg-color="white"
- v-model="formData.coupleDayPosition"
+ v-model="formDataFollowSpouse.coupleDayPosition"
label="ตำแหน่งคู่สมรส"
:readonly="!edit"
:rules="[val => !!val || `${'ตำแหน่งคู่สมรส'}`]"
@@ -309,7 +369,7 @@ function updateLeaveTotal() {
hide-bottom-space
outlined
bg-color="white"
- v-model="formData.coupleDayLevel"
+ v-model="formDataFollowSpouse.coupleDayLevel"
label="ระดับคู่สมรส"
:readonly="!edit"
:rules="[val => !!val || `${'ระดับคู่สมรส'}`]"
@@ -324,7 +384,7 @@ function updateLeaveTotal() {
dense
outlined
bg-color="white"
- v-model="formData.coupleDayLevelCountry"
+ v-model="formDataFollowSpouse.coupleDayLevelCountry"
label="ไปปฏิบัติราชการ ณ ประเทศ"
:readonly="!edit"
:rules="[val => !!val || `${'ปฏิบัติราชการ ณ ประเทศ'}`]"
@@ -334,14 +394,14 @@ function updateLeaveTotal() {
{{ year + 543 }}
@@ -356,10 +416,10 @@ function updateLeaveTotal() {
ref="followHistoryStartRef"
for="followHistoryStartRef"
hide-bottom-space
- :readonly="formData.followHistoryStart !== null"
+ :readonly="formDataFollowSpouse.followHistoryStart !== null"
bg-color="white"
class="full-width datepicker"
- :model-value="formData.followHistoryStart != null ? date2Thai(formData.followHistoryStart) : null"
+ :model-value="formDataFollowSpouse.followHistoryStart != null ? date2Thai(formDataFollowSpouse.followHistoryStart) : null"
:label="`${'ตั้งแต่วันที่'}`"
:rules="[val => !!val || `${'กรุณาเลือกตั้งแต่วันที่'}`]"
>
@@ -372,14 +432,14 @@ function updateLeaveTotal() {
{{ year + 543 }}
@@ -395,9 +455,9 @@ function updateLeaveTotal() {
for="followHistoryEndRef"
hide-bottom-space
bg-color="white"
- :readonly="formData.followHistoryEnd !== null"
+ :readonly="formDataFollowSpouse.followHistoryEnd !== null"
class="full-width datepicker"
- :model-value="formData.followHistoryEnd != null ? date2Thai(formData.followHistoryEnd) : null"
+ :model-value="formDataFollowSpouse.followHistoryEnd != null ? date2Thai(formDataFollowSpouse.followHistoryEnd) : null"
:label="`${'ถึงวันที่'}`"
:rules="[val => !!val || `${'กรุณาเลือกถึงวันที่'}`]"
>
@@ -415,21 +475,21 @@ function updateLeaveTotal() {
bg-color="white"
ref="followHistoryCountryRef"
for="followHistoryCountryRef"
- v-model="formData.followHistoryCountry"
+ v-model="formDataFollowSpouse.followHistoryCountry"
label="ประเทศ"
:rules="[val => !!val || `${'กรุณาเลือกประเทศ'}`]"
- :readonly="formData.followHistoryCountry !== ''"
+ :readonly="formDataFollowSpouse.followHistoryCountry !== ''"
/>
@@ -442,12 +502,23 @@ function updateLeaveTotal() {
outlined
ref="leaveDetailRef"
for="leaveDetailRef"
- v-model="formData.leaveDetail"
+ v-model="formDataFollowSpouse.leaveDetail"
label="รายละเอียด"
:readonly="!edit"
/>
-
+
@@ -459,7 +530,7 @@ function updateLeaveTotal() {