โหลดใบสมัคร
This commit is contained in:
parent
96f92a5b69
commit
428670b515
5 changed files with 312 additions and 152 deletions
|
|
@ -41,5 +41,7 @@ export default {
|
|||
candidateReview: (examId: string, positionId: string) =>
|
||||
`${candidate}review/${examId}/${positionId}`,
|
||||
candidate,
|
||||
candidateBill: (examId: string, positionId: string) => `${candidate}bill/${examId}/${positionId}`
|
||||
candidateBill: (examId: string, positionId: string) => `${candidate}bill/${examId}/${positionId}`,
|
||||
|
||||
candidateReport: (candidateId: string) => `${env.API_URI_V2}/report/candidate/pdf/${candidateId}`
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,31 +2,37 @@
|
|||
import { ref } from 'vue'
|
||||
|
||||
const env = ref<string>(process.env.NODE_ENV || 'development')
|
||||
export const apiUrlConfig = import.meta.env.VITE_API_URI_CONFIG
|
||||
export const apiUrlConfig = `${import.meta.env.VITE_API_URI_CONFIG}/v1`
|
||||
export const apiUrlConfigV2 = `${import.meta.env.VITE_API_URI_CONFIG}/v2`
|
||||
|
||||
const config = ref<any>({
|
||||
development: {
|
||||
// API_URI: 'https://localhost:7007/api/v1',
|
||||
API_URI: apiUrlConfig,
|
||||
API_URI_V2: apiUrlConfigV2,
|
||||
MEET_URI: 'meet.frappet.com'
|
||||
},
|
||||
test: {
|
||||
API_URI: 'http://localhost:5010/api/v1',
|
||||
API_URI_V2: 'http://localhost:5010/api/v2',
|
||||
MEET_URI: 'meet.frappet.com'
|
||||
},
|
||||
production: {
|
||||
// API_URI: "https://localhost:5010",
|
||||
API_URI: apiUrlConfig,
|
||||
API_URI_V2: apiUrlConfigV2,
|
||||
MEET_URI: 'meet.frappet.com'
|
||||
}
|
||||
})
|
||||
|
||||
const API_URI = ref<string>(config.value[env.value].API_URI)
|
||||
const API_URI_V2 = ref<string>(config.value[env.value].API_URI_V2)
|
||||
const MEET_URI = ref<string>(config.value[env.value].MEET_URI)
|
||||
|
||||
export default {
|
||||
env: env.value,
|
||||
config: config.value,
|
||||
API_URI: API_URI.value,
|
||||
API_URI_V2: API_URI_V2.value,
|
||||
MEET_URI: MEET_URI.value
|
||||
}
|
||||
|
|
|
|||
|
|
@ -195,6 +195,7 @@ const score_expired = ref<Date | null>(new Date())
|
|||
const number = ref<string>('')
|
||||
const reviewPoint = ref<number>(0)
|
||||
const review = ref<string>('-')
|
||||
const candidateId = ref<string>('')
|
||||
|
||||
onMounted(async () => {
|
||||
await fetchStatus()
|
||||
|
|
@ -232,6 +233,7 @@ const fetchStatus = async () => {
|
|||
positionLevel.value = data.positionLevel
|
||||
reviewPoint.value = data.reviewPoint
|
||||
review.value = data.review == null ? '-' : data.review
|
||||
candidateId.value = data.id
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e)
|
||||
|
|
@ -241,8 +243,33 @@ const fetchStatus = async () => {
|
|||
})
|
||||
}
|
||||
|
||||
const download = () => {
|
||||
window.print()
|
||||
const download = async () => {
|
||||
loaderPage(true)
|
||||
await http
|
||||
.get(config.API.candidateReport(candidateId.value), {
|
||||
responseType: 'blob'
|
||||
})
|
||||
.then((res) => {
|
||||
const data = res.data
|
||||
downloadFilePDF(data, `ใบสมัครสอบ.pdf`)
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e)
|
||||
})
|
||||
.finally(() => {
|
||||
loaderPage(false)
|
||||
})
|
||||
}
|
||||
const downloadFilePDF = async (res: string, fileName: string) => {
|
||||
const link = document.createElement('a')
|
||||
link.href = window.URL.createObjectURL(
|
||||
new Blob([res], {
|
||||
type: 'application/vnd.ms-excel'
|
||||
})
|
||||
)
|
||||
link.setAttribute('download', fileName)
|
||||
document.body.appendChild(link)
|
||||
link.click()
|
||||
}
|
||||
</script>
|
||||
|
||||
|
|
|
|||
|
|
@ -237,110 +237,176 @@ const clickSave = async () => {
|
|||
}
|
||||
|
||||
const saveData = async () => {
|
||||
if (defaultInformation.value.profileImg == null || '') {
|
||||
notifyError($q, 'กรุณาอัพโหลดรูปถ่าย')
|
||||
return
|
||||
}
|
||||
console.log(defaultInformation.value.tel)
|
||||
await formInformation.value.validate().then(async (suc: boolean) => {
|
||||
if (suc) {
|
||||
await formAddress.value.validate().then(async (suc: boolean) => {
|
||||
if (suc) {
|
||||
await formEducation.value.validate().then(async (suc: boolean) => {
|
||||
if (suc) {
|
||||
await formOccupation.value.validate().then(async (suc: boolean) => {
|
||||
if (suc) {
|
||||
await formContact.value.validate().then(async (suc: boolean) => {
|
||||
if (suc) {
|
||||
loaderPage(true)
|
||||
await http
|
||||
.post(config.API.candidateId(examId.value, positionId.value), {
|
||||
prefixId: defaultInformation.value.prefixId,
|
||||
prefixName: defaultInformation.value.prefixId,
|
||||
lastName: defaultInformation.value.lastname,
|
||||
dateOfBirth:
|
||||
defaultInformation.value.birthDate == null
|
||||
? null
|
||||
: dateToISO(defaultInformation.value.birthDate),
|
||||
citizenId: defaultInformation.value.cardid,
|
||||
firstName: defaultInformation.value.firstname,
|
||||
religionId: defaultInformation.value.religionId,
|
||||
nationality: defaultInformation.value.nationality,
|
||||
email: defaultInformation.value.email,
|
||||
mobilePhone: defaultInformation.value.phone,
|
||||
telephone: defaultInformation.value.tel,
|
||||
knowledge: defaultInformation.value.knowledge,
|
||||
occupationOrg: defaultOccupation.value.org,
|
||||
occupationPile: defaultOccupation.value.pile,
|
||||
occupationGroup: defaultOccupation.value.group,
|
||||
occupationSalary: defaultOccupation.value.salary,
|
||||
occupationPosition: defaultOccupation.value.position,
|
||||
occupationPositionType: defaultOccupation.value.positionType,
|
||||
occupationTelephone: defaultOccupation.value.tel,
|
||||
registAddress: defaultAddress.value.address,
|
||||
currentAddress: defaultAddress.value.addressC,
|
||||
registProvinceId: defaultAddress.value.provinceId,
|
||||
currentProvinceId: defaultAddress.value.provinceIdC,
|
||||
registDistrictId: defaultAddress.value.districtId,
|
||||
currentDistrictId: defaultAddress.value.districtIdC,
|
||||
registSubDistrictId: defaultAddress.value.subdistrictId,
|
||||
currentSubDistrictId: defaultAddress.value.subdistrictIdC,
|
||||
registZipCode: defaultAddress.value.code,
|
||||
currentZipCode: defaultAddress.value.codeC,
|
||||
registSame:
|
||||
defaultAddress.value.same == '1'
|
||||
? true
|
||||
: defaultAddress.value.same == '0'
|
||||
? false
|
||||
: null,
|
||||
educationLevelExamId: defaultEducation.value.educationLevelExamId,
|
||||
educationName: defaultEducation.value.educationName,
|
||||
educationMajor: defaultEducation.value.educationMajor,
|
||||
educationLocation: defaultEducation.value.educationLocation,
|
||||
educationType: defaultEducation.value.educationType,
|
||||
educationEndDate:
|
||||
defaultEducation.value.educationEndDate == null
|
||||
? null
|
||||
: dateToISO(defaultEducation.value.educationEndDate),
|
||||
educationScores: defaultEducation.value.educationScores,
|
||||
educationLevelHighId: defaultEducation.value.educationLevelHighId,
|
||||
|
||||
contactprefixId: defaultContact.value.contactprefixId,
|
||||
contactfirstname: defaultContact.value.contactfirstname,
|
||||
contactlastname: defaultContact.value.contactlastname,
|
||||
contactrelations: defaultContact.value.contactrelations,
|
||||
contacttel: defaultContact.value.contacttel
|
||||
})
|
||||
.then(async () => {
|
||||
success($q, 'บันทึกข้อมูลส่วนตัวสำเร็จ')
|
||||
if (saveAuto.value) await saveForm()
|
||||
await props.fetchStep()
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e)
|
||||
loaderPage(false)
|
||||
})
|
||||
.finally(async () => {})
|
||||
} else {
|
||||
notifyError($q, 'กรุณากรอกข้อมูลให้ครบถ้วน')
|
||||
}
|
||||
})
|
||||
} else {
|
||||
notifyError($q, 'กรุณากรอกข้อมูลให้ครบถ้วน')
|
||||
}
|
||||
})
|
||||
} else {
|
||||
notifyError($q, 'กรุณากรอกข้อมูลให้ครบถ้วน')
|
||||
}
|
||||
})
|
||||
} else {
|
||||
notifyError($q, 'กรุณากรอกข้อมูลให้ครบถ้วน')
|
||||
}
|
||||
})
|
||||
} else {
|
||||
notifyError($q, 'กรุณากรอกข้อมูลให้ครบถ้วน')
|
||||
if (saveAuto.value == true) {
|
||||
if (defaultInformation.value.profileImg == null || defaultInformation.value.profileImg == '') {
|
||||
notifyError($q, 'กรุณาอัพโหลดรูปถ่าย')
|
||||
return
|
||||
}
|
||||
})
|
||||
await formInformation.value.validate().then(async (suc: boolean) => {
|
||||
if (suc) {
|
||||
await formAddress.value.validate().then(async (suc: boolean) => {
|
||||
if (suc) {
|
||||
await formEducation.value.validate().then(async (suc: boolean) => {
|
||||
if (suc) {
|
||||
await formOccupation.value.validate().then(async (suc: boolean) => {
|
||||
if (suc) {
|
||||
await formContact.value.validate().then(async (suc: boolean) => {
|
||||
if (suc) {
|
||||
loaderPage(true)
|
||||
await http
|
||||
.post(config.API.candidateId(examId.value, positionId.value), {
|
||||
prefixId: defaultInformation.value.prefixId,
|
||||
prefixName: defaultInformation.value.prefixId,
|
||||
lastName: defaultInformation.value.lastname,
|
||||
dateOfBirth:
|
||||
defaultInformation.value.birthDate == null
|
||||
? null
|
||||
: dateToISO(defaultInformation.value.birthDate),
|
||||
citizenId: defaultInformation.value.cardid,
|
||||
firstName: defaultInformation.value.firstname,
|
||||
religionId: defaultInformation.value.religionId,
|
||||
nationality: defaultInformation.value.nationality,
|
||||
email: defaultInformation.value.email,
|
||||
mobilePhone: defaultInformation.value.phone,
|
||||
telephone: defaultInformation.value.tel,
|
||||
knowledge: defaultInformation.value.knowledge,
|
||||
occupationOrg: defaultOccupation.value.org,
|
||||
occupationPile: defaultOccupation.value.pile,
|
||||
occupationGroup: defaultOccupation.value.group,
|
||||
occupationSalary: defaultOccupation.value.salary,
|
||||
occupationPosition: defaultOccupation.value.position,
|
||||
occupationPositionType: defaultOccupation.value.positionType,
|
||||
occupationTelephone: defaultOccupation.value.tel,
|
||||
registAddress: defaultAddress.value.address,
|
||||
currentAddress: defaultAddress.value.addressC,
|
||||
registProvinceId: defaultAddress.value.provinceId,
|
||||
currentProvinceId: defaultAddress.value.provinceIdC,
|
||||
registDistrictId: defaultAddress.value.districtId,
|
||||
currentDistrictId: defaultAddress.value.districtIdC,
|
||||
registSubDistrictId: defaultAddress.value.subdistrictId,
|
||||
currentSubDistrictId: defaultAddress.value.subdistrictIdC,
|
||||
registZipCode: defaultAddress.value.code,
|
||||
currentZipCode: defaultAddress.value.codeC,
|
||||
registSame:
|
||||
defaultAddress.value.same == '1'
|
||||
? true
|
||||
: defaultAddress.value.same == '0'
|
||||
? false
|
||||
: null,
|
||||
educationLevelExamId: defaultEducation.value.educationLevelExamId,
|
||||
educationName: defaultEducation.value.educationName,
|
||||
educationMajor: defaultEducation.value.educationMajor,
|
||||
educationLocation: defaultEducation.value.educationLocation,
|
||||
educationType: defaultEducation.value.educationType,
|
||||
educationEndDate:
|
||||
defaultEducation.value.educationEndDate == null
|
||||
? null
|
||||
: dateToISO(defaultEducation.value.educationEndDate),
|
||||
educationScores: defaultEducation.value.educationScores,
|
||||
educationLevelHighId: defaultEducation.value.educationLevelHighId,
|
||||
|
||||
contactprefixId: defaultContact.value.contactprefixId,
|
||||
contactfirstname: defaultContact.value.contactfirstname,
|
||||
contactlastname: defaultContact.value.contactlastname,
|
||||
contactrelations: defaultContact.value.contactrelations,
|
||||
contacttel: defaultContact.value.contacttel
|
||||
})
|
||||
.then(async () => {
|
||||
success($q, 'บันทึกข้อมูลส่วนตัวสำเร็จ')
|
||||
await saveForm()
|
||||
await props.fetchStep()
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e)
|
||||
loaderPage(false)
|
||||
})
|
||||
.finally(async () => {})
|
||||
} else {
|
||||
notifyError($q, 'กรุณากรอกข้อมูลให้ครบถ้วน')
|
||||
}
|
||||
})
|
||||
} else {
|
||||
notifyError($q, 'กรุณากรอกข้อมูลให้ครบถ้วน')
|
||||
}
|
||||
})
|
||||
} else {
|
||||
notifyError($q, 'กรุณากรอกข้อมูลให้ครบถ้วน')
|
||||
}
|
||||
})
|
||||
} else {
|
||||
notifyError($q, 'กรุณากรอกข้อมูลให้ครบถ้วน')
|
||||
}
|
||||
})
|
||||
} else {
|
||||
notifyError($q, 'กรุณากรอกข้อมูลให้ครบถ้วน')
|
||||
}
|
||||
})
|
||||
} else {
|
||||
loaderPage(true)
|
||||
await http
|
||||
.post(config.API.candidateId(examId.value, positionId.value), {
|
||||
prefixId: defaultInformation.value.prefixId,
|
||||
prefixName: defaultInformation.value.prefixId,
|
||||
lastName: defaultInformation.value.lastname,
|
||||
dateOfBirth:
|
||||
defaultInformation.value.birthDate == null
|
||||
? null
|
||||
: dateToISO(defaultInformation.value.birthDate),
|
||||
citizenId: defaultInformation.value.cardid,
|
||||
firstName: defaultInformation.value.firstname,
|
||||
religionId: defaultInformation.value.religionId,
|
||||
nationality: defaultInformation.value.nationality,
|
||||
email: defaultInformation.value.email,
|
||||
mobilePhone: defaultInformation.value.phone,
|
||||
telephone: defaultInformation.value.tel,
|
||||
knowledge: defaultInformation.value.knowledge,
|
||||
occupationOrg: defaultOccupation.value.org,
|
||||
occupationPile: defaultOccupation.value.pile,
|
||||
occupationGroup: defaultOccupation.value.group,
|
||||
occupationSalary: defaultOccupation.value.salary,
|
||||
occupationPosition: defaultOccupation.value.position,
|
||||
occupationPositionType: defaultOccupation.value.positionType,
|
||||
occupationTelephone: defaultOccupation.value.tel,
|
||||
registAddress: defaultAddress.value.address,
|
||||
currentAddress: defaultAddress.value.addressC,
|
||||
registProvinceId: defaultAddress.value.provinceId,
|
||||
currentProvinceId: defaultAddress.value.provinceIdC,
|
||||
registDistrictId: defaultAddress.value.districtId,
|
||||
currentDistrictId: defaultAddress.value.districtIdC,
|
||||
registSubDistrictId: defaultAddress.value.subdistrictId,
|
||||
currentSubDistrictId: defaultAddress.value.subdistrictIdC,
|
||||
registZipCode: defaultAddress.value.code,
|
||||
currentZipCode: defaultAddress.value.codeC,
|
||||
registSame:
|
||||
defaultAddress.value.same == '1' ? true : defaultAddress.value.same == '0' ? false : null,
|
||||
educationLevelExamId: defaultEducation.value.educationLevelExamId,
|
||||
educationName: defaultEducation.value.educationName,
|
||||
educationMajor: defaultEducation.value.educationMajor,
|
||||
educationLocation: defaultEducation.value.educationLocation,
|
||||
educationType: defaultEducation.value.educationType,
|
||||
educationEndDate:
|
||||
defaultEducation.value.educationEndDate == null
|
||||
? null
|
||||
: dateToISO(defaultEducation.value.educationEndDate),
|
||||
educationScores: defaultEducation.value.educationScores,
|
||||
educationLevelHighId: defaultEducation.value.educationLevelHighId,
|
||||
|
||||
contactprefixId: defaultContact.value.contactprefixId,
|
||||
contactfirstname: defaultContact.value.contactfirstname,
|
||||
contactlastname: defaultContact.value.contactlastname,
|
||||
contactrelations: defaultContact.value.contactrelations,
|
||||
contacttel: defaultContact.value.contacttel
|
||||
})
|
||||
.then(async () => {
|
||||
success($q, 'บันทึกข้อมูลส่วนตัวสำเร็จ')
|
||||
await props.fetchStep()
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e)
|
||||
loaderPage(false)
|
||||
})
|
||||
.finally(async () => {})
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
|
|
|
|||
|
|
@ -47,9 +47,11 @@
|
|||
</q-tr>
|
||||
</template>
|
||||
<template #bottom="props">
|
||||
<div :props="props" class="row col-11 justify-end">
|
||||
<span class="text-weight-medium text-subtitle2">รวมระยะเวลา : <span class="q-pl-sm">{{ total }} วัน</span></span>
|
||||
</div>
|
||||
<div :props="props" class="row col-11 justify-end">
|
||||
<span class="text-weight-medium text-subtitle2"
|
||||
>รวมระยะเวลา : <span class="q-pl-sm">{{ total }}</span></span
|
||||
>
|
||||
</div>
|
||||
</template>
|
||||
</Table>
|
||||
</q-form>
|
||||
|
|
@ -127,45 +129,45 @@
|
|||
</div> -->
|
||||
<div class="col-xs-12 col-sm-6 col-md-6">
|
||||
<div class="col-xs-12 col-sm-12 col-md-12">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
:readonly="!edit"
|
||||
v-model="startDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
:enableTimePicker="false"
|
||||
@update:modelValue="clickEditRow"
|
||||
week-start="0"
|
||||
>
|
||||
<template #year="{ year }">
|
||||
{{ year + 543 }}
|
||||
</template>
|
||||
<template #year-overlay-value="{ value }">
|
||||
{{ parseInt(value + 543) }}
|
||||
</template>
|
||||
<template #trigger>
|
||||
<q-input
|
||||
:class="getClass(edit)"
|
||||
:outlined="edit"
|
||||
dense
|
||||
lazy-rules
|
||||
:borderless="!edit"
|
||||
:model-value="date2Thai(startDate)"
|
||||
:rules="[(val) => !!val || `${'กรุณาเลือกวันที่เริ่ม'}`]"
|
||||
hide-bottom-space
|
||||
:label="`${'วันที่เริ่ม'}`"
|
||||
>
|
||||
<template v-slot:prepend>
|
||||
<q-icon
|
||||
name="event"
|
||||
class="cursor-pointer"
|
||||
:style="edit ? 'color: var(--q-primary)' : 'color: var(--q-grey)'"
|
||||
>
|
||||
</q-icon>
|
||||
</template>
|
||||
</q-input>
|
||||
</template>
|
||||
</datepicker>
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
:readonly="!edit"
|
||||
v-model="startDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
:enableTimePicker="false"
|
||||
@update:modelValue="clickEditRow"
|
||||
week-start="0"
|
||||
>
|
||||
<template #year="{ year }">
|
||||
{{ year + 543 }}
|
||||
</template>
|
||||
<template #year-overlay-value="{ value }">
|
||||
{{ parseInt(value + 543) }}
|
||||
</template>
|
||||
<template #trigger>
|
||||
<q-input
|
||||
:class="getClass(edit)"
|
||||
:outlined="edit"
|
||||
dense
|
||||
lazy-rules
|
||||
:borderless="!edit"
|
||||
:model-value="date2Thai(startDate)"
|
||||
:rules="[(val) => !!val || `${'กรุณาเลือกวันที่เริ่ม'}`]"
|
||||
hide-bottom-space
|
||||
:label="`${'วันที่เริ่ม'}`"
|
||||
>
|
||||
<template v-slot:prepend>
|
||||
<q-icon
|
||||
name="event"
|
||||
class="cursor-pointer"
|
||||
:style="edit ? 'color: var(--q-primary)' : 'color: var(--q-grey)'"
|
||||
>
|
||||
</q-icon>
|
||||
</template>
|
||||
</q-input>
|
||||
</template>
|
||||
</datepicker>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-sm-6 col-md-6">
|
||||
|
|
@ -286,7 +288,7 @@ const org = ref<string | null>()
|
|||
const startDate = ref<Date>(new Date())
|
||||
const endDate = ref<Date>(new Date())
|
||||
const rangeDate = ref<string | null>()
|
||||
const total = ref<string>('0')
|
||||
const total = ref<string>('-')
|
||||
const myForm = ref<any>() //form data input
|
||||
const edit = ref<boolean>(true) //เช็คการกดปุ่มแก้ไขใน dialog
|
||||
const modal = ref<boolean>(false) //modal add detail
|
||||
|
|
@ -308,7 +310,7 @@ const visibleColumns = ref<String[]>([])
|
|||
examData.career.columns.length == 0
|
||||
? (visibleColumns.value = [
|
||||
'position',
|
||||
/*
|
||||
/*
|
||||
'pile',
|
||||
'org', */
|
||||
'type',
|
||||
|
|
@ -449,12 +451,53 @@ const calDate = async () => {
|
|||
}${dayDiff > 0 ? dayDiff + ' วัน ' : ''}`
|
||||
}
|
||||
|
||||
const calDateSplit = async (startDate: Date, endDate: Date) => {
|
||||
let _startDate = new Date(startDate.toISOString().substr(0, 10))
|
||||
let _endDate = new Date(endDate.toISOString().substr(0, 10))
|
||||
_endDate.setDate(_endDate.getDate() + 1)
|
||||
if (_startDate > _endDate) {
|
||||
const swap = _startDate
|
||||
_startDate = _endDate
|
||||
_endDate = swap
|
||||
}
|
||||
const startYear = _startDate.getFullYear()
|
||||
const february = (startYear % 4 === 0 && startYear % 100 !== 0) || startYear % 400 === 0 ? 29 : 28
|
||||
const daysInMonth = [31, february, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
|
||||
|
||||
let yearDiff = _endDate.getFullYear() - startYear
|
||||
let monthDiff = _endDate.getMonth() - _startDate.getMonth()
|
||||
if (monthDiff < 0) {
|
||||
yearDiff--
|
||||
monthDiff += 12
|
||||
}
|
||||
let dayDiff = _endDate.getDate() - _startDate.getDate()
|
||||
if (dayDiff < 0) {
|
||||
if (monthDiff > 0) {
|
||||
monthDiff--
|
||||
} else {
|
||||
yearDiff--
|
||||
monthDiff = 11
|
||||
}
|
||||
dayDiff += daysInMonth[_startDate.getMonth()]
|
||||
}
|
||||
var obj = {
|
||||
yearDiff: yearDiff,
|
||||
monthDiff: monthDiff,
|
||||
dayDiff: dayDiff
|
||||
}
|
||||
return obj
|
||||
}
|
||||
|
||||
const fetchData = async () => {
|
||||
loaderPage(true)
|
||||
await http
|
||||
.get(config.API.candidateCareer(examId.value, positionId.value))
|
||||
.then((res) => {
|
||||
const data = res.data.result
|
||||
var yearDiff = 0
|
||||
var monthDiff = 0
|
||||
var dayDiff = 0
|
||||
total.value = '-'
|
||||
rows.value = []
|
||||
data.map((r: any) => {
|
||||
rows.value.push({
|
||||
|
|
@ -462,6 +505,22 @@ const fetchData = async () => {
|
|||
startDate: new Date(r.durationStart),
|
||||
endDate: new Date(r.durationEnd)
|
||||
})
|
||||
calDateSplit(new Date(r.durationStart), new Date(r.durationEnd)).then((d) => {
|
||||
yearDiff = yearDiff + d.yearDiff
|
||||
monthDiff = monthDiff + d.monthDiff
|
||||
dayDiff = dayDiff + d.dayDiff
|
||||
if (dayDiff > 30) {
|
||||
dayDiff = dayDiff % 30
|
||||
monthDiff = monthDiff + parseInt((dayDiff / 30).toString())
|
||||
}
|
||||
if (monthDiff > 12) {
|
||||
monthDiff = monthDiff % 12
|
||||
yearDiff = yearDiff + parseInt((monthDiff / 12).toString())
|
||||
}
|
||||
total.value = `${yearDiff > 0 ? yearDiff + ' ปี ' : ''}${
|
||||
monthDiff > 0 ? monthDiff + ' เดือน ' : ''
|
||||
}${dayDiff > 0 ? dayDiff + ' วัน ' : ''}`
|
||||
})
|
||||
})
|
||||
})
|
||||
.catch((e) => {
|
||||
|
|
@ -723,7 +782,7 @@ const getClass = (val: boolean) => {
|
|||
position: fixed !important;
|
||||
top: auto !important;
|
||||
transform: none !important;
|
||||
left:auto !important;
|
||||
left: auto !important;
|
||||
margin-top: 10px;
|
||||
}
|
||||
</style>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue