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
a57fbb61
Commit
a57fbb61
authored
May 19, 2025
by
Nattana Chaiyamat
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
แบบประเมินสมรรถนะ
parent
30016591
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
861 additions
and
726 deletions
+861
-726
pms-competency.component.html
...orm-employee/pms-competency/pms-competency.component.html
+138
-47
pms-competency.component.ts
...-form-employee/pms-competency/pms-competency.component.ts
+43
-16
pms-form-employee.component.html
...uation/pms-form-employee/pms-form-employee.component.html
+245
-165
pms-form-employee.component.ts
...aluation/pms-form-employee/pms-form-employee.component.ts
+51
-7
pms-idp.component.html
...aluation/pms-form-employee/pms-idp/pms-idp.component.html
+290
-282
pms-kpi.component.html
...aluation/pms-form-employee/pms-kpi/pms-kpi.component.html
+0
-0
pms-kpi.component.ts
...evaluation/pms-form-employee/pms-kpi/pms-kpi.component.ts
+78
-32
self-evaluation.component.html
...evaluation/self-evaluation/self-evaluation.component.html
+1
-1
supervisor-evaluation.component.html
...upervisor-evaluation/supervisor-evaluation.component.html
+0
-1
sidebar.component.html
src/app/shared/components/sidebar/sidebar.component.html
+1
-1
competency.model.ts
src/app/shared/model/competency.model.ts
+12
-172
style.css
src/assets/css/style.css
+2
-2
No files found.
src/app/components/performance-evaluation/pms-form-employee/pms-competency/pms-competency.component.html
View file @
a57fbb61
...
@@ -6,8 +6,8 @@
...
@@ -6,8 +6,8 @@
<ng-container
*
ngFor=
"let appraisalCompentency of appraisalCompentencyList ;let i=index"
>
<ng-container
*
ngFor=
"let appraisalCompentency of appraisalCompentencyList ;let i=index"
>
<button
type=
"button"
class=
"flex justify-center !items-center border bg-white p-2 text-center"
<button
type=
"button"
class=
"flex justify-center !items-center border bg-white p-2 text-center"
style=
"border-radius:20px;width: 100px"
style=
"border-radius:20px;width: 100px"
(
click
)="
getAppraisalCompentencyForm
(
i
);
current
Tap
=
appraisalCompentency.comType"
(
click
)="
getAppraisalCompentencyForm
(
i
);
current
Part
=
appraisalCompentency.comType"
[
ngClass
]="{'!
bg-primary
text-white
'
:current
Tap
=
=appraisalCompentency.comType}"
>
[
ngClass
]="{'!
bg-primary
text-white
'
:current
Part
=
=appraisalCompentency.comType}"
>
{{appraisalCompentency.comType}}
{{appraisalCompentency.comType}}
<span
class=
"flex align-center justify-center rounded-circle text-white"
[
class
.
bg-danger
]="
formRemain
(
i
)"
<span
class=
"flex align-center justify-center rounded-circle text-white"
[
class
.
bg-danger
]="
formRemain
(
i
)"
...
@@ -22,16 +22,17 @@
...
@@ -22,16 +22,17 @@
<div
class=
"flex justify-around !items-center border bg-white p-2 text-right"
<div
class=
"flex justify-around !items-center border bg-white p-2 text-right"
style=
"border-radius:20px;width: 100px;margin-left: auto;--tw-bg-opacity: 1; background-color: rgb(255 255 255 / var(--tw-bg-opacity));"
>
style=
"border-radius:20px;width: 100px;margin-left: auto;--tw-bg-opacity: 1; background-color: rgb(255 255 255 / var(--tw-bg-opacity));"
>
<i
class=
"bg-white cursor-pointer border ti ti-chevron-down"
<i
class=
"bg-white cursor-pointer border ti ti-chevron-down"
style=
"padding: 1px;border-radius:
5
px;font-size:27px"
(
click
)="
allBiOpen
(
true
)"
></i>
style=
"padding: 1px;border-radius:
10
px;font-size:27px"
(
click
)="
allBiOpen
(
true
)"
></i>
<i
class=
"bg-white cursor-pointer border ti ti-chevron-up"
style=
"padding: 1px;border-radius:5px;font-size:27px"
<i
class=
"bg-white cursor-pointer border ti ti-chevron-up"
(
click
)="
allBiOpen
(
false
)"
></i>
style=
"padding: 1px;border-radius:10px;font-size:27px"
(
click
)="
allBiOpen
(
false
)"
></i>
</div>
</div>
</div>
</div>
<div
class=
"flex flex-col gap-2
"
>
<div
#
scrollContainer
class=
"flex flex-col gap-2 relative"
style=
"height:40vh;overflow-y: auto;
"
>
<ng-container
*
ngFor=
"let item2 of appraisalCompentencyFilter();let i = index;let f= first"
>
<ng-container
*
ngFor=
"let item2 of appraisalCompentencyFilter();let i = index;let f= first"
>
<button
type=
"button"
class=
"p-4 w-full bg-secondary text-white text-left"
(
click
)="
scrollToTable
($
event
)
"
<button
type=
"button"
[
attr
.
id
]="'
menu-
'
+
i
"
class=
"p-4 w-full bg-secondary text-white text-left
"
style=
"border-radius:20px"
style=
"border-radius:20px"
(
click
)="
biOpen
.
set
(
item2
.
groupAssessment1
.
competencyIndicatorsCourses1Mini
.
competencyIndicatorsCourses0
.
competencyTopic
.
competencyTopicId
,
!
biOpen
.
get
(
item2
.
groupAssessment1
.
competencyIndicatorsCourses1Mini
.
competencyIndicatorsCourses0
.
competencyTopic
.
competencyTopicId
))"
>
(
click
)="
scrollToMenu
(
i
);
allBiOpen
(!
biOpen
.
get
(
item2
.
groupAssessment1
.
competencyIndicatorsCourses1Mini
.
competencyIndicatorsCourses0
.
competencyTopic
.
competencyTopicId
),
item2
.
groupAssessment1
.
competencyIndicatorsCourses1Mini
.
competencyIndicatorsCourses0
.
competencyTopic
.
competencyTopicId
)"
>
<span
class=
"absolute -translate-y-1/5 rounded-circle text-white"
[
class
.
bg-danger
]="
inFormRemain
(
item2
)"
<span
class=
"absolute -translate-y-1/5 rounded-circle text-white"
[
class
.
bg-danger
]="
inFormRemain
(
item2
)"
[
class
.
bg-success
]="!
inFormRemain
(
item2
)"
>
[
class
.
bg-success
]="!
inFormRemain
(
item2
)"
>
<ng-container
*
ngIf=
"inFormRemain(item2)"
>
<ng-container
*
ngIf=
"inFormRemain(item2)"
>
...
@@ -106,9 +107,10 @@
...
@@ -106,9 +107,10 @@
<td
class=
"py-2 text-center"
style=
"vertical-align: top"
>
{{bi.assessmentId}}
</td>
<td
class=
"py-2 text-center"
style=
"vertical-align: top"
>
{{bi.assessmentId}}
</td>
<td
class=
"py-2 text-center"
style=
"vertical-align: top"
>
<td
class=
"py-2 text-center"
style=
"vertical-align: top"
>
<div
class=
"flex flex-row justify-center gap-2 mb-2"
>
<div
class=
"flex flex-row justify-center gap-2 mb-2"
>
<ng-container
*
ngFor=
"let item of [1,2,3,4,5];let f = first"
>
<ng-container
*
ngFor=
"let item of [5,4,3,2,1];let f = first"
>
<button
type=
"button"
class=
"p-4 border !border-soft-secondary text-soft-secondary bg-white"
<button
type=
"button"
style=
"border-radius:5px"
class=
"h-12 w-12 p-0 shadow border !border-soft-secondary text-soft-secondary bg-white"
style=
"border-radius:10px"
(
mouseenter
)="
biScore
.
set
(
bi
.
behavioralIndicators
+
bi
.
assessmentId
,
item
)"
(
mouseenter
)="
biScore
.
set
(
bi
.
behavioralIndicators
+
bi
.
assessmentId
,
item
)"
(
mouseleave
)="
biScore
.
clear
()"
(
mouseleave
)="
biScore
.
clear
()"
(
click
)="
bi
.
competencyBehavioral
.
scoreTopicExpectation=
item;calnumberCheck()"
[
ngClass
]="{'!
border-secondary
!
text-secondary
'
:bi
.
competencyBehavioral
.
scoreTopicExpectation
>
=item||(biScore.get(bi.behavioralIndicators+bi.assessmentId) ?? 0)>=item,
(
click
)="
bi
.
competencyBehavioral
.
scoreTopicExpectation=
item;calnumberCheck()"
[
ngClass
]="{'!
border-secondary
!
text-secondary
'
:bi
.
competencyBehavioral
.
scoreTopicExpectation
>
=item||(biScore.get(bi.behavioralIndicators+bi.assessmentId) ?? 0)>=item,
...
@@ -117,9 +119,12 @@
...
@@ -117,9 +119,12 @@
</button>
</button>
</ng-container>
</ng-container>
</div>
</div>
<div
style=
"height: 20px;
"
>
<div
class=
"flex justify-center"
style=
"height: 20px;white-space: nowrap; overflow: visible
"
>
<span
*
ngIf=
"biScore.get(bi.behavioralIndicators+bi.assessmentId)"
class=
"text-secondary"
>
<span
*
ngIf=
"biScore.get(bi.behavioralIndicators+bi.assessmentId)"
class=
"text-secondary"
>
{{scoreDescriptions[(biScore.get(bi.behavioralIndicators+bi.assessmentId) ?? 0) - 1] }}
{{scoreDescriptions[(biScore.get(bi.behavioralIndicators+bi.assessmentId) ?? 0)] }}
</span>
<span
*
ngIf=
"!biScore.get(bi.behavioralIndicators+bi.assessmentId)"
class=
"text-secondary"
>
{{scoreDescriptions[bi.competencyBehavioral.scoreTopicExpectation] }}
</span>
</span>
</div>
</div>
</td>
</td>
...
@@ -129,45 +134,131 @@
...
@@ -129,45 +134,131 @@
</table>
</table>
</ng-container>
</ng-container>
</ng-container>
</ng-container>
</div>
<button
[
attr
.
id
]="'
menu-
'
+
appraisalCompentencyFilter
().
length
"
type=
"button"
<div
class=
"w-1/2 flex flex-col gap-2"
*
ngIf=
"appraisalCompentencyList.length"
>
class=
"p-4 w-full bg-secondary text-white text-left"
style=
"border-radius:20px"
<div
class=
"w-full font-size-18px font-weight-700 mt-2rem"
>
(
click
)="
scrollToMenu
(
appraisalCompentencyFilter
().
length
);
allBiOpen
(!
biOpen
.
get
('สรุป'),'สรุป')"
>
ค่าถ่วงน้ำหนักของความสามารถในแต่ละระดับ
<span
style=
"padding-left:50px"
>
</div>
สรุป
<div
class=
"w-full flex flex-col gap-2 mt-2"
>
</span>
<div
class=
"w-full flex flex-row gap-2"
>
<div
class=
"flex-1 text-center font-size-18px font-weight-700"
*
ngFor=
"let item of [5,4,3,2,1]"
>
<span>
{{item}}
</div>
คะแนนประเมิน
</div>
</span>
<div
class=
"w-full flex flex-row gap-2"
>
</button>
<div
*
ngFor=
"let item of [5,4,3,2,1]"
class=
"flex-1 border border-secondary text-center align-center"
<ng-container
*
ngIf=
"biOpen.get('สรุป')"
>
style=
"border-radius:5px;--tw-bg-opacity: 1; background-color: rgb(255 255 255 / var(--tw-bg-opacity));height: 30px;"
>
<div
class=
"pb-1rem px-2rem"
>
{{calWeightScore(item)}}
<div
class=
"py-2 grid grid-cols-11"
>
<div
class=
"col-span-8"
>
ระดับความสามารถ (Target Degree)
</div>
<div
class=
"col-span-3 grid grid-cols-5"
>
<div
class=
"col-span-1 text-center"
*
ngFor=
"let item of [5,4,3,2,1]"
>
{{item}}
</div>
</div>
</div>
</div>
</div>
<div
class=
"py-2 grid grid-cols-11"
>
</div>
<div
class=
"col-span-8"
>
รวมจำนวนเครื่องหมายแต่ละช่อง (1)
</div>
<div
class=
"w-full mt-2 flex justify-center"
>
<div
class=
"col-span-3 grid grid-cols-5"
>
<div
class=
"w-3/4 flex flex-row gap-2"
>
<div
class=
"col-span-1 text-center"
>
<div
class=
"flex-1 font-size-18px font-weight-700 text-right align-center"
>
{{appraisalCompentencyList[appraisalCompentencyIndex].masfromEvaluationAssessment1lList[0].numberCheck5}}
คะแนนเฉลี่ย
</div>
<div
class=
"col-span-1 text-center"
>
{{appraisalCompentencyList[appraisalCompentencyIndex].masfromEvaluationAssessment1lList[0].numberCheck4}}
</div>
<div
class=
"col-span-1 text-center"
>
{{appraisalCompentencyList[appraisalCompentencyIndex].masfromEvaluationAssessment1lList[0].numberCheck3}}
</div>
<div
class=
"col-span-1 text-center"
>
{{appraisalCompentencyList[appraisalCompentencyIndex].masfromEvaluationAssessment1lList[0].numberCheck2}}
</div>
<div
class=
"col-span-1 text-center"
>
{{appraisalCompentencyList[appraisalCompentencyIndex].masfromEvaluationAssessment1lList[0].numberCheck1}}
</div>
</div>
</div>
</div>
<div
class=
"flex-1 flex justify-center"
>
<div
class=
"py-2 grid grid-cols-11"
>
<div
class=
"w-3/4 border border-secondary text-center align-center"
<div
class=
"col-span-8"
>
ตัวคูณคะแนนในแต่ละช่อง (2)
</div>
style=
"border-radius:5px;--tw-bg-opacity: 1; background-color: rgb(255 255 255 / var(--tw-bg-opacity));height: 30px;"
>
<div
class=
"col-span-3 grid grid-cols-5"
>
{{showNumber(appraisalCompentencyList[appraisalCompentencyIndex].masfromEvaluationAssessment1lList[0].averageScore)}}
<div
class=
"col-span-1 text-center"
>
{{setting.data.settingScore5}}
</div>
<div
class=
"col-span-1 text-center"
>
{{setting.data.settingScore4}}
</div>
<div
class=
"col-span-1 text-center"
>
{{setting.data.settingScore3}}
</div>
<div
class=
"col-span-1 text-center"
>
{{setting.data.settingScore2}}
</div>
<div
class=
"col-span-1 text-center"
>
{{setting.data.settingScore1}}
</div>
</div>
</div>
</div>
</div>
<div
class=
"flex-1 font-size-18px font-weight-700 text-right align-center"
>
<div
class=
"py-2 grid grid-cols-11"
>
ผล Gap
<div
class=
"col-span-8"
>
ถ่วงน้ำหนักผลรวม 1X2
</div>
<div
class=
"col-span-3 grid grid-cols-5"
>
<div
class=
"col-span-1 text-center"
*
ngFor=
"let item of [5,4,3,2,1]"
>
{{calWeightScore(item)}}
</div>
</div>
</div>
</div>
<div
class=
"flex-1 flex justify-center"
>
<div
class=
"py-2 grid grid-cols-11"
>
<div
class=
"w-3/4 border border-secondary text-center align-center"
<div
class=
"col-span-8"
>
คะแนนรวมหลังถ่วงน้ำหนัก
</div>
style=
"border-radius:5px;--tw-bg-opacity: 1; background-color: rgb(255 255 255 / var(--tw-bg-opacity));height: 30px;"
>
<div
class=
"col-span-3 grid grid-cols-5"
>
{{calGap(appraisalCompentencyList[appraisalCompentencyIndex].masfromEvaluationAssessment1lList[0].averageScore)}}
<div
class=
"col-span-5 text-center"
>
{{showNumber(appraisalCompentencyList[appraisalCompentencyIndex].masfromEvaluationAssessment1lList[0].weightedTotal)}}
</div>
</div>
</div>
<div
class=
"py-2 grid grid-cols-11"
>
<div
class=
"col-span-8"
>
คะแนนเฉลี่ยคิดเป็น
</div>
<div
class=
"col-span-3 grid grid-cols-5"
>
<div
class=
"col-span-5 text-center"
>
{{showNumber(appraisalCompentencyList[appraisalCompentencyIndex].masfromEvaluationAssessment1lList[0].averageScore)}}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div
class=
"pb-2rem px-2rem"
>
<div
class=
"overflow-auto rounded-top-0.65rem"
>
<table
class=
"ti-custom-table ti-custom-table-head ti-custom-table-hover2"
>
<thead
class=
"height-50px"
>
<tr
class=
"font-size-12px"
>
<ng-container
*
ngFor=
"let item of ['เกณฑ์การให้คะแนนการประเมิน','ผลประเมิน (A)','สรุปผล Gap'];let f = first ;let l = last"
>
<th
scope=
"col"
[
attr
.
rowspan
]="
f
?'
1
'
:
'
2
'"
[
attr
.
colspan
]="
f
?'
2
'
:
'
1
'"
class=
"relative px-10px py-10px bg-soft-secondary text-primary !text-center"
>
<span
class=
"font-size-12px font-weight-700 "
>
{{ item }}
</span>
</th>
</ng-container>
</tr>
<tr
class=
"font-size-12px"
>
<ng-container
*
ngFor=
"let item of ['เกณฑ์การให้คะแนน','เงื่อนไข']"
>
<th
scope=
"col"
class=
"relative px-10px py-10px bg-soft-secondary text-primary !text-center"
>
{{item}}
</th>
</ng-container>
</tr>
</thead>
<tbody
*
ngIf=
"checkSheet.length"
>
<tr
*
ngFor=
"let item of checkSheet;let i = index"
(
mouseenter
)="
hoveredCode2 =
'true'
"
(
mouseleave
)="
hoveredCode2 =
null"
[
ngClass
]="{
'
table-hover2
'
:
'
true
'
===
hoveredCode2
}"
>
<td
class=
"align-start"
rowspan=
"2"
>
<div
*
ngFor=
"let item2 of item.score"
>
<span>
{{item2}}
</span><br>
</div>
</td>
<td
class=
"align-start"
rowspan=
"2"
>
<div
*
ngFor=
"let item2 of item.condition"
>
<span>
{{item2}}
</span><br>
</div>
</td>
<td
class=
"align-start text-center"
>
{{calAverage(appraisalCompentencyList[appraisalCompentencyIndex].masfromEvaluationAssessment1lList[0].averageScore)}}
</td>
<td
class=
"align-start text-center"
>
{{calGap(appraisalCompentencyList[appraisalCompentencyIndex].masfromEvaluationAssessment1lList[0].averageScore)}}
</td>
</tr>
<tr
(
mouseenter
)="
hoveredCode2 =
'true'
"
(
mouseleave
)="
hoveredCode2 =
null"
[
ngClass
]="{
'
table-hover2
'
:
'
true
'
===
hoveredCode2
}"
>
<td
class=
"align-start !white-space-normal"
colspan=
"4"
>
หมายเหตุ
<br>
ผลการประเมินอาจมีการเปลี่ยนแปลงเงื่อนไขข้อ 1-3 เนื่องจากมีคะแนนต่ำกว่าเกณฑ์ในบางข้อ
</td>
</tr>
</tbody>
</table>
</div>
</div>
</ng-container>
</div>
</div>
</div>
</div>
</ng-template>
</ng-template>
...
@@ -176,7 +267,7 @@
...
@@ -176,7 +267,7 @@
<div
class=
"ltr:border-r rtl:border-l border-gray-200 dark:border-white/10"
style=
"width: 5rem"
>
<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
"
>
<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"
<button
*
ngFor=
"let appraisalCompentency of appraisalCompentencyList ;let i=index"
(
click
)="
getAppraisalCompentencyForm
(
i
)"
[
class
.
active
]="
current
Tap
=
=appraisalCompentency.comType"
(
click
)="
getAppraisalCompentencyForm
(
i
)"
[
class
.
active
]="
current
Part
=
=appraisalCompentency.comType"
type=
"button"
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"
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
"
[
id
]="'
hs-tab-js-vertical-item-
'+
i
"
[
attr
.
data-hs-tab
]="'#
hs-tab-js-vertical-
'+
i
"
...
@@ -197,7 +288,7 @@
...
@@ -197,7 +288,7 @@
<div
class=
"flex-1 w-full"
>
<div
class=
"flex-1 w-full"
>
<div
*
ngFor=
"let appraisalCompentency of appraisalCompentencyList ;let i=index"
[
id
]="'
hs-tab-js-vertical-
'+
i
"
<div
*
ngFor=
"let appraisalCompentency of appraisalCompentencyList ;let i=index"
[
id
]="'
hs-tab-js-vertical-
'+
i
"
role=
"tabpanel"
[
class
.
hidden
]="
current
Tap
!=
appraisalCompentency
.
comType
"
role=
"tabpanel"
[
class
.
hidden
]="
current
Part
!=
appraisalCompentency
.
comType
"
[
attr
.
aria-labelledby
]="'
hs-tab-js-vertical-item-
'+
i
"
>
[
attr
.
aria-labelledby
]="'
hs-tab-js-vertical-item-
'+
i
"
>
<div
class=
"hs-accordion-group w-full"
*
ngIf=
"appraisalCompentency"
>
<div
class=
"hs-accordion-group w-full"
*
ngIf=
"appraisalCompentency"
>
<ng-container>
<ng-container>
...
@@ -238,7 +329,7 @@
...
@@ -238,7 +329,7 @@
<div
<div
class=
"hs-accordion overflow-hidden bg-white border -mt-px first:rounded-t-sm last:rounded-b-sm dark:bg-bgdark dark:border-white/10"
class=
"hs-accordion 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-
'+
i
"
>
[
id
]="'
hs-primary-heading-
'+
i
"
>
<button
(
click
)="
scrollToTable
($
event
)"
<button
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"
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"
[
attr
.
aria-controls
]="'
hs-primary-collapse-
'+
i
"
type=
"button"
>
[
attr
.
aria-controls
]="'
hs-primary-collapse-
'+
i
"
type=
"button"
>
<span
class=
"d-flex align-items-center justify-content-center rounded-circle text-white"
<span
class=
"d-flex align-items-center justify-content-center rounded-circle text-white"
...
...
src/app/components/performance-evaluation/pms-form-employee/pms-competency/pms-competency.component.ts
View file @
a57fbb61
import
{
ViewportScroller
}
from
'@angular/common'
;
import
{
ViewportScroller
}
from
'@angular/common'
;
import
{
ChangeDetectorRef
,
Component
,
E
ventEmitter
,
Input
,
OnInit
,
Output
}
from
'@angular/core'
;
import
{
ChangeDetectorRef
,
Component
,
E
lementRef
,
EventEmitter
,
Input
,
OnInit
,
Output
,
ViewChild
}
from
'@angular/core'
;
import
{
Competency
,
MasfromEvaluationAssessment2List
}
from
'src/app/shared/model/competency.model'
;
import
{
Competency
,
MasfromEvaluationAssessment2List
}
from
'src/app/shared/model/competency.model'
;
import
{
EmployeeModel
,
MyEmployeeModel
}
from
'src/app/shared/model/employee.model'
;
import
{
EmployeeModel
,
MyEmployeeModel
}
from
'src/app/shared/model/employee.model'
;
import
{
SettingAssessmentModel
,
MySettingAssessmentModel
}
from
'src/app/shared/model/setting-assessment.model'
;
import
{
SettingAssessmentModel
,
MySettingAssessmentModel
}
from
'src/app/shared/model/setting-assessment.model'
;
...
@@ -13,7 +13,7 @@ import Swal from 'sweetalert2';
...
@@ -13,7 +13,7 @@ import Swal from 'sweetalert2';
styleUrls
:
[
'./pms-competency.component.scss'
]
styleUrls
:
[
'./pms-competency.component.scss'
]
})
})
export
class
PmsCompetencyComponent
{
export
class
PmsCompetencyComponent
{
@
Input
()
currentTap
=
""
currentPart
=
""
@
Input
()
evaluateeId
=
""
@
Input
()
evaluateeId
=
""
@
Input
()
evaluaterId
=
""
@
Input
()
evaluaterId
=
""
@
Input
()
appraisalCompentencyList
:
Competency
[]
=
[]
@
Input
()
appraisalCompentencyList
:
Competency
[]
=
[]
...
@@ -21,6 +21,9 @@ export class PmsCompetencyComponent {
...
@@ -21,6 +21,9 @@ export class PmsCompetencyComponent {
@
Output
()
sendReturnPath
:
EventEmitter
<
any
>
=
new
EventEmitter
<
any
>
();
@
Output
()
sendReturnPath
:
EventEmitter
<
any
>
=
new
EventEmitter
<
any
>
();
@
Output
()
compentencyFormRemain
:
EventEmitter
<
any
>
=
new
EventEmitter
<
any
>
();
@
Output
()
compentencyFormRemain
:
EventEmitter
<
any
>
=
new
EventEmitter
<
any
>
();
@
Output
()
compentencyForm
:
EventEmitter
<
any
>
=
new
EventEmitter
<
any
>
();
@
Output
()
compentencyForm
:
EventEmitter
<
any
>
=
new
EventEmitter
<
any
>
();
@
Output
()
compentencyScore
:
EventEmitter
<
any
>
=
new
EventEmitter
<
any
>
();
@
Output
()
compentencyWeightScore
:
EventEmitter
<
any
>
=
new
EventEmitter
<
any
>
();
@
Output
()
compentencyGap
:
EventEmitter
<
any
>
=
new
EventEmitter
<
any
>
();
@
Input
()
canEdit
=
false
@
Input
()
canEdit
=
false
@
Input
()
currentStep
=
""
@
Input
()
currentStep
=
""
@
Input
()
dateIso
=
""
@
Input
()
dateIso
=
""
...
@@ -38,6 +41,7 @@ export class PmsCompetencyComponent {
...
@@ -38,6 +41,7 @@ export class PmsCompetencyComponent {
}]
}]
scoreDescriptions
=
[
scoreDescriptions
=
[
''
,
'ไม่มีความรู้พื้นฐานเลย ขาดทักษะในงาน'
,
'ไม่มีความรู้พื้นฐานเลย ขาดทักษะในงาน'
,
'มีความรู้ในงานบ้างแต่ยังไม่สามารถ ประยุกต์ใช้ในงานได้'
,
'มีความรู้ในงานบ้างแต่ยังไม่สามารถ ประยุกต์ใช้ในงานได้'
,
'นำความรู้มาประยุกต์ใช้ในงานได้ ปฏิบัติงานเองได้ด้วยตัวเองแก้ไขปัญหาหน้างานได้'
,
'นำความรู้มาประยุกต์ใช้ในงานได้ ปฏิบัติงานเองได้ด้วยตัวเองแก้ไขปัญหาหน้างานได้'
,
...
@@ -47,6 +51,8 @@ export class PmsCompetencyComponent {
...
@@ -47,6 +51,8 @@ export class PmsCompetencyComponent {
evaluatee
:
{
loading
:
boolean
,
data
:
EmployeeModel
}
=
{
loading
:
false
,
data
:
new
MyEmployeeModel
()
}
evaluatee
:
{
loading
:
boolean
,
data
:
EmployeeModel
}
=
{
loading
:
false
,
data
:
new
MyEmployeeModel
()
}
biOpen
:
Map
<
string
,
boolean
>
=
new
Map
<
string
,
boolean
>
()
biOpen
:
Map
<
string
,
boolean
>
=
new
Map
<
string
,
boolean
>
()
biScore
:
Map
<
string
,
number
>
=
new
Map
<
string
,
number
>
()
biScore
:
Map
<
string
,
number
>
=
new
Map
<
string
,
number
>
()
@
ViewChild
(
'scrollContainer'
)
scrollContainer
!
:
ElementRef
;
constructor
(
private
appraisalService
:
AppraisalService
,
constructor
(
private
appraisalService
:
AppraisalService
,
private
employeeService
:
EmployeeService
,
private
employeeService
:
EmployeeService
,
private
cdr
:
ChangeDetectorRef
,
private
cdr
:
ChangeDetectorRef
,
...
@@ -56,7 +62,7 @@ export class PmsCompetencyComponent {
...
@@ -56,7 +62,7 @@ export class PmsCompetencyComponent {
}
}
ngOnInit
():
void
{
ngOnInit
():
void
{
if
(
this
.
appraisalCompentencyList
.
length
)
{
if
(
this
.
appraisalCompentencyList
.
length
)
{
this
.
current
Tap
=
this
.
currentTap
==
''
?
this
.
appraisalCompentencyList
[
0
].
comType
:
this
.
currentTap
this
.
current
Part
=
this
.
currentPart
==
''
?
this
.
appraisalCompentencyList
[
0
].
comType
:
this
.
currentPart
}
}
this
.
getAppraisalCompentencyForm
(
0
)
this
.
getAppraisalCompentencyForm
(
0
)
this
.
getSettingList
()
this
.
getSettingList
()
...
@@ -93,10 +99,14 @@ export class PmsCompetencyComponent {
...
@@ -93,10 +99,14 @@ export class PmsCompetencyComponent {
getAppraisalCompentencyForm
(
index
:
number
)
{
getAppraisalCompentencyForm
(
index
:
number
)
{
if
(
this
.
appraisalCompentencyList
.
length
)
{
if
(
this
.
appraisalCompentencyList
.
length
)
{
this
.
appraisalCompentencyIndex
=
index
this
.
appraisalCompentencyIndex
=
index
this
.
current
Tap
=
this
.
appraisalCompentencyList
[
this
.
appraisalCompentencyIndex
].
comType
this
.
current
Part
=
this
.
appraisalCompentencyList
[
this
.
appraisalCompentencyIndex
].
comType
this
.
biOpen
.
clear
()
this
.
biOpen
.
clear
()
this
.
appraisalCompentencyFilter
().
forEach
(
x
=>
{
this
.
appraisalCompentencyFilter
().
forEach
(
(
x
,
i
)
=>
{
this
.
biOpen
.
set
(
x
.
groupAssessment1
.
competencyIndicatorsCourses1Mini
.
competencyIndicatorsCourses0
.
competencyTopic
.
competencyTopicId
,
false
)
this
.
biOpen
.
set
(
x
.
groupAssessment1
.
competencyIndicatorsCourses1Mini
.
competencyIndicatorsCourses0
.
competencyTopic
.
competencyTopicId
,
false
)
const
isLast
=
i
===
this
.
appraisalCompentencyFilter
().
length
-
1
;
if
(
isLast
)
{
this
.
biOpen
.
set
(
"สรุป"
,
false
)
}
})
})
this
.
cdr
.
detectChanges
()
this
.
cdr
.
detectChanges
()
switch
(
this
.
currentStep
)
{
switch
(
this
.
currentStep
)
{
...
@@ -268,22 +278,39 @@ export class PmsCompetencyComponent {
...
@@ -268,22 +278,39 @@ export class PmsCompetencyComponent {
this
.
inFormRemain
(
data
)
this
.
inFormRemain
(
data
)
).
filter
(
data
=>
data
!=
0
).
length
).
filter
(
data
=>
data
!=
0
).
length
).
filter
(
data
=>
data
!=
0
).
length
).
filter
(
data
=>
data
!=
0
).
length
const
score
=
[
1
,
2
,
3
,
4
,
5
]
this
.
compentencyScore
.
emit
(
score
.
map
(
x
=>
this
.
calWeightScore
(
x
)))
this
.
compentencyWeightScore
.
emit
(
this
.
showNumber
(
this
.
appraisalCompentencyList
[
this
.
appraisalCompentencyIndex
].
masfromEvaluationAssessment1lList
[
0
].
averageScore
))
this
.
compentencyGap
.
emit
(
this
.
calGap
(
this
.
appraisalCompentencyList
[
this
.
appraisalCompentencyIndex
].
masfromEvaluationAssessment1lList
[
0
].
averageScore
))
this
.
compentencyForm
.
emit
(
this
.
appraisalCompentencyList
)
this
.
compentencyForm
.
emit
(
this
.
appraisalCompentencyList
)
this
.
compentencyFormRemain
.
emit
(
remain
)
this
.
compentencyFormRemain
.
emit
(
remain
)
}
}
scrollToTable
(
event
:
MouseEvent
)
{
allBiOpen
(
status
:
boolean
,
part
?:
string
)
{
const
target
=
event
.
target
as
HTMLElement
;
const
position
=
target
.
getBoundingClientRect
();
window
.
scrollTo
({
top
:
position
.
top
+
window
.
scrollY
-
100
,
behavior
:
'smooth'
});
}
allBiOpen
(
status
:
boolean
)
{
this
.
biOpen
.
forEach
((
_
,
key
)
=>
{
this
.
biOpen
.
forEach
((
_
,
key
)
=>
{
this
.
biOpen
.
set
(
key
,
status
)
if
(
part
)
{
if
(
part
==
key
)
{
this
.
biOpen
.
set
(
key
,
status
)
}
else
{
if
(
status
)
{
this
.
biOpen
.
set
(
key
,
false
)
}
}
}
else
{
this
.
biOpen
.
set
(
key
,
status
)
}
})
})
}
}
scrollToMenu
(
index
:
number
)
{
setTimeout
(()
=>
{
const
container
=
this
.
scrollContainer
?.
nativeElement
as
HTMLElement
;
const
target
=
container
.
querySelector
(
'#menu-'
+
index
)
as
HTMLElement
;
if
(
container
&&
target
)
{
container
.
scrollTop
=
target
.
offsetTop
;
}
},
0
);
}
}
}
src/app/components/performance-evaluation/pms-form-employee/pms-form-employee.component.html
View file @
a57fbb61
<app-page-header
*
ngIf=
"evaluationForm=='sup'"
[
pathTitle
]="['การประเมินผล',
'ประเมินโดยหัวหน้า']"
></app-page-header>
<ng-container
*
ngTemplateOutlet=
"evaluation"
></ng-container>
<ng-container
*
ngTemplateOutlet=
"evaluation"
></ng-container>
<ng-template
#
evaluation
>
<ng-template
#
evaluation
>
<div
*
ngIf=
"evaluationForm=='sup'"
class=
"pt-1.5rem w-full min-height-50px justify-between items-center"
>
<div
*
ngIf=
"evaluationForm=='sup'"
class=
"pt-1.5rem w-full min-height-50px justify-between items-center"
>
...
@@ -22,187 +21,265 @@
...
@@ -22,187 +21,265 @@
ประเมินผลประจำปี {{currentDate.getFullYear()}}
ประเมินผลประจำปี {{currentDate.getFullYear()}}
</div>
</div>
</div>
</div>
<div
class=
"w-full"
*
ngIf=
"compentency.data"
>
<div
class=
"flex flex-col gap-2"
style=
"height:81vh;overflow-y: auto;"
>
<div
class=
"box m-0"
style=
"border-radius:20px"
>
<div
class=
"w-full"
*
ngIf=
"compentency.data"
>
<div
class=
"box-body py-2"
>
<div
class=
"box m-0"
style=
"border-radius:20px"
>
<div
class=
"flex flex-row gap-2"
<div
class=
"box-body py-2"
>
[
ngStyle
]="{'
justify-content
'
:
compentency
.
data
.
pms
.
gradeScore
?'
space-between
'
:
'
center
'}"
>
<div
class=
"flex flex-row gap-2"
<div
[
ngClass
]="{'
w-full
'
:
!
compentency
.
data
.
pms
.
gradeScore
,'
w-1
/
2
'
:compentency
.
data
.
pms
.
gradeScore
}"
>
[
ngStyle
]="{'
justify-content
'
:
compentency
.
data
.
pms
.
gradeScore
?'
space-between
'
:
'
center
'}"
>
<img
src=
"./assets/img/users/defaultperson.jpg"
<div
[
ngClass
]="{'
w-full
'
:
!
compentency
.
data
.
pms
.
gradeScore
,'
w-1
/
2
'
:compentency
.
data
.
pms
.
gradeScore
}"
>
class=
"w-24 h-24 rounded-full ring-4 ring-white/10 mx-auto"
id=
"profile-img"
alt=
"profile-img"
/>
<img
src=
"./assets/img/users/defaultperson.jpg"
class=
"w-24 h-24 rounded-full ring-4 ring-white/10 mx-auto"
id=
"profile-img"
alt=
"profile-img"
/>
</div>
<div
*
ngIf=
"compentency.data.pms.gradeScore"
class=
"w-1/2 flex flex-col justify-center"
style=
"align-self: center;"
>
<div
class=
"flex-1 flex flex-row gap-1 justify-center"
>
<div
*
ngFor=
"let item of [1,2,3,4,5]"
>
<i
class=
"ti"
style=
"font-size:20px"
[
ngClass
]="
item
<=
gradeStar
(
compentency
.
data
.
pms
.
gradeScore
)
?
'
ti-star-filled
text-warning
'
:
'
ti-star
text-gray-300
'"
></i>
</div>
</div>
<div
class=
"flex-1 text-center"
>
{{compentency.data.pms.gradeScore? "GRADE : " + compentency.data.pms.gradeScore : ''}}
</div>
</div>
</div>
</div>
<div
*
ngIf=
"compentency.data.pms.gradeScore"
class=
"w-1/2 flex"
style=
"align-self: center;"
>
</div>
{{compentency.data.pms.gradeScore? "GRADE : " + compentency.data.pms.gradeScore : ''}}
</div>
</div>
<div
class=
"w-full"
>
<div
class=
"box m-0"
style=
"border-radius:20px"
>
<div
class=
"box-header"
>
<div
class=
"flex justify-between"
>
<h5
class=
"box-title"
>
ข้อมูลพนักงาน
</h5>
</div>
</div>
</div>
</div>
<div
class=
"box-body py-2"
>
<table
class=
"ti-custom-table border-0 ellipsis-text"
>
<tbody>
<tr
class=
"!border-0"
>
<td
class=
"font-medium !p-2"
>
รหัสพนักงาน
</td>
<td
class=
"!p-2"
>
:
</td>
<td
class=
"font-medium !p-2"
>
{{evaluatee.data.employeeId}}
</td>
</tr>
<tr
class=
"!border-0"
>
<td
class=
"font-medium !p-2"
>
ตำเเหน่ง
</td>
<td
class=
"!p-2"
>
:
</td>
<td
class=
"font-medium !p-2 !text-warp"
>
{{evaluatee.data.position.tdesc}}
</td>
</tr>
<tr
class=
"!border-0"
>
<td
class=
"font-medium !p-2"
>
ฝ่าย
</td>
<td
class=
"!p-2"
>
:
</td>
<td
class=
"font-medium !p-2 !text-warp"
>
{{evaluatee.data.bu1.tdesc}}
</td>
</tr>
<tr
class=
"!border-0"
>
<td
class=
"font-medium !p-2"
>
แผนก
</td>
<td
class=
"!p-2"
>
:
</td>
<td
class=
"font-medium !p-2 !text-warp"
>
{{evaluatee.data.bu2.tdesc}}
</td>
</tr>
<tr
class=
"!border-0"
>
<td
class=
"font-medium !p-2"
>
ส่วน
</td>
<td
class=
"!p-2"
>
:
</td>
<td
class=
"font-medium !p-2 !text-warp"
>
{{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=
"font-medium !p-2 !text-warp"
>
{{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=
"font-medium !p-2 !text-warp"
>
{{evaluatee.data.bu5.tdesc}}
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
<div
class=
"w-full"
*
ngIf=
"currentTap=='แบบประเมินสมรรถนะ'"
>
<div
class=
"w-full"
>
<div
class=
"box m-0"
style=
"border-radius:20px"
>
<div
class=
"box m-0"
style=
"border-radius:20px"
>
<div
class=
"box-header"
>
<div
class=
"box-header"
>
<div
class=
"flex justify-between"
>
<div
class=
"flex justify-between"
>
<h5
class=
"box-title"
>
ค่าถ่วงน้ำหนักของความสามารถในแต่ละระดับ
</h5>
<h5
class=
"box-title"
>
ข้อมูลพนักงาน
</h5>
</div>
</div>
<div
class=
"box-body py-2"
>
<div
class=
"w-full flex flex-col gap-2"
*
ngIf=
"compentency.data"
>
<div
class=
"w-full flex flex-col gap-2 mt-2"
>
<div
class=
"w-full flex flex-row gap-2"
>
<div
class=
"flex-1 text-center font-size-18px font-weight-700"
*
ngFor=
"let item of [5,4,3,2,1]"
>
{{item}}
</div>
</div>
<div
class=
"w-full flex flex-row gap-2"
>
<div
*
ngFor=
"let item of [5,4,3,2,1]"
class=
"flex-1 border border-secondary text-center align-center"
style=
"border-radius:10px;--tw-bg-opacity: 1; background-color: rgb(255 255 255 / var(--tw-bg-opacity));height: 30px;"
>
{{compentencyScore[item-1]}}
</div>
</div>
</div>
<div
class=
"w-full mt-2 flex justify-center"
>
<div
class=
"flex flex-row gap-2"
style=
"width:80%"
>
<div
class=
"flex-1 font-size-18px font-weight-700 text-right align-center"
>
คะแนนเฉลี่ย
</div>
<div
class=
"flex-1 flex justify-center"
>
<div
class=
"w-3/4 border border-secondary text-center align-center"
style=
"border-radius:10px;--tw-bg-opacity: 1; background-color: rgb(255 255 255 / var(--tw-bg-opacity));height: 30px;"
>
{{compentencyWeightScore}}
</div>
</div>
<div
class=
"flex-1 font-size-18px font-weight-700 text-right align-center"
>
ผล Gap
</div>
<div
class=
"flex-1 flex justify-center"
>
<div
class=
"w-3/4 border border-secondary text-center align-center"
style=
"border-radius:10px;--tw-bg-opacity: 1; background-color: rgb(255 255 255 / var(--tw-bg-opacity));height: 30px;"
>
{{compentencyGap}}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div
class=
"box-body py-2"
>
</div>
<table
class=
"ti-custom-table border-0 ellipsis-text"
>
<div
class=
"w-full"
*
ngIf=
"currentTap=='ประเมินผลการปฏิบัติงาน'||currentTap=='สรุปคะแนนและข้อเสนอแนะ'"
>
<tbody>
<div
class=
"box m-0"
style=
"border-radius:20px"
>
<tr
class=
"!border-0"
>
<div
class=
"box-header"
>
<td
class=
"font-medium !p-2"
>
รหัสพนักงาน
</td>
<div
class=
"flex justify-between"
>
<td
class=
"!p-2"
>
:
</td>
<h5
class=
"box-title"
>
สรุปผลประเมิน
</h5>
<td
class=
"font-medium !p-2"
>
</div>
{{evaluatee.data.employeeId}}
</div>
</td>
<div
class=
"box-body py-2"
>
</tr>
<div
class=
'flex flex-col'
*
ngFor=
"let item of kpiScorePart; let i=index"
>
<tr
class=
"!border-0"
>
<div
class=
'flex flex-row'
>
<td
class=
"font-medium !p-2"
>
ตำเเหน่ง
</td>
<div
style=
"width: 25%;"
>
<td
class=
"!p-2"
>
:
</td>
{{item.text}}
<td
class=
"font-medium !p-2 !text-warp"
>
</div>
{{evaluatee.data.position.tdesc}}
<div
style=
"width: 10%;"
>
</td>
:
</tr>
</div>
<tr
class=
"!border-0"
>
<div
style=
"width: 65%;"
>
<td
class=
"font-medium !p-2"
>
ฝ่าย
</td>
{{item.score}}
<td
class=
"!p-2"
>
:
</td>
</div>
<td
class=
"font-medium !p-2 !text-warp"
>
</div>
{{evaluatee.data.bu1.tdesc}}
</div>
</td>
</div>
</tr>
<tr
class=
"!border-0"
>
<td
class=
"font-medium !p-2"
>
แผนก
</td>
<td
class=
"!p-2"
>
:
</td>
<td
class=
"font-medium !p-2 !text-warp"
>
{{evaluatee.data.bu2.tdesc}}
</td>
</tr>
<tr
class=
"!border-0"
>
<td
class=
"font-medium !p-2"
>
ส่วน
</td>
<td
class=
"!p-2"
>
:
</td>
<td
class=
"font-medium !p-2 !text-warp"
>
{{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=
"font-medium !p-2 !text-warp"
>
{{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=
"font-medium !p-2 !text-warp"
>
{{evaluatee.data.bu5.tdesc}}
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<div
class=
"w-full"
*
ngIf=
"compentency.data"
>
<div
class=
"w-full"
*
ngIf=
"compentency.data"
>
<div
class=
"box m-0"
style=
"border-radius:20px"
>
<div
class=
"box m-0"
style=
"border-radius:20px"
>
<div
class=
"box-header"
>
<div
class=
"box-header"
>
<div
class=
"flex justify-between"
>
<div
class=
"flex justify-between"
>
<h5
class=
"box-title"
>
สถานะการประเมิน
</h5>
<h5
class=
"box-title"
>
สถานะการประเมิน
</h5>
</div>
</div>
<div
class=
"box-body space-y-4 text-center"
>
<ng-container
*
ngFor=
"let apsEmp of ['apsassessy','apsapprove1','apsapprove2','apsapprove3','apsapprove4','apsapprove5']; let i=index ; let f=first"
>
<div
class=
"flex flex-row"
*
ngIf=
"returnField(compentency.data,apsEmp+'.thFullName')"
>
<div
class=
"mx-auto relative"
>
<div
class=
"h-full flex items-center justify-center pb-4"
style=
"width: 32px;"
>
<div
class=
"h-full w-[3px] bg-gray-100 pointer-events-none"
></div>
</div>
<div
class=
"absolute rounded-full text-center align-center"
style=
"justify-items:center;top:-5px"
>
<span
class=
"d-flex align-items-center justify-content-center rounded-circle text-white"
[
class
]="
assessmentStatusClass
(
compentency
.
data
.
currentStep
,
i
,
returnField
(
compentency
.
data
,
apsEmp
+'.
status
'))"
>
<i
[
class
]="
assessmentStatusIcon
(
compentency
.
data
.
currentStep
,
i
,
returnField
(
compentency
.
data
,
apsEmp
+'.
status
'))"
></i>
</span>
</div>
</div>
<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=
"text-start my-auto text-gray-500 dark:text-white/70"
style=
"line-height: 1.5"
>
<span
class=
"text-dark dark:text-white"
>
<ng-container
*
ngIf=
"i==0"
>
ผู้รับการประเมิน
</ng-container>
<ng-container
*
ngIf=
"i>0"
>
ผู้อนุมัติลำดับที่ {{i}}
</ng-container>
</span>
<br>
<span
class=
"text-dark dark:text-white"
>
{{returnField(compentency.data,apsEmp+'.thFullName')}}
</span>
<br>
<p
class=
"text-xs text-gray-500 dark:text-white/70"
>
{{assessmentStatusText(compentency.data.currentStep,i,returnField(compentency.data,apsEmp+'.status'))}}
</p>
</h3>
</div>
</div>
</div>
</div>
</ng-container>
</div>
</div>
</div>
</div>
<div
class=
"box-body space-y-4 text-center"
>
</div>
<ng-container
<div
class=
"w-full"
*
ngIf=
"commentAllFilter().length"
>
*
ngFor=
"let apsEmp of ['apsassessy','apsapprove1','apsapprove2','apsapprove3','apsapprove4','apsapprove5']; let i=index ; let f=first"
>
<div
class=
"box m-0"
style=
"border-radius:20px"
>
<div
class=
"flex flex-row"
*
ngIf=
"returnField(compentency.data,apsEmp+'.thFullName')"
>
<div
class=
"box-header"
>
<div
class=
"flex justify-between"
>
<h5
class=
"box-title"
>
Timeline
</h5>
</div>
</div>
<div
class=
"box-body space-y-4 text-center"
>
<div
class=
"flex flex-row"
*
ngFor=
"let item of commentAllFilter(); let i=index"
>
<div
class=
"mx-auto relative"
>
<div
class=
"mx-auto relative"
>
<div
class=
"h-full flex items-center justify-center pb-4"
style=
"width: 32px;"
>
<div
class=
"h-full flex items-center justify-center pb-4"
style=
"width: 32px;"
>
<div
class=
"h-full w-[3px] bg-gray-100 pointer-events-none"
></div>
<div
class=
"h-full w-[3px] bg-gray-100 pointer-events-none"
></div>
</div>
</div>
<div
class=
"absolute rounded-full text-center align-center"
style=
"justify-items:center;top:-5px"
>
<div
class=
"absolute rounded-full text-center align-center"
style=
"justify-items:center;top:-5px"
>
<span
class=
"d-flex align-items-center justify-content-center rounded-circle text-white"
<span
class=
"d-flex align-items-center justify-content-center rounded-circle text-white"
[
class
]="
assessmentStatusClass
(
compentency
.
data
.
currentStep
,
i
,
returnField
(
compentency
.
data
,
apsEmp
+'.
status
'))"
>
[
class
]="
statusCompetencyClass
(
item
.
statusType
)"
>
<i
<i
[
class
]="
statusCompetencyIcon
(
item
.
statusType
)"
></i>
[
class
]="
assessmentStatusIcon
(
compentency
.
data
.
currentStep
,
i
,
returnField
(
compentency
.
data
,
apsEmp
+'.
status
'))"
></i>
</span>
</span>
</div>
</div>
</div>
</div>
<div
class=
"flex w-full pb-4"
>
<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=
"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
"
>
<div
class=
"
w-full
"
>
<h3
class=
"text-start my-auto text-gray-500 dark:text-white/70"
style=
"line-height: 1.5"
>
<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
class=
"text-dark dark:text-white"
style=
"white-space: nowrap;"
>
<ng-container
*
ngIf=
"i==0"
>
{{item.thFullName}}
ผู้รับการประเมิน
</ng-container>
<ng-container
*
ngIf=
"i==1&&returnField(compentency.data,'apsapprove'+(i+1)+'.thFullName')"
>
ผู้ประเมิน
</ng-container>
<ng-container
*
ngIf=
"i==1&&!returnField(compentency.data,'apsapprove'+(i+1)+'.thFullName')"
>
ผู้อนุมัติลำดับที่ 1
</ng-container>
<ng-container
*
ngIf=
"i>1&&!returnField(compentency.data,'apsapprove'+(i+1)+'.thFullName')"
>
ผู้อนุมัติลำดับที่ {{i-1}}
</ng-container>
</span>
</span>
<br>
<br>
<span
class=
"text-dark dark:text-white"
>
<div
style=
"display: flex;justify-content :space-between;"
>
{{returnField(compentency.data,apsEmp+'.thFullName')}}
<p
class=
"text-xs text-gray-500 dark:text-white/70"
>
</span>
{{statusCompetencyText(item.statusType)}}
<br>
</p>
<p
class=
"text-xs text-gray-500 dark:text-white/70"
>
<p
class=
"my-auto ltr:ml-auto rtl:mr-auto text-gray-500 dark:text-white/70 text-xs"
>
{{assessmentStatusText(compentency.data.currentStep,i,returnField(compentency.data,apsEmp+'.status'))}}
{{convertDate(item.commentDate)}}
</p>
</p>
</div>
</h3>
</h3>
</div>
</div>
</div>
<div
*
ngIf=
"item.comment"
</div>
class=
"border border-gray-200 bg-gray-50 dark:bg-black/20 dark:border-white/10 p-4 rounded-sm"
>
</div>
<p
class=
"text-start text-xs text-gray-500 dark:text-white/70"
style=
"line-height: 1.5"
>
</ng-container>
{{item.comment}}
</div>
</p>
</div>
</div>
</div>
<div
class=
"w-full"
*
ngIf=
"commentAllFilter().length"
>
<div
class=
"box m-0"
style=
"border-radius:20px"
>
<div
class=
"box-header"
>
<div
class=
"flex justify-between"
>
<h5
class=
"box-title"
>
Timeline
</h5>
</div>
</div>
<div
class=
"box-body space-y-4 text-center"
>
<div
class=
"flex flex-row"
*
ngFor=
"let item of commentAllFilter(); let i=index"
>
<div
class=
"mx-auto relative"
>
<div
class=
"h-full flex items-center justify-center pb-4"
style=
"width: 32px;"
>
<div
class=
"h-full w-[3px] bg-gray-100 pointer-events-none"
></div>
</div>
<div
class=
"absolute rounded-full text-center align-center"
style=
"justify-items:center;top:-5px"
>
<span
class=
"d-flex align-items-center justify-content-center rounded-circle text-white"
[
class
]="
statusCompetencyClass
(
item
.
statusType
)"
>
<i
[
class
]="
statusCompetencyIcon
(
item
.
statusType
)"
></i>
</span>
</div>
</div>
<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=
"w-full"
>
<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;"
>
{{item.thFullName}}
</span>
<br>
<div
style=
"display: flex;justify-content :space-between;"
>
<p
class=
"text-xs text-gray-500 dark:text-white/70"
>
{{statusCompetencyText(item.statusType)}}
</p>
<p
class=
"my-auto ltr:ml-auto rtl:mr-auto text-gray-500 dark:text-white/70 text-xs"
>
{{convertDate(item.commentDate)}}
</p>
</div>
</h3>
</div>
<div
*
ngIf=
"item.comment"
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.comment}}
</p>
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -225,7 +302,7 @@
...
@@ -225,7 +302,7 @@
</ng-container>
</ng-container>
</div>
</div>
<div
class=
"w-1/4"
>
<div
class=
"w-1/4"
>
<div
class=
"font-size-18px font-weight-700 text-primary"
>
<div
class=
"font-size-18px font-weight-700 text-primary
text-right
"
>
สถานะผู้ประเมิน
:
{{currentStepText()}}
สถานะผู้ประเมิน
:
{{currentStepText()}}
</div>
</div>
</div>
</div>
...
@@ -270,8 +347,8 @@
...
@@ -270,8 +347,8 @@
[
ngClass
]="{'!
bg-primary
text-white
'
:currentTap=
='สรุปคะแนนและข้อเสนอแนะ'}"
>
[
ngClass
]="{'!
bg-primary
text-white
'
:currentTap=
='สรุปคะแนนและข้อเสนอแนะ'}"
>
สรุปคะแนนและข้อเสนอแนะ
สรุปคะแนนและข้อเสนอแนะ
</button>
</button>
<button
*
ngIf=
"evaluationForm=='sup'"
type=
"button"
class=
"flex-1 border bg-white p-2 text-center
"
<button
type=
"button"
class=
"flex-1 border bg-white p-2 text-center"
style=
"border-radius:20px
"
style=
"border-radius:20px"
(
click
)="
currentTap=
'แผนพัฒนาบุคคลากร'
"
(
click
)="
currentTap=
'แผนพัฒนาบุคคลากร'
"
[
ngClass
]="{'!
bg-primary
text-white
'
:currentTap=
='แผนพัฒนาบุคคลากร'}"
>
[
ngClass
]="{'!
bg-primary
text-white
'
:currentTap=
='แผนพัฒนาบุคคลากร'}"
>
แผนพัฒนาบุคคลากร
แผนพัฒนาบุคคลากร
</button>
</button>
...
@@ -282,9 +359,10 @@
...
@@ -282,9 +359,10 @@
<app-pms-information></app-pms-information>
<app-pms-information></app-pms-information>
</ng-container>
</ng-container>
<ng-container
*
ngIf=
"currentTap=='แบบประเมินสมรรถนะ'&&compentency.data&&evaluaterId&&evaluateeId"
>
<ng-container
*
ngIf=
"currentTap=='แบบประเมินสมรรถนะ'&&compentency.data&&evaluaterId&&evaluateeId"
>
<app-pms-competency
[
currentTap
]="
currentTap
"
[
appraisalCompentencyList
]="
compentency
.
data
.
competency
"
<app-pms-competency
[
appraisalCompentencyList
]="
compentency
.
data
.
competency
"
[
evaluaterId
]="
evaluaterId
"
[
evaluaterId
]="
evaluaterId
"
[
evaluateeId
]="
evaluateeId
"
[
canEdit
]="
canEdit
"
[
evaluateeId
]="
evaluateeId
"
[
canEdit
]="
canEdit
"
[
currentStep
]="
compentency
.
data
.
currentStep
"
[
currentStep
]="
compentency
.
data
.
currentStep
"
[
dateIso
]="
dateIso
"
[
dateIso
]="
dateIso
"
(
compentencyScore
)="
compentencyScore=
$event"
(
compentencyWeightScore
)="
compentencyWeightScore=
$event"
(
compentencyGap
)="
compentencyGap=
$event"
(
compentencyFormRemain
)="
compentencyFormRemain=
$event"
(
compentencyFormRemain
)="
compentencyFormRemain=
$event"
(
compentencyForm
)="
compentency
.
data
.
competency=
$event"
></app-pms-competency>
(
compentencyForm
)="
compentency
.
data
.
competency=
$event"
></app-pms-competency>
</ng-container>
</ng-container>
...
@@ -293,19 +371,21 @@
...
@@ -293,19 +371,21 @@
<app-pms-kpi
[
appraisalPms
]="
compentency
.
data
.
pms
"
[
currentTap
]="
currentTap
"
<app-pms-kpi
[
appraisalPms
]="
compentency
.
data
.
pms
"
[
currentTap
]="
currentTap
"
[
evaluaterId
]="
evaluaterId
"
[
evaluateeId
]="
evaluateeId
"
[
canEdit
]="
canEdit
"
[
evaluaterId
]="
evaluaterId
"
[
evaluateeId
]="
evaluateeId
"
[
canEdit
]="
canEdit
"
[
currentStep
]="
compentency
.
data
.
currentStep
"
[
dateIso
]="
dateIso
"
[
currentStep
]="
compentency
.
data
.
currentStep
"
[
dateIso
]="
dateIso
"
(
kpiFormRemain
)="
kpiFormRemain=
$event"
(
kpiForm
)="
compentency
.
data
.
pms=
$event"
></app-pms-kpi>
(
kpiFormRemain
)="
kpiFormRemain=
$event"
(
scorePart
)="
kpiScorePart=
$event"
(
kpiForm
)="
compentency
.
data
.
pms=
$event"
></app-pms-kpi>
</ng-container>
</ng-container>
</ng-container>
</ng-container>
<ng-container
*
ngIf=
"currentTap=='สรุปคะแนนและข้อเสนอแนะ'&&compentency.data&&evaluateeId&&evaluaterId"
>
<ng-container
*
ngIf=
"currentTap=='สรุปคะแนนและข้อเสนอแนะ'&&compentency.data&&evaluateeId&&evaluaterId"
>
<app-pms-kpi
[
appraisalPms
]="
compentency
.
data
.
pms
"
[
currentTap
]="
currentTap
"
[
evaluaterId
]="
evaluaterId
"
<app-pms-kpi
[
appraisalPms
]="
compentency
.
data
.
pms
"
[
currentTap
]="
currentTap
"
[
evaluaterId
]="
evaluaterId
"
[
evaluateeId
]="
evaluateeId
"
[
canEdit
]="
canEdit
"
[
currentStep
]="
compentency
.
data
.
currentStep
"
[
evaluateeId
]="
evaluateeId
"
[
canEdit
]="
canEdit
"
[
currentStep
]="
compentency
.
data
.
currentStep
"
[
dateIso
]="
dateIso
"
(
kpiFormRemain
)="
kpiFormRemain=
$event"
[
dateIso
]="
dateIso
"
(
kpiFormRemain
)="
kpiFormRemain=
$event"
(
scorePart
)="
kpiScorePart=
$event"
(
kpiForm
)="
compentency
.
data
.
pms=
$event"
></app-pms-kpi>
(
kpiForm
)="
compentency
.
data
.
pms=
$event"
></app-pms-kpi>
</ng-container>
</ng-container>
<ng-container
*
ngIf=
"currentTap=='แผนพัฒนาบุคคลากร'&&compentency.data&&evaluateeId&&evaluaterId"
>
<ng-container
*
ngIf=
"currentTap=='แผนพัฒนาบุคคลากร'&&compentency.data&&evaluateeId&&evaluaterId"
>
<app-pms-idp
[
appraisalIdp
]="
compentency
.
data
.
idp
"
[
evaluaterId
]="
evaluaterId
"
<app-pms-idp
[
appraisalIdp
]="
compentency
.
data
.
idp
"
[
evaluaterId
]="
evaluaterId
"
[
evaluateeId
]="
evaluateeId
"
[
canEdit
]="
canEdit
"
[
currentStep
]="
compentency
.
data
.
currentStep
"
[
evaluateeId
]="
evaluateeId
"
[
canEdit
]="
evaluationForm=
='sup'?canEdit:false"
[
dateIso
]="
dateIso
"
(
idpForm
)="
compentency
.
data
.
idp=
$event"
></app-pms-idp>
[
currentStep
]="
compentency
.
data
.
currentStep
"
[
dateIso
]="
dateIso
"
(
idpForm
)="
compentency
.
data
.
idp=
$event"
></app-pms-idp>
</ng-container>
</ng-container>
</div>
</div>
<div
*
ngIf=
"compentency.data&&canSave"
class=
"box-footer text-end space-x-3 rtl:space-x-reverse"
>
<div
*
ngIf=
"compentency.data&&canSave"
class=
"box-footer text-end space-x-3 rtl:space-x-reverse"
>
...
...
src/app/components/performance-evaluation/pms-form-employee/pms-form-employee.component.ts
View file @
a57fbb61
...
@@ -50,28 +50,46 @@ export class PmsFormEmployeeComponent {
...
@@ -50,28 +50,46 @@ export class PmsFormEmployeeComponent {
currentDate
=
new
Date
()
currentDate
=
new
Date
()
comment
=
""
comment
=
""
compentencyScore
:
String
[]
=
[]
compentencyWeightScore
=
""
compentencyGap
=
""
kpiScorePart
:
{
text
:
string
,
score
:
string
}[]
=
[]
currentStepText
=
()
=>
{
currentStepText
=
()
=>
{
if
(
this
.
compentency
.
data
)
{
if
(
this
.
compentency
.
data
)
{
if
(
this
.
compentency
.
data
.
apsassessy
.
employeeId
==
this
.
evaluaterId
)
{
if
(
this
.
compentency
.
data
.
apsassessy
.
employeeId
==
this
.
evaluaterId
)
{
return
"ผู้รับการประเมิน"
return
"ผู้รับการประเมิน"
}
else
if
(
this
.
compentency
.
data
.
apsapprove1
.
employeeId
==
this
.
evaluaterId
)
{
}
else
if
(
this
.
compentency
.
data
.
apsapprove1
.
employeeId
==
this
.
evaluaterId
)
{
if
(
this
.
compentency
.
data
.
apsapprove2
.
employeeId
)
{
return
"ผู้ประเมิน"
}
return
"ผู้อนุมัติลำดับที่ 1"
return
"ผู้อนุมัติลำดับที่ 1"
}
else
if
(
this
.
compentency
.
data
.
apsapprove2
.
employeeId
==
this
.
evaluaterId
)
{
}
else
if
(
this
.
compentency
.
data
.
apsapprove2
.
employeeId
==
this
.
evaluaterId
)
{
return
"ผู้อนุมัติลำดับที่ 1"
}
else
if
(
this
.
compentency
.
data
.
apsapprove3
.
employeeId
==
this
.
evaluaterId
)
{
return
"ผู้อนุมัติลำดับที่ 2"
return
"ผู้อนุมัติลำดับที่ 2"
}
else
if
(
this
.
compentency
.
data
.
apsapprove
4
.
employeeId
==
this
.
evaluaterId
)
{
}
else
if
(
this
.
compentency
.
data
.
apsapprove
3
.
employeeId
==
this
.
evaluaterId
)
{
return
"ผู้อนุมัติลำดับที่ 3"
return
"ผู้อนุมัติลำดับที่ 3"
}
else
if
(
this
.
compentency
.
data
.
apsapprove
5
.
employeeId
==
this
.
evaluaterId
)
{
}
else
if
(
this
.
compentency
.
data
.
apsapprove
4
.
employeeId
==
this
.
evaluaterId
)
{
return
"ผู้อนุมัติลำดับที่ 4"
return
"ผู้อนุมัติลำดับที่ 4"
}
else
if
(
this
.
compentency
.
data
.
apsapprove5
.
employeeId
==
this
.
evaluaterId
)
{
return
"ผู้อนุมัติลำดับที่ 5"
}
}
}
}
return
""
return
""
}
}
gradeStar
=
(
grade
:
string
)
=>
{
if
(
grade
==
'A'
)
{
return
5
}
else
if
(
grade
==
'B'
)
{
return
4
}
else
if
(
grade
==
'C'
)
{
return
3
}
else
if
(
grade
==
'D'
)
{
return
2
}
else
if
(
grade
==
'E'
)
{
return
1
}
return
0
}
statusCompetencyText
=
(
status
:
string
)
=>
{
statusCompetencyText
=
(
status
:
string
)
=>
{
if
(
status
===
"no access"
)
{
if
(
status
===
"no access"
)
{
return
"ยังไม่ถึงขั้นตอนดำเนินการ"
return
"ยังไม่ถึงขั้นตอนดำเนินการ"
...
@@ -487,4 +505,30 @@ export class PmsFormEmployeeComponent {
...
@@ -487,4 +505,30 @@ export class PmsFormEmployeeComponent {
}
}
}
}
showNumber
(
text
:
number
|
string
)
{
const
num
=
Number
(
text
);
return
isNaN
(
num
)
?
0
:
+
(
+
num
.
toFixed
(
2
));
}
calWeightScore
(
numberCheck
:
number
)
{
switch
(
numberCheck
)
{
case
(
1
):
{
return
1
}
case
(
2
):
{
return
2
}
case
(
3
):
{
return
3
}
case
(
4
):
{
return
4
}
case
(
5
):
{
return
5
}
default
:
{
return
}
}
}
}
}
src/app/components/performance-evaluation/pms-form-employee/pms-idp/pms-idp.component.html
View file @
a57fbb61
<ng-container
*
ngTemplateOutlet=
"idpEvaluation"
></ng-container>
<ng-container
*
ngTemplateOutlet=
"idpEvaluation"
></ng-container>
<ng-template
#
idpEvaluation
>
<ng-template
#
idpEvaluation
>
<ng-container
*
ngIf=
"appraisalIdp"
>
<ng-container
*
ngIf=
"appraisalIdp"
>
<div
class=
"pb-2rem px-2rem"
>
<div
style=
"height: 46vh;overflow-y: auto;"
>
<div
class=
"font-size-18px font-weight-700 text-primary"
>
<div
class=
"pb-2rem px-2rem"
>
แผนพัฒนาบุคคลากรรายบุคคล
<div
class=
"font-size-18px font-weight-700 text-primary"
>
</div>
แผนพัฒนาบุคคลากรรายบุคคล
</div>
</div>
<div
class=
"pb-2rem px-2rem"
>
<div
class=
"font-size-18px font-weight-700 text-gray-500"
>
ส่วนที่ 1: ข้อมูลทั่วไป
</div>
</div>
</div>
<div
class=
"pb-2rem px-2rem"
>
<div
class=
"pb-2rem px-2rem"
>
<div
class=
"font-size-18px font-weight-700 text-gray-500"
>
<div
class=
"grid grid-cols-6"
>
ส่วนที่ 1: ข้อมูลทั่วไป
<div
class=
"col-span-6 grid grid-cols-6"
>
<div
class=
"col-span-3 border p-2 pb-4"
>
<span>
ผู้ใต้บังคับบัญชา
</span>
</div>
<div
class=
"col-span-3 border p-2 pb-4"
>
<span>
ผู้บังคับบัญชา
</span>
</div>
</div>
</div>
<div
class=
"col-span-6 grid grid-cols-6"
>
</div>
<div
class=
"col-span-3 grid grid-cols-4"
>
<div
class=
"pb-2rem px-2rem"
>
<div
class=
"col-span-1 p-2 border pb-4"
>
<div
class=
"grid grid-cols-6"
>
<span>
ชื่อ-สกุล
</span>
<div
class=
"col-span-6 grid grid-cols-6"
>
</div>
<div
class=
"col-span-3 border p-2 pb-4"
>
<div
class=
"col-span-1 p-2 border pb-4"
>
<span>
ผู้ใต้บังคับบัญชา
</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>
{{appraisalIdp.apsassessy.position.tdesc || ""}}
</span>
</div>
</div>
<div
class=
"col-span-3 grid grid-cols-4"
>
<div
class=
"col-span-1 p-2 border pb-4"
>
<span>
ชื่อ-สกุล
</span>
</div>
<div
class=
"col-span-1 p-2 border pb-4"
>
<span>
{{appraisalIdp.boss.thFullName || ""}}
</span>
</div>
<div
class=
"col-span-1 p-2 border pb-4"
>
<span>
ตำแหน่ง
</span>
</div>
</div>
<div
class=
"col-span-
1 p-2 border
pb-4"
>
<div
class=
"col-span-
3 border p-2
pb-4"
>
<span>
{{appraisalIdp.boss.position.tdesc || ""}}
</span>
<span>
ผู้บังคับบัญชา
</span>
</div>
</div>
</div>
</div>
</div>
<div
class=
"col-span-6 grid grid-cols-6"
>
<div
class=
"col-span-6 grid grid-cols-6"
>
<div
class=
"col-span-3 grid grid-cols-4"
>
<div
class=
"col-span-3 grid grid-cols-4"
>
<div
class=
"col-span-1 p-2 border pb-4"
>
<div
class=
"col-span-1 p-2 border pb-4"
>
<span>
ชื่อ-สกุล
</span>
<span>
งาน
</span>
</div>
<div
class=
"col-span-1 p-2 border pb-4"
>
<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>
{{appraisalIdp.apsassessy.position.tdesc || ""}}
</span>
</div>
</div>
</div>
<div
class=
"col-span-1 p-2 border pb-4"
>
<div
class=
"col-span-3 grid grid-cols-4"
>
<span>
{{appraisalIdp.apsassessy.job.tdesc || ""}}
</span>
<div
class=
"col-span-1 p-2 border pb-4"
>
</div>
<span>
ชื่อ-สกุล
</span>
<div
class=
"col-span-1 p-2 border pb-4"
>
</div>
<span>
ฝ่าย
</span>
<div
class=
"col-span-1 p-2 border pb-4"
>
</div>
<span>
{{appraisalIdp.boss.thFullName || ""}}
</span>
<div
class=
"col-span-1 p-2 border pb-4"
>
</div>
<span>
{{appraisalIdp.apsassessy.bu1.tdesc || ""}}
</span>
<div
class=
"col-span-1 p-2 border pb-4"
>
<span>
ตำแหน่ง
</span>
</div>
<div
class=
"col-span-1 p-2 border pb-4"
>
<span>
{{appraisalIdp.boss.position.tdesc || ""}}
</span>
</div>
</div>
</div>
</div>
</div>
<div
class=
"col-span-3 grid grid-cols-4"
>
<div
class=
"col-span-6 grid grid-cols-6"
>
<div
class=
"col-span-1 p-2 border pb-4"
>
<div
class=
"col-span-3 grid grid-cols-4"
>
<span>
งาน
</span>
<div
class=
"col-span-1 p-2 border pb-4"
>
</div>
<span>
งาน
</span>
<div
class=
"col-span-1 p-2 border pb-4"
>
</div>
<span>
{{appraisalIdp.boss.job.tdesc || ""}}
</span>
<div
class=
"col-span-1 p-2 border pb-4"
>
</div>
<span>
{{appraisalIdp.apsassessy.job.tdesc || ""}}
</span>
<div
class=
"col-span-1 p-2 border pb-4"
>
</div>
<span>
ฝ่าย
</span>
<div
class=
"col-span-1 p-2 border pb-4"
>
<span>
ฝ่าย
</span>
</div>
<div
class=
"col-span-1 p-2 border pb-4"
>
<span>
{{appraisalIdp.apsassessy.bu1.tdesc || ""}}
</span>
</div>
</div>
</div>
<div
class=
"col-span-1 p-2 border pb-4"
>
<div
class=
"col-span-3 grid grid-cols-4"
>
<span>
{{appraisalIdp.boss.bu1.tdesc || ""}}
</span>
<div
class=
"col-span-1 p-2 border pb-4"
>
<span>
งาน
</span>
</div>
<div
class=
"col-span-1 p-2 border pb-4"
>
<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>
{{appraisalIdp.boss.bu1.tdesc || ""}}
</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div
>
<div
class=
"pb-2rem px-2rem"
>
<div
class=
"pb-2rem px-2rem
"
>
<div
class=
"font-size-18px font-weight-700 text-gray-500
"
>
<div
class=
"font-size-18px font-weight-700 text-gray-500"
>
ส่วนที่ 2: แนวทางการพัฒนา
ส่วนที่ 2: แนวทางการพัฒนา
</div>
</div>
</div>
</div>
<div
class=
"py-1rem px-2rem"
>
<div
class=
"py-1rem px-2rem"
>
<div
class=
"py-2 grid grid-cols-6 gap-3"
>
<div
class=
"py-2 grid grid-cols-6 gap-3"
>
<div
class=
"col-span-6"
>
หมายเหตุ : กรณี HR จัดอบรมให้ต้องเป็นไปตามเกณฑ์ที่ส่วนกลางกำหนดขึ้น
</div>
<div
class=
"col-span-6"
>
หมายเหตุ : กรณี HR จัดอบรมให้ต้องเป็นไปตามเกณฑ์ที่ส่วนกลางกำหนดขึ้น
</div>
<div
class=
"col-span-6 grid grid-cols-6 gap-2"
>
<div
class=
"col-span-6 grid grid-cols-6 gap-2"
>
<div
class=
"grid col-span-1 grid-cols-6 gap-2"
>
<div
class=
"grid col-span-1 grid-cols-6 gap-2"
>
<div
class=
"col-span-1"
>
<div
class=
"col-span-1"
>
<input
type=
"checkbox"
class=
"ti-form-checkbox"
id=
"idpStatus-0"
<input
type=
"checkbox"
class=
"ti-form-checkbox"
id=
"idpStatus-0"
(
click
)="
resetFormIdp
()"
(
click
)="
resetFormIdp
()"
style=
"cursor: pointer;"
style=
"cursor: pointer;"
[
class
.
pointer-events-none
]="
appraisalIdp
.
masfromEvaluationIdp
.
idpStatus=
='0'||!canEdit
||
appraisalIdp
.
checkStep
!='
1
'"
[
class
.
pointer-events-none
]="
appraisalIdp
.
masfromEvaluationIdp
.
idpStatus=
='0'||!canEdit
||
appraisalIdp
.
checkStep
!='
1
'"
name=
"idpStatus"
(
change
)="
appraisalIdp
.
masfromEvaluationIdp
.
idpStatus=
'0'
"
name=
"idpStatus"
(
change
)="
appraisalIdp
.
masfromEvaluationIdp
.
idpStatus=
'0'
"
[
checked
]="
appraisalIdp
.
masfromEvaluationIdp
.
idpStatus=
='0'"
>
[
checked
]="
appraisalIdp
.
masfromEvaluationIdp
.
idpStatus=
='0'"
>
</div>
</div>
<div
class=
"col-span-5"
>
<div
class=
"col-span-5"
>
<label
for=
"idpStatus-0"
class=
"text-sm text-gray-500"
<label
for=
"idpStatus-0"
class=
"text-sm text-gray-500"
[
class
.
pointer-events-none
]="
appraisalIdp
.
masfromEvaluationIdp
.
idpStatus=
='0'||!canEdit
||
appraisalIdp
.
checkStep
!='
1
'"
>
[
class
.
pointer-events-none
]="
appraisalIdp
.
masfromEvaluationIdp
.
idpStatus=
='0'||!canEdit
||
appraisalIdp
.
checkStep
!='
1
'"
>
IDP มาตรฐาน
IDP มาตรฐาน
</label>
</label>
</div>
</div>
</div>
<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"
style=
"cursor: pointer;"
[
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>
<div
class=
"col-span-5"
>
<div
class=
"grid col-span-1 grid-cols-6 gap-2"
>
<label
for=
"idpStatus-1"
class=
"text-sm text-gray-500"
<div
class=
"col-span-1"
>
[
class
.
pointer-events-none
]="
appraisalIdp
.
masfromEvaluationIdp
.
idpStatus=
='1'||!canEdit
||
appraisalIdp
.
checkStep
!='
1
'"
>
<input
type=
"checkbox"
class=
"ti-form-checkbox"
id=
"idpStatus-1"
IDP ปรับแก้ไข
style=
"cursor: pointer;"
</label>
[
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
]="
appraisalIdp
.
masfromEvaluationIdp
.
idpStatus=
='1'||!canEdit
||
appraisalIdp
.
checkStep
!='
1
'"
>
IDP ปรับแก้ไข
</label>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div
class=
"pb-2rem px-2rem"
>
<div
class=
"pb-2rem px-2rem"
>
<div
class=
" rounded-top-0.65rem"
>
<div
class=
" rounded-top-0.65rem"
>
<table
class=
"ti-custom-table ti-custom-table-head ti-custom-table-hover2"
>
<table
class=
"ti-custom-table ti-custom-table-head ti-custom-table-hover2"
>
<thead
class=
"height-50px"
>
<thead
class=
"height-50px"
>
<tr
class=
"font-size-12px"
>
<tr
class=
"font-size-12px"
>
<th
scope=
"col"
rowspan=
"3"
<th
scope=
"col"
rowspan=
"3"
class=
"relative px-10px py-10px bg-soft-secondary text-primary !text-center"
>
class=
"relative px-10px py-10px bg-soft-secondary text-primary !text-center"
>
<span
<span
class=
"font-size-12px font-weight-700 "
>
{{'สมรรถนะที่พัฒนา\n(Competency)'}}
</span>
class=
"font-size-12px font-weight-700 "
>
{{'สมรรถนะที่พัฒนา\n(Competency)'}}
</span>
<div
class=
"absolute top-1/2 transform -translate-y-1/2 right-0"
>
<div
class=
"absolute top-1/2 transform -translate-y-1/2 right-0"
>
<i
class=
"ti ti-dots-vertical fs-l"
></i>
<i
class=
"ti ti-dots-vertical fs-l"
></i>
</div>
</div>
</th>
</th>
<th
scope=
"col"
rowspan=
"3"
<th
scope=
"col"
rowspan=
"3"
class=
"relative px-10px py-10px bg-soft-secondary text-primary !text-center"
>
class=
"relative px-10px py-10px bg-soft-secondary text-primary !text-center"
>
<span
class=
"font-size-12px font-weight-700 "
>
<span
class=
"font-size-12px font-weight-700 "
>
{{'ประเด็นตัวชี้พฤติกรรมที่ต้องพัฒนา\n(Behavior Indicators : BIs)'}}
{{'ประเด็นตัวชี้พฤติกรรมที่ต้องพัฒนา\n(Behavior Indicators : BIs)'}}
</span>
</span>
<div
class=
"absolute top-1/2 transform -translate-y-1/2 right-0"
>
<div
class=
"absolute top-1/2 transform -translate-y-1/2 right-0"
>
<i
class=
"ti ti-dots-vertical fs-l"
></i>
<i
class=
"ti ti-dots-vertical fs-l"
></i>
</div>
</div>
</th>
</th>
<th
scope=
"col"
colspan=
"3"
<th
scope=
"col"
colspan=
"3"
class=
"relative px-10px py-10px bg-soft-secondary text-primary !text-center"
>
class=
"relative px-10px py-10px bg-soft-secondary text-primary !text-center"
>
<span
class=
"font-size-12px font-weight-700 "
>
เครื่องมือพัฒนา
</span>
<span
class=
"font-size-12px font-weight-700 "
>
เครื่องมือพัฒนา
</span>
</th>
</th>
<th
scope=
"col"
rowspan=
"3"
<th
scope=
"col"
rowspan=
"3"
class=
"relative bg-soft-secondary text-primary !text-center !p-0"
>
class=
"relative bg-soft-secondary text-primary !text-center !p-0"
>
<div
class=
"absolute top-1/2 transform -translate-y-1/2 right-0"
>
<div
class=
"absolute top-1/2 transform -translate-y-1/2 right-0"
>
<i
class=
"ti ti-dots-vertical fs-l"
></i>
<i
class=
"ti ti-dots-vertical fs-l"
></i>
</div>
</div>
</th>
</th>
<th
scope=
"col"
colspan=
"2"
rowspan=
"2"
<th
scope=
"col"
colspan=
"2"
rowspan=
"2"
class=
"relative px-10px py-10px bg-soft-secondary text-primary !text-center"
>
class=
"relative px-10px py-10px bg-soft-secondary text-primary !text-center"
>
<span
class=
"font-size-12px font-weight-700 "
>
หลักสูตรพัฒนาตาม CDR
</span>
<span
class=
"font-size-12px font-weight-700 "
>
หลักสูตรพัฒนาตาม CDR
</span>
</th>
</th>
<th
scope=
"col"
rowspan=
"3"
<th
scope=
"col"
rowspan=
"3"
class=
"relative bg-soft-secondary text-primary !text-center !p-0"
>
class=
"relative bg-soft-secondary text-primary !text-center !p-0"
>
<div
class=
"absolute top-1/2 transform -translate-y-1/2 right-0"
>
<div
class=
"absolute top-1/2 transform -translate-y-1/2 right-0"
>
<i
class=
"ti ti-dots-vertical fs-l"
></i>
<i
class=
"ti ti-dots-vertical fs-l"
></i>
</div>
</div>
</th>
</th>
<th
scope=
"col"
rowspan=
"3"
<th
scope=
"col"
rowspan=
"3"
class=
"relative px-10px py-10px bg-soft-secondary text-primary !text-center"
>
class=
"relative px-10px py-10px bg-soft-secondary text-primary !text-center"
>
<span
class=
"font-size-12px font-weight-700 "
>
ระยะเวลาที่พัฒนา
</span>
<span
class=
"font-size-12px font-weight-700 "
>
ระยะเวลาที่พัฒนา
</span>
</th>
</th>
</tr>
</tr>
<tr
class=
"font-size-12px"
>
<tr
class=
"font-size-12px"
>
<th
scope=
"col"
<th
scope=
"col"
class=
"relative px-10px py-10px bg-soft-secondary text-primary !text-center"
>
class=
"relative px-10px py-10px bg-soft-secondary text-primary !text-center"
>
70
70
</th>
</th>
<th
scope=
"col"
<th
scope=
"col"
class=
"relative px-10px py-10px bg-soft-secondary text-primary !text-center"
>
class=
"relative px-10px py-10px bg-soft-secondary text-primary !text-center"
>
20
20
</th>
</th>
<th
scope=
"col"
<th
scope=
"col"
class=
"relative px-10px py-10px bg-soft-secondary text-primary !text-center"
>
class=
"relative px-10px py-10px bg-soft-secondary text-primary !text-center"
>
10
10
</th>
</th>
</tr>
</tr>
<tr
class=
"font-size-12px"
>
<tr
class=
"font-size-12px"
>
<th
scope=
"col"
<th
scope=
"col"
class=
"relative px-10px py-10px bg-soft-secondary text-primary !text-center"
>
class=
"relative px-10px py-10px bg-soft-secondary text-primary !text-center"
>
OJT/Job Assignment
OJT/Job Assignment
</th>
</th>
<th
scope=
"col"
<th
scope=
"col"
class=
"relative px-10px py-10px bg-soft-secondary text-primary !text-center"
>
class=
"relative px-10px py-10px bg-soft-secondary text-primary !text-center"
>
Coach/Mentor
Coach/Mentor
</th>
</th>
<th
scope=
"col"
<th
scope=
"col"
class=
"relative px-10px py-10px bg-soft-secondary text-primary !text-center"
>
class=
"relative px-10px py-10px bg-soft-secondary text-primary !text-center"
>
Training
Training
</th>
</th>
<th
scope=
"col"
<th
scope=
"col"
class=
"relative px-10px py-10px bg-soft-secondary text-primary !text-center"
>
class=
"relative px-10px py-10px bg-soft-secondary text-primary !text-center"
>
รหัส
รหัส
</th>
</th>
<th
scope=
"col"
<th
scope=
"col"
class=
"relative px-10px py-10px bg-soft-secondary text-primary !text-center"
>
class=
"relative px-10px py-10px bg-soft-secondary text-primary !text-center"
>
ชื่อหลักสูตร
ชื่อหลักสูตร
</th>
</th>
</tr>
</tr>
</thead>
</thead>
<tbody
*
ngIf=
"!appraisalIdp.competencyIndicatorsCourses1.length"
>
<tbody
*
ngIf=
"!appraisalIdp.competencyIndicatorsCourses1.length"
>
<tr
class=
"hover:table-hover2-hover"
>
<tr
class=
"hover:table-hover2-hover"
>
<td
class=
"text-center"
colspan=
"100%"
>
<td
class=
"text-center"
colspan=
"100%"
>
ไม่พบข้อมูล
ไม่พบข้อมูล
</td>
</tr>
</tbody>
<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
}"
>
<td
class=
"align-start"
>
{{i+1}}. {{data.indicatorsCourses0.competencyTopic.competencyTopicId}}
</td>
<td
class=
"align-start !white-space-normal"
[
class
.
bg-table-gray
]="!
data
.
idpDevelopmentPlan
||!
data
.
behavioralIndicators
||!
data
.
behavioralIndicators
.
length
"
>
<ng-container
*
ngIf=
"data.idpDevelopmentPlan"
>
<div
class=
"mb-3"
*
ngFor=
"let bis of data.behavioralIndicators;let i2 = index"
>
{{i2+1}}. {{bis.behavioralIndicators }}
</div>
</ng-container>
</td>
<td
class=
"align-start text-center"
[
class
.
bg-table-gray
]="!
data
.
idpDevelopmentPlan
||!
data
.
idpDevelopmentPlan
.
ojtJobAssignment
"
>
<ng-container
*
ngIf=
"data.idpDevelopmentPlan&&data.idpDevelopmentPlan.ojtJobAssignment"
>
<i
class=
"ti ti-check fs-xxl !fw-b"
></i>
</ng-container>
</td>
<td
class=
"align-start text-center"
[
class
.
bg-table-gray
]="!
data
.
idpDevelopmentPlan
||!
data
.
idpDevelopmentPlan
.
coachMentor
"
>
<ng-container
*
ngIf=
"data.idpDevelopmentPlan&&data.idpDevelopmentPlan.coachMentor"
>
<i
class=
"ti ti-check fs-xxl !fw-b"
></i>
</ng-container>
</td>
<td
class=
"align-start text-center"
[
class
.
bg-table-gray
]="!
data
.
idpDevelopmentPlan
||!
data
.
idpDevelopmentPlan
.
training
"
>
<ng-container
*
ngIf=
"data.idpDevelopmentPlan&&data.idpDevelopmentPlan.training"
>
<i
class=
"ti ti-check fs-xxl !fw-b"
></i>
</ng-container>
</td>
<td
class=
"!p-0"
></td>
<td
class=
"align-start text-center"
[
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"
style=
"min-height: 100px;"
>
<i
class=
"ti ti-book fs-xxl !fw-b"
></i><br>
{{competencyCourse.competencyCourseId }}
</div>
</ng-container>
</td>
</td>
<td
class=
"align-start text-center !white-space-normal"
</tr>
[
class
.
bg-table-gray
]="
canEdit
?(!
data
.
idpDevelopmentPlan
.
training
||(
appraisalIdp
.
masfromEvaluationIdp
.
idpStatus
!='
1
'
&&
!
data
.
competencyCourse
))
:
!
data
.
competencyCourse
"
>
</tbody>
<ng-container
*
ngIf=
"data.idpDevelopmentPlan&&data.idpDevelopmentPlan.training"
>
<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
}"
>
<td
class=
"align-start"
>
{{i+1}}. {{data.indicatorsCourses0.competencyTopic.competencyTopicId}}
</td>
<td
class=
"align-start !white-space-normal"
[
class
.
bg-table-gray
]="!
data
.
idpDevelopmentPlan
||!
data
.
behavioralIndicators
||!
data
.
behavioralIndicators
.
length
"
>
<ng-container
*
ngIf=
"data.idpDevelopmentPlan"
>
<div
class=
"mb-3"
*
ngFor=
"let bis of data.behavioralIndicators;let i2 = index"
>
{{i2+1}}. {{bis.behavioralIndicators }}
</div>
</ng-container>
</td>
<td
class=
"align-start text-center"
[
class
.
bg-table-gray
]="!
data
.
idpDevelopmentPlan
||!
data
.
idpDevelopmentPlan
.
ojtJobAssignment
"
>
<ng-container
*
ngIf=
"data.idpDevelopmentPlan&&data.idpDevelopmentPlan.ojtJobAssignment"
>
<i
class=
"ti ti-check fs-xxl !fw-b"
></i>
</ng-container>
</td>
<td
class=
"align-start text-center"
[
class
.
bg-table-gray
]="!
data
.
idpDevelopmentPlan
||!
data
.
idpDevelopmentPlan
.
coachMentor
"
>
<ng-container
<ng-container
*
ngFor=
"let competencyCourse of data.competencyCourse;let l = index;let last=last"
>
*
ngIf=
"data.idpDevelopmentPlan&&data.idpDevelopmentPlan.coachMentor"
>
<div
class=
"flex !items-center"
style=
"min-height: 100px;"
>
<i
class=
"ti ti-check fs-xxl !fw-b"
></i>
{{competencyCourse.tdesc}}
</ng-container>
<span
class=
"ciricon border cursor-pointer"
</td>
*
ngIf=
"canEdit&&appraisalIdp.masfromEvaluationIdp.idpStatus=='1'"
<td
class=
"align-start text-center"
(
click
)="
deleteCompetencyCourse
(
i
,
l
)"
>
[
class
.
bg-table-gray
]="!
data
.
idpDevelopmentPlan
||!
data
.
idpDevelopmentPlan
.
training
"
>
<i
class=
"ri-close-line text-red-500"
></i>
<ng-container
*
ngIf=
"data.idpDevelopmentPlan&&data.idpDevelopmentPlan.training"
>
</span>
<i
class=
"ti ti-check fs-xxl !fw-b"
></i>
</ng-container>
</td>
<td
class=
"!p-0"
></td>
<td
class=
"align-start text-center"
[
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"
style=
"min-height: 100px;"
>
<i
class=
"ti ti-book fs-xxl !fw-b"
></i><br>
{{competencyCourse.competencyCourseId }}
</div>
</div>
<button
</ng-container>
*
ngIf=
"last&&canEdit&&appraisalIdp.masfromEvaluationIdp.idpStatus=='1'"
</td>
type=
"button"
class=
"ti-btn ti-btn-soft-secondary h-45px m-0 shadow-md"
<td
class=
"align-start text-center !white-space-normal"
[
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&&appraisalIdp.masfromEvaluationIdp.idpStatus=='1'"
(
click
)="
deleteCompetencyCourse
(
i
,
l
)"
>
<i
class=
"ri-close-line text-red-500"
></i>
</span>
</div>
<button
*
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>
Add
</button>
</ng-container>
</ng-container>
<ng-container
*
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
)
"
>
(
click
)="
openCompetencycourseDialog
(
i
)
"
>
<i
class=
"ri-add-line"
></i>
<i
class=
"ri-add-line"
></i>
Add
Add
</button>
</button>
</ng-container>
</ng-container>
</ng-container>
</td>
<ng-container
<td
class=
"!p-0"
></td>
*
ngIf=
"canEdit&&!data.competencyCourse?.length&&appraisalIdp.masfromEvaluationIdp.idpStatus=='1'&&data.idpDevelopmentPlan.training"
>
<td
class=
"align-start text-center !white-space-normal"
<button
type=
"button"
class=
"ti-btn ti-btn-soft-secondary h-45px m-0 shadow-md"
[
class
.
bg-table-gray
]="!
appraisalIdp
.
masfromEvaluationRound
.
apsPeriodStart
&&!
appraisalIdp
.
masfromEvaluationRound
.
apsPeriodEnd
"
>
(
click
)="
openCompetencycourseDialog
(
i
)
"
>
<ng-container
<i
class=
"ri-add-line"
></i>
*
ngIf=
"appraisalIdp.masfromEvaluationRound.apsPeriodStart &&appraisalIdp.masfromEvaluationRound.apsPeriodEnd"
>
Add
จาก
</button>
</ng-container>
</ng-container>
{{convertDateFormat(appraisalIdp.masfromEvaluationRound.apsPeriodStart)}}
</td>
<ng-container
<td
class=
"!p-0"
></td>
*
ngIf=
"appraisalIdp.masfromEvaluationRound.apsPeriodStart &&appraisalIdp.masfromEvaluationRound.apsPeriodEnd"
>
<td
class=
"align-start text-center !white-space-normal"
ถึง
[
class
.
bg-table-gray
]="!
appraisalIdp
.
masfromEvaluationRound
.
apsPeriodStart
&&!
appraisalIdp
.
masfromEvaluationRound
.
apsPeriodEnd
"
>
</ng-container>
<ng-container
{{convertDateFormat(appraisalIdp.masfromEvaluationRound.apsPeriodEnd)}}
*
ngIf=
"appraisalIdp.masfromEvaluationRound.apsPeriodStart &&appraisalIdp.masfromEvaluationRound.apsPeriodEnd"
>
</td>
จาก
</tr>
</ng-container>
</ng-container>
{{convertDateFormat(appraisalIdp.masfromEvaluationRound.apsPeriodStart)}}
</tbody>
<ng-container
</table>
*
ngIf=
"appraisalIdp.masfromEvaluationRound.apsPeriodStart &&appraisalIdp.masfromEvaluationRound.apsPeriodEnd"
>
</div>
ถึง
</ng-container>
{{convertDateFormat(appraisalIdp.masfromEvaluationRound.apsPeriodEnd)}}
</td>
</tr>
</ng-container>
</tbody>
</table>
</div>
</div>
</div>
</div>
</ng-container>
</ng-container>
...
...
src/app/components/performance-evaluation/pms-form-employee/pms-kpi/pms-kpi.component.html
View file @
a57fbb61
This source diff could not be displayed because it is too large. You can
view the blob
instead.
src/app/components/performance-evaluation/pms-form-employee/pms-kpi/pms-kpi.component.ts
View file @
a57fbb61
import
{
ChangeDetectorRef
,
Component
,
E
ventEmitter
,
Input
,
Output
,
SimpleChanges
}
from
'@angular/core'
;
import
{
ChangeDetectorRef
,
Component
,
E
lementRef
,
EventEmitter
,
Input
,
Output
,
SimpleChanges
,
ViewChild
}
from
'@angular/core'
;
import
{
CompetencyGradeModel
,
MyCompetencyGradeModel
}
from
'src/app/shared/model/competency-grades.model'
;
import
{
CompetencyGradeModel
,
MyCompetencyGradeModel
}
from
'src/app/shared/model/competency-grades.model'
;
import
{
AppraisalService
}
from
'src/app/shared/services/appraisal.service'
;
import
{
AppraisalService
}
from
'src/app/shared/services/appraisal.service'
;
import
{
EmployeeService
}
from
'src/app/shared/services/employee.service'
;
import
{
EmployeeService
}
from
'src/app/shared/services/employee.service'
;
import
{
PmsGroupGradeService
}
from
'src/app/shared/services/pms-group-grade.service'
;
import
{
PmsGroupGradeService
}
from
'src/app/shared/services/pms-group-grade.service'
;
import
{
SettingAssessmentService
}
from
'src/app/shared/services/setting-assessment.service'
;
import
{
SettingAssessmentService
}
from
'src/app/shared/services/setting-assessment.service'
;
import
{
P
ms
}
from
'src/app/shared/model/competency.model'
;
import
{
P
art5Detail
,
Pms
,
PmsTopic
}
from
'src/app/shared/model/competency.model'
;
export
interface
Part8Model
{
export
interface
Part8Model
{
id
:
number
id
:
number
...
@@ -27,14 +27,6 @@ export interface LevelStarModel {
...
@@ -27,14 +27,6 @@ export interface LevelStarModel {
styleUrls
:
[
'./pms-kpi.component.scss'
]
styleUrls
:
[
'./pms-kpi.component.scss'
]
})
})
export
class
PmsKpiComponent
{
export
class
PmsKpiComponent
{
part1show
=
true
part2show
=
true
part3show
=
true
part4show
=
true
part5show
=
true
part6show
=
true
part7show
=
true
part8show
=
true
data8List
:
Part8Model
[]
=
[{
data8List
:
Part8Model
[]
=
[{
id
:
1
,
id
:
1
,
evaluationFactor
:
"Part 1 : ประเมินผลการปฏิบัติงานตามนโยบายบริษัท (Corporate KPI)"
,
evaluationFactor
:
"Part 1 : ประเมินผลการปฏิบัติงานตามนโยบายบริษัท (Corporate KPI)"
,
...
@@ -85,18 +77,23 @@ export class PmsKpiComponent {
...
@@ -85,18 +77,23 @@ export class PmsKpiComponent {
scoreObtained
:
0
,
scoreObtained
:
0
,
netScore
:
0
,
netScore
:
0
,
}]
}]
part9show
=
true
partShow
:
string
[]
=
[]
part10show
=
true
partOpen
:
Map
<
string
,
boolean
>
=
new
Map
<
string
,
boolean
>
()
partScore
:
Map
<
string
,
number
>
=
new
Map
<
string
,
number
>
()
@
Input
()
evaluateeId
=
""
@
Input
()
evaluateeId
=
""
@
Input
()
evaluaterId
=
""
@
Input
()
evaluaterId
=
""
@
Input
()
appraisalPms
?:
Pms
@
Input
()
appraisalPms
?:
Pms
@
Input
()
canEdit
=
false
@
Input
()
canEdit
=
false
@
Input
()
currentStep
=
""
@
Input
()
currentStep
=
""
@
Input
()
currentTap
=
""
@
Input
()
currentTap
=
""
@
Input
()
currentPart
=
""
@
Input
()
dateIso
=
""
@
Input
()
dateIso
=
""
@
Output
()
kpiFormRemain
:
EventEmitter
<
any
>
=
new
EventEmitter
<
any
>
();
@
Output
()
kpiFormRemain
:
EventEmitter
<
any
>
=
new
EventEmitter
<
any
>
();
@
Output
()
kpiForm
:
EventEmitter
<
any
>
=
new
EventEmitter
<
any
>
();
@
Output
()
kpiForm
:
EventEmitter
<
any
>
=
new
EventEmitter
<
any
>
();
@
Output
()
scorePart
:
EventEmitter
<
any
>
=
new
EventEmitter
<
any
>
();
groupGrade
:
{
loading
:
boolean
,
dataList
:
CompetencyGradeModel
[]
}
=
{
loading
:
false
,
dataList
:
[]
}
groupGrade
:
{
loading
:
boolean
,
dataList
:
CompetencyGradeModel
[]
}
=
{
loading
:
false
,
dataList
:
[]
}
@
ViewChild
(
'scrollContainer'
)
scrollContainer
!
:
ElementRef
;
constructor
(
private
appraisalService
:
AppraisalService
,
constructor
(
private
appraisalService
:
AppraisalService
,
private
pmsGroupGradeService
:
PmsGroupGradeService
,
private
pmsGroupGradeService
:
PmsGroupGradeService
,
private
employeeService
:
EmployeeService
,
private
employeeService
:
EmployeeService
,
...
@@ -104,12 +101,30 @@ export class PmsKpiComponent {
...
@@ -104,12 +101,30 @@ export class PmsKpiComponent {
private
settingAssessmentService
:
SettingAssessmentService
private
settingAssessmentService
:
SettingAssessmentService
)
{
)
{
}
}
getTargetDetailValue
(
item
:
any
):
string
{
const
targetDetail
=
[
''
,
'targetEdetail'
,
'targetDdetail'
,
'targetCdetail'
,
'targetBdetail'
,
'targetAdetail'
]
const
index
=
this
.
partScore
.
get
(
item
.
groupAssessment1
.
pmsTopic
.
pmsTopicId
)
??
item
.
scoreTopicExpectation
;
const
key
=
targetDetail
[
index
??
0
]
as
keyof
PmsTopic
;
return
item
.
groupAssessment1
.
pmsTopic
[
key
];
}
getTargetDetailValuePart5
(
item
:
any
):
string
{
const
targetDetail
=
[
''
,
'targetEDetail'
,
'targetDDetail'
,
'targetCDetail'
,
'targetBDetail'
,
'targetADetail'
]
const
index
=
this
.
partScore
.
get
(
item
.
tdesc
)
??
item
.
pmsWorkingTimScore
;
const
key
=
targetDetail
[
index
??
0
]
as
keyof
Part5Detail
;
return
item
[
key
];
}
// ngOnChanges(changes: SimpleChanges): void {
// ngOnChanges(changes: SimpleChanges): void {
// if (changes['evaluateeId']?.currentValue || changes['evaluaterId']?.currentValue) {
// if (changes['evaluateeId']?.currentValue || changes['evaluaterId']?.currentValue) {
// this.toggleAllParts(this.evaluateeId == this.evaluaterId)
// this.toggleAllParts(this.evaluateeId == this.evaluaterId)
// }
// }
// }
// }
ngOnInit
():
void
{
ngOnInit
():
void
{
this
.
partOpen
.
clear
()
this
.
partShow
=
this
.
currentTap
==
'ประเมินผลการปฏิบัติงาน'
?
[
'PART 1'
,
'PART 2'
,
'PART 3'
,
'PART 4'
,
'PART 5'
,
'PART 6'
,
'PART 7'
]
:
[
'PART 8'
,
'PART 9'
,
'PART 10'
]
this
.
partShow
.
forEach
(
x
=>
{
this
.
partOpen
.
set
(
x
,
false
)
})
this
.
getPmsGroupGradeList
()
this
.
getPmsGroupGradeList
()
this
.
getAppraisalPmsForm
()
this
.
getAppraisalPmsForm
()
this
.
allFormRemain
()
this
.
allFormRemain
()
...
@@ -412,26 +427,24 @@ export class PmsKpiComponent {
...
@@ -412,26 +427,24 @@ export class PmsKpiComponent {
toggleAllParts
(
check
:
boolean
)
{
toggleAllParts
(
check
:
boolean
,
part
?:
string
)
{
this
.
part1show
=
check
this
.
partOpen
.
forEach
((
_
,
key
)
=>
{
this
.
part2show
=
check
if
(
part
)
{
this
.
part3show
=
check
if
(
part
==
key
)
{
this
.
part4show
=
check
this
.
partOpen
.
set
(
key
,
check
)
this
.
part5show
=
check
}
else
{
this
.
part6show
=
check
if
(
check
)
{
this
.
part7show
=
check
this
.
currentPart
=
part
this
.
part8show
=
check
this
.
partOpen
.
set
(
key
,
false
)
this
.
part9show
=
check
}
else
{
this
.
part10show
=
check
this
.
currentPart
=
''
}
}
}
scrollToTable
(
event
:
MouseEvent
)
{
}
else
{
const
target
=
event
.
target
as
HTMLElement
;
this
.
partOpen
.
set
(
key
,
check
)
const
position
=
target
.
getBoundingClientRect
();
this
.
currentPart
=
''
window
.
scrollTo
({
}
top
:
position
.
top
+
window
.
scrollY
-
100
,
})
behavior
:
'smooth'
});
}
}
part1Remain
()
{
part1Remain
()
{
...
@@ -500,4 +513,37 @@ export class PmsKpiComponent {
...
@@ -500,4 +513,37 @@ export class PmsKpiComponent {
this
.
kpiFormRemain
.
emit
(
remain
)
this
.
kpiFormRemain
.
emit
(
remain
)
}
}
remainList
()
{
return
[
this
.
part1Remain
(),
this
.
part2Remain
(),
this
.
part3Remain
(),
-
1
,
this
.
part5Remain
(),
this
.
part6Remain
(),
this
.
part7Remain
()
];
}
sendScorePart
()
{
if
(
this
.
appraisalPms
)
{
const
score
=
this
.
data8List
.
map
((
x
,
i
)
=>
({
text
:
"PART "
+
(
i
+
1
),
score
:
this
.
numberFixed2
(
x
.
netScore
)
})).
concat
([{
text
:
"สุทธิ"
,
score
:
this
.
calNetScore
()
+
''
},
{
text
:
"Grade"
,
score
:
this
.
appraisalPms
.
gradeScore
}])
this
.
scorePart
.
emit
(
score
)
}
}
scrollToMenu
(
id
:
string
)
{
setTimeout
(()
=>
{
const
container
=
this
.
scrollContainer
?.
nativeElement
as
HTMLElement
;
const
target
=
document
.
getElementById
(
id
);
if
(
container
&&
target
)
{
const
containerTop
=
container
.
getBoundingClientRect
().
top
;
const
targetTop
=
target
.
getBoundingClientRect
().
top
;
const
scrollOffset
=
targetTop
-
containerTop
;
container
.
scrollTop
+=
scrollOffset
;
}
},
0
);
}
}
}
src/app/components/performance-evaluation/self-evaluation/self-evaluation.component.html
View file @
a57fbb61
<ng-container
*
ngIf=
"!onEdit"
>
<ng-container
*
ngIf=
"!onEdit"
>
<
app-page-header
[
pathTitle
]="
pathTitle
"
></app-page-header
>
<
!-- <app-page-header [pathTitle]="pathTitle"></app-page-header> --
>
<ng-container
*
ngTemplateOutlet=
"selfEvaluation"
></ng-container>
<ng-container
*
ngTemplateOutlet=
"selfEvaluation"
></ng-container>
</ng-container>
</ng-container>
<ng-template
#
selfEvaluation
>
<ng-template
#
selfEvaluation
>
...
...
src/app/components/performance-evaluation/supervisor-evaluation/supervisor-evaluation.component.html
View file @
a57fbb61
<ng-container
*
ngIf=
"pageEvalution==''"
>
<ng-container
*
ngIf=
"pageEvalution==''"
>
<app-page-header
[
pathTitle
]="
pathTitle
"
></app-page-header>
<div
class=
"bg-card-white"
>
<div
class=
"bg-card-white"
>
</div>
</div>
<div
class=
"block-main-content"
>
<div
class=
"block-main-content"
>
...
...
src/app/shared/components/sidebar/sidebar.component.html
View file @
a57fbb61
...
@@ -17,7 +17,7 @@
...
@@ -17,7 +17,7 @@
<!-- End::main-sidebar-header -->
<!-- End::main-sidebar-header -->
<!-- ::main-sidebar -->
<!-- ::main-sidebar -->
<ngx-simplebar
[
options
]="
options
"
style=
"background-color: #1
54C9C
;"
>
<ngx-simplebar
[
options
]="
options
"
style=
"background-color: #1
74dd3
;"
>
<div
class=
"main-sidebar"
id=
"sidebar-scroll"
>
<div
class=
"main-sidebar"
id=
"sidebar-scroll"
>
<!-- Start::nav -->
<!-- Start::nav -->
<nav
class=
"main-menu-container nav nav-pills flex-column sub-open active open"
>
<nav
class=
"main-menu-container nav nav-pills flex-column sub-open active open"
>
...
...
src/app/shared/model/competency.model.ts
View file @
a57fbb61
...
@@ -3457,7 +3457,7 @@ export interface GroupAssessment1 {
...
@@ -3457,7 +3457,7 @@ export interface GroupAssessment1 {
companyId
:
string
companyId
:
string
personalLevelModel
:
PersonalLevelModel
personalLevelModel
:
PersonalLevelModel
pmsGroupAssessment0
:
PmsGroupAssessment0
pmsGroupAssessment0
:
PmsGroupAssessment0
pmsTopic
:
PmsTopic
2
pmsTopic
:
PmsTopic
}
}
export
interface
PersonalLevelModel
{
export
interface
PersonalLevelModel
{
...
@@ -3508,24 +3508,6 @@ export interface PmsType {
...
@@ -3508,24 +3508,6 @@ export interface PmsType {
weight
:
number
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
{
export
interface
PmsType2
{
companyId
:
string
companyId
:
string
...
@@ -3549,7 +3531,7 @@ export interface GroupAssessment12 {
...
@@ -3549,7 +3531,7 @@ export interface GroupAssessment12 {
companyId
:
string
companyId
:
string
personalLevelModel
:
PersonalLevelModel2
personalLevelModel
:
PersonalLevelModel2
pmsGroupAssessment0
:
PmsGroupAssessment02
pmsGroupAssessment0
:
PmsGroupAssessment02
pmsTopic
:
PmsTopic
4
pmsTopic
:
PmsTopic
}
}
export
interface
PersonalLevelModel2
{
export
interface
PersonalLevelModel2
{
...
@@ -3562,7 +3544,7 @@ export interface PersonalLevelModel2 {
...
@@ -3562,7 +3544,7 @@ export interface PersonalLevelModel2 {
export
interface
PmsGroupAssessment02
{
export
interface
PmsGroupAssessment02
{
companyId
:
string
companyId
:
string
personalLevel
:
PersonalLevel7
personalLevel
:
PersonalLevel7
pmsTopic
:
PmsTopic
3
pmsTopic
:
PmsTopic
}
}
export
interface
PersonalLevel7
{
export
interface
PersonalLevel7
{
...
@@ -3572,24 +3554,6 @@ export interface PersonalLevel7 {
...
@@ -3572,24 +3554,6 @@ export interface PersonalLevel7 {
tdesc
:
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
{
export
interface
PmsType3
{
companyId
:
string
companyId
:
string
...
@@ -3600,24 +3564,7 @@ export interface PmsType3 {
...
@@ -3600,24 +3564,7 @@ export interface PmsType3 {
weight
:
number
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
{
export
interface
PmsType4
{
companyId
:
string
companyId
:
string
...
@@ -3641,7 +3588,7 @@ export interface GroupAssessment13 {
...
@@ -3641,7 +3588,7 @@ export interface GroupAssessment13 {
companyId
:
string
companyId
:
string
personalLevelModel
:
PersonalLevelModel3
personalLevelModel
:
PersonalLevelModel3
pmsGroupAssessment0
:
PmsGroupAssessment03
pmsGroupAssessment0
:
PmsGroupAssessment03
pmsTopic
:
PmsTopic
6
pmsTopic
:
PmsTopic
}
}
export
interface
PersonalLevelModel3
{
export
interface
PersonalLevelModel3
{
...
@@ -3654,7 +3601,7 @@ export interface PersonalLevelModel3 {
...
@@ -3654,7 +3601,7 @@ export interface PersonalLevelModel3 {
export
interface
PmsGroupAssessment03
{
export
interface
PmsGroupAssessment03
{
companyId
:
string
companyId
:
string
personalLevel
:
PersonalLevel8
personalLevel
:
PersonalLevel8
pmsTopic
:
PmsTopic
5
pmsTopic
:
PmsTopic
}
}
export
interface
PersonalLevel8
{
export
interface
PersonalLevel8
{
...
@@ -3664,24 +3611,6 @@ export interface PersonalLevel8 {
...
@@ -3664,24 +3611,6 @@ export interface PersonalLevel8 {
tdesc
:
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
{
export
interface
PmsType5
{
companyId
:
string
companyId
:
string
...
@@ -3692,24 +3621,6 @@ export interface PmsType5 {
...
@@ -3692,24 +3621,6 @@ export interface PmsType5 {
weight
:
number
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
{
export
interface
PmsType6
{
companyId
:
string
companyId
:
string
...
@@ -3804,7 +3715,7 @@ export interface GroupAssessment14 {
...
@@ -3804,7 +3715,7 @@ export interface GroupAssessment14 {
companyId
:
string
companyId
:
string
personalLevelModel
:
PersonalLevelModel4
personalLevelModel
:
PersonalLevelModel4
pmsGroupAssessment0
:
PmsGroupAssessment04
pmsGroupAssessment0
:
PmsGroupAssessment04
pmsTopic
:
PmsTopic
8
pmsTopic
:
PmsTopic
}
}
export
interface
PersonalLevelModel4
{
export
interface
PersonalLevelModel4
{
...
@@ -3817,7 +3728,7 @@ export interface PersonalLevelModel4 {
...
@@ -3817,7 +3728,7 @@ export interface PersonalLevelModel4 {
export
interface
PmsGroupAssessment04
{
export
interface
PmsGroupAssessment04
{
companyId
:
string
companyId
:
string
personalLevel
:
PersonalLevel9
personalLevel
:
PersonalLevel9
pmsTopic
:
PmsTopic
7
pmsTopic
:
PmsTopic
}
}
export
interface
PersonalLevel9
{
export
interface
PersonalLevel9
{
...
@@ -3827,25 +3738,6 @@ export interface PersonalLevel9 {
...
@@ -3827,25 +3738,6 @@ export interface PersonalLevel9 {
tdesc
:
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
{
export
interface
PmsType7
{
companyId
:
string
companyId
:
string
edesc
:
string
edesc
:
string
...
@@ -3855,24 +3747,6 @@ export interface PmsType7 {
...
@@ -3855,24 +3747,6 @@ export interface PmsType7 {
weight
:
number
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
{
export
interface
PmsType8
{
companyId
:
string
companyId
:
string
...
@@ -3896,7 +3770,7 @@ export interface GroupAssessment15 {
...
@@ -3896,7 +3770,7 @@ export interface GroupAssessment15 {
companyId
:
string
companyId
:
string
personalLevelModel
:
PersonalLevelModel5
personalLevelModel
:
PersonalLevelModel5
pmsGroupAssessment0
:
PmsGroupAssessment05
pmsGroupAssessment0
:
PmsGroupAssessment05
pmsTopic
:
PmsTopic
10
pmsTopic
:
PmsTopic
}
}
export
interface
PersonalLevelModel5
{
export
interface
PersonalLevelModel5
{
...
@@ -3909,7 +3783,7 @@ export interface PersonalLevelModel5 {
...
@@ -3909,7 +3783,7 @@ export interface PersonalLevelModel5 {
export
interface
PmsGroupAssessment05
{
export
interface
PmsGroupAssessment05
{
companyId
:
string
companyId
:
string
personalLevel
:
PersonalLevel10
personalLevel
:
PersonalLevel10
pmsTopic
:
PmsTopic
9
pmsTopic
:
PmsTopic
}
}
export
interface
PersonalLevel10
{
export
interface
PersonalLevel10
{
...
@@ -3919,24 +3793,7 @@ export interface PersonalLevel10 {
...
@@ -3919,24 +3793,7 @@ export interface PersonalLevel10 {
tdesc
:
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
{
export
interface
PmsType9
{
companyId
:
string
companyId
:
string
...
@@ -3947,24 +3804,7 @@ export interface PmsType9 {
...
@@ -3947,24 +3804,7 @@ export interface PmsType9 {
weight
:
number
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
{
export
interface
PmsType10
{
companyId
:
string
companyId
:
string
...
...
src/assets/css/style.css
View file @
a57fbb61
...
@@ -7069,8 +7069,8 @@ select option:focus {
...
@@ -7069,8 +7069,8 @@ select option:focus {
/* End Tailwind Styles */
/* End Tailwind Styles */
/* Start Variables Styles */
/* Start Variables Styles */
:root {
:root {
--color-primary: 2
1 76 156
;
--color-primary: 2
3 77 211
;
--color-primary-rgb: 2
1, 76, 156
;
--color-primary-rgb: 2
3 77 211
;
--color-secondary: 96 165 250;
--color-secondary: 96 165 250;
--color-success: 29 190 90;
--color-success: 29 190 90;
--color-info: 159 73 241;
--color-info: 159 73 241;
...
...
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