From cbc7e919674f996d4e5153254e87ac789d02147f Mon Sep 17 00:00:00 2001 From: "DESKTOP-1R2VSQH\\Lenovo ThinkPad E490" Date: Fri, 31 Oct 2025 11:29:51 +0700 Subject: [PATCH] fix:filter evaluator commander commanderHigh --- .../components/Tab/Dialog/DialogEvalute.vue | 63 +++++++++++-------- 1 file changed, 38 insertions(+), 25 deletions(-) diff --git a/src/modules/14_KPI/components/Tab/Dialog/DialogEvalute.vue b/src/modules/14_KPI/components/Tab/Dialog/DialogEvalute.vue index 375db4b3c..da3371f77 100644 --- a/src/modules/14_KPI/components/Tab/Dialog/DialogEvalute.vue +++ b/src/modules/14_KPI/components/Tab/Dialog/DialogEvalute.vue @@ -67,6 +67,12 @@ const formRound = reactive({ posExecutiveName: "", }); +const FILTER_TYPES = { + EVALUATOR: "evaluatorIdOp", + COMMANDER: "commanderIdOp", + COMMANDER_HIGH: "commanderHighOp", +} as const; + const evaluatorIdOp = ref([]); const commanderIdOp = ref([]); const commanderHighOp = ref([]); @@ -199,31 +205,38 @@ function fetchRoundOption() { * @param refData เเยกประเภท */ function filterOption(val: string, update: Function, refData: string) { - switch (refData) { - case "evaluatorIdOp": - update(() => { - evaluatorIdOp.value = evaluatorIdMainOp.value.filter( - (v: DataOption) => v.name.indexOf(val) > -1 - ); - }); - break; - case "commanderIdOp": - update(() => { - commanderIdOp.value = commanderIdMainOp.value.filter( - (v: DataOption) => v.name.indexOf(val) > -1 - ); - }); - break; - case "commanderHighOp": - update(() => { - commanderHighOp.value = commanderHighMainOp.value.filter( - (v: DataOption) => v.name.indexOf(val) > -1 - ); - }); - break; - default: - break; - } + const filterConfig = { + [FILTER_TYPES.EVALUATOR]: { + sourceData: evaluatorIdMainOp.value, + targetRef: evaluatorIdOp, + excludeIds: [formRound.commanderId, formRound.commanderHighId], + }, + [FILTER_TYPES.COMMANDER]: { + sourceData: commanderIdMainOp.value, + targetRef: commanderIdOp, + excludeIds: [formRound.evaluatorId, formRound.commanderHighId], + }, + [FILTER_TYPES.COMMANDER_HIGH]: { + sourceData: commanderHighMainOp.value, + targetRef: commanderHighOp, + excludeIds: [formRound.evaluatorId, formRound.commanderId], + }, + }; + + const config = filterConfig[refData as keyof typeof filterConfig]; + + if (!config) return; + + // กรองข้อมูลโดยเอา excludeIds ออก + const filteredData = config.sourceData.filter( + (item: DataOption) => !config.excludeIds.includes(item.id) + ); + + update(() => { + config.targetRef.value = filteredData.filter((item: DataOption) => + item.name.toLowerCase().includes(val.toLowerCase()) + ); + }); } /** เช็ครอบการประเมินที่ปิดรอบ */