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
038a89a0
Commit
038a89a0
authored
Oct 01, 2025
by
Nattana Chaiyamat
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ข้อมูลลักษณะงาน (JD)
parent
e70c95d7
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
414 additions
and
229 deletions
+414
-229
error404.component.html
...uthentication/errorpages/error404/error404.component.html
+1
-1
dashboard-routing.module.ts
src/app/components/dashboard/dashboard-routing.module.ts
+2
-2
dashboard.module.ts
src/app/components/dashboard/dashboard.module.ts
+2
-2
job-description-emp.component.html
...ts/job-description-emp/job-description-emp.component.html
+311
-201
job-description-emp.component.scss
...ts/job-description-emp/job-description-emp.component.scss
+0
-0
job-description-emp.component.ts
...ents/job-description-emp/job-description-emp.component.ts
+60
-0
job-description-ess.component.ts
...ents/job-description-ess/job-description-ess.component.ts
+0
-21
job-code.model.ts
src/app/shared/model/job-code.model.ts
+17
-0
jobcode.service.ts
src/app/shared/services/jobcode.service.ts
+4
-0
navservice.ts
src/app/shared/services/navservice.ts
+1
-0
en.json
src/assets/i18n/en.json
+8
-1
th.json
src/assets/i18n/th.json
+8
-1
No files found.
src/app/components/authentication/errorpages/error404/error404.component.html
View file @
038a89a0
...
@@ -8,7 +8,7 @@
...
@@ -8,7 +8,7 @@
<p
class=
"mt-3 text-2xl font-bold text-gray-800 dark:text-white"
>
Oops, something went wrong.
</p>
<p
class=
"mt-3 text-2xl font-bold text-gray-800 dark:text-white"
>
Oops, something went wrong.
</p>
<p
class=
"text-gray-600 dark:text-white/70"
>
Sorry, we couldn't find your page.
</p>
<p
class=
"text-gray-600 dark:text-white/70"
>
Sorry, we couldn't find your page.
</p>
<div
class=
"mt-5 flex flex-col justify-center items-center gap-2 sm:flex-row sm:gap-3"
>
<div
class=
"mt-5 flex flex-col justify-center items-center gap-2 sm:flex-row sm:gap-3"
>
<a
class=
"w-full sm:w-auto inline-flex justify-center items-center gap-x-3 text-center bg-primary hover:bg-primary border border-transparent text-white text-sm font-medium rounded-sm focus:outline-none focus:ring-0 focus:ring-primary focus:ring-offset-0 focus:ring-offset-white transition py-2 px-3 dark:focus:ring-offset-white/10"
href=
"/
dashboard/sales
"
>
<a
class=
"w-full sm:w-auto inline-flex justify-center items-center gap-x-3 text-center bg-primary hover:bg-primary border border-transparent text-white text-sm font-medium rounded-sm focus:outline-none focus:ring-0 focus:ring-primary focus:ring-offset-0 focus:ring-offset-white transition py-2 px-3 dark:focus:ring-offset-white/10"
href=
"/
#/ess/my-skill-x-module
"
>
<i
class=
"ri-arrow-left-line"
></i>
<i
class=
"ri-arrow-left-line"
></i>
Get Back to Home
Get Back to Home
</a>
</a>
...
...
src/app/components/dashboard/dashboard-routing.module.ts
View file @
038a89a0
...
@@ -56,9 +56,9 @@ import { EssProfileComponent } from '../ess-profile/ess-profile.component';
...
@@ -56,9 +56,9 @@ import { EssProfileComponent } from '../ess-profile/ess-profile.component';
import
{
ExcelReportComponent
}
from
'../excel-report/excel-report.component'
;
import
{
ExcelReportComponent
}
from
'../excel-report/excel-report.component'
;
import
{
SettingIndividualKpiComponent
}
from
'../setting-individual-kpi/setting-individual-kpi.component'
;
import
{
SettingIndividualKpiComponent
}
from
'../setting-individual-kpi/setting-individual-kpi.component'
;
import
{
SettingIndividualKpiSupervisorComponent
}
from
'../setting-individual-kpi-supervisor/setting-individual-kpi-supervisor.component'
;
import
{
SettingIndividualKpiSupervisorComponent
}
from
'../setting-individual-kpi-supervisor/setting-individual-kpi-supervisor.component'
;
import
{
JobDescriptionEssComponent
}
from
'../job-description-ess/job-description-ess.component'
;
import
{
CompetencyEvaluationFactorsComponent
}
from
'../competency-assessment/competency-evaluation-factors/competency-evaluation-factors.component'
;
import
{
CompetencyEvaluationFactorsComponent
}
from
'../competency-assessment/competency-evaluation-factors/competency-evaluation-factors.component'
;
import
{
ReportCompetencySummaryComponent
}
from
'../report-component/report-com/report-competency-summary/report-competency-summary.component'
;
import
{
ReportCompetencySummaryComponent
}
from
'../report-component/report-com/report-competency-summary/report-competency-summary.component'
;
import
{
JobDescriptionEmpComponent
}
from
'../job-description-emp/job-description-emp.component'
;
...
@@ -130,7 +130,7 @@ const routes: Routes = [
...
@@ -130,7 +130,7 @@ const routes: Routes = [
{
path
:
"ess/self-setting-individual-kpi"
,
title
:
'แก้ไข Individual KPI ตนเอง'
,
component
:
SettingIndividualKpiComponent
},
{
path
:
"ess/self-setting-individual-kpi"
,
title
:
'แก้ไข Individual KPI ตนเอง'
,
component
:
SettingIndividualKpiComponent
},
{
path
:
"ess/supervisor-setting-individual-kpi"
,
title
:
'แก้ไข Individual KPI โดยหัวหน้า'
,
component
:
SettingIndividualKpiSupervisorComponent
},
{
path
:
"ess/supervisor-setting-individual-kpi"
,
title
:
'แก้ไข Individual KPI โดยหัวหน้า'
,
component
:
SettingIndividualKpiSupervisorComponent
},
{
path
:
"
ess/job-description"
,
title
:
'รายละเอียดของงาน'
,
component
:
JobDescriptionEss
Component
},
{
path
:
"
admin/job-description-emp"
,
title
:
'รายละเอียดของงาน'
,
component
:
JobDescriptionEmp
Component
},
]
]
}
}
];
];
...
...
src/app/components/dashboard/dashboard.module.ts
View file @
038a89a0
...
@@ -204,12 +204,12 @@ import {
...
@@ -204,12 +204,12 @@ import {
}
from
'@syncfusion/ej2-angular-grids'
;
}
from
'@syncfusion/ej2-angular-grids'
;
import
{
SettingIndividualKpiComponent
}
from
'../setting-individual-kpi/setting-individual-kpi.component'
;
import
{
SettingIndividualKpiComponent
}
from
'../setting-individual-kpi/setting-individual-kpi.component'
;
import
{
SettingIndividualKpiSupervisorComponent
}
from
'../setting-individual-kpi-supervisor/setting-individual-kpi-supervisor.component'
;
import
{
SettingIndividualKpiSupervisorComponent
}
from
'../setting-individual-kpi-supervisor/setting-individual-kpi-supervisor.component'
;
import
{
JobDescriptionEssComponent
}
from
'../job-description-ess/job-description-ess.component'
;
import
{
MoneyInputDirective
}
from
'src/app/shared/directive/money-input/money-input.directive'
;
import
{
MoneyInputDirective
}
from
'src/app/shared/directive/money-input/money-input.directive'
;
import
{
CompetencyEvaluationFactorsComponent
}
from
'../competency-assessment/competency-evaluation-factors/competency-evaluation-factors.component'
;
import
{
CompetencyEvaluationFactorsComponent
}
from
'../competency-assessment/competency-evaluation-factors/competency-evaluation-factors.component'
;
import
{
CompetencyDefineEvaluationFactorsComponent
}
from
'../competency-assessment/competency-evaluation-factors/competency-define-evaluation-factors/competency-define-evaluation-factors.component'
;
import
{
CompetencyDefineEvaluationFactorsComponent
}
from
'../competency-assessment/competency-evaluation-factors/competency-define-evaluation-factors/competency-define-evaluation-factors.component'
;
import
{
TranslateModule
}
from
'@ngx-translate/core'
;
import
{
TranslateModule
}
from
'@ngx-translate/core'
;
import
{
ReportCompetencySummaryComponent
}
from
'../report-component/report-com/report-competency-summary/report-competency-summary.component'
;
import
{
ReportCompetencySummaryComponent
}
from
'../report-component/report-com/report-competency-summary/report-competency-summary.component'
;
import
{
JobDescriptionEmpComponent
}
from
'../job-description-emp/job-description-emp.component'
;
export
const
MY_DATE_FORMATS
=
{
export
const
MY_DATE_FORMATS
=
{
parse
:
{
parse
:
{
...
@@ -358,7 +358,7 @@ export class CustomDateAdapter extends NativeDateAdapter {
...
@@ -358,7 +358,7 @@ export class CustomDateAdapter extends NativeDateAdapter {
PivotSyncfutionComponent
,
PivotSyncfutionComponent
,
SettingIndividualKpiComponent
,
SettingIndividualKpiComponent
,
SettingIndividualKpiSupervisorComponent
,
SettingIndividualKpiSupervisorComponent
,
JobDescriptionE
ss
Component
,
JobDescriptionE
mp
Component
,
MoneyInputDirective
MoneyInputDirective
],
imports
:
[
],
imports
:
[
TranslateModule
,
TranslateModule
,
...
...
src/app/components/job-description-e
ss/job-description-ess
.component.html
→
src/app/components/job-description-e
mp/job-description-emp
.component.html
View file @
038a89a0
<div
class=
"relative"
>
<
!-- <
div class="relative">
<div class="flex relative before:absolute before:w-full before:h-full bg-gradient-custom"
<div class="flex relative before:absolute before:w-full before:h-full bg-gradient-custom"
style="margin-top: -50px;margin-left: -100px;margin-right: -100px">
style="margin-top: -50px;margin-left: -100px;margin-right: -100px">
<div class="h-[500px] w-full rounded-sm"></div>
<div class="h-[500px] w-full rounded-sm"></div>
...
@@ -143,95 +143,269 @@
...
@@ -143,95 +143,269 @@
</div>
</div>
</div>
</div>
</div>
</div>
</div> -->
<app-page-header
[
pathTitle
]="
pathTitle
"
></app-page-header>
<div
class=
"bg-card-white"
>
</div>
<div
class=
"block-main-content"
>
<div
class=
"text-lg font-bold py-2 px-8 text-primary"
>
{{'ข้อมูลลักษณะงาน (JD)' |translate}}
</div>
<div
class=
"page"
>
<div
class=
"border-b border-gray-200 px-8"
>
<nav
class=
"-mb-0.5 flex space-x-6 rtl:space-x-reverse"
>
<a
style=
"white-space: normal;align-items:start;"
class=
"text-base font-medium hs-tab-active:text-lg hs-tab-active:font-bold hs-tab-active:border-secondary hs-tab-active:text-secondary pb-3 inline-flex items-center gap-2 border-b-[3px] border-transparent whitespace-nowrap text-gray-500 dark:text-white/70 hover:text-secondary active"
href=
"javascript:void(0);"
id=
"underline-item-1"
data-hs-tab=
"#underline-1"
aria-controls=
"underline-1"
(
click
)="
currentPage=
1"
>
{{'Part 1 : General Information' | translate}}
</a>
<a
style=
"white-space: normal;align-items:start;"
class=
"text-base font-medium hs-tab-active:text-lg hs-tab-active:font-bold hs-tab-active:border-secondary hs-tab-active:text-secondary pb-3 px-1 inline-flex items-center gap-2 border-b-[3px] border-transparent whitespace-nowrap text-gray-500 dark:text-white/70 hover:text-secondary"
href=
"javascript:void(0);"
id=
"underline-item-2"
data-hs-tab=
"#underline-2"
aria-controls=
"underline-2"
(
click
)="
currentPage=
2"
>
{{'Part 2 : Organization Chart' | translate}}
</a>
<a
style=
"white-space: normal;align-items:start;"
class=
"text-base font-medium hs-tab-active:text-lg hs-tab-active:font-bold hs-tab-active:border-secondary hs-tab-active:text-secondary pb-3 px-1 inline-flex items-center gap-2 border-b-[3px] border-transparent whitespace-nowrap text-gray-500 dark:text-white/70 hover:text-secondary"
href=
"javascript:void(0);"
id=
"underline-item-3"
data-hs-tab=
"#underline-3"
aria-controls=
"underline-3"
(
click
)="
currentPage=
3"
>
{{'Part 3 : Job Detail' | translate}}
</a>
<a
style=
"white-space: normal;align-items:start;"
class=
"text-base font-medium hs-tab-active:text-lg hs-tab-active:font-bold hs-tab-active:border-secondary hs-tab-active:text-secondary pb-3 px-1 inline-flex items-center gap-2 border-b-[3px] border-transparent whitespace-nowrap text-gray-500 dark:text-white/70 hover:text-secondary"
href=
"javascript:void(0);"
id=
"underline-item-4"
data-hs-tab=
"#underline-4"
aria-controls=
"underline-4"
(
click
)="
currentPage=
4"
>
{{'Part 4 : Job Specification' | translate}}
</a>
<a
style=
"white-space: normal;align-items:start;"
class=
"text-base font-medium hs-tab-active:text-lg hs-tab-active:font-bold hs-tab-active:border-secondary hs-tab-active:text-secondary pb-3 px-1 inline-flex items-center gap-2 border-b-[3px] border-transparent whitespace-nowrap text-gray-500 dark:text-white/70 hover:text-secondary"
href=
"javascript:void(0);"
id=
"underline-item-5"
data-hs-tab=
"#underline-5"
aria-controls=
"underline-5"
(
click
)="
currentPage=
5"
>
{{'Part 5 : Job Competency' | translate}}
</a>
<a
style=
"white-space: normal;align-items:start;"
class=
"text-base font-medium hs-tab-active:text-lg hs-tab-active:font-bold hs-tab-active:border-secondary hs-tab-active:text-secondary pb-3 px-1 inline-flex items-center gap-2 border-b-[3px] border-transparent whitespace-nowrap text-gray-500 dark:text-white/70 hover:text-secondary"
href=
"javascript:void(0);"
id=
"underline-item-6"
data-hs-tab=
"#underline-6"
aria-controls=
"underline-6"
(
click
)="
currentPage=
6"
>
{{'Part 6 : Key Performance Indicators: KPIs' | translate}}
</a>
</nav>
</div>
<div
class=
"mt-3 px-2rem !-mt-3 pt-50px"
>
<div
*
ngIf=
"currentPage==1"
id=
"underline-1"
role=
"tabpanel"
aria-labelledby=
"underline-item-1"
>
<div
class=
"w-full text-center"
*
ngIf=
"empDetail.loading"
>
<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>
</div>
<ng-container
*
ngIf=
"!empDetail.loading"
>
<ng-container
*
ngTemplateOutlet=
"part1"
></ng-container>
</ng-container>
</div>
<div
*
ngIf=
"currentPage==2"
id=
"underline-2"
class=
"hidden"
role=
"tabpanel"
aria-labelledby=
"underline-item-2"
>
<div
class=
"w-full text-center"
*
ngIf=
"empDetail.loading"
>
<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>
</div>
<ng-container
*
ngIf=
"!empDetail.loading"
>
<ng-container
*
ngTemplateOutlet=
"part2"
></ng-container>
</ng-container>
</div>
<div
*
ngIf=
"currentPage==3"
id=
"underline-3"
class=
"hidden"
role=
"tabpanel"
aria-labelledby=
"underline-item-3"
>
<div
class=
"w-full text-center"
*
ngIf=
"empDetail.loading"
>
<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>
</div>
<ng-container
*
ngIf=
"!empDetail.loading"
>
<ng-container
*
ngTemplateOutlet=
"part3"
></ng-container>
</ng-container>
</div>
<div
*
ngIf=
"currentPage==4"
id=
"underline-4"
class=
"hidden"
role=
"tabpanel"
aria-labelledby=
"underline-item-4"
>
<div
class=
"w-full text-center"
*
ngIf=
"empDetail.loading"
>
<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>
</div>
<ng-container
*
ngIf=
"!empDetail.loading"
>
<ng-container
*
ngTemplateOutlet=
"part4"
></ng-container>
</ng-container>
</div>
<div
*
ngIf=
"currentPage==5"
id=
"underline-5"
class=
"hidden"
role=
"tabpanel"
aria-labelledby=
"underline-item-5"
>
<div
class=
"w-full text-center"
*
ngIf=
"empDetail.loading"
>
<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>
</div>
<ng-container
*
ngIf=
"!empDetail.loading"
>
<ng-container
*
ngTemplateOutlet=
"part5"
></ng-container>
</ng-container>
</div>
<div
*
ngIf=
"currentPage==6"
id=
"underline-6"
class=
"hidden"
role=
"tabpanel"
aria-labelledby=
"underline-item-6"
>
<div
class=
"w-full text-center"
*
ngIf=
"empDetail.loading"
>
<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>
</div>
<ng-container
*
ngIf=
"!empDetail.loading"
>
<ng-container
*
ngTemplateOutlet=
"part6"
></ng-container>
</ng-container>
</div>
</div>
<!-- <div class="grid grid-cols-12 gap-x-6 mb-3 mt-3">
<div class="col-span-4 mt-3 mb-3 text-center">
<div class="col-span-12">
จัดทำโดย
</div>
<div class="col-span-12">
……………………………
</div>
<div class="col-span-12">
(……………………………)
</div>
<div class="col-span-12">
ตำแหน่ง :
</div>
<div class="col-span-12">
ว/ด/ป : / /
</div>
</div>
<div class="col-span-4 mt-3 mb-3 text-center">
<div class="col-span-12">
ตรวจสอบโดย
</div>
<div class="col-span-12">
……………………………
</div>
<div class="col-span-12">
(……………………………)
</div>
<div class="col-span-12">
ตำแหน่ง :
</div>
<div class="col-span-12">
ว/ด/ป : / /
</div>
</div>
<div class="col-span-4 mt-3 mb-3 text-center">
<div class="col-span-12">
อนุมัติโดย
</div>
<div class="col-span-12">
……………………………
</div>
<div class="col-span-12">
(……………………………)
</div>
<div class="col-span-12">
ตำแหน่ง :
</div>
<div class="col-span-12">
ว/ด/ป : / /
</div>
</div>
</div> -->
</div>
</div>
</div>
<ng-template
#
part1
>
<ng-template
#
part1
>
<h5
class=
"box-title mb-3"
>
ส่วนที่ 1 : ข้อมูลทั่วไป (General Information)
</h5>
<div
class=
"p-2 pt-0"
>
<div
class=
"p-2 pt-0"
>
<div
class=
"overflow-auto w-1/2 mb-3"
>
<div
class=
"overflow-auto w-1/2 mb-3"
>
<table
class=
"ti-custom-table border-0 whitespace-nowrap"
>
<table
class=
"ti-custom-table border-0 whitespace-nowrap"
>
<tbody>
<tbody>
<tr>
<tr>
<td
class=
"!p-2 font-medium !text-gray-500
dark:!text-white/70
"
>
<td
class=
"!p-2 font-medium !text-gray-500"
>
ตำแหน่ง (ภาษาไทย)
ตำแหน่ง (ภาษาไทย)
</td>
</td>
<td
class=
"!p-2"
>
:
</td>
<td
class=
"!p-2"
>
:
</td>
<td
class=
"!p-2 !text-gray-500
dark:!text-white/70
"
>
<td
class=
"!p-2 !text-gray-500"
>
เจ้าหน้าที่บัญชี
{{empDetail.data.position.tdesc}}
</td>
</td>
</tr>
</tr>
<tr
class=
"!border-0"
>
<tr
class=
"!border-0"
>
<td
class=
"!p-2 font-medium !text-gray-500
dark:!text-white/70
"
>
<td
class=
"!p-2 font-medium !text-gray-500"
>
ตำแหน่ง (ภาษาอังกฤษ)
ตำแหน่ง (ภาษาอังกฤษ)
</td>
</td>
<td
class=
"!p-2"
>
:
</td>
<td
class=
"!p-2"
>
:
</td>
<td
class=
"!p-2 !text-gray-500 dark:!text-white/70"
>
<td
class=
"!p-2 !text-gray-500"
>
Accounting Officer
{{empDetail.data.position.edesc}}
</td>
</td>
</tr>
</tr>
<tr
class=
"!border-0"
>
<tr
class=
"!border-0"
>
<td
class=
"!p-2 font-medium !text-gray-500
dark:!text-white/70
"
>
<td
class=
"!p-2 font-medium !text-gray-500"
>
ระดับงาน (Job Grade)
ระดับงาน (Job Grade)
</td>
</td>
<td
class=
"!p-2"
>
:
</td>
<td
class=
"!p-2"
>
:
</td>
<td
class=
"!p-2 !text-gray-500
dark:!text-white/70
"
>
<td
class=
"!p-2 !text-gray-500"
>
เจ้าหน้าที่
{{empDetail.data.jl.tdesc}}
</td>
</td>
</tr>
</tr>
<tr
class=
"!border-0"
>
<
!-- <
tr class="!border-0">
<td
class=
"!p-2 font-medium !text-gray-500
dark:!text-white/70
"
>
<td class="!p-2 font-medium !text-gray-500">
งาน (Unit)
งาน (Unit)
</td>
</td>
<td class="!p-2">:</td>
<td class="!p-2">:</td>
<td
class=
"!p-2 !text-gray-500
dark:!text-white/70
"
>
<td class="!p-2 !text-gray-500">
งานบัญชี
???
</td>
</td>
</tr>
</tr>
-->
<tr
class=
"!border-0"
>
<tr
class=
"!border-0"
>
<td
class=
"!p-2 font-medium !text-gray-500
dark:!text-white/70
"
>
<td
class=
"!p-2 font-medium !text-gray-500"
>
แผนก (Section)
แผนก (Section)
</td>
</td>
<td
class=
"!p-2"
>
:
</td>
<td
class=
"!p-2"
>
:
</td>
<td
class=
"!p-2 !text-gray-500
dark:!text-white/70
"
>
<td
class=
"!p-2 !text-gray-500"
>
บัญชี
{{empDetail.data.bu2.edesc}}
</td>
</td>
</tr>
</tr>
<tr
class=
"!border-0"
>
<tr
class=
"!border-0"
>
<td
class=
"!p-2 font-medium !text-gray-500
dark:!text-white/70
"
>
<td
class=
"!p-2 font-medium !text-gray-500"
>
ส่วน (Division)
ส่วน (Division)
</td>
</td>
<td
class=
"!p-2"
>
:
</td>
<td
class=
"!p-2"
>
:
</td>
<td
class=
"!p-2 !text-gray-500
dark:!text-white/70
"
>
<td
class=
"!p-2 !text-gray-500"
>
การเงินและบัญชี
{{empDetail.data.bu3.edesc}}
</td>
</td>
</tr>
</tr>
<tr
class=
"!border-0"
>
<tr
class=
"!border-0"
>
<td
class=
"!p-2 font-medium !text-gray-500
dark:!text-white/70
"
>
<td
class=
"!p-2 font-medium !text-gray-500"
>
ฝ่าย (Department)
ฝ่าย (Department)
</td>
</td>
<td
class=
"!p-2"
>
:
</td>
<td
class=
"!p-2"
>
:
</td>
<td
class=
"!p-2 !text-gray-500
dark:!text-white/70
"
>
<td
class=
"!p-2 !text-gray-500"
>
สำนักงานกลาง
{{empDetail.data.bu1.edesc}}
</td>
</td>
</tr>
</tr>
<tr
class=
"!border-0"
>
<
!-- <
tr class="!border-0">
<td
class=
"!p-2 font-medium !text-gray-500
dark:!text-white/70
"
>
<td class="!p-2 font-medium !text-gray-500">
สายงาน (Business Line)
สายงาน (Business Line)
</td>
</td>
<td class="!p-2">:</td>
<td class="!p-2">:</td>
<td
class=
"!p-2 !text-gray-500
dark:!text-white/70
"
>
<td class="!p-2 !text-gray-500">
สนับสนุนธุรกิจ
???
</td>
</td>
</tr>
</tr>
-->
<tr
class=
"!border-0"
>
<tr
class=
"!border-0"
>
<td
class=
"!p-2 font-medium !text-gray-500
dark:!text-white/70
"
>
<td
class=
"!p-2 font-medium !text-gray-500"
>
ตำแหน่งผู้บังคับบัญชา
ตำแหน่งผู้บังคับบัญชา
</td>
</td>
<td
class=
"!p-2"
>
:
</td>
<td
class=
"!p-2"
>
:
</td>
<td
class=
"!p-2 !text-gray-500
dark:!text-white/70
"
>
<td
class=
"!p-2 !text-gray-500"
>
หัวหน้าบัญชี
{{empDetail.data.supervisorJobCode.tdesc}}
</td>
</td>
</tr>
</tr>
</tbody>
</tbody>
...
@@ -242,28 +416,8 @@
...
@@ -242,28 +416,8 @@
<table
class=
"ti-custom-table border-0 whitespace-nowrap"
>
<table
class=
"ti-custom-table border-0 whitespace-nowrap"
>
<tbody>
<tbody>
<tr
class=
"!border-0"
>
<tr
class=
"!border-0"
>
<td
class=
"!p-2 font-medium !text-gray-500 dark:!text-white/70"
>
<td
class=
"!p-2 font-medium !text-gray-500"
>
1. จัดทำบัญชีทั่วไปและบัญชีรายวันให้ถูกต้องและครบถ้วนตามมาตรฐานบัญชี
{{empDetail.data.jobObjective}}
</td>
</tr>
<tr
class=
"!border-0"
>
<td
class=
"!p-2 font-medium !text-gray-500 dark:!text-white/70"
>
2. ตรวจสอบเอกสารทางการเงินก่อนบันทึกบัญชี
</td>
</tr>
<tr
class=
"!border-0"
>
<td
class=
"!p-2 font-medium !text-gray-500 dark:!text-white/70"
>
3. สนับสนุนการจัดทำงบการเงินรายเดือน/รายปี
</td>
</tr>
<tr
class=
"!border-0"
>
<td
class=
"!p-2 font-medium !text-gray-500 dark:!text-white/70"
>
4. ประสานงานกับฝ่ายที่เกี่ยวข้องเพื่อความถูกต้องของข้อมูลบัญชี
</td>
</tr>
<tr
class=
"!border-0"
>
<td
class=
"!p-2 font-medium !text-gray-500 dark:!text-white/70"
>
5. ปฏิบัติงานอื่น ๆ ที่ได้รับมอบหมายจากผู้บังคับบัญชา
</td>
</td>
</tr>
</tr>
</tbody>
</tbody>
...
@@ -271,13 +425,74 @@
...
@@ -271,13 +425,74 @@
</div>
</div>
</div>
</div>
</ng-template>
</ng-template>
<ng-template
#
part2
>
<ng-template
#
part2
>
<h5
class=
"box-title mb-3"
>
ส่วนที่ 2 : โครงสร้างสายการบังคับบัญชา (Organization Chart)
</h5>
<div
class=
"p-2 py-0 grid"
>
<div
class=
"col-span-1 grid"
style=
"align-items: center; justify-items: center"
>
<h5
class=
"box-title mb-1 text-center w-full"
style=
"align-items: center; justify-items: center;"
>
ชื่อตำแหน่งผู้บังคับบัญชาโดยตรง
</h5>
</div>
<div
class=
"col-span-1 grid"
style=
"align-items: center; justify-items: center"
>
<h5
class=
"box-title text-center w-full"
style=
"align-items: center; justify-items: center;"
>
<div
class=
"!text-gray-500"
style=
"border: 2px solid;width: 500px;padding: 20px;"
>
{{empDetail.data.supervisorJobCode.tdesc}}
</div>
</h5>
</div>
<div
class=
"col-span-1 grid"
style=
"align-items: center; justify-items: center"
>
<div
style=
"width:2px; height:50px; background-color:#000;"
></div>
</div>
<div
class=
"col-span-1 grid"
style=
"align-items: center; justify-items: center"
>
<h5
class=
"box-title mt-1 mb-1 text-center w-full"
style=
"align-items: center; justify-items: center;"
>
ชื่อตำแหน่งของผู้ปฏิบัติงาน
</h5>
</div>
<div
class=
"col-span-1 grid"
style=
"align-items: center; justify-items: center"
>
<h5
class=
"box-title text-center w-full"
style=
"align-items: center; justify-items: center;"
>
<div
class=
"!text-gray-500"
style=
"border: 2px solid;width: 500px;padding: 20px;"
>
{{empDetail.data.position.tdesc}}
</div>
</h5>
</div>
<div
class=
"col-span-1 grid"
style=
"align-items: center; justify-items: center"
>
<div
style=
"width:2px; height:50px; background-color:#000;"
></div>
</div>
<div
class=
"col-span-1 grid"
style=
"align-items: center; justify-items: center"
>
<h5
class=
"box-title mt-1 mb-1 text-center w-full"
style=
"align-items: center; justify-items: center;"
>
ชื่อตำแหน่งและจำนวนผู้ใต้บังคับบัญชาโดยตรง
</h5>
</div>
<div
class=
"col-span-1 grid"
style=
"align-items: center; justify-items: center"
>
<h5
class=
"box-title text-center w-full"
style=
"align-items: center; justify-items: center;"
>
<div
style=
"border: 2px solid;width: auto;padding: 20px;"
>
<table
class=
"ti-custom-table ti-custom-table-head"
>
<tbody>
<tr
class=
"!text-gray-500"
style=
"align-items: start"
*
ngFor=
"let item of empDetail.data.positionInJob; let i=index"
>
<td
style=
"vertical-align: top;"
class=
"!pr-0"
>
{{i+1}}. ตำแหน่ง
:
</td>
<td
style=
"vertical-align: top;"
class=
"text-start !pl-0"
>
{{item.position.tdesc}}
</td>
<td
class=
"!pr-0"
>
จำนวน
</td>
<td
class=
"!text-end"
>
{{item.countPosition}}
</td>
<td
class=
"!pl-0"
>
คน
</td>
</tr>
</tbody>
</table>
</div>
</h5>
</div>
</div>
</ng-template>
</ng-template>
<ng-template
#
part3
>
<ng-template
#
part3
>
<h5
class=
"box-title mb-3"
>
ส่วนที่ 3 : รายละเอียดของงาน (Job Detail)
</h5>
<div
class=
"p-2 pt-0"
>
<div
class=
"p-2 pt-0"
>
<table
class=
"ti-custom-table ti-custom-table-head ti-custom-table-hover"
>
<table
class=
"ti-custom-table ti-custom-table-head ti-custom-table-hover"
>
<thead>
<thead>
...
@@ -298,100 +513,70 @@
...
@@ -298,100 +513,70 @@
<td
style=
"vertical-align: top;"
class=
"text-center"
>
<td
style=
"vertical-align: top;"
class=
"text-center"
>
1.งานบริหาร (Management)
1.งานบริหาร (Management)
</td>
</td>
<td
style=
"vertical-align: top;"
>
-
</td>
<td
style=
"vertical-align: top;"
>
<td
class=
"text-center"
>
0%
</td>
{{empDetail.data.serviceWorkText}}
</td>
<td
class=
"text-center"
>
{{empDetail.data.serviceWorkPercent}}
</td>
</tr>
</tr>
<tr
style=
"align-items: start"
>
<tr
style=
"align-items: start"
>
<td
style=
"vertical-align: top;"
class=
"text-center"
>
<td
style=
"vertical-align: top;"
class=
"text-center"
>
2.งานที่รับผิดชอบ (งานปฏิบัติ)
2.งานที่รับผิดชอบ (งานปฏิบัติ)
</td>
</td>
<td
style=
"vertical-align: top;"
>
<td
style=
"vertical-align: top;"
>
1. บันทึกบัญชีเจ้าหนี้/ลูกหนี้
<p></p>
{{empDetail.data.responsibleWorkText}}
2. จัดทำใบสำคัญจ่าย-รับ
<p></p>
</td>
3. ตรวจสอบเอกสารภาษี
<p></p>
<td
class=
"text-center"
>
4. ติดตามเอกสารค่าใช้จ่ายจากหน่วยงาน
<p></p>
{{empDetail.data.responsibleWorkPercent}}
5. สนับสนุนการปิดงบ
</td>
</td>
<td
class=
"text-center"
>
70%
</td>
</tr>
</tr>
<tr
style=
"align-items: start"
>
<tr
style=
"align-items: start"
>
<td
style=
"vertical-align: top;"
class=
"text-center"
>
<td
style=
"vertical-align: top;"
class=
"text-center"
>
3.งานที่ได้รับมอบหมายพิเศษ
3.งานที่ได้รับมอบหมายพิเศษ
</td>
</td>
<td
style=
"vertical-align: top;"
>
<td
style=
"vertical-align: top;"
>
1. งานโครงการตรวจสอบบัญชี
<p></p>
{{empDetail.data.specialWorkText}}
2. งานตรวจสอบภายในเบื้องต้น
</td>
<td
class=
"text-center"
>
{{empDetail.data.specialWorkPercent}}
</td>
</td>
<td
class=
"text-center"
>
10%
</td>
</tr>
</tr>
<tr
style=
"align-items: start"
>
<tr
style=
"align-items: start"
>
<td
style=
"vertical-align: top;"
class=
"text-center"
>
<td
style=
"vertical-align: top;"
class=
"text-center"
>
4.งานที่ทุกตำแหน่งต้องปฏิบัต
4.งานที่ทุกตำแหน่งต้องปฏิบัต
</td>
</td>
<td
style=
"vertical-align: top;"
>
<td
style=
"vertical-align: top;"
>
1. เข้าร่วมกิจกรรมองค์กร
<p></p>
{{empDetail.data.allPositionWorkText}}
2. ปฏิบัติตามระเบียบวินัย
<p></p>
</td>
3. รักษาความลับข้อมูล
<p></p>
<td
class=
"text-center"
>
4. รายงานความผิดปกติ
<p></p>
{{empDetail.data.allPositionWorkPercent}}
5. ทำงานร่วมกับทีม
</td>
</td>
<td
class=
"text-center"
>
15%
</td>
</tr>
</tr>
<tr
style=
"align-items: start"
>
<tr
style=
"align-items: start"
>
<td
style=
"vertical-align: top;"
class=
"text-center"
>
<td
style=
"vertical-align: top;"
class=
"text-center"
>
5.อื่นๆ
5.อื่นๆ
</td>
</td>
<td
style=
"vertical-align: top;"
>
<td
style=
"vertical-align: top;"
>
1. สนับสนุนการฝึกอบรม/ตรวจนับ
<p></p>
{{empDetail.data.otherWorkText}}
2. งานด้านจัดซื้อที่เกี่ยวข้อง
</td>
<td
class=
"text-center"
>
{{empDetail.data.otherWorkPercent}}
</td>
</td>
<td
class=
"text-center"
>
5%
</td>
</tr>
</tr>
</tbody>
</tbody>
</table>
</table>
</div>
</div>
</ng-template>
</ng-template>
<ng-template
#
part4
>
<ng-template
#
part4
>
<h5
class=
"box-title mb-3"
>
ส่วนที่ 4 : คุณสมบัติที่จำเป็นต่อการปฏิบัติหน้าที่ (Job Specification)
</h5>
<div
class=
"p-2 pt-0"
>
<div
class=
"p-2 pt-0"
>
<h5
class=
"box-title mb-3"
>
การศึกษา/ประสบการณ์ (Education/Experience)
</h5>
<h5
class=
"box-title mb-3"
>
การศึกษา/ประสบการณ์ (Education/Experience)
</h5>
<div
class=
"overflow-auto w-1/2 mb-3"
>
<div
class=
"overflow-auto w-1/2 mb-3"
>
<table
class=
"ti-custom-table border-0 whitespace-nowrap"
>
<table
class=
"ti-custom-table border-0 whitespace-nowrap"
>
<tbody>
<tbody>
<tr
class=
"!border-0"
>
<tr
class=
"!border-0"
>
<td
class=
"!p-2 font-medium !text-gray-500 dark:!text-white/70"
>
<td
class=
"!p-2 font-medium !text-gray-500"
>
วุฒิ
{{empDetail.data.educationExperienceText}}
</td>
<td
class=
"!p-2"
>
:
</td>
<td
class=
"!p-2 !text-gray-500 dark:!text-white/70"
>
ปริญญาตรี
</td>
</tr>
<tr
class=
"!border-0"
>
<td
class=
"!p-2 font-medium !text-gray-500 dark:!text-white/70"
>
สาขาวิชา
</td>
<td
class=
"!p-2"
>
:
</td>
<td
class=
"!p-2 !text-gray-500 dark:!text-white/70"
>
บัญชี หรือการเงิน
</td>
</tr>
<tr
class=
"!border-0"
>
<td
class=
"!p-2 font-medium !text-gray-500 dark:!text-white/70"
>
ประสบการณ์ด้าน
</td>
<td
class=
"!p-2"
>
:
</td>
<td
class=
"!p-2 !text-gray-500 dark:!text-white/70"
>
ด้านบัญชี
</td>
</tr>
<tr
class=
"!border-0"
>
<td
class=
"!p-2 font-medium !text-gray-500 dark:!text-white/70"
>
อย่างน้อย
</td>
<td
class=
"!p-2"
>
:
</td>
<td
class=
"!p-2 !text-gray-500 dark:!text-white/70"
>
1 ปี
</td>
</td>
</tr>
</tr>
</tbody>
</tbody>
...
@@ -402,8 +587,8 @@
...
@@ -402,8 +587,8 @@
<table
class=
"ti-custom-table border-0 whitespace-nowrap"
>
<table
class=
"ti-custom-table border-0 whitespace-nowrap"
>
<tbody>
<tbody>
<tr
class=
"!border-0"
>
<tr
class=
"!border-0"
>
<td
class=
"!p-2 font-medium !text-gray-500
dark:!text-white/70
"
>
<td
class=
"!p-2 font-medium !text-gray-500"
>
1. หากมี CPA / CPD จะพิจารณาเป็นพิเศษ
{{empDetail.data.cerLicensedText}}
</td>
</td>
</tr>
</tr>
</tbody>
</tbody>
...
@@ -415,18 +600,8 @@
...
@@ -415,18 +600,8 @@
<table
class=
"ti-custom-table border-0 whitespace-nowrap"
>
<table
class=
"ti-custom-table border-0 whitespace-nowrap"
>
<tbody>
<tbody>
<tr
class=
"!border-0"
>
<tr
class=
"!border-0"
>
<td
class=
"!p-2 font-medium !text-gray-500 dark:!text-white/70"
>
<td
class=
"!p-2 font-medium !text-gray-500"
>
1. มาตรฐานบัญช
{{empDetail.data.especiallyTrainingText}}
</td>
</tr>
<tr
class=
"!border-0"
>
<td
class=
"!p-2 font-medium !text-gray-500 dark:!text-white/70"
>
2. โปรแกรมบัญชีสำเร็จรูป
</td>
</tr>
<tr
class=
"!border-0"
>
<td
class=
"!p-2 font-medium !text-gray-500 dark:!text-white/70"
>
3. ภาษีอากร
</td>
</td>
</tr>
</tr>
</tbody>
</tbody>
...
@@ -438,68 +613,24 @@
...
@@ -438,68 +613,24 @@
<table
class=
"ti-custom-table border-0 whitespace-nowrap"
>
<table
class=
"ti-custom-table border-0 whitespace-nowrap"
>
<tbody>
<tbody>
<tr
class=
"!border-0"
>
<tr
class=
"!border-0"
>
<td
class=
"!p-2 font-medium !text-gray-500 dark:!text-white/70"
>
<td
class=
"!p-2 font-medium !text-gray-500"
>
<b>
{{empDetail.data.otherAbilitiesText}}
ภาษา (Language) : (ระบุ : ฟัง, พูด, อ่าน, เขียน)
</b>
<p></p>
1. อังกฤษ (ฟัง, พูด, อ่าน, เขียน) มาตรฐาน TOEIC ≥ 500 คะแนน
</td>
</tr>
<tr
class=
"!border-0"
>
<td
class=
"!p-2 font-medium !text-gray-500 dark:!text-white/70"
>
<b>
โปรแกรมคอมพิวเตอร์ (Computer Program)
</b>
<p></p>
1. Microsoft Excel
<p></p>
2. โปรแกรมบัญชี (เช่น Express, QuickBooks)
</td>
</tr>
<tr
class=
"!border-0"
>
<td
class=
"!p-2 font-medium !text-gray-500 dark:!text-white/70"
>
<b>
อื่นๆ (Others) :
</b>
<p></p>
1. ความละเอียดรอบคอบ
<p></p>
2. การจัดการเวลา
</td>
</td>
</tr>
</tr>
</tbody>
</tbody>
</table>
</table>
</div>
</div>
</div>
</div>
</ng-template>
</ng-template>
<ng-template
#
part5
>
<ng-template
#
part5
>
<h5
class=
"box-title mb-3"
>
ส่วนที่ 5 : ความรู้ ทักษะ ความสามารถในตำแหน่งงาน (Job Competency)
</h5>
<div
class=
"p-2 pt-0"
>
<div
class=
"p-2 pt-0"
>
<div
class=
"overflow-auto w-1/2 mb-3"
>
<div
class=
"overflow-auto w-1/2 mb-3"
>
<table
class=
"ti-custom-table border-0 whitespace-nowrap"
>
<table
class=
"ti-custom-table border-0 whitespace-nowrap"
>
<tbody>
<tbody>
<tr
class=
"!border-0"
>
<tr
class=
"!border-0"
>
<td
class=
"!p-2 font-medium !text-gray-500 dark:!text-white/70"
>
<td
class=
"!p-2 font-medium !text-gray-500"
>
1. ความรู้ด้านบัญชีและภาษีอากร
{{empDetail.data.competencyWorkText}}
</td>
</tr>
<tr
class=
"!border-0"
>
<td
class=
"!p-2 font-medium !text-gray-500 dark:!text-white/70"
>
2. ความสามารถในการใช้โปรแกรมบัญช
</td>
</tr>
<tr
class=
"!border-0"
>
<td
class=
"!p-2 font-medium !text-gray-500 dark:!text-white/70"
>
3. ทักษะการจัดการเวลา
</td>
</tr>
<tr
class=
"!border-0"
>
<td
class=
"!p-2 font-medium !text-gray-500 dark:!text-white/70"
>
4. ความละเอียดรอบคอบและความถูกต้อง
</td>
</tr>
<tr
class=
"!border-0"
>
<td
class=
"!p-2 font-medium !text-gray-500 dark:!text-white/70"
>
5. การทำงานเป็นทีม
</td>
</td>
</tr>
</tr>
</tbody>
</tbody>
...
@@ -508,34 +639,13 @@
...
@@ -508,34 +639,13 @@
</div>
</div>
</ng-template>
</ng-template>
<ng-template
#
part6
>
<ng-template
#
part6
>
<h5
class=
"box-title mb-3"
>
ส่วนที่ 6 : ตัวชี้วัดของตำแหน่งงาน (Key Performance Indicators: KPIs)
</h5>
<div
class=
"p-2 pt-0"
>
<div
class=
"p-2 pt-0"
>
<div
class=
"overflow-auto w-1/2 mb-3"
>
<div
class=
"overflow-auto w-1/2 mb-3"
>
<table
class=
"ti-custom-table border-0 whitespace-nowrap"
>
<table
class=
"ti-custom-table border-0 whitespace-nowrap"
>
<tbody>
<tbody>
<tr
class=
"!border-0"
>
<tr
class=
"!border-0"
>
<td
class=
"!p-2 font-medium !text-gray-500 dark:!text-white/70"
>
<td
class=
"!p-2 font-medium !text-gray-500"
>
1. ความถูกต้องของรายการบัญชี ≥ 98%
{{empDetail.data.kpiWorkText}}
</td>
</tr>
<tr
class=
"!border-0"
>
<td
class=
"!p-2 font-medium !text-gray-500 dark:!text-white/70"
>
2. ส่งงบการเงินรายเดือนตรงเวลา 100%
</td>
</tr>
<tr
class=
"!border-0"
>
<td
class=
"!p-2 font-medium !text-gray-500 dark:!text-white/70"
>
3. ความครบถ้วนของเอกสารประกอบบัญชี ≥ 95%
</td>
</tr>
<tr
class=
"!border-0"
>
<td
class=
"!p-2 font-medium !text-gray-500 dark:!text-white/70"
>
4. ลดข้อผิดพลาดจากการตรวจสอบภายใน
</td>
</tr>
<tr
class=
"!border-0"
>
<td
class=
"!p-2 font-medium !text-gray-500 dark:!text-white/70"
>
5. ระยะเวลาการปิดบัญชีรายเดือน ≤ 5 วันทำการ
</td>
</td>
</tr>
</tr>
</tbody>
</tbody>
...
...
src/app/components/job-description-e
ss/job-description-ess
.component.scss
→
src/app/components/job-description-e
mp/job-description-emp
.component.scss
View file @
038a89a0
File moved
src/app/components/job-description-emp/job-description-emp.component.ts
0 → 100644
View file @
038a89a0
import
{
ViewportScroller
}
from
'@angular/common'
;
import
{
ChangeDetectorRef
,
Component
}
from
'@angular/core'
;
import
{
MatDialog
}
from
'@angular/material/dialog'
;
import
{
TranslateService
}
from
'@ngx-translate/core'
;
import
{
ToastrService
}
from
'ngx-toastr'
;
import
{
EmployeeModel
,
MyEmployeeModel
}
from
'src/app/shared/model/employee.model'
;
import
{
JobCodeModel
,
MyJobCodeModel
}
from
'src/app/shared/model/job-code.model'
;
import
{
MyStatusModel
,
StatusModel
}
from
'src/app/shared/model/status.model'
;
import
{
EmpStatusService
}
from
'src/app/shared/services/emp-status.service'
;
import
{
EmployeeService
}
from
'src/app/shared/services/employee.service'
;
import
{
EventgrpService
}
from
'src/app/shared/services/eventgrp.service'
;
import
{
FileService
}
from
'src/app/shared/services/file.service'
;
import
{
JobcodeService
}
from
'src/app/shared/services/jobcode.service'
;
import
{
PmsWorkingTimeService
}
from
'src/app/shared/services/pms-working-time.service'
;
export
interface
BiModel
{
name
:
string
,
tools
:
string
[],
degree
:
string
}
@
Component
({
selector
:
'app-job-description-emp'
,
templateUrl
:
'./job-description-emp.component.html'
,
styleUrls
:
[
'./job-description-emp.component.scss'
]
})
export
class
JobDescriptionEmpComponent
{
pathTitle
=
[
'menu.Organization'
,
'ข้อมูลลักษณะงาน (JD)'
]
currentPage
=
1
empDetail
:
{
loading
:
boolean
,
data
:
JobCodeModel
}
=
{
loading
:
false
,
data
:
new
MyJobCodeModel
({})
}
constructor
(
private
toastr
:
ToastrService
,
private
cdr
:
ChangeDetectorRef
,
private
dialog
:
MatDialog
,
private
fileService
:
FileService
,
private
eventgrpService
:
EventgrpService
,
private
jobcode
:
JobcodeService
,
private
translateService
:
TranslateService
)
{
this
.
translateService
.
onLangChange
.
subscribe
((
event
)
=>
{
});
}
ngOnInit
():
void
{
this
.
getEmp
()
}
getEmp
()
{
this
.
empDetail
.
loading
=
true
this
.
jobcode
.
getEmp
().
subscribe
({
next
:
response
=>
{
this
.
empDetail
.
data
=
new
MyJobCodeModel
(
response
)
this
.
empDetail
.
loading
=
false
this
.
cdr
.
detectChanges
()
},
error
:
error
=>
{
this
.
empDetail
.
loading
=
false
this
.
cdr
.
detectChanges
()
}
})
}
}
\ No newline at end of file
src/app/components/job-description-ess/job-description-ess.component.ts
deleted
100644 → 0
View file @
e70c95d7
import
{
ViewportScroller
}
from
'@angular/common'
;
import
{
ChangeDetectorRef
,
Component
}
from
'@angular/core'
;
import
{
EmployeeModel
,
MyEmployeeModel
}
from
'src/app/shared/model/employee.model'
;
import
{
MyStatusModel
,
StatusModel
}
from
'src/app/shared/model/status.model'
;
import
{
EmpStatusService
}
from
'src/app/shared/services/emp-status.service'
;
import
{
EmployeeService
}
from
'src/app/shared/services/employee.service'
;
import
{
FileService
}
from
'src/app/shared/services/file.service'
;
export
interface
BiModel
{
name
:
string
,
tools
:
string
[],
degree
:
string
}
@
Component
({
selector
:
'app-job-description-ess'
,
templateUrl
:
'./job-description-ess.component.html'
,
styleUrls
:
[
'./job-description-ess.component.scss'
]
})
export
class
JobDescriptionEssComponent
{
}
\ No newline at end of file
src/app/shared/model/job-code.model.ts
View file @
038a89a0
...
@@ -52,6 +52,7 @@ export interface JobCodeModel {
...
@@ -52,6 +52,7 @@ export interface JobCodeModel {
jl
:
JlModel
jl
:
JlModel
supervisorJobCode
:
SupervisorJobCodeModel
supervisorJobCode
:
SupervisorJobCodeModel
expectation
:
number
|
null
expectation
:
number
|
null
positionInJob
:
PositionInJobModel
[]
}
}
export
class
MyJobCodeModel
implements
JobCodeModel
{
export
class
MyJobCodeModel
implements
JobCodeModel
{
...
@@ -98,6 +99,7 @@ export class MyJobCodeModel implements JobCodeModel {
...
@@ -98,6 +99,7 @@ export class MyJobCodeModel implements JobCodeModel {
jl
:
JlModel
jl
:
JlModel
supervisorJobCode
:
SupervisorJobCodeModel
supervisorJobCode
:
SupervisorJobCodeModel
expectation
:
number
|
null
expectation
:
number
|
null
positionInJob
:
PositionInJobModel
[]
constructor
(
data
:
Partial
<
JobCodeModel
>
)
{
constructor
(
data
:
Partial
<
JobCodeModel
>
)
{
this
.
jobcodeId
=
data
.
jobcodeId
||
""
this
.
jobcodeId
=
data
.
jobcodeId
||
""
this
.
companyId
=
data
.
companyId
||
""
this
.
companyId
=
data
.
companyId
||
""
...
@@ -142,11 +144,26 @@ export class MyJobCodeModel implements JobCodeModel {
...
@@ -142,11 +144,26 @@ export class MyJobCodeModel implements JobCodeModel {
this
.
jl
=
new
MyJlModel
(
data
?.
jl
)
this
.
jl
=
new
MyJlModel
(
data
?.
jl
)
this
.
supervisorJobCode
=
new
MySupervisorJobCodeModel
(
data
?.
supervisorJobCode
)
this
.
supervisorJobCode
=
new
MySupervisorJobCodeModel
(
data
?.
supervisorJobCode
)
this
.
expectation
=
data
?.
expectation
??
null
this
.
expectation
=
data
?.
expectation
??
null
this
.
positionInJob
=
(
data
?.
positionInJob
||
[]).
map
(
e
=>
new
MyPositionInJobModel
(
e
))
}
}
}
}
export
interface
PositionInJobModel
{
countPosition
:
number
position
:
PositionModel
}
export
class
MyPositionInJobModel
implements
PositionInJobModel
{
countPosition
:
number
position
:
PositionModel
constructor
(
data
?:
Partial
<
PositionInJobModel
>
)
{
this
.
countPosition
=
data
?.
countPosition
??
0
this
.
position
=
new
MyPositionModel
(
data
?.
position
||
{})
}
}
export
interface
SupervisorJobCodeModel
{
export
interface
SupervisorJobCodeModel
{
jobCodeId
:
string
jobCodeId
:
string
tdesc
:
string
tdesc
:
string
...
...
src/app/shared/services/jobcode.service.ts
View file @
038a89a0
...
@@ -4,6 +4,7 @@ import { Observable } from 'rxjs';
...
@@ -4,6 +4,7 @@ import { Observable } from 'rxjs';
import
{
environment
}
from
'src/environments/environment'
;
import
{
environment
}
from
'src/environments/environment'
;
import
{
AlertModel
}
from
'../model/alert.model'
;
import
{
AlertModel
}
from
'../model/alert.model'
;
import
{
JobcodeModel
}
from
'../model/jobcode.model'
;
import
{
JobcodeModel
}
from
'../model/jobcode.model'
;
import
{
JobCodeModel
}
from
'../model/job-code.model'
;
@
Injectable
({
@
Injectable
({
providedIn
:
'root'
providedIn
:
'root'
})
})
...
@@ -12,6 +13,9 @@ export class JobcodeService {
...
@@ -12,6 +13,9 @@ export class JobcodeService {
urlApi
=
environment
.
baseUrl
+
this
.
api
urlApi
=
environment
.
baseUrl
+
this
.
api
constructor
(
private
http
:
HttpClient
)
{
constructor
(
private
http
:
HttpClient
)
{
}
}
getEmp
():
Observable
<
JobCodeModel
>
{
return
this
.
http
.
get
<
JobCodeModel
>
(
this
.
urlApi
+
"/emp"
)
}
getById
(
plId
:
string
):
Observable
<
JobcodeModel
>
{
getById
(
plId
:
string
):
Observable
<
JobcodeModel
>
{
return
this
.
http
.
get
<
JobcodeModel
>
(
this
.
urlApi
+
"/"
+
plId
)
return
this
.
http
.
get
<
JobcodeModel
>
(
this
.
urlApi
+
"/"
+
plId
)
}
}
...
...
src/app/shared/services/navservice.ts
View file @
038a89a0
...
@@ -186,6 +186,7 @@ export class NavService implements OnDestroy {
...
@@ -186,6 +186,7 @@ export class NavService implements OnDestroy {
{
id
:
'm24'
,
path
:
'admin/day-type-registry'
,
title
:
'menu.LeaveType'
,
type
:
'link'
,
show
:
true
},
{
id
:
'm24'
,
path
:
'admin/day-type-registry'
,
title
:
'menu.LeaveType'
,
type
:
'link'
,
show
:
true
},
{
id
:
'm25'
,
path
:
'admin/account-settings'
,
title
:
'menu.UserSetting'
,
type
:
'link'
,
show
:
true
},
{
id
:
'm25'
,
path
:
'admin/account-settings'
,
title
:
'menu.UserSetting'
,
type
:
'link'
,
show
:
true
},
{
id
:
'm26'
,
path
:
'admin/role-permission-config'
,
title
:
'menu.AccessPermissions'
,
type
:
'link'
,
show
:
true
},
{
id
:
'm26'
,
path
:
'admin/role-permission-config'
,
title
:
'menu.AccessPermissions'
,
type
:
'link'
,
show
:
true
},
{
id
:
'm27'
,
path
:
'admin/job-description-emp'
,
title
:
'ข้อมูลลักษณะงาน (JD)'
,
type
:
'link'
,
show
:
true
},
],
],
},
},
{
{
...
...
src/assets/i18n/en.json
View file @
038a89a0
...
@@ -196,5 +196,11 @@
...
@@ -196,5 +196,11 @@
"ExcelReport"
:
"Excel Report"
,
"ExcelReport"
:
"Excel Report"
,
"EvaluationPeriod"
:
"Evaluation Period"
,
"EvaluationPeriod"
:
"Evaluation Period"
,
"JobDescription(JD)"
:
"Job Description (JD)"
,
"JobDescription(JD)"
:
"Job Description (JD)"
,
"NoteIfYouDoNotSelectAJDLevelTheSystemWillSelectAll"
:
"Note: If you do not select a JD level, The system will select all."
"NoteIfYouDoNotSelectAJDLevelTheSystemWillSelectAll"
:
"Note: If you do not select a JD level, The system will select all."
,
"Part 1 : General Information"
:
"Part 1 : General Information"
,
"Part 2 : Organization Chart"
:
"Part 2 : Organization Chart"
,
"Part 3 : Job Detail"
:
"Part 3 : Job Detail"
,
"Part 4 : Job Specification"
:
"Part 4 : Job Specification"
,
"Part 5 : Job Competency"
:
"Part 5 : Job Competency"
,
"Part 6 : Key Performance Indicators: KPIs"
:
"Part 6 : Key Performance Indicators: KPIs"
}
}
\ No newline at end of file
src/assets/i18n/th.json
View file @
038a89a0
...
@@ -199,5 +199,11 @@
...
@@ -199,5 +199,11 @@
"ExcelReport"
:
"รายงาน"
,
"ExcelReport"
:
"รายงาน"
,
"EvaluationPeriod"
:
"แก้ไขรอบการประเมิน"
,
"EvaluationPeriod"
:
"แก้ไขรอบการประเมิน"
,
"JobDescription(JD)"
:
"ลักษณะงาน (JD)"
,
"JobDescription(JD)"
:
"ลักษณะงาน (JD)"
,
"NoteIfYouDoNotSelectAJDLevelTheSystemWillSelectAll"
:
"หมายเหตุ ถ้าไม่เลือกระดับ JD ระบบจะทำการเลือกทั้งหมด"
"NoteIfYouDoNotSelectAJDLevelTheSystemWillSelectAll"
:
"หมายเหตุ ถ้าไม่เลือกระดับ JD ระบบจะทำการเลือกทั้งหมด"
,
"Part 1 : General Information"
:
"ส่วนที่ 1 : ข้อมูลทั่วไป"
,
"Part 2 : Organization Chart"
:
"ส่วนที่ 2 : โครงสร้างสายการบังคับบัญชา"
,
"Part 3 : Job Detail"
:
"ส่วนที่ 3 : รายละเอียดของงาน"
,
"Part 4 : Job Specification"
:
"ส่วนที่ 4 : คุณสมบัติที่จำเป็นต่อการปฏิบัติหน้าที่"
,
"Part 5 : Job Competency"
:
"ส่วนที่ 5 : ความรู้ ทักษะ ความสามารถในตำแหน่งงาน"
,
"Part 6 : Key Performance Indicators: KPIs"
:
"ส่วนที่ 6 : ตัวชี้วัดของตำแหน่งงาน"
}
}
\ 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