From d562d12cea895cd9da710291df427db04889417a Mon Sep 17 00:00:00 2001 From: Thanit Konmek Date: Thu, 24 Aug 2023 17:06:18 +0700 Subject: [PATCH] List Exit interview UI --- .../05_placement/components/Other/Detail.vue | 10 +- .../components/ExitInterview/exitMain.vue | 314 ++++++++---------- .../interface/response/exitInterview.ts | 40 +++ .../10_order/components/step/step02.vue | 61 +++- 4 files changed, 238 insertions(+), 187 deletions(-) create mode 100644 src/modules/06_retirement/interface/response/exitInterview.ts diff --git a/src/modules/05_placement/components/Other/Detail.vue b/src/modules/05_placement/components/Other/Detail.vue index 1b9a6ad65..010aa02be 100644 --- a/src/modules/05_placement/components/Other/Detail.vue +++ b/src/modules/05_placement/components/Other/Detail.vue @@ -12,6 +12,8 @@ import http from "@/plugins/http"; import config from "@/app.config"; import keycloak from "@/plugins/keycloak"; +import CurruncyInput from "@/components/CurruncyInput.vue"; + const $q = useQuasar(); const route = useRoute(); const router = useRouter(); @@ -350,7 +352,7 @@ const getClass = (val: boolean) => {
- { hide-bottom-space :label="`${'เงินเดือน'}`" type="number" + /> --> +
diff --git a/src/modules/06_retirement/components/ExitInterview/exitMain.vue b/src/modules/06_retirement/components/ExitInterview/exitMain.vue index 9ed9c22e6..5b62de813 100644 --- a/src/modules/06_retirement/components/ExitInterview/exitMain.vue +++ b/src/modules/06_retirement/components/ExitInterview/exitMain.vue @@ -9,7 +9,10 @@ import http from "@/plugins/http"; import config from "@/app.config"; import type { QTableProps } from "quasar"; -import type { ResponseItems } from "@/modules/06_retirement/interface/response/Main"; +import type { ResponseItems } from "@/modules/06_retirement/interface/response/exitInterview"; + +import DialogFooter from "@/modules/05_placement/components/PersonalList/DialogFooter.vue"; +import DialogHeader from "@/modules/05_placement/components/PersonalList/DialogHeader.vue"; const $q = useQuasar(); //ใช้ noti quasar const router = useRouter(); @@ -33,22 +36,22 @@ const columns = ref([ a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, { - name: "prefix", + name: "realReason", align: "left", - label: "คำนำหน้า", + label: "สาเหตุที่ลาออก", sortable: true, - field: "prefix", + field: "realReason", headerStyle: "font-size: 14px", style: "font-size: 14px", sort: (a: string, b: string) => a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, { - name: "fullname", + name: "notExitFactor", align: "left", - label: "ชื่อ-นามสกุล", + label: "ปัจจัยที่ช่วยเปลี่ยนใจไม่อยากลาออก", sortable: true, - field: "fullname", + field: "notExitFactor", headerStyle: "font-size: 14px", style: "font-size: 14px", sort: (a: string, b: string) => @@ -56,173 +59,76 @@ const columns = ref([ }, { - name: "positionTypeOld", + name: "futureWork", align: "left", - label: "ตำแหน่งในสายงาน", + label: "อนาคตกลับจะมาร่วมงานหรือไม่", sortable: true, - field: "positionTypeOld", + field: "futureWork", headerStyle: "font-size: 14px", style: "font-size: 14px", sort: (a: string, b: string) => a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, { - name: "positionLevelOld", + name: "futureWorkReason", align: "left", - label: "ระดับ", + label: "เหตุผลที่อยากกลับมาร่วมงาน", sortable: true, - field: "positionLevelOld", + field: "futureWorkReason", headerStyle: "font-size: 14px", style: "font-size: 14px", sort: (a: string, b: string) => a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, { - name: "positionNumberOld", + name: "havejob", align: "left", - label: "เลขที่", + label: "มีงานใหม่หรือไม่", sortable: true, - field: "positionNumberOld", + field: "havejob", headerStyle: "font-size: 14px", style: "font-size: 14px", sort: (a: string, b: string) => a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, { - name: "organizationPositionOld", + name: "havejobReason", align: "left", - label: "สังกัด", + label: "เหตุผลที่มีงานใหม่", sortable: true, - field: "organizationPositionOld", + field: "havejobReason", headerStyle: "font-size: 14px", style: "font-size: 14px", sort: (a: string, b: string) => a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, { - name: "statustext", + name: "datetext", align: "left", - label: "สถานะ", + label: "วันที่สร้าง", sortable: true, - field: "statustext", + field: "datetext", headerStyle: "font-size: 14px", style: "font-size: 14px", sort: (a: string, b: string) => a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, ]); -const visibleColumns = ref([ - "no", - "prefix", - "fullname", - "positionTypeOld", - "positionLevelOld", - "positionNumberOld", - "organizationPositionOld", - "statustext", -]); +const visibleColumns = ref([]); + +const dateBreak = ref(null); const filters = ref([]); const rows2 = ref([]); -const columns2 = ref([ - { - name: "no", - align: "left", - label: "ลำดับ", - sortable: true, - field: "no", - headerStyle: "font-size: 14px", - style: "font-size: 14px", - sort: (a: string, b: string) => - a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), - }, - { - name: "prefix", - align: "left", - label: "คำนำหน้า", - sortable: true, - field: "prefix", - headerStyle: "font-size: 14px", - style: "font-size: 14px", - sort: (a: string, b: string) => - a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), - }, - { - name: "fullname", - align: "left", - label: "ชื่อ-นามสกุล", - sortable: true, - field: "fullname", - headerStyle: "font-size: 14px", - style: "font-size: 14px", - sort: (a: string, b: string) => - a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), - }, - - { - name: "positionTypeOld", - align: "left", - label: "ตำแหน่งในสายงาน", - sortable: true, - field: "positionTypeOld", - headerStyle: "font-size: 14px", - style: "font-size: 14px", - sort: (a: string, b: string) => - a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), - }, - { - name: "positionLevelOld", - align: "left", - label: "ระดับ", - sortable: true, - field: "positionLevelOld", - headerStyle: "font-size: 14px", - style: "font-size: 14px", - sort: (a: string, b: string) => - a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), - }, - { - name: "positionNumberOld", - align: "left", - label: "เลขที่", - sortable: true, - field: "positionNumberOld", - headerStyle: "font-size: 14px", - style: "font-size: 14px", - sort: (a: string, b: string) => - a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), - }, - { - name: "organizationPositionOld", - align: "left", - label: "สังกัด", - sortable: true, - field: "organizationPositionOld", - headerStyle: "font-size: 14px", - style: "font-size: 14px", - sort: (a: string, b: string) => - a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), - }, - { - name: "statustext", - align: "left", - label: "สถานะ", - sortable: true, - field: "statustext", - headerStyle: "font-size: 14px", - style: "font-size: 14px", - sort: (a: string, b: string) => - a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), - }, -]); +const columns2 = ref([]); const visibleColumns2 = ref([ "no", "prefix", "fullname", - "positionTypeOld", - "positionLevelOld", - "positionNumberOld", - "organizationPositionOld", + "futureWork", + "futureWorkReason", + "havejob", + "havejobReason", "statustext", ]); @@ -247,6 +153,15 @@ const resetFilter = () => { filterRef.value.focus(); }; +const openModalCalendar = () => { + openModal(); + dateBreak.value = null; +}; + +const conditionPopup = () => { + closeModal(); +}; + const openModalOrder = () => { openModal(); const row = filters.value.filter( @@ -258,6 +173,7 @@ const openModalOrder = () => { onMounted(async () => { await fecthlist(); + visibleColumns.value = columns.value.map((r: any) => r.name); }); const fecthlist = async () => { @@ -270,25 +186,20 @@ const fecthlist = async () => { data.map((r: ResponseItems) => { list.push({ - activeDate: new Date(), - createdAt: new Date(), - firstName: r.firstName ?? "", + datetext: r.createdAt !== null ? date2Thai(r.createdAt) : "-", + createdAt: new Date(r.createdAt), + futureWork: !!r.futureWork, + futureWorkReason: r.futureWorkReason ?? "", + havejob: !!r.havejob, + havejobReason: r.havejobReason ?? "", id: r.id ?? "", - isActive: r.isActive ? r.isActive : false, - lastName: r.lastName ?? "", - location: r.location ?? "", - organizationPositionOld: r.organizationPositionOld ?? "", - positionLevelOld: r.positionLevelOld ?? "", - positionNumberOld: r.positionNumberOld ?? "", - positionTypeOld: r.positionTypeOld ?? "", - prefix: r.prefix ?? "", - profileId: r.profileId ?? "", - reason: r.reason ?? "", - salary: r.salary ? r.salary : 0, - sendDate: new Date(), + lastUpdatedAt: new Date(r.lastUpdatedAt), + notExitFactor: r.notExitFactor ?? "", + realReason: r.realReason ?? "", + suggestFriends: !!r.suggestFriends, + suggestFriendsReason: r.suggestFriendsReason ?? "", + suggestion: r.suggestion ?? "", status: r.status ?? "", - statustext: statusText(r.status ?? ""), - fullname: `${r.firstName ?? ""} ${r.lastName ?? ""}`, }); }); @@ -399,40 +310,50 @@ const saveOrder = async () => { {{ col.label }} + @@ -528,16 +449,16 @@ const saveOrder = async () => { {{ props.row.positionTypeOld }} - - {{ props.row.positionLevelOld }} + + {{ props.row.futureWorkReason }} - - {{ props.row.positionNumberOld }} + + {{ props.row.havejob }} - +
- {{ props.row.organizationPositionOld }} + {{ props.row.havejobReason }}
@@ -558,5 +479,60 @@ const saveOrder = async () => { --> + + + + + + + +
+ + + + + +
+
+ + +
+
+
diff --git a/src/modules/06_retirement/interface/response/exitInterview.ts b/src/modules/06_retirement/interface/response/exitInterview.ts new file mode 100644 index 000000000..7cd9659cc --- /dev/null +++ b/src/modules/06_retirement/interface/response/exitInterview.ts @@ -0,0 +1,40 @@ +interface ResponseData { + adjust: string[]; + adjustOther: string; + createdAt: Date; + exitFactor: string[]; + exitFactorOther: string; + futureWork: boolean; + futureWorkReason: string; + havejob: boolean; + havejobReason: string; + id: string; + lastUpdatedAt: Date; + notExitFactor: string; + realReason: string; + reasonWork: string[]; + reasonWorkOther: string; + suggestFriends: boolean; + suggestFriendsReason: string; + suggestion: string; + timeThink: string[]; +} + +interface ResponseItems { + createdAt: Date; + futureWork: boolean; + futureWorkReason: string; + havejob: boolean; + havejobReason: string; + id: string; + lastUpdatedAt: Date; + notExitFactor: string; + realReason: string; + suggestFriends: boolean; + suggestFriendsReason: string; + suggestion: string; + status: string; + datetext: string | null; +} + +export type { ResponseData, ResponseItems }; diff --git a/src/modules/10_order/components/step/step02.vue b/src/modules/10_order/components/step/step02.vue index fb4a8b4e3..13a0038f7 100644 --- a/src/modules/10_order/components/step/step02.vue +++ b/src/modules/10_order/components/step/step02.vue @@ -1,17 +1,19 @@ -