/// export interface ComprehensiveSearchProps { dataSource?: any; isShowScanner?: boolean; isShowCamera?: boolean; isShowNFC?: boolean; isShowNewButton?: boolean; newButtonAlign?: 'left' | 'center' | 'right'; newButtonText?: string; newDialogDataSource?: any; renderType?: 'modal' | 'drawer' | 'portal' | ''; containerProps?: Record; isShowSearch?: boolean; isShowSearchCamera?: boolean; searchIcon?: string; placeholder?: string; isShowSearchButton?: boolean; resultDisplay?: 'list' | 'grid'; resultSort?: 'asc' | 'desc' | 'custom'; sortBy?: string; style?: React.CSSProperties; loading?: boolean; /** * 搜索关键字(受控 / 非受控开关)。 * - 传入(!== undefined)→ **受控**:输入框始终显示该值,需配合 `onKeywordChange` 回写。 * - 不传(undefined)→ **非受控**:组件内部自管显示,输入与扫码值都会自动回填输入框, * 宿主仅通过 `onSearch` / `onScannerData` 获取结果即可。 */ keyword?: string; /** * 是否开启扫码枪监听 * 通过宿主 `app.pubsub.subscribe('nativeScanResult', ...)` 订阅; * 切换 false 时会 unsubscribe,停止接收事件。 * @default false */ enableScanner?: boolean; /** * 关键字变化回调(输入 / 扫码触发)。 * 受控用法下必传,用于把最新值回写到 `keyword`;非受控用法下可选。 */ onKeywordChange?: (value: string) => void; onSearch?: (value: string) => void; onAdd?: () => void; onDataChange?: (data: any) => void; onRowClick?: (record: any, index: any) => void; /** * 扫码枪回调 * 监听到扫码枪事件时触发,参数为原始 payload 对象(含 `data` 字段)。 * 仅在 `enableScanner` 为 true 时才会触发。 */ onScannerData?: (data: ComprehensiveSearchScannerData) => void; } /** * 扫码枪回传数据(对齐宿主 ScanResultPayload,与 PisellFind 一致) * - code: 条码标识(如条码格式 / 业务字段) * - data: 扫描得到的字符串值(写入输入框的内容) */ export interface ComprehensiveSearchScannerData { code: string; data: string; } export interface SearchResult { [key: string]: any; }