@nokecy/qc-ui 1.0.87 → 1.0.88

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -284,83 +284,36 @@ function AgGridPlus(props) {
284
284
  }
285
285
  }, [gridKey, columnSchemeManager === null || columnSchemeManager === void 0 || (_columnSchemeManager$2 = columnSchemeManager.currentScheme) === null || _columnSchemeManager$2 === void 0 ? void 0 : _columnSchemeManager$2.columnConfig]);
286
286
 
287
- // 同步 apiRef 和 currentScheme,确保方案在两者都准备好时应用
287
+ // 【修复】使用 applyColumnState 来应用列的顺序、宽度、隐藏等状态
288
+ // applyColumnState 是 AG-Grid 推荐的方式,专门用于控制列状态
288
289
  (0, _react.useEffect)(function () {
289
- var _currentScheme$column;
290
290
  var currentScheme = columnSchemeManager === null || columnSchemeManager === void 0 ? void 0 : columnSchemeManager.currentScheme;
291
-
292
- // 两个依赖都不存在时,直接返回
293
291
  if (!apiRef.current || !currentScheme) {
294
- console.log('[AgGridPlus] useEffect: 等待依赖准备', {
295
- hasApiRef: !!apiRef.current,
296
- hasCurrentScheme: !!currentScheme
297
- });
298
292
  return;
299
293
  }
300
- console.log('[AgGridPlus] useEffect: 两个依赖都准备好,应用方案', {
301
- schemeId: currentScheme.id,
302
- schemeName: currentScheme.name,
303
- hasColumnConfig: !!currentScheme.columnConfig,
304
- columnConfigCount: ((_currentScheme$column = currentScheme.columnConfig) === null || _currentScheme$column === void 0 ? void 0 : _currentScheme$column.length) || 0
305
- });
306
- var timer = setTimeout(function () {
307
- // 优先使用 columnConfig(包含完整的分组结构)
308
- if (currentScheme.columnConfig) {
309
- var _require2 = require("./setting/columnGroupUtils"),
310
- flatConfigToGridState = _require2.flatConfigToGridState;
311
- var gridColumnDefs = flatConfigToGridState(currentScheme.columnConfig);
312
- console.log('[AgGridPlus] useEffect: 应用方案的 columnConfig:', {
313
- columnConfig: currentScheme.columnConfig,
314
- columnConfigLength: currentScheme.columnConfig.length,
315
- gridColumnDefs: gridColumnDefs,
316
- gridColumnDefsLength: gridColumnDefs.length,
317
- columnConfigDetail: currentScheme.columnConfig.map(function (item) {
318
- return {
319
- type: item.type,
320
- field: item.field,
321
- headerName: item.headerName,
322
- order: item.order,
323
- parentId: item.parentId
324
- };
325
- }),
326
- gridColumnDefsDetail: gridColumnDefs.map(function (def, idx) {
327
- var _def$children;
328
- return {
329
- index: idx,
330
- field: def.field,
331
- headerName: def.headerName,
332
- groupId: def.groupId,
333
- children: (_def$children = def.children) === null || _def$children === void 0 ? void 0 : _def$children.length
334
- };
335
- })
336
- });
337
294
 
338
- // 1. 先设置列定义(包含分组结构)
339
- if (apiRef.current) {
340
- apiRef.current.setGridOption("columnDefs", gridColumnDefs);
295
+ // 如果有 columnConfig,使用 applyColumnState 应用列状态
296
+ if (currentScheme.columnConfig && currentScheme.columnConfig.length > 0) {
297
+ var _require2 = require("./setting/columnGroupUtils"),
298
+ flatConfigToColumnState = _require2.flatConfigToColumnState;
299
+ var _columnState2 = flatConfigToColumnState(currentScheme.columnConfig);
341
300
 
342
- // 等待 columnDefs 应用完成后再设置过滤器
343
- // 原因: setGridOption("columnDefs") 会触发 Grid 重新渲染,可能重置内部状态
344
- // 必须在下一个渲染周期后应用 filterModel,否则会被覆盖
345
- if (currentScheme.filterModel) {
346
- requestAnimationFrame(function () {
347
- if (apiRef.current) {
348
- console.log('[AgGridPlus] 应用过滤器状态:', currentScheme.filterModel);
349
- apiRef.current.setFilterModel(currentScheme.filterModel);
350
- }
351
- });
352
- }
353
- }
301
+ // 使用 applyColumnState 应用列状态
302
+ // applyOrder: true 表示按照 state 数组的顺序重新排列列
303
+ apiRef.current.applyColumnState({
304
+ state: _columnState2,
305
+ applyOrder: true
306
+ });
307
+ }
354
308
 
355
- // 2. 【重要修改】使用 columnConfig 时,不应用 columnState
356
- // 原因:columnConfig 已经包含了完整的列配置(宽度、隐藏、顺序、分组等)
357
- // 如果再应用 columnState,会导致分组子列被视为独立列,破坏分组结构
358
- console.log('[AgGridPlus] useEffect: 使用 columnConfig,跳过 columnState 应用');
359
- }
360
- }, 10);
361
- return function () {
362
- return clearTimeout(timer);
363
- };
309
+ // 应用过滤器状态
310
+ if (currentScheme.filterModel) {
311
+ setTimeout(function () {
312
+ if (apiRef.current) {
313
+ apiRef.current.setFilterModel(currentScheme.filterModel);
314
+ }
315
+ }, 50); // 延迟稍长一点,等待 columnState 应用完成
316
+ }
364
317
  }, [apiRef.current, columnSchemeManager === null || columnSchemeManager === void 0 ? void 0 : columnSchemeManager.currentScheme]);
