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
0f370421
Commit
0f370421
authored
Mar 24, 2025
by
Nattana Chaiyamat
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ปุ่มไม่อนุมัติหน้าประเมิน
parent
ddf38e69
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
111 additions
and
36 deletions
+111
-36
pms-evalution.component.html
...ce-evaluation/pms-evaluation/pms-evalution.component.html
+61
-25
pms-evalution.component.ts
...ance-evaluation/pms-evaluation/pms-evalution.component.ts
+42
-5
supervisor-evaluation.component.html
...upervisor-evaluation/supervisor-evaluation.component.html
+4
-4
appraisal-pms-form.model.ts
src/app/shared/model/appraisal-pms-form.model.ts
+0
-0
appraisal.service.ts
src/app/shared/services/appraisal.service.ts
+4
-2
No files found.
src/app/components/performance-evaluation/pms-evaluation/pms-evalution.component.html
View file @
0f370421
...
@@ -10,7 +10,7 @@
...
@@ -10,7 +10,7 @@
<div
class=
"pb-2rem px-2rem pt-1.5rem w-full min-height-50px justify-between items-center"
>
<div
class=
"pb-2rem px-2rem pt-1.5rem w-full min-height-50px justify-between items-center"
>
<div
class=
"flex"
>
<div
class=
"flex"
>
<button
type=
"button"
class=
"ti-btn ti-btn-outline ti-btn-outline-light h-20px m-0 shadow-md text-blue-500"
<button
type=
"button"
class=
"ti-btn ti-btn-outline ti-btn-outline-light h-20px m-0 shadow-md text-blue-500"
(
click
)="
returnPa
ge
()"
>
(
click
)="
returnPa
th
()"
>
<i
class=
"ti ti-chevron-left"
></i>
<i
class=
"ti ti-chevron-left"
></i>
ย้อนกลับ
ย้อนกลับ
</button>
</button>
...
@@ -19,35 +19,71 @@
...
@@ -19,35 +19,71 @@
</div>
</div>
</div>
</div>
</div>
</div>
<ng-container
*
ngIf=
"appraisalPms.data"
>
<div
class=
"pb-2rem px-2rem"
>
<div
class=
"pb-2rem px-2rem"
>
<div
class=
"font-size-18px font-weight-700 text-primary"
>
<div
class=
"font-size-18px font-weight-700 text-primary"
>
JOB PERFORMANCE EVALUATION FORM
JOB PERFORMANCE EVALUATION FORM
</div>
</div>
</div>
</div>
<div
class=
"pb-1rem px-2rem"
>
<div
class=
"pb-1rem px-2rem"
>
<div
class=
"py-2 grid grid-cols-8 gap-3"
>
<div
class=
"py-2 grid grid-cols-10"
>
<div
class=
"col-span-1 text-gray-400"
>
ชื่อผู้รับการประเมิน(Employee)
</div>
<div
class=
"py-2 grid grid-cols-1 col-span-1"
>
<div
class=
"col-span-1 text-gray-400"
>
น.ส. กมลชนก ภูผาลินิน
</div>
<div
class=
"col-span-1 text-gray-400 border"
style=
"padding-top:5px;min-height: 60px;"
>
<div
class=
"col-span-1 text-gray-400"
>
รหัส (ID)
</div>
ชื่อผู้รับการประเมิน(Employee)
</div>
<div
class=
"col-span-1 text-gray-400"
>
18794
</div>
<div
class=
"col-span-1 text-gray-400 border"
style=
"padding-top:5px;min-height: 60px;"
>
ชื่อผู้การประเมิน(Evaluator)
<div
class=
"col-span-1 text-gray-400"
>
ตำแหน่ง (Position)
</div>
</div>
<div
class=
"col-span-1 text-gray-400"
>
HRD Training Officer
</div>
</div>
<div
class=
"col-span-1 text-gray-400"
>
แผนก (Section)
</div>
<div
class=
"py-2 grid grid-cols-1 col-span-1"
>
<div
class=
"col-span-1 text-gray-400"
>
ฝ่าย (Department)
</div>
<div
class=
"col-span-1 text-gray-400 border"
style=
"padding-top:5px;min-height: 60px;"
>
</div>
{{appraisalPms.data.apsassessy.prefix.tdesc}}
<div
class=
"py-2 grid grid-cols-8 gap-3"
>
{{appraisalPms.data.apsassessy.thFullName}}
</div>
<div
class=
"col-span-1 text-gray-400"
>
ชื่อผู้รับการประเมิน(Employee)
</div>
<div
class=
"col-span-1 text-gray-400 border"
style=
"padding-top:5px;min-height: 60px;"
>
<div
class=
"col-span-1 text-gray-400"
>
น.ส. พิมพร อูรณการ
</div>
{{appraisalPms.data.apsapprove1.prefix.tdesc}}
<div
class=
"col-span-1 text-gray-400"
>
รหัส (ID)
</div>
{{appraisalPms.data.apsapprove1.thFullName}}
</div>
<div
class=
"col-span-1 text-gray-400"
>
17724
</div>
</div>
<div
class=
"col-span-1 text-gray-400"
>
Human Resource Development Officer S3
</div>
<div
class=
"py-2 grid grid-cols-1 col-span-1"
>
<div
class=
"col-span-1 text-gray-400"
>
HRD Training Officer
</div>
<div
class=
"col-span-1 text-gray-400 border"
style=
"padding-top:5px;min-height: 60px;"
>
รหัส (ID)
</div>
<div
class=
"col-span-1 text-gray-400"
>
แผนก (Section)
</div>
<div
class=
"col-span-1 text-gray-400 border"
style=
"padding-top:5px;min-height: 60px;"
>
รหัส (ID)
</div>
<div
class=
"col-span-1 text-gray-400"
>
ฝ่าย (Department)
</div>
</div>
</div>
<div
class=
"py-2 grid grid-cols-1 col-span-1"
>
</div>
<div
class=
"col-span-1 text-gray-400 border"
style=
"padding-top:5px;min-height: 60px;"
>
{{appraisalPms.data.apsassessy.employeeId}}
</div>
<ng-container
*
ngTemplateOutlet=
"part1"
></ng-container>
<div
class=
"col-span-1 text-gray-400 border"
style=
"padding-top:5px;min-height: 60px;"
>
{{appraisalPms.data.apsapprove1.employeeId}}
</div>
</div>
<div
class=
"py-2 grid grid-cols-1 col-span-1"
>
<div
class=
"col-span-1 text-gray-400 border"
style=
"padding-top:5px;min-height: 60px;"
>
ตำแหน่ง (Position)
</div>
<div
class=
"col-span-1 text-gray-400 border"
style=
"padding-top:5px;min-height: 60px;"
>
ตำแหน่ง (Position)
</div>
</div>
<div
class=
"py-2 grid grid-cols-1 col-span-1"
>
<div
class=
"col-span-1 text-gray-400 border"
style=
"padding-top:5px;min-height: 60px;"
>
{{appraisalPms.data.apsassessy.position.tdesc}}
</div>
<div
class=
"col-span-1 text-gray-400 border"
style=
"padding-top:5px;min-height: 60px;"
>
{{appraisalPms.data.apsapprove1.position.tdesc}}
</div>
</div>
<div
class=
"py-2 grid grid-cols-1 col-span-1"
>
<div
class=
"col-span-1 text-gray-400 border"
style=
"padding-top:5px;min-height: 60px;"
>
แผนก (Section)
</div>
<div
class=
"col-span-1 text-gray-400 border"
style=
"padding-top:5px;min-height: 60px;"
>
แผนก (Section)
</div>
</div>
<div
class=
"py-2 grid grid-cols-1 col-span-1"
>
<div
class=
"col-span-1 text-gray-400 border"
style=
"padding-top:5px;min-height: 60px;"
>
{{appraisalPms.data.apsassessy.bu2.tdesc}}
</div>
<div
class=
"col-span-1 text-gray-400 border"
style=
"padding-top:5px;min-height: 60px;"
>
{{appraisalPms.data.apsapprove1.bu2.tdesc}}
</div>
</div>
<div
class=
"py-2 grid grid-cols-1 col-span-1"
>
<div
class=
"col-span-1 text-gray-400 border"
style=
"padding-top:5px;min-height: 60px;"
>
ฝ่าย (Department)
</div>
<div
class=
"col-span-1 text-gray-400 border"
style=
"padding-top:5px;min-height: 60px;"
>
ฝ่าย (Department)
</div>
</div>
<div
class=
"py-2 grid grid-cols-1 col-span-1"
>
<div
class=
"col-span-1 text-gray-400 border"
style=
"padding-top:5px;min-height: 60px;"
>
{{appraisalPms.data.apsassessy.bu1.tdesc}}
</div>
<div
class=
"col-span-1 text-gray-400 border"
style=
"padding-top:5px;min-height: 60px;"
>
{{appraisalPms.data.apsapprove1.bu1.tdesc}}
</div>
</div>
</div>
</div>
<ng-container
*
ngIf=
"appraisalPms.data.part1Detail else part1"
></ng-container>
<ng-container
*
ngTemplateOutlet=
"part2"
></ng-container>
<ng-container
*
ngTemplateOutlet=
"part2"
></ng-container>
<ng-container
*
ngTemplateOutlet=
"part3"
></ng-container>
<ng-container
*
ngTemplateOutlet=
"part3"
></ng-container>
<ng-container
*
ngTemplateOutlet=
"part4"
></ng-container>
<ng-container
*
ngTemplateOutlet=
"part4"
></ng-container>
...
@@ -56,7 +92,6 @@
...
@@ -56,7 +92,6 @@
<ng-container
*
ngTemplateOutlet=
"part7"
></ng-container>
<ng-container
*
ngTemplateOutlet=
"part7"
></ng-container>
<ng-container
*
ngTemplateOutlet=
"part8"
></ng-container>
<ng-container
*
ngTemplateOutlet=
"part8"
></ng-container>
<ng-container
*
ngTemplateOutlet=
"part9"
></ng-container>
<ng-container
*
ngTemplateOutlet=
"part9"
></ng-container>
<div
class=
"pb-1rem px-2rem"
>
<div
class=
"pb-1rem px-2rem"
>
<div
class=
"py-2 grid grid-cols-7 gap-3"
>
<div
class=
"py-2 grid grid-cols-7 gap-3"
>
<div
class=
"col-span-1"
>
ผู้ประเมิน1
</div>
<div
class=
"col-span-1"
>
ผู้ประเมิน1
</div>
...
@@ -110,6 +145,7 @@
...
@@ -110,6 +145,7 @@
บันทึกข้อมูล
บันทึกข้อมูล
</button>
</button>
</div>
</div>
</ng-container>
</ng-template>
</ng-template>
...
...
src/app/components/performance-evaluation/pms-evaluation/pms-evalution.component.ts
View file @
0f370421
import
{
Component
,
EventEmitter
,
Output
}
from
'@angular/core'
;
import
{
ChangeDetectorRef
,
Component
,
EventEmitter
,
Input
,
Output
}
from
'@angular/core'
;
import
{
AppraisalPmsFormModel
}
from
'src/app/shared/model/appraisal-pms-form.model'
;
import
{
AppraisalService
}
from
'src/app/shared/services/appraisal.service'
;
import
{
EmployeeService
}
from
'src/app/shared/services/employee.service'
;
import
{
SettingAssessmentService
}
from
'src/app/shared/services/setting-assessment.service'
;
export
interface
DataModel
{
export
interface
DataModel
{
hoshin
:
string
hoshin
:
string
performance
:
string
performance
:
string
...
@@ -72,8 +76,7 @@ export interface DataModel7 {
...
@@ -72,8 +76,7 @@ export interface DataModel7 {
styleUrls
:
[
'./pms-evalution.component.scss'
]
styleUrls
:
[
'./pms-evalution.component.scss'
]
})
})
export
class
PmsEvalutionComponent
{
export
class
PmsEvalutionComponent
{
@
Output
()
sendPageEvalution
:
EventEmitter
<
string
>
=
new
EventEmitter
<
string
>
();
pathTitle
=
[
'การประเมินผล'
,
'ประเมินผล'
]
part1show
=
true
part1show
=
true
dataList
:
DataModel
[]
=
[{
dataList
:
DataModel
[]
=
[{
hoshin
:
"C1 CUSTOMER ORIENTED (SQCDME)"
,
hoshin
:
"C1 CUSTOMER ORIENTED (SQCDME)"
,
...
@@ -342,7 +345,40 @@ export class PmsEvalutionComponent {
...
@@ -342,7 +345,40 @@ export class PmsEvalutionComponent {
data8ListFilter
()
{
data8ListFilter
()
{
return
this
.
data8List
return
this
.
data8List
}
}
returnPage
()
{
this
.
sendPageEvalution
.
emit
(
""
)
@
Input
()
pathTitle
:
string
[]
=
[]
@
Input
()
evaluationRoundId
=
""
@
Input
()
evaluateeId
=
""
@
Input
()
evaluaterId
=
""
@
Input
()
competencyTypeId
=
""
@
Output
()
sendReturnPath
:
EventEmitter
<
any
>
=
new
EventEmitter
<
any
>
();
appraisalPms
:
{
loading
:
boolean
,
data
?:
AppraisalPmsFormModel
}
=
{
loading
:
false
,
data
:
undefined
}
constructor
(
private
appraisalService
:
AppraisalService
,
private
employeeService
:
EmployeeService
,
private
cdr
:
ChangeDetectorRef
,
private
settingAssessmentService
:
SettingAssessmentService
)
{
}
ngOnInit
():
void
{
this
.
getAppraisalPmsForm
()
}
getAppraisalPmsForm
()
{
this
.
appraisalPms
.
loading
=
true
this
.
appraisalService
.
getFormPmsById
(
'testlvl3'
,
'10000003'
).
subscribe
({
next
:
response
=>
{
console
.
log
(
" 🐒 response:"
,
response
)
this
.
appraisalPms
.
data
=
JSON
.
parse
(
JSON
.
stringify
(
response
))
this
.
appraisalPms
.
loading
=
false
this
.
cdr
.
detectChanges
()
},
error
:
error
=>
{
this
.
appraisalPms
.
loading
=
false
this
.
cdr
.
detectChanges
()
}
})
}
returnPath
()
{
this
.
sendReturnPath
.
emit
()
}
}
}
}
\ No newline at end of file
src/app/components/performance-evaluation/supervisor-evaluation/supervisor-evaluation.component.html
View file @
0f370421
...
@@ -131,13 +131,13 @@
...
@@ -131,13 +131,13 @@
</div>
</div>
</td>
</td>
<td
class=
"text-center"
>
<td
class=
"text-center"
>
<
!-- <
div class="flex justify-center">
<div
class=
"flex justify-center"
>
<button type="button" class="ti-btn rounded-sm ti-btn-soft-mute"
<
!-- <
button type="button" class="ti-btn rounded-sm ti-btn-soft-mute"
style="height: 15px; width: 45px; font-size: 12px; display: flex; align-items: center; justify-content: center;margin-left:4px;"
style="height: 15px; width: 45px; font-size: 12px; display: flex; align-items: center; justify-content: center;margin-left:4px;"
(click)="selectSubordinate(item,'',subordinate.select?.evaluationRoundId);pageEvalution='pms'">
(click)="selectSubordinate(item,'',subordinate.select?.evaluationRoundId);pageEvalution='pms'">
PMS
PMS
</button>
</button>
-->
</div>
-->
</div>
</td>
</td>
<td
class=
"text-center"
style=
"font-size: 12px;"
>
{{item.sumScore}}
</td>
<td
class=
"text-center"
style=
"font-size: 12px;"
>
{{item.sumScore}}
</td>
<td
class=
"text-center"
style=
"font-size: 12px;"
>
{{item.gread}}
</td>
<td
class=
"text-center"
style=
"font-size: 12px;"
>
{{item.gread}}
</td>
...
...
src/app/shared/model/appraisal-pms-form.model.ts
0 → 100644
View file @
0f370421
This diff is collapsed.
Click to expand it.
src/app/shared/services/appraisal.service.ts
View file @
0f370421
...
@@ -6,6 +6,7 @@ import { AlertModel } from '../model/alert.model';
...
@@ -6,6 +6,7 @@ import { AlertModel } from '../model/alert.model';
import
{
AppraisalFormModel
}
from
'../model/appraisal-form.model'
;
import
{
AppraisalFormModel
}
from
'../model/appraisal-form.model'
;
import
{
AppraisalCompentencyModel
,
AppraisalCompentencyModel2
}
from
'../model/appraisal-competency.model'
;
import
{
AppraisalCompentencyModel
,
AppraisalCompentencyModel2
}
from
'../model/appraisal-competency.model'
;
import
{
AppraisalSubordinateModel
}
from
'../model/appraisal-subordinate.model'
;
import
{
AppraisalSubordinateModel
}
from
'../model/appraisal-subordinate.model'
;
import
{
AppraisalPmsFormModel
}
from
'../model/appraisal-pms-form.model'
;
@
Injectable
({
@
Injectable
({
providedIn
:
'root'
providedIn
:
'root'
})
})
...
@@ -27,7 +28,7 @@ export class AppraisalService {
...
@@ -27,7 +28,7 @@ export class AppraisalService {
return
this
.
http
.
get
<
AppraisalSubordinateModel
[]
>
(
this
.
urlApi
+
"/boss/emp"
)
return
this
.
http
.
get
<
AppraisalSubordinateModel
[]
>
(
this
.
urlApi
+
"/boss/emp"
)
}
}
getFormPmsById
(
evaluationRoundId
:
string
,
apsassessy
:
string
):
Observable
<
Appraisal
CompentencyModel2
>
{
getFormPmsById
(
evaluationRoundId
:
string
,
apsassessy
:
string
):
Observable
<
Appraisal
PmsFormModel
>
{
return
this
.
http
.
get
<
Appraisal
CompentencyModel2
>
(
this
.
urlApi
+
"/pms/"
+
evaluationRoundId
+
"/"
+
apsassessy
)
return
this
.
http
.
get
<
Appraisal
PmsFormModel
>
(
this
.
urlApi
+
"/pms/"
+
evaluationRoundId
+
"/"
+
apsassessy
)
}
}
}
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment