diff --git a/src/modules/12_evaluatePersonal/components/Detail/viewstep/tableStep1.vue b/src/modules/12_evaluatePersonal/components/Detail/viewstep/tableStep1.vue index 73d9001d6..1bb0da6c4 100644 --- a/src/modules/12_evaluatePersonal/components/Detail/viewstep/tableStep1.vue +++ b/src/modules/12_evaluatePersonal/components/Detail/viewstep/tableStep1.vue @@ -23,6 +23,23 @@ const props = defineProps({ virtual-scroll class="row col-12" > + + + diff --git a/src/modules/12_evaluatePersonal/components/Detail/viewstep/viewStep1.vue b/src/modules/12_evaluatePersonal/components/Detail/viewstep/viewStep1.vue index 244a78daa..c7759be51 100644 --- a/src/modules/12_evaluatePersonal/components/Detail/viewstep/viewStep1.vue +++ b/src/modules/12_evaluatePersonal/components/Detail/viewstep/viewStep1.vue @@ -20,7 +20,7 @@ const { columnsCertificates, columnSalaries, columnTraining, - columnProjectsProposed, + columnAssessments, } = store; const { date2Thai, showLoader, hideLoader } = mixin; @@ -42,7 +42,7 @@ const formDetail = reactive({ position: "", //ตำแหน่ง oc: "", //สังกัด salary: "", //เงินเดือน - positionLevel: "", //ระดับปัจจุบัน,ระดับที่ประเมิน + positionLevel: "", //ระดับปัจจุบัน,ระดับที่ประเมิน posNo: "", //ตำแหน่งเลขที่ birthDate: "", //วันเดือนปีเกิด govAge: "", //อายุราชการ @@ -60,20 +60,20 @@ function formattedNumber(x: number) { onMounted(() => { if (props.data) { showLoader(); - formDetail.prefix = props.data.prefix; - formDetail.fullName = props.data.fullName; - formDetail.position = props.data.position; - formDetail.oc = props.data.oc; + formDetail.prefix = props.data.prefix ?? "-"; + formDetail.fullName = props.data.fullName ?? "-"; + formDetail.position = props.data.position ?? "-"; + formDetail.oc = props.data.oc ?? "-"; formDetail.salary = props.data.salary ? formattedNumber(props.data.salary) : "-"; - formDetail.positionLevel = props.data.positionLevel; - formDetail.posNo = props.data.posNo; - formDetail.birthDate = - props.data.birthDate && date2Thai(props.data.birthDate); - formDetail.govAge = props.data.govAge; + formDetail.positionLevel = props.data.positionLevel ?? "-"; + formDetail.posNo = props.data.posNo ?? "-"; + formDetail.birthDate = props.data.birthDate + ? date2Thai(props.data.birthDate) + : "-"; + formDetail.govAge = props.data.govAge ?? "-"; formDetail.educations = props.data.educations; - formDetail.certificates = props.data.certificates ? props.data.certificates.map((e: CertificatesForm) => ({ certificateNo: e.certificateNo, @@ -255,7 +255,9 @@ onMounted(() => { @@ -264,7 +266,7 @@ onMounted(() => { @@ -272,7 +274,9 @@ onMounted(() => {
@@ -282,7 +286,9 @@ onMounted(() => {
@@ -291,7 +297,9 @@ onMounted(() => {
@@ -311,7 +319,7 @@ onMounted(() => {
@@ -320,7 +328,7 @@ onMounted(() => {
@@ -328,7 +336,7 @@ onMounted(() => {
@@ -337,7 +345,7 @@ onMounted(() => { @@ -346,10 +354,16 @@ onMounted(() => { +
+ +
ไม่มีประวัติการศึกษา
@@ -403,7 +417,10 @@ onMounted(() => {
- +
diff --git a/src/modules/12_evaluatePersonal/store/EvaluateDetail.ts b/src/modules/12_evaluatePersonal/store/EvaluateDetail.ts index e349d1a36..2887fdca6 100644 --- a/src/modules/12_evaluatePersonal/store/EvaluateDetail.ts +++ b/src/modules/12_evaluatePersonal/store/EvaluateDetail.ts @@ -1,8 +1,13 @@ import { defineStore } from "pinia"; import { ref } from "vue"; +import { useCounterMixin } from "@/stores/mixin"; + import type { QTableProps } from "quasar"; +const mixin = useCounterMixin(); +const { date2Thai } = mixin; + export const useEvaluateDetailStore = defineStore("evaluateDetailStore", () => { const tabMenu = ref("1"); const step = ref(1); @@ -237,54 +242,119 @@ export const useEvaluateDetailStore = defineStore("evaluateDetailStore", () => { ]); /** คอลัมน์ ผลงานที่เคยเสนอขอประเมิน*/ - const columnProjectsProposed = ref([ + const columnAssessments = ref([ { - name: "receivedDate", - align: "center", + name: "date", + align: "left", label: "วันที่ได้รับ", sortable: true, - field: "receivedDate", + field: "date", headerStyle: "font-size: 14px", style: "font-size: 14px", + format: (v) => date2Thai(v), }, { - name: "authority", + name: "point1Total", align: "left", - label: "ผู้มีอำนาจลงนาม", + label: "ส่วนที่1 (น้ำหนัก)", sortable: true, - field: "authority", + field: "point1Total", headerStyle: "font-size: 14px", style: "font-size: 14px", + sort: (a: string, b: string) => + a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, { - name: "datail", + name: "point1", align: "left", - label: "รายละเอียด", + label: "ผลประเมินส่วนที่1 (คะแนน)", sortable: true, - field: "detail", + field: "point1", headerStyle: "font-size: 14px", style: "font-size: 14px", + sort: (a: string, b: string) => + a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, { - name: "orderNumber", + name: "point2Total", align: "left", - label: "เลขที่คำสั่ง", + label: "ส่วนที่2 (น้ำหนัก)", sortable: true, - field: "orderNumber", + field: "point2Total", headerStyle: "font-size: 14px", style: "font-size: 14px", + sort: (a: string, b: string) => + a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, { - name: "doc", + name: "point2", align: "left", - label: "เอกสารอ้างอิง", + label: "ผลประเมินส่วนที่2 (คะแนน)", sortable: true, - field: "doc", + 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" }), }, ]); + function textRangePoint(val: number | undefined) { + if (val == undefined) val = -1; + if (val < 60.0) return "(คะแนนต่ำกว่าร้อยละ 60.00)"; + if (val >= 60.0 && val <= 69.99) return "(คะแนนร้อยละ 60.00 - 69.99)"; + if (val >= 70.0 && val <= 79.99) return "(คะแนนร้อยละ 70.00 - 79.99)"; + if (val >= 80.0 && val <= 89.99) return " (คะแนนร้อยละ 80.00 - 89.99)"; + if (val >= 90.0) return " (คะแนนร้อยละ 90.00 ขึ้นไป)"; + else return ""; + } + + function textPoint(val: number | undefined) { + if (val == undefined) val = -1; + if (val < 60.0) return "ต้องปรับปรุง"; + if (val >= 60.0 && val <= 69.99) return "พอใช้"; + if (val >= 70.0 && val <= 79.99) return "ดี"; + if (val >= 80.0 && val <= 89.99) return "ดีมาก"; + if (val >= 90.0) return "ดีเด่น"; + else return "-"; + } + return { tabMenu, step, @@ -294,7 +364,7 @@ export const useEvaluateDetailStore = defineStore("evaluateDetailStore", () => { columnsCertificates, columnSalaries, columnTraining, - columnProjectsProposed, + columnAssessments, pdfSrcStore, urlDownloadFile, numOfPagesStore,