Commit 0dadc073 by Nattana Chaiyamat

ใส่ filter ตาราง ในหน้า ประเมินโดยหัวหน้า

เพิ่ม part8
parent 1d055b48
......@@ -253,6 +253,7 @@ export class DatagridSyncfutionComponent implements OnInit {
}
}
}
filterData(text: string, fields: string[]): any[] {
return this.dataSource.filter(item => {
return fields.some(field => {
......
......@@ -1319,7 +1319,10 @@
<th scope="col">การประเมินผล</th>
<th scope="col">คะแนนดิบคิดเป็นร้อยละ</th>
<th scope="col">ร้อยละของปัจจัย</th>
<th scope="col">คะแนนที่ได้คิดเป็นร้อยละ</th>
<th scope="col" *ngIf="evaluaterId!=evaluateeId||currentStep != '0'">
คะแนนลูกน้องคิดเป็นร้อยละ</th>
<th scope="col">คะแนนคิดเป็นร้อยละ</th>
<th scope="col" *ngIf="evaluaterId!=evaluateeId||currentStep != '0'">คะแนนสุทธิลูกน้อง</th>
<th scope="col">คะแนนสุทธิ</th>
</tr>
</thead>
......@@ -1337,27 +1340,41 @@
<td class="py-2 text-center" style="vertical-align: top">
{{item.factors}}
</td>
<td *ngIf="evaluaterId!=evaluateeId||currentStep != '0'" class="py-2 text-center"
style="vertical-align: top">
{{numberFixed2(item.scoreObtainedEmp)}}
</td>
<td class="py-2 text-center" style="vertical-align: top">
{{numberFixed2(item.scoreObtained)}}
</td>
<td *ngIf="evaluaterId!=evaluateeId||currentStep != '0'" class="py-2 text-center"
style="vertical-align: top">
{{numberFixed2(item.netScoreEmp)}}
</td>
<td class="py-2 text-center" style="vertical-align: top">
{{numberFixed2(item.netScore)}}
</td>
</tr>
</ng-container>
<tr class="bg-table-soft-gray" style="height:35px">
<td class="align-start text-center font-semibold">
<td class="py-2 align-start text-center font-semibold">
รวม
</td>
<td class="align-start text-center">
<td class="py-2 align-start text-center">
</td>
<td class="align-start text-center font-semibold text-indigo-600">
<td class="py-2 align-start text-center font-semibold text-indigo-600">
{{calFactors()}}
</td>
<td class="align-start text-center font-semibold text-indigo-600">
<td *ngIf="evaluaterId!=evaluateeId||currentStep != '0'" class="py-2 align-start text-center font-semibold text-indigo-600">
{{calScoreObtainedEmp()}}
</td>
<td class="py-2 align-start text-center font-semibold text-indigo-600">
{{calScoreObtained()}}
</td>
<td class="align-start text-center font-semibold text-indigo-600">
<td *ngIf="evaluaterId!=evaluateeId||currentStep != '0'" class="py-2 align-start text-center font-semibold text-indigo-600">
{{calNetScoreEmp()}}
</td>
<td class="py-2 align-start text-center font-semibold text-indigo-600">
{{calNetScore()}}
</td>
</tr>
......
......@@ -12,7 +12,9 @@ export interface Part8Model {
rawScore: number,
factors: number
scoreObtained: number
scoreObtainedEmp: number
netScore: number
netScoreEmp: number
}
export interface LevelStarModel {
evaluationFactor: string,
......@@ -36,6 +38,8 @@ export class PmsKpiComponent {
factors: 0,
scoreObtained: 0,
netScore: 0,
scoreObtainedEmp: 0,
netScoreEmp: 0,
}, {
id: 2,
evaluationFactor: "Part 2 : ประเมินผลการปฏิบัติงานประจำ (Department KPI)",
......@@ -43,6 +47,8 @@ export class PmsKpiComponent {
factors: 0,
scoreObtained: 0,
netScore: 0,
scoreObtainedEmp: 0,
netScoreEmp: 0,
}, {
id: 3,
evaluationFactor: "Part 3 : ประเมินผลการปฏิบัติงานประจำ (Individual KPI)",
......@@ -50,6 +56,8 @@ export class PmsKpiComponent {
factors: 0,
scoreObtained: 0,
netScore: 0,
scoreObtainedEmp: 0,
netScoreEmp: 0,
}, {
id: 4,
evaluationFactor: "Part 4 : ประเมินผลสมรรถนะที่สนับสนุนการปฏิบัติงาน (Competency)",
......@@ -57,6 +65,8 @@ export class PmsKpiComponent {
factors: 0,
scoreObtained: 0,
netScore: 0,
scoreObtainedEmp: 0,
netScoreEmp: 0,
}, {
id: 5,
evaluationFactor: "Part 5 : อัตราการเข้างาน (Time Attendance)",
......@@ -64,6 +74,8 @@ export class PmsKpiComponent {
factors: 0,
scoreObtained: 0,
netScore: 0,
scoreObtainedEmp: 0,
netScoreEmp: 0,
}, {
id: 6,
evaluationFactor: "Part 6 : งานที่ได้รับมอบหมายเพิ่มเติม (Cross Functional Project Assignment)",
......@@ -71,6 +83,8 @@ export class PmsKpiComponent {
factors: 0,
scoreObtained: 0,
netScore: 0,
scoreObtainedEmp: 0,
netScoreEmp: 0,
}, {
id: 7,
evaluationFactor: "Part 7 : กิจกรรมพิเศษ (Special Activities)",
......@@ -78,6 +92,8 @@ export class PmsKpiComponent {
factors: 0,
scoreObtained: 0,
netScore: 0,
scoreObtainedEmp: 0,
netScoreEmp: 0,
}]
partShow: string[] = []
partOpen: Map<string, boolean> = new Map<string, boolean>()
......@@ -271,41 +287,56 @@ export class PmsKpiComponent {
changePercentage() {
this.data8List.forEach(x => {
if (x.id == 1 && this.appraisalPms?.part1Detail) {
x.scoreObtainedEmp = +this.calPercentage(this.calExpectationTotalScore(this.appraisalPms?.part1Detail), this.calRawScore(this.appraisalPms?.part1Detail))
x.scoreObtained = +this.calPercentage(this.calExpectationTotalScoreBoss(this.appraisalPms?.part1Detail), this.calRawScore(this.appraisalPms?.part1Detail))
if (this.appraisalPms) {
this.appraisalPms.part1SumScoreEmp = x.scoreObtainedEmp
this.appraisalPms.part1SumScore = x.scoreObtained
}
} else if (x.id == 2 && this.appraisalPms?.part2Detail) {
x.scoreObtainedEmp = +this.calPercentage(this.calExpectationTotalScore(this.appraisalPms?.part2Detail), this.calRawScore(this.appraisalPms?.part2Detail))
x.scoreObtained = +this.calPercentage(this.calExpectationTotalScoreBoss(this.appraisalPms?.part2Detail), this.calRawScore(this.appraisalPms?.part2Detail))
if (this.appraisalPms) {
this.appraisalPms.part2SumScoreEmp = x.scoreObtainedEmp
this.appraisalPms.part2SumScore = x.scoreObtained
}
} else if (x.id == 3 && this.appraisalPms?.part3Detail) {
x.scoreObtainedEmp = +this.calPercentage(this.calExpectationTotalScore(this.appraisalPms?.part3Detail), this.calRawScore(this.appraisalPms?.part3Detail))
x.scoreObtained = +this.calPercentage(this.calExpectationTotalScoreBoss(this.appraisalPms?.part3Detail), this.calRawScore(this.appraisalPms?.part3Detail))
if (this.appraisalPms) {
this.appraisalPms.part3SumScoreEmp = x.scoreObtainedEmp
this.appraisalPms.part3SumScore = x.scoreObtained
}
} else if (x.id == 4 && this.appraisalPms?.part4Detail) {
x.scoreObtainedEmp = +this.calPercentage(this.calExpectationTotalScoreBossPart4(this.appraisalPms?.part4Detail), this.calRawScorePart4(this.appraisalPms?.part4Detail))
x.scoreObtained = +this.calPercentage(this.calExpectationTotalScoreBossPart4(this.appraisalPms?.part4Detail), this.calRawScorePart4(this.appraisalPms?.part4Detail))
if (this.appraisalPms) {
this.appraisalPms.part4SumScoreEmp = x.scoreObtainedEmp
this.appraisalPms.part4SumScore = x.scoreObtained
}
} else if (x.id == 5 && this.appraisalPms?.part5Detail) {
x.scoreObtainedEmp = +this.calPercentage(this.calExpectationTotalScorePart5(this.appraisalPms?.part5Detail), this.calRawScorePart5(this.appraisalPms?.part5Detail))
x.scoreObtained = +this.calPercentage(this.calExpectationTotalScoreBossPart5(this.appraisalPms?.part5Detail), this.calRawScorePart5(this.appraisalPms?.part5Detail))
if (this.appraisalPms) {
this.appraisalPms.part5SumScoreEmp = x.scoreObtainedEmp
this.appraisalPms.part5SumScore = x.scoreObtained
}
} else if (x.id == 6 && this.appraisalPms?.part6Detail) {
x.scoreObtainedEmp = +this.calPercentage(this.calExpectationTotalScore(this.appraisalPms?.part6Detail), this.calRawScore(this.appraisalPms?.part6Detail))
x.scoreObtained = +this.calPercentage(this.calExpectationTotalScoreBoss(this.appraisalPms?.part6Detail), this.calRawScore(this.appraisalPms?.part6Detail))
if (this.appraisalPms) {
this.appraisalPms.part6SumScoreEmp = x.scoreObtainedEmp
this.appraisalPms.part6SumScore = x.scoreObtained
}
} else if (x.id == 7 && this.appraisalPms?.part7Detail) {
x.scoreObtainedEmp = +this.calPercentage(this.calExpectationTotalScore(this.appraisalPms?.part7Detail), this.calRawScore(this.appraisalPms?.part7Detail))
x.scoreObtained = +this.calPercentage(this.calExpectationTotalScoreBoss(this.appraisalPms?.part7Detail), this.calRawScore(this.appraisalPms?.part7Detail))
if (this.appraisalPms) {
this.appraisalPms.part7SumScoreEmp = x.scoreObtainedEmp
this.appraisalPms.part7SumScore = x.scoreObtained
}
}
x.netScoreEmp = x.factors / 100 * x.scoreObtainedEmp
x.netScore = x.factors / 100 * x.scoreObtained
})
this.setGradeScore()
......@@ -320,6 +351,16 @@ export class PmsKpiComponent {
calFactors() {
return this.data8List.reduce((sum: number, item: any) => sum + item.factors, 0).toFixed(2);
}
calScoreObtainedEmp() {
return this.data8List.reduce((sum: number, item: any) => sum + item.scoreObtainedEmp, 0).toFixed(2);
}
calNetScoreEmp() {
if (this.appraisalPms) {
this.appraisalPms.netScoreEmp = +(this.data8List.reduce((sum: number, item: any) => sum + item.netScoreEmp, 0).toFixed(2));
return this.appraisalPms.netScoreEmp
}
return "0.00"
}
calScoreObtained() {
return this.data8List.reduce((sum: number, item: any) => sum + item.scoreObtained, 0).toFixed(2);
}
......
......@@ -12,7 +12,9 @@ export interface Part8Model {
rawScore: number,
factors: number
scoreObtained: number
scoreObtainedEmp: number
netScore: number
netScoreEmp: number
}
export interface LevelStarModel {
evaluationFactor: string,
......@@ -41,7 +43,9 @@ export class PmsSummaryComponent {
rawScore: 100,
factors: 0,
scoreObtained: 0,
scoreObtainedEmp: 0,
netScore: 0,
netScoreEmp: 0,
}, {
id: 2,
evaluationFactor: "Part 2 : ประเมินผลการปฏิบัติงานประจำ (Department KPI)",
......@@ -49,6 +53,8 @@ export class PmsSummaryComponent {
factors: 0,
scoreObtained: 0,
netScore: 0,
scoreObtainedEmp: 0,
netScoreEmp: 0,
}, {
id: 3,
evaluationFactor: "Part 3 : ประเมินผลการปฏิบัติงานประจำ (Individual KPI)",
......@@ -56,6 +62,8 @@ export class PmsSummaryComponent {
factors: 0,
scoreObtained: 0,
netScore: 0,
scoreObtainedEmp: 0,
netScoreEmp: 0,
}, {
id: 4,
evaluationFactor: "Part 4 : ประเมินผลสมรรถนะที่สนับสนุนการปฏิบัติงาน (Competency)",
......@@ -63,6 +71,8 @@ export class PmsSummaryComponent {
factors: 0,
scoreObtained: 0,
netScore: 0,
scoreObtainedEmp: 0,
netScoreEmp: 0,
}, {
id: 5,
evaluationFactor: "Part 5 : อัตราการเข้างาน (Time Attendance)",
......@@ -70,6 +80,8 @@ export class PmsSummaryComponent {
factors: 0,
scoreObtained: 0,
netScore: 0,
scoreObtainedEmp: 0,
netScoreEmp: 0,
}, {
id: 6,
evaluationFactor: "Part 6 : งานที่ได้รับมอบหมายเพิ่มเติม (Cross Functional Project Assignment)",
......@@ -77,6 +89,8 @@ export class PmsSummaryComponent {
factors: 0,
scoreObtained: 0,
netScore: 0,
scoreObtainedEmp: 0,
netScoreEmp: 0,
}, {
id: 7,
evaluationFactor: "Part 7 : กิจกรรมพิเศษ (Special Activities)",
......@@ -84,6 +98,8 @@ export class PmsSummaryComponent {
factors: 0,
scoreObtained: 0,
netScore: 0,
scoreObtainedEmp: 0,
netScoreEmp: 0,
}]
part9show = true
part10show = true
......@@ -229,6 +245,12 @@ export class PmsSummaryComponent {
}
return "0.00"
}
calExpectationTotalScoreEmp(data?: any) {
if (data) {
return data.reduce((sum: number, item: any) => sum + (item.scoreTopicExpectation * item.weight), 0).toFixed(2);
}
return "0.00"
}
calPercentage(A: number, B: number) {
if (B > 0) {
return ((A / B) * 100).toFixed(2);
......@@ -239,41 +261,56 @@ export class PmsSummaryComponent {
this.data8List.forEach(x => {
if (x.id == 1 && this.appraisalPms?.part1Detail) {
x.scoreObtained = +this.calPercentage(this.calExpectationTotalScore(this.appraisalPms?.part1Detail), this.calRawScore(this.appraisalPms?.part1Detail))
x.scoreObtainedEmp = +this.calPercentage(this.calExpectationTotalScoreEmp(this.appraisalPms?.part1Detail), this.calRawScore(this.appraisalPms?.part1Detail))
if (this.appraisalPms) {
this.appraisalPms.part1SumScore = x.scoreObtained
this.appraisalPms.part1SumScoreEmp = x.scoreObtainedEmp
}
} else if (x.id == 2 && this.appraisalPms?.part2Detail) {
x.scoreObtained = +this.calPercentage(this.calExpectationTotalScore(this.appraisalPms?.part2Detail), this.calRawScore(this.appraisalPms?.part2Detail))
x.scoreObtained = +this.calPercentage(this.calExpectationTotalScore(this.appraisalPms?.part2Detail), this.calRawScore(this.appraisalPms?.part2Detail))
if (this.appraisalPms) {
this.appraisalPms.part2SumScore = x.scoreObtained
this.appraisalPms.part2SumScoreEmp = x.scoreObtainedEmp
}
} else if (x.id == 3 && this.appraisalPms?.part3Detail) {
x.scoreObtained = +this.calPercentage(this.calExpectationTotalScore(this.appraisalPms?.part3Detail), this.calRawScore(this.appraisalPms?.part3Detail))
x.scoreObtained = +this.calPercentage(this.calExpectationTotalScore(this.appraisalPms?.part3Detail), this.calRawScore(this.appraisalPms?.part3Detail))
if (this.appraisalPms) {
this.appraisalPms.part3SumScore = x.scoreObtained
this.appraisalPms.part3SumScoreEmp = x.scoreObtainedEmp
}
} else if (x.id == 4 && this.appraisalPms?.part4Detail) {
x.scoreObtained = +this.calPercentage(this.calExpectationTotalScorePart4(this.appraisalPms?.part4Detail), this.calRawScorePart4(this.appraisalPms?.part4Detail))
x.scoreObtained = +this.calPercentage(this.calExpectationTotalScorePart4(this.appraisalPms?.part4Detail), this.calRawScorePart4(this.appraisalPms?.part4Detail))
if (this.appraisalPms) {
this.appraisalPms.part4SumScore = x.scoreObtained
this.appraisalPms.part4SumScoreEmp = x.scoreObtainedEmp
}
} else if (x.id == 5 && this.appraisalPms?.part5Detail) {
x.scoreObtained = +this.calPercentage(this.calExpectationTotalScorePart5(this.appraisalPms?.part5Detail), this.calRawScorePart5(this.appraisalPms?.part5Detail))
x.scoreObtained = +this.calPercentage(this.calExpectationTotalScorePart5(this.appraisalPms?.part5Detail), this.calRawScorePart5(this.appraisalPms?.part5Detail))
if (this.appraisalPms) {
this.appraisalPms.part5SumScore = x.scoreObtained
this.appraisalPms.part5SumScoreEmp = x.scoreObtainedEmp
}
} else if (x.id == 6 && this.appraisalPms?.part6Detail) {
x.scoreObtained = +this.calPercentage(this.calExpectationTotalScore(this.appraisalPms?.part6Detail), this.calRawScore(this.appraisalPms?.part6Detail))
x.scoreObtained = +this.calPercentage(this.calExpectationTotalScore(this.appraisalPms?.part6Detail), this.calRawScore(this.appraisalPms?.part6Detail))
if (this.appraisalPms) {
this.appraisalPms.part6SumScore = x.scoreObtained
this.appraisalPms.part6SumScoreEmp = x.scoreObtainedEmp
}
} else if (x.id == 7 && this.appraisalPms?.part7Detail) {
x.scoreObtained = +this.calPercentage(this.calExpectationTotalScore(this.appraisalPms?.part7Detail), this.calRawScore(this.appraisalPms?.part7Detail))
x.scoreObtained = +this.calPercentage(this.calExpectationTotalScore(this.appraisalPms?.part7Detail), this.calRawScore(this.appraisalPms?.part7Detail))
if (this.appraisalPms) {
this.appraisalPms.part7SumScore = x.scoreObtained
this.appraisalPms.part7SumScoreEmp = x.scoreObtainedEmp
}
}
x.netScore = x.factors / 100 * x.scoreObtained
x.netScoreEmp = x.factors / 100 * x.scoreObtainedEmp
})
this.setGradeScore()
}
......
// th{
// position: relative; // เทียบเท่า class "relative"
// padding: 10px; // เทียบเท่า class "px-10px py-10px" (อาจเปลี่ยนตามต้องการ)
// background-color: rgb(96 165 250 / 0.1); // ตัวอย่างแทน "bg-soft-secondary"
// color: #2b2b2b; // ตัวอย่างแทน "text-primary"
// text-align: center !important; // เทียบเท่า "!text-center"
// // หากต้องการดีไซน์อื่น ๆ เพิ่มเติมก็ใส่ในนี้ได้เลย เช่น:
// font-weight: 600;
// border-bottom: 1px solid #eee;
// }
.e-headercell,
.e-detailheadercell {
background-color: rgb(96 165 250 / 0.1) !important;
}
.e-pager .e-currentitem, .e-pager .e-currentitem:hover {
background: rgb(96 165 250) !important;
color: #fff;
opacity: 1 !important;
}
.e-checkbox-wrapper .e-frame.e-check, .e-css.e-checkbox-wrapper .e-frame.e-check {
background-color: rgb(96 165 250) !important;
border-color: transparent;
color: #fff;
}
.e-checkbox-wrapper .e-frame, .e-css.e-checkbox-wrapper .e-frame {
border: 1px solid !important;
border-radius: 2px;
box-sizing: border-box;
cursor: pointer;
display: inline-block;
font-family: "e-icons";
height: 18px;
line-height: 10px;
padding: 2px 0;
text-align: center;
vertical-align: middle;
width: 1rem !important;
border-color: #64748b !important;
}
.e-grid td.e-selectionbackground {
background-color: #aec2ec !important;
}
......@@ -2770,27 +2770,35 @@ export interface Pms {
learningTopicsForWeaknesses: string
masfromStatusType: MasfromStatusType4
netScore: number
netScoreEmp: number
part1Detail: Part1Detail[]
part1Percentage: number
part1SumScore: number
part1SumScoreEmp: number
part2Detail: Part2Detail[]
part2Percentage: number
part2SumScore: number
part2SumScoreEmp: number
part3Detail: Part3Detail[]
part3Percentage: number
part3SumScore: number
part3SumScoreEmp: number
part4Detail: Part4Detail[]
part4Percentage: number
part4SumScore: number
part4SumScoreEmp: number
part5Detail: Part5Detail[]
part5Percentage: number
part5SumScore: number
part5SumScoreEmp: number
part6Detail: Part6Detail[]
part6Percentage: number
part6SumScore: number
part6SumScoreEmp: number
part7Detail: Part7Detail[]
part7Percentage: number
part7SumScore: number
part7SumScoreEmp: number
performanceWeaknesses: string
personalLevel: PersonalLevel11
pmsMasfromEvaluationRoundModel: PmsMasfromEvaluationRoundModel
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment