/**
 * 判断两个值是否相等（支持基本类型和对象类型）
 * @param val1 - 第一个值
 * @param val2 - 第二个值
 * @returns 是否相等
 */
function isValueEqual(val1, val2) {
    // 处理 null/undefined
    if (val1 === null || val1 === undefined || val2 === null || val2 === undefined) {
        return val1 === val2;
    }
    // 提取用于比较的原始值
    const extractValue = (val) => {
        if (typeof val === 'object' && val !== null) {
            // 优先使用 value 字段
            if ('value' in val) {
                return val.value;
            }
            // 其次使用 workNo 字段
            if ('workNo' in val) {
                return val.workNo;
            }
        }
        return val;
    };
    const v1 = extractValue(val1);
    const v2 = extractValue(val2);
    return v1 === v2;
}
/**
 * 过滤 options，只保留选中项
 * @param options - 选项列表
 * @param selectedValues - 选中的值列表
 * @returns 过滤后的选项列表
 */
export function filterSelectedOptions(options, selectedValues) {
    return options.filter((opt) => selectedValues.some((val) => isValueEqual(opt.value, val)));
}
/**
 * 处理 options：统一只返回选中项的 options
 * @param allOptions - 所有选项列表
 * @param selectedValues - 选中的值列表
 * @returns 只包含选中项的 options 数组
 */
export function processOptionsForApi(allOptions, selectedValues) {
    // 统一逻辑：只返回选中项
    if (selectedValues.length === 0) {
        return undefined;
    }
    if (allOptions) {
        // 如果有 allOptions，从中过滤出选中项
        return filterSelectedOptions(allOptions, selectedValues);
    }
    return undefined;
}