365
318
  (0, _react.useEffect)(function () {
366
319
  setRowData(dataSource || propRowData || []);
@@ -943,6 +896,17 @@ function AgGridPlus(props) {
943
896
  calculateSum();
944
897
  };
945
898
  var colDefs = (0, _react.useMemo)(function () {
899
+ var currentScheme = columnSchemeManager === null || columnSchemeManager === void 0 ? void 0 : columnSchemeManager.currentScheme;
900
+
901
+ // 【修复】优先使用方案的 columnConfig,避免被默认逻辑覆盖
902
+ if (currentScheme !== null && currentScheme !== void 0 && currentScheme.columnConfig && currentScheme.columnConfig.length > 0) {
903
+ var _require3 = require("./setting/columnGroupUtils"),
904
+ flatConfigToGridState = _require3.flatConfigToGridState;
905
+ var gridColumnDefs = flatConfigToGridState(currentScheme.columnConfig);
906
+ return gridColumnDefs;
907
+ }
908
+
909
+ // 【默认逻辑】没有方案配置时,使用原有的列定义生成逻辑
946
910
  // 使用缓存的首行数据进行类型推断,而不是当前的 rowData
947
911
  // 这样 rowData 更新时不会触发 colDefs 重新计算
948
912
  var dataForTypeInference = firstRowDataRef.current || (rowData.length > 0 ? rowData[0] : {});
@@ -978,16 +942,8 @@ function AgGridPlus(props) {
978
942
  return !x.hideInTable;
979
943
  });
980
944
  var processedColumns = (0, _processColumnGroups.default)(columnDefs);
981
- console.log('[AgGridPlus] colDefs 重新计算:', {
982
- childrenCount: _react.default.Children.count(children),
983
- hasPropsColumnDefs: !!props.columnDefs,
984
- extensibleColumnsCount: Object.keys(extensibleColumns || {}).length,
985
- columnCellClassCount: Object.keys(columnCellClass).length,
986
- processedColumnsCount: processedColumns.length,
987
- usingCachedData: !!firstRowDataRef.current
988
- });
989
945
  return processedColumns;
990
- }, [_react.default.Children.count(children), props.columnDefs, extensibleColumns, columnCellClass]);
946
+ }, [columnSchemeManager === null || columnSchemeManager === void 0 ? void 0 : columnSchemeManager.currentScheme, _react.default.Children.count(children), props.columnDefs, extensibleColumns, columnCellClass]);
991
947
 
992
948
  // 构建查询表单项(带 order 属性)
