"use strict";
/**
 * 人员选择器筛选工具函数
 */
Object.defineProperty(exports, "__esModule", { value: true });
exports.extractEmployeeWorkNos = extractEmployeeWorkNos;
exports.handleEmployeeSelectFilter = handleEmployeeSelectFilter;
/**
 * 提取人员选择器中的 workNo 值
 * 支持多种格式：对象数组、字符串数组、单个对象、单个字符串
 */
function extractEmployeeWorkNos(value) {
    if (!value) {
        return [];
    }
    // 如果是数组
    if (Array.isArray(value)) {
        return value.map((item) => {
            if (typeof item === 'object' && item !== null) {
                // 对象数组，提取 workNo
                return item.workNo || item.value || '';
            }
            // 字符串数组
            return String(item);
        });
    }
    // 如果是对象
    if (typeof value === 'object' && value !== null) {
        return [value.workNo || value.value || ''];
    }
    // 如果是字符串（可能是逗号分隔的 workNo）
    if (typeof value === 'string') {
        return value.split(',').filter(Boolean);
    }
    return [];
}
/**
 * 处理人员选择器的筛选逻辑
 */
function handleEmployeeSelectFilter(rowValue, operator, filterValue) {
    // 提取行值和筛选值中的 workNo
    const rowWorkNos = extractEmployeeWorkNos(rowValue);
    const filterWorkNos = extractEmployeeWorkNos(filterValue);
    if (filterWorkNos.length === 0) {
        return true;
    }
    // 根据操作符进行不同的比较
    switch (operator) {
        case 'eq': // 等于：行值中包含任意一个筛选值
            return filterWorkNos.some((workNo) => rowWorkNos.includes(workNo));
        case 'ne': // 不等于：行值中不包含所有筛选值
            return !filterWorkNos.every((workNo) => rowWorkNos.includes(workNo));
        case 'contains': // 包含：行值中包含任意一个筛选值（同等于）
            return filterWorkNos.some((workNo) => rowWorkNos.includes(workNo));
        case 'notContains': // 不包含：行值中不包含所有筛选值（同不等于）
            return !filterWorkNos.every((workNo) => rowWorkNos.includes(workNo));
        default:
            // 其他操作符暂不支持，默认返回 true
            return true;
    }
}
