From b60ca9df9bd323f7e27339fb6fe794d201b6f679 Mon Sep 17 00:00:00 2001 From: waruneeauy Date: Thu, 13 Feb 2025 15:37:30 +0700 Subject: [PATCH 001/195] fixing redirect --- .env.production | 1 + docker/entrypoint.sh | 1 + src/views/MainLayout.vue | 11 ++--------- 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/.env.production b/.env.production index e85ca8e..34cdec1 100644 --- a/.env.production +++ b/.env.production @@ -2,4 +2,5 @@ VITE_API_URI_CONFIG=VITE_API_URI_CONFIG VITE_API_PUBLISH_URL=VITE_API_PUBLISH_URL VITE_MANUAL_URL=VITE_MANUAL_URL VITE_URL_SSO=VITE_URL_SSO +VITE_URL_LANDING=VITE_URL_LANDING VITE_API_REPORT_URL=VITE_API_REPORT_URL \ No newline at end of file diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index ae50dc4..e41d13f 100644 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -12,6 +12,7 @@ do sed -i 's|VITE_API_PUBLISH_URL|'${VITE_API_PUBLISH_URL}'|g' $file sed -i 's|VITE_MANUAL_URL|'${VITE_MANUAL_URL}'|g' $file sed -i 's|VITE_URL_SSO|'${VITE_URL_SSO}'|g' $file + sed -i 's|VITE_URL_LANDING|'${VITE_URL_LANDING}'|g' $file sed -i 's|VITE_API_REPORT_URL|'${VITE_API_REPORT_URL}'|g' $file diff --git a/src/views/MainLayout.vue b/src/views/MainLayout.vue index f6feb70..0c0b6c4 100644 --- a/src/views/MainLayout.vue +++ b/src/views/MainLayout.vue @@ -13,7 +13,7 @@ import { useDataStore } from "@/stores/data"; // landing page config url const configParam = { - landingPageUrl: import.meta.env.VITE_URL_SSO, + landingPageUrl: import.meta.env.VITE_URL_LANDING, }; const route = useRoute(); @@ -234,14 +234,7 @@ function onInfo() { } // landing page redirect -const landingPageUrl = ref(getLandingUrl()); -function getLandingUrl() { - if (window.location.hostname === "bma-ehr-user.frappet.synology.me") { - return `${configParam.landingPageUrl}/e-hr`; - } else { - return configParam.landingPageUrl; - } -} +const landingPageUrl = ref(configParam.landingPageUrl); function onViewDetailNoti(url: string) { window.open(url, "_blank"); From 9076bcc02d05e0d58d457dbc33c9af93a203b4eb Mon Sep 17 00:00:00 2001 From: setthawutttty Date: Thu, 13 Feb 2025 16:10:24 +0700 Subject: [PATCH 002/195] pdf --- src/modules/09_scholarship/views/detail.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/09_scholarship/views/detail.vue b/src/modules/09_scholarship/views/detail.vue index 012df96..898ba70 100644 --- a/src/modules/09_scholarship/views/detail.vue +++ b/src/modules/09_scholarship/views/detail.vue @@ -581,7 +581,7 @@ onMounted(async () => { dense v-model="documentFile" label="ไฟล์เอกสารหลักฐาน" - accept=".pdf,.xlsx,.docx,.png,.jpg" + accept=".pdf" clearable > diff --git a/src/modules/10_registry/03_Salary/01_Salary.vue b/src/modules/10_registry/03_Salary/01_Salary.vue index 281f247..a3314d3 100644 --- a/src/modules/10_registry/03_Salary/01_Salary.vue +++ b/src/modules/10_registry/03_Salary/01_Salary.vue @@ -33,15 +33,17 @@ const modalHistory = ref(false); /** ตัวแปรข้อมูล */ const visibleColumns = ref([ - "date", + "commandDateAffect", "amount", "positionSalaryAmount", "mouthSalaryAmount", "posNo", + "positionName", "positionType", "positionLevel", - "templateDoc", + "commandName", "refCommandNo", + "remark", "lastUpdateFullName", "lastUpdatedAt", ]); @@ -61,11 +63,11 @@ const columns = computed(() => { const baseColumns = ref([ { - name: "date", + name: "commandDateAffect", align: "left", label: "วัน เดือน ปี", sortable: true, - field: "date", + field: "commandDateAffect", headerStyle: "font-size: 14px", style: "font-size: 14px", format: (v) => date2Thai(v), @@ -100,7 +102,6 @@ const baseColumns = ref([ style: "font-size: 14px", format: (v) => Number(v).toLocaleString(), }, - { name: "posNo", align: "left", @@ -109,8 +110,23 @@ const baseColumns = ref([ field: "posNo", headerStyle: "font-size: 14px", style: "font-size: 14px", + format(val, row) { + return row.posNoAbb && row.posNo + ? `${row.posNoAbb}${row.posNo}` + : row.posNo + ? row.posNo + : "-"; + }, + }, + { + name: "positionName", + align: "left", + label: "ตำแหน่ง", + sortable: true, + field: "positionName", + headerStyle: "font-size: 14px", + style: "font-size: 14px", }, - { name: "positionType", align: "left", @@ -128,14 +144,23 @@ const baseColumns = ref([ field: "positionLevel", headerStyle: "font-size: 14px", style: "font-size: 14px", + format(val, row) { + return `${ + row.positionLevel + ? row.positionLevel + : row.positionCee + ? row.positionCee + : "-" + }`; + }, }, { - name: "templateDoc", + name: "commandName", align: "left", label: "เอกสารอ้างอิง", sortable: true, - field: "templateDoc", + field: "commandName", headerStyle: "font-size: 14px", style: "font-size: 14px", }, @@ -147,6 +172,20 @@ const baseColumns = ref([ field: "refCommandNo", headerStyle: "font-size: 14px", style: "font-size: 14px", + format(val, row) { + return row.commandNo && row.commandYear + ? `${row.commandNo}/${row.commandYear}` + : ""; + }, + }, + { + name: "remark", + align: "left", + label: "หมายเหตุ", + sortable: true, + field: "remark", + headerStyle: "font-size: 14px", + style: "font-size: 14px", }, { name: "lastUpdateFullName", @@ -170,12 +209,12 @@ const baseColumns = ref([ ]); const visibleColumnsHistory = ref([ - "date", + "commandDateAffect", "amount", "positionSalaryAmount", "mouthSalaryAmount", "oc", - "position", + "positionName", "posNo", "positionLine", "positionPathSide", @@ -184,8 +223,9 @@ const visibleColumnsHistory = ref([ "positionExecutive", "positionExecutiveSide", "salaryClass", - "templateDoc", + "commandName", "refCommandNo", + "remark", "lastUpdateFullName", "lastUpdatedAt", ]); @@ -205,11 +245,11 @@ const columnsHistory = computed(() => { const baseColumnsHistory = ref([ { - name: "date", + name: "commandDateAffect", align: "left", label: "วัน เดือน ปี", sortable: true, - field: "date", + field: "commandDateAffect", headerStyle: "font-size: 14px", style: "font-size: 14px", format: (v) => date2Thai(v), @@ -253,15 +293,7 @@ const baseColumnsHistory = ref([ headerStyle: "font-size: 14px", style: "font-size: 14px", }, - { - name: "position", - align: "left", - label: "ตำแหน่ง", - sortable: true, - field: "position", - headerStyle: "font-size: 14px", - style: "font-size: 14px", - }, + { name: "posNo", align: "left", @@ -270,6 +302,22 @@ const baseColumnsHistory = ref([ field: "posNo", headerStyle: "font-size: 14px", style: "font-size: 14px", + format(val, row) { + return row.posNoAbb && row.posNo + ? `${row.posNoAbb}${row.posNo}` + : row.posNo + ? row.posNo + : "-"; + }, + }, + { + name: "positionName", + align: "left", + label: "ตำแหน่ง", + sortable: true, + field: "positionName", + headerStyle: "font-size: 14px", + style: "font-size: 14px", }, { name: "positionLine", @@ -335,11 +383,11 @@ const baseColumnsHistory = ref([ style: "font-size: 14px", }, { - name: "templateDoc", + name: "commandName", align: "left", label: "เอกสารอ้างอิง", sortable: true, - field: "templateDoc", + field: "commandName", headerStyle: "font-size: 14px", style: "font-size: 14px", }, @@ -351,6 +399,20 @@ const baseColumnsHistory = ref([ field: "refCommandNo", headerStyle: "font-size: 14px", style: "font-size: 14px", + format(val, row) { + return row.commandNo && row.commandYear + ? `${row.commandNo}/${row.commandYear}` + : ""; + }, + }, + { + name: "remark", + align: "left", + label: "หมายเหตุ", + sortable: true, + field: "remark", + headerStyle: "font-size: 14px", + style: "font-size: 14px", }, { name: "lastUpdateFullName", diff --git a/src/modules/10_registry/tabs/02_government.vue b/src/modules/10_registry/tabs/02_government.vue index 610b7aa..6fe38ab 100644 --- a/src/modules/10_registry/tabs/02_government.vue +++ b/src/modules/10_registry/tabs/02_government.vue @@ -8,6 +8,7 @@ import Leave from "@/modules/10_registry/02_Government/03_Leave.vue"; import Duty from "@/modules/10_registry/02_Government/04_Duty.vue"; import Actposition from "@/modules/10_registry/02_Government/05_Actposition.vue"; import Assistance from "@/modules/10_registry/02_Government/06_Assistance.vue"; +import Position from "@/modules/10_registry/02_Government/07_Position.vue"; const router = useRouter(); @@ -30,11 +31,12 @@ const router = useRouter();
+ + + - -
diff --git a/src/modules/10_registry/store/registry.ts b/src/modules/10_registry/store/registry.ts index 075e83f..8c7aa40 100644 --- a/src/modules/10_registry/store/registry.ts +++ b/src/modules/10_registry/store/registry.ts @@ -10,6 +10,7 @@ export const useRegistryInFormationStore = defineStore( () => { const typeProfile = ref("OFFICER"); const profileId = ref(""); + const citizenId = ref(""); function typeChangeName(val: string) { switch (val) { @@ -29,6 +30,6 @@ export const useRegistryInFormationStore = defineStore( return "-"; } } - return { typeChangeName, typeProfile, profileId }; + return { typeChangeName, typeProfile, profileId, citizenId }; } ); diff --git a/src/modules/10_registry/tabs/05_other.vue b/src/modules/10_registry/tabs/05_other.vue index 09b87e2..7dde665 100644 --- a/src/modules/10_registry/tabs/05_other.vue +++ b/src/modules/10_registry/tabs/05_other.vue @@ -4,6 +4,7 @@ import { useRouter } from "vue-router"; /** component */ import Other from "@/modules/10_registry/05_Other/01_Other.vue"; import File from "@/modules/10_registry/05_Other/02_File.vue"; +import FileOther from "@/modules/10_registry/05_Other/03_FileOther.vue"; const router = useRouter(); @@ -27,6 +28,7 @@ const router = useRouter();
+
diff --git a/src/modules/10_registry/02_Government/06_Assistance.vue b/src/modules/10_registry/02_Government/06_Assistance.vue index 44b0f48..a87f459 100644 --- a/src/modules/10_registry/02_Government/06_Assistance.vue +++ b/src/modules/10_registry/02_Government/06_Assistance.vue @@ -220,6 +220,34 @@ function getHistory() { }); } +/** + * ฟังก์ชันโหลไฟลเอกสารหลักฐาน + * @param id รายการที่ต้องการโหลด + */ +async function onDownloadFile(id: string, profileId: string) { + showLoader(); + await http + .get( + config.API.subFileByFileName( + "ทะเบียนประวัติ", + "ช่วยราชการ", + profileId, + id, + "เอกสารหลักฐาน" + ) + ) + .then(async (res) => { + const data = res.data; + window.open(data.downloadUrl, "_blank"); + }) + .catch((err) => { + messageError($q, err); + }) + .finally(() => { + hideLoader(); + }); +} + function onSearch() { rows.value = onSearchDataTable( filter.value, @@ -302,6 +330,18 @@ onMounted(async () => { + + ดาวน์โหลด + {
- - ประวัติแก้ไขรายการช่วยราชการ - +
+ + ดาวน์โหลด + + + ประวัติแก้ไขรายการช่วยราชการ + +
{{ @@ -369,5 +422,6 @@ onMounted(async () => { .fix_top { justify-content: start !important; + margin-top: 10px; } From 2cec81510087ca3d385f5b04c39e4866651bd878 Mon Sep 17 00:00:00 2001 From: setthawutttty Date: Tue, 18 Mar 2025 13:44:54 +0700 Subject: [PATCH 022/195] =?UTF-8?q?=E0=B9=81=E0=B8=81=E0=B9=89=E0=B8=9B?= =?UTF-8?q?=E0=B8=A3=E0=B8=B0=E0=B9=80=E0=B8=A1=E0=B8=B4=E0=B8=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/interface/Main.ts | 3 +++ .../06_evaluate/components/EvaluateStepMain.vue | 1 + src/modules/06_evaluate/components/ExpertPage.vue | 15 +++++++++++++-- src/stores/data.ts | 5 +++++ 4 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/interface/Main.ts b/src/interface/Main.ts index 6c3f1f5..a24e4a0 100644 --- a/src/interface/Main.ts +++ b/src/interface/Main.ts @@ -9,6 +9,9 @@ interface ProfileData { posLevelName: string; posNo: string; profileId: string; + citizenId?: string; + salary?: number|null; + birthDate?: string; } interface InformationData { diff --git a/src/modules/06_evaluate/components/EvaluateStepMain.vue b/src/modules/06_evaluate/components/EvaluateStepMain.vue index c35f763..fcecc82 100644 --- a/src/modules/06_evaluate/components/EvaluateStepMain.vue +++ b/src/modules/06_evaluate/components/EvaluateStepMain.vue @@ -790,6 +790,7 @@ onMounted(async () => { /> ({ */ function onSubmit() { dialogConfirm($q, () => { + const body = { + ...formData, + citizenId: dataPerson.formData.citizenId, + prefix: dataPerson.formData.prefix, + fullName: `${dataPerson.formData.prefix}${dataPerson.formData.firstName} ${dataPerson.formData.lastName}`, + position: dataPerson.formData.position, + salary: dataPerson.formData.salary?.toString(), + posNo: dataPerson.formData.posNo, + birthDate: dataPerson.formData.birthDate, + }; showLoader(); http - .post(config.API.evaluationExpertise, formData) + .post(config.API.evaluationExpertise, body) .then((res) => { router.push(`/evaluate/detail/expertise/${res.data.result.id}`); }) @@ -89,7 +101,6 @@ onMounted(() => {
ประเมินเชี่ยวชาญ
-
diff --git a/src/stores/data.ts b/src/stores/data.ts index cc2fe19..b8fe9fc 100644 --- a/src/stores/data.ts +++ b/src/stores/data.ts @@ -25,6 +25,8 @@ export const useDataStore = defineStore("dataMain", () => { posExecutiveName: "", posTypeName: "", posLevelName: "", + salary: null, + birthDate: '', posNo: "", }); const count = ref(0); @@ -102,6 +104,9 @@ export const useDataStore = defineStore("dataMain", () => { formData.firstName = data.firstName; formData.lastName = data.lastName; formData.position = data.position; + formData.salary = data.salary; + formData.citizenId = data.citizenId; + formData.birthDate = data.birthDate; formData.posTypeName = data.posTypeName; formData.posExecutiveName = data.posExecutiveName; formData.posLevelName = data.posLevelName; From 1e1395f88a4bad24ab412e11a4f340018251a94d Mon Sep 17 00:00:00 2001 From: "DESKTOP-1R2VSQH\\Lenovo ThinkPad E490" Date: Tue, 18 Mar 2025 15:23:57 +0700 Subject: [PATCH 023/195] =?UTF-8?q?=E0=B8=97=E0=B8=B0=E0=B9=80=E0=B8=9A?= =?UTF-8?q?=E0=B8=B5=E0=B8=A2=E0=B8=99=E0=B8=9B=E0=B8=A3=E0=B8=B0=E0=B8=A7?= =?UTF-8?q?=E0=B8=B1=E0=B8=95=E0=B8=B4=20=3D=3D>=20loadFile?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../10_registry/01_Information/06_Ability.vue | 7 +- .../02_Government/02_Discipline.vue | 62 ++++++++++++++---- .../10_registry/02_Government/04_Duty.vue | 64 ++++++++++++++---- .../10_registry/03_Salary/02_Nopaid.vue | 65 +++++++++++++++---- .../04_Achievement/01_Certificate.vue | 64 ++++++++++++++---- .../04_Achievement/03_Insignia.vue | 63 ++++++++++++++---- .../10_registry/04_Achievement/04_Honor.vue | 64 ++++++++++++++---- src/modules/10_registry/store/Main.ts | 38 +++++++++++ 8 files changed, 352 insertions(+), 75 deletions(-) create mode 100644 src/modules/10_registry/store/Main.ts diff --git a/src/modules/10_registry/01_Information/06_Ability.vue b/src/modules/10_registry/01_Information/06_Ability.vue index 806507c..a05e7ca 100644 --- a/src/modules/10_registry/01_Information/06_Ability.vue +++ b/src/modules/10_registry/01_Information/06_Ability.vue @@ -248,7 +248,7 @@ async function onDownloadFile(id: string, profileId: string) { .get( config.API.subFileByFileName( "ทะเบียนประวัติ", - "ประกาศเกียรติคุณ", + "เอกสารความสามารถพิเศษ", profileId, id, "เอกสารหลักฐาน" @@ -328,6 +328,7 @@ onMounted(async () => { {{ col.label }} + @@ -344,7 +345,6 @@ onMounted(async () => { {{ col.value ? col.value : "-" }}
- { > ดาวน์โหลด + + + (""); const $q = useQuasar(); const mixin = useCounterMixin(); const dataStore = useDataStore(); +const { getPathUploadFlie } = useRegistryDataStore(); const { showLoader, hideLoader, messageError, date2Thai, onSearchDataTable } = mixin; @@ -26,6 +28,8 @@ const rowsHistory = ref([]); const rowsHistoryData = ref([]); const mode = ref($q.screen.gt.xs); +const fileGroup = ref("เอกสารวินัย"); + const modalHistory = ref(false); /** ตัวแปรข้อมูล */ @@ -179,6 +183,11 @@ function getHistory() { }); } +async function onDownloadFile(id: string, profileId: string) { + const data = await getPathUploadFlie(fileGroup.value, profileId, id); + window.open(data.downloadUrl, "_blank"); +} + function onSearch() { rows.value = onSearchDataTable( filter.value, @@ -247,6 +256,7 @@ onMounted(async () => { {{ col.label }} + @@ -263,6 +273,20 @@ onMounted(async () => { {{ col.value ? col.value : "-" }}
+ + + ดาวน์โหลด + + {
- - ประวัติแก้ไขวินัย - +
+ + ดาวน์โหลด + + + ประวัติแก้ไขวินัย + +
{{ @@ -331,5 +368,6 @@ onMounted(async () => { .fix_top { justify-content: start !important; + margin-top: 10px; } diff --git a/src/modules/10_registry/02_Government/04_Duty.vue b/src/modules/10_registry/02_Government/04_Duty.vue index e1970fd..1ff8476 100644 --- a/src/modules/10_registry/02_Government/04_Duty.vue +++ b/src/modules/10_registry/02_Government/04_Duty.vue @@ -6,6 +6,7 @@ import { ref, reactive, onMounted } from "vue"; import http from "@/plugins/http"; import config from "@/app.config"; import { useDataStore } from "@/stores/data"; +import { useRegistryDataStore } from "@/modules/10_registry/store/Main"; import type { DutyFormType } from "@/modules/10_registry/interface/index/Main"; //history dialog @@ -22,6 +23,7 @@ const rowsHistoryData = ref([]); const $q = useQuasar(); const mode = ref($q.screen.gt.xs); const mixin = useCounterMixin(); +const { getPathUploadFlie } = useRegistryDataStore(); const { showLoader, hideLoader, messageError, date2Thai, onSearchDataTable } = mixin; @@ -241,6 +243,8 @@ const columnsHistory = ref([ }, ]); +const fileGroup = ref("เอกสารปฏิบัติราชการพิเศษ"); + function onHistory(id: string) { modalHistory.value = true; idByRow.value = id; @@ -282,6 +286,11 @@ function getHistory() { }); } +async function onDownloadFile(id: string, profileId: string) { + const data = await getPathUploadFlie(fileGroup.value, profileId, id); + window.open(data.downloadUrl, "_blank"); +} + function onSearch() { rows.value = onSearchDataTable( filter.value, @@ -352,6 +361,7 @@ onMounted(async () => { {{ col.label }} + @@ -368,6 +378,21 @@ onMounted(async () => { {{ col.value ? col.value : "-" }}
+ + + ดาวน์โหลด + + + {
- - ประวัติแก้ไขปฏิบัติราชการพิเศษ - +
+ + ดาวน์โหลด + + + ประวัติแก้ไขปฏิบัติราชการพิเศษ + +
{{ @@ -417,6 +455,7 @@ onMounted(async () => {
+ { .fix_top { justify-content: start !important; + margin-top: 10px; } diff --git a/src/modules/10_registry/03_Salary/02_Nopaid.vue b/src/modules/10_registry/03_Salary/02_Nopaid.vue index 4a7fea2..ecdc9a4 100644 --- a/src/modules/10_registry/03_Salary/02_Nopaid.vue +++ b/src/modules/10_registry/03_Salary/02_Nopaid.vue @@ -6,6 +6,7 @@ import { ref, onMounted } from "vue"; import http from "@/plugins/http"; import config from "@/app.config"; import { useDataStore } from "@/stores/data"; +import { useRegistryDataStore } from "@/modules/10_registry/store/Main"; import type { NopaidFormType } from "@/modules/10_registry/interface/index/Main"; @@ -24,6 +25,7 @@ const mode = ref($q.screen.gt.xs); const mixin = useCounterMixin(); const { showLoader, hideLoader, messageError, date2Thai, onSearchDataTable } = mixin; +const { getPathUploadFlie } = useRegistryDataStore(); const modalHistory = ref(false); /** ตัวแปรข้อมูล */ @@ -218,6 +220,8 @@ const columnsHistory = ref([ }, ]); +const fileGroup = ref("เอกสารบันทึกวันที่ไม่ได้รับเงินเดือน"); + function onHistory(id: string) { modalHistory.value = true; idByRow.value = id; @@ -261,6 +265,11 @@ function getHistory() { }); } +async function onDownloadFile(id: string, profileId: string) { + const data = await getPathUploadFlie(fileGroup.value, profileId, id); + window.open(data.downloadUrl, "_blank"); +} + function onSearch() { rows.value = onSearchDataTable( filter.value, @@ -331,6 +340,7 @@ onMounted(async () => { {{ col.label }} + @@ -347,6 +357,20 @@ onMounted(async () => { {{ col.value ? col.value : "-" }}
+ + + ดาวน์โหลด + + {
- - ประวัติแก้ไขบันทึกวันที่ไม่ได้รับเงินเดือนฯ + - + ดาวน์โหลด + + + ประวัติแก้ไขบันทึกวันที่ไม่ได้รับเงินเดือนฯ + +
{{ @@ -398,6 +435,7 @@ onMounted(async () => { + { .fix_top { justify-content: start !important; + margin-top: 10px; } diff --git a/src/modules/10_registry/04_Achievement/01_Certificate.vue b/src/modules/10_registry/04_Achievement/01_Certificate.vue index 2234bdc..6ec2af0 100644 --- a/src/modules/10_registry/04_Achievement/01_Certificate.vue +++ b/src/modules/10_registry/04_Achievement/01_Certificate.vue @@ -6,6 +6,7 @@ import { ref, reactive, onMounted } from "vue"; import http from "@/plugins/http"; import config from "@/app.config"; import { useDataStore } from "@/stores/data"; +import { useRegistryDataStore } from "@/modules/10_registry/store/Main"; import type { CertificateDetail } from "@/modules/10_registry/interface/index/Main"; @@ -18,6 +19,7 @@ const dataPerson = useDataStore(); const mixin = useCounterMixin(); const { showLoader, hideLoader, messageError, date2Thai, onSearchDataTable } = mixin; +const { getPathUploadFlie } = useRegistryDataStore(); const idByRow = ref(""); const rows = ref([]); @@ -216,6 +218,9 @@ const columnsHistory = ref([ a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, ]); + +const fileGroup = ref("เอกสารใบอนุญาตประกอบวิชาชีพ"); + function onHistory(id: string) { modalHistory.value = true; idByRow.value = id; @@ -263,6 +268,11 @@ function getHistory() { }); } +async function onDownloadFile(id: string, profileId: string) { + const data = await getPathUploadFlie(fileGroup.value, profileId, id); + window.open(data.downloadUrl, "_blank"); +} + function onSearch() { rows.value = onSearchDataTable( filter.value, @@ -333,6 +343,7 @@ onMounted(async () => { {{ col.label }} + @@ -349,6 +360,20 @@ onMounted(async () => { {{ col.value ? col.value : "-" }}
+ + + ดาวน์โหลด + + {
- - ประวัติแก้ไขใบอนุญาตประกอบวิชาชีพ - +
+ + ดาวน์โหลด + + + ประวัติแก้ไขใบอนุญาตประกอบวิชาชีพ + +
{{ @@ -398,6 +436,7 @@ onMounted(async () => {
+ { .fix_top { justify-content: start !important; + margin-top: 10px; } diff --git a/src/modules/10_registry/04_Achievement/03_Insignia.vue b/src/modules/10_registry/04_Achievement/03_Insignia.vue index 244e5af..d8b0323 100644 --- a/src/modules/10_registry/04_Achievement/03_Insignia.vue +++ b/src/modules/10_registry/04_Achievement/03_Insignia.vue @@ -6,6 +6,7 @@ import http from "@/plugins/http"; import config from "@/app.config"; import { useCounterMixin } from "@/stores/mixin"; import { useDataStore } from "@/stores/data"; +import { useRegistryDataStore } from "@/modules/10_registry/store/Main"; import type { InsigniaFormType } from "@/modules/10_registry/interface/index/Main"; @@ -25,6 +26,7 @@ const mode = ref($q.screen.gt.xs); const mixin = useCounterMixin(); const { showLoader, hideLoader, messageError, date2Thai, onSearchDataTable } = mixin; +const { getPathUploadFlie } = useRegistryDataStore(); const modalHistory = ref(false); /** ตัวแปรข้อมูล */ @@ -432,6 +434,8 @@ const columnsHistory = ref([ }, ]); +const fileGroup = ref("เครื่องราชฯ"); + function onHistory(id: string) { modalHistory.value = true; idByRow.value = id; @@ -479,6 +483,11 @@ function getHistory() { }); } +async function onDownloadFile(id: string, profileId: string) { + const data = await getPathUploadFlie(fileGroup.value, profileId, id); + window.open(data.downloadUrl, "_blank"); +} + function onSearch() { rows.value = onSearchDataTable( filter.value, @@ -549,6 +558,7 @@ onMounted(async () => { {{ col.label }} + @@ -567,6 +577,20 @@ onMounted(async () => { {{ col.value ? col.value : "-" }}
+ + + ดาวน์โหลด + + {
- - ประวัติแก้ไขเครื่องราชอิสริยาภรณ์ - +
+ + ดาวน์โหลด + + + ประวัติแก้ไขเครื่องราชอิสริยาภรณ์ + +
{{ @@ -647,5 +685,6 @@ onMounted(async () => { .fix_top { justify-content: start !important; + margin-top: 10px; } diff --git a/src/modules/10_registry/04_Achievement/04_Honor.vue b/src/modules/10_registry/04_Achievement/04_Honor.vue index 6031f16..58035f2 100644 --- a/src/modules/10_registry/04_Achievement/04_Honor.vue +++ b/src/modules/10_registry/04_Achievement/04_Honor.vue @@ -7,6 +7,7 @@ import config from "@/app.config"; import { useCounterMixin } from "@/stores/mixin"; import { useDataStore } from "@/stores/data"; import { useRegistryInFormationStore } from "@/modules/10_registry/store/registry"; +import { useRegistryDataStore } from "@/modules/10_registry/store/Main"; import type { HonorFormData } from "@/modules/10_registry/interface/index/Main"; @@ -27,6 +28,7 @@ const mode = ref($q.screen.gt.xs); const mixin = useCounterMixin(); const { showLoader, hideLoader, messageError, date2Thai, onSearchDataTable } = mixin; +const { getPathUploadFlie } = useRegistryDataStore(); const modalHistory = ref(false); /** ตัวแปรข้อมูล */ @@ -218,6 +220,8 @@ const columnsHistory = ref([ }, ]); +const fileGroup = ref("ประกาศเกียรติคุณ"); + function onHistory(id: string) { modalHistory.value = true; idByRow.value = id; @@ -263,6 +267,11 @@ function getHistory() { }); } +async function onDownloadFile(id: string, profileId: string) { + const data = await getPathUploadFlie(fileGroup.value, profileId, id); + window.open(data.downloadUrl, "_blank"); +} + function onSearch() { rows.value = onSearchDataTable( filter.value, @@ -333,6 +342,7 @@ onMounted(async () => { {{ col.label }} + @@ -349,6 +359,20 @@ onMounted(async () => { {{ col.value ? col.value : "-" }}
+ + + ดาวน์โหลด + + {
- - ประวัติแก้ไขประกาศเกียรติคุณ - +
+ + ดาวน์โหลด + + + ประวัติแก้ไขประกาศเกียรติคุณ + +
{{ @@ -398,6 +436,7 @@ onMounted(async () => {
+ { .fix_top { justify-content: start !important; + margin-top: 10px; } diff --git a/src/modules/10_registry/store/Main.ts b/src/modules/10_registry/store/Main.ts new file mode 100644 index 0000000..47c2ab6 --- /dev/null +++ b/src/modules/10_registry/store/Main.ts @@ -0,0 +1,38 @@ +import { defineStore } from "pinia"; +import { useQuasar } from "quasar"; + +import http from "@/plugins/http"; +import config from "@/app.config"; +import { useCounterMixin } from "@/stores/mixin"; + +const $q = useQuasar(); +const mixin = useCounterMixin(); +const { messageError } = mixin; + +export const useRegistryDataStore = defineStore("RegistryDataStoreMain", () => { + async function getPathUploadFlie( + group: string, + profileId: string, + id: string + ) { + try { + const res = await http.get( + config.API.subFileByFileName( + "ทะเบียนประวัติ", + group, + profileId, + id, + "เอกสารหลักฐาน" + ) + ); + return res.data; + } catch (err) { + messageError($q, err); + } + } + + return { + // Function + getPathUploadFlie, + }; +}); From 8ff3456a237a8a0181b9cf6754b73e0777138a4d Mon Sep 17 00:00:00 2001 From: "DESKTOP-1R2VSQH\\Lenovo ThinkPad E490" Date: Wed, 19 Mar 2025 09:45:12 +0700 Subject: [PATCH 024/195] =?UTF-8?q?fix=20=E0=B8=97=E0=B8=B0=E0=B9=80?= =?UTF-8?q?=E0=B8=9A=E0=B8=B5=E0=B8=A2=E0=B8=99=E0=B8=9B=E0=B8=A3=E0=B8=B0?= =?UTF-8?q?=E0=B8=A7=E0=B8=B1=E0=B8=95=E0=B8=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../02_Government/01_Government.vue | 35 +++++++------------ .../02_Government/05_Actposition.vue | 7 ++-- .../10_registry/02_Government/07_Position.vue | 4 +-- .../10_registry/03_Salary/01_Salary.vue | 8 ++--- src/modules/10_registry/views/main.vue | 12 +++---- 5 files changed, 29 insertions(+), 37 deletions(-) diff --git a/src/modules/10_registry/02_Government/01_Government.vue b/src/modules/10_registry/02_Government/01_Government.vue index 0f95ce8..f9a6c23 100644 --- a/src/modules/10_registry/02_Government/01_Government.vue +++ b/src/modules/10_registry/02_Government/01_Government.vue @@ -19,8 +19,10 @@ import DialogHistory from "@/modules/10_registry/Dialog/DialogHistory.vue"; const link = ref(""); const $q = useQuasar(); const mixin = useCounterMixin(); -const dataPerson = useDataStore() -const checkType = ref(dataPerson.officerType == 'OFFICER' ? true:false) +const dataPerson = useDataStore(); +const checkType = ref( + dataPerson.officerType == "OFFICER" ? true : false +); const store = useRegistryInFormationStore(); const { showLoader, hideLoader, messageError, date2Thai, dateToISO } = mixin; @@ -383,7 +385,7 @@ function getData() { /** get history */ function getHistory() { const url = - dataPerson.officerType == 'OFFICER' + dataPerson.officerType == "OFFICER" ? config.API.dataUserGovernmentHistory("") : config.API.dataUserGovernmentHistory("-employee"); showLoader(); @@ -402,7 +404,7 @@ function getHistory() { }); } -onMounted(async() => { +onMounted(async () => { link.value = await dataPerson.getProFileType(); getData(); }); @@ -433,31 +435,25 @@ onMounted(async() => { {{ formData.org ? formData.org : "-" }}
- {{ checkType ? 'ตำแหน่งในสายงาน':'ตำแหน่ง' }} + {{ checkType ? "ตำแหน่งในสายงาน" : "ตำแหน่ง" }}
{{ formData.position ? formData.position : "-" }}
- +
- ตำแหน่งเลขที่ + {{ checkType ? "เลขที่ตำแหน่ง" : "ตำแหน่งเลขที่" }}
{{ formData.posMasterNo ? formData.posMasterNo : "-" }}
-
+
ตำแหน่งทางการบริหาร
{{ formData.posExecutive ? formData.posExecutive : "-" }}
-
+
ด้านทางการบริหาร
@@ -472,19 +468,14 @@ onMounted(async() => {
-
+
สายงาน
{{ formData.positionField ? formData.positionField : "-" }}
- {{ - checkType ? "ตำแหน่งประเภท" : "กลุ่มงาน" - }} + {{ checkType ? "ตำแหน่งประเภท" : "กลุ่มงาน" }}
{{ formData.posType ? formData.posType : "-" }} diff --git a/src/modules/10_registry/02_Government/05_Actposition.vue b/src/modules/10_registry/02_Government/05_Actposition.vue index 8f887b3..ffc0371 100644 --- a/src/modules/10_registry/02_Government/05_Actposition.vue +++ b/src/modules/10_registry/02_Government/05_Actposition.vue @@ -26,6 +26,9 @@ const { showLoader, hideLoader, messageError, date2Thai, onSearchDataTable } = mixin; const modalHistory = ref(false); +const checkType = ref( + dataStore.officerType == "OFFICER" ? true : false +); /** ตัวแปรข้อมูล */ const visibleColumns = ref([ @@ -60,7 +63,7 @@ const columns = ref([ { name: "posNo", align: "left", - label: "ตำแหน่งเลขที่", + label: checkType.value ? "เลขที่ตำแหน่ง" : "ตำแหน่งเลขที่", sortable: true, field: "posNo", headerStyle: "font-size: 14px", @@ -138,7 +141,7 @@ const columnsHistory = ref([ { name: "posNo", align: "left", - label: "ตำแหน่งเลขที่", + label: checkType.value ? "เลขที่ตำแหน่ง" : "ตำแหน่งเลขที่", sortable: true, field: "posNo", headerStyle: "font-size: 14px", diff --git a/src/modules/10_registry/02_Government/07_Position.vue b/src/modules/10_registry/02_Government/07_Position.vue index a2fc877..c120440 100644 --- a/src/modules/10_registry/02_Government/07_Position.vue +++ b/src/modules/10_registry/02_Government/07_Position.vue @@ -76,7 +76,7 @@ const baseColumns = ref([ { name: "posNo", align: "left", - label: "ตำแหน่งเลขที่", + label: checkType.value ? "เลขที่ตำแหน่ง" : "ตำแหน่งเลขที่", sortable: true, field: "posNo", headerStyle: "font-size: 14px", @@ -153,7 +153,7 @@ const baseColumns = ref([ { name: "amount", align: "left", - label: link.value === "-employee" ? "ค่าตอบแทนรายเดือน" : "เงินเดือน", + label: link.value === "-employee" ? "ค่าจ้าง" : "เงินเดือน", sortable: true, field: "amount", headerStyle: "font-size: 14px", diff --git a/src/modules/10_registry/03_Salary/01_Salary.vue b/src/modules/10_registry/03_Salary/01_Salary.vue index 6f1d567..4361270 100644 --- a/src/modules/10_registry/03_Salary/01_Salary.vue +++ b/src/modules/10_registry/03_Salary/01_Salary.vue @@ -75,7 +75,7 @@ const baseColumns = ref([ { name: "amount", align: "left", - label: checkType.value ? "เงินเดือน" : "ค่าตอบแทนรายเดือน", + label: checkType.value ? "เงินเดือน" : "ค่าจ้าง", sortable: true, field: "amount", headerStyle: "font-size: 14px", @@ -105,7 +105,7 @@ const baseColumns = ref([ { name: "posNo", align: "left", - label: "ตำแหน่งเลขที่", + label: checkType.value ? "เลขที่ตำแหน่ง" : "ตำแหน่งเลขที่", sortable: true, field: "posNo", headerStyle: "font-size: 14px", @@ -257,7 +257,7 @@ const baseColumnsHistory = ref([ { name: "amount", align: "left", - label: checkType.value ? "เงินเดือน" : "ค่าตอบแทนรายเดือน", + label: checkType.value ? "เงินเดือน" : "ค่าจ้าง", sortable: true, field: "amount", headerStyle: "font-size: 14px", @@ -297,7 +297,7 @@ const baseColumnsHistory = ref([ { name: "posNo", align: "left", - label: "ตำแหน่งเลขที่", + label: checkType.value ? "เลขที่ตำแหน่ง" : "ตำแหน่งเลขที่", sortable: true, field: "posNo", headerStyle: "font-size: 14px", diff --git a/src/modules/10_registry/views/main.vue b/src/modules/10_registry/views/main.vue index 0fb2ead..f19dcc2 100644 --- a/src/modules/10_registry/views/main.vue +++ b/src/modules/10_registry/views/main.vue @@ -1,7 +1,5 @@ diff --git a/src/views/login.vue b/src/views/login.vue index 81ea783..30bc98d 100644 --- a/src/views/login.vue +++ b/src/views/login.vue @@ -29,7 +29,7 @@ async function onSubmit() { }, }) .then(async (res) => { - setAuthen(res.data.result); + setAuthen(res.data.result,'n'); }) .catch((err) => { $q.dialog({ From accac04af8483f9c5ffbc8918dcad8f343fd4f13 Mon Sep 17 00:00:00 2001 From: setthawutttty Date: Mon, 31 Mar 2025 16:36:35 +0700 Subject: [PATCH 040/195] no message --- .../components/FormLeave/01_SickForm.vue | 15 +- .../components/FormLeave/03_Birth.vue | 15 +- .../FormLeave/04_HelpWifeBirthForm.vue | 15 +- .../components/FormLeave/05_VacationForm.vue | 17 +- .../FormLeave/06_OrdinationForm.vue | 11 +- .../components/FormLeave/09_StudyForm.vue | 16 +- .../components/FormLeave/10_TrainForm.vue | 14 +- .../05_leave/components/FormLeave/Form.vue | 9 +- src/modules/05_leave/store.ts | 15 +- src/modules/05_leave/views/EditPage.vue | 5 + .../components/viewstep/viewStep1.vue | 20 +- .../06_evaluate/stores/evaluteDetail.ts | 247 ++++++++++++++---- 12 files changed, 268 insertions(+), 131 deletions(-) diff --git a/src/modules/05_leave/components/FormLeave/01_SickForm.vue b/src/modules/05_leave/components/FormLeave/01_SickForm.vue index 7786ab7..188effb 100644 --- a/src/modules/05_leave/components/FormLeave/01_SickForm.vue +++ b/src/modules/05_leave/components/FormLeave/01_SickForm.vue @@ -48,8 +48,6 @@ const formDataSick = reactive({ leaveRange: "ALL", leaveTotal: "", leaveLast: null, - leaveNumber: "", - leaveAddress: "", leaveDetail: "", leaveDocument: [], }); @@ -132,8 +130,8 @@ function onValidate() { convertDateToAPI(formDataSick.leaveEndDate) ?? "" ); formData.append("leaveWrote", formDataSick.leaveWrote); - formData.append("leaveAddress", formDataSick.leaveAddress); - formData.append("leaveNumber", formDataSick.leaveNumber); + formData.append("leaveAddress", dataStore.currentAddress); + formData.append("leaveNumber", dataStore.telephoneNumber); formData.append("leaveDetail", formDataSick.leaveDetail); formData.append("leaveTotal", formDataSick.leaveTotal); props.onSubmit(formData, isLeave.value); @@ -212,11 +210,9 @@ watch(props.data, () => { formDataSick.leaveEndDate = new Date(props.data.leaveEndDate); formDataSick.contractTel = props.data.contractTel; formDataSick.leaveTotal = props.data.leaveTotal; - formDataSick.leaveNumber = props.data.leaveNumber; formDataSick.leaveDetail = props.data.leaveDetail; formDataSick.leaveRange = props.data.leaveRange; leaveDocumentList.value = props.data.leaveDocument; - formDataSick.leaveAddress = props.data.leaveAddress; statusCheck.value = props.data.status; formDataSick.leaveDocument = []; } @@ -230,11 +226,9 @@ onMounted(() => { formDataSick.leaveEndDate = new Date(props.data.leaveEndDate); formDataSick.contractTel = props.data.contractTel; formDataSick.leaveTotal = props.data.leaveTotal; - formDataSick.leaveNumber = props.data.leaveNumber; formDataSick.leaveDetail = props.data.leaveDetail; formDataSick.leaveRange = props.data.leaveRange; leaveDocumentList.value = props.data.leaveDocument; - formDataSick.leaveAddress = props.data.leaveAddress; statusCheck.value = props.data.status; leaveId.value = props.data.id; } @@ -432,10 +426,11 @@ onMounted(() => { outlined ref="leaveNumberRef" for="leaveNumberRef" - v-model="formDataSick.leaveNumber" + v-model="dataStore.telephoneNumber" mask="(###)-###-####" hide-bottom-space bg-color="white" + lazy-rules unmasked-value label="หมายเลขโทรศัพท์ที่ติดต่อได้" :readonly="!edit || statusCheck === 'NEW'" @@ -450,7 +445,7 @@ onMounted(() => { outlined ref="leaveAddressRef" for="leaveAddressRef" - v-model="formDataSick.leaveAddress" + v-model="dataStore.currentAddress" label="ที่อยู่ที่ติดต่อได้ระหว่างลา" :readonly="!edit || statusCheck === 'NEW'" :rules="[ diff --git a/src/modules/05_leave/components/FormLeave/03_Birth.vue b/src/modules/05_leave/components/FormLeave/03_Birth.vue index fd0a334..9f481de 100644 --- a/src/modules/05_leave/components/FormLeave/03_Birth.vue +++ b/src/modules/05_leave/components/FormLeave/03_Birth.vue @@ -46,8 +46,6 @@ const formDataBirth = reactive({ leaveEndDate: null, leaveTotal: "", leaveLast: "", - leaveNumber: "", - leaveAddress: "", leaveDetail: "", leaveDocument: [], }); @@ -113,8 +111,8 @@ function onValidate() { convertDateToAPI(formDataBirth.leaveEndDate) ?? "" ); formData.append("leaveWrote", formDataBirth.leaveWrote); - formData.append("leaveAddress", formDataBirth.leaveAddress); - formData.append("leaveNumber", formDataBirth.leaveNumber); + formData.append("leaveAddress", dataStore.currentAddress); + formData.append("leaveNumber", dataStore.telephoneNumber); formData.append("leaveDetail", formDataBirth.leaveDetail); formData.append("leaveTotal", formDataBirth.leaveTotal); @@ -162,8 +160,6 @@ watch(props.data, () => { formDataBirth.leaveStartDate = props.data.leaveStartDate; formDataBirth.leaveEndDate = props.data.leaveEndDate; formDataBirth.leaveTotal = props.data.leaveTotal; - formDataBirth.leaveNumber = props.data.leaveNumber; - formDataBirth.leaveAddress = props.data.leaveAddress; formDataBirth.leaveDetail = props.data.leaveDetail; leaveDocumentList.value = props.data.leaveDocument; statusCheck.value = props.data.status; @@ -178,8 +174,6 @@ onMounted(() => { formDataBirth.leaveStartDate = props.data.leaveStartDate; formDataBirth.leaveEndDate = props.data.leaveEndDate; formDataBirth.leaveTotal = props.data.leaveTotal; - formDataBirth.leaveNumber = props.data.leaveNumber; - formDataBirth.leaveAddress = props.data.leaveAddress; formDataBirth.leaveDetail = props.data.leaveDetail; leaveDocumentList.value = props.data.leaveDocument; statusCheck.value = props.data.status; @@ -352,9 +346,10 @@ onMounted(() => { bg-color="white" ref="leaveNumberRef" for="leaveNumberRef" - v-model="formDataBirth.leaveNumber" + v-model="dataStore.telephoneNumber" mask="(###)-###-####" unmasked-value + lazy-rules label="หมายเลขโทรศัพท์ที่ติดต่อได้" :readonly="!edit || statusCheck === 'NEW'" :rules="[ @@ -370,7 +365,7 @@ onMounted(() => { bg-color="white" ref="leaveAddressRef" for="leaveAddressRef" - v-model="formDataBirth.leaveAddress" + v-model="dataStore.currentAddress" label="ที่อยู่ที่ติดต่อได้ระหว่างลา" :readonly="!edit || statusCheck === 'NEW'" :rules="[ diff --git a/src/modules/05_leave/components/FormLeave/04_HelpWifeBirthForm.vue b/src/modules/05_leave/components/FormLeave/04_HelpWifeBirthForm.vue index 31de76b..8dca57c 100644 --- a/src/modules/05_leave/components/FormLeave/04_HelpWifeBirthForm.vue +++ b/src/modules/05_leave/components/FormLeave/04_HelpWifeBirthForm.vue @@ -48,8 +48,6 @@ const formDataHelpWife = reactive({ leaveStartDate: null, leaveEndDate: null, leaveTotal: "", - leaveNumber: "", - leaveAddress: "", leaveDetail: "", leaveDocument: [], }); @@ -124,8 +122,8 @@ function onValidate() { convertDateToAPI(formDataHelpWife.leaveEndDate)??'' ); formData.append("leaveWrote", formDataHelpWife.leaveWrote); - formData.append("leaveAddress", formDataHelpWife.leaveAddress); - formData.append("leaveNumber", formDataHelpWife.leaveNumber); + formData.append("leaveAddress", dataStore.currentAddress); + formData.append("leaveNumber", dataStore.telephoneNumber); formData.append("leaveDetail", formDataHelpWife.leaveDetail); formData.append("wifeDayName", formDataHelpWife.wifeDayName); formData.append( @@ -187,8 +185,6 @@ watch(props.data, () => { formDataHelpWife.leaveStartDate = props.data.leaveStartDate; formDataHelpWife.leaveEndDate = props.data.leaveEndDate; formDataHelpWife.leaveTotal = props.data.leaveTotal; - formDataHelpWife.leaveNumber = props.data.leaveNumber; - formDataHelpWife.leaveAddress = props.data.leaveAddress; formDataHelpWife.leaveDetail = props.data.leaveDetail; formDataHelpWife.leaveDocument = []; leaveDocumentList.value = props.data.leaveDocument; @@ -205,8 +201,6 @@ onMounted(() => { formDataHelpWife.leaveStartDate = props.data.leaveStartDate; formDataHelpWife.leaveEndDate = props.data.leaveEndDate; formDataHelpWife.leaveTotal = props.data.leaveTotal; - formDataHelpWife.leaveNumber = props.data.leaveNumber; - formDataHelpWife.leaveAddress = props.data.leaveAddress; formDataHelpWife.leaveDetail = props.data.leaveDetail; leaveDocumentList.value = props.data.leaveDocument; statusCheck.value = props.data.status; @@ -426,10 +420,11 @@ onMounted(() => { outlined ref="leaveNumberRef" for="leaveNumberRef" - v-model="formDataHelpWife.leaveNumber" + v-model="dataStore.telephoneNumber" mask="(###)-###-####" unmasked-value hide-bottom-space + lazy-rules bg-color="white" label="หมายเลขโทรศัพท์ที่ติดต่อได้" :readonly="!edit || statusCheck === 'NEW'" @@ -446,7 +441,7 @@ onMounted(() => { bg-color="white" ref="leaveAddressRef" for="leaveAddressRef" - v-model="formDataHelpWife.leaveAddress" + v-model="dataStore.currentAddress" label="ที่อยู่ที่ติดต่อได้ระหว่างลา" :readonly="!edit || statusCheck === 'NEW'" :rules="[ diff --git a/src/modules/05_leave/components/FormLeave/05_VacationForm.vue b/src/modules/05_leave/components/FormLeave/05_VacationForm.vue index 08fae56..1844424 100644 --- a/src/modules/05_leave/components/FormLeave/05_VacationForm.vue +++ b/src/modules/05_leave/components/FormLeave/05_VacationForm.vue @@ -49,8 +49,6 @@ const formDataVacation = reactive({ leaveStartDate: null, leaveEndDate: null, leaveTotal: "", - leaveNumber: "", - leaveAddress: "", leaveDetail: "", leaveDocument: [], }); @@ -145,8 +143,8 @@ function onValidate() { convertDateToAPI(formDataVacation.leaveEndDate)??'' ); formData.append("leaveWrote", formDataVacation.leaveWrote); - formData.append("leaveAddress", formDataVacation.leaveAddress); - formData.append("leaveNumber", formDataVacation.leaveNumber); + formData.append("leaveAddress", dataStore.currentAddress); + formData.append("leaveNumber", dataStore.telephoneNumber); formData.append("leaveDetail", formDataVacation.leaveDetail); formData.append("leaveTotal", formDataVacation.leaveTotal); props.onSubmit(formData, isLeave.value); @@ -203,8 +201,7 @@ watch(props.data, () => { formDataVacation.leaveStartDate = props.data.leaveStartDate; formDataVacation.leaveEndDate = props.data.leaveEndDate; formDataVacation.leaveTotal = props.data.leaveTotal; - formDataVacation.leaveNumber = props.data.leaveNumber; - formDataVacation.leaveAddress = props.data.leaveAddress; + formDataVacation.leaveDetail = props.data.leaveDetail; leaveDocumentList.value = props.data.leaveDocument; statusCheck.value = props.data.status; @@ -222,8 +219,7 @@ onMounted(() => { formDataVacation.leaveStartDate = props.data.leaveStartDate; formDataVacation.leaveEndDate = props.data.leaveEndDate; formDataVacation.leaveTotal = props.data.leaveTotal; - formDataVacation.leaveNumber = props.data.leaveNumber; - formDataVacation.leaveAddress = props.data.leaveAddress; + formDataVacation.leaveDetail = props.data.leaveDetail; leaveDocumentList.value = props.data.leaveDocument; statusCheck.value = props.data.status; @@ -431,8 +427,9 @@ onMounted(() => { bg-color="white" ref="leaveNumberRef" for="leaveNumberRef" - v-model="formDataVacation.leaveNumber" + v-model="dataStore.telephoneNumber" mask="(###)-###-####" + lazy-rules unmasked-value label="หมายเลขโทรศัพท์ที่ติดต่อได้" :readonly="!edit || statusCheck === 'NEW'" @@ -449,7 +446,7 @@ onMounted(() => { bg-color="white" ref="leaveAddressRef" for="leaveAddressRef" - v-model="formDataVacation.leaveAddress" + v-model="dataStore.currentAddress" label="ที่อยู่ที่ติดต่อได้ระหว่างลา" :readonly="!edit || statusCheck === 'NEW'" :rules="[ diff --git a/src/modules/05_leave/components/FormLeave/06_OrdinationForm.vue b/src/modules/05_leave/components/FormLeave/06_OrdinationForm.vue index 5a4d401..0111e95 100644 --- a/src/modules/05_leave/components/FormLeave/06_OrdinationForm.vue +++ b/src/modules/05_leave/components/FormLeave/06_OrdinationForm.vue @@ -138,7 +138,7 @@ function onValidate() { ); formData.append( "ordainDayLocationNumber", - formDataOrdination.ordainDayLocationNumber + dataStore.telephoneNumber ); formData.append( "ordainDayLocationAddress", @@ -214,8 +214,7 @@ watch(props.data, () => { formDataOrdination.leaveTotal = props.data.leaveTotal; formDataOrdination.ordainDayOrdination = props.data.ordainDayOrdination; formDataOrdination.ordainDayLocationName = props.data.ordainDayLocationName; - formDataOrdination.ordainDayLocationNumber = - props.data.ordainDayLocationNumber; + formDataOrdination.ordainDayLocationAddress = props.data.ordainDayLocationAddress; formDataOrdination.ordainDayBuddhistLentName = @@ -239,8 +238,7 @@ onMounted(() => { formDataOrdination.leaveTotal = props.data.leaveTotal; formDataOrdination.ordainDayOrdination = props.data.ordainDayOrdination; formDataOrdination.ordainDayLocationName = props.data.ordainDayLocationName; - formDataOrdination.ordainDayLocationNumber = - props.data.ordainDayLocationNumber; + formDataOrdination.ordainDayLocationAddress = props.data.ordainDayLocationAddress; formDataOrdination.ordainDayBuddhistLentName = @@ -583,9 +581,10 @@ onMounted(() => { dense full-width outlined - v-model="formDataOrdination.ordainDayLocationNumber" + v-model="dataStore.telephoneNumber" bg-color="white" mask="(###)-###-####" + lazy-rules unmasked-value :readonly="!edit || statusCheck === 'NEW'" hide-bottom-space diff --git a/src/modules/05_leave/components/FormLeave/09_StudyForm.vue b/src/modules/05_leave/components/FormLeave/09_StudyForm.vue index e53954c..2fa2a10 100644 --- a/src/modules/05_leave/components/FormLeave/09_StudyForm.vue +++ b/src/modules/05_leave/components/FormLeave/09_StudyForm.vue @@ -68,8 +68,6 @@ const formDataStudy = reactive({ leavegovernmentDate: new Date(), leaveSalary: 10000, leaveSalaryText: arabicNumberToText(10000), - leaveNumber: "", - leaveAddress: "", studyDayScholarship: "", studyDayCountry: "", studyDayUniversityName: "", // @@ -155,8 +153,8 @@ function onValidate() { formData.append("leaveWrote", formDataStudy.leaveWrote); // formData.append("leaveDetail", formDataStudy.leaveDetail); // formData.append("studyDayScholarship", formDataStudy.studyDayScholarship); - formData.append("leaveAddress", formDataStudy.leaveAddress); // - formData.append("leaveNumber", formDataStudy.leaveNumber); // + formData.append("leaveAddress", dataStore.currentAddress); // + formData.append("leaveNumber", dataStore.telephoneNumber); // formData.append("leaveTotal", formDataStudy.leaveTotalDay); // props.onSubmit(formData, isLeave.value); } @@ -206,8 +204,7 @@ watch(props.data, async () => { formDataStudy.leavegovernmentDate = props.data.leavegovernmentDate; formDataStudy.leaveSalary = props.data.leaveSalary; formDataStudy.leaveSalaryText = props.data.leaveSalaryText; - formDataStudy.leaveNumber = props.data.leaveNumber; - formDataStudy.leaveAddress = props.data.leaveAddress; + formDataStudy.studyDayScholarship = props.data.studyDayScholarship; formDataStudy.studyDayCountry = props.data.studyDayCountry; formDataStudy.studyDayUniversityName = props.data.studyDayUniversityName; @@ -236,8 +233,7 @@ onMounted(async () => { formDataStudy.leavegovernmentDate = props.data.leavegovernmentDate; formDataStudy.leaveSalary = props.data.leaveSalary; formDataStudy.leaveSalaryText = props.data.leaveSalaryText; - formDataStudy.leaveNumber = props.data.leaveNumber; - formDataStudy.leaveAddress = props.data.leaveAddress; + formDataStudy.studyDayScholarship = props.data.studyDayScholarship; formDataStudy.studyDayCountry = props.data.studyDayCountry; formDataStudy.studyDayUniversityName = props.data.studyDayUniversityName; @@ -583,7 +579,7 @@ onMounted(async () => { /> { /> ({ leavegovernmentDate: new Date(), leaveSalary: 10000, leaveSalaryText: arabicNumberToText(10000), - leaveNumber: "", - leaveAddress: "", studyDayScholarship: "", studyDayCountry: "", studyDayTrainingSubject: "", @@ -140,8 +138,8 @@ function onValidate() { formData.append("leaveWrote", formDataTrain.leaveWrote); // formData.append("leaveDetail", formDataTrain.leaveDetail); // formData.append("studyDayScholarship", formDataTrain.studyDayScholarship); - formData.append("leaveAddress", formDataTrain.leaveAddress); // - formData.append("leaveNumber", formDataTrain.leaveNumber); // + formData.append("leaveAddress", dataStore.currentAddress); // + formData.append("leaveNumber", dataStore.telephoneNumber); // formData.append("leaveSalaryText", formDataTrain.leaveSalaryText); // formData.append("leaveSalary", formDataTrain.leaveSalary); // formData.append("leaveTotal", formDataTrain.leaveTotalDay); // @@ -193,8 +191,6 @@ watch(props.data, async () => { formDataTrain.leavegovernmentDate = props.data.leavegovernmentDate; formDataTrain.leaveSalary = props.data.leaveSalary; formDataTrain.leaveSalaryText = props.data.leaveSalaryText; - formDataTrain.leaveNumber = props.data.leaveNumber; - formDataTrain.leaveAddress = props.data.leaveAddress; formDataTrain.studyDayScholarship = props.data.studyDayScholarship; formDataTrain.studyDayCountry = props.data.studyDayCountry; formDataTrain.studyDayTrainingSubject = props.data.studyDayTrainingSubject; @@ -222,8 +218,6 @@ onMounted(async () => { formDataTrain.leavegovernmentDate = props.data.leavegovernmentDate; formDataTrain.leaveSalary = props.data.leaveSalary; formDataTrain.leaveSalaryText = props.data.leaveSalaryText; - formDataTrain.leaveNumber = props.data.leaveNumber; - formDataTrain.leaveAddress = props.data.leaveAddress; formDataTrain.studyDayScholarship = props.data.studyDayScholarship; formDataTrain.studyDayCountry = props.data.studyDayCountry; formDataTrain.studyDayTrainingSubject = props.data.studyDayTrainingSubject; @@ -554,7 +548,7 @@ onMounted(async () => { /> { /> { label="เรียน" /> { label="ชื่อผู้ยื่นขอ" /> { label="ตำแหน่งผู้ยื่นขอ" /> { label="ระดับผู้ยื่นขอ" /> { leaveTypeName: e.leaveTypeName, leaveTypeId: e.leaveTypeId, fullName: e.fullName, - dateSendLeave: e.dateSendLeave && date2Thai(e.dateSendLeave,false,true), + dateSendLeave: e.dateSendLeave && date2Thai(e.dateSendLeave, false, true), dateLeave: date2Thai(e.leaveStartDate) + " - " + date2Thai(e.leaveEndDate), status: e.status, @@ -281,6 +281,9 @@ export const useLeaveStore = defineStore("Leave", () => { const leaveLast = ref(); const restDayCurrentTotal = ref(0); + const telephoneNumber = ref(""); + const currentAddress = ref(""); + //ดึงข้อมูล profile จาก API async function fetchProfile() { showLoader(); @@ -301,6 +304,14 @@ export const useLeaveStore = defineStore("Leave", () => { restDayTotalOld.value = data.restDayTotalOld; birthDate.value = data.birthDate; dateAppoint.value = data.dateAppoint; + + telephoneNumber.value = + data.telephoneNumber && data.telephoneNumber !== "-" + ? data.telephoneNumber + : null; + currentAddress.value = data.currentSubDistrict + ? `${data.currentAddress} ${data.currentSubDistrict} ${data.currentDistrict} ${data.currentProvince} ${data.currentZipCode}` + : ""; salary.value = data.salary ? data.salary.toLocaleString("th-TH") : ""; salaryText.value = data.salaryText; leaveLast.value = @@ -419,5 +430,7 @@ export const useLeaveStore = defineStore("Leave", () => { typeOptionsMain, status, statusOptionsMain, + telephoneNumber, + currentAddress, }; }); diff --git a/src/modules/05_leave/views/EditPage.vue b/src/modules/05_leave/views/EditPage.vue index 1e76977..d2648c3 100644 --- a/src/modules/05_leave/views/EditPage.vue +++ b/src/modules/05_leave/views/EditPage.vue @@ -208,6 +208,11 @@ async function fetchDataDetail(id: string) { formData.dear = data.dear ?? "-"; formData.leaveLast = data.leaveLast ?? "-"; formData.leaveRange = data.leaveRange; + + dataStore.telephoneNumber = + data.leaveNumber && data.leaveNumber !== "-" ? data.leaveNumber : null; + dataStore.currentAddress = data.leaveAddress ? data.leaveAddress : ""; + await dataStore.fetchProfileOld(data); }) .catch((err) => { diff --git a/src/modules/06_evaluate/components/viewstep/viewStep1.vue b/src/modules/06_evaluate/components/viewstep/viewStep1.vue index 99cebc2..1867f87 100644 --- a/src/modules/06_evaluate/components/viewstep/viewStep1.vue +++ b/src/modules/06_evaluate/components/viewstep/viewStep1.vue @@ -22,7 +22,8 @@ const mixin = useCounterMixin(); const store = useEvaluateDetailStore(); const $q = useQuasar(); const route = useRoute(); -const { showLoader, hideLoader, messageError, date2Thai } = mixin; +const { showLoader, hideLoader, messageError, date2Thai, findOrgNameHtml } = + mixin; const { columnsCertificates, columnSalaries, @@ -183,8 +184,6 @@ async function fetchCheckSpec(data: any) { position: e.position, positionSalaryAmount: e.positionSalaryAmount ? e.positionSalaryAmount : 0, refCommandDate: e.refCommandDate ? e.refCommandDate : "", - - refCommandNo: e.refCommandNo ? e.refCommandNo : "", salaryClass: e.salaryClass ? e.salaryClass : "", salaryRef: e.salaryRef ? e.salaryRef : "", salaryStatus: e.salaryStatus ? e.salariesStatus : "", @@ -548,7 +547,20 @@ onMounted(async () => { :key="col.id" class="vertical-top" > -
+
+ {{ + props.row + ? findOrgNameHtml({ + root: props.row.orgRoot, + child1: props.row.orgChild1, + child2: props.row.orgChild2, + child3: props.row.orgChild3, + child4: props.row.orgChild4, + }) + : "-" + }} +
+
{{ col.value ? col.value : "-" }}
diff --git a/src/modules/06_evaluate/stores/evaluteDetail.ts b/src/modules/06_evaluate/stores/evaluteDetail.ts index 86d83b1..fa815fa 100644 --- a/src/modules/06_evaluate/stores/evaluteDetail.ts +++ b/src/modules/06_evaluate/stores/evaluteDetail.ts @@ -7,7 +7,7 @@ import { useCounterMixin } from "@/stores/mixin"; export const useEvaluateDetailStore = defineStore("evaluateDetailStore", () => { /** columns TableViewStep1*/ const mixin = useCounterMixin(); - const { date2Thai } = mixin; + const { date2Thai, findOrgNameHtml } = mixin; const columnsCertificates = ref([ { @@ -59,14 +59,163 @@ export const useEvaluateDetailStore = defineStore("evaluateDetailStore", () => { const columnSalaries = ref([ { - name: "date", + name: "commandDateAffect", align: "left", - label: "วัน เดือน ปี", + label: "วันที่คำสั่งมีผล", sortable: true, - field: "date", + field: "commandDateAffect", headerStyle: "font-size: 14px", style: "font-size: 14px", format: (v) => date2Thai(v), + sort: (a: string, b: string) => + a + .toString() + .localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), + }, + { + name: "commandDateSign", + align: "left", + label: "วันที่ลงนาม", + sortable: true, + field: "commandDateSign", + headerStyle: "font-size: 14px", + style: "font-size: 14px", + format: (v) => date2Thai(v), + sort: (a: string, b: string) => + a + .toString() + .localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), + }, + { + name: "posNumCodeSit", + align: "left", + label: "หน่วยงานที่ออกคำสั่ง", + sortable: false, + field: "posNumCodeSit", + headerStyle: "font-size: 14px", + style: "font-size: 14px", + format(val, row) { + return row.posNumCodeSitAbb && row.posNumCodeSit + ? `${row.posNumCodeSit} (${row.posNumCodeSitAbb})` + : row.posNumCodeSit + ? row.posNumCodeSit + : "-"; + }, + }, + { + name: "posNo", + align: "left", + label: "เลขที่ตำแหน่ง", + sortable: true, + field: "posNo", + headerStyle: "font-size: 14px", + style: "font-size: 14px", + format(val, row) { + return row.posNoAbb && row.posNo + ? `${row.posNoAbb}${row.posNo}` + : row.posNo + ? row.posNo + : "-"; + }, + sort: (a: string, b: string) => + a + .toString() + .localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), + }, + { + name: "positionName", + align: "left", + label: "ตำแหน่งในสายงาน", + sortable: true, + field: "positionName", + headerStyle: "font-size: 14px", + style: "font-size: 14px", + sort: (a: string, b: string) => + a + .toString() + .localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), + }, + { + name: "positionType", + align: "left", + label: "ตำแหน่งประเภท", + sortable: true, + field: "positionType", + headerStyle: "font-size: 14px", + style: "font-size: 14px", + sort: (a: string, b: string) => + a + .toString() + .localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), + }, + { + name: "positionLevel", + align: "left", + label: "ระดับ", + sortable: true, + field: "positionLevel", + format(val, row) { + return `${ + row.positionLevel + ? row.positionLevel + : row.positionCee + ? row.positionCee + : "-" + }`; + }, + headerStyle: "font-size: 14px", + style: "font-size: 14px", + sort: (a: string, b: string) => + a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), + }, + { + name: "positionExecutive", + align: "left", + label: "ตำแหน่งทางการบริหาร", + sortable: true, + field: "positionExecutive", + headerStyle: "font-size: 14px", + style: "font-size: 14px", + sort: (a: string, b: string) => + a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), + }, + { + name: "commandNo", + align: "left", + label: "เลขที่คำสั่ง", + sortable: true, + field: "commandNo", + format(val, row) { + return row.commandNo && row.commandYear + ? `${row.commandNo}/${Number(row.commandYear) + 543}` + : ""; + }, + headerStyle: "font-size: 14px", + style: "font-size: 14px", + sort: (a: string, b: string) => + a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), + }, + { + name: "commandCode", + align: "left", + label: "ประเภทคำสั่ง", + sortable: true, + field: "commandCode", + headerStyle: "font-size: 14px", + style: "font-size: 14px", + sort: (a: string, b: string) => + a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), + }, + { + name: "organization", + align: "left", + label: "สังกัด", + sortable: true, + field: "organization", + headerStyle: "font-size: 14px;min-width:280px", + style: "font-size: 14px", + sort: (a: string, b: string) => + a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, { name: "amount", @@ -76,17 +225,19 @@ export const useEvaluateDetailStore = defineStore("evaluateDetailStore", () => { field: "amount", headerStyle: "font-size: 14px", style: "font-size: 14px", - format: (v) => Number(v).toLocaleString(), - }, - { - name: "positionSalaryAmount", - align: "left", - label: "เงินประจำตำแหน่ง", - sortable: true, - field: "positionSalaryAmount", - headerStyle: "font-size: 14px", - style: "font-size: 14px", - format: (v) => Number(v).toLocaleString(), + format(v, row) { + return row.amount + ? `${row.amount.toLocaleString()}${ + row.amountSpecial !== 0 && row.amountSpecial + ? ` (${row.amountSpecial.toLocaleString()})` + : "" + }` + : "-"; + }, + sort: (a: string, b: string) => + a + .toString() + .localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, { name: "mouthSalaryAmount", @@ -97,54 +248,38 @@ export const useEvaluateDetailStore = defineStore("evaluateDetailStore", () => { headerStyle: "font-size: 14px", style: "font-size: 14px", format: (v) => Number(v).toLocaleString(), + sort: (a: string, b: string) => + a + .toString() + .localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), + }, + { + name: "positionSalaryAmount", + align: "left", + label: "เงินประจำตำแหน่ง", + sortable: true, + field: "positionSalaryAmount", + headerStyle: "font-size: 14px", + style: "font-size: 14px", + format: (v) => Number(v).toLocaleString(), + sort: (a: string, b: string) => + a + .toString() + .localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, { - name: "posNo", + name: "remark", align: "left", - label: "เลขที่ตำแหน่ง", + label: "หมายเหตุ", sortable: true, - field: "posNo", - headerStyle: "font-size: 14px", - style: "font-size: 14px", - }, - - { - name: "positionType", - align: "left", - label: "ตำแหน่งประเภท", - sortable: true, - field: "positionType", - headerStyle: "font-size: 14px", - style: "font-size: 14px", - }, - { - name: "positionLevel", - align: "left", - label: "ระดับ", - sortable: true, - field: "positionLevel", - headerStyle: "font-size: 14px", - style: "font-size: 14px", - }, - - { - name: "templateDoc", - align: "left", - label: "เอกสารอ้างอิง", - sortable: true, - field: "templateDoc", - headerStyle: "font-size: 14px", - style: "font-size: 14px", - }, - { - name: "refCommandNo", - align: "left", - label: "เลขที่คำสั่ง", - sortable: true, - field: "refCommandNo", + field: "remark", headerStyle: "font-size: 14px", style: "font-size: 14px", + sort: (a: string, b: string) => + a + .toString() + .localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, ]); From 6a72b00ae318da7f80a98fdf737d24c549a39b23 Mon Sep 17 00:00:00 2001 From: waruneeauy Date: Tue, 1 Apr 2025 10:13:19 +0700 Subject: [PATCH 041/195] =?UTF-8?q?=E0=B9=81=E0=B8=81=E0=B9=89=20layout=20?= =?UTF-8?q?=E0=B8=AA=E0=B8=B1=E0=B8=87=E0=B8=81=E0=B8=B1=E0=B8=94=E0=B8=9C?= =?UTF-8?q?=E0=B8=B9=E0=B9=89=E0=B8=A2=E0=B8=B7=E0=B9=88=E0=B8=99=E0=B8=82?= =?UTF-8?q?=E0=B8=AD=E0=B8=A5=E0=B8=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/modules/05_leave/components/FormLeave/Form.vue | 1 - 1 file changed, 1 deletion(-) diff --git a/src/modules/05_leave/components/FormLeave/Form.vue b/src/modules/05_leave/components/FormLeave/Form.vue index 67b5042..0b73d8e 100644 --- a/src/modules/05_leave/components/FormLeave/Form.vue +++ b/src/modules/05_leave/components/FormLeave/Form.vue @@ -119,7 +119,6 @@ onMounted(() => { dense outlined readonly - type="textarea" bg-color="white" v-model="dataStore.organizationName" label="สังกัดผู้ยื่นขอ" From 27fb61604fdfa84c878998fae0b25eb8c74af63e Mon Sep 17 00:00:00 2001 From: setthawutttty Date: Tue, 1 Apr 2025 13:42:35 +0700 Subject: [PATCH 042/195] no message --- .../06_evaluate/components/ExpertPageDetail.vue | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/src/modules/06_evaluate/components/ExpertPageDetail.vue b/src/modules/06_evaluate/components/ExpertPageDetail.vue index 79f0a33..9313bb0 100644 --- a/src/modules/06_evaluate/components/ExpertPageDetail.vue +++ b/src/modules/06_evaluate/components/ExpertPageDetail.vue @@ -233,19 +233,9 @@ async function onClickDowloadFile( { positionLevel: profile.value == null ? "" : profile.value.positionLevel }, { posNo: profile.value == null ? "" : profile.value.posNo }, { oc: profile.value == null ? "" : profile.value.oc }, - { - birthDate: - profile.value == null ? "" : date2Thai(profile.value.birthDate), - }, + { birthDate: profile.value == null ? "" : date2Thai(profile.value.birthDate), }, { govAge: profile.value == null ? "" : profile.value.govAge }, - { - positionLevelNew: - profile.value == null - ? "" - : profile.value.type == "EXPERT" - ? "ชำนาญการ" - : "ชำนาญการพิเศษ", - }, + { positionLevelNew: profile.value == null ? "" : profile.value.type == "EXPERT" ? "ชำนาญการ" : "ชำนาญการพิเศษ", }, tp === "EV1_005" || tp === "EV1_007" ? { organizationName: "-" } : null, tp === "EV1_007" ? { positionName: "-" } : null, tp === "EV1_007" ? { positionLeaveName: "-" } : null From c45d3f8e6e3c410087068bff5d1f093c98bfeb6f Mon Sep 17 00:00:00 2001 From: setthawutttty Date: Tue, 1 Apr 2025 16:34:24 +0700 Subject: [PATCH 043/195] =?UTF-8?q?=E0=B8=9B=E0=B8=A3=E0=B8=B0=E0=B9=80?= =?UTF-8?q?=E0=B8=A1=E0=B8=B4=E0=B8=99=E0=B9=80=E0=B8=8A=E0=B8=B5=E0=B9=88?= =?UTF-8?q?=E0=B8=A2=E0=B8=A7=E0=B8=8A=E0=B8=B2=E0=B8=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/org/api.org.ts | 3 + src/interface/Main.ts | 3 + .../components/ExpertPageDetail.vue | 143 +++++++++++++++--- src/stores/data.ts | 8 +- 4 files changed, 135 insertions(+), 22 deletions(-) diff --git a/src/api/org/api.org.ts b/src/api/org/api.org.ts index ba33d4b..8ad1a24 100644 --- a/src/api/org/api.org.ts +++ b/src/api/org/api.org.ts @@ -61,6 +61,9 @@ export default { dataUserCertificateByType: (emType: string, type: string) => `${org}/profile${emType}/${type}/user`, + dataUserEvaByType: (type: string) => + `${org}/profile/${type}/user`, + dataUserOther: `${profileOrg}/other/user`, dataUserOtherByType: (type: string) => `${org}/profile${type}/other/user`, diff --git a/src/interface/Main.ts b/src/interface/Main.ts index a24e4a0..61e21db 100644 --- a/src/interface/Main.ts +++ b/src/interface/Main.ts @@ -12,6 +12,9 @@ interface ProfileData { citizenId?: string; salary?: number|null; birthDate?: string; + org?: string; + dateStart?: string; + dateRetireLaw?: string; } interface InformationData { diff --git a/src/modules/06_evaluate/components/ExpertPageDetail.vue b/src/modules/06_evaluate/components/ExpertPageDetail.vue index 9313bb0..1469831 100644 --- a/src/modules/06_evaluate/components/ExpertPageDetail.vue +++ b/src/modules/06_evaluate/components/ExpertPageDetail.vue @@ -8,6 +8,7 @@ import http from "@/plugins/http"; import config from "@/app.config"; import genReport from "@/plugins/genreport"; import { useCounterMixin } from "@/stores/mixin"; +import { useDataStore } from "@/stores/data"; import type { FormRef, @@ -17,6 +18,7 @@ import type { const $q = useQuasar(); const mixin = useCounterMixin(); +const dataPerson = useDataStore(); const { dialogConfirm, messageError, @@ -24,12 +26,13 @@ const { hideLoader, date2Thai, success, + findOrgName, } = mixin; const router = useRouter(); const route = useRoute(); - +const currentYear = new Date().getFullYear(); const evaluateId = ref(route.params.id as string); -const profile = ref(); +let profile = ref(); /** form ผู้เซ็นเอกสาร*/ const formCommand = reactive({ @@ -228,17 +231,81 @@ async function onClickDowloadFile( { certificates: certificates }, { salaries: salaries }, { trainings: trainings }, - { fullName: profile.value == null ? "" : profile.value.fullName }, - { position: profile.value == null ? "" : profile.value.position }, - { positionLevel: profile.value == null ? "" : profile.value.positionLevel }, - { posNo: profile.value == null ? "" : profile.value.posNo }, - { oc: profile.value == null ? "" : profile.value.oc }, - { birthDate: profile.value == null ? "" : date2Thai(profile.value.birthDate), }, - { govAge: profile.value == null ? "" : profile.value.govAge }, - { positionLevelNew: profile.value == null ? "" : profile.value.type == "EXPERT" ? "ชำนาญการ" : "ชำนาญการพิเศษ", }, - tp === "EV1_005" || tp === "EV1_007" ? { organizationName: "-" } : null, + { + fullName: dataPerson.formData.firstName + ? `${dataPerson.formData.prefix}${dataPerson.formData.firstName} ${dataPerson.formData.lastName}` + : "", + }, + { + position: dataPerson.formData.position + ? dataPerson.formData.position + : "", + }, + { + positionLevel: dataPerson.formData.posLevelName + ? dataPerson.formData.posLevelName + : "", + }, + { posNo: dataPerson.formData.posNo ? dataPerson.formData.posNo : "" }, + { org: dataPerson.formData ? dataPerson.formData.org : "" }, + { + birthDate: dataPerson.formData.birthDate + ? date2Thai(new Date(dataPerson.formData.birthDate)) + : "", + }, + { + govAge: profile.value.government + ? `${ + profile.value.government.govAge.day !== 0 + ? `${profile.value.government.govAge.day} วัน` + : "" + } ${ + profile.value.government.govAge.month !== 0 + ? `${profile.value.government.govAge.month} เดือน` + : "" + } ${ + profile.value.government.govAge.year !== 0 + ? `${profile.value.government.govAge.year} ปี` + : "" + }` + : ``, + }, + { + positionLevelNew: + profile.value == null + ? "" + : profile.value.type == "EXPERT" + ? "ชำนาญการ" + : "ชำนาญการพิเศษ", + }, + + tp === "EV1_005" + ? { salary: dataPerson.formData.salary ? dataPerson.formData.salary : "" } + : null, + + tp === "EV1_006" ? { lastTwoYear: (currentYear - 2).toString() } : null, + tp === "EV1_006" ? { lastOneYear: (currentYear - 1).toString() } : null, + tp === "EV1_006" ? { currentYear: currentYear.toString() } : null, + tp === "EV1_006" ? { commanderFullname: formData.commanderFullname } : null, + tp === "EV1_006" ? { commanderPosition: formData.commanderPosition } : null, + tp === "EV1_006" ? { commanderOrg: "" } : null, + tp === "EV1_006" + ? { commanderAboveFullname: formData.commanderAboveFullname } + : null, + tp === "EV1_006" + ? { commanderAbovePosition: formData.commanderAbovePosition } + : null, + tp === "EV1_006" ? { commanderAboveOrg: "" } : null, + tp === "EV1_007" ? { positionName: "-" } : null, - tp === "EV1_007" ? { positionLeaveName: "-" } : null + tp === "EV1_007" ? { positionLeaveName: "-" } : null, + + tp === "EV1_009" ? { dateStart: dataPerson.formData.dateStart } : null, + tp === "EV1_009" + ? { dateRetireLaw: dataPerson.formData.dateRetireLaw } + : null, + + tp === "EV1_010" ? { subject: formData.subject } : null ); const body = { template: tp, @@ -339,16 +406,49 @@ function getData() { }); } +function getDetail(type: any) { + http.get(config.API.dataUserEvaByType(type)).then((res) => { + profile.value = { + ...profile.value, // รักษาข้อมูลเดิมที่เก็บไว้ก่อนหน้านี้ + [type === "salary" + ? "salaries" + : type === "certificate" + ? "certificates" + : type === "training" + ? "trainings" + : type]: res.data.result, // เก็บข้อมูลตามประเภท (type) + }; + }); +} + +const keyObject = ref([ + "educations", + "certificate", + "salary", + "training", + "assessments", + "government", +]); onMounted(() => { - getData(); - downloadFile("1-แบบพิจารณาคุณสมบัติบุคคล"); - downloadFile("2-แบบแสดงรายละเอียดการเสนอผลงาน"); - downloadFile( - "3-แบบตรวจสอบความถูกต้องครบถ้วนของข้อมูลเพื่อประกอบการคัดเลือกบุคคล (เอกสารแบบ ก)" - ); - downloadFile("4-แบบประเมินคุณลักษณะบุคคล"); - downloadFile("5-แบบสรุปข้อมูลของผู้ขอรับการคัดเลือก (เอกสารหมายเลข 9)"); - downloadFile("6-ผลงานที่จะส่งประเมิน (เอกสารหมายเลข 11)"); + showLoader(); + Promise.all([getData(), ...keyObject.value.map(getDetail)]) + .then(() => {}) + .catch((e) => { + hideLoader(); + messageError($q, e); + }) + .finally(() => { + hideLoader(); + }); + + [ + "1-แบบพิจารณาคุณสมบัติบุคคล", + "2-แบบแสดงรายละเอียดการเสนอผลงาน", + "3-แบบตรวจสอบความถูกต้องครบถ้วนของข้อมูลเพื่อประกอบการคัดเลือกบุคคล (เอกสารแบบ ก)", + "4-แบบประเมินคุณลักษณะบุคคล", + "5-แบบสรุปข้อมูลของผู้ขอรับการคัดเลือก (เอกสารหมายเลข 9)", + "6-ผลงานที่จะส่งประเมิน (เอกสารหมายเลข 11)", + ].forEach((fileName) => downloadFile(fileName)); }); @@ -381,6 +481,7 @@ onMounted(() => { class="text-weight-medium bg-grey-1 col-12 q-py-sm q-px-md" > ผลงาน +
diff --git a/src/stores/data.ts b/src/stores/data.ts index 3752548..2000d80 100644 --- a/src/stores/data.ts +++ b/src/stores/data.ts @@ -13,7 +13,7 @@ export const useDataStore = defineStore("dataMain", () => { const storeRegistry = useRegistryInFormationStore(); const $q = useQuasar(); const mixin = useCounterMixin(); - const { messageError, showLoader, hideLoader, findPosMasterNo } = mixin; + const { messageError, showLoader, hideLoader, findPosMasterNo,findOrgName } = mixin; // ref() คือการประกาศ state เหมือน vuex const formData = reactive({ profileId: "", @@ -28,6 +28,9 @@ export const useDataStore = defineStore("dataMain", () => { salary: null, birthDate: '', posNo: "", + org: "", + dateStart: "", + dateRetireLaw: "", }); const count = ref(0); const loader = ref(false); @@ -110,7 +113,10 @@ export const useDataStore = defineStore("dataMain", () => { formData.posTypeName = data.posTypeName; formData.posExecutiveName = data.posExecutiveName; formData.posLevelName = data.posLevelName; + formData.dateStart = data.dateStart; + formData.dateRetireLaw = data.dateRetireLaw; formData.posNo = findPosMasterNo(data); + formData.org = findOrgName(data); storeRegistry.profileId = data.profileId; storeRegistry.citizenId = data.citizenId; } From 9371dd15fcfae1eef45d59d436e099b3e276f322 Mon Sep 17 00:00:00 2001 From: "DESKTOP-1R2VSQH\\Lenovo ThinkPad E490" Date: Wed, 2 Apr 2025 14:28:26 +0700 Subject: [PATCH 044/195] =?UTF-8?q?fix=20=E0=B8=97=E0=B8=B0=E0=B9=80?= =?UTF-8?q?=E0=B8=9A=E0=B8=B5=E0=B8=A2=E0=B8=99=E0=B8=9B=E0=B8=A3=E0=B8=B0?= =?UTF-8?q?=E0=B8=A7=E0=B8=B1=E0=B8=95=E0=B8=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../10_registry/02_Government/07_Position.vue | 6 +++--- src/modules/10_registry/03_Salary/01_Salary.vue | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/modules/10_registry/02_Government/07_Position.vue b/src/modules/10_registry/02_Government/07_Position.vue index fc84f61..6f076ee 100644 --- a/src/modules/10_registry/02_Government/07_Position.vue +++ b/src/modules/10_registry/02_Government/07_Position.vue @@ -198,11 +198,11 @@ const baseColumns = ref([ a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, { - name: "commandCode", + name: "commandName", align: "left", label: "ประเภทคำสั่ง", sortable: true, - field: "commandCode", + field: "commandName", headerStyle: "font-size: 14px", style: "font-size: 14px", sort: (a: string, b: string) => @@ -301,7 +301,7 @@ const baseVisibleColumns = ref([ "positionExecutive", "amount", "commandNo", - "commandCode", + "commandName", "commandDateSign", "organization", "remark", diff --git a/src/modules/10_registry/03_Salary/01_Salary.vue b/src/modules/10_registry/03_Salary/01_Salary.vue index c11c51a..25bb95f 100644 --- a/src/modules/10_registry/03_Salary/01_Salary.vue +++ b/src/modules/10_registry/03_Salary/01_Salary.vue @@ -182,11 +182,11 @@ const baseColumns = ref([ a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, { - name: "commandCode", + name: "commandName", align: "left", label: "ประเภทคำสั่ง", sortable: true, - field: "commandCode", + field: "commandName", headerStyle: "font-size: 14px", style: "font-size: 14px", sort: (a: string, b: string) => @@ -316,7 +316,7 @@ const visibleColumns = ref([ "positionSalaryAmount", "mouthSalaryAmount", "commandNo", - "commandCode", + "commandName", "commandDateSign", "organization", "remark", @@ -349,7 +349,7 @@ const visibleColumnsHistory = ref([ "positionSalaryAmount", "mouthSalaryAmount", "commandNo", - "commandCode", + "commandName", "commandDateSign", "organization", "remark", @@ -509,11 +509,11 @@ const baseColumnsHistory = ref([ a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, { - name: "commandCode", + name: "commandName", align: "left", label: "ประเภทคำสั่ง", sortable: true, - field: "commandCode", + field: "commandName", headerStyle: "font-size: 14px", style: "font-size: 14px", sort: (a: string, b: string) => From 86b2aaf2e2edf2ec1264c7f36f287f1b4684bdbb Mon Sep 17 00:00:00 2001 From: "DESKTOP-1R2VSQH\\Lenovo ThinkPad E490" Date: Thu, 3 Apr 2025 10:55:55 +0700 Subject: [PATCH 045/195] =?UTF-8?q?fix=20Columns=20=E0=B8=8A=E0=B9=88?= =?UTF-8?q?=E0=B8=B2=E0=B8=A7=E0=B8=A2=E0=B8=A3=E0=B8=B2=E0=B8=8A=E0=B8=81?= =?UTF-8?q?=E0=B8=B2=E0=B8=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../02_Government/06_Assistance.vue | 74 ++++++++++++++++++- 1 file changed, 70 insertions(+), 4 deletions(-) diff --git a/src/modules/10_registry/02_Government/06_Assistance.vue b/src/modules/10_registry/02_Government/06_Assistance.vue index a87f459..b9526ce 100644 --- a/src/modules/10_registry/02_Government/06_Assistance.vue +++ b/src/modules/10_registry/02_Government/06_Assistance.vue @@ -29,22 +29,38 @@ const modalHistory = ref(false); /** ตัวแปรข้อมูล */ const visibleColumns = ref([ + "commandName", "agency", "dateStart", "dateEnd", "commandNo", "document", + "lastUpdateFullName", "lastUpdatedAt", ]); const columns = ref([ + { + name: "commandName", + align: "left", + label: "ประเภทคำสั่ง", + sortable: true, + field: "commandName", + headerStyle: "font-size: 14px", + style: "font-size: 14px", + sort: (a: string, b: string) => + a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), + }, + { name: "agency", align: "left", - label: "หน่วยงานที่ให้ช่วยราชการ", + label: "หน่วยงานที่ให้ช่วยราชการ/ส่งตัวกลับ", sortable: true, field: "agency", headerStyle: "font-size: 14px", style: "font-size: 14px", + sort: (a: string, b: string) => + a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, { name: "dateStart", @@ -55,6 +71,8 @@ const columns = ref([ format: (v) => date2Thai(v), headerStyle: "font-size: 14px", style: "font-size: 14px", + sort: (a: string, b: string) => + a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, { name: "dateEnd", @@ -65,6 +83,8 @@ const columns = ref([ format: (v) => date2Thai(v), headerStyle: "font-size: 14px", style: "font-size: 14px", + sort: (a: string, b: string) => + a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, { name: "commandNo", @@ -74,6 +94,8 @@ const columns = ref([ field: "commandNo", headerStyle: "font-size: 14px", style: "font-size: 14px", + sort: (a: string, b: string) => + a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, { name: "document", @@ -83,6 +105,19 @@ const columns = ref([ field: "document", headerStyle: "font-size: 14px", style: "font-size: 14px", + sort: (a: string, b: string) => + a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), + }, + { + name: "lastUpdateFullName", + align: "left", + label: "ผู้ดำเนินการ", + sortable: true, + field: "lastUpdateFullName", + headerStyle: "font-size: 14px", + style: "font-size: 14px", + sort: (a: string, b: string) => + a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, { name: "lastUpdatedAt", @@ -102,6 +137,7 @@ const pagination = ref({ }); const visibleColumnsHistory = ref([ + "commandName", "agency", "dateStart", "dateEnd", @@ -111,14 +147,28 @@ const visibleColumnsHistory = ref([ "lastUpdatedAt", ]); const columnsHistory = ref([ + { + name: "commandName", + align: "left", + label: "ประเภทคำสั่ง", + sortable: true, + field: "commandName", + headerStyle: "font-size: 14px", + style: "font-size: 14px", + sort: (a: string, b: string) => + a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), + }, + { name: "agency", align: "left", - label: "หน่วยงานที่ให้ช่วยราชการ", + label: "หน่วยงานที่ให้ช่วยราชการ/ส่งตัวกลับ", sortable: true, field: "agency", headerStyle: "font-size: 14px", style: "font-size: 14px", + sort: (a: string, b: string) => + a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, { name: "dateStart", @@ -129,6 +179,8 @@ const columnsHistory = ref([ format: (v) => date2Thai(v), headerStyle: "font-size: 14px", style: "font-size: 14px", + sort: (a: string, b: string) => + a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, { name: "dateEnd", @@ -139,6 +191,8 @@ const columnsHistory = ref([ format: (v) => date2Thai(v), headerStyle: "font-size: 14px", style: "font-size: 14px", + sort: (a: string, b: string) => + a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, { name: "commandNo", @@ -148,6 +202,8 @@ const columnsHistory = ref([ field: "commandNo", headerStyle: "font-size: 14px", style: "font-size: 14px", + sort: (a: string, b: string) => + a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, { name: "document", @@ -157,6 +213,8 @@ const columnsHistory = ref([ field: "document", headerStyle: "font-size: 14px", style: "font-size: 14px", + sort: (a: string, b: string) => + a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, { name: "lastUpdateFullName", @@ -166,6 +224,8 @@ const columnsHistory = ref([ field: "lastUpdateFullName", headerStyle: "font-size: 14px", style: "font-size: 14px", + sort: (a: string, b: string) => + a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, { name: "lastUpdatedAt", @@ -173,9 +233,11 @@ const columnsHistory = ref([ label: "วันที่แก้ไข", sortable: true, field: "lastUpdatedAt", + format: (v) => date2Thai(v, false, true), headerStyle: "font-size: 14px", style: "font-size: 14px", - format: (v) => date2Thai(v, false, true), + sort: (a: string, b: string) => + a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, ]); @@ -316,6 +378,7 @@ onMounted(async () => { {{ col.label }} + @@ -331,17 +394,20 @@ onMounted(async () => { ดาวน์โหลด + + + Date: Thu, 3 Apr 2025 17:51:30 +0700 Subject: [PATCH 046/195] comment workflow --- src/modules/03_retire/views/addRetire.vue | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/modules/03_retire/views/addRetire.vue b/src/modules/03_retire/views/addRetire.vue index c5ee0bc..e341707 100644 --- a/src/modules/03_retire/views/addRetire.vue +++ b/src/modules/03_retire/views/addRetire.vue @@ -237,7 +237,7 @@ onMounted(async () => { :disable="tranferOrg == '' && noteReason == ''" /> - + /> -->
@@ -662,7 +662,7 @@ onMounted(async () => { dataStore.officerType == 'OFFICER' " > - +
From aa034176c72c225a065030f78b9ba9efc99388de Mon Sep 17 00:00:00 2001 From: setthawutttty Date: Thu, 3 Apr 2025 18:08:54 +0700 Subject: [PATCH 047/195] =?UTF-8?q?=E0=B9=81=E0=B8=81=E0=B9=89=E0=B8=82?= =?UTF-8?q?=E0=B9=89=E0=B8=AD=E0=B8=84=E0=B8=A7=E0=B8=B2=E0=B8=A1=E0=B9=83?= =?UTF-8?q?=E0=B8=99=E0=B8=A3=E0=B8=B0=E0=B8=9A=E0=B8=9A=E0=B9=83=E0=B8=9A?= =?UTF-8?q?=E0=B8=A5=E0=B8=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/modules/05_leave/store.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/modules/05_leave/store.ts b/src/modules/05_leave/store.ts index 393ac0e..9588480 100644 --- a/src/modules/05_leave/store.ts +++ b/src/modules/05_leave/store.ts @@ -108,8 +108,8 @@ export const useLeaveStore = defineStore("Leave", () => { { id: "DRAFT", name: "แบบร่าง" }, { id: "NEW", name: "ใหม่" }, { id: "PENDING", name: "กำลังดำเนินการ" }, - { id: "APPROVE", name: "อนุมัติ " }, - { id: "REJECT", name: "ไม่อนุมัติ" }, + { id: "APPROVE", name: "อนุญาต " }, + { id: "REJECT", name: "ไม่อนุญาต" }, { id: "DELETE", name: "ยกเลิก" }, ]); const statusOptions = ref(statusOptionsMain.value); From 0f0e1439da912ccaf2c8cb9865fd065d2c9a8cef Mon Sep 17 00:00:00 2001 From: setthawutttty Date: Fri, 4 Apr 2025 11:01:59 +0700 Subject: [PATCH 048/195] =?UTF-8?q?=E0=B9=81=E0=B8=81=E0=B9=89=20=E0=B8=A3?= =?UTF-8?q?=E0=B8=B5=E0=B9=82=E0=B8=AB=E0=B8=A5=E0=B8=94=E0=B9=80=E0=B9=80?= =?UTF-8?q?=E0=B8=A5=E0=B9=89=E0=B8=A7=E0=B8=82=E0=B9=89=E0=B8=AD=E0=B8=A1?= =?UTF-8?q?=E0=B8=B9=E0=B8=A5=E0=B8=AB=E0=B8=B2=E0=B8=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/modules/05_leave/views/EditPage.vue | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/modules/05_leave/views/EditPage.vue b/src/modules/05_leave/views/EditPage.vue index d2648c3..40107ac 100644 --- a/src/modules/05_leave/views/EditPage.vue +++ b/src/modules/05_leave/views/EditPage.vue @@ -300,10 +300,25 @@ async function onClickDelete(id: string, docId: string) { }); } +/** function เรียกประเภทการลา */ +async function fectOptionType() { + await http + .get(config.API.leaveType()) + .then(async (res) => { + dataStore.fetchLeaveType(res.data.result); + }) + .catch((err) => { + messageError($q, err); + }); +} + /**เมื่อเริ่มโหลดหน้า * เรียกใช้งาน fetchData เพื่อดึงข้อมูล */ onMounted(async () => { + if (dataStore.options.length == 0) { + fectOptionType(); + } await fetchDataDetail(personalId.value); }); From e27c26ba0a826901cc5d7556311c6862ba57ce8c Mon Sep 17 00:00:00 2001 From: setthawutttty Date: Tue, 8 Apr 2025 10:31:52 +0700 Subject: [PATCH 049/195] formdetail --- src/modules/05_leave/components/DialogDetail.vue | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/modules/05_leave/components/DialogDetail.vue b/src/modules/05_leave/components/DialogDetail.vue index e133373..95c3136 100644 --- a/src/modules/05_leave/components/DialogDetail.vue +++ b/src/modules/05_leave/components/DialogDetail.vue @@ -269,7 +269,7 @@ async function fetchDataDetail(id: string) { formData.dear = data.dear ?? "-"; checkLeaveType( formData.leaveTypeId, - formData.ordainDayLocationName, + data.hajjDayStatus, formData.studyDayTrainingSubject ); }) @@ -289,7 +289,7 @@ async function fetchDataDetail(id: string) { */ function checkLeaveType( leaveTypeId: string, - ordainDayLocationName: string, + hajjDayStatus: boolean, studyDayTrainingSubject: string ) { if (props.leaveType) { @@ -301,9 +301,9 @@ function checkLeaveType( checkForm.value = "FormChildbirth"; } else if (type === "LV-005") { checkForm.value = "FormHoliday"; - } else if (type === "LV-006" && ordainDayLocationName === "") { + } else if (type === "LV-006" && hajjDayStatus === true) { checkForm.value = "FormHajj"; - } else if (type === "LV-006") { + } else if (type === "LV-006" && hajjDayStatus === false) { checkForm.value = "FormUpasom"; } else if (type === "LV-007") { checkForm.value = "FormCheckSelect"; @@ -432,7 +432,7 @@ watch( - +
- + Date: Tue, 8 Apr 2025 17:21:01 +0700 Subject: [PATCH 050/195] Bug eva --- .../components/EvaluateStepMain.vue | 55 ++++++-- .../components/ExpertPageDetail.vue | 17 ++- .../06_evaluate/components/PopupPosition.vue | 120 ++++++++++++++++++ .../06_evaluate/components/step/step1.vue | 22 +++- .../components/viewstep/viewStep1.vue | 68 +++++----- .../06_evaluate/stores/evaluteDetail.ts | 76 +++-------- 6 files changed, 244 insertions(+), 114 deletions(-) create mode 100644 src/modules/06_evaluate/components/PopupPosition.vue diff --git a/src/modules/06_evaluate/components/EvaluateStepMain.vue b/src/modules/06_evaluate/components/EvaluateStepMain.vue index fcecc82..0cdf723 100644 --- a/src/modules/06_evaluate/components/EvaluateStepMain.vue +++ b/src/modules/06_evaluate/components/EvaluateStepMain.vue @@ -250,18 +250,53 @@ function checkSelectForm() { /** function บันทักตรวจสอบคุณสมบัติ*/ async function saveStep1() { showLoader(); + const salaries = formDetail.value.salaries.map((e: any) => ({ - amount: e.amount, - date: e.date, - mouthSalaryAmount: e.mouthSalaryAmount ? e.mouthSalaryAmount : 0, + // amount: e.amount, + // date: e.date, + // mouthSalaryAmount: e.mouthSalaryAmount ? e.mouthSalaryAmount : 0, + // posNo: e.posNo, + // position: e.position, + // positionSalaryAmount: e.positionSalaryAmount ? e.positionSalaryAmount : 0, + // refCommandDate: e.refCommandDate, + // refCommandNo: e.refCommandNo ? e.refCommandNo : "", + // salaryClass: e.salaryClass ? e.salaryClass : "", + // salaryRef: e.salaryRef ? e.salaryRef : "", + // salaryStatus: e.salaryStatus ? e.salariesStatus : "", + profileId: e.profileId, + commandCode: e.commandCode, + commandNo: e.commandNo, + commandYear: e.commandYear ? Number(e.commandYear) : 0, + commandDateAffect: e.commandDateAffect, + commandDateSign: e.commandDateSign, + posNoAbb: e.posNoAbb, posNo: e.posNo, - position: e.position, - positionSalaryAmount: e.positionSalaryAmount ? e.positionSalaryAmount : 0, - refCommandDate: e.refCommandDate, - refCommandNo: e.refCommandNo ? e.refCommandNo : "", - salaryClass: e.salaryClass ? e.salaryClass : "", - salaryRef: e.salaryRef ? e.salaryRef : "", - salaryStatus: e.salaryStatus ? e.salariesStatus : "", + positionName: e.positionName, + positionType: e.positionType, + positionLevel: e.positionLevel, + positionLine: e.positionLine, + positionPathSide: e.positionPathSide, + positionExecutive: e.positionExecutive, + amount: e.amount ? e.amount.toString() : "0", + amountSpecial: e.amountSpecial ? e.amountSpecial.toString() : "0", + positionSalaryAmount: e.positionSalaryAmount + ? e.positionSalaryAmount.toString() + : "0", + mouthSalaryAmount: e.mouthSalaryAmount + ? e.mouthSalaryAmount.toString() + : "0", + orgRoot: e.orgRoot, + orgChild1: e.orgChild1, + orgChild2: e.orgChild2, + orgChild3: e.orgChild3, + orgChild4: e.orgChild4, + remark: e.remark, + commandId: e.commandId, + isGovernment: e.isGovernment, + positionCee: e.positionCee, + commandName: e.commandName, + posNumCodeSit: e.posNumCodeSit, + posNumCodeSitAbb: e.posNumCodeSitAbb, })); const educations = formDetail.value.educations.map((e: any) => ({ diff --git a/src/modules/06_evaluate/components/ExpertPageDetail.vue b/src/modules/06_evaluate/components/ExpertPageDetail.vue index 1469831..904e092 100644 --- a/src/modules/06_evaluate/components/ExpertPageDetail.vue +++ b/src/modules/06_evaluate/components/ExpertPageDetail.vue @@ -283,9 +283,15 @@ async function onClickDowloadFile( ? { salary: dataPerson.formData.salary ? dataPerson.formData.salary : "" } : null, - tp === "EV1_006" ? { lastTwoYear: (currentYear - 2).toString() } : null, - tp === "EV1_006" ? { lastOneYear: (currentYear - 1).toString() } : null, - tp === "EV1_006" ? { currentYear: currentYear.toString() } : null, + tp === "EV1_006" + ? { + years: { + lastTwoYear: toThaiNumber(currentYear - 2 + 543), + lastOneYear: toThaiNumber(currentYear - 1 + 543), + currentYear: toThaiNumber(currentYear + 543), + }, + } + : null, tp === "EV1_006" ? { commanderFullname: formData.commanderFullname } : null, tp === "EV1_006" ? { commanderPosition: formData.commanderPosition } : null, tp === "EV1_006" ? { commanderOrg: "" } : null, @@ -307,6 +313,7 @@ async function onClickDowloadFile( tp === "EV1_010" ? { subject: formData.subject } : null ); + const body = { template: tp, reportName: templateName, @@ -315,6 +322,10 @@ async function onClickDowloadFile( await genReport(body, fileName); //สร้างไฟล์ต้นแบบ } +function toThaiNumber(input: number | string) { + return input.toString().replace(/\d/g, (d) => "๐๑๒๓๔๕๖๗๘๙"[parseInt(d)]); +} + /** * function fetch ลิงก์อัปโหลดไฟล์ * @param volume เล่ม diff --git a/src/modules/06_evaluate/components/PopupPosition.vue b/src/modules/06_evaluate/components/PopupPosition.vue new file mode 100644 index 0000000..c4a72dd --- /dev/null +++ b/src/modules/06_evaluate/components/PopupPosition.vue @@ -0,0 +1,120 @@ + + + + + diff --git a/src/modules/06_evaluate/components/step/step1.vue b/src/modules/06_evaluate/components/step/step1.vue index 120d061..f1c0cb5 100644 --- a/src/modules/06_evaluate/components/step/step1.vue +++ b/src/modules/06_evaluate/components/step/step1.vue @@ -9,6 +9,7 @@ import type { } from "@/modules/06_evaluate/interface/evalute"; import PopupCheckFeatures from "@/modules/06_evaluate/components/PopupCheckFeatures.vue"; +import PopupPosition from "@/modules/06_evaluate/components/PopupPosition.vue"; /** use*/ const store = useEvaluateStore(); @@ -24,6 +25,7 @@ const education = ref(); const emit = defineEmits(["update:spec"]); const modal = ref(false); +const modalPosition = ref(false); const show = ref(false); const formData = reactive({ @@ -69,6 +71,10 @@ function closeModal() { modal.value = false; } +function onViewDataPosition() { + modalPosition.value = true; +} + /**hook lifecycle*/ onMounted(() => { props.data && fetchCheckSpec(props.data); @@ -120,7 +126,19 @@ onMounted(() => { /> - ประวัติการรับราชการ + ประวัติการรับราชการ + + ข้อมูลประวัติการรับราชการ + + @@ -223,6 +241,8 @@ onMounted(() => { :close-modal="closeModal" :educations="educations" /> + + diff --git a/src/modules/06_evaluate/components/step/step6.vue b/src/modules/06_evaluate/components/step/step6.vue index 7a37b25..450c22b 100644 --- a/src/modules/06_evaluate/components/step/step6.vue +++ b/src/modules/06_evaluate/components/step/step6.vue @@ -34,36 +34,25 @@ const fileEvaluation1 = ref(); const formCommand = reactive({ commanderFullname: "", commanderPosition: "", + commanderPositionOld: "", + commanderOrg: "", + commanderOrgOld: "", commanderAboveFullname: "", commanderAbovePosition: "", + commanderAbovePositionOld: "", + commanderAboveOrgOld: "", + commanderAboveOrg: "", author: "", - subject: "", + subject: [""], assignedPosition: "", }); -/** ref input*/ -const commanderFullnameRef = ref(null); -const commanderPositionRef = ref(null); -const commanderAboveFullnameRef = ref(null); -const commanderAbovePositionRef = ref(null); -const fileEvaluation1Ref = ref(null); -const performanceRef = ref(null); -const performanceOwnerRef = ref(null); -const assignedPositionRef = ref(null); const modalView = ref(false); /** function อัปเดท ผลงาน,ผู้เซ็นเอกสาร*/ function updateInput(value: any) { const ref = { - commanderFullnameRef: commanderFullnameRef.value, - commanderPositionRef: commanderPositionRef.value, - commanderAboveFullnameRef: commanderAboveFullnameRef.value, - commanderAbovePositionRef: commanderAbovePositionRef.value, - fileEvaluation1Ref: fileEvaluation1Ref.value, downloadFile: [downloadUrl.value], - performance: performanceRef.value, - performanceOwner: performanceOwnerRef.value, - assignedPosition: assignedPositionRef.value, }; emit("update:form", value, ref); } @@ -146,17 +135,25 @@ async function fetcheSigner(id: string) { const data = res.data.result; formCommand.commanderFullname = data.commanderFullnameDoc2; formCommand.commanderPosition = data.commanderPositionDoc2; + formCommand.commanderPositionOld = data.commanderPositionOldDoc2; + formCommand.commanderOrg = data.commanderOrgDoc2; + formCommand.commanderOrgOld = data.commanderOrgOldDoc2; formCommand.commanderAboveFullname = data.commanderAboveFullnameDoc2; formCommand.commanderAbovePosition = data.commanderAbovePositionDoc2; + formCommand.commanderAbovePositionOld = + data.commanderAbovePositionOldDoc2; + formCommand.commanderAboveOrgOld = data.commanderAboveOrgOldDoc2; + formCommand.commanderAboveOrg = data.commanderAboveOrgDoc2; formCommand.author = data.authorDoc2; formCommand.subject = data.subjectDoc2; formCommand.assignedPosition = data.assignedPosition; - store.statusUpload6 = data.commanderFullnameDoc2 === null ? false : true; + store.statusUpload6 = data.isUpdated; }) - .catch(() => { - store.statusUpload6 = false; - getCommander(); + .catch((err) => { + messageError($q, err); + // store.statusUpload6 = false; + // getCommander(); }) .finally(() => { hideLoader(); @@ -181,28 +178,17 @@ async function fetchCheckDate() { const downloadUrl = ref(""); /** function เช็คไฟล์อัปโหลด*/ -function checkDoc() { - // showLoader(); - http +async function checkDoc() { + await http .get( config.API.loadFileDocument("เล่ม 2", evaluateId.value, "1-เอกสารเล่ม 2") ) .then((res: any) => { downloadUrl.value = res.data.downloadUrl; }) - .catch(() => {}) .finally(() => { - // hideLoader(); const ref = { - commanderFullnameRef: commanderFullnameRef.value, - commanderPositionRef: commanderPositionRef.value, - commanderAboveFullnameRef: commanderAboveFullnameRef.value, - commanderAbovePositionRef: commanderAbovePositionRef.value, - fileEvaluation1Ref: fileEvaluation1Ref.value, downloadFile: [downloadUrl.value], - performance: performanceRef.value, - performanceOwner: performanceOwnerRef.value, - assignedPosition: assignedPositionRef.value, }; emit("update:form", formCommand, ref); @@ -221,8 +207,15 @@ function getCommander() { }) .catch((e) => { messageError($q, e); - }) - .finally(() => {}); + }); +} + +function onAddSubject() { + formCommand.subject.push(""); +} + +function onDeleteSubject(index: number) { + formCommand.subject.splice(index, 1); } watch( @@ -273,27 +266,12 @@ onMounted(async () => {
ผลงาน
-
-
-
-
+
+
+
+
- { :rules="[(val:string) => !!val || `${'กรุณากรอกเจ้าของผลงาน'}`]" lazy-rules /> +
+
{ label="ตำแหน่งที่ได้รับ" hide-bottom-space :rules="[ - (val:string) => !!val || `${'กรุณากรอกตำแหน่งที่ได้รับ'}`, - ]" + (val:string) => !!val || `${'กรุณากรอกตำแหน่งที่ได้รับ'}`, + ]" lazy-rules />
+ +
+ + เพิ่มชื่อผลงาน + +
+ +
+
+ +
+
+ + ลบ + +
+
@@ -340,8 +369,7 @@ onMounted(async () => {
{ lazy-rules hide-bottom-space /> - +
+
+ + + + + + +
+
@@ -376,8 +453,7 @@ onMounted(async () => {
{ @update:model-value="updateInput(formCommand)" hide-bottom-space /> - + +
+
+ + + + +
+
@@ -434,7 +558,6 @@ onMounted(async () => {
{ - downloadFile(res.data.downloadUrl); + .then(async (res) => { + await downloadFile(res.data.downloadUrl); }) .catch((err) => { messageError($q, err); + }) + .finally(() => { + hideLoader(); })); } diff --git a/src/modules/06_evaluate/components/step/step8.vue b/src/modules/06_evaluate/components/step/step8.vue index cd8dcf2..93794c9 100644 --- a/src/modules/06_evaluate/components/step/step8.vue +++ b/src/modules/06_evaluate/components/step/step8.vue @@ -69,20 +69,20 @@ async function fetchPathUpload( showLoader(); await http .post(config.API.loadPathDocument(volume, id), body) - .then((res) => { + .then(async (res) => { const foundKey: string | undefined = Object.keys(res.data).find( (key) => res.data[key]?.fileName !== undefined && res.data[key]?.fileName !== "" ); - foundKey && uploadfile(res.data[foundKey]?.uploadUrl, file); + foundKey && (await uploadfile(res.data[foundKey]?.uploadUrl, file)); }) .catch((err) => { messageError($q, err); + }) + .finally(() => { hideLoader(); }); - // .finally(() => { - // }); } } @@ -103,16 +103,12 @@ async function uploadfile(uploadUrl: string, file: any) { }) .catch((err) => { messageError($q, err); - }) - .finally(() => { - hideLoader(); }); } const downloadUrl = ref(""); /** function เช็คไฟล์อัปโหลด*/ function checkDoc() { - showLoader(); http .get( config.API.loadFileDocument( @@ -123,12 +119,6 @@ function checkDoc() { ) .then((res: any) => { downloadUrl.value = res.data.downloadUrl; - }) - .catch((e) => { - // messageError($q, e); - }) - .finally(() => { - hideLoader(); }); } @@ -141,7 +131,6 @@ const assignedPosition = ref(""); * @param id ประเมิน */ async function fetcheSigner(id: string) { - showLoader(); await http .get(config.API.evaluationSignerDoc2(id)) .then((res) => { @@ -151,16 +140,21 @@ async function fetcheSigner(id: string) { assignedPosition.value = data.assignedPosition; evaluationResult.value = data.evaluationResult; }) - .catch(() => {}) - .finally(() => { - hideLoader(); + .catch((err) => { + messageError($q, err); }); } /** lifecycleHook*/ onMounted(async () => { - await checkDoc(); - await fetcheSigner(evaluateId.value); + try { + showLoader(); + await Promise.all([checkDoc(), fetcheSigner(evaluateId.value)]); + } catch (error) { + console.log(error); + } finally { + hideLoader(); + } }); @@ -178,7 +172,7 @@ onMounted(async () => { />
-
+
เอกสารเล่ม 2 (ฉบับแก้ไข)
@@ -224,7 +218,7 @@ onMounted(async () => {
-
+
เอกสารเล่ม 2 (ฉบับแก้ไข)
({ /** function เรียกข้อมูลตรวจสอบคุณสมบัติ*/ async function fetchDetail() { - showLoader(); await http .get(config.API.positionBykeycloak()) - .then((res) => { - const data = res.data.result; + .then(async (res) => { + const data = await res.data.result; formDetail.root = data.root; formDetail.rootId = data.rootId; formDetail.userId = data.id; @@ -89,58 +88,62 @@ async function fetchDetail() { formDetail.birthDate = data.birthDate; // formDetail.govAge = data.govAge; // ยังไม่มี formDetail.salary = data.salary; - - http.get(config.API.dataUserEducations).then((res) => { - formDetail.educations = res.data.result; - }); - - http.get(config.API.dataUserCertificate("certificate")).then((res) => { - formDetail.certificates = res.data.result.map( - (e: CertificatesForm) => ({ - certificateNo: e.certificateNo, - certificateType: e.certificateType, - expireDate: e.expireDate, - issueDate: e.issueDate, - issuer: e.issuer, - }) - ); - }); - - http.get(config.API.dataUserSalary).then((res) => { - formDetail.salaries = res.data.result; - }); - - http.get(config.API.dataUserCertificate("training")).then((res) => { - formDetail.trainings = res.data.result.map((e: any) => ({ - dateOrder: e.dateOrder, - department: e.department, - duration: e.duration, - endDate: e.endDate, - name: e.name, - numberOrder: e.numberOrder, - place: e.place, - startDate: e.startDate, - topic: e.topic, - yearly: e.yearly, - })); - }); - - http.get(config.API.dataUserAssessments).then((res) => { - formDetail.assessments = res.data.result; - }); + await fetchDataAllDetail(); emit("update:formDeital", formDetail); }) .catch((err) => { messageError($q, err); - }) - .finally(() => { - setTimeout(() => { - hideLoader(); - }, 2500); }); } +async function fetchDataAllDetail() { + // ดึงข้อมูลประวัติการศึกษา + http.get(config.API.dataUserEducations).then((res) => { + formDetail.educations = res.data.result; + }); + + // ดึงข้อมูลใบอนุญาตประกอบวิชาชีพ + http.get(config.API.dataUserCertificate("certificate")).then((res) => { + formDetail.certificates = res.data.result.map((e: CertificatesForm) => ({ + certificateNo: e.certificateNo, + certificateType: e.certificateType, + expireDate: e.expireDate, + issueDate: e.issueDate, + issuer: e.issuer, + })); + }); + + // ดึงข้อมูลประวัติการรับราชการ + http.get(config.API.dataUserSalary).then((res) => { + formDetail.salaries = res.data.result; + }); + + // ดึงข้อมูลประวัติการฝึกอบรมดูงาน + http.get(config.API.dataUserCertificate("training")).then((res) => { + formDetail.trainings = res.data.result.map((e: any) => ({ + dateOrder: e.dateOrder, + department: e.department, + duration: e.duration, + endDate: e.endDate, + name: e.name, + numberOrder: e.numberOrder, + place: e.place, + startDate: e.startDate, + topic: e.topic, + yearly: e.yearly, + })); + }); + + http.get(config.API.dataUserPerformance).then((res) => { + formDetail.assessments = res.data.result; + }); + + http.get(config.API.dataUserPortfolio).then((res) => { + formDetail.experience = res.data.result; + }); +} + /** * function fetchData ตรวจสอบคุณสมบัติ * @param id ประเมิน @@ -178,7 +181,8 @@ async function fetchCheckSpec(data: any) { topic: e.topic, yearly: e.yearly, })); - formDetail.assessments = data.assessments; + formDetail.assessments = data.performances; + formDetail.experience = data.portfolios; } /** @@ -195,7 +199,6 @@ function formattedNumber(x: number) { /** get data */ function getData() { - showLoader(); http .get(config.API.dataUserGovernment) .then(async (res) => { @@ -207,28 +210,30 @@ function getData() { }) .catch((e) => { messageError($q, e); - }) - .finally(() => { - setTimeout(() => { - hideLoader(); - }, 2500); }); } onMounted(async () => { - const promises = []; + try { + showLoader(); + const promises = []; - if (route.name === "evaluate-add") { - promises.push(fetchDetail()); + if (route.name === "evaluate-add") { + promises.push(fetchDetail()); + } + + if (props.data) { + promises.push(fetchCheckSpec(props.data)); + } + + promises.push(getData()); + + await Promise.all(promises); + } catch (error) { + console.log(error); + } finally { + hideLoader(); } - - if (props.data) { - promises.push(fetchCheckSpec(props.data)); - } - - promises.push(getData()); - - await Promise.all(promises); }); @@ -537,7 +542,6 @@ onMounted(async () => { -
@@ -561,7 +565,7 @@ onMounted(async () => { @@ -570,13 +574,12 @@ onMounted(async () => { ผลงานที่เคยเสนอขอประเมิน (ถ้ามี)
-
-
- +
diff --git a/src/modules/06_evaluate/interface/evalute.ts b/src/modules/06_evaluate/interface/evalute.ts index 593a27b..1db407c 100644 --- a/src/modules/06_evaluate/interface/evalute.ts +++ b/src/modules/06_evaluate/interface/evalute.ts @@ -38,10 +38,16 @@ interface FormSpec { interface FormCommand { commanderFullname: string; commanderPosition: string; + commanderPositionOld: string; + commanderOrgOld: string; + commanderOrg: string; commanderAboveFullname: string; commanderAbovePosition: string; + commanderAbovePositionOld: string; + commanderAboveOrgOld: string; + commanderAboveOrg: string; author: string; - subject: string; + subject: string[]; assignedPosition: string; } @@ -134,5 +140,5 @@ export type { ListMenu, FormRef, FormData, - FormCommandSe + FormCommandSe, }; diff --git a/src/modules/06_evaluate/stores/evaluteDetail.ts b/src/modules/06_evaluate/stores/evaluteDetail.ts index 02aa6df..0ae6bad 100644 --- a/src/modules/06_evaluate/stores/evaluteDetail.ts +++ b/src/modules/06_evaluate/stores/evaluteDetail.ts @@ -360,94 +360,40 @@ export const useEvaluateDetailStore = defineStore("evaluateDetailStore", () => { //ผลงานที่เคยเสนอขอประเมิน (ถ้ามี) const columnAssessments = ref([ { - name: "date", + name: "year", align: "left", - label: "วันที่ได้รับ", + label: "ปี พ.ศ.", sortable: true, - field: "date", + field: "year", headerStyle: "font-size: 14px", style: "font-size: 14px", - format: (v) => date2Thai(v), }, { - name: "point1Total", + name: "type", align: "left", - label: "ส่วนที่1 (น้ำหนัก)", + label: "ระดับตอนที่ยื่นขอ", sortable: true, - field: "point1Total", + field: "type", headerStyle: "font-size: 14px", style: "font-size: 14px", - sort: (a: string, b: string) => - a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, { - name: "point1", + name: "subject", align: "left", - label: "ผลประเมินส่วนที่1 (คะแนน)", + label: "เรื่อง/ชื่อเรื่อง", sortable: true, - field: "point1", + field: "subject", headerStyle: "font-size: 14px", style: "font-size: 14px", - sort: (a: string, b: string) => - a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, { - name: "point2Total", + name: "evaluationResult", align: "left", - label: "ส่วนที่2 (น้ำหนัก)", + label: "ผลการประเมิน (ผ่าน/ไม่ผ่าน)", sortable: true, - field: "point2Total", + field: "evaluationResult", headerStyle: "font-size: 14px", style: "font-size: 14px", - sort: (a: string, b: string) => - a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), - }, - { - name: "point2", - align: "left", - label: "ผลประเมินส่วนที่2 (คะแนน)", - sortable: true, - field: "point2", - headerStyle: "font-size: 14px", - style: "font-size: 14px", - sort: (a: string, b: string) => - a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), - }, - { - name: "pointSumTotal", - align: "left", - label: "ผลรวม (น้ำหนัก)", - sortable: true, - field: "pointSumTotal", - headerStyle: "font-size: 14px", - style: "font-size: 14px", - sort: (a: string, b: string) => - a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), - }, - { - name: "pointSum", - align: "left", - label: "ผลประเมินรวม (คะแนน)", - sortable: true, - field: "pointSum", - headerStyle: "font-size: 14px", - style: "font-size: 14px", - sort: (a: string, b: string) => - a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), - }, - { - name: "name", - align: "left", - label: "ผลประเมิน", - sortable: true, - field: "name", - format(val, row) { - return `${textPoint(row.pointSum)} ${textRangePoint(row.pointSum)}`; - }, - headerStyle: "font-size: 14px", - style: "font-size: 14px", - sort: (a: string, b: string) => - a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, ]); From 8103ea7d9dcf7c537ea4a733475c2171f567a64d Mon Sep 17 00:00:00 2001 From: "DESKTOP-1R2VSQH\\Lenovo ThinkPad E490" Date: Wed, 23 Apr 2025 15:30:29 +0700 Subject: [PATCH 066/195] fix --- src/modules/06_evaluate/components/EvaluateStepMain.vue | 4 ++-- src/modules/06_evaluate/components/viewstep/viewStep1.vue | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/modules/06_evaluate/components/EvaluateStepMain.vue b/src/modules/06_evaluate/components/EvaluateStepMain.vue index d207626..980e619 100644 --- a/src/modules/06_evaluate/components/EvaluateStepMain.vue +++ b/src/modules/06_evaluate/components/EvaluateStepMain.vue @@ -87,8 +87,6 @@ async function onCilckNextStep() { /** function validateForm Step 2,4*/ async function onSubmitFormData() { store.checkFileupload = !store.checkFileupload; - console.log(store.statusUpload6); - if (store.step === 2) { if (!store.statusUpload) { saveStep2(); @@ -364,6 +362,8 @@ async function saveStep1() { isHaveSpecificQft: formSpec.isHaveSpecificQft, isHaveProLicense: formSpec.isHaveProLicense, isHaveMinPeriodOrHoldPos: formSpec.isHaveMinPeriodOrHoldPos, + posExecutive: formDetail.value.posExecutive ?? "", + positionArea: formDetail.value.positionArea ?? "", reason: "", educations: [...educations], certificates: [...certificates], diff --git a/src/modules/06_evaluate/components/viewstep/viewStep1.vue b/src/modules/06_evaluate/components/viewstep/viewStep1.vue index 28eeb77..773715a 100644 --- a/src/modules/06_evaluate/components/viewstep/viewStep1.vue +++ b/src/modules/06_evaluate/components/viewstep/viewStep1.vue @@ -58,6 +58,8 @@ const formDetail = reactive({ month: 0, day: 0, }, + posExecutive: "", + positionArea: "", educations: [] as EducationForm[], certificates: [], salaries: [], @@ -88,6 +90,8 @@ async function fetchDetail() { formDetail.birthDate = data.birthDate; // formDetail.govAge = data.govAge; // ยังไม่มี formDetail.salary = data.salary; + formDetail.posExecutive = data.posExecutive; + formDetail.positionArea = data.positionArea; await fetchDataAllDetail(); emit("update:formDeital", formDetail); From 965304339dc4ab4c5f407ed8fabb8747a51cfaa7 Mon Sep 17 00:00:00 2001 From: "DESKTOP-1R2VSQH\\Lenovo ThinkPad E490" Date: Thu, 24 Apr 2025 09:12:33 +0700 Subject: [PATCH 067/195] =?UTF-8?q?fix=20=E0=B9=80=E0=B8=A5=E0=B8=82?= =?UTF-8?q?=E0=B8=97=E0=B8=B5=E0=B9=88=E0=B8=95=E0=B8=B3=E0=B9=81=E0=B8=AB?= =?UTF-8?q?=E0=B8=99=E0=B9=88=E0=B8=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/stores/data.ts | 1 - src/stores/mixin.ts | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/stores/data.ts b/src/stores/data.ts index 2000d80..dad7009 100644 --- a/src/stores/data.ts +++ b/src/stores/data.ts @@ -100,7 +100,6 @@ export const useDataStore = defineStore("dataMain", () => { async function getData(dataPerson: any) { const data = await dataPerson; isProbation.value = data.isProbation; - formData.profileId = data.profileId; formData.rank = data.rank; formData.prefix = data.prefix; diff --git a/src/stores/mixin.ts b/src/stores/mixin.ts index e232b31..fb73de0 100644 --- a/src/stores/mixin.ts +++ b/src/stores/mixin.ts @@ -1096,7 +1096,7 @@ export const useCounterMixin = defineStore("mixin", () => { ? obj.child1ShortName : obj.rootShortName != null ? obj.rootShortName - : "") + (obj.posMasterNo != null ? obj.posMasterNo : ""); + : "") + (obj.posMasterNo != null ? ` ${obj.posMasterNo}` : ""); return shortName == "" ? "-" : shortName; } else { return ""; From 3b6172ee037cda5fce93592858da6871fa1ecaf1 Mon Sep 17 00:00:00 2001 From: setthawutttty Date: Thu, 24 Apr 2025 11:04:38 +0700 Subject: [PATCH 068/195] =?UTF-8?q?=E0=B8=9B=E0=B8=A3=E0=B8=B1=E0=B8=9A=20?= =?UTF-8?q?ui=20=E0=B8=97=E0=B8=B8=E0=B8=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../09_scholarship/interface/request/index.ts | 1 + src/modules/09_scholarship/views/detail.vue | 2094 ++++++++++------- src/modules/09_scholarship/views/main.vue | 14 +- 3 files changed, 1226 insertions(+), 883 deletions(-) diff --git a/src/modules/09_scholarship/interface/request/index.ts b/src/modules/09_scholarship/interface/request/index.ts index 1ad74ac..a25579f 100644 --- a/src/modules/09_scholarship/interface/request/index.ts +++ b/src/modules/09_scholarship/interface/request/index.ts @@ -61,6 +61,7 @@ interface FormsSholarship { totalPeriod: string; //รวมระยะเวลาในการศึกษา/รวมระยะเวลาในการฝึกอบรม planType: string; // INPLAN ในแผนฯ, OUTPLAN นอกแผนฯ isNoUseBudget: boolean; // + budgetSourceOther: string; // } interface DataSholarship { diff --git a/src/modules/09_scholarship/views/detail.vue b/src/modules/09_scholarship/views/detail.vue index 5f13b1c..a3fa770 100644 --- a/src/modules/09_scholarship/views/detail.vue +++ b/src/modules/09_scholarship/views/detail.vue @@ -48,6 +48,21 @@ const budgetSourceOp = ref([ { id: "OTHER", name: "เงินอื่นๆ" }, ]); +const useOfficialTimeOp = ref([ + { + id: "NOUSETIME", + name: "ไม่ใช้เวลาราชการ", + }, + { + id: "USETIME", + name: "ใช้เวลาราชการ", + }, + { + id: "SOMETIME", + name: "ใช้เวลาราชการบางส่วน", + }, +]); + const formBody = reactive({ profileId: "", rank: "", //ยศ @@ -110,6 +125,7 @@ const formBody = reactive({ studyAbroadEndDate: null, //วันสิ้นสุดการศึกษาดูงานต่างประเทศ totalPeriod: "", //รวมระยะเวลาในการศึกษา/รวมระยะเวลาในการฝึกอบรม planType: "", + budgetSourceOther: "", isNoUseBudget: false, }); @@ -156,8 +172,12 @@ const scholarshipTypeOp = ref([ name: " ฝึกอบรมในประเทศที่ส่งไปพัฒนากับหน่วยงานภายนอก (หลักสูตรประเภทนักบริหาร)", }, { - id: "RESEARCH", - name: "ศึกษา ฝึกอบรม ประชุม ดูงาน และปฏิบัติการวิจัย ณ ต่างประเทศ", + id: "STUDY", + name: "ทุนการศึกษา ณ ต่างประเทศ", + }, + { + id: "TRAINING", + name: "ทุนฝึกอบรม ณ ต่างประเทศ", }, ]); @@ -525,86 +545,9 @@ onMounted(async () => {
-
- - - - - - - - แก้ไขข้อมูลรายงานตัวกลับเข้ารับราชการ - - - - - - - - ดาวน์โหลดฟอร์มต้นแบบ .docx - - - - - - - - ดาวน์โหลดฟอร์มต้นแบบ .pdf - - - - - - -
- -
- - - - -
-
+ +
{
-
+
-
+
-
-
- +
+
+ + + + + +
+
+ +
+
- - - - -
-
- -
-
- -
-
- + +
+
+ +
-
-
- -
-
- +
+
+ +
+
+ + + + + +
+
+ + + + + +
+
- - - - + + +
+
+ +
-
- - - - - -
-
- -
-
- -
-
-
+
-
+
- -
-
- -
-
- - - - - -
-
- - - -