diff --git a/package.json b/package.json index 6e2ddd2c2..75b2a4f43 100644 --- a/package.json +++ b/package.json @@ -30,11 +30,13 @@ "axios": "^1.6.7", "bma-org-chart": "^0.0.8", "esri-loader": "^3.7.0", + "exceljs": "^4.4.0", "html-to-image": "^1.11.13", "keycloak-js": "^20.0.2", "moment": "^2.29.4", "pdf-lib": "^1.17.1", "pinia": "^2.0.29", + "pinia-plugin-persistedstate": "^3.2.3", "quasar": "^2.11.1", "socket.io-client": "^4.7.4", "structure-chart": "^0.0.9", diff --git a/public/File/ข้อมูลผู้สมัครสอบ.xlsx b/public/File/ข้อมูลผู้สมัครสอบ.xlsx index 0611f9be0..8506e75b6 100644 Binary files a/public/File/ข้อมูลผู้สมัครสอบ.xlsx and b/public/File/ข้อมูลผู้สมัครสอบ.xlsx differ diff --git a/public/File/บัญชีรวมคะแนน.xlsx b/public/File/บัญชีรวมคะแนน.xlsx index 3fda2b8dc..9c555c814 100644 Binary files a/public/File/บัญชีรวมคะแนน.xlsx and b/public/File/บัญชีรวมคะแนน.xlsx differ diff --git a/public/File/ผลการสอบ (บัญชีรายชื่อ).xlsx b/public/File/ผลการสอบ (บัญชีรายชื่อ).xlsx index 3e012c58c..2e584fc57 100644 Binary files a/public/File/ผลการสอบ (บัญชีรายชื่อ).xlsx and b/public/File/ผลการสอบ (บัญชีรายชื่อ).xlsx differ diff --git a/src/api/02_organizational/api.organization.ts b/src/api/02_organizational/api.organization.ts index bcb7e54d9..b30ec3ec1 100644 --- a/src/api/02_organizational/api.organization.ts +++ b/src/api/02_organizational/api.organization.ts @@ -192,6 +192,8 @@ export default { `${orgProfile}/keycloak/permissionProfile/${rootId}`, profileidPosition: (type: string) => `${orgProfile}${type}/profileid/position`, + uploadProfile: (type: string, id: string) => + `${organization}/upload/${type}-profileSalaryTemp/${id}`, workflowCommanderOperate: `${workflow}/commander/operate`, workflowCommanderSign: `${workflow}/commander/sign`, diff --git a/src/api/05_placement/api.placement.ts b/src/api/05_placement/api.placement.ts index a810db909..b6459a850 100644 --- a/src/api/05_placement/api.placement.ts +++ b/src/api/05_placement/api.placement.ts @@ -27,6 +27,7 @@ export default { placementDefermentInfo: (id: string) => `${placement}/pass/deferment/${id}`, placementDisclaimInfo: (id: string) => `${placement}/pass/disclaim/${id}`, placementUpdatePass: `${placement}/pass/update-status`, + placementUpdateDraftStatus: `${placement}/update/draft-status`, //personal placementPersonalId: (personalId: string) => diff --git a/src/api/09_leave/api.leave.ts b/src/api/09_leave/api.leave.ts index 865db4ea6..d0229b204 100644 --- a/src/api/09_leave/api.leave.ts +++ b/src/api/09_leave/api.leave.ts @@ -61,4 +61,6 @@ export default { leaveReportAPI: (type: string) => `${leave}/report/download/time-records/${type}`, + + leaveTask: `${leave}/admin/leave-task/process`, }; diff --git a/src/api/recruiting/api.period-exam.ts b/src/api/recruiting/api.period-exam.ts index 0df5e58ed..bf777e193 100644 --- a/src/api/recruiting/api.period-exam.ts +++ b/src/api/recruiting/api.period-exam.ts @@ -96,4 +96,8 @@ export default { applicationFormPDF: (candidateId: string) => `${env.API_URI}/placement/candidate/pdf/${candidateId}`, + + downloadCandidateExam: (id: string) => + `${periodExam}download/candidate-exam/${id}`, + downloadPassExam: (id: string) => `${periodExam}download/pass-exam/${id}`, }; diff --git a/src/api/recruiting/api.recruit.ts b/src/api/recruiting/api.recruit.ts index 3a9f220a8..8bfda023b 100644 --- a/src/api/recruiting/api.recruit.ts +++ b/src/api/recruiting/api.recruit.ts @@ -23,6 +23,7 @@ export default { uploadCandidates: (id: string) => `${recruit}candidate/${id}`, uploadResult: (id: string) => `${recruit}result/${id}`, getImportHistory: (id: string) => `${recruit}history/${id}`, + getImportStatus: (jobId: string) => `${recruit}import/status/${jobId}`, //upload periodRecruitDoc: (examId: string) => `${recruit}doc/${examId}`, diff --git a/src/api/registry/api.registry.ts b/src/api/registry/api.registry.ts index 0cbfc086e..f3378e539 100644 --- a/src/api/registry/api.registry.ts +++ b/src/api/registry/api.registry.ts @@ -272,4 +272,10 @@ export default { profileAssistanceReturn: `${env.API_URI}/placement/repatriation`, profileAssistanceUpdateDelete: (type: string) => `${registryNew}${type}/assistance/update-delete/`, + + profileAbsentLate: (type: string) => `${registryNew}${type}/absent-late`, + profileAbsentLateUpdateDelete: (type: string) => `${registryNew}${type}/absent-late/update-delete`, + profileAbsentLateHistory: (id: string, type: string) => + `${registryNew}${type}/absent-late/history/${id}`, + }; diff --git a/src/components/CardProfile.vue b/src/components/CardProfile.vue index d6b9fe4cf..72fe7aad0 100644 --- a/src/components/CardProfile.vue +++ b/src/components/CardProfile.vue @@ -43,9 +43,9 @@ async function fetchDataProfile(data: DataProfile) { profile.avatar = data?.avatar ? data.avatar : ""; } profile.id = data.profileId; - profile.fullName = `${data.prefix ?? ""}${data.firstName ?? ""} ${ - data.lastName ?? "" - } `; + profile.fullName = `${data.rank ? data.rank : data.prefix ?? ""}${ + data.firstName ?? "" + } ${data.lastName ?? ""} `; if (data["posTypeNameOld"] !== undefined) { profile.position = diff --git a/src/components/Dialogs/AddPersonal.vue b/src/components/Dialogs/AddPersonal.vue index 6003ace6f..89b5f803a 100644 --- a/src/components/Dialogs/AddPersonal.vue +++ b/src/components/Dialogs/AddPersonal.vue @@ -305,7 +305,7 @@ watch( outlined option-label="name" option-value="id" - @update:model-value="rows = []" + @update:model-value="(rows = []), (selected = [])" /> @@ -332,6 +332,7 @@ watch( outlined dense label="คำค้น" + @keydown.enter.prevent="searchInput()" > diff --git a/src/modules/03_recruiting/views/01_compete/Period.vue b/src/modules/03_recruiting/views/01_compete/Period.vue index d281f6d49..925462154 100644 --- a/src/modules/03_recruiting/views/01_compete/Period.vue +++ b/src/modules/03_recruiting/views/01_compete/Period.vue @@ -1,7 +1,7 @@ diff --git a/src/modules/03_recruiting/views/02_qualify/manageDetail.vue b/src/modules/03_recruiting/views/02_qualify/manageDetail.vue index 46f60a5cd..badb61bf4 100644 --- a/src/modules/03_recruiting/views/02_qualify/manageDetail.vue +++ b/src/modules/03_recruiting/views/02_qualify/manageDetail.vue @@ -260,7 +260,6 @@ async function fetchData(loading: boolean = true) { total.value = data.total; maxPage.value = await Math.ceil(data.total / pageSize.value); maxPage.value = maxPage.value < 1 ? 1 : maxPage.value; - rows.value = []; data.data.map((r: any) => { rows.value.push({ @@ -402,6 +401,7 @@ onMounted(async () => { await fetchDataCom(); }); + + diff --git a/src/modules/04_registryPerson/components/detail/Achievement/03_Insignia.vue b/src/modules/04_registryPerson/components/detail/Achievement/03_Insignia.vue index 5da6c11e0..e08b1a073 100644 --- a/src/modules/04_registryPerson/components/detail/Achievement/03_Insignia.vue +++ b/src/modules/04_registryPerson/components/detail/Achievement/03_Insignia.vue @@ -92,7 +92,7 @@ const baseColumns = ref([ field: "year", headerStyle: "font-size: 14px", style: "font-size: 14px", - format: (v) => v + 543, + format: (v) => (v ? v + 543 : "-"), sort: (a: string, b: string) => a .toString() @@ -920,9 +920,11 @@ onMounted(async () => { :locale="'th'" :enableTimePicker="false" > - +