+
-
+
-
+
-
+
-
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);
});
- แบบพิจารณาคุณสมบัติบุคคล
-
-
- แบบแสดงรายละเอียดการเสนอผลงาน
-
-
- แบบตรวจสอบความถูกต้องครบถ้วนของข้อมูลเพื่อประกอบการคัดเลือกบุคคล
- (เอกสารแบบ ก)
-
-
- แบบประเมินคุณลักษณะบุคคล
-
-
-
- แบบสรุปข้อมูลของผู้ขอรับการคัดเลือก (เอกสารหมายเลข 9)
-
-
-
- ผลงานที่จะส่งประเมิน (เอกสารหมายเลข 11)
+ {{ item.title }}
diff --git a/src/modules/06_evaluate/components/step/step4.vue b/src/modules/06_evaluate/components/step/step4.vue
index d4ed7b9..839f63b 100644
--- a/src/modules/06_evaluate/components/step/step4.vue
+++ b/src/modules/06_evaluate/components/step/step4.vue
@@ -1,7 +1,215 @@
@@ -15,6 +223,91 @@ const status = ref("WAIT_CHECK_DOC_V1");
style="font-size: 16px"
/>
+
+
+
+
+
+
{{ item.title }}
+
+
+
+
+ ดูไฟล์เอกสาร
+
+
+
+
+
+
+
+
+
+
+
+ อัปโหลดไฟล์
+
+
+
+
+
+
+
+
diff --git a/src/modules/06_evaluate/components/step/step6.vue b/src/modules/06_evaluate/components/step/step6.vue
index 7a37b25..450c22b 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
@@ -434,7 +558,6 @@ onMounted(async () => {
{
- downloadFile(res.data.downloadUrl);
+ .then(async (res) => {
+ await downloadFile(res.data.downloadUrl);
})
.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..93794c9 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,7 @@ onMounted(async () => {
/>
-
+
เอกสารเล่ม 2 (ฉบับแก้ไข)
@@ -224,7 +218,7 @@ onMounted(async () => {
-
+
เอกสารเล่ม 2 (ฉบับแก้ไข)
({
/** function เรียกข้อมูลตรวจสอบคุณสมบัติ*/
async function fetchDetail() {
- showLoader();
await http
.get(config.API.positionBykeycloak())
- .then((res) => {
- const data = res.data.result;
+ .then(async (res) => {
+ const data = await res.data.result;
formDetail.root = data.root;
formDetail.rootId = data.rootId;
formDetail.userId = data.id;
@@ -89,58 +88,62 @@ async function fetchDetail() {
formDetail.birthDate = data.birthDate;
// formDetail.govAge = data.govAge; // ยังไม่มี
formDetail.salary = data.salary;
-
- http.get(config.API.dataUserEducations).then((res) => {
- formDetail.educations = res.data.result;
- });
-
- http.get(config.API.dataUserCertificate("certificate")).then((res) => {
- formDetail.certificates = res.data.result.map(
- (e: CertificatesForm) => ({
- certificateNo: e.certificateNo,
- certificateType: e.certificateType,
- expireDate: e.expireDate,
- issueDate: e.issueDate,
- issuer: e.issuer,
- })
- );
- });
-
- http.get(config.API.dataUserSalary).then((res) => {
- formDetail.salaries = res.data.result;
- });
-
- http.get(config.API.dataUserCertificate("training")).then((res) => {
- formDetail.trainings = res.data.result.map((e: any) => ({
- dateOrder: e.dateOrder,
- department: e.department,
- duration: e.duration,
- endDate: e.endDate,
- name: e.name,
- numberOrder: e.numberOrder,
- place: e.place,
- startDate: e.startDate,
- topic: e.topic,
- yearly: e.yearly,
- }));
- });
-
- http.get(config.API.dataUserAssessments).then((res) => {
- formDetail.assessments = res.data.result;
- });
+ await fetchDataAllDetail();
emit("update:formDeital", formDetail);
})
.catch((err) => {
messageError($q, err);
- })
- .finally(() => {
- setTimeout(() => {
- hideLoader();
- }, 2500);
});
}
+async function fetchDataAllDetail() {
+ // ดึงข้อมูลประวัติการศึกษา
+ http.get(config.API.dataUserEducations).then((res) => {
+ formDetail.educations = res.data.result;
+ });
+
+ // ดึงข้อมูลใบอนุญาตประกอบวิชาชีพ
+ http.get(config.API.dataUserCertificate("certificate")).then((res) => {
+ formDetail.certificates = res.data.result.map((e: CertificatesForm) => ({
+ certificateNo: e.certificateNo,
+ certificateType: e.certificateType,
+ expireDate: e.expireDate,
+ issueDate: e.issueDate,
+ issuer: e.issuer,
+ }));
+ });
+
+ // ดึงข้อมูลประวัติการรับราชการ
+ http.get(config.API.dataUserSalary).then((res) => {
+ formDetail.salaries = res.data.result;
+ });
+
+ // ดึงข้อมูลประวัติการฝึกอบรมดูงาน
+ http.get(config.API.dataUserCertificate("training")).then((res) => {
+ formDetail.trainings = res.data.result.map((e: any) => ({
+ dateOrder: e.dateOrder,
+ department: e.department,
+ duration: e.duration,
+ endDate: e.endDate,
+ name: e.name,
+ numberOrder: e.numberOrder,
+ place: e.place,
+ startDate: e.startDate,
+ topic: e.topic,
+ yearly: e.yearly,
+ }));
+ });
+
+ http.get(config.API.dataUserPerformance).then((res) => {
+ formDetail.assessments = res.data.result;
+ });
+
+ http.get(config.API.dataUserPortfolio).then((res) => {
+ formDetail.experience = res.data.result;
+ });
+}
+
/**
* function fetchData ตรวจสอบคุณสมบัติ
* @param id ประเมิน
@@ -178,7 +181,8 @@ async function fetchCheckSpec(data: any) {
topic: e.topic,
yearly: e.yearly,
}));
- formDetail.assessments = data.assessments;
+ formDetail.assessments = data.performances;
+ formDetail.experience = data.portfolios;
}
/**
@@ -195,7 +199,6 @@ function formattedNumber(x: number) {
/** get data */
function getData() {
- showLoader();
http
.get(config.API.dataUserGovernment)
.then(async (res) => {
@@ -207,28 +210,30 @@ function getData() {
})
.catch((e) => {
messageError($q, e);
- })
- .finally(() => {
- setTimeout(() => {
- hideLoader();
- }, 2500);
});
}
onMounted(async () => {
- const promises = [];
+ try {
+ showLoader();
+ const promises = [];
- if (route.name === "evaluate-add") {
- promises.push(fetchDetail());
+ if (route.name === "evaluate-add") {
+ promises.push(fetchDetail());
+ }
+
+ if (props.data) {
+ promises.push(fetchCheckSpec(props.data));
+ }
+
+ promises.push(getData());
+
+ await Promise.all(promises);
+ } catch (error) {
+ console.log(error);
+ } finally {
+ hideLoader();
}
-
- if (props.data) {
- promises.push(fetchCheckSpec(props.data));
- }
-
- promises.push(getData());
-
- await Promise.all(promises);
});
@@ -537,7 +542,6 @@ onMounted(async () => {
-
@@ -561,7 +565,7 @@ onMounted(async () => {
@@ -570,13 +574,12 @@ onMounted(async () => {
ผลงานที่เคยเสนอขอประเมิน (ถ้ามี)
-
-
-
+
diff --git a/src/modules/06_evaluate/interface/evalute.ts b/src/modules/06_evaluate/interface/evalute.ts
index 593a27b..1db407c 100644
--- a/src/modules/06_evaluate/interface/evalute.ts
+++ b/src/modules/06_evaluate/interface/evalute.ts
@@ -38,10 +38,16 @@ interface FormSpec {
interface FormCommand {
commanderFullname: string;
commanderPosition: string;
+ commanderPositionOld: string;
+ commanderOrgOld: string;
+ commanderOrg: string;
commanderAboveFullname: string;
commanderAbovePosition: string;
+ commanderAbovePositionOld: string;
+ commanderAboveOrgOld: string;
+ commanderAboveOrg: string;
author: string;
- subject: string;
+ subject: string[];
assignedPosition: string;
}
@@ -134,5 +140,5 @@ export type {
ListMenu,
FormRef,
FormData,
- FormCommandSe
+ FormCommandSe,
};
diff --git a/src/modules/06_evaluate/stores/evaluteDetail.ts b/src/modules/06_evaluate/stores/evaluteDetail.ts
index 02aa6df..0ae6bad 100644
--- a/src/modules/06_evaluate/stores/evaluteDetail.ts
+++ b/src/modules/06_evaluate/stores/evaluteDetail.ts
@@ -360,94 +360,40 @@ export const useEvaluateDetailStore = defineStore("evaluateDetailStore", () => {
//ผลงานที่เคยเสนอขอประเมิน (ถ้ามี)
const columnAssessments = ref
([
{
- name: "date",
+ name: "year",
align: "left",
- label: "วันที่ได้รับ",
+ label: "ปี พ.ศ.",
sortable: true,
- field: "date",
+ field: "year",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
- format: (v) => date2Thai(v),
},
{
- name: "point1Total",
+ name: "type",
align: "left",
- label: "ส่วนที่1 (น้ำหนัก)",
+ label: "ระดับตอนที่ยื่นขอ",
sortable: true,
- field: "point1Total",
+ field: "type",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
- sort: (a: string, b: string) =>
- a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }),
},
{
- name: "point1",
+ name: "subject",
align: "left",
- label: "ผลประเมินส่วนที่1 (คะแนน)",
+ label: "เรื่อง/ชื่อเรื่อง",
sortable: true,
- field: "point1",
+ field: "subject",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
- sort: (a: string, b: string) =>
- a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }),
},
{
- name: "point2Total",
+ name: "evaluationResult",
align: "left",
- label: "ส่วนที่2 (น้ำหนัก)",
+ label: "ผลการประเมิน (ผ่าน/ไม่ผ่าน)",
sortable: true,
- field: "point2Total",
+ field: "evaluationResult",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
- sort: (a: string, b: string) =>
- a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }),
- },
- {
- name: "point2",
- align: "left",
- label: "ผลประเมินส่วนที่2 (คะแนน)",
- sortable: true,
- field: "point2",
- headerStyle: "font-size: 14px",
- style: "font-size: 14px",
- sort: (a: string, b: string) =>
- a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }),
- },
- {
- name: "pointSumTotal",
- align: "left",
- label: "ผลรวม (น้ำหนัก)",
- sortable: true,
- field: "pointSumTotal",
- headerStyle: "font-size: 14px",
- style: "font-size: 14px",
- sort: (a: string, b: string) =>
- a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }),
- },
- {
- name: "pointSum",
- align: "left",
- label: "ผลประเมินรวม (คะแนน)",
- sortable: true,
- field: "pointSum",
- headerStyle: "font-size: 14px",
- style: "font-size: 14px",
- sort: (a: string, b: string) =>
- a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }),
- },
- {
- name: "name",
- align: "left",
- label: "ผลประเมิน",
- sortable: true,
- field: "name",
- format(val, row) {
- return `${textPoint(row.pointSum)} ${textRangePoint(row.pointSum)}`;
- },
- headerStyle: "font-size: 14px",
- style: "font-size: 14px",
- sort: (a: string, b: string) =>
- a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }),
},
]);