993
949
  var queryFormItems = (0, _react.useMemo)(function () {
@@ -1145,8 +1101,8 @@ function AgGridPlus(props) {
1145
1101
  onDragStopped: function onDragStopped(e) {
1146
1102
  if (apiRef.current) {
1147
1103
  var _apiRef$current5;
1148
- var _columnState2 = (_apiRef$current5 = apiRef.current) === null || _apiRef$current5 === void 0 ? void 0 : _apiRef$current5.getColumnState();
1149
- setColumnState(_columnState2);
1104
+ var _columnState3 = (_apiRef$current5 = apiRef.current) === null || _apiRef$current5 === void 0 ? void 0 : _apiRef$current5.getColumnState();
1105
+ setColumnState(_columnState3);
1150
1106
 
1151
1107
  // onColumnStateChanged && onColumnStateChanged(columnState)
1152
1108
  }
@@ -277,83 +277,36 @@ function AgGridPlus(props) {
277
277
  }
278
278
  }, [gridKey, columnSchemeManager === null || columnSchemeManager === void 0 || (_columnSchemeManager$2 = columnSchemeManager.currentScheme) === null || _columnSchemeManager$2 === void 0 ? void 0 : _columnSchemeManager$2.columnConfig]);
279
279
 
280
- // 同步 apiRef 和 currentScheme,确保方案在两者都准备好时应用
280
+ // 【修复】使用 applyColumnState 来应用列的顺序、宽度、隐藏等状态
281
+ // applyColumnState 是 AG-Grid 推荐的方式,专门用于控制列状态
281
282
  useEffect(function () {
282
- var _currentScheme$column;
283
283
  var currentScheme = columnSchemeManager === null || columnSchemeManager === void 0 ? void 0 : columnSchemeManager.currentScheme;
284
-
285
- // 两个依赖都不存在时,直接返回
286
284
  if (!apiRef.current || !currentScheme) {
287
- console.log('[AgGridPlus] useEffect: 等待依赖准备', {
288
- hasApiRef: !!apiRef.current,
289
- hasCurrentScheme: !!currentScheme
290
- });
291
285
  return;
292
286
  }
293
- console.log('[AgGridPlus] useEffect: 两个依赖都准备好,应用方案', {
294
- schemeId: currentScheme.id,
295
- schemeName: currentScheme.name,
296
- hasColumnConfig: !!currentScheme.columnConfig,
297
- columnConfigCount: ((_currentScheme$column = currentScheme.columnConfig) === null || _currentScheme$column === void 0 ? void 0 : _currentScheme$column.length) || 0
298
- });
299
- var timer = setTimeout(function () {
300
- // 优先使用 columnConfig(包含完整的分组结构)
301
- if (currentScheme.columnConfig) {
302
- var _require2 = require("./setting/columnGroupUtils"),
303
- flatConfigToGridState = _require2.flatConfigToGridState;
304
- var gridColumnDefs = flatConfigToGridState(currentScheme.columnConfig);
305
- console.log('[AgGridPlus] useEffect: 应用方案的 columnConfig:', {
306
- columnConfig: currentScheme.columnConfig,
307
- columnConfigLength: currentScheme.columnConfig.length,
308
- gridColumnDefs: gridColumnDefs,
309
- gridColumnDefsLength: gridColumnDefs.length,
310
- columnConfigDetail: currentScheme.columnConfig.map(function (item) {
311
- return {
312
- type: item.type,
313
- field: item.field,
314
- headerName: item.headerName,
315
- order: item.order,
316
- parentId: item.parentId
317
- };
318
- }),
319
- gridColumnDefsDetail: gridColumnDefs.map(function (def, idx) {
320
- var _def$children;
321
- return {
322
- index: idx,
323
- field: def.field,
324
- headerName: def.headerName,
325
- groupId: def.groupId,
326
- children: (_def$children = def.children) === null || _def$children === void 0 ? void 0 : _def$children.length
327
- };
328
- })
329
- });
330
287
 
331
- // 1. 先设置列定义(包含分组结构)
332
- if (apiRef.current) {
333
- apiRef.current.setGridOption("columnDefs", gridColumnDefs);
288
+ // 如果有 columnConfig,使用 applyColumnState 应用列状态
289
+ if (currentScheme.columnConfig && currentScheme.columnConfig.length > 0) {
290
+ var _require2 = require("./setting/columnGroupUtils"),
291
+ flatConfigToColumnState = _require2.flatConfigToColumnState;
292
+ var _columnState2 = flatConfigToColumnState(currentScheme.columnConfig);
334
293
 
335
- // 等待 columnDefs 应用完成后再设置过滤器
336
- // 原因: setGridOption("columnDefs") 会触发 Grid 重新渲染,可能重置内部状态
337
- // 必须在下一个渲染周期后应用 filterModel,否则会被覆盖
338
- if (currentScheme.filterModel) {
339
- requestAnimationFrame(function () {
340
- if (apiRef.current) {
341
- console.log('[AgGridPlus] 应用过滤器状态:', currentScheme.filterModel);
342
- apiRef.current.setFilterModel(currentScheme.filterModel);
343
- }
344
- });
345
- }
346
- }
294
+ // 使用 applyColumnState 应用列状态
295
+ // applyOrder: true 表示按照 state 数组的顺序重新排列列
296
+ apiRef.current.applyColumnState({
297
+ state: _columnState2,
298
+ applyOrder: true
299
+ });
300
+ }
347
301
 
348
- // 2. 【重要修改】使用 columnConfig 时,不应用 columnState
349
- // 原因:columnConfig 已经包含了完整的列配置(宽度、隐藏、顺序、分组等)
350
- // 如果再应用 columnState,会导致分组子列被视为独立列,破坏分组结构
351
- console.log('[AgGridPlus] useEffect: 使用 columnConfig,跳过 columnState 应用');
352
- }
353
- }, 10);
354
- return function () {
355
- return clearTimeout(timer);
356
- };
302
+ // 应用过滤器状态
303
+ if (currentScheme.filterModel) {
304
+ setTimeout(function () {
305
+ if (apiRef.current) {
306
+ apiRef.current.setFilterModel(currentScheme.filterModel);
307
+ }
308
+ }, 50); // 延迟稍长一点,等待 columnState 应用完成
309
+ }
357
310
  }, [apiRef.current, columnSchemeManager === null || columnSchemeManager === void 0 ? void 0 : columnSchemeManager.currentScheme]);
358
311
  useEffect(function () {
359
312
  setRowData(dataSource || propRowData || []);
@@ -936,6 +889,17 @@ function AgGridPlus(props) {
936
889
  calculateSum();
937
890
  };
938
891
  var colDefs = useMemo(function () {
892
+ var currentScheme = columnSchemeManager === null || columnSchemeManager === void 0 ? void 0 : columnSchemeManager.currentScheme;
893
+
894
+ // 【修复】优先使用方案的 columnConfig,避免被默认逻辑覆盖
895
+ if (currentScheme !== null && currentScheme !== void 0 && currentScheme.columnConfig && currentScheme.columnConfig.length > 0) {
896
+ var _require3 = require("./setting/columnGroupUtils"),
897
+ flatConfigToGridState = _require3.flatConfigToGridState;
898
+ var gridColumnDefs = flatConfigToGridState(currentScheme.columnConfig);
899
+ return gridColumnDefs;
900
+ }
901
+
902
+ // 【默认逻辑】没有方案配置时,使用原有的列定义生成逻辑
939
903
  // 使用缓存的首行数据进行类型推断,而不是当前的 rowData
940
904
  // 这样 rowData 更新时不会触发 colDefs 重新计算
941
905
  var dataForTypeInference = firstRowDataRef.current || (rowData.length > 0 ? rowData[0] : {});
@@ -971,16 +935,8 @@ function AgGridPlus(props) {
971
935
  return !x.hideInTable;
972
936
  });
973
937
  var processedColumns = processColumnGroups(columnDefs);
974
- console.log('[AgGridPlus] colDefs 重新计算:', {
975
- childrenCount: React.Children.count(children),
976
- hasPropsColumnDefs: !!props.columnDefs,
977
- extensibleColumnsCount: Object.keys(extensibleColumns || {}).length,
978
- columnCellClassCount: Object.keys(columnCellClass).length,
979
- processedColumnsCount: processedColumns.length,
980
- usingCachedData: !!firstRowDataRef.current
981
- });
982
938
  return processedColumns;
983
- }, [React.Children.count(children), props.columnDefs, extensibleColumns, columnCellClass]);
939
+ }, [columnSchemeManager === null || columnSchemeManager === void 0 ? void 0 : columnSchemeManager.currentScheme, React.Children.count(children), props.columnDefs, extensibleColumns, columnCellClass]);
984
940
 
985
941
  // 构建查询表单项(带 order 属性)
986
942
  var queryFormItems = useMemo(function () {
@@ -1138,8 +1094,8 @@ function AgGridPlus(props) {
1138
1094
  onDragStopped: function onDragStopped(e) {
1139
1095
  if (apiRef.current) {
1140
1096
  var _apiRef$current5;
1141
- var _columnState2 = (_apiRef$current5 = apiRef.current) === null || _apiRef$current5 === void 0 ? void 0 : _apiRef$current5.getColumnState();
1142
- setColumnState(_columnState2);
1097
+ var _columnState3 = (_apiRef$current5 = apiRef.current) === null || _apiRef$current5 === void 0 ? void 0 : _apiRef$current5.getColumnState();
1098
+ setColumnState(_columnState3);
1143
1099
 
1144
1100
  // onColumnStateChanged && onColumnStateChanged(columnState)
1145
1101
  }