From 61227da43ead280a9ea8efd7e26ab14f7d73a013 Mon Sep 17 00:00:00 2001 From: setthawutttty Date: Fri, 11 Apr 2025 17:07:10 +0700 Subject: [PATCH] =?UTF-8?q?=E0=B9=81=E0=B8=81=E0=B9=89=20=E0=B9=80?= =?UTF-8?q?=E0=B8=9B=E0=B9=89=E0=B8=B2=E0=B8=AB=E0=B8=A1=E0=B8=B2=E0=B8=A2?= =?UTF-8?q?=E0=B8=95=E0=B8=B2=E0=B8=A1=E0=B8=88=E0=B8=A3=E0=B8=B4=E0=B8=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../15_development/components/Target.vue | 141 +++++++++++++++--- 1 file changed, 119 insertions(+), 22 deletions(-) diff --git a/src/modules/15_development/components/Target.vue b/src/modules/15_development/components/Target.vue index bc8f366c9..1971c1d44 100644 --- a/src/modules/15_development/components/Target.vue +++ b/src/modules/15_development/components/Target.vue @@ -52,6 +52,7 @@ const plannedGoalsData = ref([]); const plannedPeoples = ref([]); const actualGoals = ref([]); const actualPeoples = ref([]); +const formGroup = ref(); const groupTargetData = reactive({ targetData: [{}], @@ -96,6 +97,30 @@ const levelComputed = computed(() => { }); }); +const levelOptions = computed(() => { + if ( + formGroupTarget.groupTargetSub !== "EMPLOYEE" && + formGroupTarget.groupTargetSub !== "EMPLOYEETEMP" + ) { + const found = posTypeMain.value.find( + (v) => formGroupTarget.posType === v.posTypeName + ); + return found?.posLevels || []; + } else { + const found = posTypeMainEMP.value.find( + (v) => formGroupTarget.posType === v.posTypeName + ); + return ( + found?.posLevels.map((item) => ({ + id: item.id, + posLevelName: found.posTypeShortName + ? `${found.posTypeShortName} ${item.posLevelName}` + : item.posLevelName, + })) || [] + ); + } +}); + const formGroupTarget = reactive({ groupTarget: "", groupTargetSub: "", @@ -318,7 +343,6 @@ async function fetchData(id: string) { plannedGoals.value = data.plannedGoals; plannedGoalsData.value = data.plannedGoals; plannedPeoples.value = data.plannedPeoples; - console.log(plannedGoals.value); }) .catch((err) => { messageError($q, err); @@ -402,10 +426,10 @@ function onSubmitGroup() { groupTarget: formGroupTarget.groupTarget, groupTargetSub: formGroupTarget.groupTargetSub, position: formGroupTarget.position, - posTypeActualId: formGroupTarget.posType + posTypeActual: formGroupTarget.posType ? formGroupTarget.posType : null, - posLevelActualId: formGroupTarget.posLevel + posLevelActual: formGroupTarget.posLevel ? formGroupTarget.posLevel : null, type: formGroupTarget.type, @@ -527,12 +551,19 @@ function updatePosTypeName(id: string) { * @param val ข้อมูล กลุ่มเป้าหมาย */ function updateGroupTarget(val: string) { + formGroup.value.resetValidation(); if (val === "OUTSIDERS") { formGroupTarget.groupTargetSub = "NONE"; formGroupTarget.position = ""; formGroupTarget.posType = null; formGroupTarget.posLevel = null; - } else formGroupTarget.groupTargetSub = ""; + } else { + formGroupTarget.groupTargetSub = ""; + formGroupTarget.posType = ""; + formGroupTarget.posLevel = ""; + formGroupTarget.position = ""; + formGroupTarget.type = ""; + } } /** หาชื่อ ตาม id */ @@ -849,8 +880,8 @@ onMounted(() => { formGroupTarget.groupTargetSub = props.row.groupTargetSub; formGroupTarget.amount = props.row.amount; formGroupTarget.position = props.row.position; - formGroupTarget.posType = props.row.posTypeId; - formGroupTarget.posLevel = props.row.posLevelId; + formGroupTarget.posType = props.row.posType; + formGroupTarget.posLevel = props.row.posLevel; modalGroupTarget = true; } @@ -859,6 +890,7 @@ onMounted(() => { แก้ไขข้อมูล +
@@ -973,7 +1005,12 @@ onMounted(() => { - + { (val:string) => !!val || `${'กรุณาเลือกกลุ่มเป้าหมายย่อย'}`, ]" + @update:model-value=" + formGroupTarget.posType = ''; + formGroupTarget.posLevel = ''; + formGroupTarget.position = ''; + formGroupTarget.type = ''; + formGroup.resetValidation(); + " />
@@ -1046,13 +1090,30 @@ onMounted(() => { lazy-rules class="inputgreen" v-model="formGroupTarget.posType" - :options="posTypeOp" + :options=" + formGroupTarget.groupTargetSub !== 'EMPLOYEE' && + formGroupTarget.groupTargetSub !== 'EMPLOYEETEMP' + ? posTypeOp + : posTypeOpEMP + " option-label="name" - option-value="id" + option-value="name" emit-value map-options + :rules="[ + (val:string) => + !!val || `${formGroupTarget.groupTargetSub !== 'EMPLOYEE' && + formGroupTarget.groupTargetSub !== 'EMPLOYEETEMP' + ? 'กรุณาเลือกตำแหน่งประเภท' + : 'กรุณาเลือกกลุ่มงาน ' }`, + ]" input-class="text-red" - label="ประเภทตำแหน่ง" + :label=" + formGroupTarget.groupTargetSub !== 'EMPLOYEE' && + formGroupTarget.groupTargetSub !== 'EMPLOYEETEMP' + ? 'ตำแหน่งประเภท' + : 'กลุ่มงาน' + " clearable @update:model-value="updatePosTypeName" /> @@ -1068,16 +1129,25 @@ onMounted(() => { lazy-rules class="inputgreen" v-model="formGroupTarget.posLevel" - :options=" - posTypeMain.find((v) => formGroupTarget.posType === v.id) - ?.posLevels || [] - " + :options="levelOptions" option-label="posLevelName" - option-value="id" + option-value="posLevelName" emit-value map-options input-class="text-red" - label="ระดับตำแหน่ง" + :label=" + formGroupTarget.groupTargetSub !== 'EMPLOYEE' && + formGroupTarget.groupTargetSub !== 'EMPLOYEETEMP' + ? 'ระดับตำแหน่ง' + : 'ระดับชั้นงาน' + " + :rules="[ + (val:string) => + !!val || `${formGroupTarget.groupTargetSub !== 'EMPLOYEE' && + formGroupTarget.groupTargetSub !== 'EMPLOYEETEMP' + ? 'กรุณาเลือกระดับตำแหน่ง' + : 'กรุณาเลือกระดับชั้นงาน ' }`, + ]" clearable />
@@ -1153,7 +1223,12 @@ onMounted(() => { - + { emit-value lazy-rules class="inputgreen" - @update:model-value=" - updateGroupTarget, - (formGroupTarget.positions = [ + @update:model-value="(value:any)=>{ + + updateGroupTarget(value), + (formGroupTarget.positions = [ { posType: '', posLevel: '', @@ -1187,6 +1263,8 @@ onMounted(() => { posExecutive: '', }, ]) + } + " :rules="[ (val:string) => @@ -1225,7 +1303,7 @@ onMounted(() => { !!val || `${'กรุณาเลือกกลุ่มเป้าหมายย่อย'}`, ]" @update:model-value=" - formGroupTarget.positions = [ + (formGroupTarget.positions = [ { posType: '', posLevel: '', @@ -1234,7 +1312,8 @@ onMounted(() => { posLevelId: null, posExecutive: '', }, - ] + ]), + formGroup.resetValidation() " /> @@ -1310,6 +1389,8 @@ onMounted(() => { option-value="name" emit-value map-options + hide-bottom-space + lazy-rules input-class="text-red" :label=" formGroupTarget.groupTargetSub !== 'EMPLOYEE' && @@ -1317,6 +1398,13 @@ onMounted(() => { ? 'ตำแหน่งประเภท' : 'กลุ่มงาน' " + :rules="[ + (val:string) => + !!val || `${formGroupTarget.groupTargetSub !== 'EMPLOYEE' && + formGroupTarget.groupTargetSub !== 'EMPLOYEETEMP' + ? 'กรุณาเลือกตำแหน่งประเภท' + : 'กรุณาเลือกกลุ่มงาน ' }`, + ]" clearable @update:model-value="updatePosTypeName" /> @@ -1342,6 +1430,15 @@ onMounted(() => { ? 'ระดับตำแหน่ง' : 'ระดับชั้นงาน' " + hide-bottom-space + lazy-rules + :rules="[ + (val:string) => + !!val || `${formGroupTarget.groupTargetSub !== 'EMPLOYEE' && + formGroupTarget.groupTargetSub !== 'EMPLOYEETEMP' + ? 'กรุณาเลือกระดับตำแหน่ง' + : 'กรุณาเลือกระดับชั้นงาน ' }`, + ]" clearable />