fix:filter evaluator commander commanderHigh

This commit is contained in:
DESKTOP-1R2VSQH\Lenovo ThinkPad E490 2025-10-31 11:29:51 +07:00
parent 68e8e6575d
commit cbc7e91967

View file

@ -67,6 +67,12 @@ const formRound = reactive({
posExecutiveName: "",
});
const FILTER_TYPES = {
EVALUATOR: "evaluatorIdOp",
COMMANDER: "commanderIdOp",
COMMANDER_HIGH: "commanderHighOp",
} as const;
const evaluatorIdOp = ref<DataOption[]>([]);
const commanderIdOp = ref<DataOption[]>([]);
const commanderHighOp = ref<DataOption[]>([]);
@ -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())
);
});
}
/** เช็ครอบการประเมินที่ปิดรอบ */