import type { ColumnFilterDef } from '@/composables/useClientColumnFilters' /** 从列表上下文参数中去掉当前列对应的过滤键(Excel:打开本列漏斗不受自身勾选约束)。 */ export function stripSelfColumnParams( params: Record, prop: string, defs: ColumnFilterDef[] ): Record { const out: Record = { ...params } const def = defs.find((d) => d.prop === prop) if (!def) return out const keys = new Set() const add = (...names: Array) => { for (const name of names) { const key = String(name || '').trim() if (key) keys.add(key) } } add(def.prop, `${def.prop}In`) if (def.type === 'datetime') { const base = def.queryKey || def.prop add(def.queryKeyFrom, def.queryKeyTo, `${base}From`, `${base}To`) } else if (def.type === 'number') { const prefix = def.queryKeyPrefix || def.queryKey || def.prop add(prefix, `${prefix}Op`, `${prefix}Min`, `${prefix}Max`) } else { const key = def.queryKey || def.prop add(key, `${key}In`) } // 装/送货客户:queryKey 与 prop 不一致,以及列表合并后的 stopCustomers if (prop === 'loadCustomer' || def.queryKey === 'loadCustomers') { add( 'loadCustomer', 'loadCustomerIn', 'loadCustomers', 'loadCustomersIn', 'stopCustomers', 'customerKeyword' ) } if (prop === 'deliveryCustomer' || def.queryKey === 'deliveryCustomers') { add( 'deliveryCustomer', 'deliveryCustomerIn', 'deliveryCustomers', 'deliveryCustomersIn', 'stopCustomers', 'customerKeyword' ) } // 合同列:productContract ↔ contractNo if (prop === 'productContract' || def.queryKey === 'contractNo') { add('productContract', 'productContractIn', 'contractNo', 'contractNoIn', 'stopKindIn') } if (prop === 'productPackageSpec' || def.queryKey === 'packageSpec') { add('productPackageSpec', 'productPackageSpecIn', 'packageSpec', 'packageSpecIn') } for (const key of keys) { delete out[key] } return out }