Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
mySkill-x
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Registry
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
angular
mySkill-x
Commits
e0f3ec8a
Commit
e0f3ec8a
authored
Feb 24, 2025
by
Nattana Chaiyamat
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ไฟล์template
parent
1a8d5cfa
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
265 additions
and
158 deletions
+265
-158
edit-group-indicators.component.ts
.../edit-group-indicators/edit-group-indicators.component.ts
+1
-1
self-evaluation.component.html
...evaluation/self-evaluation/self-evaluation.component.html
+99
-51
self-evaluation.component.ts
...e-evaluation/self-evaluation/self-evaluation.component.ts
+122
-77
appraisal-form.model.ts
src/app/shared/model/appraisal-form.model.ts
+3
-3
development-plan.model.ts
src/app/shared/model/development-plan.model.ts
+22
-0
group-assessment1.model.ts
src/app/shared/model/group-assessment1.model.ts
+3
-3
idp-development.model.ts
src/app/shared/model/idp-development.model.ts
+12
-20
appraisal.service.ts
src/app/shared/services/appraisal.service.ts
+3
-3
IMPORT_COMPETENCY_INDICATORS.xlsx
src/assets/template/IMPORT_COMPETENCY_INDICATORS.xlsx
+0
-0
No files found.
src/app/components/competency-assessment/competency-management/indicators-and-curriculum/edit-group-indicators/edit-group-indicators.component.ts
View file @
e0f3ec8a
...
...
@@ -107,7 +107,7 @@ export class EditGroupIndicators implements OnInit {
};
});
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
)
{
this
.
dataList
.
push
({
code
:
(
++
maxCode
)
+
""
,
...
...
src/app/components/performance-evaluation/self-evaluation/self-evaluation.component.html
View file @
e0f3ec8a
...
...
@@ -83,14 +83,24 @@
</ng-container>
</tr>
</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>
<td
class=
"text-center"
colspan=
"100%"
>
ไม่พบข้อมูล
</td>
</tr>
</tbody>
<tbody
*
ngIf=
"appraisalCompentencyFilter().length"
>
<tbody
*
ngIf=
"
!appraisalCompentency.loading&&
appraisalCompentencyFilter().length"
>
<tr
*
ngFor=
"let item of appraisalCompentencyFilter();let i = index"
>
<td
class=
"flex justify-center items-center"
>
{{item.data.masfromEvaluationRoundModel.evaluationRoundId}}
...
...
@@ -109,7 +119,7 @@
</td>
<td
class=
"flex justify-center items-center"
>
<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>
</td>
...
...
@@ -140,14 +150,24 @@
</ng-container>
</tr>
</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>
<td
class=
"text-center"
colspan=
"100%"
>
ไม่พบข้อมูล
</td>
</tr>
</tbody>
<tbody
*
ngIf=
"appraisalPmsFilter().length"
>
<tbody
*
ngIf=
"
!appraisalPms.loading&&
appraisalPmsFilter().length"
>
<tr
*
ngFor=
"let item of appraisalPmsFilter();let i = index"
>
<td
class=
"flex justify-center items-center"
>
{{item.data.masfromEvaluationRoundModel.evaluationRoundId}}
...
...
@@ -268,24 +288,37 @@
</tr>
<tr
class=
"font-size-12px"
>
<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}}
</th>
</ng-container>
</tr>
</thead>
<tbody
*
ngIf=
"!dataList3Filter().length"
>
<tr
class=
"hover:table-hover2-hover"
>
<tbody
*
ngIf=
"appraisalCompentencyForm.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=
"!appraisalCompentencyForm.loading&&!appraisalCompentencyFormFilter().length"
>
<tr>
<td
class=
"text-center"
colspan=
"100%"
>
ไม่พบข้อมูล
</td>
</tr>
</tbody>
<tbody
*
ngIf=
"dataList3Filter().length"
>
<ng-container
*
ngFor=
" let data of dataList3Filter();let i = index"
>
<tr
*
ngFor=
"let item of data.bi;let i2 = index;let f = first"
(
mouseenter
)="
hoveredCode =
data.code"
(
mouseleave
)="
hoveredCode =
null"
[
ngClass
]="{
'
table-hover2
'
:
data
.
code =
==
hoveredCode
,'
border-none
'
:
!
f
}"
>
<tbody
*
ngIf=
"!appraisalCompentencyForm.loading&&appraisalCompentencyFormFilter().length"
>
<ng-container
*
ngFor=
"let appraisalCompentencyForm of appraisalCompentencyFormFilter();let i = index"
>
<tr
*
ngFor=
"let bi of appraisalCompentencyForm.groupAssessment1.competencyIndicatorsCourses1Mini.behavioralIndicatorsList;let i2 = index;let f = first"
(
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"
>
<ng-container
*
ngIf=
"f"
>
{{i+1}}
...
...
@@ -293,24 +326,25 @@
</td>
<td
class=
"align-start text-center"
>
<ng-container
*
ngIf=
"f"
>
{{
data.code
}}
{{
appraisalCompentencyForm.groupAssessment1.competencyIndicatorsCourses1Mini.competencyIndicatorsCourses0.competencyTopic.competencyTopicId
}}
</ng-container>
</td>
<td
class=
"align-start !white-space-normal"
>
<ng-container
*
ngIf=
"f"
>
{{
data.name
}}
{{
appraisalCompentencyForm.groupAssessment1.competencyIndicatorsCourses1Mini.competencyIndicatorsCourses0.tdesc
}}
</ng-container>
</td>
<td
class=
"align-start !white-space-normal"
>
{{
item.name
}}
{{
bi.behavioralIndicators
}}
</td>
<td
class=
"align-center text-center"
>
{{
showTools(item.tools)
}}
{{
bi.assessmentId
}}
</td>
<td
class=
"align-center text-center"
*
ngFor=
"let value of ['5','4','3','2','1']; let i3=index"
>
<td
class=
"align-center text-center"
*
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"
[
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>
</tr>
</ng-container>
...
...
@@ -321,33 +355,41 @@
<div
class=
"pb-1rem px-2rem"
>
<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-3 grid grid-cols-5"
>
<div
class=
"col-span-1 text-center"
>
14
</div>
<div
class=
"col-span-1 text-center"
>
6
</div>
<div
class=
"col-span-1 text-center"
>
0
</div>
<div
class=
"col-span-1 text-center"
>
0
</div>
<div
class=
"col-span-1 text-center"
>
0
</div>
<div
class=
"col-span-1 text-center"
>
{{appraisalCompentencyForm.data.targetScore5}}
</div>
<div
class=
"col-span-1 text-center"
>
{{appraisalCompentencyForm.data.targetScore4}}
</div>
<div
class=
"col-span-1 text-center"
>
{{appraisalCompentencyForm.data.targetScore3}}
</div>
<div
class=
"col-span-1 text-center"
>
{{appraisalCompentencyForm.data.targetScore2}}
</div>
<div
class=
"col-span-1 text-center"
>
{{appraisalCompentencyForm.data.targetScore1}}
</div>
</div>
</div>
<div
class=
"py-2 grid grid-cols-11"
>
<div
class=
"col-span-8"
>
ตัวคูณคะแนนในแต่ละช่อง (2)
</div>
<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"
>
0.8
</div>
<div
class=
"col-span-1 text-center"
>
0.6
</div>
<div
class=
"col-span-1 text-center"
>
0.4
</div>
<div
class=
"col-span-1 text-center"
>
0.2
</div>
<div
class=
"col-span-1 text-center"
>
{{setting.data.settingScore5}}
</div>
<div
class=
"col-span-1 text-center"
>
{{setting.data.settingScore4}}
</div>
<div
class=
"col-span-1 text-center"
>
{{setting.data.settingScore3}}
</div>
<div
class=
"col-span-1 text-center"
>
{{setting.data.settingScore2}}
</div>
<div
class=
"col-span-1 text-center"
>
{{setting.data.settingScore1}}
</div>
</div>
</div>
<div
class=
"py-2 grid grid-cols-11"
>
<div
class=
"col-span-8"
>
ถ่วงน้ำหนักผลรวม 1X2
</div>
<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"
>
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
class=
"col-span-1 text-center"
*
ngFor=
"let item of [5,4,3,2,1]"
>
{{calWeightScore(item)}}
</div>
</div>
</div>
<div
class=
"py-2 grid grid-cols-11"
>
...
...
@@ -395,8 +437,8 @@
</ng-container>
</tr>
</thead>
<tbody
*
ngIf=
"
dataList4
.length"
>
<tr
*
ngFor=
"let item of
dataList4
;let i = index"
>
<tbody
*
ngIf=
"
checkSheet
.length"
>
<tr
*
ngFor=
"let item of
checkSheet
;let i = index"
>
<td
class=
"align-start"
rowspan=
"2"
>
<div
*
ngFor=
"let item2 of item.score"
>
<span>
{{item2}}
</span><br>
...
...
@@ -409,13 +451,13 @@
</td>
<td
class=
"!p-0"
></td>
<td
class=
"align-start text-center"
>
{{item.e}}
???
</td>
<td
class=
"align-start text-center"
>
{{item.a}}
???
</td>
<td
class=
"align-start text-center"
>
{{i
tem.gap
}}
{{i
dp.data.score
}}
</td>
</tr>
<tr>
...
...
@@ -431,46 +473,52 @@
<div
class=
"py-1rem px-2rem"
>
<div
class=
"py-2 grid grid-cols-7 gap-3"
>
<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"
>
<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"
>
<label
for=
"hs-basic-usage1"
class=
"sr-only"
>
ยืนยันผล
</label>
</div>
<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"
>
วันที่ :
วันที่ :
{{convertDate(currentDate)}}
</span>
</div>
</div>
<div
class=
"py-2 grid grid-cols-7 gap-3"
>
<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"
>
<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>
</div>
<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>
วันที่ :
วันที่ :
{{convertDate(currentDate)}}
</span>
</div>
</div>
<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"
>
{{appraisalCompentencyForm.data.apsapprove3.thFullName}}
</div>
<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
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>
</div>
<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>
วันที่ :
วันที่ :
{{convertDate(currentDate)}}
</span>
</div>
</div>
...
...
src/app/components/performance-evaluation/self-evaluation/self-evaluation.component.ts
View file @
e0f3ec8a
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
{
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
{
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'
;
export
interface
Data2Model
{
code
:
string
,
name
:
string
,
bi
:
BiModel
[],
}
export
interface
BiModel
{
name
:
string
,
tools
:
string
[],
...
...
@@ -22,89 +22,67 @@ export interface BiModel {
styleUrls
:
[
'./self-evaluation.component.scss'
]
})
export
class
SelfEvaluationComponent
implements
OnInit
{
pathTitle
=
[
'การประเมินผล'
,
'ประเมินตนเอง'
]
hoveredCode
:
string
|
null
=
null
;
dataList3
:
Data2Model
[]
=
[
{
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
:
{
checkSheet
:
{
score
:
string
[],
condition
:
string
[],
e
:
string
,
a
:
string
,
gap
:
string
condition
:
string
[]
}[]
=
[{
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 ตาม %"
],
e
:
"4"
,
a
:
"3"
,
gap
:
"-1"
}]
@
ViewChild
(
'selfEvaluation1_2'
,
{
static
:
true
})
selfEvaluation1_2
!
:
TemplateRef
<
any
>
;
@
ViewChild
(
'selfEvaluation1_2Edit'
,
{
static
:
true
})
selfEvaluation1_2Edit
!
:
TemplateRef
<
any
>
;
currentTemplate
:
TemplateRef
<
any
>
=
this
.
selfEvaluation1_2
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
:
[]
}
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
,
private
employeeService
:
EmployeeService
,
private
cdr
:
ChangeDetectorRef
private
cdr
:
ChangeDetectorRef
,
private
settingAssessmentService
:
SettingAssessmentService
,
private
idpDevelopmentService
:
IdpDevelopmentService
)
{
}
ngOnInit
():
void
{
this
.
currentTemplate
=
this
.
selfEvaluation1_2
this
.
getProfile
()
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
()
{
this
.
employee
.
loading
=
true
...
...
@@ -135,25 +113,36 @@ export class SelfEvaluationComponent implements OnInit {
appraisalCompentencyFilter
()
{
return
this
.
appraisalCompentency
.
dataList
}
getAppraisalCompentencyFrom
()
{
this
.
appraisalCompentency
.
loading
=
true
this
.
appraisalService
.
getList
().
subscribe
({
selectAppraisalCompentency
(
data
:
AppraisalModel
)
{
this
.
appraisalCompentency
.
select
=
new
MyAppraisalModel
(
data
)
}
getAppraisalCompentencyForm
()
{
this
.
appraisalCompentencyForm
.
loading
=
true
this
.
appraisalService
.
getFormCompentencyById
(
this
.
appraisalCompentency
.
select
.
masfromEvaluationRoundModel
.
evaluationRoundId
,
this
.
employee
.
data
.
employeeId
).
subscribe
({
next
:
response
=>
{
this
.
appraisalCompentency
.
dataList
=
response
.
map
(
x
=>
({
check
:
false
,
data
:
new
MyAppraisalModel
(
x
)
}))
this
.
appraisalCompentency
.
loading
=
false
this
.
appraisalCompentencyForm
.
data
=
new
MyAppraisalFormModel
(
response
)
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
()
},
error
:
error
=>
{
this
.
appraisalCompentency
.
loading
=
false
this
.
appraisalCompentency
Form
.
loading
=
false
this
.
cdr
.
detectChanges
()
}
})
}
appraisalCompentencyFormFilter
()
{
return
this
.
appraisalCompentencyForm
.
data
.
masfromEvaluationAssessment1lList
}
appraisalPmsFilter
()
{
return
this
.
appraisalPms
.
dataList
}
dataList3Filter
()
{
return
this
.
dataList3
}
showTools
(
data
:
string
[])
{
return
data
.
join
(
"/"
)
}
...
...
@@ -211,9 +200,65 @@ export class SelfEvaluationComponent implements OnInit {
});
}
convertDate
(
date
String
:
string
):
string
{
const
date
=
new
Date
(
dateString
)
;
convertDate
(
date
Input
:
string
|
Date
):
string
{
const
date
=
typeof
dateInput
===
'string'
?
new
Date
(
dateInput
)
:
dateInput
;
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
}
}
}
}
src/app/shared/model/appraisal-form.model.ts
View file @
e0f3ec8a
...
...
@@ -3,7 +3,7 @@ import { EvaluationCycleModel, MyEvaluationCycleModel } from "./evaluation-cycle
import
{
MasfromEvaluationAssessment1Model
,
MyMasfromEvaluationAssessment1Model
}
from
"./masfrom-evaluation-assessment1.model"
import
{
MyPLModel
,
PLModel
}
from
"./pl.model"
export
interface
AppraisalF
ro
mModel
{
export
interface
AppraisalF
or
mModel
{
personalLevel
:
PLModel
masfromEvaluationRoundModel
:
EvaluationCycleModel
companyId
:
string
...
...
@@ -36,7 +36,7 @@ export interface AppraisalFromModel {
sumEvaluationResults
:
string
masfromEvaluationAssessment1lList
:
MasfromEvaluationAssessment1Model
[]
}
export
class
MyAppraisalF
romModel
implements
AppraisalFro
mModel
{
export
class
MyAppraisalF
ormModel
implements
AppraisalFor
mModel
{
personalLevel
:
PLModel
masfromEvaluationRoundModel
:
EvaluationCycleModel
companyId
:
string
...
...
@@ -68,7 +68,7 @@ export class MyAppraisalFromModel implements AppraisalFromModel {
evaluationResults
:
string
sumEvaluationResults
:
string
masfromEvaluationAssessment1lList
:
MasfromEvaluationAssessment1Model
[]
constructor
(
data
?:
Partial
<
AppraisalF
ro
mModel
>
)
{
constructor
(
data
?:
Partial
<
AppraisalF
or
mModel
>
)
{
this
.
personalLevel
=
new
MyPLModel
(
data
?.
personalLevel
)
this
.
masfromEvaluationRoundModel
=
new
MyEvaluationCycleModel
(
data
?.
masfromEvaluationRoundModel
)
this
.
companyId
=
data
?.
companyId
||
""
...
...
src/app/shared/model/development-plan.model.ts
0 → 100644
View file @
e0f3ec8a
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
}
}
src/app/shared/model/group-assessment1.model.ts
View file @
e0f3ec8a
...
...
@@ -4,7 +4,7 @@ import { MyPLModel, PLModel } from "./pl.model"
export
interface
GroupAssessment1Model
{
personalLevelModel
:
PLModel
competencyIndicatorsCourses1Mini
:
CompetencyIndicatorsCourses1MiniModel
[]
competencyIndicatorsCourses1Mini
:
CompetencyIndicatorsCourses1MiniModel
companyId
:
string
groupAssessmentMini
:
GroupAssessmentMiniModel
}
...
...
@@ -12,12 +12,12 @@ export interface GroupAssessment1Model {
export
class
MyGroupAssessment1Model
implements
GroupAssessment1Model
{
personalLevelModel
:
PLModel
competencyIndicatorsCourses1Mini
:
CompetencyIndicatorsCourses1MiniModel
[]
competencyIndicatorsCourses1Mini
:
CompetencyIndicatorsCourses1MiniModel
companyId
:
string
groupAssessmentMini
:
GroupAssessmentMiniModel
constructor
(
data
?:
Partial
<
GroupAssessment1Model
>
)
{
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
.
groupAssessmentMini
=
new
MyGroupAssessmentMiniModel
(
data
?.
groupAssessmentMini
)
}
...
...
src/app/shared/model/idp-development.model.ts
View file @
e0f3ec8a
export
interface
DevelopmentPlan
{
planId
:
string
;
companyId
:
string
;
ojtJobAssignment
:
boolean
;
coachMentor
:
boolean
;
training
:
boolean
;
}
import
{
DevelopmentPlanModel
,
MyDevelopmentPlanModel
}
from
"./development-plan.model"
;
export
interface
IdpDevelopmentModel
{
export
interface
IdpDevelopmentModel
{
evaluationId
:
string
;
companyId
:
string
;
score
:
number
;
developmentPlan
:
DevelopmentPlan
[];
}
developmentPlan
:
DevelopmentPlanModel
[];
}
export
class
MyIdpDevelopmentModel
implements
IdpDevelopmentModel
{
export
class
MyIdpDevelopmentModel
implements
IdpDevelopmentModel
{
evaluationId
:
string
;
companyId
:
string
;
score
:
number
;
developmentPlan
:
DevelopmentPlan
[];
developmentPlan
:
DevelopmentPlanModel
[];
constructor
(
data
:
Partial
<
IdpDevelopmentModel
>
)
{
this
.
evaluationId
=
data
.
evaluationId
||
''
;
this
.
companyId
=
data
.
companyId
||
''
;
this
.
score
=
data
.
score
??
0
;
this
.
developmentPlan
=
data
.
developmentPlan
||
[];
constructor
(
data
?
:
Partial
<
IdpDevelopmentModel
>
)
{
this
.
evaluationId
=
data
?
.
evaluationId
||
''
;
this
.
companyId
=
data
?
.
companyId
||
''
;
this
.
score
=
data
?
.
score
??
0
;
this
.
developmentPlan
=
data
?.
developmentPlan
?.
map
(
x
=>
new
MyDevelopmentPlanModel
(
x
))
||
[];
}
}
\ No newline at end of file
}
src/app/shared/services/appraisal.service.ts
View file @
e0f3ec8a
...
...
@@ -5,7 +5,7 @@ import { environment } from 'src/environments/environment';
import
{
PLModel
}
from
'../model/pl.model'
;
import
{
AlertModel
}
from
'../model/alert.model'
;
import
{
AppraisalModel
}
from
'../model/appraisal.model'
;
import
{
AppraisalF
ro
mModel
}
from
'../model/appraisal-form.model'
;
import
{
AppraisalF
or
mModel
}
from
'../model/appraisal-form.model'
;
@
Injectable
({
providedIn
:
'root'
})
...
...
@@ -14,8 +14,8 @@ export class AppraisalService {
urlApi
=
environment
.
baseUrl
+
this
.
api
constructor
(
private
http
:
HttpClient
)
{
}
getForm
ById
(
evaluationRoundId
:
string
,
apsassessy
:
string
):
Observable
<
AppraisalFro
mModel
>
{
return
this
.
http
.
get
<
AppraisalF
romModel
>
(
this
.
urlApi
+
"
/"
+
evaluationRoundId
+
"/"
+
apsassessy
)
getForm
CompentencyById
(
evaluationRoundId
:
string
,
apsassessy
:
string
):
Observable
<
AppraisalFor
mModel
>
{
return
this
.
http
.
get
<
AppraisalF
ormModel
>
(
this
.
urlApi
+
"/competency
/"
+
evaluationRoundId
+
"/"
+
apsassessy
)
}
getList
():
Observable
<
AppraisalModel
[]
>
{
return
this
.
http
.
get
<
AppraisalModel
[]
>
(
this
.
urlApi
+
"/competency/emp"
)
...
...
src/assets/template/IMPORT_COMPETENCY_INDICATORS.xlsx
View file @
e0f3ec8a
No preview for this file type
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment