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
caf318d4
Commit
caf318d4
authored
Apr 29, 2025
by
Nattana Chaiyamat
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ประเมินตนเอง
parent
2f8519d6
Show whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
4799 additions
and
733 deletions
+4799
-733
pms-competency.component.html
...orm-employee/pms-competency/pms-competency.component.html
+93
-83
pms-competency.component.scss
...orm-employee/pms-competency/pms-competency.component.scss
+2
-2
pms-competency.component.ts
...-form-employee/pms-competency/pms-competency.component.ts
+123
-102
pms-form-employee.component.html
...uation/pms-form-employee/pms-form-employee.component.html
+201
-104
pms-form-employee.component.ts
...aluation/pms-form-employee/pms-form-employee.component.ts
+32
-8
pms-idp.component.html
...aluation/pms-form-employee/pms-idp/pms-idp.component.html
+71
-71
pms-idp.component.ts
...evaluation/pms-form-employee/pms-idp/pms-idp.component.ts
+41
-51
pms-kpi.component.html
...aluation/pms-form-employee/pms-kpi/pms-kpi.component.html
+150
-147
pms-kpi.component.ts
...evaluation/pms-form-employee/pms-kpi/pms-kpi.component.ts
+64
-152
self-evaluation.component.html
...evaluation/self-evaluation/self-evaluation.component.html
+2
-4
supervisor-evaluation.component.html
...upervisor-evaluation/supervisor-evaluation.component.html
+4
-8
appraisal-competency.model.ts
src/app/shared/model/appraisal-competency.model.ts
+1
-0
competency.model.ts
src/app/shared/model/competency.model.ts
+3998
-0
appraisal.service.ts
src/app/shared/services/appraisal.service.ts
+4
-0
style.css
src/assets/css/style.css
+13
-1
No files found.
src/app/components/performance-evaluation/pms-form-employee/pms-competency/pms-competency.component.html
View file @
caf318d4
<div
class=
"flex w-full"
>
<div
class=
"ltr:border-r rtl:border-l border-gray-200 dark:border-white/10 w-64"
>
<nav
class=
"flex flex-col space-y-2 whitespace-nowrap"
aria-label=
"Tabs"
data-hs-tabs-vertical=
"true"
>
<nav
class=
"flex flex-col space-y-2 whitespace-nowrap"
aria-label=
"Tabs"
data-hs-tabs-vertical=
"true"
>
<button
*
ngFor=
"let item of allCompetencyTypeId ;let i=index"
(
click
)="
getAppraisalCompentencyForm
(
i
)"
[
class
.
active
]="
currentTap=
=item.shortName"
type=
"button"
class=
"hs-tab-active:bg-primary ltr:hs-tab-active:border-r-transparent rtl:hs-tab-active:border-l-transparent hs-tab-active:text-white dark:hs-tab-active:bg-transparent ltr:dark:hs-tab-active:border-r-gray-800 rtl:dark:hs-tab-active:border-l-gray-800 dark:hs-tab-active:text-primary -mr-px py-2 px-3 inline-flex items-center gap-2 text-sm font-medium text-center border text-gray-500 ltr:rounded-l-lg rtl:rounded-r-lg hover:text-gray-700 dark:bg-black/20 dark:border-white/10 dark:text-white/70 dark:hover:text-gray-300"
<div
class=
"ltr:border-r rtl:border-l border-gray-200 dark:border-white/10"
style=
"width: 5rem"
>
<nav
class=
"flex flex-col space-y-2 whitespace-nowrap"
aria-label=
"Tabs"
[
attr
.
data-hs-tabs-vertical
]="
true
"
>
<button
*
ngFor=
"let appraisalCompentency of appraisalCompentencyList ;let i=index"
(
click
)="
getAppraisalCompentencyForm
(
i
)"
[
class
.
active
]="
currentTap=
=appraisalCompentency.comType"
type=
"button"
class=
"hs-tab-active:bg-primary ltr:hs-tab-active:border-r-transparent rtl:hs-tab-active:border-l-transparent hs-tab-active:text-white dark:hs-tab-active:bg-transparent ltr:dark:hs-tab-active:border-r-gray-800 rtl:dark:hs-tab-active:border-l-gray-800 dark:hs-tab-active:text-primary -mr-px py-2 px-3 inline-flex items-center gap-2 text-sm font-medium text-center border text-gray-500 ltr:rounded-l-lg rtl:rounded-r-lg hover:text-gray-700 dark:bg-black/20 dark:border-white/10 dark:text-white/70 dark:hover:text-gray-300 !p-2"
[
id
]="'
hs-tab-js-vertical-item-
'+
i
"
[
attr
.
data-hs-tab
]="'#
hs-tab-js-vertical-
'+
i
"
[
attr
.
aria-controls
]="'
hs-tab-js-vertical-
'+
i
"
>
{{item.shortName}}
<div
class=
"w-full flex items-center "
style=
"justify-content :space-between;"
>
{{appraisalCompentency.comType}}
<svg
class=
"flex-shrink-0 h-6 w-6 text-white"
width=
"16"
height=
"16"
viewBox=
"0 0 16 16"
fill=
"none"
xmlns=
"http://www.w3.org/2000/svg"
>
<path
d=
"M15.1965 7.85999C15.1965 3.71785 11.8387 0.359985 7.69653 0.359985C3.5544 0.359985 0.196533 3.71785 0.196533 7.85999C0.196533 12.0021 3.5544 15.36 7.69653 15.36C11.8387 15.36 15.1965 12.0021 15.1965 7.85999Z"
fill=
"currentColor"
[
class
.
fill-mute
]="!
onFormCompleted
(
i
)"
[
class
.
fill-success
]="
onFormCompleted
(
i
)"
>
</path>
<path
d=
"M10.9295 4.88618C11.1083 4.67577 11.4238 4.65019 11.6343 4.82904C11.8446 5.00788 11.8702 5.32343 11.6914 5.53383L7.44139 10.5338C7.25974 10.7475 6.93787 10.77 6.72825 10.5837L4.47825 8.5837C4.27186 8.40024 4.25327 8.0842 4.43673 7.87781C4.62019 7.67142 4.93622 7.65283 5.14261 7.83629L7.01053 9.49669L10.9295 4.88618Z"
fill=
"currentColor"
></path>
</svg>
</div>
</button>
</nav>
</nav>
</div>
<div
class=
"flex-1"
>
<div
*
ngFor=
"let item of allCompetencyTypeId ;let i=index"
[
id
]="'
hs-tab-js-vertical-
'+
i
"
role=
"tabpanel"
[
class
.
hidden
]="
currentTap
!=
item
.
shortName
"
[
attr
.
aria-labelledby
]="'
hs-tab-js-vertical-item-
'+
i
"
>
<div
class=
"hs-accordion-group w-full"
*
ngIf=
"appraisalCompentency.data"
>
<div
class=
"flex-1 w-full"
>
<div
*
ngFor=
"let appraisalCompentency of appraisalCompentencyList ;let i=index"
[
id
]="'
hs-tab-js-vertical-
'+
i
"
role=
"tabpanel"
[
class
.
hidden
]="
currentTap
!=
appraisalCompentency
.
comType
"
[
attr
.
aria-labelledby
]="'
hs-tab-js-vertical-item-
'+
i
"
>
<div
class=
"hs-accordion-group w-full"
*
ngIf=
"appraisalCompentency"
>
<ng-container>
<div
class=
"pb-2rem px-2rem text-center"
>
<div
class=
"font-size-18px font-weight-700 text-primary"
>
...
...
@@ -24,7 +35,7 @@
</div>
</div>
<div
class=
"pb-2rem px-2rem"
>
<div
class=
"p-2
grid grid-cols-6 gap-3
"
>
<div
class=
"p-2
flex"
style=
"justify-content :space-between;
"
>
<div
class=
"grid-cols-1"
>
<div
class=
"text-gray-400"
>
เครื่องมือประเมิน
</div>
<div
class=
"text-gray-400"
>
O = แบบสังเกต
</div>
...
...
@@ -49,22 +60,22 @@
</div>
</div>
<div
class=
"pb-2rem px-2rem"
>
<div
id=
"hs-tab-js-vertical-1"
role=
"tabpanel"
aria-labelledby=
"hs-tab-js-vertical-item-1"
*
ngIf=
"appraisalCompentency.data"
>
<div
class=
"hs-accordion-group w-full"
>
<div
*
ngIf=
"appraisalCompentencyFilter().length"
>
<div
class=
"hs-accordion-group w-full"
data-hs-accordion-always-open
>
<ng-container
*
ngFor=
"let item2 of appraisalCompentencyFilter();let i = index"
>
<div
class=
"hs-accordion active overflow-hidden bg-white border -mt-px first:rounded-t-sm last:rounded-b-sm dark:bg-bgdark dark:border-white/10"
id=
"hs-primary-heading-1
"
>
<button
[
id
]="'
hs-primary-heading-
'+
i
"
>
<button
(
click
)="
scrollToTable
($
event
)"
class=
"hs-accordion-toggle hs-accordion-active:text-white hs-accordion-active:bg-secondary group py-4 px-5 inline-flex items-center justify-between gap-x-3 w-full font-semibold text-start text-gray-800 transition hover:text-gray-500 dark:hs-accordion-active:text-white dark:text-gray-200 dark:hover:text-white/80"
aria-controls=
"hs-primary-collapse-1
"
type=
"button"
>
[
attr
.
aria-controls
]="'
hs-primary-collapse-
'+
i
"
type=
"button"
>
<svg
class=
"flex-shrink-0 h-6 w-6 text-white"
width=
"16"
height=
"16"
viewBox=
"0 0 16 16"
fill=
"none"
xmlns=
"http://www.w3.org/2000/svg"
>
<path
*
ngIf=
"onFormCompleted(item2)"
<path
d=
"M15.1965 7.85999C15.1965 3.71785 11.8387 0.359985 7.69653 0.359985C3.5544 0.359985 0.196533 3.71785 0.196533 7.85999C0.196533 12.0021 3.5544 15.36 7.69653 15.36C11.8387 15.36 15.1965 12.0021 15.1965 7.85999Z"
fill=
"currentColor"
class=
"fill-green-500"
></path>
<path
*
ngIf=
"onFormCompleted(item2)"
fill=
"currentColor"
[
class
.
fill-mute
]="!
onInFormCompleted
(
item2
)"
[
class
.
fill-success
]="
onInFormCompleted
(
item2
)"
></path>
<path
d=
"M10.9295 4.88618C11.1083 4.67577 11.4238 4.65019 11.6343 4.82904C11.8446 5.00788 11.8702 5.32343 11.6914 5.53383L7.44139 10.5338C7.25974 10.7475 6.93787 10.77 6.72825 10.5837L4.47825 8.5837C4.27186 8.40024 4.25327 8.0842 4.43673 7.87781C4.62019 7.67142 4.93622 7.65283 5.14261 7.83629L7.01053 9.49669L10.9295 4.88618Z"
fill=
"currentColor"
></path>
</svg>
...
...
@@ -86,9 +97,9 @@
stroke=
"currentColor"
stroke-width=
"2"
stroke-linecap=
"round"
/>
</svg>
</button>
<div
id=
"hs-primary-collapse-1
"
<div
[
id
]="'
hs-primary-collapse-
'+
i
"
class=
"hs-accordion-content !w-full overflow-hidden transition-[height] duration-300"
aria-labelledby=
"hs-primary-heading-1
"
>
[
attr
.
aria-labelledby
]="'
hs-primary-heading-
'+
i
"
>
<div
class=
"box-body"
>
<div
class=
"space-y-4"
>
<ng-container
...
...
@@ -130,7 +141,6 @@
</div>
</div>
</div>
<div
class=
"pb-1rem px-2rem"
>
<div
class=
"py-2 grid grid-cols-11"
>
<div
class=
"col-span-8"
>
ระดับความสามารถ (Target Degree)
</div>
...
...
@@ -142,15 +152,15 @@
<div
class=
"col-span-8"
>
รวมจำนวนเครื่องหมายแต่ละช่อง (1)
</div>
<div
class=
"col-span-3 grid grid-cols-5"
>
<div
class=
"col-span-1 text-center"
>
{{appraisalCompentency.
data.
masfromEvaluationAssessment1lList[0].numberCheck5}}
</div>
{{appraisalCompentency.masfromEvaluationAssessment1lList[0].numberCheck5}}
</div>
<div
class=
"col-span-1 text-center"
>
{{appraisalCompentency.
data.
masfromEvaluationAssessment1lList[0].numberCheck4}}
</div>
{{appraisalCompentency.masfromEvaluationAssessment1lList[0].numberCheck4}}
</div>
<div
class=
"col-span-1 text-center"
>
{{appraisalCompentency.
data.
masfromEvaluationAssessment1lList[0].numberCheck3}}
</div>
{{appraisalCompentency.masfromEvaluationAssessment1lList[0].numberCheck3}}
</div>
<div
class=
"col-span-1 text-center"
>
{{appraisalCompentency.
data.
masfromEvaluationAssessment1lList[0].numberCheck2}}
</div>
{{appraisalCompentency.masfromEvaluationAssessment1lList[0].numberCheck2}}
</div>
<div
class=
"col-span-1 text-center"
>
{{appraisalCompentency.
data.
masfromEvaluationAssessment1lList[0].numberCheck1}}
</div>
{{appraisalCompentency.masfromEvaluationAssessment1lList[0].numberCheck1}}
</div>
</div>
</div>
<div
class=
"py-2 grid grid-cols-11"
>
...
...
@@ -173,7 +183,7 @@
<div
class=
"col-span-8"
>
คะแนนรวมหลังถ่วงน้ำหนัก
</div>
<div
class=
"col-span-3 grid grid-cols-5"
>
<div
class=
"col-span-5 text-center"
>
{{showNumber(appraisalCompentency.
data.
masfromEvaluationAssessment1lList[0].weightedTotal)}}
{{showNumber(appraisalCompentency.masfromEvaluationAssessment1lList[0].weightedTotal)}}
</div>
</div>
</div>
...
...
@@ -181,7 +191,7 @@
<div
class=
"col-span-8"
>
คะแนนเฉลี่ยคิดเป็น
</div>
<div
class=
"col-span-3 grid grid-cols-5"
>
<div
class=
"col-span-5 text-center"
>
{{showNumber(appraisalCompentency.
data.
masfromEvaluationAssessment1lList[0].averageScore)}}
{{showNumber(appraisalCompentency.masfromEvaluationAssessment1lList[0].averageScore)}}
</div>
</div>
</div>
...
...
@@ -222,10 +232,10 @@
</div>
</td>
<td
class=
"align-start text-center"
>
{{calAverage(appraisalCompentency.
data.
masfromEvaluationAssessment1lList[0].averageScore)}}
{{calAverage(appraisalCompentency.masfromEvaluationAssessment1lList[0].averageScore)}}
</td>
<td
class=
"align-start text-center"
>
{{calGap(appraisalCompentency.
data.
masfromEvaluationAssessment1lList[0].averageScore)}}
{{calGap(appraisalCompentency.masfromEvaluationAssessment1lList[0].averageScore)}}
</td>
</tr>
<tr
(
mouseenter
)="
hoveredCode2 =
'true'
"
(
mouseleave
)="
hoveredCode2 =
null"
...
...
@@ -243,154 +253,154 @@
<div
class=
"py-2 grid grid-cols-7 gap-3"
>
<div
class=
"col-span-1"
>
ผู้รับการประเมิน
</div>
<div
class=
"col-span-1"
>
{{appraisalCompentency.
data.
apsassessy.thFullName}}
</div>
{{appraisalCompentency.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 pointer-events-none "
[
checked
]="
appraisalCompentency
.
data
.
masfromEvaluationAssessment1lList
[
0
].
apsassessyStatus=
='2'"
>
[
checked
]="
appraisalCompentency
.
masfromEvaluationAssessment1lList
[
0
].
apsassessyStatus=
='2'"
>
<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"
placeholder=
"ใส่ Comment ที่นี่"
[
class
.!
bg-input-readonly
]="!
appraisalCompentency
.
data
||
appraisalCompentency
.
data
.
currentStep
!='
0
'||!
canSave
"
[
readonly
]="!
appraisalCompentency
.
data
||
appraisalCompentency
.
data
.
currentStep
!='
0
'||!
canSave
"
[(
ngModel
)]="
appraisalCompentency
.
data
.
masfromEvaluationAssessment1lList
[
0
].
apsassessyComment
"
></textarea>
[
class
.!
bg-input-readonly
]="!
appraisalCompentency
||
appraisalCompentency
.
currentStep
!='
0
'||!
canSave
"
[
readonly
]="!
appraisalCompentency
||
appraisalCompentency
.
currentStep
!='
0
'||!
canSave
"
[(
ngModel
)]="
appraisalCompentency
.
masfromEvaluationAssessment1lList
[
0
].
apsassessyComment
"
></textarea>
<span
class=
"pt-2"
>
วันที่ :
{{convertDate(appraisalCompentency.
data.
masfromEvaluationAssessment1lList[0].apsassessyDate)}}
{{convertDate(appraisalCompentency.masfromEvaluationAssessment1lList[0].apsassessyDate)}}
</span>
</div>
</div>
<div
class=
"py-2 grid grid-cols-7 gap-3"
*
ngIf=
"appraisalCompentency.
data.
apsapprove1.employeeId"
>
<div
class=
"py-2 grid grid-cols-7 gap-3"
*
ngIf=
"appraisalCompentency.apsapprove1.employeeId"
>
<div
class=
"col-span-1"
>
{{appraisalCompentency.
data.
apsapprove2.employeeId?'ผู้ประเมิน1':'ผู้อนุมัติ'}}
{{appraisalCompentency.apsapprove2.employeeId?'ผู้ประเมิน1':'ผู้อนุมัติ'}}
</div>
<div
class=
"col-span-1"
>
{{appraisalCompentency.
data.
apsapprove1.thFullName}}
</div>
{{appraisalCompentency.apsapprove1.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 pointer-events-none"
[
checked
]="
appraisalCompentency
.
data
.
masfromEvaluationAssessment1lList
[
0
].
apsapprove1Status=
='2'"
>
[
checked
]="
appraisalCompentency
.
masfromEvaluationAssessment1lList
[
0
].
apsapprove1Status=
='2'"
>
<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"
placeholder=
"ใส่ Comment ที่นี่"
[
class
.!
bg-input-readonly
]="!
appraisalCompentency
.
data
||
appraisalCompentency
.
data
.
currentStep
!='
1
'||!
canSave
"
[
readonly
]="!
appraisalCompentency
.
data
||
appraisalCompentency
.
data
.
currentStep
!='
1
'||!
canSave
"
[(
ngModel
)]="
appraisalCompentency
.
data
.
masfromEvaluationAssessment1lList
[
0
].
apsapprove1Comment
"
></textarea>
[
class
.!
bg-input-readonly
]="!
appraisalCompentency
||
appraisalCompentency
.
currentStep
!='
1
'||!
canSave
"
[
readonly
]="!
appraisalCompentency
||
appraisalCompentency
.
currentStep
!='
1
'||!
canSave
"
[(
ngModel
)]="
appraisalCompentency
.
masfromEvaluationAssessment1lList
[
0
].
apsapprove1Comment
"
></textarea>
<span
class=
"pt-2"
>
วันที่ :
{{convertDate(appraisalCompentency.
data.
masfromEvaluationAssessment1lList[0].apsapprove1Date)}}
{{convertDate(appraisalCompentency.masfromEvaluationAssessment1lList[0].apsapprove1Date)}}
</span>
</div>
</div>
<div
class=
"py-2 grid grid-cols-7 gap-3"
*
ngIf=
"appraisalCompentency.
data.
apsapprove2.employeeId"
>
<div
class=
"py-2 grid grid-cols-7 gap-3"
*
ngIf=
"appraisalCompentency.apsapprove2.employeeId"
>
<div
class=
"col-span-1"
>
{{appraisalCompentency.
data.
apsapprove3.employeeId?'ผู้ประเมิน2':'ผู้อนุมัติ'}}
{{appraisalCompentency.apsapprove3.employeeId?'ผู้ประเมิน2':'ผู้อนุมัติ'}}
</div>
<div
class=
"col-span-1"
>
{{appraisalCompentency.
data.
apsapprove2.thFullName}}
</div>
{{appraisalCompentency.apsapprove2.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 pointer-events-none"
[
checked
]="
appraisalCompentency
.
data
.
masfromEvaluationAssessment1lList
[
0
].
apsapprove2Status=
='2'"
>
[
checked
]="
appraisalCompentency
.
masfromEvaluationAssessment1lList
[
0
].
apsapprove2Status=
='2'"
>
<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"
placeholder=
"ใส่ Comment ที่นี่"
[
class
.!
bg-input-readonly
]="!
appraisalCompentency
.
data
||
appraisalCompentency
.
data
.
currentStep
!='
2
'||!
canSave
"
[
readonly
]="!
appraisalCompentency
.
data
||
appraisalCompentency
.
data
.
currentStep
!='
2
'||!
canSave
"
[(
ngModel
)]="
appraisalCompentency
.
data
.
masfromEvaluationAssessment1lList
[
0
].
apsapprove2Comment
"
></textarea>
[
class
.!
bg-input-readonly
]="!
appraisalCompentency
||
appraisalCompentency
.
currentStep
!='
2
'||!
canSave
"
[
readonly
]="!
appraisalCompentency
||
appraisalCompentency
.
currentStep
!='
2
'||!
canSave
"
[(
ngModel
)]="
appraisalCompentency
.
masfromEvaluationAssessment1lList
[
0
].
apsapprove2Comment
"
></textarea>
<span
class=
"pt-2"
>
วันที่ :
{{convertDate(appraisalCompentency.
data.
masfromEvaluationAssessment1lList[0].apsapprove2Date)}}
{{convertDate(appraisalCompentency.masfromEvaluationAssessment1lList[0].apsapprove2Date)}}
</span>
</div>
</div>
<div
class=
"py-2 grid grid-cols-7 gap-3"
*
ngIf=
"appraisalCompentency.
data.
apsapprove3.employeeId"
>
<div
class=
"py-2 grid grid-cols-7 gap-3"
*
ngIf=
"appraisalCompentency.apsapprove3.employeeId"
>
<div
class=
"col-span-1"
>
{{appraisalCompentency.
data.
apsapprove4.employeeId?'ผู้ประเมิน3':'ผู้อนุมัติ'}}
{{appraisalCompentency.apsapprove4.employeeId?'ผู้ประเมิน3':'ผู้อนุมัติ'}}
</div>
<div
class=
"col-span-1"
>
{{appraisalCompentency.
data.
apsapprove3.thFullName}}
</div>
{{appraisalCompentency.apsapprove3.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 pointer-events-none"
[
checked
]="
appraisalCompentency
.
data
.
masfromEvaluationAssessment1lList
[
0
].
apsapprove3Status=
='2'"
>
[
checked
]="
appraisalCompentency
.
masfromEvaluationAssessment1lList
[
0
].
apsapprove3Status=
='2'"
>
<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"
placeholder=
"ใส่ Comment ที่นี่"
[
class
.!
bg-input-readonly
]="!
appraisalCompentency
.
data
||
appraisalCompentency
.
data
.
currentStep
!='
3
'||!
canSave
"
[
readonly
]="!
appraisalCompentency
.
data
||
appraisalCompentency
.
data
.
currentStep
!='
3
'||!
canSave
"
[(
ngModel
)]="
appraisalCompentency
.
data
.
masfromEvaluationAssessment1lList
[
0
].
apsapprove3Comment
"
></textarea>
[
class
.!
bg-input-readonly
]="!
appraisalCompentency
||
appraisalCompentency
.
currentStep
!='
3
'||!
canSave
"
[
readonly
]="!
appraisalCompentency
||
appraisalCompentency
.
currentStep
!='
3
'||!
canSave
"
[(
ngModel
)]="
appraisalCompentency
.
masfromEvaluationAssessment1lList
[
0
].
apsapprove3Comment
"
></textarea>
<span
class=
"pt-2"
>
วันที่ :
{{convertDate(appraisalCompentency.
data.
masfromEvaluationAssessment1lList[0].apsapprove3Date)}}
{{convertDate(appraisalCompentency.masfromEvaluationAssessment1lList[0].apsapprove3Date)}}
</span>
</div>
</div>
<div
class=
"py-2 grid grid-cols-7 gap-3"
*
ngIf=
"appraisalCompentency.
data.
apsapprove4.employeeId"
>
<div
class=
"py-2 grid grid-cols-7 gap-3"
*
ngIf=
"appraisalCompentency.apsapprove4.employeeId"
>
<div
class=
"col-span-1"
>
{{appraisalCompentency.
data.
apsapprove5.employeeId?'ผู้ประเมิน4':'ผู้อนุมัติ'}}
{{appraisalCompentency.apsapprove5.employeeId?'ผู้ประเมิน4':'ผู้อนุมัติ'}}
</div>
<div
class=
"col-span-1"
>
{{appraisalCompentency.
data.
apsapprove4.thFullName}}
</div>
{{appraisalCompentency.apsapprove4.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 pointer-events-none"
[
checked
]="
appraisalCompentency
.
data
.
masfromEvaluationAssessment1lList
[
0
].
apsapprove4Status=
='2'"
>
[
checked
]="
appraisalCompentency
.
masfromEvaluationAssessment1lList
[
0
].
apsapprove4Status=
='2'"
>
<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"
placeholder=
"ใส่ Comment ที่นี่"
[
class
.!
bg-input-readonly
]="!
appraisalCompentency
.
data
||
appraisalCompentency
.
data
.
currentStep
!='
4
'||!
canSave
"
[
readonly
]="!
appraisalCompentency
.
data
||
appraisalCompentency
.
data
.
currentStep
!='
4
'||!
canSave
"
[(
ngModel
)]="
appraisalCompentency
.
data
.
masfromEvaluationAssessment1lList
[
0
].
apsapprove4Comment
"
></textarea>
[
class
.!
bg-input-readonly
]="!
appraisalCompentency
||
appraisalCompentency
.
currentStep
!='
4
'||!
canSave
"
[
readonly
]="!
appraisalCompentency
||
appraisalCompentency
.
currentStep
!='
4
'||!
canSave
"
[(
ngModel
)]="
appraisalCompentency
.
masfromEvaluationAssessment1lList
[
0
].
apsapprove4Comment
"
></textarea>
<span
class=
"pt-2"
>
วันที่ :
{{convertDate(appraisalCompentency.
data.
masfromEvaluationAssessment1lList[0].apsapprove4Date)}}
{{convertDate(appraisalCompentency.masfromEvaluationAssessment1lList[0].apsapprove4Date)}}
</span>
</div>
</div>
<div
class=
"py-2 grid grid-cols-7 gap-3"
*
ngIf=
"appraisalCompentency.
data.
apsapprove5.employeeId"
>
<div
class=
"py-2 grid grid-cols-7 gap-3"
*
ngIf=
"appraisalCompentency.apsapprove5.employeeId"
>
<div
class=
"col-span-1"
>
ผู้อนุมัติ
</div>
<div
class=
"col-span-1"
>
{{appraisalCompentency.
data.
apsapprove5.thFullName}}
</div>
{{appraisalCompentency.apsapprove5.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 pointer-events-none"
[
checked
]="
appraisalCompentency
.
data
.
masfromEvaluationAssessment1lList
[
0
].
apsapprove5Status=
='2'"
>
[
checked
]="
appraisalCompentency
.
masfromEvaluationAssessment1lList
[
0
].
apsapprove5Status=
='2'"
>
<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"
placeholder=
"ใส่ Comment ที่นี่"
[
class
.!
bg-input-readonly
]="!
appraisalCompentency
.
data
||
appraisalCompentency
.
data
.
currentStep
!='
5
'||!
canSave
"
[
readonly
]="!
appraisalCompentency
.
data
||
appraisalCompentency
.
data
.
currentStep
!='
5
'||!
canSave
"
[(
ngModel
)]="
appraisalCompentency
.
data
.
masfromEvaluationAssessment1lList
[
0
].
apsapprove5Comment
"
></textarea>
[
class
.!
bg-input-readonly
]="!
appraisalCompentency
||
appraisalCompentency
.
currentStep
!='
5
'||!
canSave
"
[
readonly
]="!
appraisalCompentency
||
appraisalCompentency
.
currentStep
!='
5
'||!
canSave
"
[(
ngModel
)]="
appraisalCompentency
.
masfromEvaluationAssessment1lList
[
0
].
apsapprove5Comment
"
></textarea>
<span
class=
"pt-2"
>
วันที่ :
{{convertDate(appraisalCompentency.
data.
masfromEvaluationAssessment1lList[0].apsapprove5Date)}}
{{convertDate(appraisalCompentency.masfromEvaluationAssessment1lList[0].apsapprove5Date)}}
</span>
</div>
</div>
</div>
<div
class=
"flex justify-center mb-1rem pb-2rem"
*
ngIf=
"canSave"
>
<button
*
ngIf=
"appraisalCompentency.
data.checkStep!='0'&&appraisalCompentency.data.checkStep!='1'
"
type=
"submit"
class=
"ti-btn ti-btn-danger mx-2rem"
(
click
)="
save
('
noApprove
')"
>
<button
*
ngIf=
"appraisalCompentency.
checkStep!='0'&&appraisalCompentency.checkStep!='1'"
type=
"submit
"
class=
"ti-btn ti-btn-danger mx-2rem"
(
click
)="
save
('
noApprove
')"
>
ไม่อนุมัติ
</button>
<button
type=
"submit"
class=
"ti-btn ti-btn-success mx-2rem"
(
click
)="
save
('
draft
')"
>
บันทึกร่าง
</button>
<button
type=
"submit"
class=
"ti-btn ti-btn-secondary mx-2rem"
(
click
)="
save
('
approve
')"
>
<ng-container
*
ngIf=
"appraisalCompentency.
data.
checkStep=='0'"
>
<ng-container
*
ngIf=
"appraisalCompentency.checkStep=='0'"
>
ยืนยันข้อมูล
</ng-container>
<ng-container
*
ngIf=
"appraisalCompentency.
data.
checkStep!='0'"
>
<ng-container
*
ngIf=
"appraisalCompentency.checkStep!='0'"
>
อนุมัติ
</ng-container>
</button>
...
...
src/app/components/performance-evaluation/pms-form-employee/pms-competency/pms-competency.component.scss
View file @
caf318d4
.no-interaction
{
pointer-events
:
none
;
cursor
:
not
-
allowed
;
}
\ No newline at end of file
}
\ No newline at end of file
src/app/components/performance-evaluation/pms-form-employee/pms-competency/pms-competency.component.ts
View file @
caf318d4
import
{
ViewportScroller
}
from
'@angular/common'
;
import
{
ChangeDetectorRef
,
Component
,
EventEmitter
,
Input
,
OnInit
,
Output
}
from
'@angular/core'
;
import
{
AppraisalCompentencyModel2
,
MasfromEvaluationAssessment2List
}
from
'src/app/shared/model/appraisal-competency.model'
;
import
{
TypeList
}
from
'src/app/shared/model/appraisal-subordinate.model'
;
import
{
Competency
,
MasfromEvaluationAssessment2List
}
from
'src/app/shared/model/competency.model'
;
import
{
EmployeeModel
,
MyEmployeeModel
}
from
'src/app/shared/model/employee.model'
;
import
{
SettingAssessmentModel
,
MySettingAssessmentModel
}
from
'src/app/shared/model/setting-assessment.model'
;
import
{
AppraisalService
}
from
'src/app/shared/services/appraisal.service'
;
...
...
@@ -14,18 +14,18 @@ import Swal from 'sweetalert2';
})
export
class
PmsCompetencyComponent
{
@
Input
()
currentTap
=
""
@
Input
()
evaluationRoundId
=
""
@
Input
()
evaluateeId
=
""
@
Input
()
evaluaterId
=
""
@
Input
()
allCompetencyTypeId
:
TypeList
[]
=
[]
@
Input
()
appraisalCompentencyList
:
Competency
[]
=
[]
appraisalCompentencyIndex
=
0
@
Output
()
sendReturnPath
:
EventEmitter
<
any
>
=
new
EventEmitter
<
any
>
();
@
Output
()
allFormCompleted
:
EventEmitter
<
any
>
=
new
EventEmitter
<
any
>
();
canEdit
=
false
canSave
=
false
hoveredCode
:
string
|
null
=
null
;
hoveredCode2
:
string
|
null
=
null
;
currentDate
=
new
Date
()
appraisalCompentency
:
{
loading
:
boolean
,
data
?:
AppraisalCompentencyModel2
}
=
{
loading
:
false
,
data
:
undefined
}
setting
:
{
loading
:
boolean
,
data
:
SettingAssessmentModel
}
=
{
loading
:
false
,
data
:
new
MySettingAssessmentModel
()
}
checkSheet
:
{
...
...
@@ -40,10 +40,14 @@ export class PmsCompetencyComponent {
constructor
(
private
appraisalService
:
AppraisalService
,
private
employeeService
:
EmployeeService
,
private
cdr
:
ChangeDetectorRef
,
private
viewScroller
:
ViewportScroller
,
private
settingAssessmentService
:
SettingAssessmentService
)
{
}
ngOnInit
():
void
{
if
(
this
.
appraisalCompentencyList
.
length
)
{
this
.
currentTap
=
this
.
currentTap
==
''
?
this
.
appraisalCompentencyList
[
0
].
comType
:
this
.
currentTap
}
this
.
getAppraisalCompentencyForm
(
0
)
this
.
getSettingList
()
this
.
getEvaluatee
()
...
...
@@ -77,49 +81,47 @@ export class PmsCompetencyComponent {
})
}
getAppraisalCompentencyForm
(
index
:
number
)
{
if
(
this
.
allCompetencyTypeId
.
length
)
{
this
.
appraisalCompentency
.
loading
=
true
this
.
appraisalCompentency
.
data
=
undefined
this
.
appraisalService
.
getFormCompentencyById
(
this
.
evaluationRoundId
,
this
.
evaluateeId
,
this
.
allCompetencyTypeId
[
index
].
competencyTypeId
).
subscribe
({
next
:
response
=>
{
this
.
appraisalCompentency
.
data
=
JSON
.
parse
(
JSON
.
stringify
(
response
))
if
(
this
.
appraisalCompentency
.
data
?.
masfromEvaluationAssessment1lList
[
0
])
{
this
.
canSave
=
(
this
.
appraisalCompentency
.
data
.
currentStep
==
this
.
appraisalCompentency
.
data
.
checkStep
)
&&
this
.
appraisalCompentency
.
data
.
masfromStatusType
.
code
!=
'Boss_finish'
&&
this
.
appraisalCompentency
.
data
.
masfromStatusType
.
code
!=
'Not_evaluating_yet'
this
.
canEdit
=
(
this
.
appraisalCompentency
.
data
.
currentStep
==
this
.
appraisalCompentency
.
data
.
checkStep
&&
(
+
(
this
.
appraisalCompentency
.
data
.
checkStep
)
<=
1
))
&&
this
.
appraisalCompentency
.
data
.
masfromStatusType
.
code
!=
'Boss_finish'
&&
this
.
appraisalCompentency
.
data
.
masfromStatusType
.
code
!=
'Not_evaluating_yet'
switch
(
this
.
appraisalCompentency
.
data
?.
currentStep
)
{
if
(
this
.
appraisalCompentencyList
.
length
)
{
this
.
appraisalCompentencyIndex
=
index
this
.
currentTap
=
this
.
appraisalCompentencyList
[
this
.
appraisalCompentencyIndex
].
comType
this
.
cdr
.
detectChanges
()
if
(
this
.
appraisalCompentencyList
[
this
.
appraisalCompentencyIndex
]?.
masfromEvaluationAssessment1lList
[
0
])
{
this
.
canSave
=
(
this
.
appraisalCompentencyList
[
this
.
appraisalCompentencyIndex
].
currentStep
==
this
.
appraisalCompentencyList
[
this
.
appraisalCompentencyIndex
].
checkStep
)
&&
this
.
appraisalCompentencyList
[
this
.
appraisalCompentencyIndex
].
masfromStatusType
.
code
!=
'Boss_finish'
&&
this
.
appraisalCompentencyList
[
this
.
appraisalCompentencyIndex
].
masfromStatusType
.
code
!=
'Not_evaluating_yet'
this
.
canEdit
=
(
this
.
appraisalCompentencyList
[
this
.
appraisalCompentencyIndex
].
currentStep
==
this
.
appraisalCompentencyList
[
this
.
appraisalCompentencyIndex
].
checkStep
&&
(
+
(
this
.
appraisalCompentencyList
[
this
.
appraisalCompentencyIndex
].
checkStep
)
<=
1
))
&&
this
.
appraisalCompentencyList
[
this
.
appraisalCompentencyIndex
].
masfromStatusType
.
code
!=
'Boss_finish'
&&
this
.
appraisalCompentencyList
[
this
.
appraisalCompentencyIndex
].
masfromStatusType
.
code
!=
'Not_evaluating_yet'
switch
(
this
.
appraisalCompentencyList
[
this
.
appraisalCompentencyIndex
]?.
currentStep
)
{
case
(
"0"
):
{
if
(
this
.
canSave
)
{
this
.
appraisalCompentency
.
data
.
masfromEvaluationAssessment1lList
[
0
].
apsassessyDate
=
this
.
currentDate
.
toISOString
().
split
(
'T'
)[
0
];
this
.
appraisalCompentencyList
[
this
.
appraisalCompentencyIndex
]
.
masfromEvaluationAssessment1lList
[
0
].
apsassessyDate
=
this
.
currentDate
.
toISOString
().
split
(
'T'
)[
0
];
}
break
}
case
(
"1"
):
{
if
(
this
.
canSave
)
{
this
.
appraisalCompentency
.
data
.
masfromEvaluationAssessment1lList
[
0
].
apsapprove1Date
=
this
.
currentDate
.
toISOString
().
split
(
'T'
)[
0
];
this
.
appraisalCompentencyList
[
this
.
appraisalCompentencyIndex
]
.
masfromEvaluationAssessment1lList
[
0
].
apsapprove1Date
=
this
.
currentDate
.
toISOString
().
split
(
'T'
)[
0
];
}
break
}
case
(
"2"
):
{
if
(
this
.
canSave
)
{
this
.
appraisalCompentency
.
data
.
masfromEvaluationAssessment1lList
[
0
].
apsapprove2Date
=
this
.
currentDate
.
toISOString
().
split
(
'T'
)[
0
];
this
.
appraisalCompentencyList
[
this
.
appraisalCompentencyIndex
]
.
masfromEvaluationAssessment1lList
[
0
].
apsapprove2Date
=
this
.
currentDate
.
toISOString
().
split
(
'T'
)[
0
];
}
break
}
case
(
"3"
):
{
if
(
this
.
canSave
)
{
this
.
appraisalCompentency
.
data
.
masfromEvaluationAssessment1lList
[
0
].
apsapprove3Date
=
this
.
currentDate
.
toISOString
().
split
(
'T'
)[
0
];
this
.
appraisalCompentencyList
[
this
.
appraisalCompentencyIndex
]
.
masfromEvaluationAssessment1lList
[
0
].
apsapprove3Date
=
this
.
currentDate
.
toISOString
().
split
(
'T'
)[
0
];
}
break
}
case
(
"4"
):
{
if
(
this
.
canSave
)
{
this
.
appraisalCompentency
.
data
.
masfromEvaluationAssessment1lList
[
0
].
apsapprove4Date
=
this
.
currentDate
.
toISOString
().
split
(
'T'
)[
0
];
this
.
appraisalCompentencyList
[
this
.
appraisalCompentencyIndex
]
.
masfromEvaluationAssessment1lList
[
0
].
apsapprove4Date
=
this
.
currentDate
.
toISOString
().
split
(
'T'
)[
0
];
}
break
}
case
(
"5"
):
{
if
(
this
.
canSave
)
{
this
.
appraisalCompentency
.
data
.
masfromEvaluationAssessment1lList
[
0
].
apsapprove5Date
=
this
.
currentDate
.
toISOString
().
split
(
'T'
)[
0
];
this
.
appraisalCompentencyList
[
this
.
appraisalCompentencyIndex
]
.
masfromEvaluationAssessment1lList
[
0
].
apsapprove5Date
=
this
.
currentDate
.
toISOString
().
split
(
'T'
)[
0
];
}
break
}
...
...
@@ -127,47 +129,41 @@ export class PmsCompetencyComponent {
}
}
this
.
calnumberCheck
()
this
.
appraisalCompentency
.
loading
=
false
this
.
cdr
.
detectChanges
()
},
error
:
error
=>
{
this
.
appraisalCompentency
.
loading
=
false
this
.
cdr
.
detectChanges
()
}
})
}
}
appraisalCompentencyFilter
()
{
return
this
.
appraisalCompentency
.
data
?.
masfromEvaluationAssessment1lList
[
0
].
masfromEvaluationAssessment2List
||
[]
return
this
.
appraisalCompentency
List
[
this
.
appraisalCompentencyIndex
]
?.
masfromEvaluationAssessment1lList
[
0
].
masfromEvaluationAssessment2List
||
[]
}
calnumberCheck
()
{
if
(
this
.
appraisalCompentency
.
data
?.
masfromEvaluationAssessment1lList
[
0
])
{
this
.
appraisalCompentency
.
data
.
masfromEvaluationAssessment1lList
[
0
].
numberCheck1
=
this
.
appraisalCompentency
.
data
.
masfromEvaluationAssessment1lList
[
0
].
masfromEvaluationAssessment2List
.
map
((
x
:
any
)
=>
x
.
groupAssessment1
.
competencyIndicatorsCourses1Mini
.
behavioralIndicatorsList
.
filter
((
y
:
any
)
=>
y
.
competencyBehavioral
.
scoreTopicExpectation
==
1
).
length
).
reduce
((
acc
:
any
,
num
:
any
)
=>
acc
+
num
,
0
)
this
.
appraisalCompentency
.
data
.
masfromEvaluationAssessment1lList
[
0
].
numberCheck2
=
this
.
appraisalCompentency
.
data
.
masfromEvaluationAssessment1lList
[
0
].
masfromEvaluationAssessment2List
.
map
((
x
:
any
)
=>
x
.
groupAssessment1
.
competencyIndicatorsCourses1Mini
.
behavioralIndicatorsList
.
filter
((
y
:
any
)
=>
y
.
competencyBehavioral
.
scoreTopicExpectation
==
2
).
length
).
reduce
((
acc
:
any
,
num
:
any
)
=>
acc
+
num
,
0
)
this
.
appraisalCompentency
.
data
.
masfromEvaluationAssessment1lList
[
0
].
numberCheck3
=
this
.
appraisalCompentency
.
data
.
masfromEvaluationAssessment1lList
[
0
].
masfromEvaluationAssessment2List
.
map
((
x
:
any
)
=>
x
.
groupAssessment1
.
competencyIndicatorsCourses1Mini
.
behavioralIndicatorsList
.
filter
((
y
:
any
)
=>
y
.
competencyBehavioral
.
scoreTopicExpectation
==
3
).
length
).
reduce
((
acc
:
any
,
num
:
any
)
=>
acc
+
num
,
0
)
this
.
appraisalCompentency
.
data
.
masfromEvaluationAssessment1lList
[
0
].
numberCheck4
=
this
.
appraisalCompentency
.
data
.
masfromEvaluationAssessment1lList
[
0
].
masfromEvaluationAssessment2List
.
map
((
x
:
any
)
=>
x
.
groupAssessment1
.
competencyIndicatorsCourses1Mini
.
behavioralIndicatorsList
.
filter
((
y
:
any
)
=>
y
.
competencyBehavioral
.
scoreTopicExpectation
==
4
).
length
).
reduce
((
acc
:
any
,
num
:
any
)
=>
acc
+
num
,
0
)
this
.
appraisalCompentency
.
data
.
masfromEvaluationAssessment1lList
[
0
].
numberCheck5
=
this
.
appraisalCompentency
.
data
.
masfromEvaluationAssessment1lList
[
0
].
masfromEvaluationAssessment2List
.
map
((
x
:
any
)
=>
x
.
groupAssessment1
.
competencyIndicatorsCourses1Mini
.
behavioralIndicatorsList
.
filter
((
y
:
any
)
=>
y
.
competencyBehavioral
.
scoreTopicExpectation
==
5
).
length
).
reduce
((
acc
:
any
,
num
:
any
)
=>
acc
+
num
,
0
)
if
(
this
.
appraisalCompentency
List
[
this
.
appraisalCompentencyIndex
]
?.
masfromEvaluationAssessment1lList
[
0
])
{
this
.
appraisalCompentency
List
[
this
.
appraisalCompentencyIndex
].
masfromEvaluationAssessment1lList
[
0
].
numberCheck1
=
this
.
appraisalCompentencyList
[
this
.
appraisalCompentencyIndex
]
.
masfromEvaluationAssessment1lList
[
0
].
masfromEvaluationAssessment2List
.
map
((
x
:
any
)
=>
x
.
groupAssessment1
.
competencyIndicatorsCourses1Mini
.
behavioralIndicatorsList
.
filter
((
y
:
any
)
=>
y
.
competencyBehavioral
.
scoreTopicExpectation
==
1
).
length
).
reduce
((
acc
:
any
,
num
:
any
)
=>
acc
+
num
,
0
)
this
.
appraisalCompentency
List
[
this
.
appraisalCompentencyIndex
].
masfromEvaluationAssessment1lList
[
0
].
numberCheck2
=
this
.
appraisalCompentencyList
[
this
.
appraisalCompentencyIndex
]
.
masfromEvaluationAssessment1lList
[
0
].
masfromEvaluationAssessment2List
.
map
((
x
:
any
)
=>
x
.
groupAssessment1
.
competencyIndicatorsCourses1Mini
.
behavioralIndicatorsList
.
filter
((
y
:
any
)
=>
y
.
competencyBehavioral
.
scoreTopicExpectation
==
2
).
length
).
reduce
((
acc
:
any
,
num
:
any
)
=>
acc
+
num
,
0
)
this
.
appraisalCompentency
List
[
this
.
appraisalCompentencyIndex
].
masfromEvaluationAssessment1lList
[
0
].
numberCheck3
=
this
.
appraisalCompentencyList
[
this
.
appraisalCompentencyIndex
]
.
masfromEvaluationAssessment1lList
[
0
].
masfromEvaluationAssessment2List
.
map
((
x
:
any
)
=>
x
.
groupAssessment1
.
competencyIndicatorsCourses1Mini
.
behavioralIndicatorsList
.
filter
((
y
:
any
)
=>
y
.
competencyBehavioral
.
scoreTopicExpectation
==
3
).
length
).
reduce
((
acc
:
any
,
num
:
any
)
=>
acc
+
num
,
0
)
this
.
appraisalCompentency
List
[
this
.
appraisalCompentencyIndex
].
masfromEvaluationAssessment1lList
[
0
].
numberCheck4
=
this
.
appraisalCompentencyList
[
this
.
appraisalCompentencyIndex
]
.
masfromEvaluationAssessment1lList
[
0
].
masfromEvaluationAssessment2List
.
map
((
x
:
any
)
=>
x
.
groupAssessment1
.
competencyIndicatorsCourses1Mini
.
behavioralIndicatorsList
.
filter
((
y
:
any
)
=>
y
.
competencyBehavioral
.
scoreTopicExpectation
==
4
).
length
).
reduce
((
acc
:
any
,
num
:
any
)
=>
acc
+
num
,
0
)
this
.
appraisalCompentency
List
[
this
.
appraisalCompentencyIndex
].
masfromEvaluationAssessment1lList
[
0
].
numberCheck5
=
this
.
appraisalCompentencyList
[
this
.
appraisalCompentencyIndex
]
.
masfromEvaluationAssessment1lList
[
0
].
masfromEvaluationAssessment2List
.
map
((
x
:
any
)
=>
x
.
groupAssessment1
.
competencyIndicatorsCourses1Mini
.
behavioralIndicatorsList
.
filter
((
y
:
any
)
=>
y
.
competencyBehavioral
.
scoreTopicExpectation
==
5
).
length
).
reduce
((
acc
:
any
,
num
:
any
)
=>
acc
+
num
,
0
)
this
.
calWeightTotal
()
}
this
.
cdr
.
detectChanges
()
}
calWeightScore
(
numberCheck
:
number
)
{
if
(
this
.
appraisalCompentency
.
data
?.
masfromEvaluationAssessment1lList
[
0
])
{
if
(
this
.
appraisalCompentency
List
[
this
.
appraisalCompentencyIndex
]
?.
masfromEvaluationAssessment1lList
[
0
])
{
switch
(
numberCheck
)
{
case
(
1
):
{
return
this
.
showNumber
((
this
.
setting
.
data
.
settingScore1
)
*
this
.
appraisalCompentency
.
data
.
masfromEvaluationAssessment1lList
[
0
].
numberCheck1
)
return
this
.
showNumber
((
this
.
setting
.
data
.
settingScore1
)
*
this
.
appraisalCompentency
List
[
this
.
appraisalCompentencyIndex
]
.
masfromEvaluationAssessment1lList
[
0
].
numberCheck1
)
}
case
(
2
):
{
return
this
.
showNumber
((
this
.
setting
.
data
.
settingScore2
)
*
this
.
appraisalCompentency
.
data
.
masfromEvaluationAssessment1lList
[
0
].
numberCheck2
)
return
this
.
showNumber
((
this
.
setting
.
data
.
settingScore2
)
*
this
.
appraisalCompentency
List
[
this
.
appraisalCompentencyIndex
]
.
masfromEvaluationAssessment1lList
[
0
].
numberCheck2
)
}
case
(
3
):
{
return
this
.
showNumber
((
this
.
setting
.
data
.
settingScore3
)
*
this
.
appraisalCompentency
.
data
.
masfromEvaluationAssessment1lList
[
0
].
numberCheck3
)
return
this
.
showNumber
((
this
.
setting
.
data
.
settingScore3
)
*
this
.
appraisalCompentency
List
[
this
.
appraisalCompentencyIndex
]
.
masfromEvaluationAssessment1lList
[
0
].
numberCheck3
)
}
case
(
4
):
{
return
this
.
showNumber
((
this
.
setting
.
data
.
settingScore4
)
*
this
.
appraisalCompentency
.
data
.
masfromEvaluationAssessment1lList
[
0
].
numberCheck4
)
return
this
.
showNumber
((
this
.
setting
.
data
.
settingScore4
)
*
this
.
appraisalCompentency
List
[
this
.
appraisalCompentencyIndex
]
.
masfromEvaluationAssessment1lList
[
0
].
numberCheck4
)
}
case
(
5
):
{
return
this
.
showNumber
((
this
.
setting
.
data
.
settingScore5
)
*
this
.
appraisalCompentency
.
data
.
masfromEvaluationAssessment1lList
[
0
].
numberCheck5
)
return
this
.
showNumber
((
this
.
setting
.
data
.
settingScore5
)
*
this
.
appraisalCompentency
List
[
this
.
appraisalCompentencyIndex
]
.
masfromEvaluationAssessment1lList
[
0
].
numberCheck5
)
}
default
:
{
return
}
}
...
...
@@ -175,16 +171,16 @@ export class PmsCompetencyComponent {
return
}
calWeightTotal
()
{
if
(
this
.
appraisalCompentency
.
data
?.
masfromEvaluationAssessment1lList
[
0
])
{
this
.
appraisalCompentency
.
data
.
masfromEvaluationAssessment1lList
[
0
].
weightedTotal
=
0
this
.
appraisalCompentency
.
data
.
masfromEvaluationAssessment1lList
[
0
].
weightedTotal
=
+
(((
this
.
calWeightScore
(
1
)
??
0
)
+
(
this
.
calWeightScore
(
2
)
??
0
)
+
(
this
.
calWeightScore
(
3
)
??
0
)
+
(
this
.
calWeightScore
(
4
)
??
0
)
+
(
this
.
calWeightScore
(
5
)
??
0
)).
toFixed
(
2
))
if
(
this
.
appraisalCompentency
List
[
this
.
appraisalCompentencyIndex
]
?.
masfromEvaluationAssessment1lList
[
0
])
{
this
.
appraisalCompentency
List
[
this
.
appraisalCompentencyIndex
]
.
masfromEvaluationAssessment1lList
[
0
].
weightedTotal
=
0
this
.
appraisalCompentency
List
[
this
.
appraisalCompentencyIndex
]
.
masfromEvaluationAssessment1lList
[
0
].
weightedTotal
=
+
(((
this
.
calWeightScore
(
1
)
??
0
)
+
(
this
.
calWeightScore
(
2
)
??
0
)
+
(
this
.
calWeightScore
(
3
)
??
0
)
+
(
this
.
calWeightScore
(
4
)
??
0
)
+
(
this
.
calWeightScore
(
5
)
??
0
)).
toFixed
(
2
))
this
.
cdr
.
detectChanges
()
this
.
calAverageScore
()
}
}
calAverageScore
()
{
if
(
this
.
appraisalCompentency
.
data
?.
masfromEvaluationAssessment1lList
[
0
])
{
const
length
=
this
.
appraisalCompentency
.
data
.
masfromEvaluationAssessment1lList
[
0
].
masfromEvaluationAssessment2List
.
map
((
x
:
any
)
=>
x
.
groupAssessment1
.
competencyIndicatorsCourses1Mini
.
behavioralIndicatorsList
.
length
).
reduce
((
acc
:
any
,
num
:
any
)
=>
acc
+
num
,
0
)
if
(
this
.
appraisalCompentency
List
[
this
.
appraisalCompentencyIndex
]
?.
masfromEvaluationAssessment1lList
[
0
])
{
const
length
=
this
.
appraisalCompentency
List
[
this
.
appraisalCompentencyIndex
]
.
masfromEvaluationAssessment1lList
[
0
].
masfromEvaluationAssessment2List
.
map
((
x
:
any
)
=>
x
.
groupAssessment1
.
competencyIndicatorsCourses1Mini
.
behavioralIndicatorsList
.
length
).
reduce
((
acc
:
any
,
num
:
any
)
=>
acc
+
num
,
0
)
const
max
=
Math
.
max
(...[
+
(
this
.
setting
.
data
.
settingScore5
),
+
(
this
.
setting
.
data
.
settingScore4
),
+
(
this
.
setting
.
data
.
settingScore3
),
...
...
@@ -192,8 +188,8 @@ export class PmsCompetencyComponent {
+
(
this
.
setting
.
data
.
settingScore1
)])
const
total
=
length
*
max
if
(
total
)
{
this
.
appraisalCompentency
.
data
.
masfromEvaluationAssessment1lList
[
0
].
averageScore
=
0
this
.
appraisalCompentency
.
data
.
masfromEvaluationAssessment1lList
[
0
].
averageScore
=
this
.
showNumber
((
this
.
appraisalCompentency
.
data
.
masfromEvaluationAssessment1lList
[
0
].
weightedTotal
*
100
)
/
total
)
this
.
appraisalCompentency
List
[
this
.
appraisalCompentencyIndex
]
.
masfromEvaluationAssessment1lList
[
0
].
averageScore
=
0
this
.
appraisalCompentency
List
[
this
.
appraisalCompentencyIndex
].
masfromEvaluationAssessment1lList
[
0
].
averageScore
=
this
.
showNumber
((
this
.
appraisalCompentencyList
[
this
.
appraisalCompentencyIndex
]
.
masfromEvaluationAssessment1lList
[
0
].
weightedTotal
*
100
)
/
total
)
this
.
cdr
.
detectChanges
()
}
}
...
...
@@ -213,15 +209,15 @@ export class PmsCompetencyComponent {
}
}
calGap
(
score
:
number
|
string
)
{
if
(
this
.
appraisalCompentency
.
data
?.
masfromEvaluationAssessment1lList
[
0
])
{
if
(
this
.
appraisalCompentency
List
[
this
.
appraisalCompentencyIndex
]
?.
masfromEvaluationAssessment1lList
[
0
])
{
const
roundedScore
=
this
.
showNumber
(
score
)
%
1
<=
0.5
?
Math
.
floor
(
this
.
showNumber
(
score
))
:
Math
.
round
(
this
.
showNumber
(
score
));
if
(
roundedScore
>=
90
&&
roundedScore
<=
100
)
{
if
(
this
.
appraisalCompentency
.
data
?.
masfromEvaluationAssessment1lList
[
0
].
numberCheck1
||
this
.
appraisalCompentency
.
data
?.
masfromEvaluationAssessment1lList
[
0
].
numberCheck2
||
this
.
appraisalCompentency
.
data
?.
masfromEvaluationAssessment1lList
[
0
].
numberCheck3
)
{
if
(
this
.
appraisalCompentency
List
[
this
.
appraisalCompentencyIndex
]?.
masfromEvaluationAssessment1lList
[
0
].
numberCheck1
||
this
.
appraisalCompentencyList
[
this
.
appraisalCompentencyIndex
]?.
masfromEvaluationAssessment1lList
[
0
].
numberCheck2
||
this
.
appraisalCompentencyList
[
this
.
appraisalCompentencyIndex
]
?.
masfromEvaluationAssessment1lList
[
0
].
numberCheck3
)
{
return
"-1"
;
}
return
"+1"
;
}
else
if
(
roundedScore
>=
80
&&
roundedScore
<=
89
)
{
if
(
this
.
appraisalCompentency
.
data
?.
masfromEvaluationAssessment1lList
[
0
].
numberCheck1
||
this
.
appraisalCompentency
.
data
?.
masfromEvaluationAssessment1lList
[
0
].
numberCheck2
||
this
.
appraisalCompentency
.
data
?.
masfromEvaluationAssessment1lList
[
0
].
numberCheck3
)
{
if
(
this
.
appraisalCompentency
List
[
this
.
appraisalCompentencyIndex
]?.
masfromEvaluationAssessment1lList
[
0
].
numberCheck1
||
this
.
appraisalCompentencyList
[
this
.
appraisalCompentencyIndex
]?.
masfromEvaluationAssessment1lList
[
0
].
numberCheck2
||
this
.
appraisalCompentencyList
[
this
.
appraisalCompentencyIndex
]
?.
masfromEvaluationAssessment1lList
[
0
].
numberCheck3
)
{
return
"-1"
;
}
return
"0"
;
...
...
@@ -270,7 +266,7 @@ export class PmsCompetencyComponent {
approveStatus
=
'1'
}
else
if
(
status
==
'approve'
)
{
approveStatus
=
'2'
if
(
this
.
appraisalCompentency
?.
data
?
.
checkStep
==
'0'
)
{
if
(
this
.
appraisalCompentency
List
[
this
.
appraisalCompentencyIndex
]
.
checkStep
==
'0'
)
{
title
=
'ยืนยันข้อมูล'
text
=
'คุณต้องการยืนยันข้อมูลการประเมินนี้ใช่หรือไม่'
confirmButtonText
=
'ยืนยันการบันทึก'
...
...
@@ -315,7 +311,7 @@ export class PmsCompetencyComponent {
cancelButton
:
'!swal2-button-bg-gray'
,
},
}).
then
((
result
)
=>
{
if
(
result
.
isConfirmed
&&
this
.
appraisalCompentency
)
{
if
(
result
.
isConfirmed
&&
this
.
appraisalCompentency
List
[
this
.
appraisalCompentencyIndex
]
)
{
this
.
saveApi
(
approveStatus
)
}
else
if
(
result
.
dismiss
===
Swal
.
DismissReason
.
cancel
)
{
Swal
.
fire
({
...
...
@@ -330,12 +326,12 @@ export class PmsCompetencyComponent {
})
}
saveApi
(
approveStatus
:
string
)
{
let
body
=
this
.
appraisalCompentency
.
data
switch
(
this
.
appraisalCompentency
.
data
?.
currentStep
)
{
let
body
=
this
.
appraisalCompentency
List
[
this
.
appraisalCompentencyIndex
]
switch
(
this
.
appraisalCompentency
List
[
this
.
appraisalCompentencyIndex
]
?.
currentStep
)
{
case
(
"0"
):
{
body
=
{
...
this
.
appraisalCompentency
.
data
,
masfromEvaluationAssessment1lList
:
[{
...
this
.
appraisalCompentency
.
data
.
masfromEvaluationAssessment1lList
[
0
],
...
this
.
appraisalCompentency
List
[
this
.
appraisalCompentencyIndex
]
,
masfromEvaluationAssessment1lList
:
[{
...
this
.
appraisalCompentency
List
[
this
.
appraisalCompentencyIndex
]
.
masfromEvaluationAssessment1lList
[
0
],
apsassessyStatus
:
approveStatus
}]
}
...
...
@@ -343,8 +339,8 @@ export class PmsCompetencyComponent {
}
case
(
"1"
):
{
body
=
{
...
this
.
appraisalCompentency
.
data
,
masfromEvaluationAssessment1lList
:
[{
...
this
.
appraisalCompentency
.
data
.
masfromEvaluationAssessment1lList
[
0
],
...
this
.
appraisalCompentency
List
[
this
.
appraisalCompentencyIndex
]
,
masfromEvaluationAssessment1lList
:
[{
...
this
.
appraisalCompentency
List
[
this
.
appraisalCompentencyIndex
]
.
masfromEvaluationAssessment1lList
[
0
],
apsapprove1Status
:
approveStatus
}]
}
...
...
@@ -352,9 +348,9 @@ export class PmsCompetencyComponent {
}
case
(
"2"
):
{
body
=
{
...
this
.
appraisalCompentency
.
data
,
masfromEvaluationAssessment1lList
:
[{
...
this
.
appraisalCompentency
.
data
.
masfromEvaluationAssessment1lList
[
0
],
apsapprove1Status
:
approveStatus
==
'0'
?
approveStatus
:
this
.
appraisalCompentency
.
data
.
masfromEvaluationAssessment1lList
[
0
].
apsapprove1Status
,
...
this
.
appraisalCompentency
List
[
this
.
appraisalCompentencyIndex
]
,
masfromEvaluationAssessment1lList
:
[{
...
this
.
appraisalCompentency
List
[
this
.
appraisalCompentencyIndex
]
.
masfromEvaluationAssessment1lList
[
0
],
apsapprove1Status
:
approveStatus
==
'0'
?
approveStatus
:
this
.
appraisalCompentency
List
[
this
.
appraisalCompentencyIndex
]
.
masfromEvaluationAssessment1lList
[
0
].
apsapprove1Status
,
apsapprove2Status
:
approveStatus
}]
}
...
...
@@ -362,9 +358,9 @@ export class PmsCompetencyComponent {
}
case
(
"3"
):
{
body
=
{
...
this
.
appraisalCompentency
.
data
,
masfromEvaluationAssessment1lList
:
[{
...
this
.
appraisalCompentency
.
data
.
masfromEvaluationAssessment1lList
[
0
],
apsapprove2Status
:
approveStatus
==
'0'
?
approveStatus
:
this
.
appraisalCompentency
.
data
.
masfromEvaluationAssessment1lList
[
0
].
apsapprove2Status
,
...
this
.
appraisalCompentency
List
[
this
.
appraisalCompentencyIndex
]
,
masfromEvaluationAssessment1lList
:
[{
...
this
.
appraisalCompentency
List
[
this
.
appraisalCompentencyIndex
]
.
masfromEvaluationAssessment1lList
[
0
],
apsapprove2Status
:
approveStatus
==
'0'
?
approveStatus
:
this
.
appraisalCompentency
List
[
this
.
appraisalCompentencyIndex
]
.
masfromEvaluationAssessment1lList
[
0
].
apsapprove2Status
,
apsapprove3Status
:
approveStatus
}]
}
...
...
@@ -372,9 +368,9 @@ export class PmsCompetencyComponent {
}
case
(
"4"
):
{
body
=
{
...
this
.
appraisalCompentency
.
data
,
masfromEvaluationAssessment1lList
:
[{
...
this
.
appraisalCompentency
.
data
.
masfromEvaluationAssessment1lList
[
0
],
apsapprove3Status
:
approveStatus
==
'0'
?
approveStatus
:
this
.
appraisalCompentency
.
data
.
masfromEvaluationAssessment1lList
[
0
].
apsapprove3Status
,
...
this
.
appraisalCompentency
List
[
this
.
appraisalCompentencyIndex
]
,
masfromEvaluationAssessment1lList
:
[{
...
this
.
appraisalCompentency
List
[
this
.
appraisalCompentencyIndex
]
.
masfromEvaluationAssessment1lList
[
0
],
apsapprove3Status
:
approveStatus
==
'0'
?
approveStatus
:
this
.
appraisalCompentency
List
[
this
.
appraisalCompentencyIndex
]
.
masfromEvaluationAssessment1lList
[
0
].
apsapprove3Status
,
apsapprove4Status
:
approveStatus
}]
}
...
...
@@ -382,9 +378,9 @@ export class PmsCompetencyComponent {
}
case
(
"5"
):
{
body
=
{
...
this
.
appraisalCompentency
.
data
,
masfromEvaluationAssessment1lList
:
[{
...
this
.
appraisalCompentency
.
data
.
masfromEvaluationAssessment1lList
[
0
],
apsapprove4Status
:
approveStatus
==
'0'
?
approveStatus
:
this
.
appraisalCompentency
.
data
.
masfromEvaluationAssessment1lList
[
0
].
apsapprove4Status
,
...
this
.
appraisalCompentency
List
[
this
.
appraisalCompentencyIndex
]
,
masfromEvaluationAssessment1lList
:
[{
...
this
.
appraisalCompentency
List
[
this
.
appraisalCompentencyIndex
]
.
masfromEvaluationAssessment1lList
[
0
],
apsapprove4Status
:
approveStatus
==
'0'
?
approveStatus
:
this
.
appraisalCompentency
List
[
this
.
appraisalCompentencyIndex
]
.
masfromEvaluationAssessment1lList
[
0
].
apsapprove4Status
,
apsapprove5Status
:
approveStatus
}]
}
...
...
@@ -392,42 +388,67 @@ export class PmsCompetencyComponent {
}
default
:
{
return
}
}
this
.
appraisalService
.
postCompetency
(
body
).
subscribe
({
next
:
response
=>
{
if
(
response
.
success
)
{
Swal
.
fire
({
title
:
'บันทึกสำเร็จ!'
,
text
:
'การประเมินของคุณถูกบันทึกแล้ว'
,
icon
:
'success'
,
customClass
:
{
confirmButton
:
'!swal2-button-bg-green'
,
// this.appraisalService.postCompetency(body).subscribe({
// next: response => {
// if (response.success) {
// Swal.fire({
// title: 'บันทึกสำเร็จ!',
// text: 'การประเมินของคุณถูกบันทึกแล้ว',
// icon: 'success',
// customClass: {
// confirmButton: '!swal2-button-bg-green',
// }
// });
// this.getAppraisalCompentencyForm(0)
// } else {
// Swal.fire({
// title: 'ยกเลิก!',
// text: 'การบันทึกถูกยกเลิก',
// icon: 'error',
// customClass: {
// confirmButton: '!swal2-button-bg-danger',
// }
// });
// }
// }, error: error => {
// Swal.fire({
// title: 'ยกเลิก!',
// text: 'การบันทึกถูกยกเลิก',
// icon: 'error',
// customClass: {
// confirmButton: '!swal2-button-bg-danger',
// }
// });
// }
// })
}
});
this
.
getAppraisalCompentencyForm
(
0
)
}
else
{
Swal
.
fire
({
title
:
'ยกเลิก!'
,
text
:
'การบันทึกถูกยกเลิก'
,
icon
:
'error'
,
customClass
:
{
confirmButton
:
'!swal2-button-bg-danger'
,
}
});
}
},
error
:
error
=>
{
Swal
.
fire
({
title
:
'ยกเลิก!'
,
text
:
'การบันทึกถูกยกเลิก'
,
icon
:
'error'
,
customClass
:
{
confirmButton
:
'!swal2-button-bg-danger'
,
}
});
onInFormCompleted
(
data
:
MasfromEvaluationAssessment2List
)
{
return
data
.
groupAssessment1
.
competencyIndicatorsCourses1Mini
.
behavioralIndicatorsList
.
every
(
x
=>
x
.
competencyBehavioral
.
scoreTopicExpectation
!=
0
)
}
onFormCompleted
(
index
:
number
)
{
const
formCompleted
=
this
.
appraisalCompentencyList
[
index
]?.
masfromEvaluationAssessment1lList
[
0
].
masfromEvaluationAssessment2List
.
every
(
data
=>
data
.
groupAssessment1
.
competencyIndicatorsCourses1Mini
.
behavioralIndicatorsList
.
every
(
x
=>
x
.
competencyBehavioral
.
scoreTopicExpectation
!=
0
)
)
this
.
onAllFormCompleted
()
return
formCompleted
}
onAllFormCompleted
()
{
const
formCompleted
=
this
.
appraisalCompentencyList
.
every
(
data
=>
{
data
.
masfromEvaluationAssessment1lList
[
0
].
masfromEvaluationAssessment2List
.
every
(
data
=>
data
.
groupAssessment1
.
competencyIndicatorsCourses1Mini
.
behavioralIndicatorsList
.
every
(
x
=>
x
.
competencyBehavioral
.
scoreTopicExpectation
!=
0
)
)
})
this
.
allFormCompleted
.
emit
(
formCompleted
)
}
onFormCompleted
(
data
:
MasfromEvaluationAssessment2List
)
{
return
data
.
groupAssessment1
.
competencyIndicatorsCourses1Mini
.
behavioralIndicatorsList
.
every
(
x
=>
x
.
competencyBehavioral
.
scoreTopicExpectation
!=
0
)
scrollToTable
(
event
:
MouseEvent
)
{
const
target
=
event
.
target
as
HTMLElement
;
const
position
=
target
.
getBoundingClientRect
();
window
.
scrollTo
({
top
:
position
.
top
+
window
.
scrollY
-
100
,
behavior
:
'smooth'
});
}
}
src/app/components/performance-evaluation/pms-form-employee/pms-form-employee.component.html
View file @
caf318d4
...
...
@@ -19,6 +19,25 @@
</div>
</div>
</div>
<div
class=
"font-size-18px font-weight-700 pt-1.5rem text-primary px-2rem"
>
ประเมินผลประจำปี {{currentDate.getFullYear()}}
</div>
<div
class=
"pt-0.75rem"
>
<div
class=
" px-2rem"
[
ngClass
]="{'
border-gray-200
border-b
'
:
compentency
.
dataList
.
length
}"
>
<nav
class=
" flex space-x-2 rtl:space-x-reverse"
>
<a
*
ngFor=
"let item of compentency.dataList; let i=index ; let f= first"
class=
"border justify-center rounded-top-4px hs-tab-active:!bg-primary hs-tab-active:text-white -mb-px py-2 px-3 inline-flex items-center gap-2 font-size-16px font-weight-500 text-center hover:text-gray-900"
[
class
.
active
]="
f
"
href=
"javascript:void(0);"
[
id
]="'
card-type-item-
'+(
i
+
1
)"
[
attr
.
data-hs-tab
]="'#
underline-
'+(
i
+
1
)"
[
attr
.
aria-controls
]="'
underline-
'+(
i
+
1
)"
(
click
)="
selectDataList
(
item
)"
>
{{item.tdesc}}
</a>
</nav>
</div>
</div>
<div
class=
"pt-50px"
*
ngIf=
"compentency.dataList.length"
>
<div
*
ngFor=
"let item of compentency.dataList; let i=index;let f=first"
[
id
]="'
underline-
'+(
i
+
1
)"
role=
"tabpanel"
[
class
.
hidden
]="!
f
"
>
<div
class=
"relative pt-0.75rem"
>
<div
class=
"flex relative before:bg-black/50 before:absolute before:w-full before:h-full"
>
<img
[
src
]="
url2
?
url2
:
'./
assets
/
img
/
png-images
/
2
.
png
'"
alt=
""
class=
"h-[500px] w-full rounded-sm"
...
...
@@ -77,37 +96,49 @@
</div>
<div
class=
"box-body py-2"
>
<div
class=
"xl:overflow-hidden overflow-x-auto"
>
<table
class=
"ti-custom-table border-0
"
>
<table
class=
"ti-custom-table border-0 ellipsis-text
"
>
<tbody>
<tr
class=
""
>
<td
class=
"font-medium !p-2"
>
ตำเเหน่ง
</td>
<td
class=
"!p-2"
>
:
</td>
<td
class=
"!p-2"
>
{{evaluatee.data.position.tdesc}}
</td>
<td
class=
"font-medium !p-2"
>
{{evaluatee.data.position.tdesc}}
</td>
</tr>
<tr
class=
"!border-0"
>
<td
class=
"font-medium !p-2"
>
ฝ่าย
</td>
<td
class=
"!p-2"
>
:
</td>
<td
class=
"!p-2"
>
{{evaluatee.data.bu1.tdesc}}
</td>
<td
class=
"font-medium !p-2"
>
{{evaluatee.data.bu1.tdesc}}
</td>
</tr>
<tr
class=
"!border-0"
>
<td
class=
"font-medium !p-2"
>
แผนก
</td>
<td
class=
"!p-2"
>
:
</td>
<td
class=
"!p-2"
>
{{evaluatee.data.bu2.tdesc}}
</td>
<td
class=
"font-medium !p-2"
>
{{evaluatee.data.bu2.tdesc}}
</td>
</tr>
<tr
class=
"!border-0"
>
<td
class=
"font-medium !p-2"
>
ส่วน
</td>
<td
class=
"!p-2"
>
:
</td>
<td
class=
"!p-2"
>
{{evaluatee.data.bu3.tdesc}}
</td>
<td
class=
"font-medium !p-2"
>
{{evaluatee.data.bu3.tdesc}}
</td>
</tr>
<tr
class=
"!border-0"
>
<td
class=
"font-medium !p-2"
>
ส่วนย่อย 1
</td>
<td
class=
"!p-2"
>
:
</td>
<td
class=
"!p-2"
>
{{evaluatee.data.bu4.tdesc}}
</td>
<td
class=
"font-medium !p-2"
>
{{evaluatee.data.bu4.tdesc}}
</td>
</tr>
<tr
class=
"!border-0"
>
<td
class=
"font-medium !p-2"
>
ส่วนย่อย 2
</td>
<td
class=
"!p-2"
>
:
</td>
<td
class=
"!p-2"
>
{{evaluatee.data.bu1.tdesc}}
</td>
<td
class=
"font-medium !p-2"
>
{{evaluatee.data.bu5.tdesc}}
</td>
</tr>
</tbody>
</table>
...
...
@@ -123,127 +154,154 @@
<div
class=
"box-body space-y-4 text-center"
>
<div
class=
"flex flex-row"
>
<div
class=
"mx-auto relative"
>
<div
class=
"h-full w-6 flex items-center justify-center
"
>
<div
class=
"h-full w-[3px] bg-gray-100 dark:bg-black/2
0 pointer-events-none"
></div>
<div
class=
"h-full w-6 flex items-center justify-center pb-4
"
>
<div
class=
"h-full w-[3px] bg-gray-10
0 pointer-events-none"
></div>
</div>
<div
<div
class=
"absolute rounded-full text-center align-center"
style=
"justify-items:center;top:-5px"
>
<svg
class=
"flex-shrink-0 h-6 w-6 text-white"
width=
"16"
height=
"16"
viewBox=
"0 0 16 16"
fill=
"none"
xmlns=
"http://www.w3.org/2000/svg"
>
<path
d=
"M15.1965 7.85999C15.1965 3.71785 11.8387 0.359985 7.69653 0.359985C3.5544 0.359985 0.196533 3.71785 0.196533 7.85999C0.196533 12.0021 3.5544 15.36 7.69653 15.36C11.8387 15.36 15.1965 12.0021 15.1965 7.85999Z"
fill=
"currentColor"
class=
"fill-success"
></path>
<!-- fill-mute -->
<!-- fill-warning -->
<!-- fill-success -->
<!-- fill-danger -->
<path
d=
"M10.9295 4.88618C11.1083 4.67577 11.4238 4.65019 11.6343 4.82904C11.8446 5.00788 11.8702 5.32343 11.6914 5.53383L7.44139 10.5338C7.25974 10.7475 6.93787 10.77 6.72825 10.5837L4.47825 8.5837C4.27186 8.40024 4.25327 8.0842 4.43673 7.87781C4.62019 7.67142 4.93622 7.65283 5.14261 7.83629L7.01053 9.49669L10.9295 4.88618Z"
fill=
"currentColor"
></path>
</svg>
</div>
<!-- <div
class="avatar avatar-xs absolute top-0 rounded-full bg-gray-200 shadow text-center ltr:-left-[4px] rtl:-right-[4px]">
<img src="./assets/img/users/21.jpg" class="rounded-full" alt="timeline-img" />
</div> -->
</div>
</div>
<div
class=
"flex w-full pb-8"
>
<div
class=
"flex w-full pb-4"
>
<div
class=
"ltr:ml-5 rtl:mr-5 rounded-sm ltr:mr-auto rtl:ml-auto my-auto w-full space-y-3"
>
<div
class=
"sm:flex"
>
<h3
class=
"my-auto text-gray-500 dark:text-white/70
"
>
<span
class=
"text-dark dark:text-white"
>
Anesthesia
</span
>
</h3
>
<p
class=
"my-auto ltr:ml-auto rtl:mr-auto text-gray-500 dark:text-white/70 text-xs"
>
yesterday, 05:06 pm
</p>
</div
>
<div
class=
"border border-gray-200 bg-gray-50 dark:bg-black/20 dark:border-white/10 p-4 rounded-sm"
>
<h3
class=
"text-start my-auto text-gray-500 dark:text-white/70"
style=
"line-height: 1.5
"
>
<span
class=
"text-dark dark:text-white"
>
ผู้รับการประเมิน
</span
>
<br
>
<span
class=
"text-dark dark:text-white"
>
วีรพงศ์test_UAT สกุลทดสอบ1
</span
>
<br
>
<p
class=
"text-xs text-gray-500 dark:text-white/70"
>
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Nostrum sit consequuntur quia aperiam quibusdam rerum ut! Id
ducimus nobis rerum modi veniam odit totam rem asperiores
adipisci, sed quia voluptas?
ประเมินแล้ว
</p>
</h3>
</div>
</div>
</div>
</div>
<div
class=
"flex flex-row"
>
<div
class=
"mx-auto relative"
>
<div
class=
"h-full w-6 flex items-center justify-center
"
>
<div
class=
"h-full w-[3px] bg-gray-100 dark:bg-black/2
0 pointer-events-none"
></div>
<div
class=
"h-full w-6 flex items-center justify-center pb-4
"
>
<div
class=
"h-full w-[3px] bg-gray-10
0 pointer-events-none"
></div>
</div>
<div
class=
"avatar avatar-xs absolute top-0 rounded-full bg-gray-200 shadow text-center ltr:-left-[4px] rtl:-right-[4px]"
>
<img
src=
"./assets/img/users/21.jpg"
class=
"rounded-full"
alt=
"timeline-img"
/>
<div
class=
"absolute rounded-full text-center align-center"
style=
"justify-items:center;top:-5px"
>
<svg
class=
"flex-shrink-0 h-6 w-6 text-white"
width=
"16"
height=
"16"
viewBox=
"0 0 16 16"
fill=
"none"
xmlns=
"http://www.w3.org/2000/svg"
>
<path
d=
"M15.1965 7.85999C15.1965 3.71785 11.8387 0.359985 7.69653 0.359985C3.5544 0.359985 0.196533 3.71785 0.196533 7.85999C0.196533 12.0021 3.5544 15.36 7.69653 15.36C11.8387 15.36 15.1965 12.0021 15.1965 7.85999Z"
fill=
"currentColor"
class=
"fill-mute"
></path>
<!-- fill-mute -->
<!-- fill-warning -->
<!-- fill-success -->
<!-- fill-danger -->
<path
d=
"M10.9295 4.88618C11.1083 4.67577 11.4238 4.65019 11.6343 4.82904C11.8446 5.00788 11.8702 5.32343 11.6914 5.53383L7.44139 10.5338C7.25974 10.7475 6.93787 10.77 6.72825 10.5837L4.47825 8.5837C4.27186 8.40024 4.25327 8.0842 4.43673 7.87781C4.62019 7.67142 4.93622 7.65283 5.14261 7.83629L7.01053 9.49669L10.9295 4.88618Z"
fill=
"currentColor"
></path>
</svg>
</div>
</div>
<div
class=
"flex w-full pb-8
"
>
<div
class=
"flex w-full pb-4
"
>
<div
class=
"ltr:ml-5 rtl:mr-5 rounded-sm ltr:mr-auto rtl:ml-auto my-auto w-full space-y-3"
>
<div
class=
"sm:flex"
>
<h3
class=
"my-auto text-gray-500 dark:text-white/70
"
>
<span
class=
"text-dark dark:text-white"
>
Anesthesia
</span
>
</h3
>
<p
class=
"my-auto ltr:ml-auto rtl:mr-auto text-gray-500 dark:text-white/70 text-xs"
>
yesterday, 05:06 pm
</p>
</div
>
<div
class=
"border border-gray-200 bg-gray-50 dark:bg-black/20 dark:border-white/10 p-4 rounded-sm"
>
<h3
class=
"text-start my-auto text-gray-500 dark:text-white/70"
style=
"line-height: 1.5
"
>
<span
class=
"text-dark dark:text-white"
>
ผู้ประเมิน1
</span
>
<br
>
<span
class=
"text-dark dark:text-white"
>
วีรพงศ์test_UAT สกุลทดสอบ1
</span
>
<br
>
<p
class=
"text-xs text-gray-500 dark:text-white/70"
>
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Nostrum sit consequuntur quia aperiam quibusdam rerum ut! Id
ducimus nobis rerum modi veniam odit totam rem asperiores
adipisci, sed quia voluptas?
ยังไม่ถึงขั้นตอนดำเนินการ
</p>
</h3>
</div>
</div>
</div>
</div>
<div
class=
"flex flex-row"
>
<div
class=
"mx-auto relative"
>
<div
class=
"h-full w-6 flex items-center justify-center"
>
<div
class=
"h-full w-[3px] bg-gray-100 dark:bg-black/20 pointer-events-none"
></div>
</div>
<div
class=
"avatar avatar-xs absolute top-0 rounded-full bg-gray-200 shadow text-center ltr:-left-[4px] rtl:-right-[4px]"
>
<img
src=
"./assets/img/users/21.jpg"
class=
"rounded-full"
alt=
"timeline-img"
/>
</div>
</div>
<div
class=
"flex w-full pb-8"
>
<div
class=
"ltr:ml-5 rtl:mr-5 rounded-sm ltr:mr-auto rtl:ml-auto my-auto w-full space-y-3"
>
<div
class=
"sm:flex"
>
<h3
class=
"my-auto text-gray-500 dark:text-white/70"
>
<span
class=
"text-dark dark:text-white"
>
Anesthesia
</span>
</h3>
<p
class=
"my-auto ltr:ml-auto rtl:mr-auto text-gray-500 dark:text-white/70 text-xs"
>
yesterday, 05:06 pm
</p>
</div>
<div
class=
"border border-gray-200 bg-gray-50 dark:bg-black/20 dark:border-white/10 p-4 rounded-sm"
>
<p
class=
"text-xs text-gray-500 dark:text-white/70"
>
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Nostrum sit consequuntur quia aperiam quibusdam rerum ut! Id
ducimus nobis rerum modi veniam odit totam rem asperiores
adipisci, sed quia voluptas?
</p>
</div>
</div>
<div
class=
"box"
>
<div
class=
"box-header"
>
<div
class=
"flex justify-between"
>
<h5
class=
"box-title"
>
Timeline
</h5>
</div>
</div>
<div
class=
"flex flex-row"
>
<div
class=
"box-body space-y-4 text-center"
>
<div
class=
"flex flex-row"
*
ngFor=
"let item of [
' ไม่รู้จะพูดยังไงดี นอกจากคำว่าประทับใจมาก ๆ ทุกอย่างลงตัว ทั้งอารมณ์ ความรู้สึก และบรรยากาศขอบคุณที่สร้างสรรค์อะไรดี ๆแบบนี้ออกมาให้ได้เห็น',
'ตอนแรกก็ไม่ได้คาดหวังอะไรขนาดนั้น แต่พอได้สัมผัสจริง ๆ มันเกินคาดมาก มีความสุขแบบที่ไม่ได้รู้สึกมานานแล้ว อยากบอกว่าทำต่อไปนะ เราเชื่อว่ามีอีกหลายคนที่รู้สึกเหมือนกัน',
'นั่งอ่านวนอยู่หลายรอบเลยอะ ทุกคำ ทุกภาพ มันสะกิดใจแบบอธิบายไม่ถูก อยากให้คนที่ยังลังเลได้ลองเปิดใจดูจริง ๆ',
'เอาจริง ๆ ไม่ค่อยเจออะไรที่ทำให้ยิ้มได้แบบนี้บ่อย ๆ นะ มันเป็นความรู้สึกเล็ก ๆ ที่โคตรยิ่งใหญ่สำหรับเรา ขอบคุณที่ทำให้โลกใบนี้ดูน่ารักขึ้นอีกนิดนึง'
]; let i=index"
>
<div
class=
"mx-auto relative"
>
<div
class=
"h-full w-6 flex items-center justify-center
"
>
<div
class=
"h-full w-[3px] bg-gray-100 dark:bg-black/2
0 pointer-events-none"
></div>
<div
class=
"h-full w-6 flex items-center justify-center pb-4
"
>
<div
class=
"h-full w-[3px] bg-gray-10
0 pointer-events-none"
></div>
</div>
<div
<div
class=
"absolute rounded-full text-center align-center"
style=
"justify-items:center;top:-5px"
>
<svg
class=
"flex-shrink-0 h-6 w-6 text-white"
width=
"16"
height=
"16"
viewBox=
"0 0 16 16"
fill=
"none"
xmlns=
"http://www.w3.org/2000/svg"
>
<path
d=
"M15.1965 7.85999C15.1965 3.71785 11.8387 0.359985 7.69653 0.359985C3.5544 0.359985 0.196533 3.71785 0.196533 7.85999C0.196533 12.0021 3.5544 15.36 7.69653 15.36C11.8387 15.36 15.1965 12.0021 15.1965 7.85999Z"
fill=
"currentColor"
class=
"fill-success"
></path>
<!-- fill-mute -->
<!-- fill-warning -->
<!-- fill-success -->
<!-- fill-danger -->
<path
d=
"M10.9295 4.88618C11.1083 4.67577 11.4238 4.65019 11.6343 4.82904C11.8446 5.00788 11.8702 5.32343 11.6914 5.53383L7.44139 10.5338C7.25974 10.7475 6.93787 10.77 6.72825 10.5837L4.47825 8.5837C4.27186 8.40024 4.25327 8.0842 4.43673 7.87781C4.62019 7.67142 4.93622 7.65283 5.14261 7.83629L7.01053 9.49669L10.9295 4.88618Z"
fill=
"currentColor"
></path>
</svg>
</div>
<!-- <div
class="avatar avatar-xs absolute top-0 rounded-full bg-gray-200 shadow text-center ltr:-left-[4px] rtl:-right-[4px]">
<img src="./assets/img/users/21.jpg" class="rounded-full" alt="timeline-img" />
</div> -->
</div>
</div>
<div
class=
"flex w-full pb-8"
>
<div
class=
"flex w-full pb-4"
>
<div
class=
"ltr:ml-5 rtl:mr-5 rounded-sm ltr:mr-auto rtl:ml-auto my-auto w-full space-y-3"
>
<div
class=
"sm:flex"
>
<h3
class=
"my-auto text-gray-500 dark:text-white/70"
>
<span
class=
"text-dark dark:text-white"
>
Anesthesia
</span>
</h3>
<h3
class=
"text-start my-auto text-gray-500 dark:text-white/70"
style=
"line-height: 1.5"
>
<span
class=
"text-dark dark:text-white"
style=
"white-space: nowrap;"
>
วีรพงศ์test_UAT สกุลทดสอบ1
</span>
<br>
<div
style=
"display: flex;justify-content :space-between;"
>
<p
class=
"text-xs text-gray-500 dark:text-white/70"
>
ประเมินแล้ว
</p>
<p
class=
"my-auto ltr:ml-auto rtl:mr-auto text-gray-500 dark:text-white/70 text-xs"
>
yesterday,
05:06 pm
พ.
05:06 pm
</p>
</div>
<div
class=
"border border-gray-200 bg-gray-50 dark:bg-black/20 dark:border-white/10 p-4 rounded-sm"
>
<p
class=
"text-xs text-gray-500 dark:text-white/70"
>
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Nostrum sit consequuntur quia aperiam quibusdam rerum ut! Id
ducimus nobis rerum modi veniam odit totam rem asperiores
adipisci, sed quia voluptas?
</h3
>
</div
>
<div
class=
"border border-gray-200 bg-gray-50 dark:bg-black/20 dark:border-white/10 p-4 rounded-sm"
>
<p
class=
"text-start text-xs text-gray-500 dark:text-white/70"
style=
"line-height: 1.5"
>
{{item}}
</p>
</div>
</div>
...
...
@@ -267,15 +325,34 @@
class=
"hs-tab-active:bg-primary hs-tab-active:border-primary hs-tab-active:text-white dark:hs-tab-active:bg-primary dark:hs-tab-active:border-primary dark:hs-tab-active:text-white py-2 px-3 inline-flex items-center w-full justify-center gap-2 text-sm font-medium text-center border text-gray-500 rounded-sm hover:text-gray-700 dark:bg-black/20 dark:border-white/10 dark:text-white/70 dark:hover:text-gray-300"
id=
"profile-item-2"
data-hs-tab=
"#profile-2"
aria-controls=
"profile-2"
role=
"tab"
>
แบบประเมินสมรรถนะ
<svg
class=
"flex-shrink-0 h-6 w-6 text-white"
width=
"16"
height=
"16"
viewBox=
"0 0 16 16"
fill=
"none"
xmlns=
"http://www.w3.org/2000/svg"
>
<path
d=
"M15.1965 7.85999C15.1965 3.71785 11.8387 0.359985 7.69653 0.359985C3.5544 0.359985 0.196533 3.71785 0.196533 7.85999C0.196533 12.0021 3.5544 15.36 7.69653 15.36C11.8387 15.36 15.1965 12.0021 15.1965 7.85999Z"
fill=
"currentColor"
[
class
.
fill-mute
]="!
compentencyFormCompleted
"
[
class
.
fill-success
]="
compentencyFormCompleted
"
></path>
<!-- fill-mute -->
<!-- fill-warning -->
<!-- fill-success -->
<!-- fill-danger -->
<path
d=
"M10.9295 4.88618C11.1083 4.67577 11.4238 4.65019 11.6343 4.82904C11.8446 5.00788 11.8702 5.32343 11.6914 5.53383L7.44139 10.5338C7.25974 10.7475 6.93787 10.77 6.72825 10.5837L4.47825 8.5837C4.27186 8.40024 4.25327 8.0842 4.43673 7.87781C4.62019 7.67142 4.93622 7.65283 5.14261 7.83629L7.01053 9.49669L10.9295 4.88618Z"
fill=
"currentColor"
></path>
</svg>
</button>
<button
type=
"button"
[
class
.
active
]="
currentTap=
='pms'"
class=
"hs-tab-active:bg-primary hs-tab-active:border-primary hs-tab-active:text-white dark:hs-tab-active:bg-primary dark:hs-tab-active:border-primary dark:hs-tab-active:text-white py-2 px-3 inline-flex items-center w-full justify-center gap-2 text-sm font-medium text-center border text-gray-500 rounded-sm hover:text-gray-700 dark:bg-black/20 dark:border-white/10 dark:text-white/70 dark:hover:text-gray-300"
id=
"profile-item-3"
data-hs-tab=
"#profile-3"
aria-controls=
"profile-3"
role=
"tab"
>
แบบประเมินประสิทธิภาพ
<svg
class=
"flex-shrink-0 h-6 w-6 text-white"
width=
"16"
height=
"16"
viewBox=
"0 0 16 16"
fill=
"none"
xmlns=
"http://www.w3.org/2000/svg"
>
แบบประเมินประสิทธิภาพ
<svg
class=
"flex-shrink-0 h-6 w-6 text-white"
width=
"16"
height=
"16"
viewBox=
"0 0 16 16"
fill=
"none"
xmlns=
"http://www.w3.org/2000/svg"
>
<path
d=
"M15.1965 7.85999C15.1965 3.71785 11.8387 0.359985 7.69653 0.359985C3.5544 0.359985 0.196533 3.71785 0.196533 7.85999C0.196533 12.0021 3.5544 15.36 7.69653 15.36C11.8387 15.36 15.1965 12.0021 15.1965 7.85999Z"
fill=
"currentColor"
class=
"fill-green-500"
></path>
fill=
"currentColor"
class=
"fill-mute"
></path>
<!-- fill-mute -->
<!-- fill-warning -->
<!-- fill-success -->
<!-- fill-danger -->
<path
d=
"M10.9295 4.88618C11.1083 4.67577 11.4238 4.65019 11.6343 4.82904C11.8446 5.00788 11.8702 5.32343 11.6914 5.53383L7.44139 10.5338C7.25974 10.7475 6.93787 10.77 6.72825 10.5837L4.47825 8.5837C4.27186 8.40024 4.25327 8.0842 4.43673 7.87781C4.62019 7.67142 4.93622 7.65283 5.14261 7.83629L7.01053 9.49669L10.9295 4.88618Z"
fill=
"currentColor"
></path>
...
...
@@ -285,6 +362,19 @@
class=
"hs-tab-active:bg-primary hs-tab-active:border-primary hs-tab-active:text-white dark:hs-tab-active:bg-primary dark:hs-tab-active:border-primary dark:hs-tab-active:text-white py-2 px-3 inline-flex items-center w-full justify-center gap-2 text-sm font-medium text-center border text-gray-500 rounded-sm hover:text-gray-700 dark:bg-black/20 dark:border-white/10 dark:text-white/70 dark:hover:text-gray-300"
id=
"profile-item-4"
data-hs-tab=
"#profile-4"
aria-controls=
"profile-4"
role=
"tab"
>
แผนพัฒนาบุคคลากร
<svg
class=
"flex-shrink-0 h-6 w-6 text-white"
width=
"16"
height=
"16"
viewBox=
"0 0 16 16"
fill=
"none"
xmlns=
"http://www.w3.org/2000/svg"
>
<path
d=
"M15.1965 7.85999C15.1965 3.71785 11.8387 0.359985 7.69653 0.359985C3.5544 0.359985 0.196533 3.71785 0.196533 7.85999C0.196533 12.0021 3.5544 15.36 7.69653 15.36C11.8387 15.36 15.1965 12.0021 15.1965 7.85999Z"
fill=
"currentColor"
class=
"fill-mute"
></path>
<!-- fill-mute -->
<!-- fill-warning -->
<!-- fill-success -->
<!-- fill-danger -->
<path
d=
"M10.9295 4.88618C11.1083 4.67577 11.4238 4.65019 11.6343 4.82904C11.8446 5.00788 11.8702 5.32343 11.6914 5.53383L7.44139 10.5338C7.25974 10.7475 6.93787 10.77 6.72825 10.5837L4.47825 8.5837C4.27186 8.40024 4.25327 8.0842 4.43673 7.87781C4.62019 7.67142 4.93622 7.65283 5.14261 7.83629L7.01053 9.49669L10.9295 4.88618Z"
fill=
"currentColor"
></path>
</svg>
</button>
<button
type=
"button"
[
class
.
active
]="
currentTap=
='2'"
class=
"hs-tab-active:bg-primary hs-tab-active:border-primary hs-tab-active:text-white dark:hs-tab-active:bg-primary dark:hs-tab-active:border-primary dark:hs-tab-active:text-white py-2 px-3 inline-flex items-center w-full justify-center gap-2 text-sm font-medium text-center border text-gray-500 rounded-sm hover:text-gray-700 dark:bg-black/20 dark:border-white/10 dark:text-white/70 dark:hover:text-gray-300"
...
...
@@ -297,25 +387,26 @@
<div
id=
"profile-1"
[
class
.
hidden
]="
currentTap
!=''"
role=
"tabpanel"
aria-labelledby=
"profile-item-1"
>
<app-pms-information></app-pms-information>
</div>
<div
id=
"profile-2"
[
class
.
hidden
]="
currentTap=
='idp'||currentTap=='pms'||currentTap==''"
role=
"tabpanel"
aria-labelledby=
"profile-item-2"
>
<ng-container
*
ngIf=
"evaluationRoundId&&allCompetencyTypeId&&evaluaterId&&evaluateeId"
>
<app-pms-competency
[
currentTap
]="
currentTap
"
[
evaluationRoundId
]="
evaluationRoundId
"
[
evaluaterId
]="
evaluaterId
"
[
evaluateeId
]="
evaluateeId
"
[
allCompetencyTypeId
]="
allCompetencyTypeId
"
></app-pms-competency>
<div
id=
"profile-2"
[
class
.
hidden
]="
currentTap=
='idp'||currentTap=='pms'||currentTap==''"
role=
"tabpanel"
aria-labelledby=
"profile-item-2"
>
<ng-container
*
ngIf=
"compentency.data&&evaluaterId&&evaluateeId"
>
<app-pms-competency
[
currentTap
]="
currentTap
"
[
appraisalCompentencyList
]="
compentency
.
data
.
competency
"
[
evaluaterId
]="
evaluaterId
"
[
evaluateeId
]="
evaluateeId
"
(
allFormCompleted
)="
compentencyFormCompleted=
$event"
></app-pms-competency>
</ng-container>
</div>
<div
id=
"profile-3"
[
class
.
hidden
]="
currentTap
!='
pms
'"
class=
"text-center"
role=
"tabpanel"
aria-labelledby=
"profile-item-3"
>
<ng-container
*
ngIf=
"evaluationRoundId
&&evaluateeId&&evaluaterId"
>
<app-pms-kpi
[
evaluationRoundId
]="
evaluationRoundId
"
[
evaluaterId
]="
evaluaterId
"
<ng-container
*
ngIf=
"compentency.data
&&evaluateeId&&evaluaterId"
>
<app-pms-kpi
[
appraisalPms
]="
compentency
.
data
.
pms
"
[
evaluaterId
]="
evaluaterId
"
[
evaluateeId
]="
evaluateeId
"
></app-pms-kpi>
</ng-container>
</div>
<div
id=
"profile-4"
[
class
.
hidden
]="
currentTap
!='
idp
'"
class=
"text-center"
role=
"tabpanel"
aria-labelledby=
"profile-item-4"
>
<ng-container
*
ngIf=
"evaluationRoundId
&&evaluateeId&&evaluaterId"
>
<app-pms-idp
[
evaluationRoundId
]="
evaluationRoundId
"
[
evaluaterId
]="
evaluaterId
"
<ng-container
*
ngIf=
"compentency.data
&&evaluateeId&&evaluaterId"
>
<app-pms-idp
[
appraisalIdp
]="
compentency
.
data
.
idp
"
[
evaluaterId
]="
evaluaterId
"
[
evaluateeId
]="
evaluateeId
"
></app-pms-idp>
</ng-container>
</div>
...
...
@@ -330,9 +421,11 @@
<!-- <img src="./assets/img/png-images/8.png" alt=""> -->
<textarea
class=
"ti-form-input"
rows=
"4"
placeholder=
"Drop Your Question Here...."
></textarea>
</div>
<a
href=
"javascript:void(0);"
class=
"ti-btn m-0 ti-btn-soft-primary"
><i
class=
"ri ri-refresh-line"
></i>
<a
href=
"javascript:void(0);"
class=
"ti-btn m-0 ti-btn-soft-primary"
><i
class=
"ri ri-refresh-line"
></i>
ยินยัน
</a>
<a
href=
"javascript:void(0);"
class=
"ti-btn m-0 ti-btn-soft-success"
><i
class=
"ri ri-refresh-line"
></i>
<a
href=
"javascript:void(0);"
class=
"ti-btn m-0 ti-btn-soft-success"
><i
class=
"ri ri-refresh-line"
></i>
บันทึกร่าง
</a>
<a
href=
"javascript:void(0);"
class=
"ti-btn m-0 ti-btn-soft-secondary"
><i
class=
"ri ri-close-circle-line"
></i>
...
...
@@ -346,4 +439,7 @@
</div>
<!-- Start::main-content -->
</div>
</div>
</div>
</ng-template>
\ No newline at end of file
src/app/components/performance-evaluation/pms-form-employee/pms-form-employee.component.ts
View file @
caf318d4
import
{
ChangeDetectorRef
,
Component
,
EventEmitter
,
Input
,
Output
}
from
'@angular/core'
;
import
{
Router
}
from
'@angular/router'
;
import
{
TypeList
}
from
'src/app/shared/model/appraisal-subordinate.model'
;
import
{
CompetencyModel
}
from
'src/app/shared/model/competency.model'
;
import
{
EmployeeModel
,
MyEmployeeModel
}
from
'src/app/shared/model/employee.model'
;
import
{
AppraisalService
}
from
'src/app/shared/services/appraisal.service'
;
import
{
EmployeeService
}
from
'src/app/shared/services/employee.service'
;
@
Component
({
...
...
@@ -11,8 +13,6 @@ import { EmployeeService } from 'src/app/shared/services/employee.service';
})
export
class
PmsFormEmployeeComponent
{
@
Input
()
currentTap
=
""
@
Input
()
evaluationRoundId
=
""
@
Input
()
allCompetencyTypeId
:
TypeList
[]
=
[]
@
Input
()
evaluateeId
=
""
@
Input
()
evaluaterId
=
""
@
Input
()
evaluationForm
:
'self'
|
'sup'
=
"self"
...
...
@@ -38,15 +38,43 @@ export class PmsFormEmployeeComponent {
{
id
:
'5'
,
itemName
:
'Bootstrap'
},
];
compentency
:
{
loading
:
boolean
,
data
?:
CompetencyModel
,
dataList
:
CompetencyModel
[]
}
=
{
loading
:
false
,
data
:
undefined
,
dataList
:
[]
}
compentencyFormCompleted
=
false
currentDate
=
new
Date
()
constructor
(
private
router
:
Router
,
private
employeeService
:
EmployeeService
,
private
appraisalService
:
AppraisalService
,
private
cdr
:
ChangeDetectorRef
)
{
}
ngOnInit
()
{
this
.
getEvaluatee
()
this
.
getCompentencyAll
()
}
getCompentencyAll
()
{
this
.
compentency
.
loading
=
true
const
bossId
=
this
.
evaluaterId
!=
this
.
evaluateeId
?
this
.
evaluaterId
:
undefined
this
.
appraisalService
.
getCompentencyAll
(
this
.
evaluateeId
,
bossId
).
subscribe
({
next
:
response
=>
{
this
.
compentency
.
dataList
=
response
if
(
this
.
compentency
.
dataList
.
length
)
{
this
.
selectDataList
(
this
.
compentency
.
dataList
[
0
])
}
this
.
compentency
.
loading
=
false
this
.
cdr
.
detectChanges
()
},
error
:
error
=>
{
this
.
compentency
.
loading
=
false
this
.
cdr
.
detectChanges
()
}
})
}
selectDataList
(
data
:
CompetencyModel
)
{
this
.
compentency
.
data
=
data
}
getEvaluatee
()
{
...
...
@@ -65,16 +93,14 @@ export class PmsFormEmployeeComponent {
currentTapChange
()
{
if
(
this
.
allCompetencyTypeId
.
length
)
{
this
.
currentTap
=
this
.
allCompetencyTypeId
[
0
].
shortNam
e
||
''
if
(
this
.
compentency
.
data
?.
competency
.
length
)
{
this
.
currentTap
=
this
.
compentency
.
data
?.
competency
[
0
].
comTyp
e
||
''
}
}
onSelectFile1
(
event
:
any
)
{
if
(
event
.
target
&&
event
.
target
.
files
&&
event
.
target
.
files
[
0
])
{
const
reader
=
new
FileReader
();
reader
.
readAsDataURL
(
event
.
target
.
files
[
0
]);
// read file as data URL
reader
.
onload
=
(
event
:
any
)
=>
{
// called once readAsDataURL is completed
this
.
url1
=
event
.
target
.
result
;
...
...
@@ -85,9 +111,7 @@ export class PmsFormEmployeeComponent {
onSelectFile2
(
event
:
any
)
{
if
(
event
.
target
&&
event
.
target
.
files
&&
event
.
target
.
files
[
0
])
{
const
reader
=
new
FileReader
();
reader
.
readAsDataURL
(
event
.
target
.
files
[
0
]);
// read file as data URL
reader
.
onload
=
(
event
:
any
)
=>
{
// called once readAsDataURL is completed
this
.
url2
=
event
.
target
.
result
;
...
...
src/app/components/performance-evaluation/pms-form-employee/pms-idp/pms-idp.component.html
View file @
caf318d4
<ng-container
*
ngTemplateOutlet=
"idpEvaluation"
></ng-container>
<ng-template
#
idpEvaluation
>
<ng-container
*
ngIf=
"
formIdp.data
"
>
<ng-container
*
ngIf=
"
appraisalIdp
"
>
<div
class=
"pb-2rem px-2rem"
>
<div
class=
"font-size-18px font-weight-700 text-primary"
>
แผนพัฒนาบุคคลากรรายบุคคล
...
...
@@ -27,13 +27,13 @@
<span>
ชื่อ-สกุล
</span>
</div>
<div
class=
"col-span-1 p-2 border pb-4"
>
<span>
{{
formIdp.data
.apsassessy.thFullName || ""}}
</span>
<span>
{{
appraisalIdp
.apsassessy.thFullName || ""}}
</span>
</div>
<div
class=
"col-span-1 p-2 border pb-4"
>
<span>
ตำแหน่ง
</span>
</div>
<div
class=
"col-span-1 p-2 border pb-4"
>
<span>
{{
formIdp.data
.apsassessy.position.tdesc || ""}}
</span>
<span>
{{
appraisalIdp
.apsassessy.position.tdesc || ""}}
</span>
</div>
</div>
<div
class=
"col-span-3 grid grid-cols-4"
>
...
...
@@ -41,13 +41,13 @@
<span>
ชื่อ-สกุล
</span>
</div>
<div
class=
"col-span-1 p-2 border pb-4"
>
<span>
{{
formIdp.data
.boss.thFullName || ""}}
</span>
<span>
{{
appraisalIdp
.boss.thFullName || ""}}
</span>
</div>
<div
class=
"col-span-1 p-2 border pb-4"
>
<span>
ตำแหน่ง
</span>
</div>
<div
class=
"col-span-1 p-2 border pb-4"
>
<span>
{{
formIdp.data
.boss.position.tdesc || ""}}
</span>
<span>
{{
appraisalIdp
.boss.position.tdesc || ""}}
</span>
</div>
</div>
</div>
...
...
@@ -57,13 +57,13 @@
<span>
งาน
</span>
</div>
<div
class=
"col-span-1 p-2 border pb-4"
>
<span>
{{
formIdp.data
.apsassessy.job.tdesc || ""}}
</span>
<span>
{{
appraisalIdp
.apsassessy.job.tdesc || ""}}
</span>
</div>
<div
class=
"col-span-1 p-2 border pb-4"
>
<span>
ฝ่าย
</span>
</div>
<div
class=
"col-span-1 p-2 border pb-4"
>
<span>
{{
formIdp.data
.apsassessy.bu1.tdesc || ""}}
</span>
<span>
{{
appraisalIdp
.apsassessy.bu1.tdesc || ""}}
</span>
</div>
</div>
<div
class=
"col-span-3 grid grid-cols-4"
>
...
...
@@ -71,13 +71,13 @@
<span>
งาน
</span>
</div>
<div
class=
"col-span-1 p-2 border pb-4"
>
<span>
{{
formIdp.data
.boss.job.tdesc || ""}}
</span>
<span>
{{
appraisalIdp
.boss.job.tdesc || ""}}
</span>
</div>
<div
class=
"col-span-1 p-2 border pb-4"
>
<span>
ฝ่าย
</span>
</div>
<div
class=
"col-span-1 p-2 border pb-4"
>
<span>
{{
formIdp.data
.boss.bu1.tdesc || ""}}
</span>
<span>
{{
appraisalIdp
.boss.bu1.tdesc || ""}}
</span>
</div>
</div>
</div>
...
...
@@ -171,15 +171,15 @@
</th>
</tr>
</thead>
<tbody
*
ngIf=
"!
formIdp.data
.competencyIndicatorsCourses1.length"
>
<tbody
*
ngIf=
"!
appraisalIdp
.competencyIndicatorsCourses1.length"
>
<tr
class=
"hover:table-hover2-hover"
>
<td
class=
"text-center"
colspan=
"100%"
>
ไม่พบข้อมูล
</td>
</tr>
</tbody>
<tbody
*
ngIf=
"
formIdp.data
.competencyIndicatorsCourses1.length"
>
<ng-container
*
ngFor=
" let data of
formIdp.data
.competencyIndicatorsCourses1;let i = index"
>
<tbody
*
ngIf=
"
appraisalIdp
.competencyIndicatorsCourses1.length"
>
<ng-container
*
ngFor=
" let data of
appraisalIdp
.competencyIndicatorsCourses1;let i = index"
>
<tr
(
mouseenter
)="
hoveredCode =
data.indicatorsCourses0.competencyTopic.competencyTopicId"
(
mouseleave
)="
hoveredCode =
null"
[
ngClass
]="{
'
table-hover2
'
:
data
.
indicatorsCourses0
.
competencyTopic
.
competencyTopicId =
==
hoveredCode
}"
>
...
...
@@ -215,7 +215,7 @@
</td>
<td
class=
"!p-0"
></td>
<td
class=
"align-start text-center"
[
class
.
bg-table-gray
]="
canEdit
?(!
data
.
idpDevelopmentPlan
?.
training
||(
formIdp
.
data
.
masfromEvaluationIdp
.
idpStatus
!='
1
'
&&
!
data
.
competencyCourse
))
:
!
data
.
competencyCourse
"
>
[
class
.
bg-table-gray
]="
canEdit
?(!
data
.
idpDevelopmentPlan
.
training
||(
appraisalIdp
.
masfromEvaluationIdp
.
idpStatus
!='
1
'
&&
!
data
.
competencyCourse
))
:
!
data
.
competencyCourse
"
>
<ng-container
*
ngIf=
"data.idpDevelopmentPlan&&data.idpDevelopmentPlan.training"
>
<div
class=
"flex !items-center"
*
ngFor=
"let competencyCourse of data.competencyCourse"
...
...
@@ -226,20 +226,20 @@
</ng-container>
</td>
<td
class=
"align-start text-center !white-space-normal"
[
class
.
bg-table-gray
]="
canEdit
?(!
data
.
idpDevelopmentPlan
?.
training
||(
formIdp
.
data
.
masfromEvaluationIdp
.
idpStatus
!='
1
'
&&
!
data
.
competencyCourse
))
:
!
data
.
competencyCourse
"
>
[
class
.
bg-table-gray
]="
canEdit
?(!
data
.
idpDevelopmentPlan
.
training
||(
appraisalIdp
.
masfromEvaluationIdp
.
idpStatus
!='
1
'
&&
!
data
.
competencyCourse
))
:
!
data
.
competencyCourse
"
>
<ng-container
*
ngIf=
"data.idpDevelopmentPlan&&data.idpDevelopmentPlan.training"
>
<ng-container
*
ngFor=
"let competencyCourse of data.competencyCourse;let l = index;let last=last"
>
<div
class=
"flex !items-center"
style=
"min-height: 100px;"
>
{{competencyCourse.tdesc}}
<span
class=
"ciricon border cursor-pointer"
*
ngIf=
"canEdit&&
formIdp.data
.masfromEvaluationIdp.idpStatus=='1'"
*
ngIf=
"canEdit&&
appraisalIdp
.masfromEvaluationIdp.idpStatus=='1'"
(
click
)="
deleteCompetencyCourse
(
i
,
l
)"
>
<i
class=
"ri-close-line text-red-500"
></i>
</span>
</div>
<button
*
ngIf=
"last&&canEdit&&
formIdp.data
.masfromEvaluationIdp.idpStatus=='1'"
*
ngIf=
"last&&canEdit&&
appraisalIdp
.masfromEvaluationIdp.idpStatus=='1'"
type=
"button"
class=
"ti-btn ti-btn-soft-secondary h-45px m-0 shadow-md"
(
click
)="
openCompetencycourseDialog
(
i
)
"
>
<i
class=
"ri-add-line"
></i>
...
...
@@ -248,7 +248,7 @@
</ng-container>
</ng-container>
<ng-container
*
ngIf=
"canEdit&&!data.competencyCourse?.length&&
formIdp.data.masfromEvaluationIdp.idpStatus=='1'&&data.idpDevelopmentPlan?
.training"
>
*
ngIf=
"canEdit&&!data.competencyCourse?.length&&
appraisalIdp.masfromEvaluationIdp.idpStatus=='1'&&data.idpDevelopmentPlan
.training"
>
<button
type=
"button"
class=
"ti-btn ti-btn-soft-secondary h-45px m-0 shadow-md"
(
click
)="
openCompetencycourseDialog
(
i
)
"
>
<i
class=
"ri-add-line"
></i>
...
...
@@ -258,17 +258,17 @@
</td>
<td
class=
"!p-0"
></td>
<td
class=
"align-start text-center !white-space-normal"
[
class
.
bg-table-gray
]="!
formIdp
.
data
.
masfromEvaluationRound
.
apsPeriodStart
&&!
formIdp
.
data
.
masfromEvaluationRound
.
apsPeriodEnd
"
>
[
class
.
bg-table-gray
]="!
appraisalIdp
.
masfromEvaluationRound
.
apsPeriodStart
&&!
appraisalIdp
.
masfromEvaluationRound
.
apsPeriodEnd
"
>
<ng-container
*
ngIf=
"
formIdp.data.masfromEvaluationRound.apsPeriodStart &&formIdp.data
.masfromEvaluationRound.apsPeriodEnd"
>
*
ngIf=
"
appraisalIdp.masfromEvaluationRound.apsPeriodStart &&appraisalIdp
.masfromEvaluationRound.apsPeriodEnd"
>
จาก
</ng-container>
{{convertDateFormat(
formIdp.data
.masfromEvaluationRound.apsPeriodStart)}}
{{convertDateFormat(
appraisalIdp
.masfromEvaluationRound.apsPeriodStart)}}
<ng-container
*
ngIf=
"
formIdp.data.masfromEvaluationRound.apsPeriodStart &&formIdp.data
.masfromEvaluationRound.apsPeriodEnd"
>
*
ngIf=
"
appraisalIdp.masfromEvaluationRound.apsPeriodStart &&appraisalIdp
.masfromEvaluationRound.apsPeriodEnd"
>
ถึง
</ng-container>
{{convertDateFormat(
formIdp.data
.masfromEvaluationRound.apsPeriodEnd)}}
{{convertDateFormat(
appraisalIdp
.masfromEvaluationRound.apsPeriodEnd)}}
</td>
</tr>
</ng-container>
...
...
@@ -283,13 +283,13 @@
<div
class=
"grid col-span-1 grid-cols-6 gap-2"
>
<div
class=
"col-span-1"
>
<input
type=
"checkbox"
class=
"ti-form-checkbox"
id=
"idpStatus-0"
(
click
)="
resetFormIdp
()"
[
class
.
pointer-events-none
]="
formIdp
.
data
.
masfromEvaluationIdp
.
idpStatus=
='0'||!canEdit
||
formIdp
.
data
.
checkStep
!='
1
'"
name=
"idpStatus"
(
change
)="
formIdp
.
data
.
masfromEvaluationIdp
.
idpStatus=
'0'
"
[
checked
]="
formIdp
.
data
.
masfromEvaluationIdp
.
idpStatus=
='0'"
>
[
class
.
pointer-events-none
]="
appraisalIdp
.
masfromEvaluationIdp
.
idpStatus=
='0'||!canEdit
||
appraisalIdp
.
checkStep
!='
1
'"
name=
"idpStatus"
(
change
)="
appraisalIdp
.
masfromEvaluationIdp
.
idpStatus=
'0'
"
[
checked
]="
appraisalIdp
.
masfromEvaluationIdp
.
idpStatus=
='0'"
>
</div>
<div
class=
"col-span-5"
>
<label
for=
"idpStatus-0"
class=
"text-sm text-gray-500"
[
class
.
pointer-events-none
]="
formIdp
.
data
.
masfromEvaluationIdp
.
idpStatus=
='0'||!canEdit
||
formIdp
.
data
.
checkStep
!='
1
'"
>
[
class
.
pointer-events-none
]="
appraisalIdp
.
masfromEvaluationIdp
.
idpStatus=
='0'||!canEdit
||
appraisalIdp
.
checkStep
!='
1
'"
>
IDP มาตรฐาน
</label>
</div>
...
...
@@ -297,13 +297,13 @@
<div
class=
"grid col-span-1 grid-cols-6 gap-2"
>
<div
class=
"col-span-1"
>
<input
type=
"checkbox"
class=
"ti-form-checkbox"
id=
"idpStatus-1"
[
class
.
pointer-events-none
]="
formIdp
.
data
.
masfromEvaluationIdp
.
idpStatus=
='1'||!canEdit
||
formIdp
.
data
.
checkStep
!='
1
'"
name=
"idpStatus"
(
change
)="
formIdp
.
data
.
masfromEvaluationIdp
.
idpStatus=
'1'
"
[
checked
]="
formIdp
.
data
.
masfromEvaluationIdp
.
idpStatus=
='1'"
>
[
class
.
pointer-events-none
]="
appraisalIdp
.
masfromEvaluationIdp
.
idpStatus=
='1'||!canEdit
||
appraisalIdp
.
checkStep
!='
1
'"
name=
"idpStatus"
(
change
)="
appraisalIdp
.
masfromEvaluationIdp
.
idpStatus=
'1'
"
[
checked
]="
appraisalIdp
.
masfromEvaluationIdp
.
idpStatus=
='1'"
>
</div>
<div
class=
"col-span-5"
>
<label
for=
"idpStatus-1"
class=
"text-sm text-gray-500"
[
class
.
pointer-events-none
]="
formIdp
.
data
.
masfromEvaluationIdp
.
idpStatus=
='1'||!canEdit
||
formIdp
.
data
.
checkStep
!='
1
'"
>
[
class
.
pointer-events-none
]="
appraisalIdp
.
masfromEvaluationIdp
.
idpStatus=
='1'||!canEdit
||
appraisalIdp
.
checkStep
!='
1
'"
>
IDP ปรับแก้ไข
</label>
</div>
...
...
@@ -314,123 +314,123 @@
<div
class=
"py-1rem px-2rem"
>
<div
class=
"py-2 grid grid-cols-7 gap-3"
>
<div
class=
"col-span-1"
>
{{
formIdp.data
.apsapprove2.employeeId?'ผู้ประเมิน1':'ผู้อนุมัติ'}}
{{
appraisalIdp
.apsapprove2.employeeId?'ผู้ประเมิน1':'ผู้อนุมัติ'}}
</div>
<div
class=
"col-span-1"
>
{{
formIdp.data
.apsapprove1.thFullName}}
</div>
{{
appraisalIdp
.apsapprove1.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 pointer-events-none"
[
checked
]="
formIdp
.
data
.
masfromEvaluationIdp
.
apsapprove1Status=
='2'"
>
[
checked
]="
appraisalIdp
.
masfromEvaluationIdp
.
apsapprove1Status=
='2'"
>
<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"
placeholder=
"ใส่ Comment ที่นี่"
[
class
.!
bg-input-readonly
]="!
formIdp
.
data
||
formIdp
.
data
.
currentStep
!='
1
'||!
canSave
"
[
readonly
]="!
formIdp
.
data
||
formIdp
.
data
.
currentStep
!='
1
'||!
canSave
"
[(
ngModel
)]="
formIdp
.
data
.
masfromEvaluationIdp
.
apsapprove1Comment
"
></textarea>
[
class
.!
bg-input-readonly
]="!
appraisalIdp
||
appraisalIdp
.
currentStep
!='
1
'||!
canSave
"
[
readonly
]="!
appraisalIdp
||
appraisalIdp
.
currentStep
!='
1
'||!
canSave
"
[(
ngModel
)]="
appraisalIdp
.
masfromEvaluationIdp
.
apsapprove1Comment
"
></textarea>
<span
class=
"pt-2"
>
วันที่ :
{{convertDate(
formIdp.data
.masfromEvaluationIdp.apsapprove1Date)}}
{{convertDate(
appraisalIdp
.masfromEvaluationIdp.apsapprove1Date)}}
</span>
</div>
</div>
<div
class=
"py-2 grid grid-cols-7 gap-3"
*
ngIf=
"
formIdp.data
.apsapprove2.employeeId"
>
<div
class=
"py-2 grid grid-cols-7 gap-3"
*
ngIf=
"
appraisalIdp
.apsapprove2.employeeId"
>
<div
class=
"col-span-1"
>
{{
formIdp.data
.apsapprove3.employeeId?'ผู้ประเมิน2':'ผู้อนุมัติ'}}
{{
appraisalIdp
.apsapprove3.employeeId?'ผู้ประเมิน2':'ผู้อนุมัติ'}}
</div>
<div
class=
"col-span-1"
>
{{
formIdp.data
.apsapprove2.thFullName}}
</div>
{{
appraisalIdp
.apsapprove2.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 pointer-events-none"
[
checked
]="
formIdp
.
data
.
masfromEvaluationIdp
.
apsapprove2Status=
='2'"
>
[
checked
]="
appraisalIdp
.
masfromEvaluationIdp
.
apsapprove2Status=
='2'"
>
<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"
placeholder=
"ใส่ Comment ที่นี่"
[
class
.!
bg-input-readonly
]="!
formIdp
.
data
||
formIdp
.
data
.
currentStep
!='
2
'||!
canSave
"
[
readonly
]="!
formIdp
.
data
||
formIdp
.
data
.
currentStep
!='
2
'||!
canSave
"
[(
ngModel
)]="
formIdp
.
data
.
masfromEvaluationIdp
.
apsapprove2Comment
"
></textarea>
[
class
.!
bg-input-readonly
]="!
appraisalIdp
||
appraisalIdp
.
currentStep
!='
2
'||!
canSave
"
[
readonly
]="!
appraisalIdp
||
appraisalIdp
.
currentStep
!='
2
'||!
canSave
"
[(
ngModel
)]="
appraisalIdp
.
masfromEvaluationIdp
.
apsapprove2Comment
"
></textarea>
<span
class=
"pt-2"
>
วันที่ :
{{convertDate(
formIdp.data
.masfromEvaluationIdp.apsapprove2Date)}}
{{convertDate(
appraisalIdp
.masfromEvaluationIdp.apsapprove2Date)}}
</span>
</div>
</div>
<div
class=
"py-2 grid grid-cols-7 gap-3"
*
ngIf=
"
formIdp.data
.apsapprove3.employeeId"
>
<div
class=
"py-2 grid grid-cols-7 gap-3"
*
ngIf=
"
appraisalIdp
.apsapprove3.employeeId"
>
<div
class=
"col-span-1"
>
{{
formIdp.data
.apsapprove4.employeeId?'ผู้ประเมิน3':'ผู้อนุมัติ'}}
{{
appraisalIdp
.apsapprove4.employeeId?'ผู้ประเมิน3':'ผู้อนุมัติ'}}
</div>
<div
class=
"col-span-1"
>
{{
formIdp.data
.apsapprove3.thFullName}}
</div>
{{
appraisalIdp
.apsapprove3.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 pointer-events-none"
[
checked
]="
formIdp
.
data
.
masfromEvaluationIdp
.
apsapprove3Status=
='2'"
>
[
checked
]="
appraisalIdp
.
masfromEvaluationIdp
.
apsapprove3Status=
='2'"
>
<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"
placeholder=
"ใส่ Comment ที่นี่"
[
class
.!
bg-input-readonly
]="!
formIdp
.
data
||
formIdp
.
data
.
currentStep
!='
3
'||!
canSave
"
[
readonly
]="!
formIdp
.
data
||
formIdp
.
data
.
currentStep
!='
3
'||!
canSave
"
[(
ngModel
)]="
formIdp
.
data
.
masfromEvaluationIdp
.
apsapprove3Comment
"
></textarea>
[
class
.!
bg-input-readonly
]="!
appraisalIdp
||
appraisalIdp
.
currentStep
!='
3
'||!
canSave
"
[
readonly
]="!
appraisalIdp
||
appraisalIdp
.
currentStep
!='
3
'||!
canSave
"
[(
ngModel
)]="
appraisalIdp
.
masfromEvaluationIdp
.
apsapprove3Comment
"
></textarea>
<span
class=
"pt-2"
>
วันที่ :
{{convertDate(
formIdp.data
.masfromEvaluationIdp.apsapprove3Date)}}
{{convertDate(
appraisalIdp
.masfromEvaluationIdp.apsapprove3Date)}}
</span>
</div>
</div>
<div
class=
"py-2 grid grid-cols-7 gap-3"
*
ngIf=
"
formIdp.data
.apsapprove4.employeeId"
>
<div
class=
"py-2 grid grid-cols-7 gap-3"
*
ngIf=
"
appraisalIdp
.apsapprove4.employeeId"
>
<div
class=
"col-span-1"
>
{{
formIdp.data
.apsapprove5.employeeId?'ผู้ประเมิน4':'ผู้อนุมัติ'}}
{{
appraisalIdp
.apsapprove5.employeeId?'ผู้ประเมิน4':'ผู้อนุมัติ'}}
</div>
<div
class=
"col-span-1"
>
{{
formIdp.data
.apsapprove4.thFullName}}
</div>
{{
appraisalIdp
.apsapprove4.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 pointer-events-none"
[
checked
]="
formIdp
.
data
.
masfromEvaluationIdp
.
apsapprove4Status=
='2'"
>
[
checked
]="
appraisalIdp
.
masfromEvaluationIdp
.
apsapprove4Status=
='2'"
>
<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"
placeholder=
"ใส่ Comment ที่นี่"
[
class
.!
bg-input-readonly
]="!
formIdp
.
data
||
formIdp
.
data
.
currentStep
!='
4
'||!
canSave
"
[
readonly
]="!
formIdp
.
data
||
formIdp
.
data
.
currentStep
!='
4
'||!
canSave
"
[(
ngModel
)]="
formIdp
.
data
.
masfromEvaluationIdp
.
apsapprove4Comment
"
></textarea>
[
class
.!
bg-input-readonly
]="!
appraisalIdp
||
appraisalIdp
.
currentStep
!='
4
'||!
canSave
"
[
readonly
]="!
appraisalIdp
||
appraisalIdp
.
currentStep
!='
4
'||!
canSave
"
[(
ngModel
)]="
appraisalIdp
.
masfromEvaluationIdp
.
apsapprove4Comment
"
></textarea>
<span
class=
"pt-2"
>
วันที่ :
{{convertDate(
formIdp.data
.masfromEvaluationIdp.apsapprove4Date)}}
{{convertDate(
appraisalIdp
.masfromEvaluationIdp.apsapprove4Date)}}
</span>
</div>
</div>
<div
class=
"py-2 grid grid-cols-7 gap-3"
*
ngIf=
"
formIdp.data
.apsapprove5.employeeId"
>
<div
class=
"py-2 grid grid-cols-7 gap-3"
*
ngIf=
"
appraisalIdp
.apsapprove5.employeeId"
>
<div
class=
"col-span-1"
>
ผู้อนุมัติ
</div>
<div
class=
"col-span-1"
>
{{
formIdp.data
.apsapprove5.thFullName}}
</div>
{{
appraisalIdp
.apsapprove5.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 pointer-events-none"
[
checked
]="
formIdp
.
data
.
masfromEvaluationIdp
.
apsapprove5Status=
='2'"
>
[
checked
]="
appraisalIdp
.
masfromEvaluationIdp
.
apsapprove5Status=
='2'"
>
<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"
placeholder=
"ใส่ Comment ที่นี่"
[
class
.!
bg-input-readonly
]="!
formIdp
.
data
||
formIdp
.
data
.
currentStep
!='
5
'||!
canSave
"
[
readonly
]="!
formIdp
.
data
||
formIdp
.
data
.
currentStep
!='
5
'||!
canSave
"
[(
ngModel
)]="
formIdp
.
data
.
masfromEvaluationIdp
.
apsapprove5Comment
"
></textarea>
[
class
.!
bg-input-readonly
]="!
appraisalIdp
||
appraisalIdp
.
currentStep
!='
5
'||!
canSave
"
[
readonly
]="!
appraisalIdp
||
appraisalIdp
.
currentStep
!='
5
'||!
canSave
"
[(
ngModel
)]="
appraisalIdp
.
masfromEvaluationIdp
.
apsapprove5Comment
"
></textarea>
<span
class=
"pt-2"
>
วันที่ :
{{convertDate(
formIdp.data
.masfromEvaluationIdp.apsapprove5Date)}}
{{convertDate(
appraisalIdp
.masfromEvaluationIdp.apsapprove5Date)}}
</span>
</div>
</div>
</div>
<div
class=
"flex justify-center mb-1rem pb-2rem"
*
ngIf=
"canSave"
>
<button
*
ngIf=
"
formIdp.data.checkStep!='0'&&formIdp.data
.checkStep!='1'"
type=
"submit"
<button
*
ngIf=
"
appraisalIdp.checkStep!='0'&&appraisalIdp
.checkStep!='1'"
type=
"submit"
class=
"ti-btn ti-btn-danger mx-2rem"
(
click
)="
save
('
noApprove
')"
>
ไม่อนุมัติ
</button>
...
...
@@ -438,10 +438,10 @@
บันทึกร่าง
</button>
<button
type=
"submit"
class=
"ti-btn ti-btn-secondary mx-2rem"
(
click
)="
save
('
approve
')"
>
<ng-container
*
ngIf=
"
formIdp.data
.checkStep=='0'"
>
<ng-container
*
ngIf=
"
appraisalIdp
.checkStep=='0'"
>
ยืนยันข้อมูล
</ng-container>
<ng-container
*
ngIf=
"
formIdp.data
.checkStep!='0'"
>
<ng-container
*
ngIf=
"
appraisalIdp
.checkStep!='0'"
>
อนุมัติ
</ng-container>
</button>
...
...
src/app/components/performance-evaluation/pms-form-employee/pms-idp/pms-idp.component.ts
View file @
caf318d4
import
{
ChangeDetectorRef
,
Component
,
EventEmitter
,
Input
,
Output
,
ViewChild
}
from
'@angular/core'
;
import
{
MatDialog
}
from
'@angular/material/dialog'
;
import
{
Idp
}
from
'src/app/shared/model/competency.model'
;
import
{
CompetencycourseMiniModel
,
MyCompetencycourseMiniModel
}
from
'src/app/shared/model/competencycourse-mini.model'
;
import
{
IdpFormModel
}
from
'src/app/shared/model/idp-form.model'
;
import
{
CompetencycourseService
}
from
'src/app/shared/services/competencycourse.service'
;
...
...
@@ -26,7 +27,7 @@ export class PmsIdpComponent {
@
Output
()
sendReturnPath
:
EventEmitter
<
any
>
=
new
EventEmitter
<
any
>
();
currentDate
=
new
Date
()
hoveredCode
:
string
|
null
=
null
;
formIdp
:
{
loading
:
boolean
,
data
?:
IdpFormModel
}
=
{
loading
:
false
,
data
:
undefined
}
@
Input
()
appraisalIdp
?:
Idp
originalformIdp
?:
IdpFormModel
canEdit
=
false
canSave
=
false
...
...
@@ -76,19 +77,19 @@ export class PmsIdpComponent {
}
addCompetencycourse
(
data
:
CompetencycourseMiniModel
)
{
if
(
this
.
formIdp
.
data
)
{
if
(
this
.
formIdp
.
data
.
competencyIndicatorsCourses1
[
this
.
competencycourseIndex
].
competencyCourse
)
{
this
.
formIdp
.
data
.
competencyIndicatorsCourses1
[
this
.
competencycourseIndex
].
competencyCourse
.
push
(
new
MyCompetencycourseMiniModel
(
data
))
if
(
this
.
appraisalIdp
)
{
if
(
this
.
appraisalIdp
.
competencyIndicatorsCourses1
[
this
.
competencycourseIndex
].
competencyCourse
)
{
this
.
appraisalIdp
.
competencyIndicatorsCourses1
[
this
.
competencycourseIndex
].
competencyCourse
.
push
(
new
MyCompetencycourseMiniModel
(
data
))
}
else
{
this
.
formIdp
.
data
.
competencyIndicatorsCourses1
[
this
.
competencycourseIndex
][
'competencyCourse'
]
=
[
new
MyCompetencycourseMiniModel
(
data
)]
this
.
appraisalIdp
.
competencyIndicatorsCourses1
[
this
.
competencycourseIndex
][
'competencyCourse'
]
=
[
new
MyCompetencycourseMiniModel
(
data
)]
}
this
.
cdr
.
detectChanges
()
}
}
deleteCompetencyCourse
(
index
:
number
,
removeIndex
:
number
)
{
if
(
this
.
formIdp
.
data
)
{
this
.
formIdp
.
data
.
competencyIndicatorsCourses1
[
index
].
competencyCourse
.
splice
(
removeIndex
,
1
)
if
(
this
.
appraisalIdp
)
{
this
.
appraisalIdp
.
competencyIndicatorsCourses1
[
index
].
competencyCourse
.
splice
(
removeIndex
,
1
)
}
}
onCompetencycourseSearch
()
{
...
...
@@ -101,68 +102,57 @@ export class PmsIdpComponent {
x
.
edesc
.
toLowerCase
().
includes
(
this
.
competencycourseTable
.
search
.
toLowerCase
()))
}
resetFormIdp
()
{
if
(
this
.
originalformIdp
&&
this
.
formIdp
.
data
)
{
this
.
formIdp
.
data
.
competencyIndicatorsCourses1
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
originalformIdp
.
competencyIndicatorsCourses1
))
if
(
this
.
originalformIdp
&&
this
.
appraisalIdp
)
{
this
.
appraisalIdp
.
competencyIndicatorsCourses1
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
originalformIdp
.
competencyIndicatorsCourses1
))
}
}
getFormIdp
()
{
this
.
formIdp
.
loading
=
true
this
.
evaluationIdpService
.
getFormIdp
(
this
.
evaluationRoundId
,
this
.
evaluateeId
).
subscribe
({
next
:
response
=>
{
this
.
formIdp
.
data
=
JSON
.
parse
(
JSON
.
stringify
(
response
))
this
.
originalformIdp
=
JSON
.
parse
(
JSON
.
stringify
(
response
))
if
(
this
.
formIdp
.
data
)
{
this
.
canSave
=
(
this
.
formIdp
.
data
.
currentStep
==
this
.
formIdp
.
data
.
checkStep
)
&&
(
this
.
formIdp
.
data
.
masfromStatusType
.
code
!=
'Boss_finish'
&&
this
.
formIdp
.
data
.
masfromStatusType
.
code
!=
'Not_evaluating_yet'
)
this
.
canEdit
=
(
this
.
formIdp
.
data
.
currentStep
==
this
.
formIdp
.
data
.
checkStep
&&
(
+
(
this
.
formIdp
.
data
.
checkStep
)
<=
1
))
&&
(
this
.
formIdp
.
data
.
masfromStatusType
.
code
!=
'Boss_finish'
&&
this
.
formIdp
.
data
.
masfromStatusType
.
code
!=
'Not_evaluating_yet'
)
if
(
this
.
appraisalIdp
)
{
this
.
canSave
=
(
this
.
appraisalIdp
.
currentStep
==
this
.
appraisalIdp
.
checkStep
)
&&
(
this
.
appraisalIdp
.
masfromStatusType
.
code
!=
'Boss_finish'
&&
this
.
appraisalIdp
.
masfromStatusType
.
code
!=
'Not_evaluating_yet'
)
this
.
canEdit
=
(
this
.
appraisalIdp
.
currentStep
==
this
.
appraisalIdp
.
checkStep
&&
(
+
(
this
.
appraisalIdp
.
checkStep
)
<=
1
))
&&
(
this
.
appraisalIdp
.
masfromStatusType
.
code
!=
'Boss_finish'
&&
this
.
appraisalIdp
.
masfromStatusType
.
code
!=
'Not_evaluating_yet'
)
}
switch
(
this
.
formIdp
.
data
?.
currentStep
)
{
switch
(
this
.
appraisalIdp
?.
currentStep
)
{
case
(
"0"
):
{
if
(
this
.
canEdit
)
{
this
.
formIdp
.
data
.
masfromEvaluationIdp
.
apsassessyDate
=
this
.
currentDate
.
toISOString
().
split
(
'T'
)[
0
];
this
.
appraisalIdp
.
masfromEvaluationIdp
.
apsassessyDate
=
this
.
currentDate
.
toISOString
().
split
(
'T'
)[
0
];
}
break
}
case
(
"1"
):
{
if
(
this
.
canEdit
)
{
this
.
formIdp
.
data
.
masfromEvaluationIdp
.
apsapprove1Date
=
this
.
currentDate
.
toISOString
().
split
(
'T'
)[
0
];
this
.
appraisalIdp
.
masfromEvaluationIdp
.
apsapprove1Date
=
this
.
currentDate
.
toISOString
().
split
(
'T'
)[
0
];
}
break
}
case
(
"2"
):
{
if
(
this
.
canEdit
)
{
this
.
formIdp
.
data
.
masfromEvaluationIdp
.
apsapprove2Date
=
this
.
currentDate
.
toISOString
().
split
(
'T'
)[
0
];
this
.
appraisalIdp
.
masfromEvaluationIdp
.
apsapprove2Date
=
this
.
currentDate
.
toISOString
().
split
(
'T'
)[
0
];
}
break
}
case
(
"3"
):
{
if
(
this
.
canEdit
)
{
this
.
formIdp
.
data
.
masfromEvaluationIdp
.
apsapprove3Date
=
this
.
currentDate
.
toISOString
().
split
(
'T'
)[
0
];
this
.
appraisalIdp
.
masfromEvaluationIdp
.
apsapprove3Date
=
this
.
currentDate
.
toISOString
().
split
(
'T'
)[
0
];
}
break
}
case
(
"4"
):
{
if
(
this
.
canEdit
)
{
this
.
formIdp
.
data
.
masfromEvaluationIdp
.
apsapprove4Date
=
this
.
currentDate
.
toISOString
().
split
(
'T'
)[
0
];
this
.
appraisalIdp
.
masfromEvaluationIdp
.
apsapprove4Date
=
this
.
currentDate
.
toISOString
().
split
(
'T'
)[
0
];
}
break
}
case
(
"5"
):
{
if
(
this
.
canEdit
)
{
this
.
formIdp
.
data
.
masfromEvaluationIdp
.
apsapprove5Date
=
this
.
currentDate
.
toISOString
().
split
(
'T'
)[
0
];
this
.
appraisalIdp
.
masfromEvaluationIdp
.
apsapprove5Date
=
this
.
currentDate
.
toISOString
().
split
(
'T'
)[
0
];
}
break
}
default
:
{
return
}
}
this
.
formIdp
.
data
.
masfromEvaluationIdp
.
idpStatus
=
this
.
formIdp
.
data
.
masfromEvaluationIdp
.
idpStatus
?
this
.
formIdp
.
data
.
masfromEvaluationIdp
.
idpStatus
:
'0'
this
.
formIdp
.
loading
=
false
this
.
cdr
.
detectChanges
()
},
error
:
error
=>
{
this
.
formIdp
.
loading
=
false
this
.
appraisalIdp
.
masfromEvaluationIdp
.
idpStatus
=
this
.
appraisalIdp
.
masfromEvaluationIdp
.
idpStatus
?
this
.
appraisalIdp
.
masfromEvaluationIdp
.
idpStatus
:
'0'
this
.
cdr
.
detectChanges
()
}
})
}
returnPath
()
{
this
.
sendReturnPath
.
emit
()
}
...
...
@@ -196,7 +186,7 @@ export class PmsIdpComponent {
approveStatus
=
'1'
}
else
if
(
status
==
'approve'
)
{
approveStatus
=
'2'
if
(
this
.
formIdp
?.
data
?.
checkStep
==
'0'
)
{
if
(
this
.
appraisalIdp
?.
checkStep
==
'0'
)
{
title
=
'ยืนยันข้อมูล'
text
=
'คุณต้องการยืนยันข้อมูลการประเมินนี้ใช่หรือไม่'
confirmButtonText
=
'ยืนยันการบันทึก'
...
...
@@ -241,7 +231,7 @@ export class PmsIdpComponent {
cancelButton
:
'!swal2-button-bg-gray'
,
},
}).
then
((
result
)
=>
{
if
(
result
.
isConfirmed
&&
this
.
form
Idp
)
{
if
(
result
.
isConfirmed
&&
this
.
appraisal
Idp
)
{
this
.
saveApi
(
approveStatus
)
}
else
if
(
result
.
dismiss
===
Swal
.
DismissReason
.
cancel
)
{
Swal
.
fire
({
...
...
@@ -257,12 +247,12 @@ export class PmsIdpComponent {
}
saveApi
(
approveStatus
:
string
)
{
let
body
=
this
.
formIdp
.
data
switch
(
this
.
formIdp
.
data
?.
currentStep
)
{
let
body
=
this
.
appraisalIdp
switch
(
this
.
appraisalIdp
?.
currentStep
)
{
case
(
"0"
):
{
body
=
{
...
this
.
formIdp
.
data
,
masfromEvaluationIdp
:
{
...
this
.
formIdp
.
data
.
masfromEvaluationIdp
,
...
this
.
appraisalIdp
,
masfromEvaluationIdp
:
{
...
this
.
appraisalIdp
.
masfromEvaluationIdp
,
apsassessyStatus
:
approveStatus
}
}
...
...
@@ -270,8 +260,8 @@ export class PmsIdpComponent {
}
case
(
"1"
):
{
body
=
{
...
this
.
formIdp
.
data
,
masfromEvaluationIdp
:
{
...
this
.
formIdp
.
data
.
masfromEvaluationIdp
,
...
this
.
appraisalIdp
,
masfromEvaluationIdp
:
{
...
this
.
appraisalIdp
.
masfromEvaluationIdp
,
apsapprove1Status
:
approveStatus
}
}
...
...
@@ -279,9 +269,9 @@ export class PmsIdpComponent {
}
case
(
"2"
):
{
body
=
{
...
this
.
formIdp
.
data
,
masfromEvaluationIdp
:
{
...
this
.
formIdp
.
data
.
masfromEvaluationIdp
,
apsapprove1Status
:
approveStatus
==
'0'
?
approveStatus
:
this
.
formIdp
.
data
.
masfromEvaluationIdp
.
apsapprove1Status
,
...
this
.
appraisalIdp
,
masfromEvaluationIdp
:
{
...
this
.
appraisalIdp
.
masfromEvaluationIdp
,
apsapprove1Status
:
approveStatus
==
'0'
?
approveStatus
:
this
.
appraisalIdp
.
masfromEvaluationIdp
.
apsapprove1Status
,
apsapprove2Status
:
approveStatus
}
}
...
...
@@ -289,9 +279,9 @@ export class PmsIdpComponent {
}
case
(
"3"
):
{
body
=
{
...
this
.
formIdp
.
data
,
masfromEvaluationIdp
:
{
...
this
.
formIdp
.
data
.
masfromEvaluationIdp
,
apsapprove2Status
:
approveStatus
==
'0'
?
approveStatus
:
this
.
formIdp
.
data
.
masfromEvaluationIdp
.
apsapprove2Status
,
...
this
.
appraisalIdp
,
masfromEvaluationIdp
:
{
...
this
.
appraisalIdp
.
masfromEvaluationIdp
,
apsapprove2Status
:
approveStatus
==
'0'
?
approveStatus
:
this
.
appraisalIdp
.
masfromEvaluationIdp
.
apsapprove2Status
,
apsapprove3Status
:
approveStatus
}
}
...
...
@@ -299,9 +289,9 @@ export class PmsIdpComponent {
}
case
(
"4"
):
{
body
=
{
...
this
.
formIdp
.
data
,
masfromEvaluationIdp
:
{
...
this
.
formIdp
.
data
.
masfromEvaluationIdp
,
apsapprove3Status
:
approveStatus
==
'0'
?
approveStatus
:
this
.
formIdp
.
data
.
masfromEvaluationIdp
.
apsapprove3Status
,
...
this
.
appraisalIdp
,
masfromEvaluationIdp
:
{
...
this
.
appraisalIdp
.
masfromEvaluationIdp
,
apsapprove3Status
:
approveStatus
==
'0'
?
approveStatus
:
this
.
appraisalIdp
.
masfromEvaluationIdp
.
apsapprove3Status
,
apsapprove4Status
:
approveStatus
}
}
...
...
@@ -309,9 +299,9 @@ export class PmsIdpComponent {
}
case
(
"5"
):
{
body
=
{
...
this
.
formIdp
.
data
,
masfromEvaluationIdp
:
{
...
this
.
formIdp
.
data
.
masfromEvaluationIdp
,
apsapprove4Status
:
approveStatus
==
'0'
?
approveStatus
:
this
.
formIdp
.
data
.
masfromEvaluationIdp
.
apsapprove4Status
,
...
this
.
appraisalIdp
,
masfromEvaluationIdp
:
{
...
this
.
appraisalIdp
.
masfromEvaluationIdp
,
apsapprove4Status
:
approveStatus
==
'0'
?
approveStatus
:
this
.
appraisalIdp
.
masfromEvaluationIdp
.
apsapprove4Status
,
apsapprove5Status
:
approveStatus
}
}
...
...
src/app/components/performance-evaluation/pms-form-employee/pms-kpi/pms-kpi.component.html
View file @
caf318d4
...
...
@@ -13,7 +13,7 @@
</div>
</div>
</div> -->
<ng-container
*
ngIf=
"appraisalPms
.data
"
>
<ng-container
*
ngIf=
"appraisalPms"
>
<div
class=
"pb-2rem px-2rem"
>
<div
class=
"font-size-18px font-weight-700 text-primary"
>
JOB PERFORMANCE EVALUATION FORM
...
...
@@ -36,8 +36,8 @@
</div>
<div
class=
"col-span-3 p-2 border pb-4"
>
<span>
{{appraisalPms.
data.apsassessy.prefix?
.tdesc || ""}}
{{appraisalPms.
data.
apsassessy.thFullName || ""}}
</span>
{{appraisalPms.
apsassessy.prefix
.tdesc || ""}}
{{appraisalPms.apsassessy.thFullName || ""}}
</span>
</div>
</div>
<div
class=
"col-span-3 grid grid-cols-4"
>
...
...
@@ -45,8 +45,9 @@
<span>
ชื่อ-สกุล
</span>
</div>
<div
class=
"col-span-3 p-2 border pb-4"
>
<span>
{{appraisalPms.data.apsapprove1.prefix?.tdesc || ""}}
{{appraisalPms.data.apsapprove1.thFullName || ""}}
</span>
<span
*
ngIf=
"appraisalPms.apsapprove1.prefix"
>
{{appraisalPms.apsapprove1.prefix.tdesc ||
""}}
{{appraisalPms.apsapprove1.thFullName || ""}}
</span>
</div>
</div>
</div>
...
...
@@ -56,13 +57,13 @@
<span>
รหัส (ID)
</span>
</div>
<div
class=
"col-span-1 p-2 border pb-4"
>
<span>
{{appraisalPms.
data.
apsassessy.employeeId || ""}}
</span>
<span>
{{appraisalPms.apsassessy.employeeId || ""}}
</span>
</div>
<div
class=
"col-span-1 p-2 border pb-4"
>
<span>
ตำแหน่ง (Position)
</span>
</div>
<div
class=
"col-span-1 p-2 border pb-4"
>
<span>
{{appraisalPms.
data.apsassessy.position?
.tdesc || ""}}
</span>
<span>
{{appraisalPms.
apsassessy.position
.tdesc || ""}}
</span>
</div>
</div>
<div
class=
"col-span-3 grid grid-cols-4"
>
...
...
@@ -70,13 +71,15 @@
<span>
รหัส (ID)
</span>
</div>
<div
class=
"col-span-1 p-2 border pb-4"
>
<span>
{{appraisalPms.
data.
apsapprove1.employeeId || ""}}
</span>
<span>
{{appraisalPms.apsapprove1.employeeId || ""}}
</span>
</div>
<div
class=
"col-span-1 p-2 border pb-4"
>
<span>
ตำแหน่ง (Position)
</span>
</div>
<div
class=
"col-span-1 p-2 border pb-4"
>
<span>
{{appraisalPms.data.apsapprove1.position?.tdesc || ""}}
</span>
<span
*
ngIf=
"appraisalPms.apsapprove1.position"
>
{{appraisalPms.apsapprove1.position.tdesc || ""}}
</span>
</div>
</div>
</div>
...
...
@@ -86,13 +89,13 @@
<span>
ฝ่าย (Department)
</span>
</div>
<div
class=
"col-span-1 p-2 border pb-4"
>
<span>
{{appraisalPms.
data.apsassessy.bu1?
.tdesc || ""}}
</span>
<span>
{{appraisalPms.
apsassessy.bu1
.tdesc || ""}}
</span>
</div>
<div
class=
"col-span-1 p-2 border pb-4"
>
<span>
แผนก (Section)
</span>
</div>
<div
class=
"col-span-1 p-2 border pb-4"
>
<span>
{{appraisalPms.
data.apsassessy.bu2?
.tdesc || ""}}
</span>
<span>
{{appraisalPms.
apsassessy.bu2
.tdesc || ""}}
</span>
</div>
</div>
<div
class=
"col-span-3 grid grid-cols-4"
>
...
...
@@ -100,13 +103,13 @@
<span>
ฝ่าย (Department)
</span>
</div>
<div
class=
"col-span-1 p-2 border pb-4"
>
<span
>
{{appraisalPms.data.apsapprove1.bu1?
.tdesc || ""}}
</span>
<span
*
ngIf=
"appraisalPms.apsapprove1.bu1"
>
{{appraisalPms.apsapprove1.bu1
.tdesc || ""}}
</span>
</div>
<div
class=
"col-span-1 p-2 border pb-4"
>
<span>
แผนก (Section)
</span>
</div>
<div
class=
"col-span-1 p-2 border pb-4"
>
<span
>
{{appraisalPms.data.apsapprove1.bu2?
.tdesc || ""}}
</span>
<span
*
ngIf=
"appraisalPms.apsapprove1.bu2"
>
{{appraisalPms.apsapprove1.bu2
.tdesc || ""}}
</span>
</div>
</div>
</div>
...
...
@@ -114,14 +117,14 @@
</div>
<div
class=
"pb-2rem px-2rem"
>
<div
id=
"hs-tab-js-vertical-1"
role=
"tabpanel"
aria-labelledby=
"hs-tab-js-vertical-item-1"
>
<div
class=
"hs-accordion-group w-full"
>
<ng-container
*
ngIf=
"appraisalPms?.
data?.
part1Detail?.length then part1 else noData"
></ng-container>
<ng-container
*
ngIf=
"appraisalPms?.
data?.
part2Detail?.length then part2 else noData"
></ng-container>
<ng-container
*
ngIf=
"appraisalPms?.
data?.
part3Detail?.length then part3 else noData"
></ng-container>
<ng-container
*
ngIf=
"appraisalPms?.
data?.
part4Detail?.length then part4 else noData"
></ng-container>
<ng-container
*
ngIf=
"appraisalPms?.
data?.
part5Detail?.length then part5 else noData"
></ng-container>
<ng-container
*
ngIf=
"appraisalPms?.
data?.
part6Detail?.length then part6 else noData"
></ng-container>
<ng-container
*
ngIf=
"appraisalPms?.
data?.
part7Detail?.length then part7 else noData"
></ng-container>
<div
class=
"hs-accordion-group w-full"
data-hs-accordion-always-open
>
<ng-container
*
ngIf=
"appraisalPms?.part1Detail?.length then part1 else noData"
></ng-container>
<ng-container
*
ngIf=
"appraisalPms?.part2Detail?.length then part2 else noData"
></ng-container>
<ng-container
*
ngIf=
"appraisalPms?.part3Detail?.length then part3 else noData"
></ng-container>
<ng-container
*
ngIf=
"appraisalPms?.part4Detail?.length then part4 else noData"
></ng-container>
<ng-container
*
ngIf=
"appraisalPms?.part5Detail?.length then part5 else noData"
></ng-container>
<ng-container
*
ngIf=
"appraisalPms?.part6Detail?.length then part6 else noData"
></ng-container>
<ng-container
*
ngIf=
"appraisalPms?.part7Detail?.length then part7 else noData"
></ng-container>
<ng-container
*
ngTemplateOutlet=
"part8"
></ng-container>
<ng-container
*
ngTemplateOutlet=
"part9"
></ng-container>
<ng-container
*
ngTemplateOutlet=
"part10"
></ng-container>
...
...
@@ -134,144 +137,144 @@
<div
class=
"py-2 grid grid-cols-7 gap-3"
>
<div
class=
"col-span-1"
>
ผู้รับการประเมิน
</div>
<div
class=
"col-span-1"
>
{{appraisalPms.
data.
apsassessy.thFullName}}
</div>
{{appraisalPms.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 pointer-events-none "
[
checked
]="
appraisalPms
.
data
.
apsassessyStatus=
='2'"
>
[
checked
]="
appraisalPms
.
apsassessyStatus=
='2'"
>
<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"
placeholder=
"ใส่ Comment ที่นี่"
[
class
.!
bg-input-readonly
]="!
appraisalPms
.
data
||
appraisalPms
.
data
.
currentStep
!='
0
'||!
canSave
"
[
readonly
]="!
appraisalPms
.
data
||
appraisalPms
.
data
.
currentStep
!='
0
'||!
canSave
"
[(
ngModel
)]="
appraisalPms
.
data
.
apsassessyComment
"
></textarea>
[
class
.!
bg-input-readonly
]="!
appraisalPms
||
appraisalPms
.
currentStep
!='
0
'||!
canSave
"
[
readonly
]="!
appraisalPms
||
appraisalPms
.
currentStep
!='
0
'||!
canSave
"
[(
ngModel
)]="
appraisalPms
.
apsassessyComment
"
></textarea>
<span
class=
"pt-2"
>
วันที่ :
{{convertDate(appraisalPms.
data.
apsassessyDate)}}
{{convertDate(appraisalPms.apsassessyDate)}}
</span>
</div>
</div>
<div
class=
"py-2 grid grid-cols-7 gap-3"
*
ngIf=
"appraisalPms.
data.
apsapprove1.employeeId"
>
<div
class=
"py-2 grid grid-cols-7 gap-3"
*
ngIf=
"appraisalPms.apsapprove1.employeeId"
>
<div
class=
"col-span-1"
>
{{appraisalPms.
data.
apsapprove2.employeeId?'ผู้ประเมิน1':'ผู้อนุมัติ'}}
{{appraisalPms.apsapprove2.employeeId?'ผู้ประเมิน1':'ผู้อนุมัติ'}}
</div>
<div
class=
"col-span-1"
>
{{appraisalPms.
data.
apsapprove1.thFullName}}
</div>
{{appraisalPms.apsapprove1.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 pointer-events-none"
[
checked
]="
appraisalPms
.
data
.
apsapprove1Status=
='2'"
>
[
checked
]="
appraisalPms
.
apsapprove1Status=
='2'"
>
<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"
placeholder=
"ใส่ Comment ที่นี่"
[
class
.!
bg-input-readonly
]="!
appraisalPms
.
data
||
appraisalPms
.
data
.
currentStep
!='
1
'||!
canSave
"
[
readonly
]="!
appraisalPms
.
data
||
appraisalPms
.
data
.
currentStep
!='
1
'||!
canSave
"
[(
ngModel
)]="
appraisalPms
.
data
.
apsapprove1Comment
"
></textarea>
[
class
.!
bg-input-readonly
]="!
appraisalPms
||
appraisalPms
.
currentStep
!='
1
'||!
canSave
"
[
readonly
]="!
appraisalPms
||
appraisalPms
.
currentStep
!='
1
'||!
canSave
"
[(
ngModel
)]="
appraisalPms
.
apsapprove1Comment
"
></textarea>
<span
class=
"pt-2"
>
วันที่ :
{{convertDate(appraisalPms.
data.
apsapprove1Date)}}
{{convertDate(appraisalPms.apsapprove1Date)}}
</span>
</div>
</div>
<div
class=
"py-2 grid grid-cols-7 gap-3"
*
ngIf=
"appraisalPms.
data.
apsapprove2.employeeId"
>
<div
class=
"py-2 grid grid-cols-7 gap-3"
*
ngIf=
"appraisalPms.apsapprove2.employeeId"
>
<div
class=
"col-span-1"
>
{{appraisalPms.
data.
apsapprove3.employeeId?'ผู้ประเมิน2':'ผู้อนุมัติ'}}
{{appraisalPms.apsapprove3.employeeId?'ผู้ประเมิน2':'ผู้อนุมัติ'}}
</div>
<div
class=
"col-span-1"
>
{{appraisalPms.
data.
apsapprove2.thFullName}}
</div>
{{appraisalPms.apsapprove2.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 pointer-events-none"
[
checked
]="
appraisalPms
.
data
.
apsapprove2Status=
='2'"
>
[
checked
]="
appraisalPms
.
apsapprove2Status=
='2'"
>
<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"
placeholder=
"ใส่ Comment ที่นี่"
[
class
.!
bg-input-readonly
]="!
appraisalPms
.
data
||
appraisalPms
.
data
.
currentStep
!='
2
'||!
canSave
"
[
readonly
]="!
appraisalPms
.
data
||
appraisalPms
.
data
.
currentStep
!='
2
'||!
canSave
"
[(
ngModel
)]="
appraisalPms
.
data
.
apsapprove2Comment
"
></textarea>
[
class
.!
bg-input-readonly
]="!
appraisalPms
||
appraisalPms
.
currentStep
!='
2
'||!
canSave
"
[
readonly
]="!
appraisalPms
||
appraisalPms
.
currentStep
!='
2
'||!
canSave
"
[(
ngModel
)]="
appraisalPms
.
apsapprove2Comment
"
></textarea>
<span
class=
"pt-2"
>
วันที่ :
{{convertDate(appraisalPms.
data.
apsapprove2Date)}}
{{convertDate(appraisalPms.apsapprove2Date)}}
</span>
</div>
</div>
<div
class=
"py-2 grid grid-cols-7 gap-3"
*
ngIf=
"appraisalPms.
data.
apsapprove3.employeeId"
>
<div
class=
"py-2 grid grid-cols-7 gap-3"
*
ngIf=
"appraisalPms.apsapprove3.employeeId"
>
<div
class=
"col-span-1"
>
{{appraisalPms.
data.
apsapprove4.employeeId?'ผู้ประเมิน3':'ผู้อนุมัติ'}}
{{appraisalPms.apsapprove4.employeeId?'ผู้ประเมิน3':'ผู้อนุมัติ'}}
</div>
<div
class=
"col-span-1"
>
{{appraisalPms.
data.
apsapprove3.thFullName}}
</div>
{{appraisalPms.apsapprove3.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 pointer-events-none"
[
checked
]="
appraisalPms
.
data
.
apsapprove3Status=
='2'"
>
[
checked
]="
appraisalPms
.
apsapprove3Status=
='2'"
>
<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"
placeholder=
"ใส่ Comment ที่นี่"
[
class
.!
bg-input-readonly
]="!
appraisalPms
.
data
||
appraisalPms
.
data
.
currentStep
!='
3
'||!
canSave
"
[
readonly
]="!
appraisalPms
.
data
||
appraisalPms
.
data
.
currentStep
!='
3
'||!
canSave
"
[(
ngModel
)]="
appraisalPms
.
data
.
apsapprove3Comment
"
></textarea>
[
class
.!
bg-input-readonly
]="!
appraisalPms
||
appraisalPms
.
currentStep
!='
3
'||!
canSave
"
[
readonly
]="!
appraisalPms
||
appraisalPms
.
currentStep
!='
3
'||!
canSave
"
[(
ngModel
)]="
appraisalPms
.
apsapprove3Comment
"
></textarea>
<span
class=
"pt-2"
>
วันที่ :
{{convertDate(appraisalPms.
data.
apsapprove3Date)}}
{{convertDate(appraisalPms.apsapprove3Date)}}
</span>
</div>
</div>
<div
class=
"py-2 grid grid-cols-7 gap-3"
*
ngIf=
"appraisalPms.
data.
apsapprove4.employeeId"
>
<div
class=
"py-2 grid grid-cols-7 gap-3"
*
ngIf=
"appraisalPms.apsapprove4.employeeId"
>
<div
class=
"col-span-1"
>
{{appraisalPms.
data.
apsapprove5.employeeId?'ผู้ประเมิน4':'ผู้อนุมัติ'}}
{{appraisalPms.apsapprove5.employeeId?'ผู้ประเมิน4':'ผู้อนุมัติ'}}
</div>
<div
class=
"col-span-1"
>
{{appraisalPms.
data.
apsapprove4.thFullName}}
</div>
{{appraisalPms.apsapprove4.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 pointer-events-none"
[
checked
]="
appraisalPms
.
data
.
apsapprove4Status=
='2'"
>
[
checked
]="
appraisalPms
.
apsapprove4Status=
='2'"
>
<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"
placeholder=
"ใส่ Comment ที่นี่"
[
class
.!
bg-input-readonly
]="!
appraisalPms
.
data
||
appraisalPms
.
data
.
currentStep
!='
4
'||!
canSave
"
[
readonly
]="!
appraisalPms
.
data
||
appraisalPms
.
data
.
currentStep
!='
4
'||!
canSave
"
[(
ngModel
)]="
appraisalPms
.
data
.
apsapprove4Comment
"
></textarea>
[
class
.!
bg-input-readonly
]="!
appraisalPms
||
appraisalPms
.
currentStep
!='
4
'||!
canSave
"
[
readonly
]="!
appraisalPms
||
appraisalPms
.
currentStep
!='
4
'||!
canSave
"
[(
ngModel
)]="
appraisalPms
.
apsapprove4Comment
"
></textarea>
<span
class=
"pt-2"
>
วันที่ :
{{convertDate(appraisalPms.
data.
apsapprove4Date)}}
{{convertDate(appraisalPms.apsapprove4Date)}}
</span>
</div>
</div>
<div
class=
"py-2 grid grid-cols-7 gap-3"
*
ngIf=
"appraisalPms.
data.
apsapprove5.employeeId"
>
<div
class=
"py-2 grid grid-cols-7 gap-3"
*
ngIf=
"appraisalPms.apsapprove5.employeeId"
>
<div
class=
"col-span-1"
>
ผู้อนุมัติ
</div>
<div
class=
"col-span-1"
>
{{appraisalPms.
data.
apsapprove5.thFullName}}
</div>
{{appraisalPms.apsapprove5.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 pointer-events-none"
[
checked
]="
appraisalPms
.
data
.
apsapprove5Status=
='2'"
>
[
checked
]="
appraisalPms
.
apsapprove5Status=
='2'"
>
<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"
placeholder=
"ใส่ Comment ที่นี่"
[
class
.!
bg-input-readonly
]="!
appraisalPms
.
data
||
appraisalPms
.
data
.
currentStep
!='
5
'||!
canSave
"
[
readonly
]="!
appraisalPms
.
data
||
appraisalPms
.
data
.
currentStep
!='
5
'||!
canSave
"
[(
ngModel
)]="
appraisalPms
.
data
.
apsapprove5Comment
"
></textarea>
[
class
.!
bg-input-readonly
]="!
appraisalPms
||
appraisalPms
.
currentStep
!='
5
'||!
canSave
"
[
readonly
]="!
appraisalPms
||
appraisalPms
.
currentStep
!='
5
'||!
canSave
"
[(
ngModel
)]="
appraisalPms
.
apsapprove5Comment
"
></textarea>
<span
class=
"pt-2"
>
วันที่ :
{{convertDate(appraisalPms.
data.
apsapprove5Date)}}
{{convertDate(appraisalPms.apsapprove5Date)}}
</span>
</div>
</div>
</div>
<div
class=
"flex justify-center mb-1rem pb-2rem"
*
ngIf=
"canSave"
>
<button
*
ngIf=
"appraisalPms.
data.checkStep!='0'&&appraisalPms.data
.checkStep!='1'"
type=
"submit"
<button
*
ngIf=
"appraisalPms.
checkStep!='0'&&appraisalPms
.checkStep!='1'"
type=
"submit"
class=
"ti-btn ti-btn-danger mx-2rem"
(
click
)="
save
('
noApprove
')"
>
ไม่อนุมัติ
</button>
...
...
@@ -279,10 +282,10 @@
บันทึกร่าง
</button>
<button
type=
"submit"
class=
"ti-btn ti-btn-secondary mx-2rem"
(
click
)="
save
('
approve
')"
>
<ng-container
*
ngIf=
"appraisalPms.
data.
checkStep=='0'"
>
<ng-container
*
ngIf=
"appraisalPms.checkStep=='0'"
>
ยืนยันข้อมูล
</ng-container>
<ng-container
*
ngIf=
"appraisalPms.
data.
checkStep!='0'"
>
<ng-container
*
ngIf=
"appraisalPms.checkStep!='0'"
>
อนุมัติ
</ng-container>
</button>
...
...
@@ -297,7 +300,7 @@
<ng-template
#
part1
>
<div
class=
"hs-accordion active overflow-hidden bg-white border -mt-px first:rounded-t-sm last:rounded-b-sm dark:bg-bgdark dark:border-white/10"
id=
"hs-primary-heading-1"
>
<button
<button
(
click
)="
scrollToTable
($
event
)"
class=
"hs-accordion-toggle hs-accordion-active:text-white hs-accordion-active:bg-secondary group py-4 px-5 inline-flex items-center justify-between gap-x-3 w-full font-semibold text-start text-gray-800 transition hover:text-gray-500 dark:hs-accordion-active:text-white dark:text-gray-200 dark:hover:text-white/80"
aria-controls=
"hs-primary-collapse-1"
type=
"button"
>
<svg
class=
"flex-shrink-0 h-6 w-6 text-white"
width=
"16"
height=
"16"
viewBox=
"0 0 16 16"
fill=
"none"
...
...
@@ -360,9 +363,9 @@
</ng-container>
</tr>
</thead>
<tbody
*
ngIf=
"appraisalPms?.
data?.
part1Detail"
>
<tbody
*
ngIf=
"appraisalPms?.part1Detail"
>
<ng-container
*
ngIf=
"part1show"
>
<tr
*
ngFor=
"let item of appraisalPms?.
data?.
part1Detail;let i = index"
>
<tr
*
ngFor=
"let item of appraisalPms?.part1Detail;let i = index"
>
<td
class=
"align-start text-center !white-space-normal "
>
{{i+1}}
</td>
...
...
@@ -442,7 +445,7 @@
คะแนนดิบ
</td>
<td
class=
"align-start !white-space-normal text-center"
>
{{calRawScore(appraisalPms
.data
?.part1Detail)}}
{{calRawScore(appraisalPms?.part1Detail)}}
</td>
<td
class=
"align-start !white-space-normal text-center"
>
...
...
@@ -453,16 +456,16 @@
คำนวนถ่วงน้ำหนัก
</td>
<td
class=
"align-start !white-space-normal text-center"
>
{{calWeigth(appraisalPms
.data
?.part1Detail)}}
{{calWeigth(appraisalPms?.part1Detail)}}
</td>
<td
class=
"align-start !white-space-normal text-end"
colspan=
"6"
>
คะแนนประเมินที่ได้
</td>
<td
class=
"align-start !white-space-normal text-center"
>
{{calExpectationScore(appraisalPms
.data
?.part1Detail)}}
{{calExpectationScore(appraisalPms?.part1Detail)}}
</td>
<td
class=
"align-start !white-space-normal text-center"
>
{{calExpectationTotalScore(appraisalPms
.data
?.part1Detail)}}
{{calExpectationTotalScore(appraisalPms?.part1Detail)}}
</td>
</tr>
<tr
class=
"bg-table-soft-gray"
>
...
...
@@ -483,13 +486,13 @@
ร้อยละของปัจจัย
</td>
<td
class=
"align-start !white-space-normal text-center"
>
{{appraisalPms
.data
?.part1Percentage}}
{{appraisalPms?.part1Percentage}}
</td>
<td
class=
"align-start !white-space-normal text-end"
colspan=
"7"
>
คะแนนที่ได้คิดเป็นร้อยละ
</td>
<td
class=
"align-start !white-space-normal text-center"
style=
"font-size: 1.25rem"
>
{{calPercentage(calExpectationTotalScore(appraisalPms
.data?.part1Detail),calRawScore(appraisalPms.data
?.part1Detail))}}
{{calPercentage(calExpectationTotalScore(appraisalPms
?.part1Detail),calRawScore(appraisalPms
?.part1Detail))}}
</td>
</tr>
</tbody>
...
...
@@ -505,7 +508,7 @@
<ng-template
#
part2
>
<div
class=
"hs-accordion active overflow-hidden bg-white border -mt-px first:rounded-t-sm last:rounded-b-sm dark:bg-bgdark dark:border-white/10"
id=
"hs-primary-heading-1"
>
<button
<button
(
click
)="
scrollToTable
($
event
)"
class=
"hs-accordion-toggle hs-accordion-active:text-white hs-accordion-active:bg-secondary group py-4 px-5 inline-flex items-center justify-between gap-x-3 w-full font-semibold text-start text-gray-800 transition hover:text-gray-500 dark:hs-accordion-active:text-white dark:text-gray-200 dark:hover:text-white/80"
aria-controls=
"hs-primary-collapse-1"
type=
"button"
>
<svg
class=
"flex-shrink-0 h-6 w-6 text-white"
width=
"16"
height=
"16"
viewBox=
"0 0 16 16"
fill=
"none"
...
...
@@ -568,9 +571,9 @@
</ng-container>
</tr>
</thead>
<tbody
*
ngIf=
"appraisalPms?.
data?.
part2Detail"
>
<tbody
*
ngIf=
"appraisalPms?.part2Detail"
>
<ng-container
*
ngIf=
"part2show"
>
<tr
*
ngFor=
"let item of appraisalPms?.
data?.
part2Detail;let i = index"
>
<tr
*
ngFor=
"let item of appraisalPms?.part2Detail;let i = index"
>
<td
class=
"align-start text-center !white-space-normal "
>
{{i+1}}
</td>
...
...
@@ -647,7 +650,7 @@
คะแนนดิบ
</td>
<td
class=
"align-start !white-space-normal text-center"
>
{{calRawScore(appraisalPms
.data
?.part2Detail)}}
{{calRawScore(appraisalPms?.part2Detail)}}
</td>
<td
class=
"align-start !white-space-normal text-center"
>
</td>
...
...
@@ -655,16 +658,16 @@
คำนวนถ่วงน้ำหนัก
</td>
<td
class=
"align-start !white-space-normal text-center"
>
{{calWeigth(appraisalPms
.data
?.part2Detail)}}
{{calWeigth(appraisalPms?.part2Detail)}}
</td>
<td
class=
"align-start !white-space-normal text-end"
colspan=
"6"
>
คะแนนประเมินที่ได้
</td>
<td
class=
"align-start !white-space-normal text-center"
>
{{calExpectationScore(appraisalPms
.data
?.part2Detail)}}
{{calExpectationScore(appraisalPms?.part2Detail)}}
</td>
<td
class=
"align-start !white-space-normal text-center"
>
{{calExpectationTotalScore(appraisalPms
.data
?.part2Detail)}}
{{calExpectationTotalScore(appraisalPms?.part2Detail)}}
</td>
</tr>
<tr
class=
"bg-table-soft-gray"
>
...
...
@@ -682,13 +685,13 @@
ร้อยละของปัจจัย
</td>
<td
class=
"align-start !white-space-normal text-center"
>
{{appraisalPms
.data
?.part2Percentage}}
{{appraisalPms?.part2Percentage}}
</td>
<td
class=
"align-start !white-space-normal text-end"
colspan=
"7"
>
คะแนนที่ได้คิดเป็นร้อยละ
</td>
<td
class=
"align-start !white-space-normal text-center"
style=
"font-size: 1.25rem"
>
{{calPercentage(calExpectationTotalScore(appraisalPms
.data?.part2Detail),calRawScore(appraisalPms.data
?.part2Detail))}}
{{calPercentage(calExpectationTotalScore(appraisalPms
?.part2Detail),calRawScore(appraisalPms
?.part2Detail))}}
</td>
</tr>
</tbody>
...
...
@@ -703,7 +706,7 @@
<ng-template
#
part3
>
<div
class=
"hs-accordion active overflow-hidden bg-white border -mt-px first:rounded-t-sm last:rounded-b-sm dark:bg-bgdark dark:border-white/10"
id=
"hs-primary-heading-1"
>
<button
<button
(
click
)="
scrollToTable
($
event
)"
class=
"hs-accordion-toggle hs-accordion-active:text-white hs-accordion-active:bg-secondary group py-4 px-5 inline-flex items-center justify-between gap-x-3 w-full font-semibold text-start text-gray-800 transition hover:text-gray-500 dark:hs-accordion-active:text-white dark:text-gray-200 dark:hover:text-white/80"
aria-controls=
"hs-primary-collapse-1"
type=
"button"
>
<svg
class=
"flex-shrink-0 h-6 w-6 text-white"
width=
"16"
height=
"16"
viewBox=
"0 0 16 16"
fill=
"none"
...
...
@@ -766,9 +769,9 @@
</ng-container>
</tr>
</thead>
<tbody
*
ngIf=
"appraisalPms?.
data?.
part3Detail"
>
<tbody
*
ngIf=
"appraisalPms?.part3Detail"
>
<ng-container
*
ngIf=
"part3show"
>
<tr
*
ngFor=
"let item of appraisalPms?.
data?.
part3Detail;let i = index"
>
<tr
*
ngFor=
"let item of appraisalPms?.part3Detail;let i = index"
>
<td
class=
"align-start text-center !white-space-normal "
>
{{i+1}}
</td>
...
...
@@ -845,7 +848,7 @@
คะแนนดิบ
</td>
<td
class=
"align-start !white-space-normal text-center"
>
{{calRawScore(appraisalPms
.data
?.part3Detail)}}
{{calRawScore(appraisalPms?.part3Detail)}}
</td>
<td
class=
"align-start !white-space-normal text-center"
>
</td>
...
...
@@ -853,16 +856,16 @@
คำนวนถ่วงน้ำหนัก
</td>
<td
class=
"align-start !white-space-normal text-center"
>
{{calWeigth(appraisalPms
.data
?.part3Detail)}}
{{calWeigth(appraisalPms?.part3Detail)}}
</td>
<td
class=
"align-start !white-space-normal text-end"
colspan=
"6"
>
คะแนนประเมินที่ได้
</td>
<td
class=
"align-start !white-space-normal text-center"
>
{{calExpectationScore(appraisalPms
.data
?.part3Detail)}}
{{calExpectationScore(appraisalPms?.part3Detail)}}
</td>
<td
class=
"align-start !white-space-normal text-center"
>
{{calExpectationTotalScore(appraisalPms
.data
?.part3Detail)}}
{{calExpectationTotalScore(appraisalPms?.part3Detail)}}
</td>
</tr>
<tr
class=
"bg-table-soft-gray"
>
...
...
@@ -880,13 +883,13 @@
ร้อยละของปัจจัย
</td>
<td
class=
"align-start !white-space-normal text-center"
>
{{appraisalPms
.data
?.part3Percentage}}
{{appraisalPms?.part3Percentage}}
</td>
<td
class=
"align-start !white-space-normal text-end"
colspan=
"7"
>
คะแนนที่ได้คิดเป็นร้อยละ
</td>
<td
class=
"align-start !white-space-normal text-center"
style=
"font-size: 1.25rem"
>
{{calPercentage(calExpectationTotalScore(appraisalPms
.data?.part3Detail),calRawScore(appraisalPms.data
?.part3Detail))}}
{{calPercentage(calExpectationTotalScore(appraisalPms
?.part3Detail),calRawScore(appraisalPms
?.part3Detail))}}
</td>
</tr>
</tbody>
...
...
@@ -901,7 +904,7 @@
<ng-template
#
part4
>
<div
class=
"hs-accordion active overflow-hidden bg-white border -mt-px first:rounded-t-sm last:rounded-b-sm dark:bg-bgdark dark:border-white/10"
id=
"hs-primary-heading-1"
>
<button
<button
(
click
)="
scrollToTable
($
event
)"
class=
"hs-accordion-toggle hs-accordion-active:text-white hs-accordion-active:bg-secondary group py-4 px-5 inline-flex items-center justify-between gap-x-3 w-full font-semibold text-start text-gray-800 transition hover:text-gray-500 dark:hs-accordion-active:text-white dark:text-gray-200 dark:hover:text-white/80"
aria-controls=
"hs-primary-collapse-1"
type=
"button"
>
<svg
class=
"flex-shrink-0 h-6 w-6 text-white"
width=
"16"
height=
"16"
viewBox=
"0 0 16 16"
fill=
"none"
...
...
@@ -963,9 +966,9 @@
</ng-container>
</tr>
</thead>
<tbody
*
ngIf=
"appraisalPms?.
data?.
part4Detail"
>
<tbody
*
ngIf=
"appraisalPms?.part4Detail"
>
<ng-container
*
ngIf=
"part4show"
>
<tr
*
ngFor=
"let item of appraisalPms?.
data?.
part4Detail;let i = index"
>
<tr
*
ngFor=
"let item of appraisalPms?.part4Detail;let i = index"
>
<td
class=
"align-start text-center"
>
{{i+1}}
</td>
...
...
@@ -1012,22 +1015,22 @@
<tr
class=
"bg-table-soft-gray"
>
<td
class=
"align-start text-center"
>
คะแนนดิบ
{{calRawScorePart4(appraisalPms
.data
?.part4Detail)}}
{{calRawScorePart4(appraisalPms?.part4Detail)}}
</td>
<td
class=
"align-start !white-space-normal text-center"
>
คำนวนถ่วงน้ำหนัก
</td>
<td
class=
"align-start !white-space-normal text-center"
>
{{calWeigthPart4(appraisalPms
.data
?.part4Detail)}}
{{calWeigthPart4(appraisalPms?.part4Detail)}}
</td>
<td
class=
"align-start !white-space-normal text-end"
colspan=
"6"
>
คะแนนประเมินที่ได้
</td>
<td
class=
"align-start !white-space-normal text-center"
>
{{calExpectationScorePart4(appraisalPms
.data
?.part4Detail)}}
{{calExpectationScorePart4(appraisalPms?.part4Detail)}}
</td>
<td
class=
"align-start !white-space-normal text-center"
>
{{calExpectationTotalScorePart4(appraisalPms
.data
?.part4Detail)}}
{{calExpectationTotalScorePart4(appraisalPms?.part4Detail)}}
</td>
</tr>
<tr
class=
"bg-table-soft-gray"
>
...
...
@@ -1039,13 +1042,13 @@
ร้อยละของปัจจัย
</td>
<td
class=
"align-start !white-space-normal text-center"
>
{{appraisalPms
.data
?.part4Percentage}}
{{appraisalPms?.part4Percentage}}
</td>
<td
class=
"align-start !white-space-normal text-end"
colspan=
"7"
>
คะแนนที่ได้คิดเป็นร้อยละ
</td>
<td
class=
"align-start !white-space-normal text-center"
style=
"font-size: 1.25rem"
>
{{calPercentage(calExpectationTotalScorePart4(appraisalPms
.data?.part4Detail),calRawScorePart4(appraisalPms.data
?.part4Detail))}}
{{calPercentage(calExpectationTotalScorePart4(appraisalPms
?.part4Detail),calRawScorePart4(appraisalPms
?.part4Detail))}}
</td>
</tr>
</tbody>
...
...
@@ -1061,7 +1064,7 @@
<ng-template
#
part5
>
<div
class=
"hs-accordion active overflow-hidden bg-white border -mt-px first:rounded-t-sm last:rounded-b-sm dark:bg-bgdark dark:border-white/10"
id=
"hs-primary-heading-1"
>
<button
<button
(
click
)="
scrollToTable
($
event
)"
class=
"hs-accordion-toggle hs-accordion-active:text-white hs-accordion-active:bg-secondary group py-4 px-5 inline-flex items-center justify-between gap-x-3 w-full font-semibold text-start text-gray-800 transition hover:text-gray-500 dark:hs-accordion-active:text-white dark:text-gray-200 dark:hover:text-white/80"
aria-controls=
"hs-primary-collapse-1"
type=
"button"
>
<svg
class=
"flex-shrink-0 h-6 w-6 text-white"
width=
"16"
height=
"16"
viewBox=
"0 0 16 16"
fill=
"none"
...
...
@@ -1123,9 +1126,9 @@
</ng-container>
</tr>
</thead>
<tbody
*
ngIf=
"appraisalPms?.
data?.
part5Detail"
>
<tbody
*
ngIf=
"appraisalPms?.part5Detail"
>
<ng-container
*
ngIf=
"part5show"
>
<tr
*
ngFor=
"let item of appraisalPms?.
data?.
part5Detail;let i = index"
>
<tr
*
ngFor=
"let item of appraisalPms?.part5Detail;let i = index"
>
<td
class=
"align-start text-center"
>
{{i+1}}
</td>
...
...
@@ -1197,7 +1200,7 @@
คะแนนดิบ
</td>
<td
class=
"align-start text-center"
>
{{calRawScorePart5(appraisalPms
.data
?.part5Detail)}}
{{calRawScorePart5(appraisalPms?.part5Detail)}}
</td>
<td
class=
"align-start !white-space-normal text-center"
>
</td>
...
...
@@ -1205,17 +1208,17 @@
คำนวนถ่วงน้ำหนัก
</td>
<td
class=
"align-start !white-space-normal text-center"
>
{{calWeigthPart5(appraisalPms
.data
?.part5Detail)}}
{{calWeigthPart5(appraisalPms?.part5Detail)}}
</td>
<td
class=
"align-start !white-space-normal text-end"
colspan=
"5"
>
คะแนนประเมินที่ได้
</td>
<td
class=
"!p-0"
></td>
<td
class=
"align-start !white-space-normal text-center"
>
{{calExpectationScorePart5(appraisalPms
.data
?.part5Detail)}}
{{calExpectationScorePart5(appraisalPms?.part5Detail)}}
</td>
<td
class=
"align-start !white-space-normal text-center"
>
{{calExpectationTotalScorePart5(appraisalPms
.data
?.part5Detail)}}
{{calExpectationTotalScorePart5(appraisalPms?.part5Detail)}}
</td>
</tr>
<tr
class=
"bg-table-soft-gray"
>
...
...
@@ -1231,13 +1234,13 @@
ร้อยละของปัจจัย
</td>
<td
class=
"align-start !white-space-normal text-center"
>
{{appraisalPms
.data
?.part5Percentage}}
{{appraisalPms?.part5Percentage}}
</td>
<td
class=
"align-start !white-space-normal text-end"
colspan=
"7"
>
คะแนนที่ได้คิดเป็นร้อยละ
</td>
<td
class=
"align-start !white-space-normal text-center"
style=
"font-size: 1.25rem"
>
{{calPercentage(calExpectationTotalScorePart5(appraisalPms
.data?.part5Detail),calRawScorePart5(appraisalPms.data
?.part5Detail))}}
{{calPercentage(calExpectationTotalScorePart5(appraisalPms
?.part5Detail),calRawScorePart5(appraisalPms
?.part5Detail))}}
</td>
</tr>
</tbody>
...
...
@@ -1252,7 +1255,7 @@
<ng-template
#
part6
>
<div
class=
"hs-accordion active overflow-hidden bg-white border -mt-px first:rounded-t-sm last:rounded-b-sm dark:bg-bgdark dark:border-white/10"
id=
"hs-primary-heading-1"
>
<button
<button
(
click
)="
scrollToTable
($
event
)"
class=
"hs-accordion-toggle hs-accordion-active:text-white hs-accordion-active:bg-secondary group py-4 px-5 inline-flex items-center justify-between gap-x-3 w-full font-semibold text-start text-gray-800 transition hover:text-gray-500 dark:hs-accordion-active:text-white dark:text-gray-200 dark:hover:text-white/80"
aria-controls=
"hs-primary-collapse-1"
type=
"button"
>
<svg
class=
"flex-shrink-0 h-6 w-6 text-white"
width=
"16"
height=
"16"
viewBox=
"0 0 16 16"
fill=
"none"
...
...
@@ -1314,9 +1317,9 @@
</ng-container>
</tr>
</thead>
<tbody
*
ngIf=
"appraisalPms?.
data?.
part6Detail"
>
<tbody
*
ngIf=
"appraisalPms?.part6Detail"
>
<ng-container
*
ngIf=
"part6show"
>
<tr
*
ngFor=
"let item of appraisalPms?.
data?.
part6Detail;let i = index"
>
<tr
*
ngFor=
"let item of appraisalPms?.part6Detail;let i = index"
>
<td
class=
"align-start text-center"
>
{{i+1}}
</td>
...
...
@@ -1396,7 +1399,7 @@
คะแนนดิบ
</td>
<td
class=
"align-start text-center"
>
{{calRawScore(appraisalPms
.data
?.part6Detail)}}
{{calRawScore(appraisalPms?.part6Detail)}}
</td>
<td
class=
"align-start text-center"
>
</td>
...
...
@@ -1406,16 +1409,16 @@
คำนวนถ่วงน้ำหนัก
</td>
<td
class=
"align-start !white-space-normal text-center"
>
{{calWeigth(appraisalPms
.data
?.part6Detail)}}
{{calWeigth(appraisalPms?.part6Detail)}}
</td>
<td
class=
"align-start !white-space-normal text-end"
colspan=
"6"
>
คะแนนประเมินที่ได้
</td>
<td
class=
"align-start !white-space-normal text-center"
>
{{calExpectationScore(appraisalPms
.data
?.part6Detail)}}
{{calExpectationScore(appraisalPms?.part6Detail)}}
</td>
<td
class=
"align-start !white-space-normal text-center"
>
{{calExpectationTotalScore(appraisalPms
.data
?.part6Detail)}}
{{calExpectationTotalScore(appraisalPms?.part6Detail)}}
</td>
</tr>
<tr
class=
"bg-table-soft-gray"
>
...
...
@@ -1435,13 +1438,13 @@
ร้อยละของปัจจัย
</td>
<td
class=
"align-start !white-space-normal text-center"
>
{{appraisalPms
.data
?.part6Percentage}}
{{appraisalPms?.part6Percentage}}
</td>
<td
class=
"align-start !white-space-normal text-end"
colspan=
"7"
>
คะแนนที่ได้คิดเป็นร้อยละ
</td>
<td
class=
"align-start !white-space-normal text-center"
style=
"font-size: 1.25rem"
>
{{calPercentage(calExpectationTotalScore(appraisalPms
.data?.part6Detail),calRawScore(appraisalPms.data
?.part6Detail))}}
{{calPercentage(calExpectationTotalScore(appraisalPms
?.part6Detail),calRawScore(appraisalPms
?.part6Detail))}}
</td>
</tr>
</tbody>
...
...
@@ -1457,7 +1460,7 @@
<ng-template
#
part7
>
<div
class=
"hs-accordion active overflow-hidden bg-white border -mt-px first:rounded-t-sm last:rounded-b-sm dark:bg-bgdark dark:border-white/10"
id=
"hs-primary-heading-1"
>
<button
<button
(
click
)="
scrollToTable
($
event
)"
class=
"hs-accordion-toggle hs-accordion-active:text-white hs-accordion-active:bg-secondary group py-4 px-5 inline-flex items-center justify-between gap-x-3 w-full font-semibold text-start text-gray-800 transition hover:text-gray-500 dark:hs-accordion-active:text-white dark:text-gray-200 dark:hover:text-white/80"
aria-controls=
"hs-primary-collapse-1"
type=
"button"
>
<svg
class=
"flex-shrink-0 h-6 w-6 text-white"
width=
"16"
height=
"16"
viewBox=
"0 0 16 16"
fill=
"none"
...
...
@@ -1519,9 +1522,9 @@
</ng-container>
</tr>
</thead>
<tbody
*
ngIf=
"appraisalPms?.
data?.
part7Detail"
>
<tbody
*
ngIf=
"appraisalPms?.part7Detail"
>
<ng-container
*
ngIf=
"part7show"
>
<tr
*
ngFor=
"let item of appraisalPms?.
data?.
part7Detail;let i = index"
>
<tr
*
ngFor=
"let item of appraisalPms?.part7Detail;let i = index"
>
<td
class=
"align-start text-center"
>
{{i+1}}
</td>
...
...
@@ -1601,7 +1604,7 @@
คะแนนดิบ
</td>
<td
class=
"align-start text-center"
>
{{calRawScore(appraisalPms
.data
?.part7Detail)}}
{{calRawScore(appraisalPms?.part7Detail)}}
</td>
<td
class=
"align-start text-center"
>
</td>
...
...
@@ -1611,16 +1614,16 @@
คำนวนถ่วงน้ำหนัก
</td>
<td
class=
"align-start !white-space-normal text-center"
>
{{calWeigth(appraisalPms
.data
?.part7Detail)}}
{{calWeigth(appraisalPms?.part7Detail)}}
</td>
<td
class=
"align-start !white-space-normal text-end"
colspan=
"6"
>
คะแนนประเมินที่ได้
</td>
<td
class=
"align-start !white-space-normal text-center"
>
{{calExpectationScore(appraisalPms
.data
?.part7Detail)}}
{{calExpectationScore(appraisalPms?.part7Detail)}}
</td>
<td
class=
"align-start !white-space-normal text-center"
>
{{calExpectationTotalScore(appraisalPms
.data
?.part7Detail)}}
{{calExpectationTotalScore(appraisalPms?.part7Detail)}}
</td>
</tr>
<tr
class=
"bg-table-soft-gray"
>
...
...
@@ -1640,13 +1643,13 @@
ร้อยละของปัจจัย
</td>
<td
class=
"align-start !white-space-normal text-center"
>
{{appraisalPms
.data
?.part7Percentage}}
{{appraisalPms?.part7Percentage}}
</td>
<td
class=
"align-start !white-space-normal text-end"
colspan=
"7"
>
คะแนนที่ได้คิดเป็นร้อยละ
</td>
<td
class=
"align-start !white-space-normal text-center"
style=
"font-size: 1.25rem"
>
{{calPercentage(calExpectationTotalScore(appraisalPms
.data?.part7Detail),calRawScore(appraisalPms.data
?.part7Detail))}}
{{calPercentage(calExpectationTotalScore(appraisalPms
?.part7Detail),calRawScore(appraisalPms
?.part7Detail))}}
</td>
</tr>
</tbody>
...
...
@@ -1662,7 +1665,7 @@
<ng-template
#
part8
>
<div
class=
"hs-accordion active overflow-hidden bg-white border -mt-px first:rounded-t-sm last:rounded-b-sm dark:bg-bgdark dark:border-white/10"
id=
"hs-primary-heading-1"
>
<button
<button
(
click
)="
scrollToTable
($
event
)"
class=
"hs-accordion-toggle hs-accordion-active:text-white hs-accordion-active:bg-secondary group py-4 px-5 inline-flex items-center justify-between gap-x-3 w-full font-semibold text-start text-gray-800 transition hover:text-gray-500 dark:hs-accordion-active:text-white dark:text-gray-200 dark:hover:text-white/80"
aria-controls=
"hs-primary-collapse-1"
type=
"button"
>
<svg
class=
"flex-shrink-0 h-6 w-6 text-white"
width=
"16"
height=
"16"
viewBox=
"0 0 16 16"
fill=
"none"
...
...
@@ -1745,13 +1748,13 @@
<td
class=
"align-start text-center"
>
{{calNetScore()}}
</td>
<td
class=
"align-start !white-space-normal"
*
ngIf=
"appraisalPms
.data
"
>
<td
class=
"align-start !white-space-normal"
*
ngIf=
"appraisalPms"
>
<ng-container
*
ngFor=
"let item of groupGrade.dataList; let i=index;let f= first"
>
<span
style=
"display:flex;align-items:center"
[
class
.
mt-2
]="!
f
"
>
<i
*
ngIf=
"appraisalPms.
data.
gradeScore==item.gradeDetail"
<i
*
ngIf=
"appraisalPms.gradeScore==item.gradeDetail"
class=
"ri ri-star-fill pr-10px"
></i>
<i
*
ngIf=
"appraisalPms.
data.
gradeScore!=item.gradeDetail"
<i
*
ngIf=
"appraisalPms.gradeScore!=item.gradeDetail"
class=
"ti ti-star pr-10px"
></i>
{{item.gradeDetail}} = {{item.tdesc}}
<br>
</span>
...
...
@@ -1772,7 +1775,7 @@
<ng-template
#
part9
>
<div
class=
"hs-accordion active overflow-hidden bg-white border -mt-px first:rounded-t-sm last:rounded-b-sm dark:bg-bgdark dark:border-white/10"
id=
"hs-primary-heading-1"
>
<button
<button
(
click
)="
scrollToTable
($
event
)"
class=
"hs-accordion-toggle hs-accordion-active:text-white hs-accordion-active:bg-secondary group py-4 px-5 inline-flex items-center justify-between gap-x-3 w-full font-semibold text-start text-gray-800 transition hover:text-gray-500 dark:hs-accordion-active:text-white dark:text-gray-200 dark:hover:text-white/80"
aria-controls=
"hs-primary-collapse-1"
type=
"button"
>
<svg
class=
"flex-shrink-0 h-6 w-6 text-white"
width=
"16"
height=
"16"
viewBox=
"0 0 16 16"
fill=
"none"
...
...
@@ -1804,7 +1807,7 @@
aria-labelledby=
"hs-primary-heading-1"
>
<div
class=
"box-body p-0"
>
<div
class=
"space-y-4"
>
<div
class=
"pb-1rem"
*
ngIf=
"appraisalPms
.data
"
>
<div
class=
"pb-1rem"
*
ngIf=
"appraisalPms"
>
<div
class=
"pb-2 grid grid-cols-2"
>
<div
class=
"col-span-1 grid-cols-1 text-gray-400"
>
<div
class=
"col-span-1 bg-soft-secondary p-2"
style=
"min-height: 55px;"
>
...
...
@@ -1813,7 +1816,7 @@
<div
class=
"col-span-1 p-2"
>
<textarea
type=
"text"
rows=
"2"
class=
"ti-form-input"
[
class
.!
bg-input-readonly
]="!
canEdit
"
[
readonly
]="!
canEdit
"
[(
ngModel
)]="
appraisalPms
.
data
.
employeeStrengths
"
></textarea>
[(
ngModel
)]="
appraisalPms
.
employeeStrengths
"
></textarea>
</div>
</div>
<div
class=
"col-span-1 grid-cols-1 text-gray-400"
>
...
...
@@ -1823,7 +1826,7 @@
<div
class=
"col-span-1 p-2"
>
<textarea
type=
"text"
rows=
"2"
class=
"ti-form-input"
[
class
.!
bg-input-readonly
]="!
canEdit
"
[
readonly
]="!
canEdit
"
[(
ngModel
)]="
appraisalPms
.
data
.
learningTopicsForStrengths
"
></textarea>
[(
ngModel
)]="
appraisalPms
.
learningTopicsForStrengths
"
></textarea>
</div>
</div>
</div>
...
...
@@ -1835,7 +1838,7 @@
<div
class=
"col-span-1 p-2"
>
<textarea
type=
"text"
rows=
"2"
class=
"ti-form-input"
[
class
.!
bg-input-readonly
]="!
canEdit
"
[
readonly
]="!
canEdit
"
[(
ngModel
)]="
appraisalPms
.
data
.
performanceWeaknesses
"
></textarea>
[(
ngModel
)]="
appraisalPms
.
performanceWeaknesses
"
></textarea>
</div>
</div>
<div
class=
"col-span-1 grid-cols-1 text-gray-400"
>
...
...
@@ -1845,7 +1848,7 @@
<div
class=
"col-span-1 p-2"
>
<textarea
type=
"text"
rows=
"2"
class=
"ti-form-input"
[
class
.!
bg-input-readonly
]="!
canEdit
"
[
readonly
]="!
canEdit
"
[(
ngModel
)]="
appraisalPms
.
data
.
learningTopicsForWeaknesses
"
></textarea>
[(
ngModel
)]="
appraisalPms
.
learningTopicsForWeaknesses
"
></textarea>
</div>
</div>
</div>
...
...
@@ -1857,7 +1860,7 @@
<div
class=
"col-span-1 p-2"
>
<textarea
type=
"text"
rows=
"2"
class=
"ti-form-input"
[
class
.!
bg-input-readonly
]="!
canEdit
"
[
readonly
]="!
canEdit
"
[(
ngModel
)]="
appraisalPms
.
data
.
improvementPlan
"
></textarea>
[(
ngModel
)]="
appraisalPms
.
improvementPlan
"
></textarea>
</div>
</div>
<div
class=
"col-span-1 grid-cols-1 text-gray-400"
>
...
...
@@ -1867,7 +1870,7 @@
<div
class=
"col-span-1 p-2"
>
<textarea
type=
"text"
rows=
"2"
class=
"ti-form-input"
[
class
.!
bg-input-readonly
]="!
canEdit
"
[
readonly
]="!
canEdit
"
[(
ngModel
)]="
appraisalPms
.
data
.
learningTopicsForImprovement
"
></textarea>
[(
ngModel
)]="
appraisalPms
.
learningTopicsForImprovement
"
></textarea>
</div>
</div>
</div>
...
...
@@ -1882,7 +1885,7 @@
<ng-template
#
part10
>
<div
class=
"hs-accordion active overflow-hidden bg-white border -mt-px first:rounded-t-sm last:rounded-b-sm dark:bg-bgdark dark:border-white/10"
id=
"hs-primary-heading-1"
>
<button
<button
(
click
)="
scrollToTable
($
event
)"
class=
"hs-accordion-toggle hs-accordion-active:text-white hs-accordion-active:bg-secondary group py-4 px-5 inline-flex items-center justify-between gap-x-3 w-full font-semibold text-start text-gray-800 transition hover:text-gray-500 dark:hs-accordion-active:text-white dark:text-gray-200 dark:hover:text-white/80"
aria-controls=
"hs-primary-collapse-1"
type=
"button"
>
<svg
class=
"flex-shrink-0 h-6 w-6 text-white"
width=
"16"
height=
"16"
viewBox=
"0 0 16 16"
fill=
"none"
...
...
@@ -1913,9 +1916,9 @@
aria-labelledby=
"hs-primary-heading-1"
>
<div
class=
"box-body p-0"
>
<div
class=
"space-y-4"
>
<div
class=
"pb-1rem p-2"
*
ngIf=
"appraisalPms
.data
"
>
<div
class=
"pb-1rem p-2"
*
ngIf=
"appraisalPms"
>
<textarea
type=
"text"
rows=
"2"
class=
"ti-form-input"
[
class
.!
bg-input-readonly
]="!
canEdit
"
[
readonly
]="!
canEdit
"
[(
ngModel
)]="
appraisalPms
.
data
.
cfrDetail
"
></textarea>
[
readonly
]="!
canEdit
"
[(
ngModel
)]="
appraisalPms
.
cfrDetail
"
></textarea>
</div>
</div>
</div>
...
...
src/app/components/performance-evaluation/pms-form-employee/pms-kpi/pms-kpi.component.ts
View file @
caf318d4
import
{
ChangeDetectorRef
,
Component
,
EventEmitter
,
Input
,
Output
,
SimpleChanges
}
from
'@angular/core'
;
import
{
AppraisalPmsFormModel
}
from
'src/app/shared/model/appraisal-pms-form.model'
;
import
{
CompetencyGradeModel
,
MyCompetencyGradeModel
}
from
'src/app/shared/model/competency-grades.model'
;
import
{
AppraisalService
}
from
'src/app/shared/services/appraisal.service'
;
import
{
EmployeeService
}
from
'src/app/shared/services/employee.service'
;
import
{
PmsGroupGradeService
}
from
'src/app/shared/services/pms-group-grade.service'
;
import
{
SettingAssessmentService
}
from
'src/app/shared/services/setting-assessment.service'
;
import
{
Pms
}
from
'src/app/shared/model/competency.model'
;
import
Swal
from
'sweetalert2'
;
export
interface
Part8Model
{
...
...
@@ -91,11 +91,10 @@ export class PmsKpiComponent {
canEdit
=
false
canSave
=
false
currentDate
=
new
Date
()
@
Input
()
evaluationRoundId
=
""
@
Input
()
evaluateeId
=
""
@
Input
()
evaluaterId
=
""
@
Input
()
appraisalPms
?:
Pms
@
Output
()
sendReturnPath
:
EventEmitter
<
any
>
=
new
EventEmitter
<
any
>
();
appraisalPms
:
{
loading
:
boolean
,
data
?:
AppraisalPmsFormModel
}
=
{
loading
:
false
,
data
:
undefined
}
groupGrade
:
{
loading
:
boolean
,
dataList
:
CompetencyGradeModel
[]
}
=
{
loading
:
false
,
dataList
:
[]
}
constructor
(
private
appraisalService
:
AppraisalService
,
private
pmsGroupGradeService
:
PmsGroupGradeService
,
...
...
@@ -111,7 +110,6 @@ export class PmsKpiComponent {
}
ngOnInit
():
void
{
this
.
getPmsGroupGradeList
()
this
.
getAppraisalPmsForm
()
}
getPmsGroupGradeList
()
{
this
.
groupGrade
.
loading
=
true
...
...
@@ -126,101 +124,6 @@ export class PmsKpiComponent {
}
})
}
getAppraisalPmsForm
()
{
this
.
appraisalPms
.
loading
=
true
this
.
appraisalService
.
getFormPmsById
(
this
.
evaluationRoundId
,
this
.
evaluateeId
).
subscribe
({
next
:
response
=>
{
this
.
appraisalPms
.
data
=
JSON
.
parse
(
JSON
.
stringify
(
response
))
this
.
data8List
.
forEach
((
x
,
i
)
=>
{
if
(
x
.
id
==
1
&&
this
.
appraisalPms
.
data
?.
part1Percentage
)
{
x
.
factors
=
this
.
appraisalPms
.
data
.
part1Percentage
}
else
if
(
x
.
id
==
2
&&
this
.
appraisalPms
.
data
?.
part2Percentage
)
{
x
.
factors
=
this
.
appraisalPms
.
data
.
part2Percentage
}
else
if
(
x
.
id
==
3
&&
this
.
appraisalPms
.
data
?.
part3Percentage
)
{
x
.
factors
=
this
.
appraisalPms
.
data
.
part3Percentage
}
else
if
(
x
.
id
==
4
&&
this
.
appraisalPms
.
data
?.
part4Percentage
)
{
x
.
factors
=
this
.
appraisalPms
.
data
.
part4Percentage
}
else
if
(
x
.
id
==
5
&&
this
.
appraisalPms
.
data
?.
part5Percentage
)
{
x
.
factors
=
this
.
appraisalPms
.
data
.
part5Percentage
}
else
if
(
x
.
id
==
6
&&
this
.
appraisalPms
.
data
?.
part6Percentage
)
{
x
.
factors
=
this
.
appraisalPms
.
data
.
part6Percentage
}
else
if
(
x
.
id
==
7
&&
this
.
appraisalPms
.
data
?.
part7Percentage
)
{
x
.
factors
=
this
.
appraisalPms
.
data
.
part7Percentage
}
})
if
(
!
this
.
appraisalPms
.
data
?.
part1Detail
.
length
)
{
this
.
data8List
=
this
.
data8List
.
filter
(
item
=>
item
.
id
!==
1
)
}
if
(
!
this
.
appraisalPms
.
data
?.
part2Detail
.
length
)
{
this
.
data8List
=
this
.
data8List
.
filter
(
item
=>
item
.
id
!==
2
)
}
if
(
!
this
.
appraisalPms
.
data
?.
part3Detail
.
length
)
{
this
.
data8List
=
this
.
data8List
.
filter
(
item
=>
item
.
id
!==
3
)
}
if
(
!
this
.
appraisalPms
.
data
?.
part4Detail
.
length
)
{
this
.
data8List
=
this
.
data8List
.
filter
(
item
=>
item
.
id
!==
4
)
}
if
(
!
this
.
appraisalPms
.
data
?.
part5Detail
.
length
)
{
this
.
data8List
=
this
.
data8List
.
filter
(
item
=>
item
.
id
!==
5
)
}
if
(
!
this
.
appraisalPms
.
data
?.
part6Detail
.
length
)
{
this
.
data8List
=
this
.
data8List
.
filter
(
item
=>
item
.
id
!==
6
)
}
if
(
!
this
.
appraisalPms
.
data
?.
part7Detail
.
length
)
{
this
.
data8List
=
this
.
data8List
.
filter
(
item
=>
item
.
id
!==
7
)
}
this
.
changePercentage
()
if
(
this
.
appraisalPms
.
data
)
{
this
.
canSave
=
(
this
.
appraisalPms
.
data
.
currentStep
==
this
.
appraisalPms
.
data
.
checkStep
)
&&
this
.
appraisalPms
.
data
.
masfromStatusType
.
code
!=
'Boss_finish'
&&
this
.
appraisalPms
.
data
.
masfromStatusType
.
code
!=
'Not_evaluating_yet'
this
.
canEdit
=
(
this
.
appraisalPms
.
data
.
currentStep
==
this
.
appraisalPms
.
data
.
checkStep
)
&&
(
+
(
this
.
appraisalPms
.
data
.
checkStep
)
<=
1
)
&&
this
.
appraisalPms
.
data
.
masfromStatusType
.
code
!=
'Boss_finish'
&&
this
.
appraisalPms
.
data
.
masfromStatusType
.
code
!=
'Not_evaluating_yet'
switch
(
this
.
appraisalPms
.
data
?.
currentStep
)
{
case
(
"0"
):
{
if
(
this
.
canSave
)
{
this
.
appraisalPms
.
data
.
apsassessyDate
=
this
.
currentDate
.
toISOString
().
split
(
'T'
)[
0
];
}
break
}
case
(
"1"
):
{
if
(
this
.
canSave
)
{
this
.
appraisalPms
.
data
.
apsapprove1Date
=
this
.
currentDate
.
toISOString
().
split
(
'T'
)[
0
];
}
break
}
case
(
"2"
):
{
if
(
this
.
canSave
)
{
this
.
appraisalPms
.
data
.
apsapprove2Date
=
this
.
currentDate
.
toISOString
().
split
(
'T'
)[
0
];
}
break
}
case
(
"3"
):
{
if
(
this
.
canSave
)
{
this
.
appraisalPms
.
data
.
apsapprove3Date
=
this
.
currentDate
.
toISOString
().
split
(
'T'
)[
0
];
}
break
}
case
(
"4"
):
{
if
(
this
.
canSave
)
{
this
.
appraisalPms
.
data
.
apsapprove4Date
=
this
.
currentDate
.
toISOString
().
split
(
'T'
)[
0
];
}
break
}
case
(
"5"
):
{
if
(
this
.
canSave
)
{
this
.
appraisalPms
.
data
.
apsapprove5Date
=
this
.
currentDate
.
toISOString
().
split
(
'T'
)[
0
];
}
break
}
default
:
{
return
}
}
}
this
.
appraisalPms
.
loading
=
false
this
.
cdr
.
detectChanges
()
},
error
:
error
=>
{
this
.
appraisalPms
.
loading
=
false
this
.
cdr
.
detectChanges
()
}
})
}
returnPath
()
{
this
.
sendReturnPath
.
emit
()
}
...
...
@@ -257,40 +160,40 @@ export class PmsKpiComponent {
}
changePercentage
()
{
this
.
data8List
.
forEach
(
x
=>
{
if
(
x
.
id
==
1
&&
this
.
appraisalPms
.
data
?.
part1Detail
)
{
x
.
scoreObtained
=
+
this
.
calPercentage
(
this
.
calExpectationTotalScore
(
this
.
appraisalPms
.
data
?.
part1Detail
),
this
.
calRawScore
(
this
.
appraisalPms
.
data
?.
part1Detail
))
if
(
this
.
appraisalPms
.
data
)
{
this
.
appraisalPms
.
data
.
part1SumScore
=
x
.
scoreObtained
}
}
else
if
(
x
.
id
==
2
&&
this
.
appraisalPms
.
data
?.
part2Detail
)
{
x
.
scoreObtained
=
+
this
.
calPercentage
(
this
.
calExpectationTotalScore
(
this
.
appraisalPms
.
data
?.
part2Detail
),
this
.
calRawScore
(
this
.
appraisalPms
.
data
?.
part2Detail
))
if
(
this
.
appraisalPms
.
data
)
{
this
.
appraisalPms
.
data
.
part2SumScore
=
x
.
scoreObtained
}
}
else
if
(
x
.
id
==
3
&&
this
.
appraisalPms
.
data
?.
part3Detail
)
{
x
.
scoreObtained
=
+
this
.
calPercentage
(
this
.
calExpectationTotalScore
(
this
.
appraisalPms
.
data
?.
part3Detail
),
this
.
calRawScore
(
this
.
appraisalPms
.
data
?.
part3Detail
))
if
(
this
.
appraisalPms
.
data
)
{
this
.
appraisalPms
.
data
.
part3SumScore
=
x
.
scoreObtained
}
}
else
if
(
x
.
id
==
4
&&
this
.
appraisalPms
.
data
?.
part4Detail
)
{
x
.
scoreObtained
=
+
this
.
calPercentage
(
this
.
calExpectationTotalScorePart4
(
this
.
appraisalPms
.
data
?.
part4Detail
),
this
.
calRawScorePart4
(
this
.
appraisalPms
.
data
?.
part4Detail
))
if
(
this
.
appraisalPms
.
data
)
{
this
.
appraisalPms
.
data
.
part4SumScore
=
x
.
scoreObtained
}
}
else
if
(
x
.
id
==
5
&&
this
.
appraisalPms
.
data
?.
part5Detail
)
{
x
.
scoreObtained
=
+
this
.
calPercentage
(
this
.
calExpectationTotalScorePart5
(
this
.
appraisalPms
.
data
?.
part5Detail
),
this
.
calRawScorePart5
(
this
.
appraisalPms
.
data
?.
part5Detail
))
if
(
this
.
appraisalPms
.
data
)
{
this
.
appraisalPms
.
data
.
part5SumScore
=
x
.
scoreObtained
}
}
else
if
(
x
.
id
==
6
&&
this
.
appraisalPms
.
data
?.
part6Detail
)
{
x
.
scoreObtained
=
+
this
.
calPercentage
(
this
.
calExpectationTotalScore
(
this
.
appraisalPms
.
data
?.
part6Detail
),
this
.
calRawScore
(
this
.
appraisalPms
.
data
?.
part6Detail
))
if
(
this
.
appraisalPms
.
data
)
{
this
.
appraisalPms
.
data
.
part6SumScore
=
x
.
scoreObtained
}
}
else
if
(
x
.
id
==
7
&&
this
.
appraisalPms
.
data
?.
part7Detail
)
{
x
.
scoreObtained
=
+
this
.
calPercentage
(
this
.
calExpectationTotalScore
(
this
.
appraisalPms
.
data
?.
part7Detail
),
this
.
calRawScore
(
this
.
appraisalPms
.
data
?.
part7Detail
))
if
(
this
.
appraisalPms
.
data
)
{
this
.
appraisalPms
.
data
.
part7SumScore
=
x
.
scoreObtained
if
(
x
.
id
==
1
&&
this
.
appraisalPms
?.
part1Detail
)
{
x
.
scoreObtained
=
+
this
.
calPercentage
(
this
.
calExpectationTotalScore
(
this
.
appraisalPms
?.
part1Detail
),
this
.
calRawScore
(
this
.
appraisalPms
?.
part1Detail
))
if
(
this
.
appraisalPms
)
{
this
.
appraisalPms
.
part1SumScore
=
x
.
scoreObtained
}
}
else
if
(
x
.
id
==
2
&&
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
}
}
else
if
(
x
.
id
==
3
&&
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
}
}
else
if
(
x
.
id
==
4
&&
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
}
}
else
if
(
x
.
id
==
5
&&
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
}
}
else
if
(
x
.
id
==
6
&&
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
}
}
else
if
(
x
.
id
==
7
&&
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
}
}
x
.
netScore
=
x
.
factors
/
100
*
x
.
scoreObtained
...
...
@@ -299,8 +202,8 @@ export class PmsKpiComponent {
}
setGradeScore
()
{
const
gradeScore
=
this
.
groupGrade
.
dataList
.
find
(
item
=>
Math
.
ceil
(
+
this
.
calNetScore
())
>=
item
.
gradeMinScore
&&
Math
.
ceil
(
+
this
.
calNetScore
())
<=
item
.
gradeMaxScore
);
if
(
this
.
appraisalPms
.
data
&&
gradeScore
)
{
this
.
appraisalPms
.
data
.
gradeScore
=
gradeScore
.
gradeDetail
if
(
this
.
appraisalPms
&&
gradeScore
)
{
this
.
appraisalPms
.
gradeScore
=
gradeScore
.
gradeDetail
}
}
...
...
@@ -311,9 +214,9 @@ export class PmsKpiComponent {
return
this
.
data8List
.
reduce
((
sum
:
number
,
item
:
any
)
=>
sum
+
item
.
scoreObtained
,
0
).
toFixed
(
2
);
}
calNetScore
()
{
if
(
this
.
appraisalPms
.
data
)
{
this
.
appraisalPms
.
data
.
netScore
=
+
(
this
.
data8List
.
reduce
((
sum
:
number
,
item
:
any
)
=>
sum
+
item
.
netScore
,
0
).
toFixed
(
2
));
return
this
.
appraisalPms
.
data
.
netScore
if
(
this
.
appraisalPms
)
{
this
.
appraisalPms
.
netScore
=
+
(
this
.
data8List
.
reduce
((
sum
:
number
,
item
:
any
)
=>
sum
+
item
.
netScore
,
0
).
toFixed
(
2
));
return
this
.
appraisalPms
.
netScore
}
return
"0.00"
}
...
...
@@ -444,7 +347,7 @@ export class PmsKpiComponent {
approveStatus
=
'1'
}
else
if
(
status
==
'approve'
)
{
approveStatus
=
'2'
if
(
this
.
appraisalPms
?.
data
?.
checkStep
==
'0'
)
{
if
(
this
.
appraisalPms
?.
checkStep
==
'0'
)
{
title
=
'ยืนยันข้อมูล'
text
=
'คุณต้องการยืนยันข้อมูลการประเมินนี้ใช่หรือไม่'
confirmButtonText
=
'ยืนยันการบันทึก'
...
...
@@ -504,51 +407,51 @@ export class PmsKpiComponent {
})
}
saveApi
(
approveStatus
:
string
)
{
let
body
=
this
.
appraisalPms
.
data
switch
(
this
.
appraisalPms
.
data
?.
currentStep
)
{
let
body
=
this
.
appraisalPms
switch
(
this
.
appraisalPms
?.
currentStep
)
{
case
(
"0"
):
{
body
=
{
...
this
.
appraisalPms
.
data
,
...
this
.
appraisalPms
,
apsassessyStatus
:
approveStatus
}
break
}
case
(
"1"
):
{
body
=
{
...
this
.
appraisalPms
.
data
,
...
this
.
appraisalPms
,
apsapprove1Status
:
approveStatus
}
break
}
case
(
"2"
):
{
body
=
{
...
this
.
appraisalPms
.
data
,
apsapprove1Status
:
approveStatus
==
'0'
?
approveStatus
:
this
.
appraisalPms
.
data
.
apsapprove1Status
,
...
this
.
appraisalPms
,
apsapprove1Status
:
approveStatus
==
'0'
?
approveStatus
:
this
.
appraisalPms
.
apsapprove1Status
,
apsapprove2Status
:
approveStatus
}
break
}
case
(
"3"
):
{
body
=
{
...
this
.
appraisalPms
.
data
,
...
this
.
appraisalPms
,
apsapprove2Status
:
approveStatus
==
'0'
?
approveStatus
:
this
.
appraisalPms
.
data
.
apsapprove2Status
,
apsapprove2Status
:
approveStatus
==
'0'
?
approveStatus
:
this
.
appraisalPms
.
apsapprove2Status
,
apsapprove3Status
:
approveStatus
}
break
}
case
(
"4"
):
{
body
=
{
...
this
.
appraisalPms
.
data
,
apsapprove3Status
:
approveStatus
==
'0'
?
approveStatus
:
this
.
appraisalPms
.
data
.
apsapprove3Status
,
...
this
.
appraisalPms
,
apsapprove3Status
:
approveStatus
==
'0'
?
approveStatus
:
this
.
appraisalPms
.
apsapprove3Status
,
apsapprove4Status
:
approveStatus
}
break
}
case
(
"5"
):
{
body
=
{
...
this
.
appraisalPms
.
data
,
apsapprove4Status
:
approveStatus
==
'0'
?
approveStatus
:
this
.
appraisalPms
.
data
.
apsapprove4Status
,
...
this
.
appraisalPms
,
apsapprove4Status
:
approveStatus
==
'0'
?
approveStatus
:
this
.
appraisalPms
.
apsapprove4Status
,
apsapprove5Status
:
approveStatus
}
break
...
...
@@ -566,7 +469,6 @@ export class PmsKpiComponent {
confirmButton
:
'!swal2-button-bg-green'
,
}
});
this
.
getAppraisalPmsForm
()
}
else
{
Swal
.
fire
({
title
:
'ยกเลิก!'
,
...
...
@@ -602,4 +504,14 @@ export class PmsKpiComponent {
this
.
part9show
=
check
this
.
part10show
=
check
}
scrollToTable
(
event
:
MouseEvent
)
{
const
target
=
event
.
target
as
HTMLElement
;
const
position
=
target
.
getBoundingClientRect
();
window
.
scrollTo
({
top
:
position
.
top
+
window
.
scrollY
-
100
,
behavior
:
'smooth'
});
}
}
src/app/components/performance-evaluation/self-evaluation/self-evaluation.component.html
View file @
caf318d4
...
...
@@ -8,10 +8,8 @@
</div> -->
</ng-container>
<ng-template
#
newSelfEvaluation
>
<ng-container
*
ngIf=
"appraisalCompentency.select&&allCompetencyTypeId.length"
>
<app-pms-form-employee
[
evaluationForm
]="'
self
'"
[
evaluationRoundId
]="
appraisalCompentency
.
select
.
masfromEvaluationRound
.
evaluationRoundId
"
[
evaluaterId
]="
evaluatee
.
data
.
employeeId
"
[
allCompetencyTypeId
]="
allCompetencyTypeId
"
<ng-container
*
ngIf=
"appraisalCompentency.select&&allCompetencyTypeId.length&&evaluatee.data.employeeId"
>
<app-pms-form-employee
[
evaluationForm
]="'
self
'"
[
evaluaterId
]="
evaluatee
.
data
.
employeeId
"
[
evaluateeId
]="
evaluatee
.
data
.
employeeId
"
></app-pms-form-employee>
</ng-container>
</ng-template>
...
...
src/app/components/performance-evaluation/supervisor-evaluation/supervisor-evaluation.component.html
View file @
caf318d4
...
...
@@ -251,9 +251,7 @@
[evaluateeId]="formEvaluation.evaluateeId"></app-idp-evalution> -->
<app-pms-form-employee
[
evaluationForm
]="'
sup
'"
[
currentTap
]="'
idp
'"
(
sendReturnPath
)="
getBossList
();
pageEvalution=
''
;
pathTitle =
['การประเมินผล',
'ประเมินโดยหัวหน้า']"
[
evaluationRoundId
]="
formEvaluation
.
evaluationRoundId
"
[
evaluaterId
]="
formEvaluation
.
evaluaterId
"
[
allCompetencyTypeId
]="
formEvaluation
.
allCompetencyTypeId
"
[
evaluateeId
]="
formEvaluation
.
evaluateeId
"
></app-pms-form-employee>
[
evaluaterId
]="
formEvaluation
.
evaluaterId
"
[
evaluateeId
]="
formEvaluation
.
evaluateeId
"
></app-pms-form-employee>
</ng-container>
<ng-container
*
ngIf=
"pageEvalution=='pms'"
>
<!-- <app-pms-evalution [pathTitle]="['การประเมินผล', 'ประเมินโดยหัวหน้า','ประเมิน']"
...
...
@@ -262,8 +260,7 @@
[evaluateeId]="formEvaluation.evaluateeId"></app-pms-evalution> -->
<app-pms-form-employee
[
evaluationForm
]="'
sup
'"
[
currentTap
]="'
pms
'"
(
sendReturnPath
)="
getBossList
();
pageEvalution=
''
;
pathTitle =
['การประเมินผล',
'ประเมินโดยหัวหน้า']"
[
evaluationRoundId
]="
formEvaluation
.
evaluationRoundId
"
[
evaluaterId
]="
formEvaluation
.
evaluaterId
"
[
evaluateeId
]="
formEvaluation
.
evaluateeId
"
></app-pms-form-employee>
[
evaluaterId
]="
formEvaluation
.
evaluaterId
"
[
evaluateeId
]="
formEvaluation
.
evaluateeId
"
></app-pms-form-employee>
</ng-container>
<ng-container
*
ngIf=
"pageEvalution!='idp'&&pageEvalution!='pms'&&pageEvalution!=''"
>
<!-- <app-evaluation [pathTitle]="['การประเมินผล', 'ประเมินโดยหัวหน้า','ประเมิน']"
...
...
@@ -273,7 +270,5 @@
[competencyTypeId]="formEvaluation.competencyTypeId"></app-evaluation> -->
<app-pms-form-employee
[
evaluationForm
]="'
sup
'"
[
currentTap
]="
pageEvalution
"
(
sendReturnPath
)="
getBossList
();
pageEvalution=
''
;
pathTitle =
['การประเมินผล',
'ประเมินโดยหัวหน้า']"
[
evaluationRoundId
]="
formEvaluation
.
evaluationRoundId
"
[
evaluaterId
]="
formEvaluation
.
evaluaterId
"
[
allCompetencyTypeId
]="
formEvaluation
.
allCompetencyTypeId
"
[
evaluateeId
]="
formEvaluation
.
evaluateeId
"
></app-pms-form-employee>
[
evaluaterId
]="
formEvaluation
.
evaluaterId
"
[
evaluateeId
]="
formEvaluation
.
evaluateeId
"
></app-pms-form-employee>
</ng-container>
\ No newline at end of file
src/app/shared/model/appraisal-competency.model.ts
View file @
caf318d4
...
...
@@ -743,6 +743,7 @@ export interface AppraisalCompentencyModel2 {
lastStep
:
string
checkStep
:
string
masfromStatusType
:
MasfromStatusType
comType
:
string
}
export
interface
MasfromStatusType
{
code
:
string
...
...
src/app/shared/model/competency.model.ts
0 → 100644
View file @
caf318d4
export
interface
CompetencyModel
{
competency
:
Competency
[]
idp
:
Idp
pms
:
Pms
statusAll
:
StatusAll
evaluationRoundId
:
string
,
tdesc
:
string
,
edesc
:
string
,
}
export
interface
Competency
{
active
:
boolean
apsapprove1
:
Apsapprove1
apsapprove2
:
Apsapprove2
apsapprove3
:
Apsapprove3
apsapprove4
:
Apsapprove4
apsapprove5
:
Apsapprove5
apsassessy
:
Apsassessy
checkStep
:
string
companyId
:
string
comType
:
string
currentStep
:
string
lastStep
:
string
masfromEvaluationAssessment1lList
:
MasfromEvaluationAssessment1lList
[]
masfromEvaluationRound
:
MasfromEvaluationRound
masfromStatusType
:
MasfromStatusType
personalLevel
:
PersonalLevel2
}
export
interface
Apsapprove1
{
bossId
:
string
bu1
:
Bu1
bu2
:
Bu2
bu3
:
Bu3
bu4
:
Bu4
bu5
:
Bu5
efname
:
string
elname
:
string
employeeId
:
string
endWorkDate
:
string
engFullName
:
string
fname
:
string
job
:
Job
lname
:
string
pl
:
Pl
position
:
Position
prefix
:
Prefix
resignDate
:
string
startDate
:
string
status
:
Status
thFullName
:
string
time0
:
Time0
}
export
interface
Bu1
{
bu1id
:
string
companyId
:
string
edesc
:
string
tdesc
:
string
}
export
interface
Bu2
{
bu2id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu3
{
bu3id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu4
{
bu4id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu5
{
bu5id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Job
{
edesc
:
string
jobCodeId
:
string
tdesc
:
string
}
export
interface
Pl
{
companyId
:
string
edesc
:
string
plId
:
string
tdesc
:
string
}
export
interface
Position
{
companyId
:
string
consolidate
:
string
edesc
:
string
positionId
:
string
shortName
:
string
tdesc
:
string
}
export
interface
Prefix
{
edesc
:
string
prefixId
:
string
tdesc
:
string
}
export
interface
Status
{
edesc
:
string
statusCode
:
string
statusType
:
string
tdesc
:
string
}
export
interface
Time0
{
edesc
:
string
hourD
:
number
stickTm
:
string
tdesc
:
string
time0id
:
string
}
export
interface
Apsapprove2
{
bossId
:
string
bu1
:
Bu12
bu2
:
Bu22
bu3
:
Bu32
bu4
:
Bu42
bu5
:
Bu52
efname
:
string
elname
:
string
employeeId
:
string
endWorkDate
:
string
engFullName
:
string
fname
:
string
job
:
Job2
lname
:
string
pl
:
Pl2
position
:
Position2
prefix
:
Prefix2
resignDate
:
string
startDate
:
string
status
:
Status2
thFullName
:
string
time0
:
Time02
}
export
interface
Bu12
{
bu1id
:
string
companyId
:
string
edesc
:
string
tdesc
:
string
}
export
interface
Bu22
{
bu2id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu32
{
bu3id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu42
{
bu4id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu52
{
bu5id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Job2
{
edesc
:
string
jobCodeId
:
string
tdesc
:
string
}
export
interface
Pl2
{
companyId
:
string
edesc
:
string
plId
:
string
tdesc
:
string
}
export
interface
Position2
{
companyId
:
string
consolidate
:
string
edesc
:
string
positionId
:
string
shortName
:
string
tdesc
:
string
}
export
interface
Prefix2
{
edesc
:
string
prefixId
:
string
tdesc
:
string
}
export
interface
Status2
{
edesc
:
string
statusCode
:
string
statusType
:
string
tdesc
:
string
}
export
interface
Time02
{
edesc
:
string
hourD
:
number
stickTm
:
string
tdesc
:
string
time0id
:
string
}
export
interface
Apsapprove3
{
bossId
:
string
bu1
:
Bu13
bu2
:
Bu23
bu3
:
Bu33
bu4
:
Bu43
bu5
:
Bu53
efname
:
string
elname
:
string
employeeId
:
string
endWorkDate
:
string
engFullName
:
string
fname
:
string
job
:
Job3
lname
:
string
pl
:
Pl3
position
:
Position3
prefix
:
Prefix3
resignDate
:
string
startDate
:
string
status
:
Status3
thFullName
:
string
time0
:
Time03
}
export
interface
Bu13
{
bu1id
:
string
companyId
:
string
edesc
:
string
tdesc
:
string
}
export
interface
Bu23
{
bu2id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu33
{
bu3id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu43
{
bu4id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu53
{
bu5id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Job3
{
edesc
:
string
jobCodeId
:
string
tdesc
:
string
}
export
interface
Pl3
{
companyId
:
string
edesc
:
string
plId
:
string
tdesc
:
string
}
export
interface
Position3
{
companyId
:
string
consolidate
:
string
edesc
:
string
positionId
:
string
shortName
:
string
tdesc
:
string
}
export
interface
Prefix3
{
edesc
:
string
prefixId
:
string
tdesc
:
string
}
export
interface
Status3
{
edesc
:
string
statusCode
:
string
statusType
:
string
tdesc
:
string
}
export
interface
Time03
{
edesc
:
string
hourD
:
number
stickTm
:
string
tdesc
:
string
time0id
:
string
}
export
interface
Apsapprove4
{
bossId
:
string
bu1
:
Bu14
bu2
:
Bu24
bu3
:
Bu34
bu4
:
Bu44
bu5
:
Bu54
efname
:
string
elname
:
string
employeeId
:
string
endWorkDate
:
string
engFullName
:
string
fname
:
string
job
:
Job4
lname
:
string
pl
:
Pl4
position
:
Position4
prefix
:
Prefix4
resignDate
:
string
startDate
:
string
status
:
Status4
thFullName
:
string
time0
:
Time04
}
export
interface
Bu14
{
bu1id
:
string
companyId
:
string
edesc
:
string
tdesc
:
string
}
export
interface
Bu24
{
bu2id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu34
{
bu3id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu44
{
bu4id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu54
{
bu5id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Job4
{
edesc
:
string
jobCodeId
:
string
tdesc
:
string
}
export
interface
Pl4
{
companyId
:
string
edesc
:
string
plId
:
string
tdesc
:
string
}
export
interface
Position4
{
companyId
:
string
consolidate
:
string
edesc
:
string
positionId
:
string
shortName
:
string
tdesc
:
string
}
export
interface
Prefix4
{
edesc
:
string
prefixId
:
string
tdesc
:
string
}
export
interface
Status4
{
edesc
:
string
statusCode
:
string
statusType
:
string
tdesc
:
string
}
export
interface
Time04
{
edesc
:
string
hourD
:
number
stickTm
:
string
tdesc
:
string
time0id
:
string
}
export
interface
Apsapprove5
{
bossId
:
string
bu1
:
Bu15
bu2
:
Bu25
bu3
:
Bu35
bu4
:
Bu45
bu5
:
Bu55
efname
:
string
elname
:
string
employeeId
:
string
endWorkDate
:
string
engFullName
:
string
fname
:
string
job
:
Job5
lname
:
string
pl
:
Pl5
position
:
Position5
prefix
:
Prefix5
resignDate
:
string
startDate
:
string
status
:
Status5
thFullName
:
string
time0
:
Time05
}
export
interface
Bu15
{
bu1id
:
string
companyId
:
string
edesc
:
string
tdesc
:
string
}
export
interface
Bu25
{
bu2id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu35
{
bu3id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu45
{
bu4id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu55
{
bu5id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Job5
{
edesc
:
string
jobCodeId
:
string
tdesc
:
string
}
export
interface
Pl5
{
companyId
:
string
edesc
:
string
plId
:
string
tdesc
:
string
}
export
interface
Position5
{
companyId
:
string
consolidate
:
string
edesc
:
string
positionId
:
string
shortName
:
string
tdesc
:
string
}
export
interface
Prefix5
{
edesc
:
string
prefixId
:
string
tdesc
:
string
}
export
interface
Status5
{
edesc
:
string
statusCode
:
string
statusType
:
string
tdesc
:
string
}
export
interface
Time05
{
edesc
:
string
hourD
:
number
stickTm
:
string
tdesc
:
string
time0id
:
string
}
export
interface
Apsassessy
{
bossId
:
string
bu1
:
Bu16
bu2
:
Bu26
bu3
:
Bu36
bu4
:
Bu46
bu5
:
Bu56
efname
:
string
elname
:
string
employeeId
:
string
endWorkDate
:
string
engFullName
:
string
fname
:
string
job
:
Job6
lname
:
string
pl
:
Pl6
position
:
Position6
prefix
:
Prefix6
resignDate
:
string
startDate
:
string
status
:
Status6
thFullName
:
string
time0
:
Time06
}
export
interface
Bu16
{
bu1id
:
string
companyId
:
string
edesc
:
string
tdesc
:
string
}
export
interface
Bu26
{
bu2id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu36
{
bu3id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu46
{
bu4id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu56
{
bu5id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Job6
{
edesc
:
string
jobCodeId
:
string
tdesc
:
string
}
export
interface
Pl6
{
companyId
:
string
edesc
:
string
plId
:
string
tdesc
:
string
}
export
interface
Position6
{
companyId
:
string
consolidate
:
string
edesc
:
string
positionId
:
string
shortName
:
string
tdesc
:
string
}
export
interface
Prefix6
{
edesc
:
string
prefixId
:
string
tdesc
:
string
}
export
interface
Status6
{
edesc
:
string
statusCode
:
string
statusType
:
string
tdesc
:
string
}
export
interface
Time06
{
edesc
:
string
hourD
:
number
stickTm
:
string
tdesc
:
string
time0id
:
string
}
export
interface
MasfromEvaluationAssessment1lList
{
apsapprove1Comment
:
string
apsapprove1Date
:
string
apsapprove1Status
:
string
apsapprove2Comment
:
string
apsapprove2Date
:
string
apsapprove2Status
:
string
apsapprove3Comment
:
string
apsapprove3Date
:
string
apsapprove3Status
:
string
apsapprove4Comment
:
string
apsapprove4Date
:
string
apsapprove4Status
:
string
apsapprove5Comment
:
string
apsapprove5Date
:
string
apsapprove5Status
:
string
apsassessyComment
:
string
apsassessyDate
:
string
apsassessyStatus
:
string
averageScore
:
number
companyId
:
string
competencyType
:
CompetencyType
evaluationResults
:
string
lineNo
:
number
numberCheck1
:
number
numberCheck2
:
number
numberCheck3
:
number
numberCheck4
:
number
numberCheck5
:
number
plId
:
string
sumEvaluationResults
:
string
weightedTotal
:
number
masfromEvaluationAssessment2List
:
MasfromEvaluationAssessment2List
[]
}
export
interface
MasfromEvaluationAssessment2List
{
masfromEvaluationAssessment1
:
string
runNo
:
number
companyId
:
string
scoreTopicExpectation
:
number
groupAssessment1
:
GroupAssessment1
}
export
interface
GroupAssessment1
{
personalLevelModel
:
PersonalLevelModel
competencyIndicatorsCourses1Mini
:
CompetencyIndicatorsCourses1Mini
companyId
:
string
groupAssessmentMini
:
GroupAssessmentMini
}
export
interface
GroupAssessmentMini
{
personalLevel
:
PersonalLevel2
competencyIndicatorsCourses1Mini
:
CompetencyIndicatorsCourses1Mini2
companyId
:
string
edesc
:
string
tdesc
:
string
}
export
interface
CompetencyIndicatorsCourses1Mini2
{
competencyIndicatorsCourses0
:
CompetencyIndicatorsCourses03
lineNo
:
number
companyId
:
string
competencyCourseId
:
string
competencyCourse
:
CompetencyCourse2
[]
behavioralIndicatorsList
:
BehavioralIndicatorsList2
[]
}
export
interface
CompetencyIndicatorsCourses03
{
competencyTopic
:
CompetencyTopic3
companyId
:
string
edesc
:
string
tdesc
:
string
indicatorsCourseDetailTh
:
string
indicatorsCourseDetailEn
:
string
expectation
:
string
}
export
interface
BehavioralIndicatorsList2
{
competencyIndicators1
:
CompetencyIndicators12
runNo
:
number
companyId
:
string
assessmentId
:
string
behavioralIndicators
:
string
competencyAssessment
:
CompetencyAssessment2
[]
competencyBehavioral
:
CompetencyBehavioral2
}
export
interface
CompetencyBehavioral2
{
scoreTopicExpectation
:
number
companyId
:
string
}
export
interface
CompetencyAssessment2
{
assessmentId
:
string
companyId
:
string
edesc
:
string
tdesc
:
string
shortName
:
string
}
export
interface
CompetencyTopic4
{
competencyTopicId
:
string
competencyType
:
CompetencyType5
companyId
:
string
edesc
:
string
tdesc
:
string
competencyDetail
:
string
competencyFiles
:
string
lineNo
:
number
expectationLevel
:
string
}
export
interface
CompetencyIndicators12
{
competencyIndicatorsCourses0
:
CompetencyIndicatorsCourses04
lineNo
:
number
companyId
:
string
competencyCourseId
:
string
}
export
interface
CompetencyIndicatorsCourses04
{
competencyTopic
:
CompetencyTopic4
companyId
:
string
edesc
:
string
tdesc
:
string
indicatorsCourseDetailTh
:
string
indicatorsCourseDetailEn
:
string
}
export
interface
CompetencyCourse2
{
competencyCourseId
:
string
companyId
:
string
edesc
:
string
tdesc
:
string
courseDetail
:
string
courseTopic
:
string
courseLinkMylearn
:
string
}
export
interface
CompetencyTopic3
{
competencyTopicId
:
string
competencyType
:
CompetencyType4
companyId
:
string
edesc
:
string
tdesc
:
string
competencyDetail
:
string
competencyFiles
:
string
lineNo
:
number
expectationLevel
:
string
}
export
interface
CompetencyType4
{
competencyTypeId
:
string
companyId
:
string
edesc
:
string
tdesc
:
string
shortName
:
string
expectationLevel
:
string
}
export
interface
BehavioralIndicatorsList
{
competencyIndicators1
:
CompetencyIndicators1
runNo
:
number
companyId
:
string
assessmentId
:
string
behavioralIndicators
:
string
competencyAssessment
:
CompetencyAssessment
[]
competencyBehavioral
:
CompetencyBehavioral
}
export
interface
CompetencyBehavioral
{
scoreTopicExpectation
:
number
companyId
:
string
}
export
interface
CompetencyIndicatorsCourses1Mini
{
competencyIndicatorsCourses0
:
CompetencyIndicatorsCourses0
lineNo
:
number
companyId
:
string
competencyCourseId
:
string
competencyCourse
:
CompetencyCourse
[]
behavioralIndicatorsList
:
BehavioralIndicatorsList
[]
}
export
interface
CompetencyType
{
companyId
:
string
competencyTypeId
:
string
edesc
:
string
expectationLevel
:
string
shortName
:
string
tdesc
:
string
weight
:
number
}
export
interface
MasfromEvaluationRound
{
active
:
number
apsPeriodEnd
:
string
apsPeriodStart
:
string
apsyear
:
string
checkForm
:
number
companyId
:
string
edesc
:
string
evaluationRoundId
:
string
jlId
:
string
personalLevel
:
PersonalLevel
[]
statusCode
:
StatusCode
statusFrom
:
StatusFrom
tdesc
:
string
}
export
interface
PersonalLevel
{
companyId
:
string
edesc
:
string
plId
:
string
tdesc
:
string
}
export
interface
StatusCode
{
code
:
string
edesc
:
string
tdesc
:
string
}
export
interface
StatusFrom
{
code
:
string
edesc
:
string
tdesc
:
string
}
export
interface
MasfromStatusType
{
code
:
string
edesc
:
string
tdesc
:
string
}
export
interface
PersonalLevel2
{
companyId
:
string
edesc
:
string
plId
:
string
tdesc
:
string
}
export
interface
Idp
{
active
:
boolean
apsapprove1
:
Apsapprove12
apsapprove2
:
Apsapprove22
apsapprove3
:
Apsapprove32
apsapprove4
:
Apsapprove42
apsapprove5
:
Apsapprove52
apsassessy
:
Apsassessy2
boss
:
Boss
checkStep
:
string
companyId
:
string
competencyIndicatorsCourses1
:
CompetencyIndicatorsCourses1
[]
countFormStep
:
string
currentStep
:
string
lastStep
:
string
masfromEvaluationIdp
:
MasfromEvaluationIdp
masfromEvaluationRound
:
MasfromEvaluationRound3
masfromStatusType
:
MasfromStatusType3
personalLevel
:
PersonalLevel5
}
export
interface
Apsapprove12
{
bossId
:
string
bu1
:
Bu17
bu2
:
Bu27
bu3
:
Bu37
bu4
:
Bu47
bu5
:
Bu57
efname
:
string
elname
:
string
employeeId
:
string
endWorkDate
:
string
engFullName
:
string
fname
:
string
job
:
Job7
lname
:
string
pl
:
Pl7
position
:
Position7
prefix
:
Prefix7
resignDate
:
string
startDate
:
string
status
:
Status7
thFullName
:
string
time0
:
Time07
}
export
interface
Bu17
{
bu1id
:
string
companyId
:
string
edesc
:
string
tdesc
:
string
}
export
interface
Bu27
{
bu2id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu37
{
bu3id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu47
{
bu4id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu57
{
bu5id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Job7
{
edesc
:
string
jobCodeId
:
string
tdesc
:
string
}
export
interface
Pl7
{
companyId
:
string
edesc
:
string
plId
:
string
tdesc
:
string
}
export
interface
Position7
{
companyId
:
string
consolidate
:
string
edesc
:
string
positionId
:
string
shortName
:
string
tdesc
:
string
}
export
interface
Prefix7
{
edesc
:
string
prefixId
:
string
tdesc
:
string
}
export
interface
Status7
{
edesc
:
string
statusCode
:
string
statusType
:
string
tdesc
:
string
}
export
interface
Time07
{
edesc
:
string
hourD
:
number
stickTm
:
string
tdesc
:
string
time0id
:
string
}
export
interface
Apsapprove22
{
bossId
:
string
bu1
:
Bu18
bu2
:
Bu28
bu3
:
Bu38
bu4
:
Bu48
bu5
:
Bu58
efname
:
string
elname
:
string
employeeId
:
string
endWorkDate
:
string
engFullName
:
string
fname
:
string
job
:
Job8
lname
:
string
pl
:
Pl8
position
:
Position8
prefix
:
Prefix8
resignDate
:
string
startDate
:
string
status
:
Status8
thFullName
:
string
time0
:
Time08
}
export
interface
Bu18
{
bu1id
:
string
companyId
:
string
edesc
:
string
tdesc
:
string
}
export
interface
Bu28
{
bu2id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu38
{
bu3id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu48
{
bu4id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu58
{
bu5id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Job8
{
edesc
:
string
jobCodeId
:
string
tdesc
:
string
}
export
interface
Pl8
{
companyId
:
string
edesc
:
string
plId
:
string
tdesc
:
string
}
export
interface
Position8
{
companyId
:
string
consolidate
:
string
edesc
:
string
positionId
:
string
shortName
:
string
tdesc
:
string
}
export
interface
Prefix8
{
edesc
:
string
prefixId
:
string
tdesc
:
string
}
export
interface
Status8
{
edesc
:
string
statusCode
:
string
statusType
:
string
tdesc
:
string
}
export
interface
Time08
{
edesc
:
string
hourD
:
number
stickTm
:
string
tdesc
:
string
time0id
:
string
}
export
interface
Apsapprove32
{
bossId
:
string
bu1
:
Bu19
bu2
:
Bu29
bu3
:
Bu39
bu4
:
Bu49
bu5
:
Bu59
efname
:
string
elname
:
string
employeeId
:
string
endWorkDate
:
string
engFullName
:
string
fname
:
string
job
:
Job9
lname
:
string
pl
:
Pl9
position
:
Position9
prefix
:
Prefix9
resignDate
:
string
startDate
:
string
status
:
Status9
thFullName
:
string
time0
:
Time09
}
export
interface
Bu19
{
bu1id
:
string
companyId
:
string
edesc
:
string
tdesc
:
string
}
export
interface
Bu29
{
bu2id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu39
{
bu3id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu49
{
bu4id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu59
{
bu5id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Job9
{
edesc
:
string
jobCodeId
:
string
tdesc
:
string
}
export
interface
Pl9
{
companyId
:
string
edesc
:
string
plId
:
string
tdesc
:
string
}
export
interface
Position9
{
companyId
:
string
consolidate
:
string
edesc
:
string
positionId
:
string
shortName
:
string
tdesc
:
string
}
export
interface
Prefix9
{
edesc
:
string
prefixId
:
string
tdesc
:
string
}
export
interface
Status9
{
edesc
:
string
statusCode
:
string
statusType
:
string
tdesc
:
string
}
export
interface
Time09
{
edesc
:
string
hourD
:
number
stickTm
:
string
tdesc
:
string
time0id
:
string
}
export
interface
Apsapprove42
{
bossId
:
string
bu1
:
Bu110
bu2
:
Bu210
bu3
:
Bu310
bu4
:
Bu410
bu5
:
Bu510
efname
:
string
elname
:
string
employeeId
:
string
endWorkDate
:
string
engFullName
:
string
fname
:
string
job
:
Job10
lname
:
string
pl
:
Pl10
position
:
Position10
prefix
:
Prefix10
resignDate
:
string
startDate
:
string
status
:
Status10
thFullName
:
string
time0
:
Time010
}
export
interface
Bu110
{
bu1id
:
string
companyId
:
string
edesc
:
string
tdesc
:
string
}
export
interface
Bu210
{
bu2id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu310
{
bu3id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu410
{
bu4id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu510
{
bu5id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Job10
{
edesc
:
string
jobCodeId
:
string
tdesc
:
string
}
export
interface
Pl10
{
companyId
:
string
edesc
:
string
plId
:
string
tdesc
:
string
}
export
interface
Position10
{
companyId
:
string
consolidate
:
string
edesc
:
string
positionId
:
string
shortName
:
string
tdesc
:
string
}
export
interface
Prefix10
{
edesc
:
string
prefixId
:
string
tdesc
:
string
}
export
interface
Status10
{
edesc
:
string
statusCode
:
string
statusType
:
string
tdesc
:
string
}
export
interface
Time010
{
edesc
:
string
hourD
:
number
stickTm
:
string
tdesc
:
string
time0id
:
string
}
export
interface
Apsapprove52
{
bossId
:
string
bu1
:
Bu111
bu2
:
Bu211
bu3
:
Bu311
bu4
:
Bu411
bu5
:
Bu511
efname
:
string
elname
:
string
employeeId
:
string
endWorkDate
:
string
engFullName
:
string
fname
:
string
job
:
Job11
lname
:
string
pl
:
Pl11
position
:
Position11
prefix
:
Prefix11
resignDate
:
string
startDate
:
string
status
:
Status11
thFullName
:
string
time0
:
Time011
}
export
interface
Bu111
{
bu1id
:
string
companyId
:
string
edesc
:
string
tdesc
:
string
}
export
interface
Bu211
{
bu2id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu311
{
bu3id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu411
{
bu4id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu511
{
bu5id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Job11
{
edesc
:
string
jobCodeId
:
string
tdesc
:
string
}
export
interface
Pl11
{
companyId
:
string
edesc
:
string
plId
:
string
tdesc
:
string
}
export
interface
Position11
{
companyId
:
string
consolidate
:
string
edesc
:
string
positionId
:
string
shortName
:
string
tdesc
:
string
}
export
interface
Prefix11
{
edesc
:
string
prefixId
:
string
tdesc
:
string
}
export
interface
Status11
{
edesc
:
string
statusCode
:
string
statusType
:
string
tdesc
:
string
}
export
interface
Time011
{
edesc
:
string
hourD
:
number
stickTm
:
string
tdesc
:
string
time0id
:
string
}
export
interface
Apsassessy2
{
bossId
:
string
bu1
:
Bu112
bu2
:
Bu212
bu3
:
Bu312
bu4
:
Bu412
bu5
:
Bu512
efname
:
string
elname
:
string
employeeId
:
string
endWorkDate
:
string
engFullName
:
string
fname
:
string
job
:
Job12
lname
:
string
pl
:
Pl12
position
:
Position12
prefix
:
Prefix12
resignDate
:
string
startDate
:
string
status
:
Status12
thFullName
:
string
time0
:
Time012
}
export
interface
Bu112
{
bu1id
:
string
companyId
:
string
edesc
:
string
tdesc
:
string
}
export
interface
Bu212
{
bu2id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu312
{
bu3id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu412
{
bu4id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu512
{
bu5id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Job12
{
edesc
:
string
jobCodeId
:
string
tdesc
:
string
}
export
interface
Pl12
{
companyId
:
string
edesc
:
string
plId
:
string
tdesc
:
string
}
export
interface
Position12
{
companyId
:
string
consolidate
:
string
edesc
:
string
positionId
:
string
shortName
:
string
tdesc
:
string
}
export
interface
Prefix12
{
edesc
:
string
prefixId
:
string
tdesc
:
string
}
export
interface
Status12
{
edesc
:
string
statusCode
:
string
statusType
:
string
tdesc
:
string
}
export
interface
Time012
{
edesc
:
string
hourD
:
number
stickTm
:
string
tdesc
:
string
time0id
:
string
}
export
interface
Boss
{
bossId
:
string
bu1
:
Bu113
bu2
:
Bu213
bu3
:
Bu313
bu4
:
Bu413
bu5
:
Bu513
efname
:
string
elname
:
string
employeeId
:
string
endWorkDate
:
string
engFullName
:
string
fname
:
string
job
:
Job13
lname
:
string
pl
:
Pl13
position
:
Position13
prefix
:
Prefix13
resignDate
:
string
startDate
:
string
status
:
Status13
thFullName
:
string
time0
:
Time013
}
export
interface
Bu113
{
bu1id
:
string
companyId
:
string
edesc
:
string
tdesc
:
string
}
export
interface
Bu213
{
bu2id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu313
{
bu3id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu413
{
bu4id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu513
{
bu5id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Job13
{
edesc
:
string
jobCodeId
:
string
tdesc
:
string
}
export
interface
Pl13
{
companyId
:
string
edesc
:
string
plId
:
string
tdesc
:
string
}
export
interface
Position13
{
companyId
:
string
consolidate
:
string
edesc
:
string
positionId
:
string
shortName
:
string
tdesc
:
string
}
export
interface
Prefix13
{
edesc
:
string
prefixId
:
string
tdesc
:
string
}
export
interface
Status13
{
edesc
:
string
statusCode
:
string
statusType
:
string
tdesc
:
string
}
export
interface
Time013
{
edesc
:
string
hourD
:
number
stickTm
:
string
tdesc
:
string
time0id
:
string
}
export
interface
CompetencyIndicatorsCourses1
{
behavioralIndicators
:
BehavioralIndicator
[]
competencyCourse
:
CompetencyCourse
[]
competencyCourseId
:
string
idpDevelopmentPlan
:
IdpDevelopmentPlan
indicatorsCourses0
:
IndicatorsCourses0
}
export
interface
BehavioralIndicator
{
assessmentId
:
string
behavioralIndicators
:
string
companyId
:
string
competencyAssessment
:
CompetencyAssessment
[]
competencyIndicators1
:
CompetencyIndicators1
runNo
:
number
}
export
interface
CompetencyAssessment
{
assessmentId
:
string
companyId
:
string
edesc
:
string
shortName
:
string
tdesc
:
string
}
export
interface
CompetencyIndicators1
{
companyId
:
string
competencyCourseId
:
string
competencyIndicatorsCourses0
:
CompetencyIndicatorsCourses0
lineNo
:
number
}
export
interface
CompetencyIndicatorsCourses0
{
companyId
:
string
competencyTopic
:
CompetencyTopic
edesc
:
string
indicatorsCourseDetailEn
:
string
indicatorsCourseDetailTh
:
string
tdesc
:
string
}
export
interface
CompetencyTopic
{
companyId
:
string
competencyDetail
:
string
competencyFiles
:
string
competencyTopicId
:
string
competencyType
:
CompetencyType2
edesc
:
string
expectationLevel
:
string
lineNo
:
number
tdesc
:
string
}
export
interface
CompetencyType2
{
companyId
:
string
competencyTypeId
:
string
edesc
:
string
expectationLevel
:
string
shortName
:
string
tdesc
:
string
weight
:
number
}
export
interface
CompetencyCourse
{
companyId
:
string
competencyCourseId
:
string
edesc
:
string
tdesc
:
string
}
export
interface
IdpDevelopmentPlan
{
coachMentor
:
boolean
companyId
:
string
evaluationId
:
string
ojtJobAssignment
:
boolean
planId
:
string
planName
:
string
training
:
boolean
}
export
interface
IndicatorsCourses0
{
companyId
:
string
competencyTopic
:
CompetencyTopic2
edesc
:
string
indicatorsCourseDetailEn
:
string
indicatorsCourseDetailTh
:
string
tdesc
:
string
}
export
interface
CompetencyTopic2
{
companyId
:
string
competencyDetail
:
string
competencyFiles
:
string
competencyTopicId
:
string
competencyType
:
CompetencyType3
edesc
:
string
expectationLevel
:
string
lineNo
:
number
tdesc
:
string
}
export
interface
CompetencyType3
{
companyId
:
string
competencyTypeId
:
string
edesc
:
string
expectationLevel
:
string
shortName
:
string
tdesc
:
string
weight
:
number
}
export
interface
MasfromEvaluationIdp
{
apsapprove1Comment
:
string
apsapprove1Date
:
string
apsapprove1Status
:
string
apsapprove2Comment
:
string
apsapprove2Date
:
string
apsapprove2Status
:
string
apsapprove3Comment
:
string
apsapprove3Date
:
string
apsapprove3Status
:
string
apsapprove4Comment
:
string
apsapprove4Date
:
string
apsapprove4Status
:
string
apsapprove5Comment
:
string
apsapprove5Date
:
string
apsapprove5Status
:
string
apsassessyComment
:
string
apsassessyDate
:
string
apsassessyStatus
:
string
companyId
:
string
idpStatus
:
string
masfromEvaluationAssessment
:
MasfromEvaluationAssessment
plId
:
string
}
export
interface
MasfromEvaluationAssessment
{
active
:
boolean
apsapprove1
:
Apsapprove13
apsapprove2
:
Apsapprove23
apsapprove3
:
Apsapprove33
apsapprove4
:
Apsapprove43
apsapprove5
:
Apsapprove53
apsassessy
:
Apsassessy3
companyId
:
string
masfromEvaluationAssessment1
:
MasfromEvaluationAssessment1
[]
masfromEvaluationRound
:
MasfromEvaluationRound2
personalLevel
:
PersonalLevel4
statusCheckDate
:
boolean
}
export
interface
Apsapprove13
{
bossId
:
string
bu1
:
Bu114
bu2
:
Bu214
bu3
:
Bu314
bu4
:
Bu414
bu5
:
Bu514
efname
:
string
elname
:
string
employeeId
:
string
endWorkDate
:
string
engFullName
:
string
fname
:
string
job
:
Job14
lname
:
string
pl
:
Pl14
position
:
Position14
prefix
:
Prefix14
resignDate
:
string
startDate
:
string
status
:
Status14
thFullName
:
string
time0
:
Time014
}
export
interface
Bu114
{
bu1id
:
string
companyId
:
string
edesc
:
string
tdesc
:
string
}
export
interface
Bu214
{
bu2id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu314
{
bu3id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu414
{
bu4id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu514
{
bu5id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Job14
{
edesc
:
string
jobCodeId
:
string
tdesc
:
string
}
export
interface
Pl14
{
companyId
:
string
edesc
:
string
plId
:
string
tdesc
:
string
}
export
interface
Position14
{
companyId
:
string
consolidate
:
string
edesc
:
string
positionId
:
string
shortName
:
string
tdesc
:
string
}
export
interface
Prefix14
{
edesc
:
string
prefixId
:
string
tdesc
:
string
}
export
interface
Status14
{
edesc
:
string
statusCode
:
string
statusType
:
string
tdesc
:
string
}
export
interface
Time014
{
edesc
:
string
hourD
:
number
stickTm
:
string
tdesc
:
string
time0id
:
string
}
export
interface
Apsapprove23
{
bossId
:
string
bu1
:
Bu115
bu2
:
Bu215
bu3
:
Bu315
bu4
:
Bu415
bu5
:
Bu515
efname
:
string
elname
:
string
employeeId
:
string
endWorkDate
:
string
engFullName
:
string
fname
:
string
job
:
Job15
lname
:
string
pl
:
Pl15
position
:
Position15
prefix
:
Prefix15
resignDate
:
string
startDate
:
string
status
:
Status15
thFullName
:
string
time0
:
Time015
}
export
interface
Bu115
{
bu1id
:
string
companyId
:
string
edesc
:
string
tdesc
:
string
}
export
interface
Bu215
{
bu2id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu315
{
bu3id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu415
{
bu4id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu515
{
bu5id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Job15
{
edesc
:
string
jobCodeId
:
string
tdesc
:
string
}
export
interface
Pl15
{
companyId
:
string
edesc
:
string
plId
:
string
tdesc
:
string
}
export
interface
Position15
{
companyId
:
string
consolidate
:
string
edesc
:
string
positionId
:
string
shortName
:
string
tdesc
:
string
}
export
interface
Prefix15
{
edesc
:
string
prefixId
:
string
tdesc
:
string
}
export
interface
Status15
{
edesc
:
string
statusCode
:
string
statusType
:
string
tdesc
:
string
}
export
interface
Time015
{
edesc
:
string
hourD
:
number
stickTm
:
string
tdesc
:
string
time0id
:
string
}
export
interface
Apsapprove33
{
bossId
:
string
bu1
:
Bu116
bu2
:
Bu216
bu3
:
Bu316
bu4
:
Bu416
bu5
:
Bu516
efname
:
string
elname
:
string
employeeId
:
string
endWorkDate
:
string
engFullName
:
string
fname
:
string
job
:
Job16
lname
:
string
pl
:
Pl16
position
:
Position16
prefix
:
Prefix16
resignDate
:
string
startDate
:
string
status
:
Status16
thFullName
:
string
time0
:
Time016
}
export
interface
Bu116
{
bu1id
:
string
companyId
:
string
edesc
:
string
tdesc
:
string
}
export
interface
Bu216
{
bu2id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu316
{
bu3id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu416
{
bu4id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu516
{
bu5id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Job16
{
edesc
:
string
jobCodeId
:
string
tdesc
:
string
}
export
interface
Pl16
{
companyId
:
string
edesc
:
string
plId
:
string
tdesc
:
string
}
export
interface
Position16
{
companyId
:
string
consolidate
:
string
edesc
:
string
positionId
:
string
shortName
:
string
tdesc
:
string
}
export
interface
Prefix16
{
edesc
:
string
prefixId
:
string
tdesc
:
string
}
export
interface
Status16
{
edesc
:
string
statusCode
:
string
statusType
:
string
tdesc
:
string
}
export
interface
Time016
{
edesc
:
string
hourD
:
number
stickTm
:
string
tdesc
:
string
time0id
:
string
}
export
interface
Apsapprove43
{
bossId
:
string
bu1
:
Bu117
bu2
:
Bu217
bu3
:
Bu317
bu4
:
Bu417
bu5
:
Bu517
efname
:
string
elname
:
string
employeeId
:
string
endWorkDate
:
string
engFullName
:
string
fname
:
string
job
:
Job17
lname
:
string
pl
:
Pl17
position
:
Position17
prefix
:
Prefix17
resignDate
:
string
startDate
:
string
status
:
Status17
thFullName
:
string
time0
:
Time017
}
export
interface
Bu117
{
bu1id
:
string
companyId
:
string
edesc
:
string
tdesc
:
string
}
export
interface
Bu217
{
bu2id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu317
{
bu3id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu417
{
bu4id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu517
{
bu5id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Job17
{
edesc
:
string
jobCodeId
:
string
tdesc
:
string
}
export
interface
Pl17
{
companyId
:
string
edesc
:
string
plId
:
string
tdesc
:
string
}
export
interface
Position17
{
companyId
:
string
consolidate
:
string
edesc
:
string
positionId
:
string
shortName
:
string
tdesc
:
string
}
export
interface
Prefix17
{
edesc
:
string
prefixId
:
string
tdesc
:
string
}
export
interface
Status17
{
edesc
:
string
statusCode
:
string
statusType
:
string
tdesc
:
string
}
export
interface
Time017
{
edesc
:
string
hourD
:
number
stickTm
:
string
tdesc
:
string
time0id
:
string
}
export
interface
Apsapprove53
{
bossId
:
string
bu1
:
Bu118
bu2
:
Bu218
bu3
:
Bu318
bu4
:
Bu418
bu5
:
Bu518
efname
:
string
elname
:
string
employeeId
:
string
endWorkDate
:
string
engFullName
:
string
fname
:
string
job
:
Job18
lname
:
string
pl
:
Pl18
position
:
Position18
prefix
:
Prefix18
resignDate
:
string
startDate
:
string
status
:
Status18
thFullName
:
string
time0
:
Time018
}
export
interface
Bu118
{
bu1id
:
string
companyId
:
string
edesc
:
string
tdesc
:
string
}
export
interface
Bu218
{
bu2id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu318
{
bu3id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu418
{
bu4id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu518
{
bu5id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Job18
{
edesc
:
string
jobCodeId
:
string
tdesc
:
string
}
export
interface
Pl18
{
companyId
:
string
edesc
:
string
plId
:
string
tdesc
:
string
}
export
interface
Position18
{
companyId
:
string
consolidate
:
string
edesc
:
string
positionId
:
string
shortName
:
string
tdesc
:
string
}
export
interface
Prefix18
{
edesc
:
string
prefixId
:
string
tdesc
:
string
}
export
interface
Status18
{
edesc
:
string
statusCode
:
string
statusType
:
string
tdesc
:
string
}
export
interface
Time018
{
edesc
:
string
hourD
:
number
stickTm
:
string
tdesc
:
string
time0id
:
string
}
export
interface
Apsassessy3
{
bossId
:
string
bu1
:
Bu119
bu2
:
Bu219
bu3
:
Bu319
bu4
:
Bu419
bu5
:
Bu519
efname
:
string
elname
:
string
employeeId
:
string
endWorkDate
:
string
engFullName
:
string
fname
:
string
job
:
Job19
lname
:
string
pl
:
Pl19
position
:
Position19
prefix
:
Prefix19
resignDate
:
string
startDate
:
string
status
:
Status19
thFullName
:
string
time0
:
Time019
}
export
interface
Bu119
{
bu1id
:
string
companyId
:
string
edesc
:
string
tdesc
:
string
}
export
interface
Bu219
{
bu2id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu319
{
bu3id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu419
{
bu4id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu519
{
bu5id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Job19
{
edesc
:
string
jobCodeId
:
string
tdesc
:
string
}
export
interface
Pl19
{
companyId
:
string
edesc
:
string
plId
:
string
tdesc
:
string
}
export
interface
Position19
{
companyId
:
string
consolidate
:
string
edesc
:
string
positionId
:
string
shortName
:
string
tdesc
:
string
}
export
interface
Prefix19
{
edesc
:
string
prefixId
:
string
tdesc
:
string
}
export
interface
Status19
{
edesc
:
string
statusCode
:
string
statusType
:
string
tdesc
:
string
}
export
interface
Time019
{
edesc
:
string
hourD
:
number
stickTm
:
string
tdesc
:
string
time0id
:
string
}
export
interface
MasfromEvaluationAssessment1
{
apsapprove1Comment
:
string
apsapprove1Date
:
string
apsapprove1Status
:
string
apsapprove2Comment
:
string
apsapprove2Date
:
string
apsapprove2Status
:
string
apsapprove3Comment
:
string
apsapprove3Date
:
string
apsapprove3Status
:
string
apsapprove4Comment
:
string
apsapprove4Date
:
string
apsapprove4Status
:
string
apsapprove5Comment
:
string
apsapprove5Date
:
string
apsapprove5Status
:
string
apsassessyComment
:
string
apsassessyDate
:
string
apsassessyStatus
:
string
averageScore
:
number
checkStep
:
string
companyId
:
string
competencyType
:
CompetencyType4
countFormStep
:
string
currentStep
:
string
evaluationResults
:
string
lastStep
:
string
lineNo
:
number
masfromStatusType
:
MasfromStatusType2
numberCheck1
:
number
numberCheck2
:
number
numberCheck3
:
number
numberCheck4
:
number
numberCheck5
:
number
plId
:
string
sumEvaluationResults
:
string
weightedTotal
:
number
}
export
interface
CompetencyType4
{
companyId
:
string
competencyTypeId
:
string
edesc
:
string
expectationLevel
:
string
shortName
:
string
tdesc
:
string
weight
:
number
}
export
interface
MasfromStatusType2
{
code
:
string
edesc
:
string
tdesc
:
string
}
export
interface
MasfromEvaluationRound2
{
active
:
number
apsPeriodEnd
:
string
apsPeriodStart
:
string
apsyear
:
string
checkForm
:
number
companyId
:
string
edesc
:
string
evaluationRoundId
:
string
jlId
:
string
personalLevel
:
PersonalLevel3
[]
statusCode
:
StatusCode2
statusFrom
:
StatusFrom2
tdesc
:
string
}
export
interface
PersonalLevel3
{
companyId
:
string
edesc
:
string
plId
:
string
tdesc
:
string
}
export
interface
StatusCode2
{
code
:
string
edesc
:
string
tdesc
:
string
}
export
interface
StatusFrom2
{
code
:
string
edesc
:
string
tdesc
:
string
}
export
interface
PersonalLevel4
{
companyId
:
string
edesc
:
string
plId
:
string
tdesc
:
string
}
export
interface
MasfromEvaluationRound3
{
apsPeriodEnd
:
string
apsPeriodStart
:
string
apsyear
:
string
companyId
:
string
edesc
:
string
employee
:
Employee
[]
evaluationRoundId
:
string
tdesc
:
string
}
export
interface
Employee
{
bossId
:
string
bu1
:
Bu120
bu2
:
Bu220
bu3
:
Bu320
bu4
:
Bu420
bu5
:
Bu520
efname
:
string
elname
:
string
employeeId
:
string
endWorkDate
:
string
engFullName
:
string
fname
:
string
job
:
Job20
lname
:
string
pl
:
Pl20
position
:
Position20
prefix
:
Prefix20
resignDate
:
string
startDate
:
string
status
:
Status20
thFullName
:
string
time0
:
Time020
}
export
interface
Bu120
{
bu1id
:
string
companyId
:
string
edesc
:
string
tdesc
:
string
}
export
interface
Bu220
{
bu2id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu320
{
bu3id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu420
{
bu4id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu520
{
bu5id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Job20
{
edesc
:
string
jobCodeId
:
string
tdesc
:
string
}
export
interface
Pl20
{
companyId
:
string
edesc
:
string
plId
:
string
tdesc
:
string
}
export
interface
Position20
{
companyId
:
string
consolidate
:
string
edesc
:
string
positionId
:
string
shortName
:
string
tdesc
:
string
}
export
interface
Prefix20
{
edesc
:
string
prefixId
:
string
tdesc
:
string
}
export
interface
Status20
{
edesc
:
string
statusCode
:
string
statusType
:
string
tdesc
:
string
}
export
interface
Time020
{
edesc
:
string
hourD
:
number
stickTm
:
string
tdesc
:
string
time0id
:
string
}
export
interface
MasfromStatusType3
{
code
:
string
edesc
:
string
tdesc
:
string
}
export
interface
PersonalLevel5
{
companyId
:
string
edesc
:
string
plId
:
string
tdesc
:
string
}
export
interface
Pms
{
active
:
boolean
apsapprove1
:
Apsapprove14
apsapprove1Comment
:
string
apsapprove1Date
:
string
apsapprove1Status
:
string
apsapprove2
:
Apsapprove24
apsapprove2Comment
:
string
apsapprove2Date
:
string
apsapprove2Status
:
string
apsapprove3
:
Apsapprove34
apsapprove3Comment
:
string
apsapprove3Date
:
string
apsapprove3Status
:
string
apsapprove4
:
Apsapprove44
apsapprove4Comment
:
string
apsapprove4Date
:
string
apsapprove4Status
:
string
apsapprove5
:
Apsapprove54
apsapprove5Comment
:
string
apsapprove5Date
:
string
apsapprove5Status
:
string
apsassessy
:
Apsassessy4
apsassessyComment
:
string
apsassessyDate
:
string
apsassessyStatus
:
string
cfrDetail
:
string
checkStep
:
string
companyId
:
string
currentStep
:
string
employeeStrengths
:
string
gradeScore
:
string
improvementPlan
:
string
lastStep
:
string
learningTopicsForImprovement
:
string
learningTopicsForStrengths
:
string
learningTopicsForWeaknesses
:
string
masfromStatusType
:
MasfromStatusType4
netScore
:
number
part1Detail
:
Part1Detail
[]
part1Percentage
:
number
part1SumScore
:
number
part2Detail
:
Part2Detail
[]
part2Percentage
:
number
part2SumScore
:
number
part3Detail
:
Part3Detail
[]
part3Percentage
:
number
part3SumScore
:
number
part4Detail
:
Part4Detail
[]
part4Percentage
:
number
part4SumScore
:
number
part5Detail
:
Part5Detail
[]
part5Percentage
:
number
part5SumScore
:
number
part6Detail
:
Part6Detail
[]
part6Percentage
:
number
part6SumScore
:
number
part7Detail
:
Part7Detail
[]
part7Percentage
:
number
part7SumScore
:
number
performanceWeaknesses
:
string
personalLevel
:
PersonalLevel11
pmsMasfromEvaluationRoundModel
:
PmsMasfromEvaluationRoundModel
}
export
interface
Apsapprove14
{
bossId
:
string
bu1
:
Bu121
bu2
:
Bu221
bu3
:
Bu321
bu4
:
Bu421
bu5
:
Bu521
efname
:
string
elname
:
string
employeeId
:
string
endWorkDate
:
string
engFullName
:
string
fname
:
string
job
:
Job21
lname
:
string
pl
:
Pl21
position
:
Position21
prefix
:
Prefix21
resignDate
:
string
startDate
:
string
status
:
Status21
thFullName
:
string
time0
:
Time021
}
export
interface
Bu121
{
bu1id
:
string
companyId
:
string
edesc
:
string
tdesc
:
string
}
export
interface
Bu221
{
bu2id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu321
{
bu3id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu421
{
bu4id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu521
{
bu5id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Job21
{
edesc
:
string
jobCodeId
:
string
tdesc
:
string
}
export
interface
Pl21
{
companyId
:
string
edesc
:
string
plId
:
string
tdesc
:
string
}
export
interface
Position21
{
companyId
:
string
consolidate
:
string
edesc
:
string
positionId
:
string
shortName
:
string
tdesc
:
string
}
export
interface
Prefix21
{
edesc
:
string
prefixId
:
string
tdesc
:
string
}
export
interface
Status21
{
edesc
:
string
statusCode
:
string
statusType
:
string
tdesc
:
string
}
export
interface
Time021
{
edesc
:
string
hourD
:
number
stickTm
:
string
tdesc
:
string
time0id
:
string
}
export
interface
Apsapprove24
{
bossId
:
string
bu1
:
Bu122
bu2
:
Bu222
bu3
:
Bu322
bu4
:
Bu422
bu5
:
Bu522
efname
:
string
elname
:
string
employeeId
:
string
endWorkDate
:
string
engFullName
:
string
fname
:
string
job
:
Job22
lname
:
string
pl
:
Pl22
position
:
Position22
prefix
:
Prefix22
resignDate
:
string
startDate
:
string
status
:
Status22
thFullName
:
string
time0
:
Time022
}
export
interface
Bu122
{
bu1id
:
string
companyId
:
string
edesc
:
string
tdesc
:
string
}
export
interface
Bu222
{
bu2id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu322
{
bu3id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu422
{
bu4id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu522
{
bu5id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Job22
{
edesc
:
string
jobCodeId
:
string
tdesc
:
string
}
export
interface
Pl22
{
companyId
:
string
edesc
:
string
plId
:
string
tdesc
:
string
}
export
interface
Position22
{
companyId
:
string
consolidate
:
string
edesc
:
string
positionId
:
string
shortName
:
string
tdesc
:
string
}
export
interface
Prefix22
{
edesc
:
string
prefixId
:
string
tdesc
:
string
}
export
interface
Status22
{
edesc
:
string
statusCode
:
string
statusType
:
string
tdesc
:
string
}
export
interface
Time022
{
edesc
:
string
hourD
:
number
stickTm
:
string
tdesc
:
string
time0id
:
string
}
export
interface
Apsapprove34
{
bossId
:
string
bu1
:
Bu123
bu2
:
Bu223
bu3
:
Bu323
bu4
:
Bu423
bu5
:
Bu523
efname
:
string
elname
:
string
employeeId
:
string
endWorkDate
:
string
engFullName
:
string
fname
:
string
job
:
Job23
lname
:
string
pl
:
Pl23
position
:
Position23
prefix
:
Prefix23
resignDate
:
string
startDate
:
string
status
:
Status23
thFullName
:
string
time0
:
Time023
}
export
interface
Bu123
{
bu1id
:
string
companyId
:
string
edesc
:
string
tdesc
:
string
}
export
interface
Bu223
{
bu2id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu323
{
bu3id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu423
{
bu4id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu523
{
bu5id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Job23
{
edesc
:
string
jobCodeId
:
string
tdesc
:
string
}
export
interface
Pl23
{
companyId
:
string
edesc
:
string
plId
:
string
tdesc
:
string
}
export
interface
Position23
{
companyId
:
string
consolidate
:
string
edesc
:
string
positionId
:
string
shortName
:
string
tdesc
:
string
}
export
interface
Prefix23
{
edesc
:
string
prefixId
:
string
tdesc
:
string
}
export
interface
Status23
{
edesc
:
string
statusCode
:
string
statusType
:
string
tdesc
:
string
}
export
interface
Time023
{
edesc
:
string
hourD
:
number
stickTm
:
string
tdesc
:
string
time0id
:
string
}
export
interface
Apsapprove44
{
bossId
:
string
bu1
:
Bu124
bu2
:
Bu224
bu3
:
Bu324
bu4
:
Bu424
bu5
:
Bu524
efname
:
string
elname
:
string
employeeId
:
string
endWorkDate
:
string
engFullName
:
string
fname
:
string
job
:
Job24
lname
:
string
pl
:
Pl24
position
:
Position24
prefix
:
Prefix24
resignDate
:
string
startDate
:
string
status
:
Status24
thFullName
:
string
time0
:
Time024
}
export
interface
Bu124
{
bu1id
:
string
companyId
:
string
edesc
:
string
tdesc
:
string
}
export
interface
Bu224
{
bu2id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu324
{
bu3id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu424
{
bu4id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu524
{
bu5id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Job24
{
edesc
:
string
jobCodeId
:
string
tdesc
:
string
}
export
interface
Pl24
{
companyId
:
string
edesc
:
string
plId
:
string
tdesc
:
string
}
export
interface
Position24
{
companyId
:
string
consolidate
:
string
edesc
:
string
positionId
:
string
shortName
:
string
tdesc
:
string
}
export
interface
Prefix24
{
edesc
:
string
prefixId
:
string
tdesc
:
string
}
export
interface
Status24
{
edesc
:
string
statusCode
:
string
statusType
:
string
tdesc
:
string
}
export
interface
Time024
{
edesc
:
string
hourD
:
number
stickTm
:
string
tdesc
:
string
time0id
:
string
}
export
interface
Apsapprove54
{
bossId
:
string
bu1
:
Bu125
bu2
:
Bu225
bu3
:
Bu325
bu4
:
Bu425
bu5
:
Bu525
efname
:
string
elname
:
string
employeeId
:
string
endWorkDate
:
string
engFullName
:
string
fname
:
string
job
:
Job25
lname
:
string
pl
:
Pl25
position
:
Position25
prefix
:
Prefix25
resignDate
:
string
startDate
:
string
status
:
Status25
thFullName
:
string
time0
:
Time025
}
export
interface
Bu125
{
bu1id
:
string
companyId
:
string
edesc
:
string
tdesc
:
string
}
export
interface
Bu225
{
bu2id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu325
{
bu3id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu425
{
bu4id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu525
{
bu5id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Job25
{
edesc
:
string
jobCodeId
:
string
tdesc
:
string
}
export
interface
Pl25
{
companyId
:
string
edesc
:
string
plId
:
string
tdesc
:
string
}
export
interface
Position25
{
companyId
:
string
consolidate
:
string
edesc
:
string
positionId
:
string
shortName
:
string
tdesc
:
string
}
export
interface
Prefix25
{
edesc
:
string
prefixId
:
string
tdesc
:
string
}
export
interface
Status25
{
edesc
:
string
statusCode
:
string
statusType
:
string
tdesc
:
string
}
export
interface
Time025
{
edesc
:
string
hourD
:
number
stickTm
:
string
tdesc
:
string
time0id
:
string
}
export
interface
Apsassessy4
{
bossId
:
string
bu1
:
Bu126
bu2
:
Bu226
bu3
:
Bu326
bu4
:
Bu426
bu5
:
Bu526
efname
:
string
elname
:
string
employeeId
:
string
endWorkDate
:
string
engFullName
:
string
fname
:
string
job
:
Job26
lname
:
string
pl
:
Pl26
position
:
Position26
prefix
:
Prefix26
resignDate
:
string
startDate
:
string
status
:
Status26
thFullName
:
string
time0
:
Time026
}
export
interface
Bu126
{
bu1id
:
string
companyId
:
string
edesc
:
string
tdesc
:
string
}
export
interface
Bu226
{
bu2id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu326
{
bu3id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu426
{
bu4id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Bu526
{
bu5id
:
string
companyId
:
string
edesc
:
string
parent
:
string
tdesc
:
string
}
export
interface
Job26
{
edesc
:
string
jobCodeId
:
string
tdesc
:
string
}
export
interface
Pl26
{
companyId
:
string
edesc
:
string
plId
:
string
tdesc
:
string
}
export
interface
Position26
{
companyId
:
string
consolidate
:
string
edesc
:
string
positionId
:
string
shortName
:
string
tdesc
:
string
}
export
interface
Prefix26
{
edesc
:
string
prefixId
:
string
tdesc
:
string
}
export
interface
Status26
{
edesc
:
string
statusCode
:
string
statusType
:
string
tdesc
:
string
}
export
interface
Time026
{
edesc
:
string
hourD
:
number
stickTm
:
string
tdesc
:
string
time0id
:
string
}
export
interface
MasfromStatusType4
{
code
:
string
edesc
:
string
tdesc
:
string
}
export
interface
Part1Detail
{
companyId
:
string
groupAssessment1
:
GroupAssessment1
lineNo
:
number
scoreTopicExpectation
:
number
scoreTopicExpectationBoss
:
number
weight
:
number
}
export
interface
GroupAssessment1
{
companyId
:
string
personalLevelModel
:
PersonalLevelModel
pmsGroupAssessment0
:
PmsGroupAssessment0
pmsTopic
:
PmsTopic2
}
export
interface
PersonalLevelModel
{
companyId
:
string
edesc
:
string
plId
:
string
tdesc
:
string
}
export
interface
PmsGroupAssessment0
{
companyId
:
string
personalLevel
:
PersonalLevel6
pmsTopic
:
PmsTopic
}
export
interface
PersonalLevel6
{
companyId
:
string
edesc
:
string
plId
:
string
tdesc
:
string
}
export
interface
PmsTopic
{
companyId
:
string
completionDate
:
string
detailUnit
:
string
edesc
:
string
indicatorsDetail
:
string
lineNo
:
number
performanceGoalsDetail
:
string
pmsTopicId
:
string
pmsType
:
PmsType
targetAdetail
:
string
targetBdetail
:
string
targetCdetail
:
string
targetDdetail
:
string
targetEdetail
:
string
tdesc
:
string
weight
:
number
}
export
interface
PmsType
{
companyId
:
string
edesc
:
string
pmsTypeId
:
string
shortName
:
string
tdesc
:
string
weight
:
number
}
export
interface
PmsTopic2
{
companyId
:
string
completionDate
:
string
detailUnit
:
string
edesc
:
string
indicatorsDetail
:
string
lineNo
:
number
performanceGoalsDetail
:
string
pmsTopicId
:
string
pmsType
:
PmsType2
targetAdetail
:
string
targetBdetail
:
string
targetCdetail
:
string
targetDdetail
:
string
targetEdetail
:
string
tdesc
:
string
weight
:
number
}
export
interface
PmsType2
{
companyId
:
string
edesc
:
string
pmsTypeId
:
string
shortName
:
string
tdesc
:
string
weight
:
number
}
export
interface
Part2Detail
{
companyId
:
string
groupAssessment1
:
GroupAssessment12
lineNo
:
number
scoreTopicExpectation
:
number
scoreTopicExpectationBoss
:
number
weight
:
number
}
export
interface
GroupAssessment12
{
companyId
:
string
personalLevelModel
:
PersonalLevelModel2
pmsGroupAssessment0
:
PmsGroupAssessment02
pmsTopic
:
PmsTopic4
}
export
interface
PersonalLevelModel2
{
companyId
:
string
edesc
:
string
plId
:
string
tdesc
:
string
}
export
interface
PmsGroupAssessment02
{
companyId
:
string
personalLevel
:
PersonalLevel7
pmsTopic
:
PmsTopic3
}
export
interface
PersonalLevel7
{
companyId
:
string
edesc
:
string
plId
:
string
tdesc
:
string
}
export
interface
PmsTopic3
{
companyId
:
string
completionDate
:
string
detailUnit
:
string
edesc
:
string
indicatorsDetail
:
string
lineNo
:
number
performanceGoalsDetail
:
string
pmsTopicId
:
string
pmsType
:
PmsType3
targetAdetail
:
string
targetBdetail
:
string
targetCdetail
:
string
targetDdetail
:
string
targetEdetail
:
string
tdesc
:
string
weight
:
number
}
export
interface
PmsType3
{
companyId
:
string
edesc
:
string
pmsTypeId
:
string
shortName
:
string
tdesc
:
string
weight
:
number
}
export
interface
PmsTopic4
{
companyId
:
string
completionDate
:
string
detailUnit
:
string
edesc
:
string
indicatorsDetail
:
string
lineNo
:
number
performanceGoalsDetail
:
string
pmsTopicId
:
string
pmsType
:
PmsType4
targetAdetail
:
string
targetBdetail
:
string
targetCdetail
:
string
targetDdetail
:
string
targetEdetail
:
string
tdesc
:
string
weight
:
number
}
export
interface
PmsType4
{
companyId
:
string
edesc
:
string
pmsTypeId
:
string
shortName
:
string
tdesc
:
string
weight
:
number
}
export
interface
Part3Detail
{
companyId
:
string
groupAssessment1
:
GroupAssessment13
lineNo
:
number
scoreTopicExpectation
:
number
scoreTopicExpectationBoss
:
number
weight
:
number
}
export
interface
GroupAssessment13
{
companyId
:
string
personalLevelModel
:
PersonalLevelModel3
pmsGroupAssessment0
:
PmsGroupAssessment03
pmsTopic
:
PmsTopic6
}
export
interface
PersonalLevelModel3
{
companyId
:
string
edesc
:
string
plId
:
string
tdesc
:
string
}
export
interface
PmsGroupAssessment03
{
companyId
:
string
personalLevel
:
PersonalLevel8
pmsTopic
:
PmsTopic5
}
export
interface
PersonalLevel8
{
companyId
:
string
edesc
:
string
plId
:
string
tdesc
:
string
}
export
interface
PmsTopic5
{
companyId
:
string
completionDate
:
string
detailUnit
:
string
edesc
:
string
indicatorsDetail
:
string
lineNo
:
number
performanceGoalsDetail
:
string
pmsTopicId
:
string
pmsType
:
PmsType5
targetAdetail
:
string
targetBdetail
:
string
targetCdetail
:
string
targetDdetail
:
string
targetEdetail
:
string
tdesc
:
string
weight
:
number
}
export
interface
PmsType5
{
companyId
:
string
edesc
:
string
pmsTypeId
:
string
shortName
:
string
tdesc
:
string
weight
:
number
}
export
interface
PmsTopic6
{
companyId
:
string
completionDate
:
string
detailUnit
:
string
edesc
:
string
indicatorsDetail
:
string
lineNo
:
number
performanceGoalsDetail
:
string
pmsTopicId
:
string
pmsType
:
PmsType6
targetAdetail
:
string
targetBdetail
:
string
targetCdetail
:
string
targetDdetail
:
string
targetEdetail
:
string
tdesc
:
string
weight
:
number
}
export
interface
PmsType6
{
companyId
:
string
edesc
:
string
pmsTypeId
:
string
shortName
:
string
tdesc
:
string
weight
:
number
}
export
interface
Part4Detail
{
apsapprove1Comment
:
string
apsapprove1Date
:
string
apsapprove1Status
:
string
apsapprove2Comment
:
string
apsapprove2Date
:
string
apsapprove2Status
:
string
apsapprove3Comment
:
string
apsapprove3Date
:
string
apsapprove3Status
:
string
apsapprove4Comment
:
string
apsapprove4Date
:
string
apsapprove4Status
:
string
apsapprove5Comment
:
string
apsapprove5Date
:
string
apsapprove5Status
:
string
apsassessyComment
:
string
apsassessyDate
:
string
apsassessyStatus
:
string
averageScore
:
number
checkStep
:
string
companyId
:
string
competencyType
:
CompetencyType5
countFormStep
:
string
currentStep
:
string
evaluationResults
:
string
lastStep
:
string
lineNo
:
number
masfromStatusType
:
MasfromStatusType5
numberCheck1
:
number
numberCheck2
:
number
numberCheck3
:
number
numberCheck4
:
number
numberCheck5
:
number
plId
:
string
sumEvaluationResults
:
string
weightedTotal
:
number
}
export
interface
CompetencyType5
{
companyId
:
string
competencyTypeId
:
string
edesc
:
string
expectationLevel
:
string
shortName
:
string
tdesc
:
string
weight
:
number
}
export
interface
MasfromStatusType5
{
code
:
string
edesc
:
string
tdesc
:
string
}
export
interface
Part5Detail
{
detailUnit
:
string
edesc
:
string
performanceTargets
:
string
pmsWorkingTimeId
:
string
pmsWorkingTimScore
:
number
pmsWorkingTimScoreBoss
:
number
targetADetail
:
string
targetBDetail
:
string
targetCDetail
:
string
targetDDetail
:
string
targetEDetail
:
string
tdesc
:
string
weight
:
number
}
export
interface
Part6Detail
{
companyId
:
string
groupAssessment1
:
GroupAssessment14
lineNo
:
number
scoreTopicExpectation
:
number
scoreTopicExpectationBoss
:
number
weight
:
number
}
export
interface
GroupAssessment14
{
companyId
:
string
personalLevelModel
:
PersonalLevelModel4
pmsGroupAssessment0
:
PmsGroupAssessment04
pmsTopic
:
PmsTopic8
}
export
interface
PersonalLevelModel4
{
companyId
:
string
edesc
:
string
plId
:
string
tdesc
:
string
}
export
interface
PmsGroupAssessment04
{
companyId
:
string
personalLevel
:
PersonalLevel9
pmsTopic
:
PmsTopic7
}
export
interface
PersonalLevel9
{
companyId
:
string
edesc
:
string
plId
:
string
tdesc
:
string
}
export
interface
PmsTopic7
{
companyId
:
string
completionDate
:
string
detailUnit
:
string
edesc
:
string
indicatorsDetail
:
string
lineNo
:
number
performanceGoalsDetail
:
string
pmsTopicId
:
string
pmsType
:
PmsType7
targetAdetail
:
string
targetBdetail
:
string
targetCdetail
:
string
targetDdetail
:
string
targetEdetail
:
string
tdesc
:
string
weight
:
number
}
export
interface
PmsType7
{
companyId
:
string
edesc
:
string
pmsTypeId
:
string
shortName
:
string
tdesc
:
string
weight
:
number
}
export
interface
PmsTopic8
{
companyId
:
string
completionDate
:
string
detailUnit
:
string
edesc
:
string
indicatorsDetail
:
string
lineNo
:
number
performanceGoalsDetail
:
string
pmsTopicId
:
string
pmsType
:
PmsType8
targetAdetail
:
string
targetBdetail
:
string
targetCdetail
:
string
targetDdetail
:
string
targetEdetail
:
string
tdesc
:
string
weight
:
number
}
export
interface
PmsType8
{
companyId
:
string
edesc
:
string
pmsTypeId
:
string
shortName
:
string
tdesc
:
string
weight
:
number
}
export
interface
Part7Detail
{
companyId
:
string
groupAssessment1
:
GroupAssessment15
lineNo
:
number
scoreTopicExpectation
:
number
scoreTopicExpectationBoss
:
number
weight
:
number
}
export
interface
GroupAssessment15
{
companyId
:
string
personalLevelModel
:
PersonalLevelModel5
pmsGroupAssessment0
:
PmsGroupAssessment05
pmsTopic
:
PmsTopic10
}
export
interface
PersonalLevelModel5
{
companyId
:
string
edesc
:
string
plId
:
string
tdesc
:
string
}
export
interface
PmsGroupAssessment05
{
companyId
:
string
personalLevel
:
PersonalLevel10
pmsTopic
:
PmsTopic9
}
export
interface
PersonalLevel10
{
companyId
:
string
edesc
:
string
plId
:
string
tdesc
:
string
}
export
interface
PmsTopic9
{
companyId
:
string
completionDate
:
string
detailUnit
:
string
edesc
:
string
indicatorsDetail
:
string
lineNo
:
number
performanceGoalsDetail
:
string
pmsTopicId
:
string
pmsType
:
PmsType9
targetAdetail
:
string
targetBdetail
:
string
targetCdetail
:
string
targetDdetail
:
string
targetEdetail
:
string
tdesc
:
string
weight
:
number
}
export
interface
PmsType9
{
companyId
:
string
edesc
:
string
pmsTypeId
:
string
shortName
:
string
tdesc
:
string
weight
:
number
}
export
interface
PmsTopic10
{
companyId
:
string
completionDate
:
string
detailUnit
:
string
edesc
:
string
indicatorsDetail
:
string
lineNo
:
number
performanceGoalsDetail
:
string
pmsTopicId
:
string
pmsType
:
PmsType10
targetAdetail
:
string
targetBdetail
:
string
targetCdetail
:
string
targetDdetail
:
string
targetEdetail
:
string
tdesc
:
string
weight
:
number
}
export
interface
PmsType10
{
companyId
:
string
edesc
:
string
pmsTypeId
:
string
shortName
:
string
tdesc
:
string
weight
:
number
}
export
interface
PersonalLevel11
{
companyId
:
string
edesc
:
string
plId
:
string
tdesc
:
string
}
export
interface
PmsMasfromEvaluationRoundModel
{
active
:
number
apsPeriodEnd
:
string
apsPeriodStart
:
string
apsyear
:
string
checkForm
:
number
companyId
:
string
edesc
:
string
jlId
:
string
personalLevel
:
PersonalLevel12
[]
pmsEvaluationRoundId
:
string
statusCode
:
StatusCode3
statusFrom
:
StatusFrom3
tdesc
:
string
}
export
interface
PersonalLevel12
{
companyId
:
string
edesc
:
string
plId
:
string
tdesc
:
string
}
export
interface
StatusCode3
{
code
:
string
edesc
:
string
tdesc
:
string
}
export
interface
StatusFrom3
{
code
:
string
edesc
:
string
tdesc
:
string
}
export
interface
StatusAll
{
additionalProp1
:
string
additionalProp2
:
string
additionalProp3
:
string
}
src/app/shared/services/appraisal.service.ts
View file @
caf318d4
...
...
@@ -7,6 +7,7 @@ import { AppraisalCompentencyModel, AppraisalCompentencyModel2 } from '../model/
import
{
AppraisalSubordinateModel
}
from
'../model/appraisal-subordinate.model'
;
import
{
AppraisalPmsFormModel
}
from
'../model/appraisal-pms-form.model'
;
import
{
AppraisalPmsModel
}
from
'../model/appraisal-pms.model'
;
import
{
CompetencyModel
}
from
'../model/competency.model'
;
@
Injectable
({
providedIn
:
'root'
})
...
...
@@ -15,6 +16,9 @@ export class AppraisalService {
urlApi
=
environment
.
baseUrl
+
this
.
api
constructor
(
private
http
:
HttpClient
)
{
}
getCompentencyAll
(
apsassessy
:
string
,
bossId
?:
string
):
Observable
<
CompetencyModel
[]
>
{
return
this
.
http
.
get
<
CompetencyModel
[]
>
(
this
.
urlApi
+
"/competencyAll/emp?apsassessy="
+
apsassessy
+
(
bossId
?
"&bossId="
+
bossId
:
''
))
}
getFormCompentencyById
(
evaluationRoundId
:
string
,
apsassessy
:
string
,
typeId
:
string
):
Observable
<
AppraisalCompentencyModel2
>
{
return
this
.
http
.
get
<
AppraisalCompentencyModel2
>
(
this
.
urlApi
+
"/competency/"
+
evaluationRoundId
+
"/"
+
apsassessy
+
"/"
+
typeId
)
}
...
...
src/assets/css/style.css
View file @
caf318d4
...
...
@@ -5925,6 +5925,10 @@ select option:focus {
.fill-success {
fill: rgb(var(--color-success));
}
.fill-mute {
fill: #cccccc;
}
.fill-transparent {
fill: transparent;
}
...
...
@@ -25034,6 +25038,13 @@ div:where(.swal2-container) div:where(.swal2-validation-message) {
border-color
:
red
!important
;
}
.
\
!
bg-white
{
.
\
!
bg-white
{
background-color
:
white
;
}
.ellipsis-text
{
white-space
:
nowrap
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
max-width
:
100%
}
\ No newline at end of file
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