feat: add position and salary review
This commit is contained in:
parent
226469dd85
commit
9f5d1f7913
9 changed files with 1589 additions and 79 deletions
1061
src/modules/10_registry/components/PositionReview/Table.vue
Normal file
1061
src/modules/10_registry/components/PositionReview/Table.vue
Normal file
File diff suppressed because it is too large
Load diff
76
src/modules/10_registry/interface/review/Edit.ts
Normal file
76
src/modules/10_registry/interface/review/Edit.ts
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
interface DataSalaryPos {
|
||||
avatar: string;
|
||||
avatarName: string;
|
||||
citizenId: string;
|
||||
firstName: string;
|
||||
id: string;
|
||||
lastName: string;
|
||||
org: string;
|
||||
orgRevisionId: string;
|
||||
orgRootShortName: string;
|
||||
posExecutive: string;
|
||||
posLevel: string;
|
||||
posLevelId: string;
|
||||
posNo: string;
|
||||
posType: string;
|
||||
posTypeId: string;
|
||||
position: string;
|
||||
prefix: string;
|
||||
rank: string;
|
||||
root: string;
|
||||
rootId: string;
|
||||
statusCheckEdit: string;
|
||||
type: string;
|
||||
}
|
||||
|
||||
interface DataPosition {
|
||||
no?: number;
|
||||
amount: number;
|
||||
amountSpecial: number;
|
||||
commandCode: string;
|
||||
commandDateAffect: Date;
|
||||
commandDateSign: Date;
|
||||
commandId: string;
|
||||
commandName: string;
|
||||
commandNo: string;
|
||||
commandYear: number;
|
||||
createdAt: string;
|
||||
createdFullName: string;
|
||||
createdUserId: string;
|
||||
dateGovernment: string;
|
||||
id: string;
|
||||
isDelete: boolean;
|
||||
isEdit: boolean;
|
||||
isEntry: boolean;
|
||||
isGovernment: string;
|
||||
lastUpdateFullName: string;
|
||||
lastUpdateUserId: string;
|
||||
lastUpdatedAt: string;
|
||||
mouthSalaryAmount: number;
|
||||
order: number;
|
||||
orgChild1: string;
|
||||
orgChild2: string;
|
||||
orgChild3: string;
|
||||
orgChild4: string;
|
||||
orgRoot: string;
|
||||
posNo: string;
|
||||
posNoAbb: string;
|
||||
positionCee: string;
|
||||
positionExecutive: string;
|
||||
positionLevel: string;
|
||||
positionLine: string;
|
||||
positionName: string;
|
||||
positionPathSide: string;
|
||||
positionSalaryAmount: number;
|
||||
positionType: string;
|
||||
profileEmployeeId: string;
|
||||
profileId: string;
|
||||
refId: number;
|
||||
remark: string;
|
||||
salaryId: string;
|
||||
status: string;
|
||||
posNumCodeSitAbb: string;
|
||||
posNumCodeSit: string;
|
||||
}
|
||||
|
||||
export type { DataSalaryPos, DataPosition };
|
||||
155
src/modules/10_registry/interface/review/Main.ts
Normal file
155
src/modules/10_registry/interface/review/Main.ts
Normal file
|
|
@ -0,0 +1,155 @@
|
|||
interface Pagination {
|
||||
rowsPerPage: number;
|
||||
}
|
||||
|
||||
interface DataOption {
|
||||
id: string;
|
||||
name: string;
|
||||
}
|
||||
interface DataOption2 {
|
||||
id: number;
|
||||
name: string;
|
||||
}
|
||||
|
||||
interface DataOptionSys {
|
||||
id: string;
|
||||
name: string;
|
||||
system: string;
|
||||
}
|
||||
interface DataOptionInsignia {
|
||||
id: string;
|
||||
name: string;
|
||||
typeId: string;
|
||||
typeName: string;
|
||||
}
|
||||
|
||||
interface DataOptionEducation {
|
||||
label: string;
|
||||
value: boolean;
|
||||
}
|
||||
|
||||
interface DataOptionEducationLevel {
|
||||
label: string;
|
||||
value: string;
|
||||
}
|
||||
|
||||
interface zipCodeOption {
|
||||
id: string;
|
||||
name: string;
|
||||
zipCode: string;
|
||||
}
|
||||
|
||||
interface InformationOps {
|
||||
prefixOps: DataOption[];
|
||||
rankOps: DataOption[];
|
||||
genderOps: DataOption[];
|
||||
bloodOps: DataOption[];
|
||||
statusOps: DataOption[];
|
||||
religionOps: DataOption[];
|
||||
employeeClassOps: DataOption[];
|
||||
employeeTypeOps: DataOption[];
|
||||
}
|
||||
|
||||
interface AddressOps {
|
||||
provinceOps: DataOption[];
|
||||
districtOps: DataOption[];
|
||||
districtCOps: DataOption[];
|
||||
subdistrictOps: zipCodeOption[];
|
||||
subdistrictCOps: zipCodeOption[];
|
||||
}
|
||||
|
||||
interface InsigniaOps {
|
||||
insigniaOptions: DataOptionInsignia[];
|
||||
}
|
||||
|
||||
interface ItemTab {
|
||||
name: string;
|
||||
icon: string;
|
||||
label: string;
|
||||
}
|
||||
|
||||
interface Request {
|
||||
createdAt: string;
|
||||
createdFullName: string;
|
||||
detail: string;
|
||||
fullname: string;
|
||||
id: string;
|
||||
idcard: string;
|
||||
lastUpdateFullName: string;
|
||||
lastUpdatedAt: string;
|
||||
profileId: string;
|
||||
remark: string;
|
||||
status: string;
|
||||
topic: string;
|
||||
}
|
||||
|
||||
interface InsigniasType {
|
||||
id: string;
|
||||
createdAt: Date;
|
||||
createdUserId: string;
|
||||
lastUpdatedAt: Date;
|
||||
lastUpdateUserId: string;
|
||||
createdFullName: string;
|
||||
lastUpdateFullName: string;
|
||||
name: string;
|
||||
isActive: boolean;
|
||||
insignias: InsigniasTypeSub[];
|
||||
}
|
||||
|
||||
interface InsigniasTypeSub {
|
||||
id: string;
|
||||
createdAt: Date;
|
||||
createdUserId: string;
|
||||
lastUpdatedAt: Date;
|
||||
lastUpdateUserId: string;
|
||||
createdFullName: string;
|
||||
lastUpdateFullName: string;
|
||||
name: string;
|
||||
shortName: string;
|
||||
level: string;
|
||||
isActive: string;
|
||||
note: string;
|
||||
insigniaTypeId: string;
|
||||
}
|
||||
|
||||
interface ResFileData {
|
||||
downloadUrl: string;
|
||||
fileName: string;
|
||||
path: string;
|
||||
pathname: string;
|
||||
}
|
||||
|
||||
interface DataHistory {
|
||||
[key: string]: string | number | Date | boolean;
|
||||
}
|
||||
|
||||
interface DataCommandCode {
|
||||
id: string;
|
||||
createdAt: Date;
|
||||
lastUpdatedAt: Date;
|
||||
createdFullName: string;
|
||||
lastUpdateFullName: string;
|
||||
name: string;
|
||||
code: number;
|
||||
}
|
||||
|
||||
export type {
|
||||
Pagination,
|
||||
DataOption,
|
||||
DataOption2,
|
||||
DataOptionInsignia,
|
||||
zipCodeOption,
|
||||
InformationOps,
|
||||
AddressOps,
|
||||
InsigniaOps,
|
||||
DataOptionSys,
|
||||
ItemTab,
|
||||
DataOptionEducation,
|
||||
DataOptionEducationLevel,
|
||||
Request,
|
||||
InsigniasType,
|
||||
InsigniasTypeSub,
|
||||
ResFileData,
|
||||
DataHistory,
|
||||
DataCommandCode,
|
||||
};
|
||||
|
|
@ -17,6 +17,8 @@ const requestEditMain = () =>
|
|||
import("@/modules/10_registry/views/requestEditMain.vue");
|
||||
const requestEditDetail = () =>
|
||||
import("@/modules/10_registry/views/requestEditDetail.vue");
|
||||
const positionReviewPage = () =>
|
||||
import("@/modules/10_registry/views/positionReview.vue");
|
||||
|
||||
export default [
|
||||
{
|
||||
|
|
@ -93,4 +95,15 @@ export default [
|
|||
Key: [10],
|
||||
},
|
||||
},
|
||||
|
||||
// ตรวจสอบข้อมูลตำแหน่งและเงินเดือน
|
||||
{
|
||||
path: "/registry/position-review",
|
||||
name: "position-review",
|
||||
component: positionReviewPage,
|
||||
meta: {
|
||||
Auth: true,
|
||||
Key: [10],
|
||||
},
|
||||
},
|
||||
];
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ const {} = mixin;
|
|||
export const useGovernmentPosDataStore = defineStore("GovernmentPos", () => {
|
||||
// commandCode ขอตำแหน่ง
|
||||
const positionCode = ref<number[]>([
|
||||
0, 1, 2, 3, 4, 8, 9, 10, 11, 12, 13, 14, 15, 16,
|
||||
0, 1, 2, 3, 4, 8, 9, 10, 11, 12, 13, 14, 15, 16, 20,
|
||||
]);
|
||||
|
||||
const commandCodeData = ref<DataOption[]>([]);
|
||||
|
|
|
|||
|
|
@ -52,11 +52,11 @@ async function onClickDownloadKp7(type: string) {
|
|||
type === "FULL"
|
||||
? config.API.profileReportId(
|
||||
store.profileId,
|
||||
dataStore.officerType == "OFFICER" ? "profile" : "profile-employee"
|
||||
dataStore.officerType == "OFFICER" ? "profile" : "profile-employee",
|
||||
)
|
||||
: config.API.profileKp7ShortId(
|
||||
store.profileId,
|
||||
dataStore.officerType == "OFFICER" ? "profile" : "profile-employee"
|
||||
dataStore.officerType == "OFFICER" ? "profile" : "profile-employee",
|
||||
);
|
||||
const fileName = type === "FULL" ? "ทปอ. สามัญ" : "ประวัติแบบย่อ";
|
||||
await http
|
||||
|
|
@ -78,11 +78,6 @@ const clickBack = () => {
|
|||
router.push(`/`);
|
||||
};
|
||||
|
||||
/** ฟังก์ชัน redirect ไปหน้ารายการคำร้องขอแก้ไขข้อมูล*/
|
||||
function redirectToPagePetition() {
|
||||
router.push(`/registry/request-edit`);
|
||||
}
|
||||
|
||||
function onMobile(type: string) {
|
||||
router.push(`/registry/${type}`);
|
||||
}
|
||||
|
|
@ -103,10 +98,20 @@ function onMobile(type: string) {
|
|||
@click="clickBack"
|
||||
/>
|
||||
ข้อมูลทะเบียนประวัติ <q-space />
|
||||
<q-btn
|
||||
color="blue-6"
|
||||
icon="mdi-eye"
|
||||
label="ตรวจสอบข้อมูลตำแหน่งและเงินเดือน"
|
||||
class="q-mr-sm"
|
||||
@click="() => router.push('/registry/position-review')"
|
||||
>
|
||||
<q-tooltip>ไปยังหน้าตรวจสอบข้อมูลตำแหน่งและเงินเดือน</q-tooltip>
|
||||
</q-btn>
|
||||
|
||||
<q-btn
|
||||
color="primary"
|
||||
label="ยื่นคำร้องขอแก้ไขข้อมูล"
|
||||
@click="redirectToPagePetition"
|
||||
@click="() => router.push('/registry/request-edit')"
|
||||
>
|
||||
<q-tooltip>ยื่นคำร้องขอแก้ไขข้อมูล</q-tooltip>
|
||||
</q-btn>
|
||||
|
|
|
|||
197
src/modules/10_registry/views/positionReview.vue
Normal file
197
src/modules/10_registry/views/positionReview.vue
Normal file
|
|
@ -0,0 +1,197 @@
|
|||
<script setup lang="ts">
|
||||
import { ref, onMounted } from "vue";
|
||||
// import { useQuasar } from "quasar";
|
||||
|
||||
// import http from "@/plugins/http";
|
||||
// import config from "@/app.config";
|
||||
// import { useCounterMixin } from "@/stores/mixin";
|
||||
import { useRoute, useRouter } from "vue-router";
|
||||
// import { useDataStore } from "@/stores/data";
|
||||
|
||||
/** importType*/
|
||||
// import type { DataProfile } from "@/modules/04_registryPerson/interface/index/Edit";
|
||||
|
||||
import Table from "@/modules/10_registry/components/PositionReview/Table.vue";
|
||||
// import DialogEdit from "@/modules/04_registryPerson/views/edit/components/DialogEdit.vue";
|
||||
|
||||
// const dataStore = useDataStore();
|
||||
// const $q = useQuasar();
|
||||
// const { showLoader, hideLoader, messageError, dialogConfirm, success } =
|
||||
// useCounterMixin();
|
||||
// const route = useRoute();
|
||||
const router = useRouter();
|
||||
|
||||
const tabs = ref<string>("CHECKED");
|
||||
const statusCheckEdit = ref<string>("");
|
||||
// const empType = ref<string>(dataStore.officerType);
|
||||
// const profileId = ref<string>(dataStore.profileId);
|
||||
const isConfirmEdit = ref<boolean>(false); //สิทธิ์การแก้ไขข้อมูล
|
||||
// const isConfirmDone = ref<boolean>(false); //สิทธิ์การยืนยันข้อมูล
|
||||
// const modalEdit = ref<boolean>(false);
|
||||
// const modalHistory = ref<boolean>(false);
|
||||
|
||||
/** function ยืนยันเสร็จสิ้นการแก้ไข*/
|
||||
// function onConfirmEdit() {
|
||||
// dialogConfirm(
|
||||
// $q,
|
||||
// () => {
|
||||
// showLoader();
|
||||
// http
|
||||
// .post(config.API.salaryTemp + `/confirm-edit`, {
|
||||
// profileId: profileId.value,
|
||||
// type: empType.value?.toLocaleUpperCase(),
|
||||
// })
|
||||
// .then(async () => {
|
||||
// success($q, "ยืนยันเสร็จสิ้นการแก้ไขสำเร็จ");
|
||||
// })
|
||||
// .catch((err) => {
|
||||
// messageError($q, err);
|
||||
// })
|
||||
// .finally(() => {
|
||||
// hideLoader();
|
||||
// });
|
||||
// },
|
||||
// "ยืนยันเสร็จสิ้นการแก้ไข",
|
||||
// "ต้องการยืนยันเสร็จสิ้นการแก้ไขใช่หรือไม่?",
|
||||
// );
|
||||
// }
|
||||
|
||||
/** function ยืนยันข้อมูลถูกต้อง*/
|
||||
// function onConfirmDone() {
|
||||
// dialogConfirm(
|
||||
// $q,
|
||||
// () => {
|
||||
// showLoader();
|
||||
// http
|
||||
// .post(config.API.salaryTemp + `/confirm-done`, {
|
||||
// profileId: profileId.value,
|
||||
// type: empType.value?.toLocaleUpperCase(),
|
||||
// })
|
||||
// .then(async () => {
|
||||
// success($q, "ยืนยันข้อมูลถูกต้องสำเร็จ");
|
||||
// })
|
||||
// .catch((err) => {
|
||||
// messageError($q, err);
|
||||
// })
|
||||
// .finally(() => {
|
||||
// hideLoader();
|
||||
// });
|
||||
// },
|
||||
// "ยืนยันข้อมูลถูกต้อง",
|
||||
// "ต้องการยืนยันข้อมูลถูกต้องใช่หรือไม่",
|
||||
// );
|
||||
// }
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="row items-center q-gutter-sm q-mb-xs">
|
||||
<div class="toptitle text-white row items-center q-py-xs">
|
||||
<q-btn
|
||||
icon="mdi-arrow-left"
|
||||
unelevated
|
||||
round
|
||||
dense
|
||||
flat
|
||||
color="primary"
|
||||
class="q-mr-sm"
|
||||
@click="router.go(-1)"
|
||||
/>
|
||||
รายการประวัติตำแหน่ง/เงินเดือน
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<q-card flat bordered>
|
||||
<!-- <q-separator v-if="isConfirmEdit || isConfirmDone" />
|
||||
|
||||
<q-card-section v-if="isConfirmEdit || isConfirmDone">
|
||||
<div class="row q-col-gutter-sm justify-center">
|
||||
<div class="row items-center" v-if="isConfirmEdit">
|
||||
<q-btn
|
||||
:disable="
|
||||
statusCheckEdit === 'EDITED' || statusCheckEdit === 'CHECKED'
|
||||
"
|
||||
:color="
|
||||
statusCheckEdit === 'EDITED' || statusCheckEdit === 'CHECKED'
|
||||
? 'grey'
|
||||
: 'public'
|
||||
"
|
||||
outline
|
||||
label="ยืนยันการแก้ไขสำเร็จ"
|
||||
@click.stop.prevent="onConfirmEdit"
|
||||
/>
|
||||
<q-btn
|
||||
flat
|
||||
label="ประวัติการดำเนินการ"
|
||||
class="q-ml-md"
|
||||
color="blue"
|
||||
@click="modalHistory = true"
|
||||
/>
|
||||
</div>
|
||||
<div
|
||||
class="row items-center"
|
||||
v-if="isConfirmDone && statusCheckEdit === 'EDITED'"
|
||||
>
|
||||
<q-btn
|
||||
color="public"
|
||||
outline
|
||||
label="ยืนยันข้อมูลถูกต้อง"
|
||||
@click.stop.prevent="onConfirmDone"
|
||||
/>
|
||||
<q-btn
|
||||
flat
|
||||
label="ตีกลับให้แก้ไข"
|
||||
class="q-ml-md"
|
||||
color="blue"
|
||||
@click="modalEdit = true"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</q-card-section> -->
|
||||
|
||||
<q-separator />
|
||||
|
||||
<q-card-section>
|
||||
<!-- <q-tabs
|
||||
v-model="tabs"
|
||||
dense
|
||||
align="left"
|
||||
inline-label
|
||||
class="bg-white text-grey"
|
||||
active-color="primary"
|
||||
indicator-color="primary"
|
||||
>
|
||||
<q-tab name="PENDING" label="รายการตำแหน่ง/เงินเดือนที่กำลังแก้ไข" />
|
||||
<q-tab
|
||||
name="CHECKED"
|
||||
label="แสดงรายการตำแหน่ง/เงินเดือนหลังจากแก้ไขแล้ว"
|
||||
/>
|
||||
</q-tabs>
|
||||
<q-separator />
|
||||
|
||||
<q-tab-panels v-model="tabs" animated>
|
||||
<q-tab-panel name="PENDING">
|
||||
<Table
|
||||
:tabs="tabs"
|
||||
:status-check-edit="statusCheckEdit"
|
||||
:is-confirm-edit="isConfirmEdit"
|
||||
/>
|
||||
</q-tab-panel>
|
||||
<q-tab-panel name="CHECKED"> -->
|
||||
<Table
|
||||
:tabs="tabs"
|
||||
:status-check-edit="statusCheckEdit"
|
||||
:is-confirm-edit="isConfirmEdit"
|
||||
/>
|
||||
<!-- </q-tab-panel>
|
||||
</q-tab-panels> -->
|
||||
</q-card-section>
|
||||
</q-card>
|
||||
|
||||
<!-- <DialogEdit
|
||||
v-model:modal="modalEdit"
|
||||
:emp-type="empType"
|
||||
:fetch-data="fetchDataProfile"
|
||||
/> -->
|
||||
</template>
|
||||
|
||||
<style scoped></style>
|
||||
Loading…
Add table
Add a link
Reference in a new issue