Commit e0f3ec8a by Nattana Chaiyamat

ไฟล์template

parent 1a8d5cfa
...@@ -107,7 +107,7 @@ export class EditGroupIndicators implements OnInit { ...@@ -107,7 +107,7 @@ export class EditGroupIndicators implements OnInit {
}; };
}); });
this.dataList.sort((a, b) => +a.code - +b.code) this.dataList.sort((a, b) => +a.code - +b.code)
let maxCode = Math.max(-1, ...this.dataList.map(x => +x.code)) let maxCode = Math.max(0, ...this.dataList.map(x => +x.code))
while (this.dataList.length < +this.indicatorsCourses.competencyTopic.expectationLevel) { while (this.dataList.length < +this.indicatorsCourses.competencyTopic.expectationLevel) {
this.dataList.push({ this.dataList.push({
code: (++maxCode) + "", code: (++maxCode) + "",
......
...@@ -83,14 +83,24 @@ ...@@ -83,14 +83,24 @@
</ng-container> </ng-container>
</tr> </tr>
</thead> </thead>
<tbody *ngIf="!appraisalCompentencyFilter().length"> <tbody *ngIf="appraisalCompentency.loading">
<tr>
<td class="text-center" colspan="100%">
<div *ngFor="let item of [1,2,3]" class="ti-spinner w-8 h-8 text-secondary mx-1"
role="status" aria-label="loading">
<span class="sr-only">Loading...</span>
</div>
</td>
</tr>
</tbody>
<tbody *ngIf="!appraisalCompentency.loading&&!appraisalCompentencyFilter().length">
<tr> <tr>
<td class="text-center" colspan="100%"> <td class="text-center" colspan="100%">
ไม่พบข้อมูล ไม่พบข้อมูล
</td> </td>
</tr> </tr>
</tbody> </tbody>
<tbody *ngIf="appraisalCompentencyFilter().length"> <tbody *ngIf="!appraisalCompentency.loading&&appraisalCompentencyFilter().length">
<tr *ngFor="let item of appraisalCompentencyFilter();let i = index"> <tr *ngFor="let item of appraisalCompentencyFilter();let i = index">
<td class="flex justify-center items-center"> <td class="flex justify-center items-center">
{{item.data.masfromEvaluationRoundModel.evaluationRoundId}} {{item.data.masfromEvaluationRoundModel.evaluationRoundId}}
...@@ -109,7 +119,7 @@ ...@@ -109,7 +119,7 @@
</td> </td>
<td class="flex justify-center items-center"> <td class="flex justify-center items-center">
<span class="rounded-md bg-success text-white px-3 py-1 cursor-pointer" <span class="rounded-md bg-success text-white px-3 py-1 cursor-pointer"
(click)="currentTemplate = selfEvaluation1_2Edit ; pathTitle = ['การประเมินผล', 'ประเมินผล']"> (click)="selectAppraisalCompentency(item.data);getAppraisalCompentencyForm();currentTemplate = selfEvaluation1_2Edit ; pathTitle = ['การประเมินผล', 'ประเมินผล']">
ประเมิน ประเมิน
</span> </span>
</td> </td>
...@@ -140,14 +150,24 @@ ...@@ -140,14 +150,24 @@
</ng-container> </ng-container>
</tr> </tr>
</thead> </thead>
<tbody *ngIf="!appraisalPmsFilter().length"> <tbody *ngIf="appraisalPms.loading">
<tr>
<td class="text-center" colspan="100%">
<div *ngFor="let item of [1,2,3]" class="ti-spinner w-8 h-8 text-secondary mx-1"
role="status" aria-label="loading">
<span class="sr-only">Loading...</span>
</div>
</td>
</tr>
</tbody>
<tbody *ngIf="!appraisalPms.loading&&!appraisalPmsFilter().length">
<tr> <tr>
<td class="text-center" colspan="100%"> <td class="text-center" colspan="100%">
ไม่พบข้อมูล ไม่พบข้อมูล
</td> </td>
</tr> </tr>
</tbody> </tbody>
<tbody *ngIf="appraisalPmsFilter().length"> <tbody *ngIf="!appraisalPms.loading&&appraisalPmsFilter().length">
<tr *ngFor="let item of appraisalPmsFilter();let i = index"> <tr *ngFor="let item of appraisalPmsFilter();let i = index">
<td class="flex justify-center items-center"> <td class="flex justify-center items-center">
{{item.data.masfromEvaluationRoundModel.evaluationRoundId}} {{item.data.masfromEvaluationRoundModel.evaluationRoundId}}
...@@ -268,24 +288,37 @@ ...@@ -268,24 +288,37 @@
</tr> </tr>
<tr class="font-size-12px"> <tr class="font-size-12px">
<ng-container *ngFor="let item of [5,4,3,2,1]"> <ng-container *ngFor="let item of [5,4,3,2,1]">
<th scope="col" class="relative px-10px py-10px bg-soft-secondary text-primary text-center"> <th scope="col"
class="relative px-10px py-10px bg-soft-secondary text-primary !text-center">
{{item}} {{item}}
</th> </th>
</ng-container> </ng-container>
</tr> </tr>
</thead> </thead>
<tbody *ngIf="!dataList3Filter().length"> <tbody *ngIf="appraisalCompentencyForm.loading">
<tr class="hover:table-hover2-hover"> <tr>
<td class="text-center" colspan="100%">
<div *ngFor="let item of [1,2,3]" class="ti-spinner w-8 h-8 text-secondary mx-1"
role="status" aria-label="loading">
<span class="sr-only">Loading...</span>
</div>
</td>
</tr>
</tbody>
<tbody *ngIf="!appraisalCompentencyForm.loading&&!appraisalCompentencyFormFilter().length">
<tr>
<td class="text-center" colspan="100%"> <td class="text-center" colspan="100%">
ไม่พบข้อมูล ไม่พบข้อมูล
</td> </td>
</tr> </tr>
</tbody> </tbody>
<tbody *ngIf="dataList3Filter().length"> <tbody *ngIf="!appraisalCompentencyForm.loading&&appraisalCompentencyFormFilter().length">
<ng-container *ngFor=" let data of dataList3Filter();let i = index"> <ng-container
<tr *ngFor="let item of data.bi;let i2 = index;let f = first" *ngFor="let appraisalCompentencyForm of appraisalCompentencyFormFilter();let i = index">
(mouseenter)="hoveredCode = data.code" (mouseleave)="hoveredCode = null" <tr *ngFor="let bi of appraisalCompentencyForm.groupAssessment1.competencyIndicatorsCourses1Mini.behavioralIndicatorsList;let i2 = index;let f = first"
[ngClass]="{ 'table-hover2': data.code === hoveredCode ,'border-none':!f }"> (mouseenter)="hoveredCode = appraisalCompentencyForm.groupAssessment1.competencyIndicatorsCourses1Mini.competencyCourseId"
(mouseleave)="hoveredCode = null"
[ngClass]="{ 'table-hover2': appraisalCompentencyForm.groupAssessment1.competencyIndicatorsCourses1Mini.competencyCourseId === hoveredCode ,'border-none':!f }">
<td class="align-start text-center"> <td class="align-start text-center">
<ng-container *ngIf="f"> <ng-container *ngIf="f">
{{i+1}} {{i+1}}
...@@ -293,24 +326,25 @@ ...@@ -293,24 +326,25 @@
</td> </td>
<td class="align-start text-center"> <td class="align-start text-center">
<ng-container *ngIf="f"> <ng-container *ngIf="f">
{{data.code}} {{appraisalCompentencyForm.groupAssessment1.competencyIndicatorsCourses1Mini.competencyIndicatorsCourses0.competencyTopic.competencyTopicId}}
</ng-container> </ng-container>
</td> </td>
<td class="align-start !white-space-normal"> <td class="align-start !white-space-normal">
<ng-container *ngIf="f"> <ng-container *ngIf="f">
{{data.name}} {{appraisalCompentencyForm.groupAssessment1.competencyIndicatorsCourses1Mini.competencyIndicatorsCourses0.tdesc}}
</ng-container> </ng-container>
</td> </td>
<td class="align-start !white-space-normal"> <td class="align-start !white-space-normal">
{{item.name}} {{bi.behavioralIndicators}}
</td> </td>
<td class="align-center text-center"> <td class="align-center text-center">
{{showTools(item.tools)}} {{bi.assessmentId}}
</td> </td>
<td class="align-center text-center" <td class="align-center text-center" *ngFor="let value of [5,4,3,2,1]; let i3=index">
*ngFor="let value of ['5','4','3','2','1']; let i3=index">
<input type="radio" [name]="'radio'+i+''+i2" class="ti-form-radio cursor-pointer" <input type="radio" [name]="'radio'+i+''+i2" class="ti-form-radio cursor-pointer"
[id]="'radio'+i+''+i2+''+i3" [value]="value" [(ngModel)]="item.degree"> [id]="'radio'+i+''+i2+''+i3" [value]="value"
[(ngModel)]="bi.competencyBehavioral.scoreTopicExpectation"
(ngModelChange)="caltargetScore(value)">
</td> </td>
</tr> </tr>
</ng-container> </ng-container>
...@@ -321,33 +355,41 @@ ...@@ -321,33 +355,41 @@
<div class="pb-1rem px-2rem"> <div class="pb-1rem px-2rem">
<div class="py-2 grid grid-cols-11"> <div class="py-2 grid grid-cols-11">
<div class="col-span-8"></div>
<div class="col-span-3 grid grid-cols-5">
<div class="col-span-5 text-center">ระดับความสามารถ (Target Degree)</div>
</div>
</div>
<div class="py-2 grid grid-cols-11">
<div class="col-span-8"></div>
<div class="col-span-3 grid grid-cols-5">
<div class="col-span-1 text-center" *ngFor="let item of [5,4,3,2,1]">{{item}}</div>
</div>
</div>
<div class="py-2 grid grid-cols-11">
<div class="col-span-8">รวมจำนวนเครื่องหมายแต่ละช่อง (1)</div> <div class="col-span-8">รวมจำนวนเครื่องหมายแต่ละช่อง (1)</div>
<div class="col-span-3 grid grid-cols-5"> <div class="col-span-3 grid grid-cols-5">
<div class="col-span-1 text-center">14</div> <div class="col-span-1 text-center">{{appraisalCompentencyForm.data.targetScore5}}</div>
<div class="col-span-1 text-center">6</div> <div class="col-span-1 text-center">{{appraisalCompentencyForm.data.targetScore4}}</div>
<div class="col-span-1 text-center">0</div> <div class="col-span-1 text-center">{{appraisalCompentencyForm.data.targetScore3}}</div>
<div class="col-span-1 text-center">0</div> <div class="col-span-1 text-center">{{appraisalCompentencyForm.data.targetScore2}}</div>
<div class="col-span-1 text-center">0</div> <div class="col-span-1 text-center">{{appraisalCompentencyForm.data.targetScore1}}</div>
</div> </div>
</div> </div>
<div class="py-2 grid grid-cols-11"> <div class="py-2 grid grid-cols-11">
<div class="col-span-8">ตัวคูณคะแนนในแต่ละช่อง (2)</div> <div class="col-span-8">ตัวคูณคะแนนในแต่ละช่อง (2)</div>
<div class="col-span-3 grid grid-cols-5"> <div class="col-span-3 grid grid-cols-5">
<div class="col-span-1 text-center">1</div> <div class="col-span-1 text-center">{{setting.data.settingScore5}}</div>
<div class="col-span-1 text-center">0.8</div> <div class="col-span-1 text-center">{{setting.data.settingScore4}}</div>
<div class="col-span-1 text-center">0.6</div> <div class="col-span-1 text-center">{{setting.data.settingScore3}}</div>
<div class="col-span-1 text-center">0.4</div> <div class="col-span-1 text-center">{{setting.data.settingScore2}}</div>
<div class="col-span-1 text-center">0.2</div> <div class="col-span-1 text-center">{{setting.data.settingScore1}}</div>
</div> </div>
</div> </div>
<div class="py-2 grid grid-cols-11"> <div class="py-2 grid grid-cols-11">
<div class="col-span-8">ถ่วงน้ำหนักผลรวม 1X2</div> <div class="col-span-8">ถ่วงน้ำหนักผลรวม 1X2</div>
<div class="col-span-3 grid grid-cols-5"> <div class="col-span-3 grid grid-cols-5">
<div class="col-span-1 text-center">14</div> <div class="col-span-1 text-center" *ngFor="let item of [5,4,3,2,1]">{{calWeightScore(item)}}</div>
<div class="col-span-1 text-center">4.80</div>
<div class="col-span-1 text-center">0.00</div>
<div class="col-span-1 text-center">0.00</div>
<div class="col-span-1 text-center">0.00</div>
</div> </div>
</div> </div>
<div class="py-2 grid grid-cols-11"> <div class="py-2 grid grid-cols-11">
...@@ -395,8 +437,8 @@ ...@@ -395,8 +437,8 @@
</ng-container> </ng-container>
</tr> </tr>
</thead> </thead>
<tbody *ngIf="dataList4.length"> <tbody *ngIf="checkSheet.length">
<tr *ngFor="let item of dataList4;let i = index"> <tr *ngFor="let item of checkSheet;let i = index">
<td class="align-start" rowspan="2"> <td class="align-start" rowspan="2">
<div *ngFor="let item2 of item.score"> <div *ngFor="let item2 of item.score">
<span>{{item2}} </span><br> <span>{{item2}} </span><br>
...@@ -409,13 +451,13 @@ ...@@ -409,13 +451,13 @@
</td> </td>
<td class="!p-0"></td> <td class="!p-0"></td>
<td class="align-start text-center"> <td class="align-start text-center">
{{item.e}} ???
</td> </td>
<td class="align-start text-center"> <td class="align-start text-center">
{{item.a}} ???
</td> </td>
<td class="align-start text-center"> <td class="align-start text-center">
{{item.gap}} {{idp.data.score}}
</td> </td>
</tr> </tr>
<tr> <tr>
...@@ -431,46 +473,52 @@ ...@@ -431,46 +473,52 @@
<div class="py-1rem px-2rem"> <div class="py-1rem px-2rem">
<div class="py-2 grid grid-cols-7 gap-3"> <div class="py-2 grid grid-cols-7 gap-3">
<div class="col-span-1">ผู้ประเมิน1</div> <div class="col-span-1">ผู้ประเมิน1</div>
<div class="col-span-1">น.ส. พิมพร อูรณการ</div> <div class="col-span-1">{{appraisalCompentencyForm.data.apsassessy.thFullName}}</div>
<div class="col-span-1"> <div class="col-span-1">
<input type="checkbox" id="hs-basic-usage1" class="ti-switch checked:bg-none checked:bg-green-600 checked:hover:bg-green-600 checked:focus:bg-green-600 focus:border-green-600 focus:ring-green-600 dark:checked:bg-green-600 <input type="checkbox" id="hs-basic-usage1" class="ti-switch checked:bg-none checked:bg-green-600 checked:hover:bg-green-600 checked:focus:bg-green-600 focus:border-green-600 focus:ring-green-600 dark:checked:bg-green-600
checked:before:bg-green-200 dark:checked:before:bg-green-200"> checked:before:bg-green-200 dark:checked:before:bg-green-200">
<label for="hs-basic-usage1" class="sr-only">ยืนยันผล</label> <label for="hs-basic-usage1" class="sr-only">ยืนยันผล</label>
</div> </div>
<div class="col-span-2"> <div class="col-span-2">
<textarea type="text" rows="2" class="ti-form-input mb-2"></textarea> <textarea type="text" rows="2" class="ti-form-input mb-2" placeholder="ใส่ Comment ที่นี่"></textarea>
<span class="pt-2"> <span class="pt-2">
วันที่ : วันที่ : {{convertDate(currentDate)}}
</span> </span>
</div> </div>
</div> </div>
<div class="py-2 grid grid-cols-7 gap-3"> <div class="py-2 grid grid-cols-7 gap-3">
<div class="col-span-1">ผู้ประเมิน2</div> <div class="col-span-1">ผู้ประเมิน2</div>
<div class="col-span-1">น.ส. นดี แป้นศรี</div> <div class="col-span-1">{{appraisalCompentencyForm.data.apsapprove2.thFullName}}</div>
<div class="col-span-1"> <div class="col-span-1">
<input type="checkbox" id="hs-basic-usage2" class="ti-switch checked:bg-none checked:bg-green-600 checked:hover:bg-green-600 checked:focus:bg-green-600 focus:border-green-600 focus:ring-green-600 dark:checked:bg-green-600 <input type="checkbox" id="hs-basic-usage2" class="ti-switch checked:bg-none checked:bg-green-600 checked:hover:bg-green-600 checked:focus:bg-green-600 focus:border-green-600 focus:ring-green-600 dark:checked:bg-green-600
checked:before:bg-green-200 dark:checked:before:bg-green-200"> checked:before:bg-green-200 dark:checked:before:bg-green-200"
(click)="appraisalCompentencyForm.data.apsapprove2Status=='0'?appraisalCompentencyForm.data.apsapprove2Status='1':appraisalCompentencyForm.data.apsapprove2Status='0'"
[checked]="appraisalCompentencyForm.data.apsapprove2Status=='1'">
<label for="hs-basic-usage2" class="sr-only">ตรวจสอบ</label> <label for="hs-basic-usage2" class="sr-only">ตรวจสอบ</label>
</div> </div>
<div class="col-span-2"> <div class="col-span-2">
<textarea type="text" rows="2" class="ti-form-input mb-2" value="ใส่ Comment ที่นี่"></textarea> <textarea type="text" rows="2" class="ti-form-input mb-2" placeholder="ใส่ Comment ที่นี่"
[(ngModel)]="appraisalCompentencyForm.data.apsapprove2Comment"></textarea>
<span> <span>
วันที่ : วันที่ : {{convertDate(currentDate)}}
</span> </span>
</div> </div>
</div> </div>
<div class="py-2 grid grid-cols-7 gap-3"> <div class="py-2 grid grid-cols-7 gap-3">
<div class="col-span-1">ผู้อนุมัติ</div> <div class="col-span-1">ผู้อนุมัติ</div>
<div class="col-span-1">น.ส.ศรีไพ คชา</div> <div class="col-span-1">{{appraisalCompentencyForm.data.apsapprove3.thFullName}}</div>
<div class="col-span-1"> <div class="col-span-1">
<input type="checkbox" id="hs-basic-usage3" class="ti-switch checked:bg-none checked:bg-green-600 checked:hover:bg-green-600 checked:focus:bg-green-600 focus:border-green-600 focus:ring-green-600 dark:checked:bg-green-600 <input type="checkbox" id="hs-basic-usage3" class="ti-switch checked:bg-none checked:bg-green-600 checked:hover:bg-green-600 checked:focus:bg-green-600 focus:border-green-600 focus:ring-green-600 dark:checked:bg-green-600
checked:before:bg-green-200 dark:checked:before:bg-green-200"> checked:before:bg-green-200 dark:checked:before:bg-green-200"
(click)="appraisalCompentencyForm.data.apsapprove3Status=='0'?appraisalCompentencyForm.data.apsapprove3Status='1':appraisalCompentencyForm.data.apsapprove3Status='0'"
[checked]="appraisalCompentencyForm.data.apsapprove3Status=='1'">
<label for="hs-basic-usage3" class="sr-only">อนุมัติ</label> <label for="hs-basic-usage3" class="sr-only">อนุมัติ</label>
</div> </div>
<div class="col-span-2"> <div class="col-span-2">
<textarea type="text" rows="2" class="ti-form-input mb-2" value="ใส่ Comment ที่นี่"></textarea> <textarea type="text" rows="2" class="ti-form-input mb-2" placeholder="ใส่ Comment ที่นี่"
[(ngModel)]="appraisalCompentencyForm.data.apsapprove3Comment"></textarea>
<span> <span>
วันที่ : วันที่ : {{convertDate(currentDate)}}
</span> </span>
</div> </div>
</div> </div>
......
import { ChangeDetectorRef, Component, OnInit, TemplateRef, ViewChild } from '@angular/core'; import { ChangeDetectorRef, Component, OnInit, TemplateRef, ViewChild } from '@angular/core';
import { AppraisalFormModel, MyAppraisalFormModel } from 'src/app/shared/model/appraisal-form.model';
import { AppraisalModel, MyAppraisalModel } from 'src/app/shared/model/appraisal.model'; import { AppraisalModel, MyAppraisalModel } from 'src/app/shared/model/appraisal.model';
import { EmployeeModel, MyEmployeeModel } from 'src/app/shared/model/employee.model'; import { EmployeeModel, MyEmployeeModel } from 'src/app/shared/model/employee.model';
import { IdpDevelopmentModel, MyIdpDevelopmentModel } from 'src/app/shared/model/idp-development.model';
import { MySettingAssessmentModel, SettingAssessmentModel } from 'src/app/shared/model/setting-assessment.model';
import { AppraisalService } from 'src/app/shared/services/appraisal.service'; import { AppraisalService } from 'src/app/shared/services/appraisal.service';
import { EmployeeService } from 'src/app/shared/services/employee.service'; import { EmployeeService } from 'src/app/shared/services/employee.service';
import { IdpDevelopmentService } from 'src/app/shared/services/idp-development.service';
import { SettingAssessmentService } from 'src/app/shared/services/setting-assessment.service';
import Swal from 'sweetalert2'; import Swal from 'sweetalert2';
export interface Data2Model {
code: string,
name: string,
bi: BiModel[],
}
export interface BiModel { export interface BiModel {
name: string, name: string,
tools: string[], tools: string[],
...@@ -22,89 +22,67 @@ export interface BiModel { ...@@ -22,89 +22,67 @@ export interface BiModel {
styleUrls: ['./self-evaluation.component.scss'] styleUrls: ['./self-evaluation.component.scss']
}) })
export class SelfEvaluationComponent implements OnInit { export class SelfEvaluationComponent implements OnInit {
pathTitle = ['การประเมินผล', 'ประเมินตนเอง'] pathTitle = ['การประเมินผล', 'ประเมินตนเอง']
hoveredCode: string | null = null; hoveredCode: string | null = null;
dataList3: Data2Model[] = [ checkSheet: {
{
code: "CC-01",
name: "จิตสำนึกด้านความปลอดภัยและคุณภาพ (Safety & Quality)",
bi: [{
name: "สอนงานด้านความปลอดภัย และคุณภาพของบริษัทให้กับพนักงานในหน่วยงาน",
tools: ["O"],
degree: "4"
}, {
name: "ติดตามและปรับปรุงการทำงานด้านความปลอดภัยและคุณภาพของทีมงาน",
tools: ["O", "D"],
degree: "5"
}],
},
{
code: "CC-02",
name: "การทำงานเป็นทีมแบบ TAT (TAT Teamwork)",
bi: [{
name: "คิดวิเคราะห์เพื่อแก้ปัญหาด้านความปลอดภัยและคุณภาพในหน่วยงานที่รับผิดชอบ",
tools: ["O", "D"],
degree: "5"
}, {
name: "นำเสนอและจัดทำรายงานด้านความปลอดภัยและคุณภาพทั้งภาษาไทยและภาษาอังกฤษ",
tools: ["O"],
degree: "2"
},
{
name: "สอนงาน และพัฒนาทีมงานให้เกิดการทำงานเป็นทีม โดยยึดเป้าหมายเดียวกัน (TAT Goal) และคำนึงถึง ความต้องการของลูกค้าเป็นหลัก (Next Customer)",
tools: ["O"],
degree: "2"
},
{
name: "สนับสนุนทีมงานให้ดำเนินการตามเป้าหมายของทีม และสิ่งที่ตนเองได้รับมอบหมาย",
tools: ["O", "D"],
degree: "4"
},
{
name: "วิเคราะห์และแก้ไขปัญหาที่เกิดจากการทำงานเป็นทีม รวมถึงการควบคุมดูแลให้เป็นไปตามเป้าหมาย",
tools: ["O"],
degree: "5"
},
{
name: "สื่อสารเพื่อสร้างความเข้าใจ และรับฟังความคิดเห็น ของสมาชิกในทีม ชื่นชมทีมงานแต่ละคนที่เป็น ส่วนหนึ่งในความสำเร็จของทีมร่วมกัน",
tools: ["O", "D"],
degree: "5"
}],
}
]
dataList4: {
score: string[], score: string[],
condition: string[], condition: string[]
e: string,
a: string,
gap: string
}[] = [{ }[] = [{
score: ["หากได้คะแนน 90 - 100% ถือว่า Gap +1", "หากได้คะแนน 80 - 89% ถือว่า ไม่มี Gap", "หากได้คะแนน 60 - 79% ถือว่า Gap - 1", "หากได้คะแนน 40 - 59% ถือว่า Gap -", "หากได้คะแนน 0 - 39% ถือว่า Gap - 3"], score: ["หากได้คะแนน 90 - 100% ถือว่า Gap +1", "หากได้คะแนน 80 - 89% ถือว่า ไม่มี Gap", "หากได้คะแนน 60 - 79% ถือว่า Gap - 1", "หากได้คะแนน 40 - 59% ถือว่า Gap -", "หากได้คะแนน 0 - 39% ถือว่า Gap - 3"],
condition: ["1.หากได้คะแนนสูงกว่า 80% แต่มี 3 2 หรือ 1 ด้วย ถือว่า Gap -1", "2.หากได้คะแนนต่ำกว่า 80% แต่มี 4 และ 5 ให้คิด Gap ตาม %", "3.คะแนนต่ำกว่า 80% แต่มี 2 และ 1 ให้คิด Gap ตาม %"], condition: ["1.หากได้คะแนนสูงกว่า 80% แต่มี 3 2 หรือ 1 ด้วย ถือว่า Gap -1", "2.หากได้คะแนนต่ำกว่า 80% แต่มี 4 และ 5 ให้คิด Gap ตาม %", "3.คะแนนต่ำกว่า 80% แต่มี 2 และ 1 ให้คิด Gap ตาม %"],
e: "4",
a: "3",
gap: "-1"
}] }]
@ViewChild('selfEvaluation1_2', { static: true }) selfEvaluation1_2!: TemplateRef<any>; @ViewChild('selfEvaluation1_2', { static: true }) selfEvaluation1_2!: TemplateRef<any>;
@ViewChild('selfEvaluation1_2Edit', { static: true }) selfEvaluation1_2Edit!: TemplateRef<any>; @ViewChild('selfEvaluation1_2Edit', { static: true }) selfEvaluation1_2Edit!: TemplateRef<any>;
currentTemplate: TemplateRef<any> = this.selfEvaluation1_2 currentTemplate: TemplateRef<any> = this.selfEvaluation1_2
appraisalCompentency: { loading: boolean, select: AppraisalModel, dataList: { check: boolean, data: AppraisalModel }[] } = { loading: false, select: new MyAppraisalModel(), dataList: [] } appraisalCompentency: { loading: boolean, select: AppraisalModel, dataList: { check: boolean, data: AppraisalModel }[] } = { loading: false, select: new MyAppraisalModel(), dataList: [] }
appraisalCompentencyForm: { loading: boolean, data: AppraisalFormModel } = { loading: false, data: new MyAppraisalFormModel() }
appraisalPms: { loading: boolean, select: AppraisalModel, dataList: { check: boolean, data: AppraisalModel }[] } = { loading: false, select: new MyAppraisalModel(), dataList: [] } appraisalPms: { loading: boolean, select: AppraisalModel, dataList: { check: boolean, data: AppraisalModel }[] } = { loading: false, select: new MyAppraisalModel(), dataList: [] }
employee: { loading: boolean, data: EmployeeModel } = { loading: false, data: new MyEmployeeModel() } employee: { loading: boolean, data: EmployeeModel } = { loading: false, data: new MyEmployeeModel() }
appraisalCompentencyForm: { loading: boolean, select: AppraisalModel, dataList: { check: boolean, data: AppraisalModel }[] } = { loading: false, select: new MyAppraisalModel(), dataList: [] } setting: { loading: boolean, data: SettingAssessmentModel } = { loading: false, data: new MySettingAssessmentModel() }
idp: { loading: boolean, data: IdpDevelopmentModel } = { loading: false, data: new MyIdpDevelopmentModel() }
currentDate = new Date()
constructor(private appraisalService: AppraisalService, constructor(private appraisalService: AppraisalService,
private employeeService: EmployeeService, private employeeService: EmployeeService,
private cdr: ChangeDetectorRef private cdr: ChangeDetectorRef,
private settingAssessmentService: SettingAssessmentService,
private idpDevelopmentService: IdpDevelopmentService
) { ) {
} }
ngOnInit(): void { ngOnInit(): void {
this.currentTemplate = this.selfEvaluation1_2 this.currentTemplate = this.selfEvaluation1_2
this.getProfile() this.getProfile()
this.getAppraisalCompentencyList() this.getAppraisalCompentencyList()
this.getSettingList()
this.getIdpData()
}
getIdpData() {
this.idp.loading = true
this.idpDevelopmentService.getList().subscribe({
next: response => {
this.idp.data = new MyIdpDevelopmentModel(response)
this.idp.data.developmentPlan.sort((a, b) => +a.planId - +b.planId)
this.idp.loading = false
this.cdr.detectChanges()
}, error: error => {
this.idp.loading = false
this.cdr.detectChanges()
}
})
}
getSettingList() {
this.setting.loading = true
this.settingAssessmentService.get().subscribe({
next: response => {
this.setting.data = new MySettingAssessmentModel(response)
this.setting.loading = false
this.cdr.detectChanges()
}, error: error => {
this.setting.loading = false
this.cdr.detectChanges()
}
})
} }
getProfile() { getProfile() {
this.employee.loading = true this.employee.loading = true
...@@ -135,25 +113,36 @@ export class SelfEvaluationComponent implements OnInit { ...@@ -135,25 +113,36 @@ export class SelfEvaluationComponent implements OnInit {
appraisalCompentencyFilter() { appraisalCompentencyFilter() {
return this.appraisalCompentency.dataList return this.appraisalCompentency.dataList
} }
getAppraisalCompentencyFrom() { selectAppraisalCompentency(data: AppraisalModel) {
this.appraisalCompentency.loading = true this.appraisalCompentency.select = new MyAppraisalModel(data)
this.appraisalService.getList().subscribe({ }
getAppraisalCompentencyForm() {
this.appraisalCompentencyForm.loading = true
this.appraisalService.getFormCompentencyById(this.appraisalCompentency.select.masfromEvaluationRoundModel.evaluationRoundId, this.employee.data.employeeId).subscribe({
next: response => { next: response => {
this.appraisalCompentency.dataList = response.map(x => ({ check: false, data: new MyAppraisalModel(x) })) this.appraisalCompentencyForm.data = new MyAppraisalFormModel(response)
this.appraisalCompentency.loading = false console.log(" 🐒 this.appraisalCompentencyForm.data:", this.appraisalCompentencyForm.data.masfromEvaluationAssessment1lList)
for (let i = 1; i <= 5; i++) {
this.caltargetScore(i)
}
this.appraisalCompentencyForm.loading = false
this.cdr.detectChanges() this.cdr.detectChanges()
}, error: error => { }, error: error => {
this.appraisalCompentency.loading = false this.appraisalCompentencyForm.loading = false
this.cdr.detectChanges() this.cdr.detectChanges()
} }
}) })
} }
appraisalCompentencyFormFilter() {
return this.appraisalCompentencyForm.data.masfromEvaluationAssessment1lList
}
appraisalPmsFilter() { appraisalPmsFilter() {
return this.appraisalPms.dataList return this.appraisalPms.dataList
} }
dataList3Filter() {
return this.dataList3
}
showTools(data: string[]) { showTools(data: string[]) {
return data.join("/") return data.join("/")
} }
...@@ -211,9 +200,65 @@ export class SelfEvaluationComponent implements OnInit { ...@@ -211,9 +200,65 @@ export class SelfEvaluationComponent implements OnInit {
}); });
} }
convertDate(dateString: string): string { convertDate(dateInput: string | Date): string {
const date = new Date(dateString); const date = typeof dateInput === 'string' ? new Date(dateInput) : dateInput;
return date.toLocaleDateString('th-TH', { day: 'numeric', month: 'long', year: 'numeric' }); return date.toLocaleDateString('th-TH', { day: 'numeric', month: 'long', year: 'numeric' });
} }
caltargetScore(targetScore: number) {
console.log(" 🐒 targetScore:", targetScore)
switch (targetScore) {
case (1): {
this.appraisalCompentencyForm.data.targetScore1 = this.appraisalCompentencyForm.data.masfromEvaluationAssessment1lList.filter(x => x.groupAssessment1.competencyIndicatorsCourses1Mini.behavioralIndicatorsList.filter(y => y.competencyBehavioral.scoreTopicExpectation == 1)).length
console.log(" 🐒 1:", this.appraisalCompentencyForm.data.targetScore1)
this.cdr.detectChanges()
break;
}
case (2): {
this.appraisalCompentencyForm.data.targetScore2 = this.appraisalCompentencyForm.data.masfromEvaluationAssessment1lList.filter(x => x.groupAssessment1.competencyIndicatorsCourses1Mini.behavioralIndicatorsList.filter(y => y.competencyBehavioral.scoreTopicExpectation == 2)).length * 2
console.log(" 🐒 2:", this.appraisalCompentencyForm.data.targetScore2)
this.cdr.detectChanges()
break;
}
case (3): {
this.appraisalCompentencyForm.data.targetScore3 = this.appraisalCompentencyForm.data.masfromEvaluationAssessment1lList.filter(x => x.groupAssessment1.competencyIndicatorsCourses1Mini.behavioralIndicatorsList.filter(y => y.competencyBehavioral.scoreTopicExpectation == 3)).length * 3
console.log(" 🐒 3:", this.appraisalCompentencyForm.data.targetScore3)
this.cdr.detectChanges()
break;
}
case (4): {
this.appraisalCompentencyForm.data.targetScore4 = this.appraisalCompentencyForm.data.masfromEvaluationAssessment1lList.filter(x => x.groupAssessment1.competencyIndicatorsCourses1Mini.behavioralIndicatorsList.filter(y => y.competencyBehavioral.scoreTopicExpectation == 4)).length * 4
console.log(" 🐒 4:", this.appraisalCompentencyForm.data.targetScore4)
this.cdr.detectChanges()
break;
}
case (5): {
this.appraisalCompentencyForm.data.targetScore5 = this.appraisalCompentencyForm.data.masfromEvaluationAssessment1lList.filter(x => x.groupAssessment1.competencyIndicatorsCourses1Mini.behavioralIndicatorsList.filter(y => y.competencyBehavioral.scoreTopicExpectation == 5)).length * 5
console.log(" 🐒 5:", this.appraisalCompentencyForm.data.targetScore5)
this.cdr.detectChanges()
break;
}
default: { return }
}
}
calWeightScore(targetScore: number) {
switch (targetScore) {
case (1): {
return +(this.setting.data.settingScore1) * this.appraisalCompentencyForm.data.targetScore1
}
case (2): {
return +(this.setting.data.settingScore2) * this.appraisalCompentencyForm.data.targetScore2
}
case (3): {
return +(this.setting.data.settingScore3) * this.appraisalCompentencyForm.data.targetScore3
}
case (4): {
return +(this.setting.data.settingScore4) * this.appraisalCompentencyForm.data.targetScore4
}
case (5): {
return +(this.setting.data.settingScore5) * this.appraisalCompentencyForm.data.targetScore5
}
default: { return }
}
}
} }
...@@ -3,7 +3,7 @@ import { EvaluationCycleModel, MyEvaluationCycleModel } from "./evaluation-cycle ...@@ -3,7 +3,7 @@ import { EvaluationCycleModel, MyEvaluationCycleModel } from "./evaluation-cycle
import { MasfromEvaluationAssessment1Model, MyMasfromEvaluationAssessment1Model } from "./masfrom-evaluation-assessment1.model" import { MasfromEvaluationAssessment1Model, MyMasfromEvaluationAssessment1Model } from "./masfrom-evaluation-assessment1.model"
import { MyPLModel, PLModel } from "./pl.model" import { MyPLModel, PLModel } from "./pl.model"
export interface AppraisalFromModel { export interface AppraisalFormModel {
personalLevel: PLModel personalLevel: PLModel
masfromEvaluationRoundModel: EvaluationCycleModel masfromEvaluationRoundModel: EvaluationCycleModel
companyId: string companyId: string
...@@ -36,7 +36,7 @@ export interface AppraisalFromModel { ...@@ -36,7 +36,7 @@ export interface AppraisalFromModel {
sumEvaluationResults: string sumEvaluationResults: string
masfromEvaluationAssessment1lList: MasfromEvaluationAssessment1Model[] masfromEvaluationAssessment1lList: MasfromEvaluationAssessment1Model[]
} }
export class MyAppraisalFromModel implements AppraisalFromModel { export class MyAppraisalFormModel implements AppraisalFormModel {
personalLevel: PLModel personalLevel: PLModel
masfromEvaluationRoundModel: EvaluationCycleModel masfromEvaluationRoundModel: EvaluationCycleModel
companyId: string companyId: string
...@@ -68,7 +68,7 @@ export class MyAppraisalFromModel implements AppraisalFromModel { ...@@ -68,7 +68,7 @@ export class MyAppraisalFromModel implements AppraisalFromModel {
evaluationResults: string evaluationResults: string
sumEvaluationResults: string sumEvaluationResults: string
masfromEvaluationAssessment1lList: MasfromEvaluationAssessment1Model[] masfromEvaluationAssessment1lList: MasfromEvaluationAssessment1Model[]
constructor(data?: Partial<AppraisalFromModel>) { constructor(data?: Partial<AppraisalFormModel>) {
this.personalLevel = new MyPLModel(data?.personalLevel) this.personalLevel = new MyPLModel(data?.personalLevel)
this.masfromEvaluationRoundModel = new MyEvaluationCycleModel(data?.masfromEvaluationRoundModel) this.masfromEvaluationRoundModel = new MyEvaluationCycleModel(data?.masfromEvaluationRoundModel)
this.companyId = data?.companyId || "" this.companyId = data?.companyId || ""
......
export interface DevelopmentPlanModel {
planId: string;
companyId: string;
ojtJobAssignment: boolean;
coachMentor: boolean;
training: boolean;
}
export class MyDevelopmentPlanModel implements DevelopmentPlanModel {
planId: string;
companyId: string;
ojtJobAssignment: boolean;
coachMentor: boolean;
training: boolean;
constructor(data?: Partial<DevelopmentPlanModel>) {
this.planId = data?.planId || '';
this.companyId = data?.companyId || '';
this.ojtJobAssignment = data?.ojtJobAssignment ?? false
this.coachMentor = data?.coachMentor ?? false
this.training = data?.training ?? false
}
}
...@@ -4,7 +4,7 @@ import { MyPLModel, PLModel } from "./pl.model" ...@@ -4,7 +4,7 @@ import { MyPLModel, PLModel } from "./pl.model"
export interface GroupAssessment1Model { export interface GroupAssessment1Model {
personalLevelModel: PLModel personalLevelModel: PLModel
competencyIndicatorsCourses1Mini: CompetencyIndicatorsCourses1MiniModel[] competencyIndicatorsCourses1Mini: CompetencyIndicatorsCourses1MiniModel
companyId: string companyId: string
groupAssessmentMini: GroupAssessmentMiniModel groupAssessmentMini: GroupAssessmentMiniModel
} }
...@@ -12,12 +12,12 @@ export interface GroupAssessment1Model { ...@@ -12,12 +12,12 @@ export interface GroupAssessment1Model {
export class MyGroupAssessment1Model implements GroupAssessment1Model { export class MyGroupAssessment1Model implements GroupAssessment1Model {
personalLevelModel: PLModel personalLevelModel: PLModel
competencyIndicatorsCourses1Mini: CompetencyIndicatorsCourses1MiniModel[] competencyIndicatorsCourses1Mini: CompetencyIndicatorsCourses1MiniModel
companyId: string companyId: string
groupAssessmentMini: GroupAssessmentMiniModel groupAssessmentMini: GroupAssessmentMiniModel
constructor(data?: Partial<GroupAssessment1Model>) { constructor(data?: Partial<GroupAssessment1Model>) {
this.personalLevelModel = new MyPLModel(data?.personalLevelModel) this.personalLevelModel = new MyPLModel(data?.personalLevelModel)
this.competencyIndicatorsCourses1Mini = data?.competencyIndicatorsCourses1Mini?.map(x => new MyCompetencyIndicatorsCourses1MiniModel(x)) || [] this.competencyIndicatorsCourses1Mini = new MyCompetencyIndicatorsCourses1MiniModel(data?.competencyIndicatorsCourses1Mini)
this.companyId = data?.companyId || "" this.companyId = data?.companyId || ""
this.groupAssessmentMini = new MyGroupAssessmentMiniModel(data?.groupAssessmentMini) this.groupAssessmentMini = new MyGroupAssessmentMiniModel(data?.groupAssessmentMini)
} }
......
export interface DevelopmentPlan { import { DevelopmentPlanModel, MyDevelopmentPlanModel } from "./development-plan.model";
planId: string;
companyId: string;
ojtJobAssignment: boolean;
coachMentor: boolean;
training: boolean;
}
export interface IdpDevelopmentModel { export interface IdpDevelopmentModel {
evaluationId: string; evaluationId: string;
companyId: string; companyId: string;
score: number; score: number;
developmentPlan: DevelopmentPlan[]; developmentPlan: DevelopmentPlanModel[];
} }
export class MyIdpDevelopmentModel implements IdpDevelopmentModel { export class MyIdpDevelopmentModel implements IdpDevelopmentModel {
evaluationId: string; evaluationId: string;
companyId: string; companyId: string;
score: number; score: number;
developmentPlan: DevelopmentPlan[]; developmentPlan: DevelopmentPlanModel[];
constructor(data: Partial<IdpDevelopmentModel>) { constructor(data?: Partial<IdpDevelopmentModel>) {
this.evaluationId = data.evaluationId || ''; this.evaluationId = data?.evaluationId || '';
this.companyId = data.companyId || ''; this.companyId = data?.companyId || '';
this.score = data.score ?? 0; this.score = data?.score ?? 0;
this.developmentPlan = data.developmentPlan || []; this.developmentPlan = data?.developmentPlan?.map(x => new MyDevelopmentPlanModel(x)) || [];
} }
} }
\ No newline at end of file
...@@ -5,7 +5,7 @@ import { environment } from 'src/environments/environment'; ...@@ -5,7 +5,7 @@ import { environment } from 'src/environments/environment';
import { PLModel } from '../model/pl.model'; import { PLModel } from '../model/pl.model';
import { AlertModel } from '../model/alert.model'; import { AlertModel } from '../model/alert.model';
import { AppraisalModel } from '../model/appraisal.model'; import { AppraisalModel } from '../model/appraisal.model';
import { AppraisalFromModel } from '../model/appraisal-form.model'; import { AppraisalFormModel } from '../model/appraisal-form.model';
@Injectable({ @Injectable({
providedIn: 'root' providedIn: 'root'
}) })
...@@ -14,8 +14,8 @@ export class AppraisalService { ...@@ -14,8 +14,8 @@ export class AppraisalService {
urlApi = environment.baseUrl + this.api urlApi = environment.baseUrl + this.api
constructor(private http: HttpClient) { constructor(private http: HttpClient) {
} }
getFormById(evaluationRoundId: string, apsassessy: string): Observable<AppraisalFromModel> { getFormCompentencyById(evaluationRoundId: string, apsassessy: string): Observable<AppraisalFormModel> {
return this.http.get<AppraisalFromModel>(this.urlApi + "/" + evaluationRoundId + "/" + apsassessy) return this.http.get<AppraisalFormModel>(this.urlApi + "/competency/" + evaluationRoundId + "/" + apsassessy)
} }
getList(): Observable<AppraisalModel[]> { getList(): Observable<AppraisalModel[]> {
return this.http.get<AppraisalModel[]>(this.urlApi + "/competency/emp") return this.http.get<AppraisalModel[]>(this.urlApi + "/competency/emp")
......
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