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
581dec38
Commit
581dec38
authored
Mar 14, 2025
by
Nakarin Luankla
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'DEV' of
https://mygit.myhr.co.th/angular/myAppraisal
into DEV
parents
e5fc8428
4cdb38a7
Show whitespace changes
Inline
Side-by-side
Showing
57 changed files
with
3799 additions
and
439 deletions
+3799
-439
login-page.component.ts
src/app/authentication/login-page/login-page.component.ts
+7
-2
login-page2.component.html
src/app/authentication/login-page/login-page2.component.html
+6
-2
manage-user.component.html
...s/account-settings/manage-user/manage-user.component.html
+2
-2
set-a-password.component.html
...unt-settings/set-a-password/set-a-password.component.html
+2
-2
user-settings.component.html
...count-settings/user-settings/user-settings.component.html
+2
-2
department-list.component.html
...iness-unit/department-list/department-list.component.html
+6
-6
department-register.component.html
...it/department-register/department-register.component.html
+10
-8
section-registration.component.html
.../section-registration/section-registration.component.html
+6
-6
sub-department-four.component.html
...it/sub-department-four/sub-department-four.component.html
+6
-6
sub-department-one.component.html
...unit/sub-department-one/sub-department-one.component.html
+6
-6
sub-department-three.component.html
.../sub-department-three/sub-department-three.component.html
+6
-6
sub-department-two.component.html
...unit/sub-department-two/sub-department-two.component.html
+6
-6
company-registration-page.component.html
...egistration-page/company-registration-page.component.html
+4
-4
day-type-registry.component.html
...onents/day-type-registry/day-type-registry.component.html
+2
-2
sub-employee-registration.component.html
...yee-registration/sub-employee-registration.component.html
+1196
-91
sub-employee-registration.component.ts
...loyee-registration/sub-employee-registration.component.ts
+221
-22
employee-categories.component.html
...on/employee-categories/employee-categories.component.html
+2
-2
employee-group-unit.component.html
...on/employee-group-unit/employee-group-unit.component.html
+2
-2
employee-level.component.html
...-description/employee-level/employee-level.component.html
+2
-2
position-unit.component.html
...nts/job-description/position/position-unit.component.html
+2
-2
edit-group-competencies.component.html
...group-competencies/edit-group-competencies.component.html
+2
-2
group-competencies.component.html
...ment/group-competencies/group-competencies.component.html
+2
-2
set-approvers.component.html
...ncy-management/set-approvers/set-approvers.component.html
+4
-4
development-course.component.html
...tion/development-course/development-course.component.html
+2
-2
define-document-form.component.html
.../define-document-form/define-document-form.component.html
+4
-4
evaluation-cycle.component.html
...-manager/evaluation-cycle/evaluation-cycle.component.html
+2
-2
sub-grade-registration.component.html
...-grade-registration/sub-grade-registration.component.html
+2
-2
competency-topic.component.html
...stration/competency-topic/competency-topic.component.html
+6
-6
type-registration.component.html
...ration/type-registration/type-registration.component.html
+2
-2
assessment-tool.component.html
...l-register/assessment-tool/assessment-tool.component.html
+2
-2
dashboard.module.ts
src/app/components/dashboard/dashboard.module.ts
+4
-0
sub-command-structure.component.html
...ub-command-structure/sub-command-structure.component.html
+2
-2
sub-job-competency.component.html
...ency/sub-job-competency/sub-job-competency.component.html
+2
-2
import-data.component.html
...-detail-management/import-data/import-data.component.html
+2
-2
work-detail.component.html
...ponents/job-detail/work-detail/work-detail.component.html
+2
-2
sub-job-position-indicators.component.html
...ion-indicators/sub-job-position-indicators.component.html
+2
-2
sub-job-qualifications.component.html
...-job-qualifications/sub-job-qualifications.component.html
+2
-2
evaluation.component.html
...rformance-evaluation/evaluation/evaluation.component.html
+4
-1
idp-evalution.component.html
...ce-evaluation/idp-evaluation/idp-evalution.component.html
+267
-108
idp-evalution.component.ts
...ance-evaluation/idp-evaluation/idp-evalution.component.ts
+221
-76
supervisor-evaluation.component.html
...upervisor-evaluation/supervisor-evaluation.component.html
+15
-6
supervisor-evaluation.component.ts
.../supervisor-evaluation/supervisor-evaluation.component.ts
+1
-1
assigning-approvers.component.html
...nt/assigning-approvers/assigning-approvers.component.html
+4
-4
document-form.component.html
...le-performance/document-form/document-form.component.html
+4
-4
management-evaluation-cycle.component.html
...aluation-cycle/management-evaluation-cycle.component.html
+2
-2
define-evaluation-factors.component.html
...aluation-factors/define-evaluation-factors.component.html
+2
-2
assessment-topics.component.html
...omance/assessment-topics/assessment-topics.component.html
+2
-2
assessment-types.component.html
...rfomance/assessment-types/assessment-types.component.html
+2
-2
pms-sub-grade-registration.component.html
...de-registration/pms-sub-grade-registration.component.html
+2
-2
time-attendance.component.html
...evaluation/time-attendance/time-attendance.component.html
+2
-2
appraisal-subordinate.model.ts
src/app/shared/model/appraisal-subordinate.model.ts
+4
-0
employee.model.ts
src/app/shared/model/employee.model.ts
+3
-1
idp-form.model.ts
src/app/shared/model/idp-form.model.ts
+1674
-0
status.model.ts
src/app/shared/model/status.model.ts
+5
-5
emp-status.service.ts
src/app/shared/services/emp-status.service.ts
+19
-0
evaluation-Idp.service.ts
src/app/shared/services/evaluation-Idp.service.ts
+22
-0
style.css
src/assets/css/style.css
+4
-0
No files found.
src/app/authentication/login-page/login-page.component.ts
View file @
581dec38
...
...
@@ -13,7 +13,7 @@ export class LoginPageComponent {
public
showPassword
=
false
;
disabled
=
''
;
active
:
any
;
errorUser
=
false
constructor
(@
Inject
(
DOCUMENT
)
private
document
:
Document
,
private
elementRef
:
ElementRef
,
...
...
@@ -103,17 +103,22 @@ export class LoginPageComponent {
this
.
authservice
.
loginWithUserPass
(
this
.
loginForm
.
controls
[
'username'
].
value
,
this
.
loginForm
.
controls
[
'password'
].
value
).
subscribe
({
next
:
response
=>
{
if
(
response
){
if
(
response
)
{
this
.
errorUser
=
false
sessionStorage
.
setItem
(
"accessToken"
,
response
.
accessToken
)
sessionStorage
.
setItem
(
"refreshToken"
,
response
.
refreshToken
)
this
.
router
.
navigate
([
'/self-evaluation'
]);
}
else
{
this
.
errorUser
=
true
}
},
error
:
error
=>
{
this
.
error
=
'Please check email and passowrd'
;
this
.
errorUser
=
true
}
})
}
else
{
this
.
error
=
'Please check email and passowrd'
;
this
.
errorUser
=
true
}
}
...
...
src/app/authentication/login-page/login-page2.component.html
View file @
581dec38
...
...
@@ -74,9 +74,13 @@
</div>
</div> -->
<!-- End Checkbox -->
<div
*
ngIf=
"errorUser"
class=
"bg-danger/10 border border-danger/10 alert text-danger m-0"
role=
"alert"
>
กรุณาตรวจสอบชื่อสมาชิกและรหัสผ่าน
</div>
<button
type=
"submit"
(
click
)="
Submit
()"
class=
"py-2 px-3 inline-flex justify-center items-center gap-2 rounded-sm border border-transparent font-semibold bg-primary text-white hover:bg-primary focus:outline-none focus:ring-0 focus:ring-primary focus:ring-offset-0 transition-all text-sm dark:focus:ring-offset-white/10"
>
เข้าสู่ระบบ
</button>
<div
class=
"text-center"
>
<
!-- <
div class="text-center">
<p class="mt-3 text-sm text-gray-600 dark:text-white/70">
คุณมีบัญชีเเล้วหรือยัง?
<a class="text-primary decoration-2 hover:underline font-medium"
...
...
@@ -84,7 +88,7 @@
กรุณาลงทะเบียนที่นี่ หากคุณยังไม่มีบัญชีเข้าใช้
</a>
</p>
</div>
</div>
-->
</div>
</form>
</div>
...
...
src/app/components/company-components/account-settings/manage-user/manage-user.component.html
View file @
581dec38
...
...
@@ -145,12 +145,12 @@
Clear
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
<div
class=
"ti-modal-body padding-16px pt-0 overflow-y-0"
>
...
...
src/app/components/company-components/account-settings/set-a-password/set-a-password.component.html
View file @
581dec38
...
...
@@ -144,12 +144,12 @@
Clear
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
<div
class=
"ti-modal-body padding-16px pt-0 overflow-y-0"
>
...
...
src/app/components/company-components/account-settings/user-settings/user-settings.component.html
View file @
581dec38
...
...
@@ -203,12 +203,12 @@
Clear
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
<div
class=
"ti-modal-body padding-16px pt-0 overflow-y-0"
>
...
...
src/app/components/company-components/company-registration/branch-business-unit/department-list/department-list.component.html
View file @
581dec38
...
...
@@ -41,12 +41,12 @@
Print
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
</div>
...
...
@@ -177,12 +177,12 @@
Clear
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
<div
class=
"ti-modal-body"
>
...
...
@@ -280,12 +280,12 @@
Clear
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
<div
class=
"ti-modal-body"
>
...
...
src/app/components/company-components/company-registration/branch-business-unit/department-register/department-register.component.html
View file @
581dec38
...
...
@@ -39,12 +39,12 @@
Print
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
</div>
...
...
@@ -171,18 +171,19 @@
Clear
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
<div
class=
"ti-modal-body padding-16px pt-0 overflow-y-0"
>
<label
for=
"input-label"
class=
"ti-form-label mt-2rem"
>
ฝ่าย
<span
class=
"text-danger"
>
*
</span></label>
<input
type=
"text"
id=
"input-label"
class=
"ti-form-input w-1/2"
[(
ngModel
)]="
bu1
.
bu1id
"
>
<label
for=
"detail_th"
class=
"ti-form-label mt-2rem"
>
รายละเอียดฝ่าย (ไทย)
<span
class=
"text-danger"
>
*
</span></label>
<label
for=
"detail_th"
class=
"ti-form-label mt-2rem"
>
รายละเอียดฝ่าย (ไทย)
<span
class=
"text-danger"
>
*
</span></label>
<input
type=
"text"
id=
"detail_th"
class=
"ti-form-input h-16"
[(
ngModel
)]="
bu1
.
tdesc
"
>
<label
for=
"detail_eng"
class=
"ti-form-label mt-2rem"
>
รายละเอียดฝ่าย (อังกฤษ)
</label>
<input
type=
"text"
id=
"detail_eng"
class=
"ti-form-input h-16"
[(
ngModel
)]="
bu1
.
edesc
"
>
...
...
@@ -238,19 +239,20 @@
Clear
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
<div
class=
"ti-modal-body "
>
<label
for=
"input-label"
class=
"ti-form-label mt-2rem"
>
ฝ่าย
<span
class=
"text-danger"
>
*
</span></label>
<input
type=
"text"
id=
"input-label"
class=
"ti-form-input w-1/2 bg-input-readonly"
[(
ngModel
)]="
bu1
.
bu1id
"
readonly
>
<label
for=
"detail_th"
class=
"ti-form-label mt-2rem"
>
รายละเอียดฝ่าย (ไทย)
<span
class=
"text-danger"
>
*
</span></label>
<label
for=
"detail_th"
class=
"ti-form-label mt-2rem"
>
รายละเอียดฝ่าย (ไทย)
<span
class=
"text-danger"
>
*
</span></label>
<input
type=
"text"
id=
"detail_th"
class=
"ti-form-input h-16"
[(
ngModel
)]="
bu1
.
tdesc
"
>
<label
for=
"detail_eng"
class=
"ti-form-label mt-2rem"
>
รายละเอียดฝ่าย (อังกฤษ)
</label>
<input
type=
"text"
id=
"detail_eng"
class=
"ti-form-input h-16"
[(
ngModel
)]="
bu1
.
edesc
"
>
...
...
src/app/components/company-components/company-registration/branch-business-unit/section-registration/section-registration.component.html
View file @
581dec38
...
...
@@ -40,12 +40,12 @@
Print
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
</div>
...
...
@@ -176,12 +176,12 @@
Clear
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
<div
class=
"ti-modal-body"
>
...
...
@@ -283,12 +283,12 @@
Clear
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
<div
class=
"ti-modal-body"
>
...
...
src/app/components/company-components/company-registration/branch-business-unit/sub-department-four/sub-department-four.component.html
View file @
581dec38
...
...
@@ -41,12 +41,12 @@
Print
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
</div>
...
...
@@ -176,12 +176,12 @@
Clear
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
<div
class=
"ti-modal-body"
>
...
...
@@ -283,12 +283,12 @@
Clear
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
<div
class=
"ti-modal-body"
>
...
...
src/app/components/company-components/company-registration/branch-business-unit/sub-department-one/sub-department-one.component.html
View file @
581dec38
...
...
@@ -41,12 +41,12 @@
Print
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
</div>
...
...
@@ -178,12 +178,12 @@
Clear
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
<div
class=
"ti-modal-body"
>
...
...
@@ -285,12 +285,12 @@
Clear
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
<div
class=
"ti-modal-body"
>
...
...
src/app/components/company-components/company-registration/branch-business-unit/sub-department-three/sub-department-three.component.html
View file @
581dec38
...
...
@@ -41,12 +41,12 @@
Print
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
</div>
...
...
@@ -176,12 +176,12 @@
Clear
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
<div
class=
"ti-modal-body"
>
...
...
@@ -283,12 +283,12 @@
Clear
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
<div
class=
"ti-modal-body"
>
...
...
src/app/components/company-components/company-registration/branch-business-unit/sub-department-two/sub-department-two.component.html
View file @
581dec38
...
...
@@ -41,12 +41,12 @@
Print
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
</div>
...
...
@@ -176,12 +176,12 @@
Clear
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
<div
class=
"ti-modal-body"
>
...
...
@@ -284,12 +284,12 @@
Clear
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
<div
class=
"ti-modal-body"
>
...
...
src/app/components/company-components/company-registration/company-registration-page/company-registration-page.component.html
View file @
581dec38
...
...
@@ -58,12 +58,12 @@
Delete
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
</div>
...
...
@@ -202,12 +202,12 @@
Clear
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
<div
class=
"ti-modal-body padding-16px pt-0 overflow-y-0"
>
...
...
src/app/components/company-components/day-type-registry/day-type-registry.component.html
View file @
581dec38
...
...
@@ -239,12 +239,12 @@
Clear
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
<div
class=
"ti-modal-body padding-16px pt-0 overflow-y-0"
>
...
...
src/app/components/company-components/employee-registration/sub-employee-registration/sub-employee-registration.component.html
View file @
581dec38
...
...
@@ -13,7 +13,7 @@
<i
class=
"fs-l transition-all duration-200"
[
ngClass
]="{'
ri-checkbox-multiple-line
text-gray-500
'
:
!
isDataListCheckedAll
,
'
ri-checkbox-multiple-fill
text-primary
'
:
isDataListCheckedAll
}"
></i>
</button>
<label
class=
"text-sm text-gray-500 ml-2"
for=
"check-boxall"
>
Select All
</label>
<label
class=
"text-sm text-gray-500 ml-2"
for=
"check-boxall"
>
Select All
</label>
</div>
</div>
</div>
...
...
@@ -45,7 +45,7 @@
</div>
<div
class=
"px-1"
>
<button
type=
"button"
class=
"ti-btn ti-btn-soft-secondary h-45px m-0 shadow-md"
data-hs-overlay=
"#sub-employee-registration-modal"
(
click
)="
selectEmployee
();
modalType=
'add'
"
>
data-hs-overlay=
"#sub-employee-registration-modal"
(
click
)="
modalType=
'add'
;
selectEmployee
()
"
>
<i
class=
"ri-add-line"
></i>
Add
</button>
...
...
@@ -64,12 +64,12 @@
Print
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
</div>
...
...
@@ -84,9 +84,9 @@
*
ngFor=
"let item of ['','รหัสพนักงาน','ชื่อ','นามสกุล','ตำแหน่ง','หน่วยงาน','การจัดการ']; let f = first; let l = last; let i = index"
>
<th
scope=
"col"
class=
" px-10px py-10px bg-soft-secondary text-primary !text-center"
>
<span
class=
"font-size-12px font-weight-700"
>
{{ item }}
</span>
<div
class=
"absolute top-1/2 transform -translate-y-1/2 right-0"
*
ngIf=
"!l&&!f"
>
<
!-- <
div class="absolute top-1/2 transform -translate-y-1/2 right-0" *ngIf="!l&&!f">
<i class="ti ti-dots-vertical fs-l"></i>
</div>
</div>
-->
</th>
</ng-container>
</tr>
...
...
@@ -124,10 +124,10 @@
<td>
{{item.data.jobCode.bu1.tdesc}}
</td>
<td
class=
"flex justify-center"
>
<i
class=
"ti ti-edit cursor-pointer i-gray fs-l px-1"
data-hs-overlay=
"#sub-employee-registration-modal"
(
click
)="
selectEmployee
(
item
.
data
);
modalType=
'update'
"
></i>
(
click
)="
modalType=
'update'
;
selectEmployee
(
item
.
data
)
"
></i>
<i
class=
"ti ti-trash cursor-pointer i-gray fs-l px-1"
data-hs-overlay=
"#sub-employee-registration-alert-delete-modal"
(
click
)="
selectEmployee
(
item
.
data
);
modalType=
'delete'
"
></i>
(
click
)="
modalType=
'delete'
;
selectEmployee
(
item
.
data
)
"
></i>
</td>
</tr>
</tbody>
...
...
@@ -176,7 +176,7 @@
<div
id=
"sub-employee-registration-modal"
class=
"hs-overlay hidden ti-modal"
>
<div
class=
"hs-overlay-open:mt-7 ti-modal-box mt-0 ease-out h-[calc(100%-3.5rem)]"
>
<div
class=
"hs-overlay-open:mt-7 ti-modal-box mt-0 ease-out h-[calc(100%-3.5rem)]
!max-w-1/2
"
>
<div
class=
"max-h-full overflow-hidden ti-modal-content"
>
<div
class=
"ti-modal-header"
>
<h3
class=
"text-xxl font-bold text-primary"
>
...
...
@@ -194,9 +194,24 @@
<div
class=
"w-full flex justify-end"
>
<div
class=
"absolute flex"
>
<div
class=
"px-1"
>
<button
href=
"javascript:void(0);"
class=
"ti-btn ti-btn-soft-warning h-45px m-0 shadow-md"
>
<
!-- <
button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button> -->
<button
type=
"button"
class=
"ti-btn ti-btn-soft-indigo h-45px m-0 shadow-md"
(
click
)="
selectEmployee
()"
>
<svg
class=
"svg-indigo"
width=
"16"
height=
"16"
viewBox=
"0 0 64.00 64.00"
xmlns=
"http://www.w3.org/2000/svg"
fill=
"none"
stroke=
"#595BEA"
stroke-width=
"3.84"
transform=
"rotate(45)matrix(-1, 0, 0, 1, 0, 0)"
>
<g
id=
"SVGRepo_bgCarrier"
stroke-width=
"0"
></g>
<g
id=
"SVGRepo_tracerCarrier"
stroke-linecap=
"round"
stroke-linejoin=
"round"
></g>
<g
id=
"SVGRepo_iconCarrier"
>
<path
d=
"M15 49A24 24 0 0 1 32 8"
></path>
<path
d=
"M49 15a24 24 0 0 1-17 41"
></path>
<polyline
points=
"15.03 40 15.03 48.97 8 48.97"
></polyline>
<polyline
points=
"48.97 24 48.97 15.03 56 15.03"
></polyline>
</g>
</svg>
Clear
</button>
</div>
</div>
...
...
@@ -204,23 +219,33 @@
<div
class=
"ti-modal-body mt-5"
>
<div
class=
"space-y-3"
>
<div
class=
"grid grid-cols-12 gap-x-6"
>
<label
class=
"col-span-3 ti-form-label text-primary mt-2"
>
รหัสพนักงาน
<span
class=
"text-danger"
>
*
</span></label>
<input
type=
"text"
class=
"sm:col-span-6 ti-form-input"
[
ngClass
]="{'
bg-input-readonly
'
:modalType=
='update'}"
<label
class=
"col-span-3 ti-form-label text-primary mt-2 align-center"
>
รหัสพนักงาน
<span
class=
"text-danger"
>
*
</span></label>
<input
type=
"text"
class=
"col-span-6 ti-form-input"
[
ngClass
]="{'
bg-input-readonly
'
:modalType=
='update'}"
[
readonly
]="
modalType=
='update'"
[(
ngModel
)]="
employee
.
select
.
employeeId
"
>
</div>
<div
class=
"grid grid-cols-12 gap-x-6"
>
<label
class=
"col-span-3 ti-form-label text-primary mt-
4"
>
ชื่อ-นามสกุล
<span
class=
"text-danger"
>
*
</span></label>
<div
class=
"col-span-4 mt-2"
>
<div
class=
" flex rounded-md
"
>
<label
class=
"col-span-3 ti-form-label text-primary mt-
2 align-center"
>
ชื่อ-นามสกุล
<span
class=
"text-danger"
>
*
</span></label
>
<div
class=
"col-span-4
"
>
<input
type=
"text"
class=
"ti-form-input"
[(
ngModel
)]="
employee
.
select
.
fname
"
>
</div>
</div>
<div
class=
"flex col-span-4 mt-2"
>
<div
class=
"col-span-4"
>
<input
type=
"text"
class=
"ti-form-input"
[(
ngModel
)]="
employee
.
select
.
lname
"
>
</div>
</div>
<div
class=
"grid grid-cols-12 gap-x-6"
>
<label
class=
"col-span-3 ti-form-label text-primary mt-2"
>
กลุ่มพนักงาน
<span
class=
"text-danger"
>
*
</span></label>
<label
class=
"col-span-3 ti-form-label text-primary mt-2 align-center"
>
สถานภาพพนักงาน
<span
class=
"text-danger"
>
*
</span></label>
<div
class=
"col-span-4 "
>
<select
class=
"ti-form-select"
[(
ngModel
)]="
employee
.
select
.
status
"
>
<option
*
ngFor=
"let item of empStatus.dataList"
[
value
]="
item
"
>
{{item.tdesc}}
</option>
</select>
</div>
</div>
<div
class=
"grid grid-cols-12 gap-x-6"
>
<label
class=
"col-span-3 ti-form-label text-primary mt-2 align-center"
>
กลุ่มพนักงาน
<span
class=
"text-danger"
>
*
</span></label>
<div
class=
"col-span-6 sm:col-span-6 "
>
<div
class=
"flex"
>
<div
class=
"relative flex rounded-md"
>
...
...
@@ -233,7 +258,7 @@
<i
class=
"ti ti-circle-x cursor-pointer"
></i>
</button>
<button
type=
"button"
class=
"flex items-center text-gray-500 dark:text-white/70"
data-hs-overlay=
"#sub-employee-registration-empgroup-table-modal"
>
data-hs-overlay=
"#sub-employee-registration-empgroup-table-modal"
(
click
)="
modal
.
search=
''
"
>
<i
class=
"ri-search-line cursor-pointer text-gray"
></i>
</button>
</div>
...
...
@@ -242,11 +267,12 @@
</div>
</div>
<div
class=
"grid grid-cols-12 gap-x-6"
>
<label
class=
"col-span-3 ti-form-label text-primary mt-2 align-center"
>
วันเริ่มงาน
<span
class=
"text-danger"
>
*
</span></label>
<label
class=
"col-span-3 ti-form-label text-primary mt-2 align-center align-center"
>
วันเริ่มงาน
<span
class=
"text-danger"
>
*
</span></label>
<div
class=
"col-span-6 sm:col-span-6 "
>
<mat-form-field>
<input
matInput
[
matDatepicker
]="
firstHireDate
"
type=
"text"
class=
"ti-form-input rounded-l-none focus:z-10 flatpickr-input !text-gray-500 bg-white"
id=
"datetime"
<input
matInput
[
matDatepicker
]="
firstHireDate
"
type=
"text"
readonly
class=
"ti-form-input rounded-l-none focus:z-10 flatpickr-input !text-gray-500
!
bg-white"
id=
"datetime"
[(
ngModel
)]="
employee
.
select
.
dateIso
"
(
ngModelChange
)="
changeDate
(
this
.
employee
.
select
,
'
firstHireDate
',
employee
.
select
.
dateIso
);"
>
<mat-datepicker-toggle
matSuffix
[
for
]="
firstHireDate
"
></mat-datepicker-toggle>
...
...
@@ -255,7 +281,45 @@
</div>
</div>
<div
class=
"grid grid-cols-12 gap-x-6"
>
<label
class=
"col-span-3 ti-form-label text-primary mt-2"
>
BU
<span
class=
"text-danger"
>
*
</span></label>
<label
class=
"col-span-3 ti-form-label text-primary mt-2 align-center align-center"
>
วันที่สิ้นสุด
<span
class=
"text-danger"
>
*
</span></label>
<div
class=
"col-span-6 sm:col-span-6 "
>
<mat-form-field>
<input
matInput
[
matDatepicker
]="
resigndate
"
type=
"text"
readonly
class=
"ti-form-input rounded-l-none focus:z-10 flatpickr-input !text-gray-500 !bg-white"
id=
"datetime"
[(
ngModel
)]="
employee
.
select
.
dateEndIso
"
(
ngModelChange
)="
changeDate
(
this
.
employee
.
select
,
'
resigndate
',
employee
.
select
.
dateEndIso
);"
>
<mat-datepicker-toggle
matSuffix
[
for
]="
resigndate
"
></mat-datepicker-toggle>
<mat-datepicker
#
resigndate
></mat-datepicker>
</mat-form-field>
</div>
</div>
<div
class=
"grid grid-cols-12 gap-x-6"
>
<label
class=
"col-span-3 ti-form-label text-primary mt-2 align-center"
>
หัวหน้างาน
</label>
<div
class=
"col-span-6 sm:col-span-6 "
>
<div
class=
"flex"
>
<div
class=
"relative flex rounded-md"
>
<input
type=
"text"
class=
"ti-form-input rounded-sm ltr:rounded-r-sm rtl:rounded-l-sm focus:z-10"
readonly
style=
"padding-right: 3.5rem;"
[
value
]="
employee
.
select
.
boss
.
fname
+'
'+
employee
.
select
.
boss
.
lname
"
>
<div
class=
"absolute inset-y-0 ltr:right-0 rtl:left-0 flex items-center z-20 ltr:pr-4 rtl:pl-4 space-x-2"
>
<button
type=
"button"
class=
"flex items-center text-red-500"
(
click
)="
employee
.
select
.
boss
.
employee=
''
;
employee
.
select
.
boss
.
fname=
''
;
employee
.
select
.
boss
.
lname=
''
"
>
<i
class=
"ti ti-circle-x cursor-pointer"
></i>
</button>
<button
type=
"button"
class=
"flex items-center text-gray-500 dark:text-white/70"
data-hs-overlay=
"#sub-employee-registration-emp-table-modal"
(
click
)="
modal
.
search=
''
"
>
<i
class=
"ri-search-line cursor-pointer text-gray"
></i>
</button>
</div>
</div>
</div>
</div>
</div>
<div
class=
"grid grid-cols-12 gap-x-6"
>
<label
class=
"col-span-3 ti-form-label text-primary mt-2 align-center"
>
ทะเบียนฝ่าย
<span
class=
"text-danger"
>
*
</span></label>
<div
class=
"col-span-6 sm:col-span-6 "
>
<div
class=
"flex"
>
<div
class=
"relative flex rounded-md"
>
...
...
@@ -268,7 +332,143 @@
<i
class=
"ti ti-circle-x cursor-pointer"
></i>
</button>
<button
type=
"button"
class=
"flex items-center text-gray-500 dark:text-white/70"
data-hs-overlay=
"#sub-employee-registration-bu-table-modal"
>
data-hs-overlay=
"#sub-employee-registration-bu1-table-modal"
(
click
)="
modal
.
search=
''
"
>
<i
class=
"ri-search-line cursor-pointer text-gray"
></i>
</button>
</div>
</div>
</div>
</div>
</div>
<div
class=
"grid grid-cols-12 gap-x-6"
>
<label
class=
"col-span-3 ti-form-label text-primary mt-2 align-center"
>
ทะเบียนแผนก
<span
class=
"text-danger"
>
*
</span></label>
<div
class=
"col-span-6 sm:col-span-6 "
>
<div
class=
"flex"
>
<div
class=
"relative flex rounded-md"
>
<input
type=
"text"
class=
"ti-form-input rounded-sm ltr:rounded-r-sm rtl:rounded-l-sm focus:z-10"
readonly
style=
"padding-right: 3.5rem;"
[(
ngModel
)]="
employee
.
select
.
bu2
.
tdesc
"
>
<div
class=
"absolute inset-y-0 ltr:right-0 rtl:left-0 flex items-center z-20 ltr:pr-4 rtl:pl-4 space-x-2"
>
<button
type=
"button"
class=
"flex items-center text-red-500"
(
click
)="
employee
.
select
.
bu2
.
bu2id=
''
;
employee
.
select
.
bu2
.
tdesc=
''
"
>
<i
class=
"ti ti-circle-x cursor-pointer"
></i>
</button>
<button
type=
"button"
class=
"flex items-center text-gray-500 dark:text-white/70"
data-hs-overlay=
"#sub-employee-registration-bu2-table-modal"
(
click
)="
modal
.
search=
''
"
>
<i
class=
"ri-search-line cursor-pointer text-gray"
></i>
</button>
</div>
</div>
</div>
</div>
</div>
<div
class=
"grid grid-cols-12 gap-x-6"
>
<label
class=
"col-span-3 ti-form-label text-primary mt-2 align-center"
>
ทะเบียนส่วน
<span
class=
"text-danger"
>
*
</span></label>
<div
class=
"col-span-6 sm:col-span-6 "
>
<div
class=
"flex"
>
<div
class=
"relative flex rounded-md"
>
<input
type=
"text"
class=
"ti-form-input rounded-sm ltr:rounded-r-sm rtl:rounded-l-sm focus:z-10"
readonly
style=
"padding-right: 3.5rem;"
[(
ngModel
)]="
employee
.
select
.
bu3
.
tdesc
"
>
<div
class=
"absolute inset-y-0 ltr:right-0 rtl:left-0 flex items-center z-20 ltr:pr-4 rtl:pl-4 space-x-2"
>
<button
type=
"button"
class=
"flex items-center text-red-500"
(
click
)="
employee
.
select
.
bu3
.
bu3id=
''
;
employee
.
select
.
bu3
.
tdesc=
''
"
>
<i
class=
"ti ti-circle-x cursor-pointer"
></i>
</button>
<button
type=
"button"
class=
"flex items-center text-gray-500 dark:text-white/70"
data-hs-overlay=
"#sub-employee-registration-bu3-table-modal"
(
click
)="
modal
.
search=
''
"
>
<i
class=
"ri-search-line cursor-pointer text-gray"
></i>
</button>
</div>
</div>
</div>
</div>
</div>
<div
class=
"grid grid-cols-12 gap-x-6"
>
<label
class=
"col-span-3 ti-form-label text-primary mt-2 align-center"
>
ส่วนย่อย1
<span
class=
"text-danger"
>
*
</span></label>
<div
class=
"col-span-6 sm:col-span-6 "
>
<div
class=
"flex"
>
<div
class=
"relative flex rounded-md"
>
<input
type=
"text"
class=
"ti-form-input rounded-sm ltr:rounded-r-sm rtl:rounded-l-sm focus:z-10"
readonly
style=
"padding-right: 3.5rem;"
[(
ngModel
)]="
employee
.
select
.
bu4
.
tdesc
"
>
<div
class=
"absolute inset-y-0 ltr:right-0 rtl:left-0 flex items-center z-20 ltr:pr-4 rtl:pl-4 space-x-2"
>
<button
type=
"button"
class=
"flex items-center text-red-500"
(
click
)="
employee
.
select
.
bu4
.
bu4id=
''
;
employee
.
select
.
bu4
.
tdesc=
''
"
>
<i
class=
"ti ti-circle-x cursor-pointer"
></i>
</button>
<button
type=
"button"
class=
"flex items-center text-gray-500 dark:text-white/70"
data-hs-overlay=
"#sub-employee-registration-bu4-table-modal"
(
click
)="
modal
.
search=
''
"
>
<i
class=
"ri-search-line cursor-pointer text-gray"
></i>
</button>
</div>
</div>
</div>
</div>
</div>
<div
class=
"grid grid-cols-12 gap-x-6"
>
<label
class=
"col-span-3 ti-form-label text-primary mt-2 align-center"
>
ส่วนย่อย2
<span
class=
"text-danger"
>
*
</span></label>
<div
class=
"col-span-6 sm:col-span-6 "
>
<div
class=
"flex"
>
<div
class=
"relative flex rounded-md"
>
<input
type=
"text"
class=
"ti-form-input rounded-sm ltr:rounded-r-sm rtl:rounded-l-sm focus:z-10"
readonly
style=
"padding-right: 3.5rem;"
[(
ngModel
)]="
employee
.
select
.
bu5
.
tdesc
"
>
<div
class=
"absolute inset-y-0 ltr:right-0 rtl:left-0 flex items-center z-20 ltr:pr-4 rtl:pl-4 space-x-2"
>
<button
type=
"button"
class=
"flex items-center text-red-500"
(
click
)="
employee
.
select
.
bu5
.
bu5id=
''
;
employee
.
select
.
bu5
.
tdesc=
''
"
>
<i
class=
"ti ti-circle-x cursor-pointer"
></i>
</button>
<button
type=
"button"
class=
"flex items-center text-gray-500 dark:text-white/70"
data-hs-overlay=
"#sub-employee-registration-bu5-table-modal"
(
click
)="
modal
.
search=
''
"
>
<i
class=
"ri-search-line cursor-pointer text-gray"
></i>
</button>
</div>
</div>
</div>
</div>
</div>
<div
class=
"grid grid-cols-12 gap-x-6"
>
<label
class=
"col-span-3 ti-form-label text-primary mt-2 align-center"
>
ส่วนย่อย3
</label>
<div
class=
"col-span-6 sm:col-span-6 "
>
<div
class=
"flex"
>
<div
class=
"relative flex rounded-md"
>
<input
type=
"text"
class=
"ti-form-input rounded-sm ltr:rounded-r-sm rtl:rounded-l-sm focus:z-10"
readonly
style=
"padding-right: 3.5rem;"
[(
ngModel
)]="
employee
.
select
.
bu6
.
tdesc
"
>
<div
class=
"absolute inset-y-0 ltr:right-0 rtl:left-0 flex items-center z-20 ltr:pr-4 rtl:pl-4 space-x-2"
>
<button
type=
"button"
class=
"flex items-center text-red-500"
(
click
)="
employee
.
select
.
bu6
.
bu6id=
''
;
employee
.
select
.
bu6
.
tdesc=
''
"
>
<i
class=
"ti ti-circle-x cursor-pointer"
></i>
</button>
<button
type=
"button"
class=
"flex items-center text-gray-500 dark:text-white/70"
data-hs-overlay=
"#sub-employee-registration-bu6-table-modal"
(
click
)="
modal
.
search=
''
"
>
<i
class=
"ri-search-line cursor-pointer text-gray"
></i>
</button>
</div>
</div>
</div>
</div>
</div>
<div
class=
"grid grid-cols-12 gap-x-6"
>
<label
class=
"col-span-3 ti-form-label text-primary mt-2 align-center"
>
ส่วนย่อย4
</label>
<div
class=
"col-span-6 sm:col-span-6 "
>
<div
class=
"flex"
>
<div
class=
"relative flex rounded-md"
>
<input
type=
"text"
class=
"ti-form-input rounded-sm ltr:rounded-r-sm rtl:rounded-l-sm focus:z-10"
readonly
style=
"padding-right: 3.5rem;"
[(
ngModel
)]="
employee
.
select
.
bu7
.
tdesc
"
>
<div
class=
"absolute inset-y-0 ltr:right-0 rtl:left-0 flex items-center z-20 ltr:pr-4 rtl:pl-4 space-x-2"
>
<button
type=
"button"
class=
"flex items-center text-red-500"
(
click
)="
employee
.
select
.
bu7
.
bu7id=
''
;
employee
.
select
.
bu7
.
tdesc=
''
"
>
<i
class=
"ti ti-circle-x cursor-pointer"
></i>
</button>
<button
type=
"button"
class=
"flex items-center text-gray-500 dark:text-white/70"
data-hs-overlay=
"#sub-employee-registration-bu7-table-modal"
(
click
)="
modal
.
search=
''
"
>
<i
class=
"ri-search-line cursor-pointer text-gray"
></i>
</button>
</div>
...
...
@@ -277,7 +477,8 @@
</div>
</div>
<div
class=
"grid grid-cols-12 gap-x-6"
>
<label
class=
"col-span-3 ti-form-label text-primary mt-2"
>
ตำแหน่ง
<span
class=
"text-danger"
>
*
</span></label>
<label
class=
"col-span-3 ti-form-label text-primary mt-2 align-center"
>
ตำแหน่ง
<span
class=
"text-danger"
>
*
</span></label>
<div
class=
"col-span-6 sm:col-span-6 "
>
<div
class=
"flex"
>
<div
class=
"relative flex rounded-md"
>
...
...
@@ -290,7 +491,7 @@
<i
class=
"ti ti-circle-x cursor-pointer"
></i>
</button>
<button
type=
"button"
class=
"flex items-center text-gray-500 dark:text-white/70"
data-hs-overlay=
"#sub-employee-registration-position-table-modal"
>
data-hs-overlay=
"#sub-employee-registration-position-table-modal"
(
click
)="
modal
.
search=
''
"
>
<i
class=
"ri-search-line cursor-pointer text-gray"
></i>
</button>
</div>
...
...
@@ -299,7 +500,8 @@
</div>
</div>
<div
class=
"grid grid-cols-12 gap-x-6"
>
<label
class=
"col-span-3 ti-form-label text-primary mt-2"
>
ลักษณะงาน
<span
class=
"text-danger"
>
*
</span></label>
<label
class=
"col-span-3 ti-form-label text-primary mt-2 align-center"
>
ลักษณะงาน
<span
class=
"text-danger"
>
*
</span></label>
<div
class=
"col-span-6 sm:col-span-6 "
>
<div
class=
"flex"
>
<div
class=
"relative flex rounded-md"
>
...
...
@@ -312,7 +514,7 @@
<i
class=
"ti ti-circle-x cursor-pointer"
></i>
</button>
<button
type=
"button"
class=
"flex items-center text-gray-500 dark:text-white/70"
data-hs-overlay=
"#sub-employee-registration-jobcode-table-modal"
>
data-hs-overlay=
"#sub-employee-registration-jobcode-table-modal"
(
click
)="
modal
.
search=
''
"
>
<i
class=
"ri-search-line cursor-pointer text-gray"
></i>
</button>
</div>
...
...
@@ -321,7 +523,8 @@
</div>
</div>
<div
class=
"grid grid-cols-12 gap-x-6"
>
<label
class=
"col-span-3 ti-form-label text-primary mt-2"
>
สาขา
<span
class=
"text-danger"
>
*
</span></label>
<label
class=
"col-span-3 ti-form-label text-primary mt-2 align-center"
>
สาขา
<span
class=
"text-danger"
>
*
</span></label>
<div
class=
"col-span-6 sm:col-span-6 "
>
<div
class=
"flex"
>
<div
class=
"relative flex rounded-md"
>
...
...
@@ -334,7 +537,7 @@
<i
class=
"ti ti-circle-x cursor-pointer"
></i>
</button>
<button
type=
"button"
class=
"flex items-center text-gray-500 dark:text-white/70"
data-hs-overlay=
"#sub-employee-registration-branch-table-modal"
>
data-hs-overlay=
"#sub-employee-registration-branch-table-modal"
(
click
)="
modal
.
search=
''
"
>
<i
class=
"ri-search-line cursor-pointer text-gray"
></i>
</button>
</div>
...
...
@@ -343,7 +546,8 @@
</div>
</div>
<div
class=
"grid grid-cols-12 gap-x-6"
>
<label
class=
"col-span-3 ti-form-label text-primary mt-2"
>
ประเภทพนักงาน
<span
class=
"text-danger"
>
*
</span></label>
<label
class=
"col-span-3 ti-form-label text-primary mt-2 align-center"
>
ประเภทพนักงาน
<span
class=
"text-danger"
>
*
</span></label>
<div
class=
"col-span-6 sm:col-span-6 "
>
<div
class=
"flex"
>
<div
class=
"relative flex rounded-md"
>
...
...
@@ -356,7 +560,7 @@
<i
class=
"ti ti-circle-x cursor-pointer"
></i>
</button>
<button
type=
"button"
class=
"flex items-center text-gray-500 dark:text-white/70"
data-hs-overlay=
"#sub-employee-registration-emptype-table-modal"
>
data-hs-overlay=
"#sub-employee-registration-emptype-table-modal"
(
click
)="
modal
.
search=
''
"
>
<i
class=
"ri-search-line cursor-pointer text-gray"
></i>
</button>
</div>
...
...
@@ -365,7 +569,8 @@
</div>
</div>
<div
class=
"grid grid-cols-12 gap-x-6"
>
<label
class=
"col-span-3 ti-form-label text-primary mt-2"
>
ระดับพนักงาน (JL)
<span
class=
"text-danger"
>
*
</span></label>
<label
class=
"col-span-3 ti-form-label text-primary mt-2 align-center"
>
ระดับพนักงาน (JL)
<span
class=
"text-danger"
>
*
</span></label>
<div
class=
"col-span-6 sm:col-span-6 "
>
<div
class=
"flex"
>
<div
class=
"relative flex rounded-md"
>
...
...
@@ -378,7 +583,7 @@
<i
class=
"ti ti-circle-x cursor-pointer"
></i>
</button>
<button
type=
"button"
class=
"flex items-center text-gray-500 dark:text-white/70"
data-hs-overlay=
"#sub-employee-registration-pl-table-modal"
>
data-hs-overlay=
"#sub-employee-registration-pl-table-modal"
(
click
)="
modal
.
search=
''
"
>
<i
class=
"ri-search-line cursor-pointer text-gray"
></i>
</button>
</div>
...
...
@@ -386,6 +591,10 @@
</div>
</div>
</div>
<div
class=
"grid grid-cols-12 gap-x-6"
>
<label
class=
"col-span-3 ti-form-label text-primary mt-2 align-center"
>
E-mail
</label>
<input
type=
"text"
class=
"sm:col-span-6 ti-form-input"
[(
ngModel
)]="
employee
.
select
.
email
"
>
</div>
</div>
<div
class=
"flex justify-center my-3"
>
<button
type=
"button"
...
...
@@ -635,12 +844,12 @@
</div>
</div>
<div
id=
"sub-employee-registration-bu-table-modal"
class=
"hs-overlay hidden ti-modal"
>
<div
id=
"sub-employee-registration-bu
1
-table-modal"
class=
"hs-overlay hidden ti-modal"
>
<div
class=
"hs-overlay-open:mt-7 ti-modal-box mt-0 ease-out lg:!max-w-4xl lg:w-full m-3 lg:!mx-auto"
>
<div
class=
"max-h-full overflow-hidden ti-modal-content"
>
<div
class=
"ti-modal-header"
>
<h3
class=
"text-xxl font-bold text-primary"
>
ข้อมูล
BU
ข้อมูล
ทะเบียนฝ่าย
</h3>
<div
class=
"flex justify-end"
>
<button
type=
"button"
class=
"hs-dropdown-toggle ti-modal-clode-btn text-danger"
...
...
@@ -762,12 +971,12 @@
</div>
</div>
<div
id=
"sub-employee-registration-
position
-table-modal"
class=
"hs-overlay hidden ti-modal"
>
<div
id=
"sub-employee-registration-
bu2
-table-modal"
class=
"hs-overlay hidden ti-modal"
>
<div
class=
"hs-overlay-open:mt-7 ti-modal-box mt-0 ease-out lg:!max-w-4xl lg:w-full m-3 lg:!mx-auto"
>
<div
class=
"max-h-full overflow-hidden ti-modal-content"
>
<div
class=
"ti-modal-header"
>
<h3
class=
"text-xxl font-bold text-primary"
>
ข้อมูล
ตำแหน่ง
ข้อมูล
ทะเบียนแผนก
</h3>
<div
class=
"flex justify-end"
>
<button
type=
"button"
class=
"hs-dropdown-toggle ti-modal-clode-btn text-danger"
...
...
@@ -783,7 +992,7 @@
<div
class=
"relative shadow-md"
>
<input
type=
"text"
class=
"ti-form-input ltr:pl-11 rtl:pr-11 focus:z-10 "
placeholder=
"Search by No. or Name"
[(
ngModel
)]="
modal
.
search
"
(
ngModelChange
)="
searchModalChange
(
position
ListFilter
())"
>
(
ngModelChange
)="
searchModalChange
(
bu2
ListFilter
())"
>
<div
class=
"absolute inset-y-0 ltr:left-0 rtl:right-0 flex items-center pointer-events-none z-20 ltr:pl-4 rtl:pr-4"
>
<i
class=
"ri-search-line text-gray"
></i>
...
...
@@ -796,7 +1005,7 @@
<thead>
<tr>
<ng-container
*
ngFor=
"let item of ['ลำดับ','รหัส
ตำแหน่ง','รายละเอียดฝ่าย(ไทย)','รายละเอียดฝ่าย
(อังกฤษ)']; let f = first; let l = last"
>
*
ngFor=
"let item of ['ลำดับ','รหัส
แผนก','รายละเอียดแผนก(ไทย)','รายละเอียดแผนก
(อังกฤษ)']; let f = first; let l = last"
>
<th
scope=
"col"
class=
"relative px-10px py-10px bg-soft-secondary text-primary"
[
class
.!
text-center
]="
f
"
>
<span
class=
"text-sm"
>
{{ item }}
</span>
...
...
@@ -807,7 +1016,7 @@
</ng-container>
</tr>
</thead>
<tbody
*
ngIf=
"
position
.loading"
>
<tbody
*
ngIf=
"
bu2
.loading"
>
<tr>
<td
class=
"text-center"
colspan=
"100%"
>
<div
*
ngFor=
"let item of [1,2,3]"
class=
"ti-spinner w-8 h-8 text-secondary mx-1"
role=
"status"
...
...
@@ -817,22 +1026,22 @@
</td>
</tr>
</tbody>
<tbody
*
ngIf=
"!
position.loading&&!position
ListFilter().length"
>
<tbody
*
ngIf=
"!
bu2.loading&&!bu2
ListFilter().length"
>
<tr>
<td
class=
"text-center"
colspan=
"100%"
>
ไม่พบข้อมูล
</td>
</tr>
</tbody>
<tbody
*
ngIf=
"!
position.loading&&position
ListFilter().length"
>
<tbody
*
ngIf=
"!
bu2.loading&&bu2
ListFilter().length"
>
<tr
*
ngFor=
"let item of
position
ListFilter() | slice:((modal.currentPage-1) * 10) : (((modal.currentPage-1) * 10) + 10);let i = index"
class=
"cursor-pointer"
(
click
)="
selectDataModal
(
this
.
employee
.
select
,'
position
',
item
)"
*
ngFor=
"let item of
bu2
ListFilter() | slice:((modal.currentPage-1) * 10) : (((modal.currentPage-1) * 10) + 10);let i = index"
class=
"cursor-pointer"
(
click
)="
selectDataModal
(
this
.
employee
.
select
,'
bu2
',
item
)"
data-hs-overlay=
"#sub-employee-registration-modal"
>
<td
class=
"flex justify-center"
>
{{((modal.currentPage-1) * 10)+(i+1)}}
</td>
<td>
{{item.
positionI
d}}
</td>
<td>
{{item.
bu2i
d}}
</td>
<td>
{{item.tdesc}}
</td>
<td>
{{item.edesc}}
</td>
</tr>
...
...
@@ -872,10 +1081,9 @@
</li>
</ul>
<ul
class=
"nav-tabs mt-3"
>
<span>
Show {{((modal.currentPage-1) * 10)+1}} to {{positionListFilter().length
<10
?
positionListFilter
().
length:
(
modal
.
currentPage=
=modal.page.length
?
((
modal
.
currentPage
*
10
)
-
((
modal
.
currentPage
*
10
)
-
positionListFilter
().
length
)
)
:
(
modal
.
currentPage
*
10
)
)
}}
of
{{
positionListFilter
().
length
}}
items
</
span
>
<span>
Show {{((modal.currentPage-1) * 10)+1}} to {{bu2ListFilter().length
<10
?
bu2ListFilter
().
length:
(
modal
.
currentPage=
=modal.page.length
?
((
modal
.
currentPage
*
10
)
-
((
modal
.
currentPage
*
10
)
-
bu2ListFilter
().
length
)
)
:
(
modal
.
currentPage
*
10
)
)
}}
of
{{
bu2ListFilter
().
length
}}
items
</
span
>
</ul>
</nav>
<div
class=
"flex justify-end mt-2rem mb-1rem space-x-4"
>
...
...
@@ -890,12 +1098,12 @@
</div>
</div>
<div
id=
"sub-employee-registration-
jobcode
-table-modal"
class=
"hs-overlay hidden ti-modal"
>
<div
id=
"sub-employee-registration-
bu3
-table-modal"
class=
"hs-overlay hidden ti-modal"
>
<div
class=
"hs-overlay-open:mt-7 ti-modal-box mt-0 ease-out lg:!max-w-4xl lg:w-full m-3 lg:!mx-auto"
>
<div
class=
"max-h-full overflow-hidden ti-modal-content"
>
<div
class=
"ti-modal-header"
>
<h3
class=
"text-xxl font-bold text-primary"
>
ข้อมูล
ลักษณะงา
น
ข้อมูล
ทะเบียนส่ว
น
</h3>
<div
class=
"flex justify-end"
>
<button
type=
"button"
class=
"hs-dropdown-toggle ti-modal-clode-btn text-danger"
...
...
@@ -911,7 +1119,7 @@
<div
class=
"relative shadow-md"
>
<input
type=
"text"
class=
"ti-form-input ltr:pl-11 rtl:pr-11 focus:z-10 "
placeholder=
"Search by No. or Name"
[(
ngModel
)]="
modal
.
search
"
(
ngModelChange
)="
searchModalChange
(
jobcode
ListFilter
())"
>
(
ngModelChange
)="
searchModalChange
(
bu3
ListFilter
())"
>
<div
class=
"absolute inset-y-0 ltr:left-0 rtl:right-0 flex items-center pointer-events-none z-20 ltr:pl-4 rtl:pr-4"
>
<i
class=
"ri-search-line text-gray"
></i>
...
...
@@ -924,7 +1132,7 @@
<thead>
<tr>
<ng-container
*
ngFor=
"let item of ['ลำดับ','รหัส
ลักษณะงาน','รายละเอียดฝ่าย(ไทย)','รายละเอียดฝ่าย
(อังกฤษ)']; let f = first; let l = last"
>
*
ngFor=
"let item of ['ลำดับ','รหัส
ส่วน','รายละเอียดส่วน(ไทย)','รายละเอียดส่วน
(อังกฤษ)']; let f = first; let l = last"
>
<th
scope=
"col"
class=
"relative px-10px py-10px bg-soft-secondary text-primary"
[
class
.!
text-center
]="
f
"
>
<span
class=
"text-sm"
>
{{ item }}
</span>
...
...
@@ -935,7 +1143,7 @@
</ng-container>
</tr>
</thead>
<tbody
*
ngIf=
"
jobcode
.loading"
>
<tbody
*
ngIf=
"
bu3
.loading"
>
<tr>
<td
class=
"text-center"
colspan=
"100%"
>
<div
*
ngFor=
"let item of [1,2,3]"
class=
"ti-spinner w-8 h-8 text-secondary mx-1"
role=
"status"
...
...
@@ -945,22 +1153,22 @@
</td>
</tr>
</tbody>
<tbody
*
ngIf=
"!
jobcode.loading&&!jobcode
ListFilter().length"
>
<tbody
*
ngIf=
"!
bu3.loading&&!bu3
ListFilter().length"
>
<tr>
<td
class=
"text-center"
colspan=
"100%"
>
ไม่พบข้อมูล
</td>
</tr>
</tbody>
<tbody
*
ngIf=
"!
jobcode.loading&&jobcode
ListFilter().length"
>
<tbody
*
ngIf=
"!
bu3.loading&&bu3
ListFilter().length"
>
<tr
*
ngFor=
"let item of
jobcode
ListFilter() | slice:((modal.currentPage-1) * 10) : (((modal.currentPage-1) * 10) + 10);let i = index"
class=
"cursor-pointer"
(
click
)="
selectDataModal
(
this
.
employee
.
select
,'
jobCode
',
item
)"
*
ngFor=
"let item of
bu3
ListFilter() | slice:((modal.currentPage-1) * 10) : (((modal.currentPage-1) * 10) + 10);let i = index"
class=
"cursor-pointer"
(
click
)="
selectDataModal
(
this
.
employee
.
select
,'
bu3
',
item
)"
data-hs-overlay=
"#sub-employee-registration-modal"
>
<td
class=
"flex justify-center"
>
{{((modal.currentPage-1) * 10)+(i+1)}}
</td>
<td>
{{item.
jobcodeI
d}}
</td>
<td>
{{item.
bu3i
d}}
</td>
<td>
{{item.tdesc}}
</td>
<td>
{{item.edesc}}
</td>
</tr>
...
...
@@ -1000,10 +1208,9 @@
</li>
</ul>
<ul
class=
"nav-tabs mt-3"
>
<span>
Show {{((modal.currentPage-1) * 10)+1}} to {{jobcodeListFilter().length
<10
?
jobcodeListFilter
().
length:
(
modal
.
currentPage=
=modal.page.length
?
((
modal
.
currentPage
*
10
)
-
((
modal
.
currentPage
*
10
)
-
jobcodeListFilter
().
length
)
)
:
(
modal
.
currentPage
*
10
)
)
}}
of
{{
jobcodeListFilter
().
length
}}
items
</
span
>
<span>
Show {{((modal.currentPage-1) * 10)+1}} to {{bu3ListFilter().length
<10
?
bu3ListFilter
().
length:
(
modal
.
currentPage=
=modal.page.length
?
((
modal
.
currentPage
*
10
)
-
((
modal
.
currentPage
*
10
)
-
bu3ListFilter
().
length
)
)
:
(
modal
.
currentPage
*
10
)
)
}}
of
{{
bu3ListFilter
().
length
}}
items
</
span
>
</ul>
</nav>
<div
class=
"flex justify-end mt-2rem mb-1rem space-x-4"
>
...
...
@@ -1018,12 +1225,12 @@
</div>
</div>
<div
id=
"sub-employee-registration-b
ranch
-table-modal"
class=
"hs-overlay hidden ti-modal"
>
<div
id=
"sub-employee-registration-b
u4
-table-modal"
class=
"hs-overlay hidden ti-modal"
>
<div
class=
"hs-overlay-open:mt-7 ti-modal-box mt-0 ease-out lg:!max-w-4xl lg:w-full m-3 lg:!mx-auto"
>
<div
class=
"max-h-full overflow-hidden ti-modal-content"
>
<div
class=
"ti-modal-header"
>
<h3
class=
"text-xxl font-bold text-primary"
>
ข้อมูลส
าขา
ข้อมูลส
่วนย่อย1
</h3>
<div
class=
"flex justify-end"
>
<button
type=
"button"
class=
"hs-dropdown-toggle ti-modal-clode-btn text-danger"
...
...
@@ -1039,7 +1246,7 @@
<div
class=
"relative shadow-md"
>
<input
type=
"text"
class=
"ti-form-input ltr:pl-11 rtl:pr-11 focus:z-10 "
placeholder=
"Search by No. or Name"
[(
ngModel
)]="
modal
.
search
"
(
ngModelChange
)="
searchModalChange
(
b
ranch
ListFilter
())"
>
(
ngModelChange
)="
searchModalChange
(
b
u4
ListFilter
())"
>
<div
class=
"absolute inset-y-0 ltr:left-0 rtl:right-0 flex items-center pointer-events-none z-20 ltr:pl-4 rtl:pr-4"
>
<i
class=
"ri-search-line text-gray"
></i>
...
...
@@ -1052,7 +1259,7 @@
<thead>
<tr>
<ng-container
*
ngFor=
"let item of ['ลำดับ','รหัสส
าขา','รายละเอียดฝ่าย(ไทย)','รายละเอียดฝ่าย
(อังกฤษ)']; let f = first; let l = last"
>
*
ngFor=
"let item of ['ลำดับ','รหัสส
่วนย่อย1','รายละเอียดส่วนย่อย1(ไทย)','รายละเอียดส่วนย่อย1
(อังกฤษ)']; let f = first; let l = last"
>
<th
scope=
"col"
class=
"relative px-10px py-10px bg-soft-secondary text-primary"
[
class
.!
text-center
]="
f
"
>
<span
class=
"text-sm"
>
{{ item }}
</span>
...
...
@@ -1063,7 +1270,7 @@
</ng-container>
</tr>
</thead>
<tbody
*
ngIf=
"b
ranch
.loading"
>
<tbody
*
ngIf=
"b
u4
.loading"
>
<tr>
<td
class=
"text-center"
colspan=
"100%"
>
<div
*
ngFor=
"let item of [1,2,3]"
class=
"ti-spinner w-8 h-8 text-secondary mx-1"
role=
"status"
...
...
@@ -1073,22 +1280,22 @@
</td>
</tr>
</tbody>
<tbody
*
ngIf=
"!b
ranch.loading&&!branch
ListFilter().length"
>
<tbody
*
ngIf=
"!b
u4.loading&&!bu4
ListFilter().length"
>
<tr>
<td
class=
"text-center"
colspan=
"100%"
>
ไม่พบข้อมูล
</td>
</tr>
</tbody>
<tbody
*
ngIf=
"!b
ranch.loading&&branch
ListFilter().length"
>
<tbody
*
ngIf=
"!b
u4.loading&&bu4
ListFilter().length"
>
<tr
*
ngFor=
"let item of b
ranch
ListFilter() | slice:((modal.currentPage-1) * 10) : (((modal.currentPage-1) * 10) + 10);let i = index"
class=
"cursor-pointer"
(
click
)="
selectDataModal
(
this
.
employee
.
select
,'
b
ranch
',
item
)"
*
ngFor=
"let item of b
u4
ListFilter() | slice:((modal.currentPage-1) * 10) : (((modal.currentPage-1) * 10) + 10);let i = index"
class=
"cursor-pointer"
(
click
)="
selectDataModal
(
this
.
employee
.
select
,'
b
u4
',
item
)"
data-hs-overlay=
"#sub-employee-registration-modal"
>
<td
class=
"flex justify-center"
>
{{((modal.currentPage-1) * 10)+(i+1)}}
</td>
<td>
{{item.b
ranchI
d}}
</td>
<td>
{{item.b
u4i
d}}
</td>
<td>
{{item.tdesc}}
</td>
<td>
{{item.edesc}}
</td>
</tr>
...
...
@@ -1128,10 +1335,9 @@
</li>
</ul>
<ul
class=
"nav-tabs mt-3"
>
<span>
Show {{((modal.currentPage-1) * 10)+1}} to {{b
ranchListFilter().length
<10
?
branch
ListFilter
().
length:
<span>
Show {{((modal.currentPage-1) * 10)+1}} to {{b
u4ListFilter().length
<10
?
bu4
ListFilter
().
length:
(
modal
.
currentPage=
=modal.page.length
?
((
modal
.
currentPage
*
10
)
-
((
modal
.
currentPage
*
10
)
-
branchListFilter
().
length
)
)
:
(
modal
.
currentPage
*
10
)
)
}}
of
{{
branchListFilter
().
length
}}
items
</
span
>
bu4ListFilter
().
length
)
)
:
(
modal
.
currentPage
*
10
)
)
}}
of
{{
bu4ListFilter
().
length
}}
items
</
span
>
</ul>
</nav>
<div
class=
"flex justify-end mt-2rem mb-1rem space-x-4"
>
...
...
@@ -1146,12 +1352,12 @@
</div>
</div>
<div
id=
"sub-employee-registration-
emptype
-table-modal"
class=
"hs-overlay hidden ti-modal"
>
<div
id=
"sub-employee-registration-
bu5
-table-modal"
class=
"hs-overlay hidden ti-modal"
>
<div
class=
"hs-overlay-open:mt-7 ti-modal-box mt-0 ease-out lg:!max-w-4xl lg:w-full m-3 lg:!mx-auto"
>
<div
class=
"max-h-full overflow-hidden ti-modal-content"
>
<div
class=
"ti-modal-header"
>
<h3
class=
"text-xxl font-bold text-primary"
>
ข้อมูล
ประเภทพนักงาน
ข้อมูล
ส่วนย่อย2
</h3>
<div
class=
"flex justify-end"
>
<button
type=
"button"
class=
"hs-dropdown-toggle ti-modal-clode-btn text-danger"
...
...
@@ -1167,7 +1373,7 @@
<div
class=
"relative shadow-md"
>
<input
type=
"text"
class=
"ti-form-input ltr:pl-11 rtl:pr-11 focus:z-10 "
placeholder=
"Search by No. or Name"
[(
ngModel
)]="
modal
.
search
"
(
ngModelChange
)="
searchModalChange
(
empType
ListFilter
())"
>
(
ngModelChange
)="
searchModalChange
(
bu5
ListFilter
())"
>
<div
class=
"absolute inset-y-0 ltr:left-0 rtl:right-0 flex items-center pointer-events-none z-20 ltr:pl-4 rtl:pr-4"
>
<i
class=
"ri-search-line text-gray"
></i>
...
...
@@ -1180,7 +1386,7 @@
<thead>
<tr>
<ng-container
*
ngFor=
"let item of ['ลำดับ','รหัส
ประเภทพนักงาน','รายละเอียดฝ่าย(ไทย)','รายละเอียดฝ่าย
(อังกฤษ)']; let f = first; let l = last"
>
*
ngFor=
"let item of ['ลำดับ','รหัส
ส่วนย่อย2','รายละเอียดส่วนย่อย2(ไทย)','รายละเอียดส่วนย่อย2
(อังกฤษ)']; let f = first; let l = last"
>
<th
scope=
"col"
class=
"relative px-10px py-10px bg-soft-secondary text-primary"
[
class
.!
text-center
]="
f
"
>
<span
class=
"text-sm"
>
{{ item }}
</span>
...
...
@@ -1191,7 +1397,7 @@
</ng-container>
</tr>
</thead>
<tbody
*
ngIf=
"
empType
.loading"
>
<tbody
*
ngIf=
"
bu5
.loading"
>
<tr>
<td
class=
"text-center"
colspan=
"100%"
>
<div
*
ngFor=
"let item of [1,2,3]"
class=
"ti-spinner w-8 h-8 text-secondary mx-1"
role=
"status"
...
...
@@ -1201,22 +1407,22 @@
</td>
</tr>
</tbody>
<tbody
*
ngIf=
"!
empType.loading&&!empType
ListFilter().length"
>
<tbody
*
ngIf=
"!
bu5.loading&&!bu5
ListFilter().length"
>
<tr>
<td
class=
"text-center"
colspan=
"100%"
>
ไม่พบข้อมูล
</td>
</tr>
</tbody>
<tbody
*
ngIf=
"!
empType.loading&&empType
ListFilter().length"
>
<tbody
*
ngIf=
"!
bu5.loading&&bu5
ListFilter().length"
>
<tr
*
ngFor=
"let item of
empType
ListFilter() | slice:((modal.currentPage-1) * 10) : (((modal.currentPage-1) * 10) + 10);let i = index"
class=
"cursor-pointer"
(
click
)="
selectDataModal
(
this
.
employee
.
select
,'
empType
',
item
)"
*
ngFor=
"let item of
bu5
ListFilter() | slice:((modal.currentPage-1) * 10) : (((modal.currentPage-1) * 10) + 10);let i = index"
class=
"cursor-pointer"
(
click
)="
selectDataModal
(
this
.
employee
.
select
,'
bu5
',
item
)"
data-hs-overlay=
"#sub-employee-registration-modal"
>
<td
class=
"flex justify-center"
>
{{((modal.currentPage-1) * 10)+(i+1)}}
</td>
<td>
{{item.
codeI
d}}
</td>
<td>
{{item.
bu5i
d}}
</td>
<td>
{{item.tdesc}}
</td>
<td>
{{item.edesc}}
</td>
</tr>
...
...
@@ -1256,10 +1462,9 @@
</li>
</ul>
<ul
class=
"nav-tabs mt-3"
>
<span>
Show {{((modal.currentPage-1) * 10)+1}} to {{empTypeListFilter().length
<10
?
empTypeListFilter
().
length:
(
modal
.
currentPage=
=modal.page.length
?
((
modal
.
currentPage
*
10
)
-
((
modal
.
currentPage
*
10
)
-
empTypeListFilter
().
length
)
)
:
(
modal
.
currentPage
*
10
)
)
}}
of
{{
empTypeListFilter
().
length
}}
items
</
span
>
<span>
Show {{((modal.currentPage-1) * 10)+1}} to {{bu5ListFilter().length
<10
?
bu5ListFilter
().
length:
(
modal
.
currentPage=
=modal.page.length
?
((
modal
.
currentPage
*
10
)
-
((
modal
.
currentPage
*
10
)
-
bu5ListFilter
().
length
)
)
:
(
modal
.
currentPage
*
10
)
)
}}
of
{{
bu5ListFilter
().
length
}}
items
</
span
>
</ul>
</nav>
<div
class=
"flex justify-end mt-2rem mb-1rem space-x-4"
>
...
...
@@ -1274,6 +1479,906 @@
</div>
</div>
<div
id=
"sub-employee-registration-bu6-table-modal"
class=
"hs-overlay hidden ti-modal"
>
<div
class=
"hs-overlay-open:mt-7 ti-modal-box mt-0 ease-out lg:!max-w-4xl lg:w-full m-3 lg:!mx-auto"
>
<div
class=
"max-h-full overflow-hidden ti-modal-content"
>
<div
class=
"ti-modal-header"
>
<h3
class=
"text-xxl font-bold text-primary"
>
ข้อมูลส่วนย่อย3
</h3>
<div
class=
"flex justify-end"
>
<button
type=
"button"
class=
"hs-dropdown-toggle ti-modal-clode-btn text-danger"
data-hs-overlay=
"#sub-employee-registration-modal"
>
<span
class=
"sr-only"
>
Close
</span>
<i
class=
"ti ti-circle-x fs-xxl"
></i>
</button>
</div>
</div>
<div
class=
"ti-modal-body"
>
<div
class=
"flex justify-end pb-1rem"
>
<div
class=
"px-1"
>
<div
class=
"relative shadow-md"
>
<input
type=
"text"
class=
"ti-form-input ltr:pl-11 rtl:pr-11 focus:z-10 "
placeholder=
"Search by No. or Name"
[(
ngModel
)]="
modal
.
search
"
(
ngModelChange
)="
searchModalChange
(
bu6ListFilter
())"
>
<div
class=
"absolute inset-y-0 ltr:left-0 rtl:right-0 flex items-center pointer-events-none z-20 ltr:pl-4 rtl:pr-4"
>
<i
class=
"ri-search-line text-gray"
></i>
</div>
</div>
</div>
</div>
<div
class=
"overflow-auto border"
>
<table
class=
"ti-custom-table ti-custom-table-head ti-custom-table-hover"
>
<thead>
<tr>
<ng-container
*
ngFor=
"let item of ['ลำดับ','รหัสส่วนย่อย3','รายละเอียดส่วนย่อย3(ไทย)','รายละเอียดส่วนย่อย3(อังกฤษ)']; let f = first; let l = last"
>
<th
scope=
"col"
class=
"relative px-10px py-10px bg-soft-secondary text-primary"
[
class
.!
text-center
]="
f
"
>
<span
class=
"text-sm"
>
{{ item }}
</span>
<div
class=
"absolute top-1/2 transform -translate-y-1/2 right-0"
*
ngIf=
"!l"
>
<i
class=
"ti ti-dots-vertical fs-l"
></i>
</div>
</th>
</ng-container>
</tr>
</thead>
<tbody
*
ngIf=
"bu6.loading"
>
<tr>
<td
class=
"text-center"
colspan=
"100%"
>
<div
*
ngFor=
"let item of [1,2,3]"
class=
"ti-spinner w-8 h-8 text-secondary mx-1"
role=
"status"
aria-label=
"loading"
>
<span
class=
"sr-only"
>
Loading...
</span>
</div>
</td>
</tr>
</tbody>
<tbody
*
ngIf=
"!bu6.loading&&!bu6ListFilter().length"
>
<tr>
<td
class=
"text-center"
colspan=
"100%"
>
ไม่พบข้อมูล
</td>
</tr>
</tbody>
<tbody
*
ngIf=
"!bu6.loading&&bu6ListFilter().length"
>
<tr
*
ngFor=
"let item of bu6ListFilter() | slice:((modal.currentPage-1) * 10) : (((modal.currentPage-1) * 10) + 10);let i = index"
class=
"cursor-pointer"
(
click
)="
selectDataModal
(
this
.
employee
.
select
,'
bu6
',
item
)"
data-hs-overlay=
"#sub-employee-registration-modal"
>
<td
class=
"flex justify-center"
>
{{((modal.currentPage-1) * 10)+(i+1)}}
</td>
<td>
{{item.bu6id}}
</td>
<td>
{{item.tdesc}}
</td>
<td>
{{item.edesc}}
</td>
</tr>
</tbody>
</table>
</div>
<nav
class=
"pagination-style-3 my-5"
*
ngIf=
"modal.page.length"
>
<ul
class=
"ti-pagination"
>
<li>
<a
aria-label=
"anchor"
class=
"page-link"
href=
"javascript:void(0);"
(
click
)="
modal
.
currentPage =
(modal.currentPage-1
||
1
)"
>
<i
class=
"ri-arrow-left-s-line align-middle rtl:rotate-180"
></i>
</a>
</li>
<li
*
ngFor=
"let item of modal.page;let f = first;let l = last"
>
<ng-container
*
ngIf=
"item==3&&modal.currentPage!=1&&modal.currentPage!=2&&modal.currentPage!=3"
>
<a
aria-label=
"anchor"
class=
"page-link"
href=
"javascript:void(0);"
><i
class=
"ri-more-line"
></i>
</a>
</ng-container>
<ng-container
*
ngIf=
"(f||l)||(item==modal.currentPage-1||item==modal.currentPage||item==modal.currentPage+1)"
>
<a
class=
"page-link"
href=
"javascript:void(0);"
[
class
.
active
]="
item=
=modal.currentPage"
(
click
)="
modal
.
currentPage=
item"
>
{{item}}
</a>
</ng-container>
<ng-container
*
ngIf=
"item==modal.page.length-2&&modal.currentPage!=modal.page.length&&modal.currentPage!=modal.page.length-1&&modal.currentPage!=modal.page.length-2"
>
<a
aria-label=
"anchor"
class=
"page-link"
href=
"javascript:void(0);"
><i
class=
"ri-more-line"
></i>
</a>
</ng-container>
</li>
<li>
<a
aria-label=
"anchor"
class=
"page-link"
href=
"javascript:void(0);"
(
click
)="
modal
.
currentPage =
(modal.currentPage
>
modal.page.length-1 ? modal.currentPage: modal.currentPage+1 )">
<i
class=
"ri-arrow-right-s-line align-middle rtl:rotate-180"
></i>
</a>
</li>
</ul>
<ul
class=
"nav-tabs mt-3"
>
<span>
Show {{((modal.currentPage-1) * 10)+1}} to {{bu6ListFilter().length
<10
?
bu6ListFilter
().
length:
(
modal
.
currentPage=
=modal.page.length
?
((
modal
.
currentPage
*
10
)
-
((
modal
.
currentPage
*
10
)
-
bu6ListFilter
().
length
)
)
:
(
modal
.
currentPage
*
10
)
)
}}
of
{{
bu6ListFilter
().
length
}}
items
</
span
>
</ul>
</nav>
<div
class=
"flex justify-end mt-2rem mb-1rem space-x-4"
>
<button
type=
"button"
class=
"hs-dropdown-toggle ti-btn ti-border font-medium bg-white text-gray-700 shadow-sm align-middle hover:bg-gray-50 focus:ring-offset-white focus:ring-primary dark:bg-bgdark dark:hover:bg-black/20 dark:border-white/10 dark:text-white/70 dark:hover:text-white dark:focus:ring-offset-white/10"
data-hs-overlay=
"#sub-employee-registration-modal"
>
ย้อนกลับ
</button>
</div>
</div>
</div>
</div>
</div>
<div
id=
"sub-employee-registration-bu7-table-modal"
class=
"hs-overlay hidden ti-modal"
>
<div
class=
"hs-overlay-open:mt-7 ti-modal-box mt-0 ease-out lg:!max-w-4xl lg:w-full m-3 lg:!mx-auto"
>
<div
class=
"max-h-full overflow-hidden ti-modal-content"
>
<div
class=
"ti-modal-header"
>
<h3
class=
"text-xxl font-bold text-primary"
>
ข้อมูลส่วนย่อย4
</h3>
<div
class=
"flex justify-end"
>
<button
type=
"button"
class=
"hs-dropdown-toggle ti-modal-clode-btn text-danger"
data-hs-overlay=
"#sub-employee-registration-modal"
>
<span
class=
"sr-only"
>
Close
</span>
<i
class=
"ti ti-circle-x fs-xxl"
></i>
</button>
</div>
</div>
<div
class=
"ti-modal-body"
>
<div
class=
"flex justify-end pb-1rem"
>
<div
class=
"px-1"
>
<div
class=
"relative shadow-md"
>
<input
type=
"text"
class=
"ti-form-input ltr:pl-11 rtl:pr-11 focus:z-10 "
placeholder=
"Search by No. or Name"
[(
ngModel
)]="
modal
.
search
"
(
ngModelChange
)="
searchModalChange
(
bu7ListFilter
())"
>
<div
class=
"absolute inset-y-0 ltr:left-0 rtl:right-0 flex items-center pointer-events-none z-20 ltr:pl-4 rtl:pr-4"
>
<i
class=
"ri-search-line text-gray"
></i>
</div>
</div>
</div>
</div>
<div
class=
"overflow-auto border"
>
<table
class=
"ti-custom-table ti-custom-table-head ti-custom-table-hover"
>
<thead>
<tr>
<ng-container
*
ngFor=
"let item of ['ลำดับ','รหัสส่วนย่อย4','รายละเอียดส่วนย่อย4(ไทย)','รายละเอียดส่วนย่อย4(อังกฤษ)']; let f = first; let l = last"
>
<th
scope=
"col"
class=
"relative px-10px py-10px bg-soft-secondary text-primary"
[
class
.!
text-center
]="
f
"
>
<span
class=
"text-sm"
>
{{ item }}
</span>
<div
class=
"absolute top-1/2 transform -translate-y-1/2 right-0"
*
ngIf=
"!l"
>
<i
class=
"ti ti-dots-vertical fs-l"
></i>
</div>
</th>
</ng-container>
</tr>
</thead>
<tbody
*
ngIf=
"bu7.loading"
>
<tr>
<td
class=
"text-center"
colspan=
"100%"
>
<div
*
ngFor=
"let item of [1,2,3]"
class=
"ti-spinner w-8 h-8 text-secondary mx-1"
role=
"status"
aria-label=
"loading"
>
<span
class=
"sr-only"
>
Loading...
</span>
</div>
</td>
</tr>
</tbody>
<tbody
*
ngIf=
"!bu7.loading&&!bu7ListFilter().length"
>
<tr>
<td
class=
"text-center"
colspan=
"100%"
>
ไม่พบข้อมูล
</td>
</tr>
</tbody>
<tbody
*
ngIf=
"!bu7.loading&&bu7ListFilter().length"
>
<tr
*
ngFor=
"let item of bu7ListFilter() | slice:((modal.currentPage-1) * 10) : (((modal.currentPage-1) * 10) + 10);let i = index"
class=
"cursor-pointer"
(
click
)="
selectDataModal
(
this
.
employee
.
select
,'
bu7
',
item
)"
data-hs-overlay=
"#sub-employee-registration-modal"
>
<td
class=
"flex justify-center"
>
{{((modal.currentPage-1) * 10)+(i+1)}}
</td>
<td>
{{item.bu7id}}
</td>
<td>
{{item.tdesc}}
</td>
<td>
{{item.edesc}}
</td>
</tr>
</tbody>
</table>
</div>
<nav
class=
"pagination-style-3 my-5"
*
ngIf=
"modal.page.length"
>
<ul
class=
"ti-pagination"
>
<li>
<a
aria-label=
"anchor"
class=
"page-link"
href=
"javascript:void(0);"
(
click
)="
modal
.
currentPage =
(modal.currentPage-1
||
1
)"
>
<i
class=
"ri-arrow-left-s-line align-middle rtl:rotate-180"
></i>
</a>
</li>
<li
*
ngFor=
"let item of modal.page;let f = first;let l = last"
>
<ng-container
*
ngIf=
"item==3&&modal.currentPage!=1&&modal.currentPage!=2&&modal.currentPage!=3"
>
<a
aria-label=
"anchor"
class=
"page-link"
href=
"javascript:void(0);"
><i
class=
"ri-more-line"
></i>
</a>
</ng-container>
<ng-container
*
ngIf=
"(f||l)||(item==modal.currentPage-1||item==modal.currentPage||item==modal.currentPage+1)"
>
<a
class=
"page-link"
href=
"javascript:void(0);"
[
class
.
active
]="
item=
=modal.currentPage"
(
click
)="
modal
.
currentPage=
item"
>
{{item}}
</a>
</ng-container>
<ng-container
*
ngIf=
"item==modal.page.length-2&&modal.currentPage!=modal.page.length&&modal.currentPage!=modal.page.length-1&&modal.currentPage!=modal.page.length-2"
>
<a
aria-label=
"anchor"
class=
"page-link"
href=
"javascript:void(0);"
><i
class=
"ri-more-line"
></i>
</a>
</ng-container>
</li>
<li>
<a
aria-label=
"anchor"
class=
"page-link"
href=
"javascript:void(0);"
(
click
)="
modal
.
currentPage =
(modal.currentPage
>
modal.page.length-1 ? modal.currentPage: modal.currentPage+1 )">
<i
class=
"ri-arrow-right-s-line align-middle rtl:rotate-180"
></i>
</a>
</li>
</ul>
<ul
class=
"nav-tabs mt-3"
>
<span>
Show {{((modal.currentPage-1) * 10)+1}} to {{bu7ListFilter().length
<10
?
bu7ListFilter
().
length:
(
modal
.
currentPage=
=modal.page.length
?
((
modal
.
currentPage
*
10
)
-
((
modal
.
currentPage
*
10
)
-
bu7ListFilter
().
length
)
)
:
(
modal
.
currentPage
*
10
)
)
}}
of
{{
bu7ListFilter
().
length
}}
items
</
span
>
</ul>
</nav>
<div
class=
"flex justify-end mt-2rem mb-1rem space-x-4"
>
<button
type=
"button"
class=
"hs-dropdown-toggle ti-btn ti-border font-medium bg-white text-gray-700 shadow-sm align-middle hover:bg-gray-50 focus:ring-offset-white focus:ring-primary dark:bg-bgdark dark:hover:bg-black/20 dark:border-white/10 dark:text-white/70 dark:hover:text-white dark:focus:ring-offset-white/10"
data-hs-overlay=
"#sub-employee-registration-modal"
>
ย้อนกลับ
</button>
</div>
</div>
</div>
</div>
</div>
<div
id=
"sub-employee-registration-position-table-modal"
class=
"hs-overlay hidden ti-modal"
>
<div
class=
"hs-overlay-open:mt-7 ti-modal-box mt-0 ease-out lg:!max-w-4xl lg:w-full m-3 lg:!mx-auto"
>
<div
class=
"max-h-full overflow-hidden ti-modal-content"
>
<div
class=
"ti-modal-header"
>
<h3
class=
"text-xxl font-bold text-primary"
>
ข้อมูลตำแหน่ง
</h3>
<div
class=
"flex justify-end"
>
<button
type=
"button"
class=
"hs-dropdown-toggle ti-modal-clode-btn text-danger"
data-hs-overlay=
"#sub-employee-registration-modal"
>
<span
class=
"sr-only"
>
Close
</span>
<i
class=
"ti ti-circle-x fs-xxl"
></i>
</button>
</div>
</div>
<div
class=
"ti-modal-body"
>
<div
class=
"flex justify-end pb-1rem"
>
<div
class=
"px-1"
>
<div
class=
"relative shadow-md"
>
<input
type=
"text"
class=
"ti-form-input ltr:pl-11 rtl:pr-11 focus:z-10 "
placeholder=
"Search by No. or Name"
[(
ngModel
)]="
modal
.
search
"
(
ngModelChange
)="
searchModalChange
(
positionListFilter
())"
>
<div
class=
"absolute inset-y-0 ltr:left-0 rtl:right-0 flex items-center pointer-events-none z-20 ltr:pl-4 rtl:pr-4"
>
<i
class=
"ri-search-line text-gray"
></i>
</div>
</div>
</div>
</div>
<div
class=
"overflow-auto border"
>
<table
class=
"ti-custom-table ti-custom-table-head ti-custom-table-hover"
>
<thead>
<tr>
<ng-container
*
ngFor=
"let item of ['ลำดับ','รหัสตำแหน่ง','รายละเอียดฝ่าย(ไทย)','รายละเอียดฝ่าย(อังกฤษ)']; let f = first; let l = last"
>
<th
scope=
"col"
class=
"relative px-10px py-10px bg-soft-secondary text-primary"
[
class
.!
text-center
]="
f
"
>
<span
class=
"text-sm"
>
{{ item }}
</span>
<div
class=
"absolute top-1/2 transform -translate-y-1/2 right-0"
*
ngIf=
"!l"
>
<i
class=
"ti ti-dots-vertical fs-l"
></i>
</div>
</th>
</ng-container>
</tr>
</thead>
<tbody
*
ngIf=
"position.loading"
>
<tr>
<td
class=
"text-center"
colspan=
"100%"
>
<div
*
ngFor=
"let item of [1,2,3]"
class=
"ti-spinner w-8 h-8 text-secondary mx-1"
role=
"status"
aria-label=
"loading"
>
<span
class=
"sr-only"
>
Loading...
</span>
</div>
</td>
</tr>
</tbody>
<tbody
*
ngIf=
"!position.loading&&!positionListFilter().length"
>
<tr>
<td
class=
"text-center"
colspan=
"100%"
>
ไม่พบข้อมูล
</td>
</tr>
</tbody>
<tbody
*
ngIf=
"!position.loading&&positionListFilter().length"
>
<tr
*
ngFor=
"let item of positionListFilter() | slice:((modal.currentPage-1) * 10) : (((modal.currentPage-1) * 10) + 10);let i = index"
class=
"cursor-pointer"
(
click
)="
selectDataModal
(
this
.
employee
.
select
,'
position
',
item
)"
data-hs-overlay=
"#sub-employee-registration-modal"
>
<td
class=
"flex justify-center"
>
{{((modal.currentPage-1) * 10)+(i+1)}}
</td>
<td>
{{item.positionId}}
</td>
<td>
{{item.tdesc}}
</td>
<td>
{{item.edesc}}
</td>
</tr>
</tbody>
</table>
</div>
<nav
class=
"pagination-style-3 my-5"
*
ngIf=
"modal.page.length"
>
<ul
class=
"ti-pagination"
>
<li>
<a
aria-label=
"anchor"
class=
"page-link"
href=
"javascript:void(0);"
(
click
)="
modal
.
currentPage =
(modal.currentPage-1
||
1
)"
>
<i
class=
"ri-arrow-left-s-line align-middle rtl:rotate-180"
></i>
</a>
</li>
<li
*
ngFor=
"let item of modal.page;let f = first;let l = last"
>
<ng-container
*
ngIf=
"item==3&&modal.currentPage!=1&&modal.currentPage!=2&&modal.currentPage!=3"
>
<a
aria-label=
"anchor"
class=
"page-link"
href=
"javascript:void(0);"
><i
class=
"ri-more-line"
></i>
</a>
</ng-container>
<ng-container
*
ngIf=
"(f||l)||(item==modal.currentPage-1||item==modal.currentPage||item==modal.currentPage+1)"
>
<a
class=
"page-link"
href=
"javascript:void(0);"
[
class
.
active
]="
item=
=modal.currentPage"
(
click
)="
modal
.
currentPage=
item"
>
{{item}}
</a>
</ng-container>
<ng-container
*
ngIf=
"item==modal.page.length-2&&modal.currentPage!=modal.page.length&&modal.currentPage!=modal.page.length-1&&modal.currentPage!=modal.page.length-2"
>
<a
aria-label=
"anchor"
class=
"page-link"
href=
"javascript:void(0);"
><i
class=
"ri-more-line"
></i>
</a>
</ng-container>
</li>
<li>
<a
aria-label=
"anchor"
class=
"page-link"
href=
"javascript:void(0);"
(
click
)="
modal
.
currentPage =
(modal.currentPage
>
modal.page.length-1 ? modal.currentPage: modal.currentPage+1 )">
<i
class=
"ri-arrow-right-s-line align-middle rtl:rotate-180"
></i>
</a>
</li>
</ul>
<ul
class=
"nav-tabs mt-3"
>
<span>
Show {{((modal.currentPage-1) * 10)+1}} to {{positionListFilter().length
<10
?
positionListFilter
().
length:
(
modal
.
currentPage=
=modal.page.length
?
((
modal
.
currentPage
*
10
)
-
((
modal
.
currentPage
*
10
)
-
positionListFilter
().
length
)
)
:
(
modal
.
currentPage
*
10
)
)
}}
of
{{
positionListFilter
().
length
}}
items
</
span
>
</ul>
</nav>
<div
class=
"flex justify-end mt-2rem mb-1rem space-x-4"
>
<button
type=
"button"
class=
"hs-dropdown-toggle ti-btn ti-border font-medium bg-white text-gray-700 shadow-sm align-middle hover:bg-gray-50 focus:ring-offset-white focus:ring-primary dark:bg-bgdark dark:hover:bg-black/20 dark:border-white/10 dark:text-white/70 dark:hover:text-white dark:focus:ring-offset-white/10"
data-hs-overlay=
"#sub-employee-registration-modal"
>
ย้อนกลับ
</button>
</div>
</div>
</div>
</div>
</div>
<div
id=
"sub-employee-registration-jobcode-table-modal"
class=
"hs-overlay hidden ti-modal"
>
<div
class=
"hs-overlay-open:mt-7 ti-modal-box mt-0 ease-out lg:!max-w-4xl lg:w-full m-3 lg:!mx-auto"
>
<div
class=
"max-h-full overflow-hidden ti-modal-content"
>
<div
class=
"ti-modal-header"
>
<h3
class=
"text-xxl font-bold text-primary"
>
ข้อมูลลักษณะงาน
</h3>
<div
class=
"flex justify-end"
>
<button
type=
"button"
class=
"hs-dropdown-toggle ti-modal-clode-btn text-danger"
data-hs-overlay=
"#sub-employee-registration-modal"
>
<span
class=
"sr-only"
>
Close
</span>
<i
class=
"ti ti-circle-x fs-xxl"
></i>
</button>
</div>
</div>
<div
class=
"ti-modal-body"
>
<div
class=
"flex justify-end pb-1rem"
>
<div
class=
"px-1"
>
<div
class=
"relative shadow-md"
>
<input
type=
"text"
class=
"ti-form-input ltr:pl-11 rtl:pr-11 focus:z-10 "
placeholder=
"Search by No. or Name"
[(
ngModel
)]="
modal
.
search
"
(
ngModelChange
)="
searchModalChange
(
jobcodeListFilter
())"
>
<div
class=
"absolute inset-y-0 ltr:left-0 rtl:right-0 flex items-center pointer-events-none z-20 ltr:pl-4 rtl:pr-4"
>
<i
class=
"ri-search-line text-gray"
></i>
</div>
</div>
</div>
</div>
<div
class=
"overflow-auto border"
>
<table
class=
"ti-custom-table ti-custom-table-head ti-custom-table-hover"
>
<thead>
<tr>
<ng-container
*
ngFor=
"let item of ['ลำดับ','รหัสลักษณะงาน','รายละเอียดฝ่าย(ไทย)','รายละเอียดฝ่าย(อังกฤษ)']; let f = first; let l = last"
>
<th
scope=
"col"
class=
"relative px-10px py-10px bg-soft-secondary text-primary"
[
class
.!
text-center
]="
f
"
>
<span
class=
"text-sm"
>
{{ item }}
</span>
<div
class=
"absolute top-1/2 transform -translate-y-1/2 right-0"
*
ngIf=
"!l"
>
<i
class=
"ti ti-dots-vertical fs-l"
></i>
</div>
</th>
</ng-container>
</tr>
</thead>
<tbody
*
ngIf=
"jobcode.loading"
>
<tr>
<td
class=
"text-center"
colspan=
"100%"
>
<div
*
ngFor=
"let item of [1,2,3]"
class=
"ti-spinner w-8 h-8 text-secondary mx-1"
role=
"status"
aria-label=
"loading"
>
<span
class=
"sr-only"
>
Loading...
</span>
</div>
</td>
</tr>
</tbody>
<tbody
*
ngIf=
"!jobcode.loading&&!jobcodeListFilter().length"
>
<tr>
<td
class=
"text-center"
colspan=
"100%"
>
ไม่พบข้อมูล
</td>
</tr>
</tbody>
<tbody
*
ngIf=
"!jobcode.loading&&jobcodeListFilter().length"
>
<tr
*
ngFor=
"let item of jobcodeListFilter() | slice:((modal.currentPage-1) * 10) : (((modal.currentPage-1) * 10) + 10);let i = index"
class=
"cursor-pointer"
(
click
)="
selectDataModal
(
this
.
employee
.
select
,'
jobCode
',
item
)"
data-hs-overlay=
"#sub-employee-registration-modal"
>
<td
class=
"flex justify-center"
>
{{((modal.currentPage-1) * 10)+(i+1)}}
</td>
<td>
{{item.jobcodeId}}
</td>
<td>
{{item.tdesc}}
</td>
<td>
{{item.edesc}}
</td>
</tr>
</tbody>
</table>
</div>
<nav
class=
"pagination-style-3 my-5"
*
ngIf=
"modal.page.length"
>
<ul
class=
"ti-pagination"
>
<li>
<a
aria-label=
"anchor"
class=
"page-link"
href=
"javascript:void(0);"
(
click
)="
modal
.
currentPage =
(modal.currentPage-1
||
1
)"
>
<i
class=
"ri-arrow-left-s-line align-middle rtl:rotate-180"
></i>
</a>
</li>
<li
*
ngFor=
"let item of modal.page;let f = first;let l = last"
>
<ng-container
*
ngIf=
"item==3&&modal.currentPage!=1&&modal.currentPage!=2&&modal.currentPage!=3"
>
<a
aria-label=
"anchor"
class=
"page-link"
href=
"javascript:void(0);"
><i
class=
"ri-more-line"
></i>
</a>
</ng-container>
<ng-container
*
ngIf=
"(f||l)||(item==modal.currentPage-1||item==modal.currentPage||item==modal.currentPage+1)"
>
<a
class=
"page-link"
href=
"javascript:void(0);"
[
class
.
active
]="
item=
=modal.currentPage"
(
click
)="
modal
.
currentPage=
item"
>
{{item}}
</a>
</ng-container>
<ng-container
*
ngIf=
"item==modal.page.length-2&&modal.currentPage!=modal.page.length&&modal.currentPage!=modal.page.length-1&&modal.currentPage!=modal.page.length-2"
>
<a
aria-label=
"anchor"
class=
"page-link"
href=
"javascript:void(0);"
><i
class=
"ri-more-line"
></i>
</a>
</ng-container>
</li>
<li>
<a
aria-label=
"anchor"
class=
"page-link"
href=
"javascript:void(0);"
(
click
)="
modal
.
currentPage =
(modal.currentPage
>
modal.page.length-1 ? modal.currentPage: modal.currentPage+1 )">
<i
class=
"ri-arrow-right-s-line align-middle rtl:rotate-180"
></i>
</a>
</li>
</ul>
<ul
class=
"nav-tabs mt-3"
>
<span>
Show {{((modal.currentPage-1) * 10)+1}} to {{jobcodeListFilter().length
<10
?
jobcodeListFilter
().
length:
(
modal
.
currentPage=
=modal.page.length
?
((
modal
.
currentPage
*
10
)
-
((
modal
.
currentPage
*
10
)
-
jobcodeListFilter
().
length
)
)
:
(
modal
.
currentPage
*
10
)
)
}}
of
{{
jobcodeListFilter
().
length
}}
items
</
span
>
</ul>
</nav>
<div
class=
"flex justify-end mt-2rem mb-1rem space-x-4"
>
<button
type=
"button"
class=
"hs-dropdown-toggle ti-btn ti-border font-medium bg-white text-gray-700 shadow-sm align-middle hover:bg-gray-50 focus:ring-offset-white focus:ring-primary dark:bg-bgdark dark:hover:bg-black/20 dark:border-white/10 dark:text-white/70 dark:hover:text-white dark:focus:ring-offset-white/10"
data-hs-overlay=
"#sub-employee-registration-modal"
>
ย้อนกลับ
</button>
</div>
</div>
</div>
</div>
</div>
<div
id=
"sub-employee-registration-branch-table-modal"
class=
"hs-overlay hidden ti-modal"
>
<div
class=
"hs-overlay-open:mt-7 ti-modal-box mt-0 ease-out lg:!max-w-4xl lg:w-full m-3 lg:!mx-auto"
>
<div
class=
"max-h-full overflow-hidden ti-modal-content"
>
<div
class=
"ti-modal-header"
>
<h3
class=
"text-xxl font-bold text-primary"
>
ข้อมูลสาขา
</h3>
<div
class=
"flex justify-end"
>
<button
type=
"button"
class=
"hs-dropdown-toggle ti-modal-clode-btn text-danger"
data-hs-overlay=
"#sub-employee-registration-modal"
>
<span
class=
"sr-only"
>
Close
</span>
<i
class=
"ti ti-circle-x fs-xxl"
></i>
</button>
</div>
</div>
<div
class=
"ti-modal-body"
>
<div
class=
"flex justify-end pb-1rem"
>
<div
class=
"px-1"
>
<div
class=
"relative shadow-md"
>
<input
type=
"text"
class=
"ti-form-input ltr:pl-11 rtl:pr-11 focus:z-10 "
placeholder=
"Search by No. or Name"
[(
ngModel
)]="
modal
.
search
"
(
ngModelChange
)="
searchModalChange
(
branchListFilter
())"
>
<div
class=
"absolute inset-y-0 ltr:left-0 rtl:right-0 flex items-center pointer-events-none z-20 ltr:pl-4 rtl:pr-4"
>
<i
class=
"ri-search-line text-gray"
></i>
</div>
</div>
</div>
</div>
<div
class=
"overflow-auto border"
>
<table
class=
"ti-custom-table ti-custom-table-head ti-custom-table-hover"
>
<thead>
<tr>
<ng-container
*
ngFor=
"let item of ['ลำดับ','รหัสสาขา','รายละเอียดฝ่าย(ไทย)','รายละเอียดฝ่าย(อังกฤษ)']; let f = first; let l = last"
>
<th
scope=
"col"
class=
"relative px-10px py-10px bg-soft-secondary text-primary"
[
class
.!
text-center
]="
f
"
>
<span
class=
"text-sm"
>
{{ item }}
</span>
<div
class=
"absolute top-1/2 transform -translate-y-1/2 right-0"
*
ngIf=
"!l"
>
<i
class=
"ti ti-dots-vertical fs-l"
></i>
</div>
</th>
</ng-container>
</tr>
</thead>
<tbody
*
ngIf=
"branch.loading"
>
<tr>
<td
class=
"text-center"
colspan=
"100%"
>
<div
*
ngFor=
"let item of [1,2,3]"
class=
"ti-spinner w-8 h-8 text-secondary mx-1"
role=
"status"
aria-label=
"loading"
>
<span
class=
"sr-only"
>
Loading...
</span>
</div>
</td>
</tr>
</tbody>
<tbody
*
ngIf=
"!branch.loading&&!branchListFilter().length"
>
<tr>
<td
class=
"text-center"
colspan=
"100%"
>
ไม่พบข้อมูล
</td>
</tr>
</tbody>
<tbody
*
ngIf=
"!branch.loading&&branchListFilter().length"
>
<tr
*
ngFor=
"let item of branchListFilter() | slice:((modal.currentPage-1) * 10) : (((modal.currentPage-1) * 10) + 10);let i = index"
class=
"cursor-pointer"
(
click
)="
selectDataModal
(
this
.
employee
.
select
,'
branch
',
item
)"
data-hs-overlay=
"#sub-employee-registration-modal"
>
<td
class=
"flex justify-center"
>
{{((modal.currentPage-1) * 10)+(i+1)}}
</td>
<td>
{{item.branchId}}
</td>
<td>
{{item.tdesc}}
</td>
<td>
{{item.edesc}}
</td>
</tr>
</tbody>
</table>
</div>
<nav
class=
"pagination-style-3 my-5"
*
ngIf=
"modal.page.length"
>
<ul
class=
"ti-pagination"
>
<li>
<a
aria-label=
"anchor"
class=
"page-link"
href=
"javascript:void(0);"
(
click
)="
modal
.
currentPage =
(modal.currentPage-1
||
1
)"
>
<i
class=
"ri-arrow-left-s-line align-middle rtl:rotate-180"
></i>
</a>
</li>
<li
*
ngFor=
"let item of modal.page;let f = first;let l = last"
>
<ng-container
*
ngIf=
"item==3&&modal.currentPage!=1&&modal.currentPage!=2&&modal.currentPage!=3"
>
<a
aria-label=
"anchor"
class=
"page-link"
href=
"javascript:void(0);"
><i
class=
"ri-more-line"
></i>
</a>
</ng-container>
<ng-container
*
ngIf=
"(f||l)||(item==modal.currentPage-1||item==modal.currentPage||item==modal.currentPage+1)"
>
<a
class=
"page-link"
href=
"javascript:void(0);"
[
class
.
active
]="
item=
=modal.currentPage"
(
click
)="
modal
.
currentPage=
item"
>
{{item}}
</a>
</ng-container>
<ng-container
*
ngIf=
"item==modal.page.length-2&&modal.currentPage!=modal.page.length&&modal.currentPage!=modal.page.length-1&&modal.currentPage!=modal.page.length-2"
>
<a
aria-label=
"anchor"
class=
"page-link"
href=
"javascript:void(0);"
><i
class=
"ri-more-line"
></i>
</a>
</ng-container>
</li>
<li>
<a
aria-label=
"anchor"
class=
"page-link"
href=
"javascript:void(0);"
(
click
)="
modal
.
currentPage =
(modal.currentPage
>
modal.page.length-1 ? modal.currentPage: modal.currentPage+1 )">
<i
class=
"ri-arrow-right-s-line align-middle rtl:rotate-180"
></i>
</a>
</li>
</ul>
<ul
class=
"nav-tabs mt-3"
>
<span>
Show {{((modal.currentPage-1) * 10)+1}} to {{branchListFilter().length
<10
?
branchListFilter
().
length:
(
modal
.
currentPage=
=modal.page.length
?
((
modal
.
currentPage
*
10
)
-
((
modal
.
currentPage
*
10
)
-
branchListFilter
().
length
)
)
:
(
modal
.
currentPage
*
10
)
)
}}
of
{{
branchListFilter
().
length
}}
items
</
span
>
</ul>
</nav>
<div
class=
"flex justify-end mt-2rem mb-1rem space-x-4"
>
<button
type=
"button"
class=
"hs-dropdown-toggle ti-btn ti-border font-medium bg-white text-gray-700 shadow-sm align-middle hover:bg-gray-50 focus:ring-offset-white focus:ring-primary dark:bg-bgdark dark:hover:bg-black/20 dark:border-white/10 dark:text-white/70 dark:hover:text-white dark:focus:ring-offset-white/10"
data-hs-overlay=
"#sub-employee-registration-modal"
>
ย้อนกลับ
</button>
</div>
</div>
</div>
</div>
</div>
<div
id=
"sub-employee-registration-emptype-table-modal"
class=
"hs-overlay hidden ti-modal"
>
<div
class=
"hs-overlay-open:mt-7 ti-modal-box mt-0 ease-out lg:!max-w-4xl lg:w-full m-3 lg:!mx-auto"
>
<div
class=
"max-h-full overflow-hidden ti-modal-content"
>
<div
class=
"ti-modal-header"
>
<h3
class=
"text-xxl font-bold text-primary"
>
ข้อมูลประเภทพนักงาน
</h3>
<div
class=
"flex justify-end"
>
<button
type=
"button"
class=
"hs-dropdown-toggle ti-modal-clode-btn text-danger"
data-hs-overlay=
"#sub-employee-registration-modal"
>
<span
class=
"sr-only"
>
Close
</span>
<i
class=
"ti ti-circle-x fs-xxl"
></i>
</button>
</div>
</div>
<div
class=
"ti-modal-body"
>
<div
class=
"flex justify-end pb-1rem"
>
<div
class=
"px-1"
>
<div
class=
"relative shadow-md"
>
<input
type=
"text"
class=
"ti-form-input ltr:pl-11 rtl:pr-11 focus:z-10 "
placeholder=
"Search by No. or Name"
[(
ngModel
)]="
modal
.
search
"
(
ngModelChange
)="
searchModalChange
(
empTypeListFilter
())"
>
<div
class=
"absolute inset-y-0 ltr:left-0 rtl:right-0 flex items-center pointer-events-none z-20 ltr:pl-4 rtl:pr-4"
>
<i
class=
"ri-search-line text-gray"
></i>
</div>
</div>
</div>
</div>
<div
class=
"overflow-auto border"
>
<table
class=
"ti-custom-table ti-custom-table-head ti-custom-table-hover"
>
<thead>
<tr>
<ng-container
*
ngFor=
"let item of ['ลำดับ','รหัสประเภทพนักงาน','รายละเอียดฝ่าย(ไทย)','รายละเอียดฝ่าย(อังกฤษ)']; let f = first; let l = last"
>
<th
scope=
"col"
class=
"relative px-10px py-10px bg-soft-secondary text-primary"
[
class
.!
text-center
]="
f
"
>
<span
class=
"text-sm"
>
{{ item }}
</span>
<div
class=
"absolute top-1/2 transform -translate-y-1/2 right-0"
*
ngIf=
"!l"
>
<i
class=
"ti ti-dots-vertical fs-l"
></i>
</div>
</th>
</ng-container>
</tr>
</thead>
<tbody
*
ngIf=
"empType.loading"
>
<tr>
<td
class=
"text-center"
colspan=
"100%"
>
<div
*
ngFor=
"let item of [1,2,3]"
class=
"ti-spinner w-8 h-8 text-secondary mx-1"
role=
"status"
aria-label=
"loading"
>
<span
class=
"sr-only"
>
Loading...
</span>
</div>
</td>
</tr>
</tbody>
<tbody
*
ngIf=
"!empType.loading&&!empTypeListFilter().length"
>
<tr>
<td
class=
"text-center"
colspan=
"100%"
>
ไม่พบข้อมูล
</td>
</tr>
</tbody>
<tbody
*
ngIf=
"!empType.loading&&empTypeListFilter().length"
>
<tr
*
ngFor=
"let item of empTypeListFilter() | slice:((modal.currentPage-1) * 10) : (((modal.currentPage-1) * 10) + 10);let i = index"
class=
"cursor-pointer"
(
click
)="
selectDataModal
(
this
.
employee
.
select
,'
empType
',
item
)"
data-hs-overlay=
"#sub-employee-registration-modal"
>
<td
class=
"flex justify-center"
>
{{((modal.currentPage-1) * 10)+(i+1)}}
</td>
<td>
{{item.codeId}}
</td>
<td>
{{item.tdesc}}
</td>
<td>
{{item.edesc}}
</td>
</tr>
</tbody>
</table>
</div>
<nav
class=
"pagination-style-3 my-5"
*
ngIf=
"modal.page.length"
>
<ul
class=
"ti-pagination"
>
<li>
<a
aria-label=
"anchor"
class=
"page-link"
href=
"javascript:void(0);"
(
click
)="
modal
.
currentPage =
(modal.currentPage-1
||
1
)"
>
<i
class=
"ri-arrow-left-s-line align-middle rtl:rotate-180"
></i>
</a>
</li>
<li
*
ngFor=
"let item of modal.page;let f = first;let l = last"
>
<ng-container
*
ngIf=
"item==3&&modal.currentPage!=1&&modal.currentPage!=2&&modal.currentPage!=3"
>
<a
aria-label=
"anchor"
class=
"page-link"
href=
"javascript:void(0);"
><i
class=
"ri-more-line"
></i>
</a>
</ng-container>
<ng-container
*
ngIf=
"(f||l)||(item==modal.currentPage-1||item==modal.currentPage||item==modal.currentPage+1)"
>
<a
class=
"page-link"
href=
"javascript:void(0);"
[
class
.
active
]="
item=
=modal.currentPage"
(
click
)="
modal
.
currentPage=
item"
>
{{item}}
</a>
</ng-container>
<ng-container
*
ngIf=
"item==modal.page.length-2&&modal.currentPage!=modal.page.length&&modal.currentPage!=modal.page.length-1&&modal.currentPage!=modal.page.length-2"
>
<a
aria-label=
"anchor"
class=
"page-link"
href=
"javascript:void(0);"
><i
class=
"ri-more-line"
></i>
</a>
</ng-container>
</li>
<li>
<a
aria-label=
"anchor"
class=
"page-link"
href=
"javascript:void(0);"
(
click
)="
modal
.
currentPage =
(modal.currentPage
>
modal.page.length-1 ? modal.currentPage: modal.currentPage+1 )">
<i
class=
"ri-arrow-right-s-line align-middle rtl:rotate-180"
></i>
</a>
</li>
</ul>
<ul
class=
"nav-tabs mt-3"
>
<span>
Show {{((modal.currentPage-1) * 10)+1}} to {{empTypeListFilter().length
<10
?
empTypeListFilter
().
length:
(
modal
.
currentPage=
=modal.page.length
?
((
modal
.
currentPage
*
10
)
-
((
modal
.
currentPage
*
10
)
-
empTypeListFilter
().
length
)
)
:
(
modal
.
currentPage
*
10
)
)
}}
of
{{
empTypeListFilter
().
length
}}
items
</
span
>
</ul>
</nav>
<div
class=
"flex justify-end mt-2rem mb-1rem space-x-4"
>
<button
type=
"button"
class=
"hs-dropdown-toggle ti-btn ti-border font-medium bg-white text-gray-700 shadow-sm align-middle hover:bg-gray-50 focus:ring-offset-white focus:ring-primary dark:bg-bgdark dark:hover:bg-black/20 dark:border-white/10 dark:text-white/70 dark:hover:text-white dark:focus:ring-offset-white/10"
data-hs-overlay=
"#sub-employee-registration-modal"
>
ย้อนกลับ
</button>
</div>
</div>
</div>
</div>
</div>
<div
id=
"sub-employee-registration-emp-table-modal"
class=
"hs-overlay hidden ti-modal"
>
<div
class=
"hs-overlay-open:mt-7 ti-modal-box mt-0 ease-out lg:!max-w-4xl lg:w-full m-3 lg:!mx-auto"
>
<div
class=
"max-h-full overflow-hidden ti-modal-content"
>
<div
class=
"ti-modal-header"
>
<h3
class=
"text-xxl font-bold text-primary"
>
ข้อมูลพนักงาน
</h3>
<div
class=
"flex justify-end"
>
<button
type=
"button"
class=
"hs-dropdown-toggle ti-modal-clode-btn text-danger"
data-hs-overlay=
"#sub-employee-registration-modal"
>
<span
class=
"sr-only"
>
Close
</span>
<i
class=
"ti ti-circle-x fs-xxl"
></i>
</button>
</div>
</div>
<div
class=
"ti-modal-body"
>
<div
class=
"flex justify-end pb-1rem"
>
<div
class=
"px-1"
>
<div
class=
"relative shadow-md"
>
<input
type=
"text"
id=
"hs-leading-icon"
name=
"hs-leading-icon"
class=
"ti-form-input ltr:pl-11 rtl:pr-11 focus:z-10 "
placeholder=
"Search by No. or Name"
[(
ngModel
)]="
modal
.
search
"
(
ngModelChange
)="
searchModalChange
(
employeeModalListFilter
())"
>
<div
class=
"absolute inset-y-0 ltr:left-0 rtl:right-0 flex items-center pointer-events-none z-20 ltr:pl-4 rtl:pr-4"
>
<i
class=
"ri-search-line text-gray"
></i>
</div>
</div>
</div>
</div>
<div
class=
"page px-rem"
>
<div
class=
"overflow-auto table-bordered rounded-t-md"
>
<div
class=
"overflow-auto shadow-md rounded-t-md"
>
<table
class=
"ti-custom-table ti-custom-table-head ti-custom-table-hover"
>
<thead>
<tr>
<ng-container
*
ngFor=
"let item of ['รหัสพนักงาน','ชื่อ','นามสกุล','ตำแหน่ง','หน่วยงาน']; let f = first; let l = last; let i = index"
>
<th
scope=
"col"
class=
" px-10px py-10px bg-soft-secondary text-primary !text-center"
>
<span
class=
"font-size-12px font-weight-700"
>
{{ item }}
</span>
<div
class=
"absolute top-1/2 transform -translate-y-1/2 right-0"
>
<i
class=
"ti ti-dots-vertical fs-l"
></i>
</div>
</th>
</ng-container>
</tr>
</thead>
<tbody
*
ngIf=
"employee.loading"
>
<tr>
<td
class=
"text-center"
colspan=
"100%"
>
<div
*
ngFor=
"let item of [1,2,3]"
class=
"ti-spinner w-8 h-8 text-secondary mx-1"
role=
"status"
aria-label=
"loading"
>
<span
class=
"sr-only"
>
Loading...
</span>
</div>
</td>
</tr>
</tbody>
<tbody
*
ngIf=
"!employee.loading&&!employeeModalListFilter().length"
>
<tr>
<td
class=
"text-center"
colspan=
"100%"
>
ไม่พบข้อมูล
</td>
</tr>
</tbody>
<tbody
*
ngIf=
"!employee.loading&&employeeModalListFilter().length"
>
<tr
*
ngFor=
"let item of employeeModalListFilter() | slice:((modal.currentPage-1) * 10) : (((modal.currentPage-1) * 10) + 10);let i = index"
class=
"cursor-pointer"
(
click
)="
selectDataModal
(
this
.
employee
.
select
,'
boss
',
item
)"
data-hs-overlay=
"#sub-employee-registration-modal"
>
<td
class=
"text-center"
>
{{item.employeeId}}
</td>
<td>
{{item.fname}}
</td>
<td>
{{item.lname}}
</td>
<td>
{{item.position.tdesc}}
</td>
<td>
{{item.jobCode.bu1.tdesc}}
</td>
</tr>
</tbody>
</table>
</div>
</div>
<nav
class=
"pagination-style-3 my-5"
*
ngIf=
"modal.page.length"
>
<ul
class=
"ti-pagination"
>
<li>
<a
aria-label=
"anchor"
class=
"page-link"
href=
"javascript:void(0);"
(
click
)="
modal
.
currentPage =
(modal.currentPage-1
||
1
)"
>
<i
class=
"ri-arrow-left-s-line align-middle rtl:rotate-180"
></i>
</a>
</li>
<li
*
ngFor=
"let item of modal.page;let f = first;let l = last"
>
<ng-container
*
ngIf=
"item==3&&modal.currentPage!=1&&modal.currentPage!=2&&modal.currentPage!=3"
>
<a
aria-label=
"anchor"
class=
"page-link"
href=
"javascript:void(0);"
><i
class=
"ri-more-line"
></i>
</a>
</ng-container>
<ng-container
*
ngIf=
"(f||l)||(item==modal.currentPage-1||item==modal.currentPage||item==modal.currentPage+1)"
>
<a
class=
"page-link"
href=
"javascript:void(0);"
[
class
.
active
]="
item=
=modal.currentPage"
(
click
)="
modal
.
currentPage=
item"
>
{{item}}
</a>
</ng-container>
<ng-container
*
ngIf=
"item==modal.page.length-2&&modal.currentPage!=modal.page.length&&modal.currentPage!=modal.page.length-1&&modal.currentPage!=modal.page.length-2"
>
<a
aria-label=
"anchor"
class=
"page-link"
href=
"javascript:void(0);"
><i
class=
"ri-more-line"
></i>
</a>
</ng-container>
</li>
<li>
<a
aria-label=
"anchor"
class=
"page-link"
href=
"javascript:void(0);"
(
click
)="
modal
.
currentPage =
(modal.currentPage
>
modal.page.length-1 ? modal.currentPage: modal.currentPage+1 )">
<i
class=
"ri-arrow-right-s-line align-middle rtl:rotate-180"
></i>
</a>
</li>
</ul>
<ul
class=
"nav-tabs mt-3"
>
<span>
Show {{((modal.currentPage-1) * 10)+1}} to {{employeeModalListFilter().length
<10
?
employeeModalListFilter
().
length:
(
modal
.
currentPage=
=modal.page.length
?
((
modal
.
currentPage
*
10
)
-
((
modal
.
currentPage
*
10
)
-
employeeModalListFilter
().
length
)
)
:
(
modal
.
currentPage
*
10
)
)
}}
of
{{
employeeModalListFilter
().
length
}}
items
</
span
>
</ul>
</nav>
</div>
<div
class=
"flex justify-end mt-2rem mb-1rem space-x-4"
>
<button
type=
"button"
class=
"hs-dropdown-toggle ti-btn ti-border font-medium bg-white text-gray-700 shadow-sm align-middle hover:bg-gray-50 focus:ring-offset-white focus:ring-primary dark:bg-bgdark dark:hover:bg-black/20 dark:border-white/10 dark:text-white/70 dark:hover:text-white dark:focus:ring-offset-white/10"
data-hs-overlay=
"#sub-employee-registration-modal"
>
ย้อนกลับ
</button>
</div>
</div>
</div>
</div>
</div>
<div
id=
"sub-employee-registration-pl-table-modal"
class=
"hs-overlay hidden ti-modal"
>
<div
class=
"hs-overlay-open:mt-7 ti-modal-box mt-0 ease-out lg:!max-w-4xl lg:w-full m-3 lg:!mx-auto"
>
<div
class=
"max-h-full overflow-hidden ti-modal-content"
>
...
...
src/app/components/company-components/employee-registration/sub-employee-registration/sub-employee-registration.component.ts
View file @
581dec38
...
...
@@ -17,6 +17,20 @@ import { PLService } from 'src/app/shared/services/pl.service';
import
{
PositionService
}
from
'src/app/shared/services/position.service'
;
import
{
BranchService
}
from
'src/app/shared/services/่branch.service'
;
import
{
JobCodeService
}
from
'src/app/shared/services/job-code.service'
;
import
{
Bu2Model
,
MyBu2Model
}
from
'src/app/shared/model/bu2.model'
;
import
{
Bu2Service
}
from
'src/app/shared/services/bu2.service'
;
import
{
Bu3Service
}
from
'src/app/shared/services/bu3.service'
;
import
{
Bu4Service
}
from
'src/app/shared/services/bu4.service'
;
import
{
Bu5Service
}
from
'src/app/shared/services/bu5.service'
;
import
{
Bu6Service
}
from
'src/app/shared/services/bu6.service'
;
import
{
Bu7Service
}
from
'src/app/shared/services/bu7.service'
;
import
{
Bu3Model
,
MyBu3Model
}
from
'src/app/shared/model/bu3.model'
;
import
{
Bu4Model
,
MyBu4Model
}
from
'src/app/shared/model/bu4.model'
;
import
{
Bu5Model
,
MyBu5Model
}
from
'src/app/shared/model/bu5.model'
;
import
{
Bu6Model
,
MyBu6Model
}
from
'src/app/shared/model/bu6.model'
;
import
{
Bu7Model
,
MyBu7Model
}
from
'src/app/shared/model/bu7.model'
;
import
{
EmpStatusService
}
from
'src/app/shared/services/emp-status.service'
;
import
{
StatusModel
,
MyStatusModel
}
from
'src/app/shared/model/status.model'
;
export
interface
DataEmployee
{
loading
:
boolean
select
:
EmployeeModel
|
any
...
...
@@ -58,21 +72,36 @@ export class SubEmployeeRegistrationComponent {
selectedFileName
:
string
=
'กรุณาเลือกไฟล์'
;
empGroup
:
{
loading
:
boolean
,
dataList
:
EmpGroupModel
[]
}
=
{
loading
:
false
,
dataList
:
[]
}
employeeModal
:
{
loading
:
boolean
,
dataList
:
EmployeeModel
[]
}
=
{
loading
:
false
,
dataList
:
[]
}
bu1
:
{
loading
:
boolean
,
dataList
:
Bu1Model
[]
}
=
{
loading
:
false
,
dataList
:
[]
}
bu2
:
{
loading
:
boolean
,
dataList
:
Bu2Model
[]
}
=
{
loading
:
false
,
dataList
:
[]
}
bu3
:
{
loading
:
boolean
,
dataList
:
Bu3Model
[]
}
=
{
loading
:
false
,
dataList
:
[]
}
bu4
:
{
loading
:
boolean
,
dataList
:
Bu4Model
[]
}
=
{
loading
:
false
,
dataList
:
[]
}
bu5
:
{
loading
:
boolean
,
dataList
:
Bu5Model
[]
}
=
{
loading
:
false
,
dataList
:
[]
}
bu6
:
{
loading
:
boolean
,
dataList
:
Bu6Model
[]
}
=
{
loading
:
false
,
dataList
:
[]
}
bu7
:
{
loading
:
boolean
,
dataList
:
Bu7Model
[]
}
=
{
loading
:
false
,
dataList
:
[]
}
position
:
{
loading
:
boolean
,
dataList
:
PositionModel
[]
}
=
{
loading
:
false
,
dataList
:
[]
}
jobcode
:
{
loading
:
boolean
,
dataList
:
JobCodeModel
[]
}
=
{
loading
:
false
,
dataList
:
[]
}
branch
:
{
loading
:
boolean
,
dataList
:
BranchModel
[]
}
=
{
loading
:
false
,
dataList
:
[]
}
empType
:
{
loading
:
boolean
,
dataList
:
EmpTypeModel
[]
}
=
{
loading
:
false
,
dataList
:
[]
}
pl
:
{
loading
:
boolean
,
dataList
:
PLModel
[]
}
=
{
loading
:
false
,
dataList
:
[]
}
empStatus
:
{
loading
:
boolean
,
dataList
:
StatusModel
[]
}
=
{
loading
:
false
,
dataList
:
[]
}
constructor
(
private
toastr
:
ToastrService
,
private
employeeService
:
EmployeeService
,
private
cdr
:
ChangeDetectorRef
,
private
empGroupService
:
EmpGroupService
,
private
bu1Service
:
Bu1Service
,
private
bu2Service
:
Bu2Service
,
private
bu3Service
:
Bu3Service
,
private
bu4Service
:
Bu4Service
,
private
bu5Service
:
Bu5Service
,
private
bu6Service
:
Bu6Service
,
private
bu7Service
:
Bu7Service
,
private
positionService
:
PositionService
,
private
jobcodeService
:
JobCodeService
,
private
branchService
:
BranchService
,
private
empTypeService
:
EmpTypeService
,
private
empStatusService
:
EmpStatusService
,
private
fileService
:
FileService
,
private
pLService
:
PLService
)
{
}
...
...
@@ -80,11 +109,18 @@ export class SubEmployeeRegistrationComponent {
this
.
getEmployeeList
()
this
.
getEmpGroupList
()
this
.
getBu1List
()
this
.
getBu2List
()
this
.
getBu3List
()
this
.
getBu4List
()
this
.
getBu5List
()
this
.
getBu6List
()
this
.
getBu7List
()
this
.
getPositionList
()
this
.
getJobcodeList
()
this
.
getBranchList
()
this
.
getEmpTypeList
()
this
.
getPlList
()
this
.
getEmpStatusList
()
}
onFileSelected
(
event
:
any
)
{
this
.
selectedFile
=
event
.
target
.
files
.
length
>
0
?
event
.
target
.
files
[
0
]
:
null
;
...
...
@@ -133,6 +169,19 @@ export class SubEmployeeRegistrationComponent {
})
}
getEmpStatusList
()
{
this
.
empStatus
.
loading
=
false
this
.
empStatusService
.
getList
().
subscribe
({
next
:
response
=>
{
this
.
empStatus
.
dataList
=
response
.
map
((
x
:
any
)
=>
new
MyStatusModel
(
x
))
this
.
empStatus
.
loading
=
false
this
.
cdr
.
detectChanges
()
},
error
:
error
=>
{
this
.
empStatus
.
loading
=
false
this
.
cdr
.
detectChanges
()
}
})
}
getPlList
()
{
this
.
pl
.
loading
=
false
this
.
pLService
.
getList
().
subscribe
({
...
...
@@ -148,9 +197,9 @@ export class SubEmployeeRegistrationComponent {
})
}
plListFilter
()
{
return
this
.
pl
.
dataList
.
filter
(
x
=>
x
.
plId
.
toLowerCase
().
includes
(
this
.
search
.
toLowerCase
())
||
x
.
tdesc
.
toLowerCase
().
includes
(
this
.
search
.
toLowerCase
())
||
x
.
edesc
.
toLowerCase
().
includes
(
this
.
search
.
toLowerCase
()))
return
this
.
pl
.
dataList
.
filter
(
x
=>
x
.
plId
.
toLowerCase
().
includes
(
this
.
modal
.
search
.
toLowerCase
())
||
x
.
tdesc
.
toLowerCase
().
includes
(
this
.
modal
.
search
.
toLowerCase
())
||
x
.
edesc
.
toLowerCase
().
includes
(
this
.
modal
.
search
.
toLowerCase
()))
}
getEmpTypeList
()
{
...
...
@@ -168,9 +217,9 @@ export class SubEmployeeRegistrationComponent {
})
}
empTypeListFilter
()
{
return
this
.
empType
.
dataList
.
filter
(
x
=>
x
.
codeId
.
toLowerCase
().
includes
(
this
.
search
.
toLowerCase
())
||
x
.
tdesc
.
toLowerCase
().
includes
(
this
.
search
.
toLowerCase
())
||
x
.
edesc
.
toLowerCase
().
includes
(
this
.
search
.
toLowerCase
()))
return
this
.
empType
.
dataList
.
filter
(
x
=>
x
.
codeId
.
toLowerCase
().
includes
(
this
.
modal
.
search
.
toLowerCase
())
||
x
.
tdesc
.
toLowerCase
().
includes
(
this
.
modal
.
search
.
toLowerCase
())
||
x
.
edesc
.
toLowerCase
().
includes
(
this
.
modal
.
search
.
toLowerCase
()))
}
getBranchList
()
{
...
...
@@ -188,9 +237,9 @@ export class SubEmployeeRegistrationComponent {
})
}
branchListFilter
()
{
return
this
.
branch
.
dataList
.
filter
(
x
=>
x
.
branchId
.
toLowerCase
().
includes
(
this
.
search
.
toLowerCase
())
||
x
.
tdesc
.
toLowerCase
().
includes
(
this
.
search
.
toLowerCase
())
||
x
.
edesc
.
toLowerCase
().
includes
(
this
.
search
.
toLowerCase
()))
return
this
.
branch
.
dataList
.
filter
(
x
=>
x
.
branchId
.
toLowerCase
().
includes
(
this
.
modal
.
search
.
toLowerCase
())
||
x
.
tdesc
.
toLowerCase
().
includes
(
this
.
modal
.
search
.
toLowerCase
())
||
x
.
edesc
.
toLowerCase
().
includes
(
this
.
modal
.
search
.
toLowerCase
()))
}
getJobcodeList
()
{
...
...
@@ -208,9 +257,9 @@ export class SubEmployeeRegistrationComponent {
})
}
jobcodeListFilter
()
{
return
this
.
jobcode
.
dataList
.
filter
(
x
=>
x
.
jobcodeId
.
toLowerCase
().
includes
(
this
.
search
.
toLowerCase
())
||
x
.
tdesc
.
toLowerCase
().
includes
(
this
.
search
.
toLowerCase
())
||
x
.
edesc
.
toLowerCase
().
includes
(
this
.
search
.
toLowerCase
()))
return
this
.
jobcode
.
dataList
.
filter
(
x
=>
x
.
jobcodeId
.
toLowerCase
().
includes
(
this
.
modal
.
search
.
toLowerCase
())
||
x
.
tdesc
.
toLowerCase
().
includes
(
this
.
modal
.
search
.
toLowerCase
())
||
x
.
edesc
.
toLowerCase
().
includes
(
this
.
modal
.
search
.
toLowerCase
()))
}
getPositionList
()
{
...
...
@@ -228,9 +277,9 @@ export class SubEmployeeRegistrationComponent {
})
}
positionListFilter
()
{
return
this
.
position
.
dataList
.
filter
(
x
=>
x
.
positionId
.
toLowerCase
().
includes
(
this
.
search
.
toLowerCase
())
||
x
.
tdesc
.
toLowerCase
().
includes
(
this
.
search
.
toLowerCase
())
||
x
.
edesc
.
toLowerCase
().
includes
(
this
.
search
.
toLowerCase
()))
return
this
.
position
.
dataList
.
filter
(
x
=>
x
.
positionId
.
toLowerCase
().
includes
(
this
.
modal
.
search
.
toLowerCase
())
||
x
.
tdesc
.
toLowerCase
().
includes
(
this
.
modal
.
search
.
toLowerCase
())
||
x
.
edesc
.
toLowerCase
().
includes
(
this
.
modal
.
search
.
toLowerCase
()))
}
getBu1List
()
{
...
...
@@ -248,11 +297,130 @@ export class SubEmployeeRegistrationComponent {
})
}
bu1ListFilter
()
{
return
this
.
bu1
.
dataList
.
filter
(
x
=>
x
.
bu1id
.
toLowerCase
().
includes
(
this
.
search
.
toLowerCase
())
||
x
.
tdesc
.
toLowerCase
().
includes
(
this
.
search
.
toLowerCase
())
||
x
.
edesc
.
toLowerCase
().
includes
(
this
.
search
.
toLowerCase
()))
return
this
.
bu1
.
dataList
.
filter
(
x
=>
x
.
bu1id
.
toLowerCase
().
includes
(
this
.
modal
.
search
.
toLowerCase
())
||
x
.
tdesc
.
toLowerCase
().
includes
(
this
.
modal
.
search
.
toLowerCase
())
||
x
.
edesc
.
toLowerCase
().
includes
(
this
.
modal
.
search
.
toLowerCase
()))
}
getBu2List
()
{
this
.
bu2
.
loading
=
false
this
.
bu2Service
.
getList
().
subscribe
({
next
:
response
=>
{
this
.
bu2
.
dataList
=
response
.
map
((
x
:
any
)
=>
new
MyBu2Model
(
x
))
this
.
bu2
.
loading
=
false
this
.
searchChange
()
this
.
cdr
.
detectChanges
()
},
error
:
error
=>
{
this
.
bu2
.
loading
=
false
this
.
cdr
.
detectChanges
()
}
})
}
bu2ListFilter
()
{
return
this
.
bu2
.
dataList
.
filter
(
x
=>
x
.
bu2id
.
toLowerCase
().
includes
(
this
.
modal
.
search
.
toLowerCase
())
||
x
.
tdesc
.
toLowerCase
().
includes
(
this
.
modal
.
search
.
toLowerCase
())
||
x
.
edesc
.
toLowerCase
().
includes
(
this
.
modal
.
search
.
toLowerCase
()))
}
getBu3List
()
{
this
.
bu3
.
loading
=
false
this
.
bu3Service
.
getList
().
subscribe
({
next
:
response
=>
{
this
.
bu3
.
dataList
=
response
.
map
((
x
:
any
)
=>
new
MyBu3Model
(
x
))
this
.
bu3
.
loading
=
false
this
.
searchChange
()
this
.
cdr
.
detectChanges
()
},
error
:
error
=>
{
this
.
bu3
.
loading
=
false
this
.
cdr
.
detectChanges
()
}
})
}
bu3ListFilter
()
{
return
this
.
bu3
.
dataList
.
filter
(
x
=>
x
.
bu3id
.
toLowerCase
().
includes
(
this
.
modal
.
search
.
toLowerCase
())
||
x
.
tdesc
.
toLowerCase
().
includes
(
this
.
modal
.
search
.
toLowerCase
())
||
x
.
edesc
.
toLowerCase
().
includes
(
this
.
modal
.
search
.
toLowerCase
()))
}
getBu4List
()
{
this
.
bu4
.
loading
=
false
this
.
bu4Service
.
getList
().
subscribe
({
next
:
response
=>
{
this
.
bu4
.
dataList
=
response
.
map
((
x
:
any
)
=>
new
MyBu4Model
(
x
))
this
.
bu4
.
loading
=
false
this
.
searchChange
()
this
.
cdr
.
detectChanges
()
},
error
:
error
=>
{
this
.
bu4
.
loading
=
false
this
.
cdr
.
detectChanges
()
}
})
}
bu4ListFilter
()
{
return
this
.
bu4
.
dataList
.
filter
(
x
=>
x
.
bu4id
.
toLowerCase
().
includes
(
this
.
modal
.
search
.
toLowerCase
())
||
x
.
tdesc
.
toLowerCase
().
includes
(
this
.
modal
.
search
.
toLowerCase
())
||
x
.
edesc
.
toLowerCase
().
includes
(
this
.
modal
.
search
.
toLowerCase
()))
}
getBu5List
()
{
this
.
bu5
.
loading
=
false
this
.
bu5Service
.
getList
().
subscribe
({
next
:
response
=>
{
this
.
bu5
.
dataList
=
response
.
map
((
x
:
any
)
=>
new
MyBu5Model
(
x
))
this
.
bu5
.
loading
=
false
this
.
searchChange
()
this
.
cdr
.
detectChanges
()
},
error
:
error
=>
{
this
.
bu5
.
loading
=
false
this
.
cdr
.
detectChanges
()
}
})
}
bu5ListFilter
()
{
return
this
.
bu5
.
dataList
.
filter
(
x
=>
x
.
bu5id
.
toLowerCase
().
includes
(
this
.
modal
.
search
.
toLowerCase
())
||
x
.
tdesc
.
toLowerCase
().
includes
(
this
.
modal
.
search
.
toLowerCase
())
||
x
.
edesc
.
toLowerCase
().
includes
(
this
.
modal
.
search
.
toLowerCase
()))
}
getBu6List
()
{
this
.
bu6
.
loading
=
false
this
.
bu6Service
.
getList
().
subscribe
({
next
:
response
=>
{
this
.
bu6
.
dataList
=
response
.
map
((
x
:
any
)
=>
new
MyBu6Model
(
x
))
this
.
bu6
.
loading
=
false
this
.
searchChange
()
this
.
cdr
.
detectChanges
()
},
error
:
error
=>
{
this
.
bu6
.
loading
=
false
this
.
cdr
.
detectChanges
()
}
})
}
bu6ListFilter
()
{
return
this
.
bu6
.
dataList
.
filter
(
x
=>
x
.
bu6id
.
toLowerCase
().
includes
(
this
.
modal
.
search
.
toLowerCase
())
||
x
.
tdesc
.
toLowerCase
().
includes
(
this
.
modal
.
search
.
toLowerCase
())
||
x
.
edesc
.
toLowerCase
().
includes
(
this
.
modal
.
search
.
toLowerCase
()))
}
getBu7List
()
{
this
.
bu7
.
loading
=
false
this
.
bu7Service
.
getList
().
subscribe
({
next
:
response
=>
{
this
.
bu7
.
dataList
=
response
.
map
((
x
:
any
)
=>
new
MyBu7Model
(
x
))
this
.
bu7
.
loading
=
false
this
.
searchChange
()
this
.
cdr
.
detectChanges
()
},
error
:
error
=>
{
this
.
bu7
.
loading
=
false
this
.
cdr
.
detectChanges
()
}
})
}
bu7ListFilter
()
{
return
this
.
bu7
.
dataList
.
filter
(
x
=>
x
.
bu7id
.
toLowerCase
().
includes
(
this
.
modal
.
search
.
toLowerCase
())
||
x
.
tdesc
.
toLowerCase
().
includes
(
this
.
modal
.
search
.
toLowerCase
())
||
x
.
edesc
.
toLowerCase
().
includes
(
this
.
modal
.
search
.
toLowerCase
()))
}
getEmpGroupList
()
{
this
.
empGroup
.
loading
=
false
...
...
@@ -269,9 +437,9 @@ export class SubEmployeeRegistrationComponent {
})
}
empGroupListFilter
()
{
return
this
.
empGroup
.
dataList
.
filter
(
x
=>
x
.
groupId
.
toLowerCase
().
includes
(
this
.
search
.
toLowerCase
())
||
x
.
tdesc
.
toLowerCase
().
includes
(
this
.
search
.
toLowerCase
())
||
x
.
edesc
.
toLowerCase
().
includes
(
this
.
search
.
toLowerCase
()))
return
this
.
empGroup
.
dataList
.
filter
(
x
=>
x
.
groupId
.
toLowerCase
().
includes
(
this
.
modal
.
search
.
toLowerCase
())
||
x
.
tdesc
.
toLowerCase
().
includes
(
this
.
modal
.
search
.
toLowerCase
())
||
x
.
edesc
.
toLowerCase
().
includes
(
this
.
modal
.
search
.
toLowerCase
()))
}
...
...
@@ -280,6 +448,7 @@ export class SubEmployeeRegistrationComponent {
this
.
employeeService
.
getList
().
subscribe
({
next
:
response
=>
{
this
.
employee
.
dataList
=
response
.
map
((
x
:
any
)
=>
({
check
:
false
,
data
:
new
MyEmployeeModel
(
x
)
}))
this
.
employeeModal
.
dataList
=
response
.
map
((
x
:
any
)
=>
new
MyEmployeeModel
(
x
)).
filter
(
x
=>
x
.
employeeId
!=
this
.
decodeJWT
(
sessionStorage
.
getItem
(
"accessToken"
)
||
''
).
employeeid
)
this
.
employee
.
loading
=
false
this
.
isDataListCheckedAll
=
false
this
.
dataListCheckAll
()
...
...
@@ -291,6 +460,15 @@ export class SubEmployeeRegistrationComponent {
}
})
}
employeeModalListFilter
()
{
return
this
.
employeeModal
.
dataList
.
filter
(
x
=>
x
.
employeeId
.
toLowerCase
().
includes
(
this
.
modal
.
search
.
toLowerCase
())
||
x
.
fname
.
toLowerCase
().
includes
(
this
.
search
.
toLowerCase
())
||
x
.
lname
.
toLowerCase
().
includes
(
this
.
search
.
toLowerCase
())
||
x
.
position
.
tdesc
.
toLowerCase
().
includes
(
this
.
modal
.
search
.
toLowerCase
())
||
x
.
jobCode
.
tdesc
.
toLowerCase
().
includes
(
this
.
modal
.
search
.
toLowerCase
()))
}
updateEmployeeList
(
type
:
'add'
|
'update'
|
'delete'
|
'deleteGroup'
)
{
let
body
=
this
.
employee
.
select
switch
(
type
)
{
...
...
@@ -336,7 +514,15 @@ export class SubEmployeeRegistrationComponent {
x
.
data
.
jobCode
.
tdesc
.
toLowerCase
().
includes
(
this
.
search
.
toLowerCase
()))
}
selectEmployee
(
data
?:
EmployeeModel
)
{
this
.
employee
.
select
=
{
...
new
MyEmployeeModel
(
data
||
{}),
dateIso
:
this
.
toISODate
(
data
?.
firstHireDate
)
}
if
(
this
.
modalType
==
'update'
&&
!
data
)
{
this
.
employee
.
select
=
{
...
new
MyEmployeeModel
({
employeeId
:
this
.
employee
.
select
.
employeeId
}),
dateIso
:
''
,
dateEndIso
:
''
}
this
.
employee
.
select
.
status
=
new
MyStatusModel
(
this
.
empStatus
.
dataList
[
0
])
}
else
{
this
.
employee
.
select
=
{
...
new
MyEmployeeModel
(
data
||
{}),
dateIso
:
this
.
toISODate
(
data
?.
firstHireDate
),
dateEndIso
:
this
.
toISODate
(
data
?.
resigndate
)
}
if
(
!
this
.
employee
.
select
.
status
.
statusCode
)
{
this
.
employee
.
select
.
status
=
new
MyStatusModel
(
this
.
empStatus
.
dataList
[
0
])
}
}
}
changeDate
(
target
:
{
[
key
:
string
]:
any
},
field
:
string
,
dateIso
:
string
)
{
target
[
field
]
=
this
.
toYYYYMMDD
(
dateIso
)
...
...
@@ -398,6 +584,10 @@ export class SubEmployeeRegistrationComponent {
!
this
.
employee
.
select
.
empGroup
.
groupId
||
!
this
.
employee
.
select
.
firstHireDate
||
!
this
.
employee
.
select
.
bu1
.
bu1id
||
!
this
.
employee
.
select
.
bu2
.
bu2id
||
!
this
.
employee
.
select
.
bu3
.
bu3id
||
!
this
.
employee
.
select
.
bu4
.
bu4id
||
!
this
.
employee
.
select
.
bu5
.
bu5id
||
!
this
.
employee
.
select
.
position
.
positionId
||
!
this
.
employee
.
select
.
jobCode
.
jobcodeId
||
!
this
.
employee
.
select
.
branch
.
branchId
||
...
...
@@ -409,4 +599,13 @@ export class SubEmployeeRegistrationComponent {
return
disable
}
decodeJWT
(
token
:
string
)
{
let
base64Url
=
token
.
split
(
'.'
)[
1
];
// ดึงส่วนที่เป็น Payload
let
base64
=
base64Url
.
replace
(
'-'
,
'+'
).
replace
(
'_'
,
'/'
);
// แก้ไข base64 ให้ถูกต้อง
let
jsonPayload
=
decodeURIComponent
(
atob
(
base64
).
split
(
''
).
map
(
function
(
c
)
{
return
'%'
+
(
'00'
+
c
.
charCodeAt
(
0
).
toString
(
16
)).
slice
(
-
2
);
}).
join
(
''
));
return
JSON
.
parse
(
jsonPayload
);
}
}
src/app/components/company-components/job-description/employee-categories/employee-categories.component.html
View file @
581dec38
...
...
@@ -205,12 +205,12 @@
Clear
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
<div
class=
"ti-modal-body"
style=
"margin-top: 40px;"
>
...
...
src/app/components/company-components/job-description/employee-group-unit/employee-group-unit.component.html
View file @
581dec38
...
...
@@ -203,12 +203,12 @@
Clear
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
<div
class=
"ti-modal-body "
>
...
...
src/app/components/company-components/job-description/employee-level/employee-level.component.html
View file @
581dec38
...
...
@@ -201,12 +201,12 @@
Clear
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
<div
class=
"ti-modal-body"
style=
"margin-top: 40px;"
>
...
...
src/app/components/company-components/job-description/position/position-unit.component.html
View file @
581dec38
...
...
@@ -203,12 +203,12 @@
Clear
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
<div
class=
"ti-modal-body "
>
...
...
src/app/components/competency-assessment/competency-management/group-competencies/edit-group-competencies/edit-group-competencies.component.html
View file @
581dec38
...
...
@@ -247,12 +247,12 @@
</div>
</div>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
<div
class=
"overflow-auto table-bordered"
style=
"border-radius: 5px;"
>
<div
class=
"overflow-auto border"
>
...
...
src/app/components/competency-assessment/competency-management/group-competencies/group-competencies.component.html
View file @
581dec38
...
...
@@ -21,12 +21,12 @@
import
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
...
...
src/app/components/competency-assessment/competency-management/set-approvers/set-approvers.component.html
View file @
581dec38
...
...
@@ -158,12 +158,12 @@
Clear
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
<div
class=
"ti-modal-body mt-1"
>
...
...
@@ -326,12 +326,12 @@
</div>
</div>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
<div
class=
"overflow-auto table-bordered"
style=
"border-radius: 5px;"
>
<div
class=
"overflow-auto border"
>
...
...
src/app/components/competency-assessment/course-registration/development-course/development-course.component.html
View file @
581dec38
...
...
@@ -236,12 +236,12 @@
Clear
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
<div
class=
"ti-modal-body mt-1"
>
...
...
src/app/components/competency-assessment/evaluation-cycle-manager/define-document-form/define-document-form.component.html
View file @
581dec38
...
...
@@ -15,12 +15,12 @@
</div>
</div>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
</div>
...
...
@@ -183,12 +183,12 @@
Clear
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
<div
class=
"ti-modal-body padding-16px pt-0 overflow-y-0"
>
...
...
src/app/components/competency-assessment/evaluation-cycle-manager/evaluation-cycle/evaluation-cycle.component.html
View file @
581dec38
...
...
@@ -242,12 +242,12 @@
Clear
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
<div
class=
"ti-modal-body padding-16px pt-0 overflow-y-0"
>
...
...
src/app/components/competency-assessment/grade-registration/grade-management/sub-grade-registration/sub-grade-registration.component.html
View file @
581dec38
...
...
@@ -174,12 +174,12 @@
Clear
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
<div
class=
"ti-modal-body"
>
...
...
src/app/components/competency-assessment/name-registration/competency-topic/competency-topic.component.html
View file @
581dec38
...
...
@@ -196,12 +196,12 @@
Clear
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
<div
class=
"ti-modal-body mt-1"
>
...
...
@@ -309,12 +309,12 @@
</div>
</div>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
<div
class=
"overflow-auto table-bordered"
style=
"border-radius: 5px;"
>
<div
class=
"overflow-auto border"
>
...
...
@@ -449,12 +449,12 @@
</div>
</div>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
<div
class=
"overflow-auto table-bordered"
style=
"border-radius: 5px;"
>
<div
class=
"overflow-auto border"
>
...
...
src/app/components/competency-assessment/name-registration/type-registration/type-registration.component.html
View file @
581dec38
...
...
@@ -196,12 +196,12 @@
Clear
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
<div
class=
"ti-modal-body"
style=
"padding-top: 0px;"
>
...
...
src/app/components/competency-assessment/tool-register/assessment-tool/assessment-tool.component.html
View file @
581dec38
...
...
@@ -236,12 +236,12 @@
Clear
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
<div
class=
"ti-modal-body"
style=
"padding-top: 0px;"
>
...
...
src/app/components/dashboard/dashboard.module.ts
View file @
581dec38
...
...
@@ -157,6 +157,8 @@ import { PmsEvaluationCycleService } from 'src/app/shared/services/pms-evaluatio
import
{
PmsEvaluationAssessmentService
}
from
'src/app/shared/services/pms-evaluation-assessment.service'
;
import
{
TimeAttendanceComponent
}
from
'../performance-management-evaluation/time-attendance/time-attendance.component'
;
import
{
PmsWorkingTimeService
}
from
'src/app/shared/services/pms-working-time.service'
;
import
{
EvaluationIdpService
}
from
'src/app/shared/services/evaluation-Idp.service'
;
import
{
EmpStatusService
}
from
'src/app/shared/services/emp-status.service'
;
export
const
MY_DATE_FORMATS
=
{
parse
:
{
...
...
@@ -344,6 +346,8 @@ export class CustomDateAdapter extends NativeDateAdapter {
PmsEvaluationCycleService
,
PmsEvaluationAssessmentService
,
PmsWorkingTimeService
,
EvaluationIdpService
,
EmpStatusService
,
{
provide
:
HTTP_INTERCEPTORS
,
useClass
:
HttpRequestInterceptor
,
...
...
src/app/components/job-detail-components/command-structure/sub-command-structure/sub-command-structure.component.html
View file @
581dec38
...
...
@@ -34,12 +34,12 @@
Delete
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
</div>
...
...
src/app/components/job-detail-components/job-competency/sub-job-competency/sub-job-competency.component.html
View file @
581dec38
...
...
@@ -33,12 +33,12 @@
Delete
</button>
</div> -->
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
</div>
...
...
src/app/components/job-detail-components/job-detail-management/import-data/import-data.component.html
View file @
581dec38
...
...
@@ -40,12 +40,12 @@
Delete
</button>
</div> -->
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
</div>
...
...
src/app/components/job-detail-components/job-detail/work-detail/work-detail.component.html
View file @
581dec38
...
...
@@ -33,12 +33,12 @@
Delete
</button>
</div> -->
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
</div>
...
...
src/app/components/job-detail-components/job-position-indicators/sub-job-position-indicators/sub-job-position-indicators.component.html
View file @
581dec38
...
...
@@ -33,12 +33,12 @@
Delete
</button>
</div> -->
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
</div>
...
...
src/app/components/job-detail-components/job-qualifications/sub-job-qualifications/sub-job-qualifications.component.html
View file @
581dec38
...
...
@@ -33,12 +33,12 @@
Delete
</button>
</div> -->
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
</div>
...
...
src/app/components/performance-evaluation/evaluation/evaluation.component.html
View file @
581dec38
<app-page-header
[
pathTitle
]="
pathTitle
"
></app-page-header>
<div
class=
"bg-card-white"
>
</div>
<div
class=
"block-main-content"
*
ngIf=
"appraisalCompentency.data"
>
<div
class=
"block-main-content"
>
<div
class=
"pb-2rem px-2rem pt-1.5rem w-full min-height-50px justify-between items-center"
>
<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"
...
...
@@ -14,6 +14,7 @@
</div>
</div>
</div>
<ng-container
*
ngIf=
"appraisalCompentency.data"
>
<div
class=
"pb-2rem px-2rem"
>
<div
class=
"font-size-18px font-weight-700 text-primary"
>
แบบประเมินสมรรถนะพนักงาน {{currentDate.getFullYear()}}
...
...
@@ -394,4 +395,5 @@
บันทึกข้อมูล
</button>
</div>
</ng-container>
</div>
\ No newline at end of file
src/app/components/performance-evaluation/idp-evaluation/idp-evalution.component.html
View file @
581dec38
...
...
@@ -10,7 +10,7 @@
<div
class=
"pb-2rem px-2rem pt-1.5rem w-full min-height-50px justify-between items-center"
>
<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"
(
click
)="
returnPa
ge
()"
>
(
click
)="
returnPa
th
()"
>
<i
class=
"ti ti-chevron-left"
></i>
ย้อนกลับ
</button>
...
...
@@ -19,6 +19,7 @@
</div>
</div>
</div>
<ng-container
*
ngIf=
"formIdp.data"
>
<div
class=
"pb-2rem px-2rem"
>
<div
class=
"font-size-18px font-weight-700 text-primary"
>
แผนพัฒนาบุคคลากรรายบุคคล
...
...
@@ -30,63 +31,73 @@
</div>
</div>
<div
class=
"pb-2rem px-2rem"
>
<div
class=
"grid grid-cols-6
"
>
<div
class=
"col-span-3
grid grid-cols-6"
>
<div
class=
"col-span-6
border p-2 pb-4"
>
<div
class=
"grid grid-cols-6
"
>
<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
class=
"col-span-6 grid grid-cols-6"
>
<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-2
p-2 border pb-4"
>
<span>
น.ส.พิมพร อูรณาการ
</span>
<div
class=
"col-span-1
p-2 border pb-4"
>
<span>
{{formIdp.data.apsassessy.thFullName || ""}}
</span>
</div>
<div
class=
"col-span-1 p-2 border pb-4"
>
<span>
ตำแหน่ง
</span>
</div>
<div
class=
"col-span-2 p-2 border pb-4"
>
<span>
Human Resource Development Officer S3
</span>
<div
class=
"col-span-1 p-2 border pb-4"
>
<span>
{{formIdp.data.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>
<span>
ชื่อ-สกุล
</span>
</div>
<div
class=
"col-span-2
p-2 border pb-4"
>
<span>
</span>
<div
class=
"col-span-1
p-2 border pb-4"
>
<span>
{{formIdp.data.boss.thFullName || ""}}
</span>
</div>
<div
class=
"col-span-1 p-2 border pb-4"
>
<span>
ฝ่าย
</span>
<span>
ตำแหน่ง
</span>
</div>
<div
class=
"col-span-2
p-2 border pb-4"
>
<span>
</span>
<div
class=
"col-span-1
p-2 border pb-4"
>
<span>
{{formIdp.data.boss.position.tdesc || ""}}
</span>
</div>
</div>
<div
class=
"col-span-3 grid grid-cols-6"
>
<div
class=
"col-span-6 border p-2 pb-4"
>
<span>
ผู้ใต้บังคับบัญชา
</span>
</div>
<div
class=
"col-span-6 grid grid-cols-6"
>
<div
class=
"col-span-3 grid grid-cols-4"
>
<div
class=
"col-span-1 p-2 border pb-4"
>
<span>
ชื่อ-สกุล
</span>
<span>
งาน
</span>
</div>
<div
class=
"col-span-2
p-2 border pb-4"
>
<span>
น.ส. นดี แป้นศรี
</span>
<div
class=
"col-span-1
p-2 border pb-4"
>
<span>
{{formIdp.data.apsassessy.job.tdesc || ""}}
</span>
</div>
<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>
{{formIdp.data.apsassessy.bu1.tdesc || ""}}
</span>
</div>
<div
class=
"col-span-2 p-2 border pb-4"
>
<span>
HRM Senior Section Manager
</span>
</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-2
p-2 border pb-4"
>
<span>
</span>
<div
class=
"col-span-1
p-2 border pb-4"
>
<span>
{{formIdp.data.boss.job.tdesc || ""}}
</span>
</div>
<div
class=
"col-span-1 p-2 border pb-4"
>
<span>
ฝ่าย
</span>
</div>
<div
class=
"col-span-2 p-2 border pb-4"
>
<span></span>
<div
class=
"col-span-1 p-2 border pb-4"
>
<span>
{{formIdp.data.boss.bu1.tdesc || ""}}
</span>
</div>
</div>
</div>
</div>
...
...
@@ -121,7 +132,8 @@
class=
"relative px-10px py-10px bg-soft-secondary text-primary !text-center"
>
<span
class=
"font-size-12px font-weight-700 "
>
เครื่องมือพัฒนา
</span>
</th>
<th
scope=
"col"
rowspan=
"3"
class=
"relative bg-soft-secondary text-primary !text-center !p-0"
>
<th
scope=
"col"
rowspan=
"3"
class=
"relative bg-soft-secondary text-primary !text-center !p-0"
>
<div
class=
"absolute top-1/2 transform -translate-y-1/2 right-0"
>
<i
class=
"ti ti-dots-vertical fs-l"
></i>
</div>
...
...
@@ -130,7 +142,8 @@
class=
"relative px-10px py-10px bg-soft-secondary text-primary !text-center"
>
<span
class=
"font-size-12px font-weight-700 "
>
หลักสูตรพัฒนาตาม CDR
</span>
</th>
<th
scope=
"col"
rowspan=
"3"
class=
"relative bg-soft-secondary text-primary !text-center !p-0"
>
<th
scope=
"col"
rowspan=
"3"
class=
"relative bg-soft-secondary text-primary !text-center !p-0"
>
<div
class=
"absolute top-1/2 transform -translate-y-1/2 right-0"
>
<i
class=
"ti ti-dots-vertical fs-l"
></i>
</div>
...
...
@@ -141,132 +154,115 @@
</th>
</tr>
<tr
class=
"font-size-12px"
>
<th
scope=
"col"
class=
"relative px-10px py-10px bg-soft-secondary text-primary !text-center"
>
<th
scope=
"col"
class=
"relative px-10px py-10px bg-soft-secondary text-primary !text-center"
>
70
</th>
<th
scope=
"col"
class=
"relative px-10px py-10px bg-soft-secondary text-primary !text-center"
>
<th
scope=
"col"
class=
"relative px-10px py-10px bg-soft-secondary text-primary !text-center"
>
20
</th>
<th
scope=
"col"
class=
"relative px-10px py-10px bg-soft-secondary text-primary !text-center"
>
<th
scope=
"col"
class=
"relative px-10px py-10px bg-soft-secondary text-primary !text-center"
>
10
</th>
</tr>
<tr
class=
"font-size-12px"
>
<th
scope=
"col"
class=
"relative px-10px py-10px bg-soft-secondary text-primary !text-center"
>
<th
scope=
"col"
class=
"relative px-10px py-10px bg-soft-secondary text-primary !text-center"
>
OJT/Job Assignment
</th>
<th
scope=
"col"
class=
"relative px-10px py-10px bg-soft-secondary text-primary !text-center"
>
<th
scope=
"col"
class=
"relative px-10px py-10px bg-soft-secondary text-primary !text-center"
>
Coach/Mentor
</th>
<th
scope=
"col"
class=
"relative px-10px py-10px bg-soft-secondary text-primary !text-center"
>
<th
scope=
"col"
class=
"relative px-10px py-10px bg-soft-secondary text-primary !text-center"
>
Training
</th>
<th
scope=
"col"
class=
"relative px-10px py-10px bg-soft-secondary text-primary !text-center"
>
<th
scope=
"col"
class=
"relative px-10px py-10px bg-soft-secondary text-primary !text-center"
>
รหัส
</th>
<th
scope=
"col"
class=
"relative px-10px py-10px bg-soft-secondary text-primary !text-center"
>
<th
scope=
"col"
class=
"relative px-10px py-10px bg-soft-secondary text-primary !text-center"
>
ชื่อหลักสูตร
</th>
</tr>
</thead>
<tbody
*
ngIf=
"!dataListFilter()
.length"
>
<tbody
*
ngIf=
"!formIdp.data.competencyIndicatorsCourses1
.length"
>
<tr
class=
"hover:table-hover2-hover"
>
<td
class=
"text-center"
colspan=
"100%"
>
ไม่พบข้อมูล
</td>
</tr>
</tbody>
<tbody
*
ngIf=
"dataListFilter().length"
>
<ng-container
*
ngFor=
" let data of dataListFilter();let i = index"
>
<tr
*
ngIf=
"!data.bis.length"
(
mouseenter
)="
hoveredCode =
data.code"
(
mouseleave
)="
hoveredCode =
null"
[
ngClass
]="{
'
table-hover2
'
:
data
.
code =
==
hoveredCode
}"
>
<tbody
*
ngIf=
"formIdp.data.competencyIndicatorsCourses1.length"
>
<ng-container
*
ngFor=
" let data of formIdp.data.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.code
}}
{{i+1}}. {{data.indicatorsCourses0.competencyTopic.competencyTopicId
}}
</td>
<td
class=
"align-start bg-table-gray"
></td>
<td
class=
"align-start bg-table-gray"
></td>
<td
class=
"align-start bg-table-gray"
></td>
<td
class=
"align-start bg-table-gray"
></td>
<td
class=
"!p-0"
></td>
<td
class=
"align-start bg-table-gray"
></td>
<td
class=
"align-start bg-table-gray"
></td>
<td
class=
"!p-0"
></td>
<td
class=
"align-start text-center !white-space-normal"
[
class
.
bg-table-gray
]="!
data
.
startDate
&&!
data
.
endDate
"
>
<ng-container
*
ngIf=
"data.startDate&&data.endDate"
>
จาก
</ng-container>
{{data.startDate}}
<ng-container
*
ngIf=
"data.startDate&&data.endDate"
>
ถึง
</ng-container>
{{data.endDate}}
</td>
</tr>
<tr
*
ngFor=
" let item of data.bis;let i2 = index;let f = first"
(
mouseenter
)="
hoveredCode =
data.code"
(
mouseleave
)="
hoveredCode =
null"
[
ngClass
]="{
'
table-hover2
'
:
data
.
code =
==
hoveredCode
,'
border-none
'
:
!
f
}"
>
<td
class=
"align-start"
>
<ng-container
*
ngIf=
"f"
>
{{i+1}}. {{data.code}}
<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 !white-space-normal"
[
class
.
bg-table-gray
]="
checkBg
(
data
.
bis
,'
oj
')"
>
{{i2+1}}. {{item.name}}
</td>
<td
class=
"align-start text-center"
[
class
.
bg-table-gray
]="
checkBg
(
data
.
bis
,'
oj
')"
>
<ng-container
*
ngIf=
"item.oj"
>
<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
]="
checkBg
(
data
.
bis
,'
cm
')"
>
<ng-container
*
ngIf=
"item.cm"
>
<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
]="
checkBg
(
data
.
bis
,'
t
')"
>
<ng-container
*
ngIf=
"item.t"
>
<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
]="
checkBg
(
data
.
bis
,'
cdr
.
code
')"
>
<ng-container
*
ngIf=
"item.cdr.code"
>
<td
class=
"!p-0"
></td>
<td
class=
"align-start text-center"
[
class
.
bg-table-gray
]="!
data
.
idpDevelopmentPlan
||!
data
.
competencyCourse
"
>
<ng-container
*
ngIf=
"data.idpDevelopmentPlan"
>
<div
class=
"mb-3"
*
ngFor=
"let competencyCourse of data.competencyCourse"
>
<i
class=
"ti ti-book fs-xxl !fw-b"
></i><br>
{{item.cdr.code}}
{{competencyCourse.competencyCourseId }}
</div>
</ng-container>
</td>
<td
class=
"align-start !white-space-normal"
[
class
.
bg-table-gray
]="
checkBg
(
data
.
bis
,'
cdr
.
name
')"
>
<ng-container
*
ngIf=
"item.cdr.name"
>
<div
class=
"grid grid-cols-6"
>
<div
class=
"col-span-1"
>
<input
type=
"checkbox"
class=
"ti-form-checkbox cursor-pointer"
[(
ngModel
)]="
item
.
cdr
.
check
"
>
</div>
<div
class=
"col-span-5"
>
{{item.cdr.name}}
</div>
<td
class=
"align-start text-center !white-space-normal"
[
class
.
bg-table-gray
]="!
data
.
idpDevelopmentPlan
||!
data
.
competencyCourse
"
>
<ng-container
*
ngIf=
"data.idpDevelopmentPlan"
>
<div
class=
"mb-3"
*
ngFor=
"let competencyCourse of data.competencyCourse"
>
{{competencyCourse.tdesc }}
</div>
</ng-container>
</td>
<td
class=
"!p-0"
>
</td>
<td
class=
"align-start !white-space-normal"
[
class
.
bg-table-gray
]="!
data
.
startDate
&&!
data
.
endDate
"
>
<ng-container
*
ngIf=
"data.startDate&&data.endDate
"
>
จาก
<br>
<td
class=
"!p-0"
></td
>
<td
class=
"align-start text-center !white-space-normal"
[
class
.
bg-table-gray
]="!
formIdp
.
data
.
masfromEvaluationRound
.
apsPeriodStart
&&!
formIdp
.
data
.
masfromEvaluationRound
.
apsPeriodEnd
"
>
<ng-container
*
ngIf=
"formIdp.data.masfromEvaluationRound.apsPeriodStart &&formIdp.data.masfromEvaluationRound.apsPeriodEnd
"
>
จาก
</ng-container>
<span
class=
"whitespace-nowrap"
>
{{data.startDate}}
</span>
<ng-container
*
ngIf=
"data.startDate&&data.endDate"
>
<br>
ถึง
<br>
{{convertDateFormat(formIdp.data.masfromEvaluationRound.apsPeriodStart)}}
<ng-container
*
ngIf=
"formIdp.data.masfromEvaluationRound.apsPeriodStart &&formIdp.data.masfromEvaluationRound.apsPeriodEnd"
>
ถึง
</ng-container>
<span
class=
"whitespace-nowrap"
>
{{data.endDate}}
</span>
{{convertDateFormat(formIdp.data.masfromEvaluationRound.apsPeriodEnd)}}
</td>
</tr>
</ng-container>
...
...
@@ -274,4 +270,166 @@
</table>
</div>
</div>
<div
class=
"py-1rem px-2rem"
>
<div
class=
"py-2 grid grid-cols-6 gap-3"
>
<div
class=
"col-span-6"
>
หมายเหตุ : กรณี HR จัดอบรมให้ต้องเป็นไปตามเกณ์ที่ส่วนกลางกำหนดขึ้น
</div>
<div
class=
"col-span-6 grid grid-cols-6 gap-2"
>
<div
class=
"grid col-span-1 grid-cols-6 gap-2"
>
<div
class=
"col-span-1"
>
<input
type=
"checkbox"
class=
"ti-form-checkbox"
id=
"idpStatus-0"
[
class
.
pointer-events-none
]="
formIdp
.
data
.
masfromEvaluationIdp
.
idpStatus=
='0'||!canEdit"
name=
"idpStatus"
(
change
)="
formIdp
.
data
.
masfromEvaluationIdp
.
idpStatus=
'0'
"
[
checked
]="
formIdp
.
data
.
masfromEvaluationIdp
.
idpStatus=
='0'"
>
</div>
<div
class=
"col-span-5"
>
<label
for=
"idpStatus-0"
class=
"text-sm text-gray-500"
[
class
.
pointer-events-none
]="
formIdp
.
data
.
masfromEvaluationIdp
.
idpStatus=
='0'||!canEdit"
>
IDP มาตราฐาน
</label>
</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"
[
class
.
pointer-events-none
]="
formIdp
.
data
.
masfromEvaluationIdp
.
idpStatus=
='1'||!canEdit"
name=
"idpStatus"
(
change
)="
formIdp
.
data
.
masfromEvaluationIdp
.
idpStatus=
'1'
"
[
checked
]="
formIdp
.
data
.
masfromEvaluationIdp
.
idpStatus=
='1'"
>
</div>
<div
class=
"col-span-5"
>
<label
for=
"idpStatus-1"
class=
"text-sm text-gray-500"
[
class
.
pointer-events-none
]="
formIdp
.
data
.
masfromEvaluationIdp
.
idpStatus=
='1'||!canEdit"
>
IDP ปรับแก้ไข
</label>
</div>
</div>
</div>
</div>
</div>
<div
class=
"py-1rem px-2rem"
>
<div
class=
"py-2 grid grid-cols-7 gap-3"
>
<div
class=
"col-span-1"
>
{{formIdp.data.apsapprove2.employeeId?'ผู้ประเมิน1':'ผู้อนุมัติ'}}
</div>
<div
class=
"col-span-1"
>
{{formIdp.data.apsapprove1.thFullName}}
</div>
<div
class=
"col-span-1"
>
<input
type=
"checkbox"
id=
"hs-basic-usage1"
class=
"ti-switch checked:bg-none checked:bg-green-600 checked:hover:bg-green-600 checked:focus:bg-green-600 focus:border-green-600 focus:ring-green-600 dark:checked:bg-green-600
checked:before:bg-green-200 dark:checked:before:bg-green-200 pointer-events-none"
[
checked
]="
formIdp
.
data
.
masfromEvaluationIdp
.
apsapprove1Status=
='2'"
>
<label
for=
"hs-basic-usage1"
class=
"sr-only"
>
ยืนยันผล
</label>
</div>
<div
class=
"col-span-2"
>
<textarea
type=
"text"
rows=
"2"
class=
"ti-form-input mb-2"
placeholder=
"ใส่ Comment ที่นี่"
[
class
.!
bg-input-readonly
]="!
formIdp
.
data
||
formIdp
.
data
.
currentStep
!='
1
'||!
canEdit
"
[
readonly
]="!
formIdp
.
data
||
formIdp
.
data
.
currentStep
!='
1
'||!
canEdit
"
[(
ngModel
)]="
formIdp
.
data
.
masfromEvaluationIdp
.
apsapprove1Comment
"
></textarea>
<span
class=
"pt-2"
>
วันที่ :
{{convertDate(formIdp.data.masfromEvaluationIdp.apsapprove1Date)}}
</span>
</div>
</div>
<div
class=
"py-2 grid grid-cols-7 gap-3"
*
ngIf=
"formIdp.data.apsapprove2.employeeId"
>
<div
class=
"col-span-1"
>
{{formIdp.data.apsapprove3.employeeId?'ผู้ประเมิน2':'ผู้อนุมัติ'}}
</div>
<div
class=
"col-span-1"
>
{{formIdp.data.apsapprove2.thFullName}}
</div>
<div
class=
"col-span-1"
>
<input
type=
"checkbox"
id=
"hs-basic-usage1"
class=
"ti-switch checked:bg-none checked:bg-green-600 checked:hover:bg-green-600 checked:focus:bg-green-600 focus:border-green-600 focus:ring-green-600 dark:checked:bg-green-600
checked:before:bg-green-200 dark:checked:before:bg-green-200 pointer-events-none"
[
checked
]="
formIdp
.
data
.
masfromEvaluationIdp
.
apsapprove2Status=
='2'"
>
<label
for=
"hs-basic-usage1"
class=
"sr-only"
>
ยืนยันผล
</label>
</div>
<div
class=
"col-span-2"
>
<textarea
type=
"text"
rows=
"2"
class=
"ti-form-input mb-2"
placeholder=
"ใส่ Comment ที่นี่"
[
class
.!
bg-input-readonly
]="!
formIdp
.
data
||
formIdp
.
data
.
currentStep
!='
2
'||!
canEdit
"
[
readonly
]="!
formIdp
.
data
||
formIdp
.
data
.
currentStep
!='
2
'||!
canEdit
"
[(
ngModel
)]="
formIdp
.
data
.
masfromEvaluationIdp
.
apsapprove2Comment
"
></textarea>
<span
class=
"pt-2"
>
วันที่ :
{{convertDate(formIdp.data.masfromEvaluationIdp.apsapprove2Date)}}
</span>
</div>
</div>
<div
class=
"py-2 grid grid-cols-7 gap-3"
*
ngIf=
"formIdp.data.apsapprove3.employeeId"
>
<div
class=
"col-span-1"
>
{{formIdp.data.apsapprove4.employeeId?'ผู้ประเมิน3':'ผู้อนุมัติ'}}
</div>
<div
class=
"col-span-1"
>
{{formIdp.data.apsapprove3.thFullName}}
</div>
<div
class=
"col-span-1"
>
<input
type=
"checkbox"
id=
"hs-basic-usage1"
class=
"ti-switch checked:bg-none checked:bg-green-600 checked:hover:bg-green-600 checked:focus:bg-green-600 focus:border-green-600 focus:ring-green-600 dark:checked:bg-green-600
checked:before:bg-green-200 dark:checked:before:bg-green-200 pointer-events-none"
[
checked
]="
formIdp
.
data
.
masfromEvaluationIdp
.
apsapprove3Status=
='2'"
>
<label
for=
"hs-basic-usage1"
class=
"sr-only"
>
ยืนยันผล
</label>
</div>
<div
class=
"col-span-2"
>
<textarea
type=
"text"
rows=
"2"
class=
"ti-form-input mb-2"
placeholder=
"ใส่ Comment ที่นี่"
[
class
.!
bg-input-readonly
]="!
formIdp
.
data
||
formIdp
.
data
.
currentStep
!='
3
'||!
canEdit
"
[
readonly
]="!
formIdp
.
data
||
formIdp
.
data
.
currentStep
!='
3
'||!
canEdit
"
[(
ngModel
)]="
formIdp
.
data
.
masfromEvaluationIdp
.
apsapprove3Comment
"
></textarea>
<span
class=
"pt-2"
>
วันที่ :
{{convertDate(formIdp.data.masfromEvaluationIdp.apsapprove3Date)}}
</span>
</div>
</div>
<div
class=
"py-2 grid grid-cols-7 gap-3"
*
ngIf=
"formIdp.data.apsapprove4.employeeId"
>
<div
class=
"col-span-1"
>
{{formIdp.data.apsapprove5.employeeId?'ผู้ประเมิน4':'ผู้อนุมัติ'}}
</div>
<div
class=
"col-span-1"
>
{{formIdp.data.apsapprove4.thFullName}}
</div>
<div
class=
"col-span-1"
>
<input
type=
"checkbox"
id=
"hs-basic-usage1"
class=
"ti-switch checked:bg-none checked:bg-green-600 checked:hover:bg-green-600 checked:focus:bg-green-600 focus:border-green-600 focus:ring-green-600 dark:checked:bg-green-600
checked:before:bg-green-200 dark:checked:before:bg-green-200 pointer-events-none"
[
checked
]="
formIdp
.
data
.
masfromEvaluationIdp
.
apsapprove4Status=
='2'"
>
<label
for=
"hs-basic-usage1"
class=
"sr-only"
>
ยืนยันผล
</label>
</div>
<div
class=
"col-span-2"
>
<textarea
type=
"text"
rows=
"2"
class=
"ti-form-input mb-2"
placeholder=
"ใส่ Comment ที่นี่"
[
class
.!
bg-input-readonly
]="!
formIdp
.
data
||
formIdp
.
data
.
currentStep
!='
4
'||!
canEdit
"
[
readonly
]="!
formIdp
.
data
||
formIdp
.
data
.
currentStep
!='
4
'||!
canEdit
"
[(
ngModel
)]="
formIdp
.
data
.
masfromEvaluationIdp
.
apsapprove4Comment
"
></textarea>
<span
class=
"pt-2"
>
วันที่ :
{{convertDate(formIdp.data.masfromEvaluationIdp.apsapprove4Date)}}
</span>
</div>
</div>
<div
class=
"py-2 grid grid-cols-7 gap-3"
*
ngIf=
"formIdp.data.apsapprove5.employeeId"
>
<div
class=
"col-span-1"
>
ผู้อนุมัติ
</div>
<div
class=
"col-span-1"
>
{{formIdp.data.apsapprove5.thFullName}}
</div>
<div
class=
"col-span-1"
>
<input
type=
"checkbox"
id=
"hs-basic-usage1"
class=
"ti-switch checked:bg-none checked:bg-green-600 checked:hover:bg-green-600 checked:focus:bg-green-600 focus:border-green-600 focus:ring-green-600 dark:checked:bg-green-600
checked:before:bg-green-200 dark:checked:before:bg-green-200 pointer-events-none"
[
checked
]="
formIdp
.
data
.
masfromEvaluationIdp
.
apsapprove5Status=
='2'"
>
<label
for=
"hs-basic-usage1"
class=
"sr-only"
>
ยืนยันผล
</label>
</div>
<div
class=
"col-span-2"
>
<textarea
type=
"text"
rows=
"2"
class=
"ti-form-input mb-2"
placeholder=
"ใส่ Comment ที่นี่"
[
class
.!
bg-input-readonly
]="!
formIdp
.
data
||
formIdp
.
data
.
currentStep
!='
5
'||!
canEdit
"
[
readonly
]="!
formIdp
.
data
||
formIdp
.
data
.
currentStep
!='
5
'||!
canEdit
"
[(
ngModel
)]="
formIdp
.
data
.
masfromEvaluationIdp
.
apsapprove5Comment
"
></textarea>
<span
class=
"pt-2"
>
วันที่ :
{{convertDate(formIdp.data.masfromEvaluationIdp.apsapprove5Date)}}
</span>
</div>
</div>
</div>
<div
class=
"flex justify-center mb-1rem pb-2rem"
*
ngIf=
"canEdit"
>
<button
type=
"submit"
class=
"ti-btn ti-btn-success mx-2rem"
(
click
)="
save
('
draft
')"
>
บันทึกร่าง
</button>
<button
type=
"submit"
class=
"ti-btn ti-btn-success mx-2rem"
(
click
)="
save
()"
>
บันทึกข้อมูล
</button>
</div>
</ng-container>
</ng-template>
\ No newline at end of file
src/app/components/performance-evaluation/idp-evaluation/idp-evalution.component.ts
View file @
581dec38
import
{
Component
,
EventEmitter
,
Output
}
from
'@angular/core'
;
export
interface
DataModel
{
code
:
string
,
bis
:
BisModel
[],
startDate
:
string
,
endDate
:
string
}
export
interface
BisModel
{
name
:
string
,
oj
:
boolean
,
cm
:
boolean
,
t
:
boolean
,
cdr
:
CdrModel
}
export
interface
CdrModel
{
check
:
boolean
,
name
:
string
,
code
:
string
}
import
{
ChangeDetectorRef
,
Component
,
EventEmitter
,
Input
,
Output
}
from
'@angular/core'
;
import
{
IdpFormModel
}
from
'src/app/shared/model/idp-form.model'
;
import
{
EmployeeService
}
from
'src/app/shared/services/employee.service'
;
import
{
EvaluationIdpService
}
from
'src/app/shared/services/evaluation-Idp.service'
;
import
Swal
from
'sweetalert2'
;
@
Component
({
selector
:
'app-idp-evalution'
,
templateUrl
:
'./idp-evalution.component.html'
,
styleUrls
:
[
'./idp-evalution.component.scss'
]
})
export
class
IdpEvalutionComponent
{
@
Output
()
sendPageEvalution
:
EventEmitter
<
string
>
=
new
EventEmitter
<
string
>
();
pathTitle
=
[
'การประเมินผล'
,
'ประเมินผล'
]
@
Input
()
pathTitle
:
string
[]
=
[]
@
Input
()
evaluationRoundId
=
""
@
Input
()
evaluateeId
=
""
@
Input
()
evaluaterId
=
""
@
Output
()
sendReturnPath
:
EventEmitter
<
any
>
=
new
EventEmitter
<
any
>
();
currentDate
=
new
Date
()
hoveredCode
:
string
|
null
=
null
;
dataList
:
DataModel
[]
=
[{
code
:
"CC-01"
,
bis
:
[{
name
:
"สอนงานด้านความปลอดภัย และคุณภาพของบริษัทให้กับพนักงานในหน่วยงาน"
,
oj
:
true
,
cm
:
false
,
t
:
true
,
cdr
:
{
check
:
false
,
name
:
"จิตใต้สำนึกด้านความปลอดภัยและคุณภาพ (Safety & Quality) สำหรับระดับพนักงาน S3-S4"
,
code
:
"CC-01-4"
}
},
{
name
:
"ติดตามและปรับปรุงการทำงานด้านความปลอดภัยและ คุณภาพของทีมงาน"
,
oj
:
false
,
cm
:
false
,
t
:
false
,
cdr
:
{
check
:
false
,
name
:
""
,
code
:
""
}
}],
startDate
:
"01-01-2023"
,
endDate
:
"31-12-2023"
},
{
code
:
"CC-02"
,
bis
:
[{
name
:
"สอนงาน และพัฒนาทีมงานให้เกิดการทำงานเป็นทีมโดยยึดเป้าหมายเดียวกัน (TAT Goal) และคำนึงถึงความต้องการของลูกค้าเป็นหลัก (Next Customer)"
,
oj
:
true
,
cm
:
false
,
t
:
false
,
cdr
:
{
check
:
false
,
name
:
""
,
code
:
""
}
}],
startDate
:
"01-01-2023"
,
endDate
:
"31-12-2023"
},
{
code
:
"CC-03"
,
bis
:
[],
startDate
:
""
,
endDate
:
""
}]
getNestedValue
(
obj
:
any
,
path
:
string
)
{
return
path
.
split
(
'.'
).
reduce
((
acc
,
key
)
=>
acc
&&
acc
[
key
],
obj
);
formIdp
:
{
loading
:
boolean
,
data
?:
IdpFormModel
}
=
{
loading
:
false
,
data
:
undefined
}
canEdit
=
false
constructor
(
private
evaluationIdpService
:
EvaluationIdpService
,
private
employeeService
:
EmployeeService
,
private
cdr
:
ChangeDetectorRef
)
{
}
ngOnInit
():
void
{
this
.
getFormIdp
()
}
getFormIdp
()
{
this
.
formIdp
.
loading
=
true
this
.
evaluationIdpService
.
getFormIdp
(
this
.
evaluationRoundId
,
this
.
evaluateeId
).
subscribe
({
next
:
response
=>
{
this
.
formIdp
.
data
=
JSON
.
parse
(
JSON
.
stringify
(
response
))
console
.
log
(
" 🐒 this.formIdp.data:"
,
this
.
formIdp
.
data
?.
competencyIndicatorsCourses1
)
switch
(
this
.
formIdp
.
data
?.
currentStep
)
{
case
(
"0"
):
{
this
.
formIdp
.
data
.
masfromEvaluationIdp
.
apsassessyDate
=
this
.
currentDate
.
toISOString
().
split
(
'T'
)[
0
];
this
.
canEdit
=
this
.
evaluaterId
==
this
.
formIdp
.
data
.
apsassessy
.
employeeId
break
}
case
(
"1"
):
{
this
.
formIdp
.
data
.
masfromEvaluationIdp
.
apsapprove1Date
=
this
.
currentDate
.
toISOString
().
split
(
'T'
)[
0
];
this
.
canEdit
=
this
.
evaluaterId
==
this
.
formIdp
.
data
.
apsapprove1
.
employeeId
break
}
case
(
"2"
):
{
this
.
formIdp
.
data
.
masfromEvaluationIdp
.
apsapprove2Date
=
this
.
currentDate
.
toISOString
().
split
(
'T'
)[
0
];
this
.
canEdit
=
this
.
evaluaterId
==
this
.
formIdp
.
data
.
apsapprove2
.
employeeId
break
}
case
(
"3"
):
{
this
.
formIdp
.
data
.
masfromEvaluationIdp
.
apsapprove3Date
=
this
.
currentDate
.
toISOString
().
split
(
'T'
)[
0
];
this
.
canEdit
=
this
.
evaluaterId
==
this
.
formIdp
.
data
.
apsapprove3
.
employeeId
break
}
case
(
"4"
):
{
this
.
formIdp
.
data
.
masfromEvaluationIdp
.
apsapprove4Date
=
this
.
currentDate
.
toISOString
().
split
(
'T'
)[
0
];
this
.
canEdit
=
this
.
evaluaterId
==
this
.
formIdp
.
data
.
apsapprove4
.
employeeId
break
}
case
(
"5"
):
{
this
.
formIdp
.
data
.
masfromEvaluationIdp
.
apsapprove5Date
=
this
.
currentDate
.
toISOString
().
split
(
'T'
)[
0
];
this
.
canEdit
=
this
.
evaluaterId
==
this
.
formIdp
.
data
.
apsapprove5
.
employeeId
break
}
checkBg
(
data
:
any
[],
field
:
string
)
{
return
data
.
every
(
x
=>
!
this
.
getNestedValue
(
x
,
field
));
default
:
{
return
}
}
dataListFilter
()
{
return
this
.
dataList
this
.
formIdp
.
loading
=
false
this
.
cdr
.
detectChanges
()
},
error
:
error
=>
{
this
.
formIdp
.
loading
=
false
this
.
cdr
.
detectChanges
()
}
})
}
returnPath
()
{
this
.
sendReturnPath
.
emit
()
}
convertDate
(
dateInput
?:
string
|
Date
):
string
{
let
date
=
new
Date
()
if
(
dateInput
)
{
if
(
typeof
dateInput
===
'string'
)
{
const
[
year
,
month
,
day
]
=
dateInput
.
split
(
'-'
).
map
(
Number
);
date
=
new
Date
(
year
,
month
-
1
,
day
);
}
else
{
date
=
dateInput
}
}
return
date
?.
toLocaleDateString
(
'th-TH'
,
{
day
:
'numeric'
,
month
:
'long'
,
year
:
'numeric'
})
||
''
}
convertDateFormat
(
dateString
:
string
):
string
{
const
[
year
,
month
,
day
]
=
dateString
.
split
(
"-"
);
return
`
${
day
}
-
${
month
}
-
${
year
}
`
;
}
returnPage
()
{
this
.
sendPageEvalution
.
emit
(
""
)
save
(
status
?:
string
)
{
Swal
.
fire
({
iconHtml
:
`
<div class="flex items-center justify-center rounded-full !h-80px !w-80px" style="background-color: #E8F8EE;">
<svg width="39" height="39" viewBox="0 0 39 39" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="39" height="39" fill="#D2D2D2"/>
<g id="Component">
<g id="alert cart">
<g id="mdi:file-export">
<circle cx="22.5" cy="19.5" r="33.5" fill="#E8F8EE"/>
<path d="M9.75 3.25C8.88805 3.25 8.0614 3.59241 7.4519 4.2019C6.84241 4.8114 6.5 5.63805 6.5 6.5V32.5C6.5 33.362 6.84241 34.1886 7.4519 34.7981C8.0614 35.4076 8.88805 35.75 9.75 35.75H29.25C30.112 35.75 30.9386 35.4076 31.5481 34.7981C32.1576 34.1886 32.5 33.362 32.5 32.5V13L22.75 3.25M21.125 5.6875L30.0625 14.625H21.125M14.5113 19.8575H26V31.3463L22.555 27.9013L17.9563 32.5L13.3575 27.9013L17.9563 23.3188"
fill="#1DBE5A"/>
</g>
</g>
</g>
</svg>
</div>
`
,
title
:
status
==
'draft'
?
'บันทึกแบบร่าง'
:
'บันทึกข้อมูล'
,
text
:
status
==
'draft'
?
'คุณต้องการบันทึกแบบร่างของการประเมินนี้ใช่หรือไม่'
:
'คุณต้องการบันทึกข้อมูลการประเมินนี้ใช่หรือไม่'
,
showCancelButton
:
true
,
confirmButtonText
:
'ยืนยันการบันทึก'
,
cancelButtonText
:
'ย้อนกลับ'
,
customClass
:
{
title
:
'!swal2-title-mt-20px'
,
actions
:
'!swal2-actions-mt-20px'
,
icon
:
'!swal2-icon-no-border'
,
confirmButton
:
'!swal2-button-bg-green'
,
cancelButton
:
'!swal2-button-bg-gray'
,
},
}).
then
((
result
)
=>
{
if
(
result
.
isConfirmed
&&
this
.
formIdp
)
{
this
.
saveApi
(
status
)
}
else
if
(
result
.
dismiss
===
Swal
.
DismissReason
.
cancel
)
{
Swal
.
fire
({
title
:
'ยกเลิก!'
,
text
:
'การบันทึกถูกยกเลิก'
,
icon
:
'error'
,
customClass
:
{
confirmButton
:
'!swal2-button-bg-danger'
,
}
})
}
})
}
saveApi
(
status
?:
string
)
{
let
body
=
this
.
formIdp
.
data
switch
(
this
.
formIdp
.
data
?.
currentStep
)
{
case
(
"0"
):
{
body
=
{
...
this
.
formIdp
.
data
,
masfromEvaluationIdp
:
{
...
this
.
formIdp
.
data
.
masfromEvaluationIdp
,
apsassessyStatus
:
status
==
'draft'
?
'1'
:
'2'
}
}
break
}
case
(
"1"
):
{
body
=
{
...
this
.
formIdp
.
data
,
masfromEvaluationIdp
:
{
...
this
.
formIdp
.
data
.
masfromEvaluationIdp
,
apsapprove1Status
:
status
==
'draft'
?
'1'
:
'2'
}
}
break
}
case
(
"2"
):
{
body
=
{
...
this
.
formIdp
.
data
,
masfromEvaluationIdp
:
{
...
this
.
formIdp
.
data
.
masfromEvaluationIdp
,
apsapprove2Status
:
status
==
'draft'
?
'1'
:
'2'
}
}
break
}
case
(
"3"
):
{
body
=
{
...
this
.
formIdp
.
data
,
masfromEvaluationIdp
:
{
...
this
.
formIdp
.
data
.
masfromEvaluationIdp
,
apsapprove3Status
:
status
==
'draft'
?
'1'
:
'2'
}
}
break
}
case
(
"4"
):
{
body
=
{
...
this
.
formIdp
.
data
,
masfromEvaluationIdp
:
{
...
this
.
formIdp
.
data
.
masfromEvaluationIdp
,
apsapprove4Status
:
status
==
'draft'
?
'1'
:
'2'
}
}
break
}
case
(
"5"
):
{
body
=
{
...
this
.
formIdp
.
data
,
masfromEvaluationIdp
:
{
...
this
.
formIdp
.
data
.
masfromEvaluationIdp
,
apsapprove5Status
:
status
==
'draft'
?
'1'
:
'2'
}
}
break
}
default
:
{
return
}
}
this
.
evaluationIdpService
.
postIdp
(
body
).
subscribe
({
next
:
response
=>
{
if
(
response
.
success
)
{
Swal
.
fire
({
title
:
'บันทึกสำเร็จ!'
,
text
:
'การประเมินของคุณถูกบันทึกแล้ว'
,
icon
:
'success'
,
customClass
:
{
confirmButton
:
'!swal2-button-bg-green'
,
}
});
this
.
getFormIdp
()
}
else
{
Swal
.
fire
({
title
:
'ยกเลิก!'
,
text
:
'การบันทึกถูกยกเลิก'
,
icon
:
'error'
,
customClass
:
{
confirmButton
:
'!swal2-button-bg-danger'
,
}
});
}
},
error
:
error
=>
{
Swal
.
fire
({
title
:
'ยกเลิก!'
,
text
:
'การบันทึกถูกยกเลิก'
,
icon
:
'error'
,
customClass
:
{
confirmButton
:
'!swal2-button-bg-danger'
,
}
});
}
})
}
}
src/app/components/performance-evaluation/supervisor-evaluation/supervisor-evaluation.component.html
View file @
581dec38
...
...
@@ -104,7 +104,7 @@
</td>
<td
style=
"font-size: 12px;"
>
{{item.apsassessy.position.tdesc}}
</td>
<td
class=
"text-center"
>
<div
class=
"flex"
>
<div
class=
"flex
justify-center
"
>
<button
type=
"button"
class=
"ti-btn rounded-sm "
*
ngFor=
"let type of item.typeList"
[
class
.
ti-btn-soft-secondary
]="
type
.
statusType =
=
'
employee
'"
...
...
@@ -117,10 +117,16 @@
</div>
</td>
<td
class=
"text-center"
>
<!-- <button type="button" class="ti-btn rounded-sm ti-btn-soft-dark"
style="height: 15px; width: 45px; font-size: 12px; display: flex; align-items: center; justify-content: center;margin-left:4px;">
<div
class=
"flex justify-center"
>
<button
type=
"button"
class=
"ti-btn rounded-sm"
[
class
.
ti-btn-soft-secondary
]="
item
.
statusIdp
.
statusType =
=
'
employee
'"
[
class
.
ti-btn-soft-warning
]="
item
.
statusIdp
.
statusType
!=
'
employee
'&&
item
.
statusIdp
.
statusType
!=
'
Boss_finish
'"
[
class
.
ti-btn-soft-success
]="
item
.
statusIdp
.
statusType =
=
'
Boss_finish
'"
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=
'idp'
"
>
IDP
</button> -->
</button>
</div>
</td>
<td
class=
"text-center"
>
<!-- <button type="button" class="ti-btn rounded-sm ti-btn-soft-success"
...
...
@@ -190,14 +196,17 @@
</ng-container>
<ng-container
*
ngIf=
"pageEvalution=='idp'"
>
<app-idp-evalution
(
sendPageEvalution
)="
pageEvalution=
$event"
></app-idp-evalution>
<app-idp-evalution
[
pathTitle
]="['การประเมินผล',
'ประเมินโดยหัวหน้า','ประเมิน']"
(
sendReturnPath
)="
getBossList
();
pageEvalution=
''
;
pathTitle =
['การประเมินผล',
'ประเมินโดยหัวหน้า']"
[
evaluationRoundId
]="
formEvaluation
.
evaluationRoundId
"
[
evaluaterId
]="
formEvaluation
.
evaluaterId
"
[
evaluateeId
]="
formEvaluation
.
evaluateeId
"
></app-idp-evalution>
</ng-container>
<ng-container
*
ngIf=
"pageEvalution=='pms'"
>
<app-pms-evalution
(
sendPageEvalution
)="
pageEvalution=
$event"
></app-pms-evalution>
</ng-container>
<ng-container
*
ngIf=
"pageEvalution=='evaluation'"
>
<app-evaluation
[
pathTitle
]="['การประเมินผล',
'ประเมินโดยหัวหน้า','ประเมิน']"
(
sendReturnPath
)="
pageEvalution=
''
;
pathTitle =
['การประเมินผล',
'ประเมินโดยหัวหน้า']"
(
sendReturnPath
)="
getBossList
();
pageEvalution=
''
;
pathTitle =
['การประเมินผล',
'ประเมินโดยหัวหน้า']"
[
evaluationRoundId
]="
formEvaluation
.
evaluationRoundId
"
[
evaluaterId
]="
formEvaluation
.
evaluaterId
"
[
evaluateeId
]="
formEvaluation
.
evaluateeId
"
[
competencyTypeId
]="
formEvaluation
.
competencyTypeId
"
></app-evaluation>
...
...
src/app/components/performance-evaluation/supervisor-evaluation/supervisor-evaluation.component.ts
View file @
581dec38
...
...
@@ -67,7 +67,7 @@ export class SupervisorEvaluationComponent {
this
.
page
=
Array
.
from
({
length
:
Math
.
ceil
(
this
.
subordinateFilter
().
length
/
10
)
},
(
_
,
i
)
=>
i
+
1
);
}
selectSubordinate
(
data
:
Masfromevaluationassessment
,
competencyTypeId
:
string
,
evaluationRoundId
?:
string
)
{
if
(
data
&&
competencyTypeId
&&
evaluationRoundId
)
{
if
(
data
&&
evaluationRoundId
)
{
this
.
formEvaluation
.
evaluateeId
=
data
.
apsassessy
.
employeeId
this
.
formEvaluation
.
competencyTypeId
=
competencyTypeId
this
.
formEvaluation
.
evaluationRoundId
=
evaluationRoundId
...
...
src/app/components/performance-management-evaluation/assessment-management/assigning-approvers/assigning-approvers.component.html
View file @
581dec38
...
...
@@ -151,12 +151,12 @@
Clear
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
<div
class=
"ti-modal-body mt-1"
>
...
...
@@ -319,12 +319,12 @@
</div>
</div>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
<div
class=
"overflow-auto table-bordered"
style=
"border-radius: 5px;"
>
<div
class=
"overflow-auto border"
>
...
...
src/app/components/performance-management-evaluation/evaluation-cycle-performance/document-form/document-form.component.html
View file @
581dec38
...
...
@@ -11,12 +11,12 @@
</div>
</div>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
...
...
@@ -163,12 +163,12 @@
Clear
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
<div
class=
"ti-modal-body padding-16px pt-0 overflow-y-0"
>
...
...
src/app/components/performance-management-evaluation/evaluation-cycle-performance/management-evaluation-cycle/management-evaluation-cycle.component.html
View file @
581dec38
...
...
@@ -241,12 +241,12 @@
Clear
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
<div
class=
"ti-modal-body padding-16px pt-0 overflow-y-0"
>
...
...
src/app/components/performance-management-evaluation/evaluation-factors/define-evaluation-factors/define-evaluation-factors.component.html
View file @
581dec38
...
...
@@ -36,12 +36,12 @@
Clear
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
</div>
...
...
src/app/components/performance-management-evaluation/name-registration-perfomance/assessment-topics/assessment-topics.component.html
View file @
581dec38
...
...
@@ -193,12 +193,12 @@
Clear
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
<div
class=
"ti-modal-body padding-16px pt-0 overflow-y-0"
>
...
...
src/app/components/performance-management-evaluation/name-registration-perfomance/assessment-types/assessment-types.component.html
View file @
581dec38
...
...
@@ -192,12 +192,12 @@
Clear
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
<div
class=
"ti-modal-body padding-16px pt-0 overflow-y-0"
>
...
...
src/app/components/performance-management-evaluation/pms-grade-registration/pms-grade-management/pms-sub-grade-registration/pms-sub-grade-registration.component.html
View file @
581dec38
...
...
@@ -176,12 +176,12 @@
Clear
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
<div
class=
"ti-modal-body"
>
...
...
src/app/components/performance-management-evaluation/time-attendance/time-attendance.component.html
View file @
581dec38
...
...
@@ -214,12 +214,12 @@
Clear
</button>
</div>
<div
class=
"px-1"
>
<
!-- <
div class="px-1">
<button href="javascript:void(0);" class="ti-btn ti-btn-soft-warning h-45px m-0 shadow-md">
<i class="ti ti-book fs-l"></i>
Help
</button>
</div>
</div>
-->
</div>
</div>
<div
class=
"ti-modal-body padding-16px pt-0 overflow-y-0"
>
...
...
src/app/shared/model/appraisal-subordinate.model.ts
View file @
581dec38
...
...
@@ -15,6 +15,10 @@ export interface Masfromevaluationassessment {
gread
:
string
sumScore
:
number
typeList
:
TypeList
[]
statusIdp
:
{
shortName
:
string
,
statusType
:
string
}
}
export
interface
MasfromStatusType
{
...
...
src/app/shared/model/employee.model.ts
View file @
581dec38
...
...
@@ -111,6 +111,7 @@ export interface EmployeeModel {
thFullName
:
string
engFullName
:
string
pl
:
PLModel
resigndate
:
string
}
export
class
MyEmployeeModel
implements
EmployeeModel
{
...
...
@@ -200,6 +201,7 @@ export class MyEmployeeModel implements EmployeeModel {
thFullName
:
string
engFullName
:
string
pl
:
PLModel
resigndate
:
string
constructor
(
data
?:
Partial
<
EmployeeModel
>
)
{
this
.
employeeId
=
data
?.
employeeId
||
""
this
.
prefix
=
new
MyPrefixModel
(
data
?.
prefix
||
{})
...
...
@@ -287,7 +289,7 @@ export class MyEmployeeModel implements EmployeeModel {
this
.
thFullName
=
data
?.
thFullName
||
""
this
.
engFullName
=
data
?.
engFullName
||
""
this
.
pl
=
new
MyPLModel
(
data
?.
workarea
||
{})
this
.
resigndate
=
data
?.
resigndate
||
""
}
}
src/app/shared/model/idp-form.model.ts
0 → 100644
View file @
581dec38
export
interface
IdpFormModel
{
personalLevel
:
PersonalLevel
masfromEvaluationRound
:
MasfromEvaluationRound
companyId
:
string
active
:
boolean
masfromStatusType
:
MasfromStatusType
currentStep
:
string
lastStep
:
string
apsassessy
:
Apsassessy
apsapprove1
:
Apsapprove1
apsapprove2
:
Apsapprove2
apsapprove3
:
Apsapprove3
apsapprove4
:
Apsapprove4
apsapprove5
:
Apsapprove5
masfromEvaluationIdp
:
MasfromEvaluationIdp
competencyIndicatorsCourses1
:
CompetencyIndicatorsCourses1
[]
boss
:
Boss
}
export
interface
PersonalLevel
{
plId
:
string
tdesc
:
string
edesc
:
string
companyId
:
string
}
export
interface
MasfromEvaluationRound
{
evaluationRoundId
:
string
companyId
:
string
tdesc
:
string
edesc
:
string
apsyear
:
string
apsPeriodStart
:
string
apsPeriodEnd
:
string
}
export
interface
MasfromStatusType
{
code
:
string
tdesc
:
string
edesc
:
string
}
export
interface
Apsassessy
{
employeeId
:
string
bossId
:
string
prefix
:
Prefix
fname
:
string
lname
:
string
efname
:
string
elname
:
string
bu1
:
Bu1
bu2
:
Bu2
bu3
:
Bu3
bu4
:
Bu4
bu5
:
Bu5
position
:
Position
job
:
Job
pl
:
Pl
status
:
Status
time0
:
Time0
resignDate
:
string
endWorkDate
:
string
startDate
:
string
thFullName
:
string
engFullName
:
string
}
export
interface
Prefix
{
prefixId
:
string
tdesc
:
string
edesc
:
string
}
export
interface
Bu1
{
bu1id
:
string
tdesc
:
string
edesc
:
string
companyId
:
string
}
export
interface
Bu2
{
bu2id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Bu3
{
bu3id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Bu4
{
bu4id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Bu5
{
bu5id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Position
{
positionId
:
string
tdesc
:
string
edesc
:
string
consolidate
:
string
shortName
:
string
companyId
:
string
}
export
interface
Job
{
jobCodeId
:
string
tdesc
:
string
edesc
:
string
}
export
interface
Pl
{
plId
:
string
tdesc
:
string
edesc
:
string
companyId
:
string
}
export
interface
Status
{
statusCode
:
string
statusType
:
string
tdesc
:
string
edesc
:
string
}
export
interface
Time0
{
time0id
:
string
tdesc
:
string
edesc
:
string
stickTm
:
string
hourD
:
number
}
export
interface
Apsapprove1
{
employeeId
:
string
bossId
:
string
prefix
:
Prefix2
fname
:
string
lname
:
string
efname
:
string
elname
:
string
bu1
:
Bu12
bu2
:
Bu22
bu3
:
Bu32
bu4
:
Bu42
bu5
:
Bu52
position
:
Position2
job
:
Job2
pl
:
Pl2
status
:
Status2
time0
:
Time02
resignDate
:
string
endWorkDate
:
string
startDate
:
string
thFullName
:
string
engFullName
:
string
}
export
interface
Prefix2
{
prefixId
:
string
tdesc
:
string
edesc
:
string
}
export
interface
Bu12
{
bu1id
:
string
tdesc
:
string
edesc
:
string
companyId
:
string
}
export
interface
Bu22
{
bu2id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Bu32
{
bu3id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Bu42
{
bu4id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Bu52
{
bu5id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Position2
{
positionId
:
string
tdesc
:
string
edesc
:
string
consolidate
:
string
shortName
:
string
companyId
:
string
}
export
interface
Job2
{
jobCodeId
:
string
tdesc
:
string
edesc
:
string
}
export
interface
Pl2
{
plId
:
string
tdesc
:
string
edesc
:
string
companyId
:
string
}
export
interface
Status2
{
statusCode
:
string
statusType
:
string
tdesc
:
string
edesc
:
string
}
export
interface
Time02
{
time0id
:
string
tdesc
:
string
edesc
:
string
stickTm
:
string
hourD
:
number
}
export
interface
Apsapprove2
{
employeeId
:
string
bossId
:
string
prefix
:
Prefix3
fname
:
string
lname
:
string
efname
:
string
elname
:
string
bu1
:
Bu13
bu2
:
Bu23
bu3
:
Bu33
bu4
:
Bu43
bu5
:
Bu53
position
:
Position3
job
:
Job3
pl
:
Pl3
status
:
Status3
time0
:
Time03
resignDate
:
string
endWorkDate
:
string
startDate
:
string
thFullName
:
string
engFullName
:
string
}
export
interface
Prefix3
{
prefixId
:
string
tdesc
:
string
edesc
:
string
}
export
interface
Bu13
{
bu1id
:
string
tdesc
:
string
edesc
:
string
companyId
:
string
}
export
interface
Bu23
{
bu2id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Bu33
{
bu3id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Bu43
{
bu4id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Bu53
{
bu5id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Position3
{
positionId
:
string
tdesc
:
string
edesc
:
string
consolidate
:
string
shortName
:
string
companyId
:
string
}
export
interface
Job3
{
jobCodeId
:
string
tdesc
:
string
edesc
:
string
}
export
interface
Pl3
{
plId
:
string
tdesc
:
string
edesc
:
string
companyId
:
string
}
export
interface
Status3
{
statusCode
:
string
statusType
:
string
tdesc
:
string
edesc
:
string
}
export
interface
Time03
{
time0id
:
string
tdesc
:
string
edesc
:
string
stickTm
:
string
hourD
:
number
}
export
interface
Apsapprove3
{
employeeId
:
string
bossId
:
string
prefix
:
Prefix4
fname
:
string
lname
:
string
efname
:
string
elname
:
string
bu1
:
Bu14
bu2
:
Bu24
bu3
:
Bu34
bu4
:
Bu44
bu5
:
Bu54
position
:
Position4
job
:
Job4
pl
:
Pl4
status
:
Status4
time0
:
Time04
resignDate
:
string
endWorkDate
:
string
startDate
:
string
thFullName
:
string
engFullName
:
string
}
export
interface
Prefix4
{
prefixId
:
string
tdesc
:
string
edesc
:
string
}
export
interface
Bu14
{
bu1id
:
string
tdesc
:
string
edesc
:
string
companyId
:
string
}
export
interface
Bu24
{
bu2id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Bu34
{
bu3id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Bu44
{
bu4id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Bu54
{
bu5id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Position4
{
positionId
:
string
tdesc
:
string
edesc
:
string
consolidate
:
string
shortName
:
string
companyId
:
string
}
export
interface
Job4
{
jobCodeId
:
string
tdesc
:
string
edesc
:
string
}
export
interface
Pl4
{
plId
:
string
tdesc
:
string
edesc
:
string
companyId
:
string
}
export
interface
Status4
{
statusCode
:
string
statusType
:
string
tdesc
:
string
edesc
:
string
}
export
interface
Time04
{
time0id
:
string
tdesc
:
string
edesc
:
string
stickTm
:
string
hourD
:
number
}
export
interface
Apsapprove4
{
employeeId
:
string
bossId
:
string
prefix
:
Prefix5
fname
:
string
lname
:
string
efname
:
string
elname
:
string
bu1
:
Bu15
bu2
:
Bu25
bu3
:
Bu35
bu4
:
Bu45
bu5
:
Bu55
position
:
Position5
job
:
Job5
pl
:
Pl5
status
:
Status5
time0
:
Time05
resignDate
:
string
endWorkDate
:
string
startDate
:
string
thFullName
:
string
engFullName
:
string
}
export
interface
Prefix5
{
prefixId
:
string
tdesc
:
string
edesc
:
string
}
export
interface
Bu15
{
bu1id
:
string
tdesc
:
string
edesc
:
string
companyId
:
string
}
export
interface
Bu25
{
bu2id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Bu35
{
bu3id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Bu45
{
bu4id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Bu55
{
bu5id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Position5
{
positionId
:
string
tdesc
:
string
edesc
:
string
consolidate
:
string
shortName
:
string
companyId
:
string
}
export
interface
Job5
{
jobCodeId
:
string
tdesc
:
string
edesc
:
string
}
export
interface
Pl5
{
plId
:
string
tdesc
:
string
edesc
:
string
companyId
:
string
}
export
interface
Status5
{
statusCode
:
string
statusType
:
string
tdesc
:
string
edesc
:
string
}
export
interface
Time05
{
time0id
:
string
tdesc
:
string
edesc
:
string
stickTm
:
string
hourD
:
number
}
export
interface
Apsapprove5
{
employeeId
:
string
bossId
:
string
prefix
:
Prefix6
fname
:
string
lname
:
string
efname
:
string
elname
:
string
bu1
:
Bu16
bu2
:
Bu26
bu3
:
Bu36
bu4
:
Bu46
bu5
:
Bu56
position
:
Position6
job
:
Job6
pl
:
Pl6
status
:
Status6
time0
:
Time06
resignDate
:
string
endWorkDate
:
string
startDate
:
string
thFullName
:
string
engFullName
:
string
}
export
interface
Prefix6
{
prefixId
:
string
tdesc
:
string
edesc
:
string
}
export
interface
Bu16
{
bu1id
:
string
tdesc
:
string
edesc
:
string
companyId
:
string
}
export
interface
Bu26
{
bu2id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Bu36
{
bu3id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Bu46
{
bu4id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Bu56
{
bu5id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Position6
{
positionId
:
string
tdesc
:
string
edesc
:
string
consolidate
:
string
shortName
:
string
companyId
:
string
}
export
interface
Job6
{
jobCodeId
:
string
tdesc
:
string
edesc
:
string
}
export
interface
Pl6
{
plId
:
string
tdesc
:
string
edesc
:
string
companyId
:
string
}
export
interface
Status6
{
statusCode
:
string
statusType
:
string
tdesc
:
string
edesc
:
string
}
export
interface
Time06
{
time0id
:
string
tdesc
:
string
edesc
:
string
stickTm
:
string
hourD
:
number
}
export
interface
MasfromEvaluationIdp
{
masfromEvaluationAssessment
:
MasfromEvaluationAssessment
plId
:
string
companyId
:
string
apsassessyStatus
:
string
apsapprove1Status
:
string
apsapprove2Status
:
string
apsapprove3Status
:
string
apsapprove4Status
:
string
apsapprove5Status
:
string
apsassessyComment
:
string
apsapprove1Comment
:
string
apsapprove2Comment
:
string
apsapprove3Comment
:
string
apsapprove4Comment
:
string
apsapprove5Comment
:
string
apsassessyDate
:
string
apsapprove1Date
:
string
apsapprove2Date
:
string
apsapprove3Date
:
string
apsapprove4Date
:
string
apsapprove5Date
:
string
idpStatus
:
string
}
export
interface
MasfromEvaluationAssessment
{
personalLevel
:
PersonalLevel2
masfromEvaluationRound
:
MasfromEvaluationRound2
companyId
:
string
active
:
boolean
apsassessy
:
Apsassessy2
apsapprove1
:
Apsapprove12
apsapprove2
:
Apsapprove22
apsapprove3
:
Apsapprove32
apsapprove4
:
Apsapprove42
apsapprove5
:
Apsapprove52
masfromEvaluationAssessment1
:
MasfromEvaluationAssessment1
[]
}
export
interface
PersonalLevel2
{
plId
:
string
tdesc
:
string
edesc
:
string
companyId
:
string
}
export
interface
MasfromEvaluationRound2
{
evaluationRoundId
:
string
companyId
:
string
tdesc
:
string
edesc
:
string
apsyear
:
string
apsPeriodStart
:
string
apsPeriodEnd
:
string
personalLevel
:
PersonalLevel3
[]
jlId
:
string
active
:
number
statusFrom
:
StatusFrom
statusCode
:
StatusCode
}
export
interface
PersonalLevel3
{
plId
:
string
tdesc
:
string
edesc
:
string
companyId
:
string
}
export
interface
StatusFrom
{
code
:
string
tdesc
:
string
edesc
:
string
}
export
interface
StatusCode
{
code
:
string
tdesc
:
string
edesc
:
string
}
export
interface
Apsassessy2
{
employeeId
:
string
bossId
:
string
prefix
:
Prefix7
fname
:
string
lname
:
string
efname
:
string
elname
:
string
bu1
:
Bu17
bu2
:
Bu27
bu3
:
Bu37
bu4
:
Bu47
bu5
:
Bu57
position
:
Position7
job
:
Job7
pl
:
Pl7
status
:
Status7
time0
:
Time07
resignDate
:
string
endWorkDate
:
string
startDate
:
string
thFullName
:
string
engFullName
:
string
}
export
interface
Prefix7
{
prefixId
:
string
tdesc
:
string
edesc
:
string
}
export
interface
Bu17
{
bu1id
:
string
tdesc
:
string
edesc
:
string
companyId
:
string
}
export
interface
Bu27
{
bu2id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Bu37
{
bu3id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Bu47
{
bu4id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Bu57
{
bu5id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Position7
{
positionId
:
string
tdesc
:
string
edesc
:
string
consolidate
:
string
shortName
:
string
companyId
:
string
}
export
interface
Job7
{
jobCodeId
:
string
tdesc
:
string
edesc
:
string
}
export
interface
Pl7
{
plId
:
string
tdesc
:
string
edesc
:
string
companyId
:
string
}
export
interface
Status7
{
statusCode
:
string
statusType
:
string
tdesc
:
string
edesc
:
string
}
export
interface
Time07
{
time0id
:
string
tdesc
:
string
edesc
:
string
stickTm
:
string
hourD
:
number
}
export
interface
Apsapprove12
{
employeeId
:
string
bossId
:
string
prefix
:
Prefix8
fname
:
string
lname
:
string
efname
:
string
elname
:
string
bu1
:
Bu18
bu2
:
Bu28
bu3
:
Bu38
bu4
:
Bu48
bu5
:
Bu58
position
:
Position8
job
:
Job8
pl
:
Pl8
status
:
Status8
time0
:
Time08
resignDate
:
string
endWorkDate
:
string
startDate
:
string
thFullName
:
string
engFullName
:
string
}
export
interface
Prefix8
{
prefixId
:
string
tdesc
:
string
edesc
:
string
}
export
interface
Bu18
{
bu1id
:
string
tdesc
:
string
edesc
:
string
companyId
:
string
}
export
interface
Bu28
{
bu2id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Bu38
{
bu3id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Bu48
{
bu4id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Bu58
{
bu5id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Position8
{
positionId
:
string
tdesc
:
string
edesc
:
string
consolidate
:
string
shortName
:
string
companyId
:
string
}
export
interface
Job8
{
jobCodeId
:
string
tdesc
:
string
edesc
:
string
}
export
interface
Pl8
{
plId
:
string
tdesc
:
string
edesc
:
string
companyId
:
string
}
export
interface
Status8
{
statusCode
:
string
statusType
:
string
tdesc
:
string
edesc
:
string
}
export
interface
Time08
{
time0id
:
string
tdesc
:
string
edesc
:
string
stickTm
:
string
hourD
:
number
}
export
interface
Apsapprove22
{
employeeId
:
string
bossId
:
string
prefix
:
Prefix9
fname
:
string
lname
:
string
efname
:
string
elname
:
string
bu1
:
Bu19
bu2
:
Bu29
bu3
:
Bu39
bu4
:
Bu49
bu5
:
Bu59
position
:
Position9
job
:
Job9
pl
:
Pl9
status
:
Status9
time0
:
Time09
resignDate
:
string
endWorkDate
:
string
startDate
:
string
thFullName
:
string
engFullName
:
string
}
export
interface
Prefix9
{
prefixId
:
string
tdesc
:
string
edesc
:
string
}
export
interface
Bu19
{
bu1id
:
string
tdesc
:
string
edesc
:
string
companyId
:
string
}
export
interface
Bu29
{
bu2id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Bu39
{
bu3id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Bu49
{
bu4id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Bu59
{
bu5id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Position9
{
positionId
:
string
tdesc
:
string
edesc
:
string
consolidate
:
string
shortName
:
string
companyId
:
string
}
export
interface
Job9
{
jobCodeId
:
string
tdesc
:
string
edesc
:
string
}
export
interface
Pl9
{
plId
:
string
tdesc
:
string
edesc
:
string
companyId
:
string
}
export
interface
Status9
{
statusCode
:
string
statusType
:
string
tdesc
:
string
edesc
:
string
}
export
interface
Time09
{
time0id
:
string
tdesc
:
string
edesc
:
string
stickTm
:
string
hourD
:
number
}
export
interface
Apsapprove32
{
employeeId
:
string
bossId
:
string
prefix
:
Prefix10
fname
:
string
lname
:
string
efname
:
string
elname
:
string
bu1
:
Bu110
bu2
:
Bu210
bu3
:
Bu310
bu4
:
Bu410
bu5
:
Bu510
position
:
Position10
job
:
Job10
pl
:
Pl10
status
:
Status10
time0
:
Time010
resignDate
:
string
endWorkDate
:
string
startDate
:
string
thFullName
:
string
engFullName
:
string
}
export
interface
Prefix10
{
prefixId
:
string
tdesc
:
string
edesc
:
string
}
export
interface
Bu110
{
bu1id
:
string
tdesc
:
string
edesc
:
string
companyId
:
string
}
export
interface
Bu210
{
bu2id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Bu310
{
bu3id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Bu410
{
bu4id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Bu510
{
bu5id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Position10
{
positionId
:
string
tdesc
:
string
edesc
:
string
consolidate
:
string
shortName
:
string
companyId
:
string
}
export
interface
Job10
{
jobCodeId
:
string
tdesc
:
string
edesc
:
string
}
export
interface
Pl10
{
plId
:
string
tdesc
:
string
edesc
:
string
companyId
:
string
}
export
interface
Status10
{
statusCode
:
string
statusType
:
string
tdesc
:
string
edesc
:
string
}
export
interface
Time010
{
time0id
:
string
tdesc
:
string
edesc
:
string
stickTm
:
string
hourD
:
number
}
export
interface
Apsapprove42
{
employeeId
:
string
bossId
:
string
prefix
:
Prefix11
fname
:
string
lname
:
string
efname
:
string
elname
:
string
bu1
:
Bu111
bu2
:
Bu211
bu3
:
Bu311
bu4
:
Bu411
bu5
:
Bu511
position
:
Position11
job
:
Job11
pl
:
Pl11
status
:
Status11
time0
:
Time011
resignDate
:
string
endWorkDate
:
string
startDate
:
string
thFullName
:
string
engFullName
:
string
}
export
interface
Prefix11
{
prefixId
:
string
tdesc
:
string
edesc
:
string
}
export
interface
Bu111
{
bu1id
:
string
tdesc
:
string
edesc
:
string
companyId
:
string
}
export
interface
Bu211
{
bu2id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Bu311
{
bu3id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Bu411
{
bu4id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Bu511
{
bu5id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Position11
{
positionId
:
string
tdesc
:
string
edesc
:
string
consolidate
:
string
shortName
:
string
companyId
:
string
}
export
interface
Job11
{
jobCodeId
:
string
tdesc
:
string
edesc
:
string
}
export
interface
Pl11
{
plId
:
string
tdesc
:
string
edesc
:
string
companyId
:
string
}
export
interface
Status11
{
statusCode
:
string
statusType
:
string
tdesc
:
string
edesc
:
string
}
export
interface
Time011
{
time0id
:
string
tdesc
:
string
edesc
:
string
stickTm
:
string
hourD
:
number
}
export
interface
Apsapprove52
{
employeeId
:
string
bossId
:
string
prefix
:
Prefix12
fname
:
string
lname
:
string
efname
:
string
elname
:
string
bu1
:
Bu112
bu2
:
Bu212
bu3
:
Bu312
bu4
:
Bu412
bu5
:
Bu512
position
:
Position12
job
:
Job12
pl
:
Pl12
status
:
Status12
time0
:
Time012
resignDate
:
string
endWorkDate
:
string
startDate
:
string
thFullName
:
string
engFullName
:
string
}
export
interface
Prefix12
{
prefixId
:
string
tdesc
:
string
edesc
:
string
}
export
interface
Bu112
{
bu1id
:
string
tdesc
:
string
edesc
:
string
companyId
:
string
}
export
interface
Bu212
{
bu2id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Bu312
{
bu3id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Bu412
{
bu4id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Bu512
{
bu5id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Position12
{
positionId
:
string
tdesc
:
string
edesc
:
string
consolidate
:
string
shortName
:
string
companyId
:
string
}
export
interface
Job12
{
jobCodeId
:
string
tdesc
:
string
edesc
:
string
}
export
interface
Pl12
{
plId
:
string
tdesc
:
string
edesc
:
string
companyId
:
string
}
export
interface
Status12
{
statusCode
:
string
statusType
:
string
tdesc
:
string
edesc
:
string
}
export
interface
Time012
{
time0id
:
string
tdesc
:
string
edesc
:
string
stickTm
:
string
hourD
:
number
}
export
interface
MasfromEvaluationAssessment1
{
plId
:
string
companyId
:
string
lineNo
:
number
competencyType
:
CompetencyType
masfromStatusType
:
MasfromStatusType2
currentStep
:
string
lastStep
:
string
apsassessyStatus
:
string
apsapprove1Status
:
string
apsapprove2Status
:
string
apsapprove3Status
:
string
apsapprove4Status
:
string
apsapprove5Status
:
string
numberCheck1
:
number
numberCheck2
:
number
numberCheck3
:
number
numberCheck4
:
number
numberCheck5
:
number
weightedTotal
:
number
averageScore
:
number
apsassessyComment
:
string
apsapprove1Comment
:
string
apsapprove2Comment
:
string
apsapprove3Comment
:
string
apsapprove4Comment
:
string
apsapprove5Comment
:
string
apsassessyDate
:
string
apsapprove1Date
:
string
apsapprove2Date
:
string
apsapprove3Date
:
string
apsapprove4Date
:
string
apsapprove5Date
:
string
evaluationResults
:
string
sumEvaluationResults
:
string
}
export
interface
CompetencyType
{
competencyTypeId
:
string
companyId
:
string
edesc
:
string
tdesc
:
string
shortName
:
string
expectationLevel
:
string
weight
:
number
}
export
interface
MasfromStatusType2
{
code
:
string
tdesc
:
string
edesc
:
string
}
export
interface
CompetencyIndicatorsCourses1
{
indicatorsCourses0
:
IndicatorsCourses0
competencyCourseId
:
string
competencyCourse
:
CompetencyCourse
[]
behavioralIndicators
:
BehavioralIndicator
[]
idpDevelopmentPlan
:
IdpDevelopmentPlan
}
export
interface
IndicatorsCourses0
{
competencyTopic
:
CompetencyTopic
companyId
:
string
edesc
:
string
tdesc
:
string
indicatorsCourseDetailTh
:
string
indicatorsCourseDetailEn
:
string
}
export
interface
CompetencyTopic
{
competencyTopicId
:
string
competencyType
:
CompetencyType2
companyId
:
string
edesc
:
string
tdesc
:
string
competencyDetail
:
string
competencyFiles
:
string
lineNo
:
number
expectationLevel
:
string
}
export
interface
CompetencyType2
{
competencyTypeId
:
string
companyId
:
string
edesc
:
string
tdesc
:
string
shortName
:
string
expectationLevel
:
string
weight
:
number
}
export
interface
CompetencyCourse
{
competencyCourseId
:
string
companyId
:
string
edesc
:
string
tdesc
:
string
}
export
interface
BehavioralIndicator
{
competencyIndicators1
:
CompetencyIndicators1
runNo
:
number
companyId
:
string
assessmentId
:
string
behavioralIndicators
:
string
competencyAssessment
:
CompetencyAssessment
[]
}
export
interface
CompetencyIndicators1
{
competencyIndicatorsCourses0
:
CompetencyIndicatorsCourses0
lineNo
:
number
companyId
:
string
competencyCourseId
:
string
}
export
interface
CompetencyIndicatorsCourses0
{
competencyTopic
:
CompetencyTopic2
companyId
:
string
edesc
:
string
tdesc
:
string
indicatorsCourseDetailTh
:
string
indicatorsCourseDetailEn
:
string
}
export
interface
CompetencyTopic2
{
competencyTopicId
:
string
competencyType
:
CompetencyType3
companyId
:
string
edesc
:
string
tdesc
:
string
competencyDetail
:
string
competencyFiles
:
string
lineNo
:
number
expectationLevel
:
string
}
export
interface
CompetencyType3
{
competencyTypeId
:
string
companyId
:
string
edesc
:
string
tdesc
:
string
shortName
:
string
expectationLevel
:
string
weight
:
number
}
export
interface
CompetencyAssessment
{
assessmentId
:
string
companyId
:
string
edesc
:
string
tdesc
:
string
shortName
:
string
}
export
interface
IdpDevelopmentPlan
{
planId
:
string
companyId
:
string
ojtJobAssignment
:
boolean
coachMentor
:
boolean
training
:
boolean
}
export
interface
Boss
{
employeeId
:
string
bossId
:
string
prefix
:
Prefix13
fname
:
string
lname
:
string
efname
:
string
elname
:
string
bu1
:
Bu113
bu2
:
Bu213
bu3
:
Bu313
bu4
:
Bu413
bu5
:
Bu513
position
:
Position13
job
:
Job13
pl
:
Pl13
status
:
Status13
time0
:
Time013
resignDate
:
string
endWorkDate
:
string
startDate
:
string
thFullName
:
string
engFullName
:
string
}
export
interface
Prefix13
{
prefixId
:
string
tdesc
:
string
edesc
:
string
}
export
interface
Bu113
{
bu1id
:
string
tdesc
:
string
edesc
:
string
companyId
:
string
}
export
interface
Bu213
{
bu2id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Bu313
{
bu3id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Bu413
{
bu4id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Bu513
{
bu5id
:
string
tdesc
:
string
edesc
:
string
parent
:
string
companyId
:
string
}
export
interface
Position13
{
positionId
:
string
tdesc
:
string
edesc
:
string
consolidate
:
string
shortName
:
string
companyId
:
string
}
export
interface
Job13
{
jobCodeId
:
string
tdesc
:
string
edesc
:
string
}
export
interface
Pl13
{
plId
:
string
tdesc
:
string
edesc
:
string
companyId
:
string
}
export
interface
Status13
{
statusCode
:
string
statusType
:
string
tdesc
:
string
edesc
:
string
}
export
interface
Time013
{
time0id
:
string
tdesc
:
string
edesc
:
string
stickTm
:
string
hourD
:
number
}
src/app/shared/model/status.model.ts
View file @
581dec38
...
...
@@ -9,11 +9,11 @@ export class MyStatusModel implements StatusModel {
statusType
:
string
tdesc
:
string
edesc
:
string
constructor
(
data
:
Partial
<
StatusModel
>
)
{
this
.
statusCode
=
data
.
statusCode
||
""
this
.
statusType
=
data
.
statusType
||
""
this
.
tdesc
=
data
.
tdesc
||
""
this
.
edesc
=
data
.
edesc
||
""
constructor
(
data
?
:
Partial
<
StatusModel
>
)
{
this
.
statusCode
=
data
?
.
statusCode
||
""
this
.
statusType
=
data
?
.
statusType
||
""
this
.
tdesc
=
data
?
.
tdesc
||
""
this
.
edesc
=
data
?
.
edesc
||
""
}
}
src/app/shared/services/emp-status.service.ts
0 → 100644
View file @
581dec38
import
{
HttpClient
,
HttpHeaders
}
from
'@angular/common/http'
;
import
{
Injectable
}
from
'@angular/core'
;
import
{
Observable
}
from
'rxjs'
;
import
{
environment
}
from
'src/environments/environment'
;
import
{
StatusModel
}
from
'../model/status.model'
;
@
Injectable
({
providedIn
:
'root'
})
export
class
EmpStatusService
{
api
=
"/emp-status"
urlApi
=
environment
.
baseUrl
+
this
.
api
constructor
(
private
http
:
HttpClient
)
{
}
getList
():
Observable
<
StatusModel
[]
>
{
return
this
.
http
.
get
<
StatusModel
[]
>
(
this
.
urlApi
+
"/lists"
)
}
}
\ No newline at end of file
src/app/shared/services/evaluation-Idp.service.ts
0 → 100644
View file @
581dec38
import
{
HttpClient
}
from
'@angular/common/http'
;
import
{
Injectable
}
from
'@angular/core'
;
import
{
Observable
}
from
'rxjs'
;
import
{
environment
}
from
'src/environments/environment'
;
import
{
AlertModel
}
from
'../model/alert.model'
;
import
{
IdpFormModel
}
from
'../model/idp-form.model'
;
@
Injectable
({
providedIn
:
'root'
})
export
class
EvaluationIdpService
{
api
=
"/evaluation-Idp"
urlApi
=
environment
.
baseUrl
+
this
.
api
constructor
(
private
http
:
HttpClient
)
{
}
getFormIdp
(
evaluationRoundId
:
string
,
employeeId
:
string
):
Observable
<
IdpFormModel
>
{
return
this
.
http
.
get
<
IdpFormModel
>
(
this
.
urlApi
+
"/"
+
evaluationRoundId
+
"/"
+
employeeId
)
}
postIdp
(
body
:
IdpFormModel
):
Observable
<
AlertModel
>
{
return
this
.
http
.
post
<
AlertModel
>
(
this
.
urlApi
+
"/"
,
body
)
}
}
\ No newline at end of file
src/assets/css/style.css
View file @
581dec38
...
...
@@ -25006,3 +25006,6 @@ div:where(.swal2-container) div:where(.swal2-validation-message) {
border-width
:
0
1px
0
0
;
height
:
100%
;
}
\
!
.bg-white
{
background-color
:
white
!important
;
}
\ 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