@@ -847,42 +847,26 @@ export const showColMenu = (protyle: IProtyle, blockElement: Element, cellElemen
847847 id : avID ,
848848 } , ( response ) => {
849849 const avData = response . data as IAV ;
850- let filter : IAVFilter ;
851- // 递归在过滤树中查找该列已存在的叶子
852- const findFilter = ( nodes : IAVFilter [ ] ) : IAVFilter => {
853- for ( const n of nodes ) {
854- if ( n . filters ) {
855- const found = findFilter ( n . filters ) ;
856- if ( found ) return found ;
857- } else if ( n . column === colId && n . value . type === type ) {
858- return n ;
859- }
860- }
861- return undefined ;
850+ // 始终新建一个占位条件(允许同列多条件,支持“主键包含111 OR 主键包含222”等组合)
851+ const filter : IAVFilter = {
852+ column : colId ,
853+ operator : getDefaultOperatorByType ( type ) ,
854+ value : genCellValue ( type , "" ) ,
862855 } ;
863- filter = findFilter ( getEditableFilters ( avData ) ) ;
864- if ( ! filter ) {
865- // 新建占位条件并保存,随后打开筛选面板 inline 编辑
866- filter = {
867- column : colId ,
868- operator : getDefaultOperatorByType ( type ) ,
869- value : genCellValue ( type , "" ) ,
870- } ;
871- // 深拷贝旧值用于 undo,撤销时恢复完整筛选状态而非清空全部
872- const oldFilters = JSON . parse ( JSON . stringify ( avData . view . filters ) ) ;
873- getEditableFilters ( avData ) . push ( filter ) ;
874- transaction ( protyle , [ {
875- action : "setAttrViewFilters" ,
876- avID,
877- data : avData . view . filters ,
878- blockID : blockElement . getAttribute ( "data-node-id" )
879- } ] , [ {
880- action : "setAttrViewFilters" ,
881- avID,
882- data : oldFilters ,
883- blockID : blockElement . getAttribute ( "data-node-id" )
884- } ] ) ;
885- }
856+ // 深拷贝旧值用于 undo,撤销时恢复完整筛选状态而非清空全部
857+ const oldFilters = JSON . parse ( JSON . stringify ( avData . view . filters ) ) ;
858+ getEditableFilters ( avData ) . push ( filter ) ;
859+ transaction ( protyle , [ {
860+ action : "setAttrViewFilters" ,
861+ avID,
862+ data : avData . view . filters ,
863+ blockID : blockElement . getAttribute ( "data-node-id" )
864+ } ] , [ {
865+ action : "setAttrViewFilters" ,
866+ avID,
867+ data : oldFilters ,
868+ blockID : blockElement . getAttribute ( "data-node-id" )
869+ } ] ) ;
886870 // 打开筛选面板,用户在内联控件中编辑(替代原 setFilter 弹层)
887871 openMenuPanel ( {
888872 protyle,
0 commit comments