@nokecy/qc-ui 1.0.82 → 1.0.83

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.
Files changed (81) hide show
  1. package/dist/cjs/ag-grid-plus/_utils/processColumnGroups.d.ts +9 -0
  2. package/dist/cjs/ag-grid-plus/_utils/processColumnGroups.js +43 -0
  3. package/dist/cjs/ag-grid-plus/ag-gridPlus.js +245 -121
  4. package/dist/cjs/ag-grid-plus/schemes/components/SchemeSelector.d.ts +1 -1
  5. package/dist/cjs/ag-grid-plus/schemes/components/SchemeSelector.js +1 -1
  6. package/dist/cjs/ag-grid-plus/schemes/hooks/useColumnSchemes.js +60 -14
  7. package/dist/cjs/ag-grid-plus/schemes/storage/localStorageAdapter.js +12 -26
  8. package/dist/cjs/ag-grid-plus/schemes/types.d.ts +8 -5
  9. package/dist/cjs/ag-grid-plus/schemes/utils/validator.js +14 -18
  10. package/dist/cjs/ag-grid-plus/setting/ColumnConfigForm.d.ts +16 -0
  11. package/dist/cjs/ag-grid-plus/setting/ColumnConfigForm.js +348 -0
  12. package/dist/cjs/ag-grid-plus/setting/ColumnConfigTable.d.ts +20 -0
  13. package/dist/cjs/ag-grid-plus/setting/ColumnConfigTable.js +940 -0
  14. package/dist/cjs/ag-grid-plus/setting/ColumnSetting.js +208 -248
  15. package/dist/cjs/ag-grid-plus/setting/MoveNodeModal.d.ts +15 -0
  16. package/dist/cjs/ag-grid-plus/setting/MoveNodeModal.js +160 -0
  17. package/dist/cjs/ag-grid-plus/setting/NameColumnRenderer.d.ts +18 -0
  18. package/dist/cjs/ag-grid-plus/setting/NameColumnRenderer.js +94 -0
  19. package/dist/cjs/ag-grid-plus/setting/columnGroupTypes.d.ts +59 -0
  20. package/dist/cjs/ag-grid-plus/setting/columnGroupTypes.js +5 -0
  21. package/dist/cjs/ag-grid-plus/setting/columnGroupUtils.d.ts +75 -0
  22. package/dist/cjs/ag-grid-plus/setting/columnGroupUtils.js +281 -0
  23. package/dist/cjs/ag-grid-plus/setting/index.d.ts +2 -1
  24. package/dist/cjs/ag-grid-plus/setting/index.js +4 -2
  25. package/dist/cjs/ag-grid-plus/storage/SchemeSyncManager.d.ts +2 -1
  26. package/dist/cjs/ag-grid-plus/storage/SchemeSyncManager.js +11 -8
  27. package/dist/cjs/ag-grid-plus/types.d.ts +2 -0
  28. package/dist/cjs/array-table/index.js +30 -118
  29. package/dist/cjs/draggableModal/index.d.ts +1 -1
  30. package/dist/cjs/draggableModal/index.js +251 -25
  31. package/dist/cjs/draggableModal/style.less +185 -12
  32. package/dist/esm/ag-grid-plus/_utils/processColumnGroups.d.ts +9 -0
  33. package/dist/esm/ag-grid-plus/_utils/processColumnGroups.js +44 -0
  34. package/dist/esm/ag-grid-plus/ag-gridPlus.js +245 -121
  35. package/dist/esm/ag-grid-plus/schemes/components/SchemeSelector.d.ts +1 -1
  36. package/dist/esm/ag-grid-plus/schemes/components/SchemeSelector.js +1 -1
  37. package/dist/esm/ag-grid-plus/schemes/hooks/useColumnSchemes.js +60 -14
  38. package/dist/esm/ag-grid-plus/schemes/storage/localStorageAdapter.js +13 -27
  39. package/dist/esm/ag-grid-plus/schemes/types.d.ts +8 -5
  40. package/dist/esm/ag-grid-plus/schemes/utils/validator.js +14 -18
  41. package/dist/esm/ag-grid-plus/setting/ColumnConfigForm.d.ts +16 -0
  42. package/dist/esm/ag-grid-plus/setting/ColumnConfigForm.js +338 -0
  43. package/dist/esm/ag-grid-plus/setting/ColumnConfigTable.d.ts +20 -0
  44. package/dist/esm/ag-grid-plus/setting/ColumnConfigTable.js +932 -0
  45. package/dist/esm/ag-grid-plus/setting/ColumnSetting.js +207 -247
  46. package/dist/esm/ag-grid-plus/setting/MoveNodeModal.d.ts +15 -0
  47. package/dist/esm/ag-grid-plus/setting/MoveNodeModal.js +150 -0
  48. package/dist/esm/ag-grid-plus/setting/NameColumnRenderer.d.ts +18 -0
  49. package/dist/esm/ag-grid-plus/setting/NameColumnRenderer.js +87 -0
  50. package/dist/esm/ag-grid-plus/setting/columnGroupTypes.d.ts +59 -0
  51. package/dist/esm/ag-grid-plus/setting/columnGroupTypes.js +1 -0
  52. package/dist/esm/ag-grid-plus/setting/columnGroupUtils.d.ts +75 -0
  53. package/dist/esm/ag-grid-plus/setting/columnGroupUtils.js +265 -0
  54. package/dist/esm/ag-grid-plus/setting/index.d.ts +2 -1
  55. package/dist/esm/ag-grid-plus/setting/index.js +4 -2
  56. package/dist/esm/ag-grid-plus/storage/SchemeSyncManager.d.ts +2 -1
  57. package/dist/esm/ag-grid-plus/storage/SchemeSyncManager.js +11 -8
  58. package/dist/esm/ag-grid-plus/types.d.ts +2 -0
  59. package/dist/esm/array-table/index.js +31 -119
  60. package/dist/esm/draggableModal/index.d.ts +1 -1
  61. package/dist/esm/draggableModal/index.js +252 -27
  62. package/dist/esm/draggableModal/style.less +185 -12
  63. package/dist/umd/qc-ui.min.css +1 -1
  64. package/dist/umd/qc-ui.min.js +1 -1
  65. package/package.json +1 -1
  66. package/dist/cjs/ag-grid-plus/gridManager/index.d.ts +0 -7
  67. package/dist/cjs/ag-grid-plus/gridManager/index.js +0 -40
  68. package/dist/cjs/ag-grid-plus/querySchemes/hooks/useQuerySchemes.refactored.d.ts +0 -7
  69. package/dist/cjs/ag-grid-plus/querySchemes/hooks/useQuerySchemes.refactored.js +0 -32
  70. package/dist/cjs/ag-grid-plus/schemes/hooks/useColumnSchemes.refactored.d.ts +0 -7
  71. package/dist/cjs/ag-grid-plus/schemes/hooks/useColumnSchemes.refactored.js +0 -32
  72. package/dist/cjs/ag-grid-plus/setting/diySetting/index.d.ts +0 -10
  73. package/dist/cjs/ag-grid-plus/setting/diySetting/index.js +0 -268
  74. package/dist/esm/ag-grid-plus/gridManager/index.d.ts +0 -7
  75. package/dist/esm/ag-grid-plus/gridManager/index.js +0 -35
  76. package/dist/esm/ag-grid-plus/querySchemes/hooks/useQuerySchemes.refactored.d.ts +0 -7
  77. package/dist/esm/ag-grid-plus/querySchemes/hooks/useQuerySchemes.refactored.js +0 -27
  78. package/dist/esm/ag-grid-plus/schemes/hooks/useColumnSchemes.refactored.d.ts +0 -7
  79. package/dist/esm/ag-grid-plus/schemes/hooks/useColumnSchemes.refactored.js +0 -27
  80. package/dist/esm/ag-grid-plus/setting/diySetting/index.d.ts +0 -10
  81. package/dist/esm/ag-grid-plus/setting/diySetting/index.js +0 -259
@@ -51,7 +51,7 @@ var getSort = function getSort(columnState) {
51
51
  return columnState ? "".concat(columnState.colId, " ").concat(columnState.sort) : "";
52
52
  };
53
53
  function AgGridPlus(props) {
54
- var _querySchemeManager$c;
54
+ var _columnSchemeManager$2, _querySchemeManager$c;
55
55
  var style = props.style,
56
56
  loadingProps = props.loading,
57
57
  gridParams = props.params,
@@ -165,12 +165,16 @@ function AgGridPlus(props) {
165
165
  storageAdapter: globalColumnAdapter || columnSchemeStorageAdapter,
166
166
  enableAutoSave: true,
167
167
  onSchemeChange: function onSchemeChange(scheme) {
168
- if (scheme && apiRef.current) {
169
- apiRef.current.applyColumnState({
170
- state: scheme.columnState,
171
- applyOrder: true
172
- });
173
- }
168
+ console.log('[AgGridPlus] onSchemeChange 被调用:', {
169
+ hasScheme: !!scheme,
170
+ hasApiRef: !!apiRef.current,
171
+ schemeId: scheme === null || scheme === void 0 ? void 0 : scheme.id,
172
+ schemeName: scheme === null || scheme === void 0 ? void 0 : scheme.name,
173
+ hasColumnConfig: !!(scheme !== null && scheme !== void 0 && scheme.columnConfig)
174
+ });
175
+
176
+ // 注意: 方案应用已由 useEffect 处理
177
+ // useEffect 会在 apiRef 和 currentScheme 都准备好时自动应用方案
174
178
  }
175
179
  }) : undefined;
176
180
 
@@ -235,37 +239,114 @@ function AgGridPlus(props) {
235
239
 
236
240
  // 加载列方案
237
241
  useEffect(function () {
238
- if (!gridPlusColumnState || !gridKey || !apiRef.current) return;
239
- var currentState = gridPlusColumnState[gridKey];
240
- if (!currentState) return;
241
- setColumnCellClass(handelgridPlusColumnState(currentState));
242
- var timer = setTimeout(function () {
243
- var _apiRef$current;
244
- (_apiRef$current = apiRef.current) === null || _apiRef$current === void 0 || _apiRef$current.applyColumnState({
245
- state: currentState,
246
- applyOrder: true
247
- });
248
- }, 10);
249
- return function () {
250
- return clearTimeout(timer);
251
- };
252
- }, [gridPlusColumnState, gridKey]);
242
+ var _columnSchemeManager$;
243
+ if (!gridKey || !apiRef.current) return;
244
+
245
+ // 优先使用方案中的 columnConfig(用户在列配置界面调整后的数据)
246
+ if (columnSchemeManager !== null && columnSchemeManager !== void 0 && (_columnSchemeManager$ = columnSchemeManager.currentScheme) !== null && _columnSchemeManager$ !== void 0 && _columnSchemeManager$.columnConfig) {
247
+ var _require = require("./setting/columnGroupUtils"),
248
+ flatConfigToColumnState = _require.flatConfigToColumnState;
249
+ var _columnState = flatConfigToColumnState(columnSchemeManager.currentScheme.columnConfig);
250
+ setColumnCellClass(handelgridPlusColumnState(_columnState));
251
+ var timer = setTimeout(function () {
252
+ var _apiRef$current;
253
+ (_apiRef$current = apiRef.current) === null || _apiRef$current === void 0 || _apiRef$current.applyColumnState({
254
+ state: _columnState,
255
+ applyOrder: true
256
+ });
257
+ }, 10);
258
+ return function () {
259
+ return clearTimeout(timer);
260
+ };
261
+ }
262
+ // 后备方案:使用旧的 gridPlusColumnState
263
+ else if (gridPlusColumnState !== null && gridPlusColumnState !== void 0 && gridPlusColumnState[gridKey]) {
264
+ var currentState = gridPlusColumnState[gridKey];
265
+ setColumnCellClass(handelgridPlusColumnState(currentState));
266
+ var _timer = setTimeout(function () {
267
+ var _apiRef$current2;
268
+ (_apiRef$current2 = apiRef.current) === null || _apiRef$current2 === void 0 || _apiRef$current2.applyColumnState({
269
+ state: currentState,
270
+ applyOrder: true
271
+ });
272
+ }, 10);
273
+ return function () {
274
+ return clearTimeout(_timer);
275
+ };
276
+ }
277
+ }, [gridKey, columnSchemeManager === null || columnSchemeManager === void 0 || (_columnSchemeManager$2 = columnSchemeManager.currentScheme) === null || _columnSchemeManager$2 === void 0 ? void 0 : _columnSchemeManager$2.columnConfig, gridPlusColumnState]);
253
278
 
254
- // 当 gridApi 就绪且有当前方案时,应用列方案
279
+ // 同步 apiRef 和 currentScheme,确保方案在两者都准备好时应用
255
280
  useEffect(function () {
281
+ var _currentScheme$column;
256
282
  var currentScheme = columnSchemeManager === null || columnSchemeManager === void 0 ? void 0 : columnSchemeManager.currentScheme;
257
- if (!apiRef.current || !currentScheme) return;
258
- var timer = setTimeout(function () {
259
- var _apiRef$current2;
260
- (_apiRef$current2 = apiRef.current) === null || _apiRef$current2 === void 0 || _apiRef$current2.applyColumnState({
261
- state: currentScheme.columnState,
262
- applyOrder: true
283
+
284
+ // 两个依赖都不存在时,直接返回
285
+ if (!apiRef.current || !currentScheme) {
286
+ console.log('[AgGridPlus] useEffect: 等待依赖准备', {
287
+ hasApiRef: !!apiRef.current,
288
+ hasCurrentScheme: !!currentScheme
263
289
  });
290
+ return;
291
+ }
292
+ console.log('[AgGridPlus] useEffect: 两个依赖都准备好,应用方案', {
293
+ schemeId: currentScheme.id,
294
+ schemeName: currentScheme.name,
295
+ hasColumnConfig: !!currentScheme.columnConfig,
296
+ columnConfigCount: ((_currentScheme$column = currentScheme.columnConfig) === null || _currentScheme$column === void 0 ? void 0 : _currentScheme$column.length) || 0
297
+ });
298
+ var timer = setTimeout(function () {
299
+ // 优先使用 columnConfig(包含完整的分组结构)
300
+ if (currentScheme.columnConfig) {
301
+ var _require2 = require("./setting/columnGroupUtils"),
302
+ flatConfigToGridState = _require2.flatConfigToGridState;
303
+ var gridColumnDefs = flatConfigToGridState(currentScheme.columnConfig);
304
+ console.log('[AgGridPlus] useEffect: 应用方案的 columnConfig:', {
305
+ columnConfig: currentScheme.columnConfig,
306
+ columnConfigLength: currentScheme.columnConfig.length,
307
+ gridColumnDefs: gridColumnDefs,
308
+ gridColumnDefsLength: gridColumnDefs.length,
309
+ columnConfigDetail: currentScheme.columnConfig.map(function (item) {
310
+ return {
311
+ type: item.type,
312
+ field: item.field,
313
+ headerName: item.headerName,
314
+ order: item.order,
315
+ parentId: item.parentId
316
+ };
317
+ }),
318
+ gridColumnDefsDetail: gridColumnDefs.map(function (def, idx) {
319
+ var _def$children;
320
+ return {
321
+ index: idx,
322
+ field: def.field,
323
+ headerName: def.headerName,
324
+ groupId: def.groupId,
325
+ children: (_def$children = def.children) === null || _def$children === void 0 ? void 0 : _def$children.length
326
+ };
327
+ })
328
+ });
329
+
330
+ // 1. 先设置列定义(包含分组结构)
331
+ if (apiRef.current) {
332
+ apiRef.current.setGridOption("columnDefs", gridColumnDefs);
333
+ }
334
+
335
+ // 2. 【重要修改】使用 columnConfig 时,不应用 columnState
336
+ // 原因:columnConfig 已经包含了完整的列配置(宽度、隐藏、顺序、分组等)
337
+ // 如果再应用 columnState,会导致分组子列被视为独立列,破坏分组结构
338
+ console.log('[AgGridPlus] useEffect: 使用 columnConfig,跳过 columnState 应用');
339
+ }
340
+
341
+ // 应用过滤器状态
342
+ if (currentScheme.filterModel && apiRef.current) {
343
+ apiRef.current.setFilterModel(currentScheme.filterModel);
344
+ }
264
345
  }, 10);
265
346
  return function () {
266
347
  return clearTimeout(timer);
267
348
  };
268
- }, [columnSchemeManager === null || columnSchemeManager === void 0 ? void 0 : columnSchemeManager.currentScheme]);
349
+ }, [apiRef.current, columnSchemeManager === null || columnSchemeManager === void 0 ? void 0 : columnSchemeManager.currentScheme]);
269
350
  useEffect(function () {
270
351
  setRowData(dataSource || propRowData || []);
271
352
  }, [dataSource, propRowData]);
@@ -301,96 +382,116 @@ function AgGridPlus(props) {
301
382
  return colDef.customCellRenderer(params);
302
383
  };
303
384
 
304
- // 获取表格列定义
305
- var getTableColumns = function getTableColumns(rowDataList) {
306
- var data = rowDataList.length > 0 ? rowDataList[0] : {};
307
- var columnProps = React.Children.map(children, function (child, index) {
308
- return _objectSpread({}, child.props);
309
- });
310
- var columnDefs = !columnProps ? props.columnDefs ? props.columnDefs : [] : columnProps;
311
- columnDefs = columnDefs.map(function (col) {
312
- var dataType = getDataType(data, col.field || '', col.valueEnum);
313
- if (col.valueEnum && Array.isArray(col.valueEnum)) {
314
- var _defaultItems$0$value, _defaultItems$;
315
- // 统计默认值
316
- var valueEnum = col.valueEnum; // 保存引用以便TypeScript理解
317
- var defaultItems = valueEnum.filter(function (item) {
318
- return item.default;
385
+ // 辅助函数: 处理单个列配置
386
+ var processColumnConfig = function processColumnConfig(col, data) {
387
+ var dataType = getDataType(data, col.field || '', col.valueEnum);
388
+ if (col.valueEnum && Array.isArray(col.valueEnum)) {
389
+ var _defaultItems$0$value, _defaultItems$;
390
+ // 统计默认值
391
+ var valueEnum = col.valueEnum; // 保存引用以便TypeScript理解
392
+ var defaultItems = valueEnum.filter(function (item) {
393
+ return item.default;
394
+ });
395
+ var isMultiple = defaultItems.length > 1;
396
+ var defaultValue = isMultiple ? defaultItems.map(function (item) {
397
+ return item.value;
398
+ }) : (_defaultItems$0$value = (_defaultItems$ = defaultItems[0]) === null || _defaultItems$ === void 0 ? void 0 : _defaultItems$.value) !== null && _defaultItems$0$value !== void 0 ? _defaultItems$0$value : undefined;
399
+ var valueFormatter = function valueFormatter(params) {
400
+ var match = valueEnum.find(function (item) {
401
+ return item.value == params.value;
319
402
  });
320
- var isMultiple = defaultItems.length > 1;
321
- var defaultValue = isMultiple ? defaultItems.map(function (item) {
322
- return item.value;
323
- }) : (_defaultItems$0$value = (_defaultItems$ = defaultItems[0]) === null || _defaultItems$ === void 0 ? void 0 : _defaultItems$.value) !== null && _defaultItems$0$value !== void 0 ? _defaultItems$0$value : undefined;
324
- var valueFormatter = function valueFormatter(params) {
403
+ return match ? match.label : params.value;
404
+ };
405
+ return _objectSpread(_objectSpread(_objectSpread({}, dataType), col), {}, {
406
+ cellRenderer: function cellRenderer(params) {
325
407
  var match = valueEnum.find(function (item) {
326
408
  return item.value == params.value;
327
409
  });
328
- return match ? match.label : params.value;
329
- };
330
- return _objectSpread(_objectSpread(_objectSpread({}, dataType), col), {}, {
331
- cellRenderer: function cellRenderer(params) {
332
- var match = valueEnum.find(function (item) {
333
- return item.value == params.value;
334
- });
335
- if (match) {
336
- var color = match.color || '#ffffff';
337
- return /*#__PURE__*/React.createElement("span", {
338
- style: {
339
- color: color,
340
- backgroundColor: 'transparent',
341
- fontWeight: 500
342
- }
343
- }, match.label);
344
- }
345
- return params.value;
346
- },
347
- filterParams: _objectSpread(_objectSpread({}, col.filterParams || {}), {}, {
348
- valueFormatter: valueFormatter
349
- }),
350
- searchComponent: Select,
351
- searchComponentProps: {
352
- options: col.valueEnum.map(function (item) {
353
- return {
354
- label: item.label,
355
- value: item.value
356
- };
357
- }),
358
- mode: isMultiple ? "multiple" : undefined,
359
- defaultValue: defaultValue
360
- }
361
- });
362
- }
363
- if (col.type || typeof col.cellRenderer == "string") {
364
- return _objectSpread({}, col);
365
- }
366
- //@ts-ignore
367
- if (col !== null && col !== void 0 && col.ellipsis) {
368
- return _objectSpread(_objectSpread({}, col), {}, {
369
- cellRenderer: function cellRenderer(_ref) {
370
- var value = _ref.value;
371
- return /*#__PURE__*/React.createElement(Text, {
372
- ellipsis: {
373
- tooltip: value
374
- },
410
+ if (match) {
411
+ var color = match.color || '#ffffff';
412
+ return /*#__PURE__*/React.createElement("span", {
375
413
  style: {
376
- display: 'flex',
377
- justifyContent: 'center',
378
- alignItems: 'center'
414
+ color: color,
415
+ backgroundColor: 'transparent',
416
+ fontWeight: 500
379
417
  }
380
- }, value);
418
+ }, match.label);
381
419
  }
382
- });
383
- }
384
- if (col.cellRenderer) {
385
- return _objectSpread(_objectSpread({}, col), {}, {
386
- customCellRenderer: col.cellRenderer,
387
- cellRenderer: cellRenderer
388
- });
389
- }
390
- return _objectSpread(_objectSpread(_objectSpread({}, dataType), col), {}, {
420
+ return params.value;
421
+ },
422
+ filterParams: _objectSpread(_objectSpread({}, col.filterParams || {}), {}, {
423
+ valueFormatter: valueFormatter
424
+ }),
425
+ searchComponent: Select,
426
+ searchComponentProps: {
427
+ options: col.valueEnum.map(function (item) {
428
+ return {
429
+ label: item.label,
430
+ value: item.value
431
+ };
432
+ }),
433
+ mode: isMultiple ? "multiple" : undefined,
434
+ defaultValue: defaultValue
435
+ }
436
+ });
437
+ }
438
+ if (col.type || typeof col.cellRenderer == "string") {
439
+ return _objectSpread({}, col);
440
+ }
441
+ //@ts-ignore
442
+ if (col !== null && col !== void 0 && col.ellipsis) {
443
+ return _objectSpread(_objectSpread({}, col), {}, {
444
+ cellRenderer: function cellRenderer(_ref) {
445
+ var value = _ref.value;
446
+ return /*#__PURE__*/React.createElement(Text, {
447
+ ellipsis: {
448
+ tooltip: value
449
+ },
450
+ style: {
451
+ display: 'flex',
452
+ justifyContent: 'center',
453
+ alignItems: 'center'
454
+ }
455
+ }, value);
456
+ }
457
+ });
458
+ }
459
+ if (col.cellRenderer) {
460
+ return _objectSpread(_objectSpread({}, col), {}, {
391
461
  customCellRenderer: col.cellRenderer,
392
462
  cellRenderer: cellRenderer
393
463
  });
464
+ }
465
+ return _objectSpread(_objectSpread(_objectSpread({}, dataType), col), {}, {
466
+ customCellRenderer: col.cellRenderer,
467
+ cellRenderer: cellRenderer
468
+ });
469
+ };
470
+
471
+ // 获取表格列定义
472
+ var getTableColumns = function getTableColumns(rowDataList) {
473
+ var data = rowDataList.length > 0 ? rowDataList[0] : {};
474
+ var columnProps = React.Children.map(children, function (child, index) {
475
+ return _objectSpread({}, child.props);
476
+ });
477
+ var columnDefs = !columnProps ? props.columnDefs ? props.columnDefs : [] : columnProps;
478
+
479
+ // 递归处理列配置(包括分组的 children)
480
+ var processColumnDefRecursively = function processColumnDefRecursively(col) {
481
+ // 如果有 children(分组列),递归处理每个子列
482
+ if (col.children && Array.isArray(col.children)) {
483
+ return _objectSpread(_objectSpread({}, col), {}, {
484
+ children: col.children.map(function (child) {
485
+ return processColumnDefRecursively(child);
486
+ })
487
+ });
488
+ }
489
+
490
+ // 处理普通列
491
+ return processColumnConfig(col, data);
492
+ };
493
+ columnDefs = columnDefs.map(function (col) {
494
+ return processColumnDefRecursively(col);
394
495
  });
395
496
  extensibleColumns && gridKey && extensibleColumns[gridKey] && extensibleColumns[gridKey].map(function (column) {
396
497
  columnDefs.push({
@@ -465,7 +566,14 @@ function AgGridPlus(props) {
465
566
  };
466
567
  }, [propsRowSelection, enableClickSelection]);
467
568
  var onGridReady = useCallback(function (params) {
468
- var _apiRef$current3;
569
+ var _columnSchemeManager$3, _columnSchemeManager$4, _columnSchemeManager$5, _apiRef$current3;
570
+ console.log('[AgGridPlus] onGridReady 被调用:', {
571
+ hasColumnSchemeManager: !!columnSchemeManager,
572
+ hasCurrentScheme: !!(columnSchemeManager !== null && columnSchemeManager !== void 0 && columnSchemeManager.currentScheme),
573
+ currentSchemeId: columnSchemeManager === null || columnSchemeManager === void 0 || (_columnSchemeManager$3 = columnSchemeManager.currentScheme) === null || _columnSchemeManager$3 === void 0 ? void 0 : _columnSchemeManager$3.id,
574
+ currentSchemeName: columnSchemeManager === null || columnSchemeManager === void 0 || (_columnSchemeManager$4 = columnSchemeManager.currentScheme) === null || _columnSchemeManager$4 === void 0 ? void 0 : _columnSchemeManager$4.name,
575
+ hasColumnConfig: !!(columnSchemeManager !== null && columnSchemeManager !== void 0 && (_columnSchemeManager$5 = columnSchemeManager.currentScheme) !== null && _columnSchemeManager$5 !== void 0 && _columnSchemeManager$5.columnConfig)
576
+ });
469
577
  apiRef.current = params.api;
470
578
  onReady && onReady(params);
471
579
  ///@ts-ignore
@@ -473,7 +581,10 @@ function AgGridPlus(props) {
473
581
  setColumnState((_apiRef$current3 = apiRef.current) === null || _apiRef$current3 === void 0 ? void 0 : _apiRef$current3.getColumnState());
474
582
  sortChanged(params.api);
475
583
  setReady(true);
476
- }, [dataSource]);
584
+
585
+ // 注意: 方案应用已由 useEffect 处理,无需在这里重复应用
586
+ // useEffect 会在 apiRef 和 currentScheme 都准备好时自动应用方案
587
+ }, [dataSource, columnSchemeManager]);
477
588
  var onRequest = useCallback(function (queryFilter) {
478
589
  if (!requestRef.current) return;
479
590
  setLoading(true);
@@ -807,21 +918,34 @@ function AgGridPlus(props) {
807
918
  };
808
919
  var colDefs = useMemo(function () {
809
920
  var columnDefs = getTableColumns(rowData);
810
- columnDefs = columnDefs.map(function (i) {
811
- var cellConfig = columnCellClass[i.field];
921
+
922
+ // 递归应用 columnCellClass 配置
923
+ var applyCellConfig = function applyCellConfig(col) {
924
+ // 如果有 children,递归处理
925
+ if (col.children && Array.isArray(col.children)) {
926
+ return _objectSpread(_objectSpread({}, col), {}, {
927
+ children: col.children.map(applyCellConfig).filter(function (x) {
928
+ return !x.hideInTable;
929
+ })
930
+ });
931
+ }
932
+
933
+ // 处理普通列
934
+ var cellConfig = columnCellClass[col.field];
812
935
  if (cellConfig) {
813
936
  if (cellConfig.cellClass) {
814
- i.cellClass = cellConfig.cellClass;
937
+ col.cellClass = cellConfig.cellClass;
815
938
  }
816
939
  if (cellConfig.groupName) {
817
- i.groupName = cellConfig.groupName;
940
+ col.groupName = cellConfig.groupName;
818
941
  }
819
942
  if (cellConfig.suppressHeaderFilterButton !== undefined) {
820
- i.suppressHeaderFilterButton = !cellConfig.suppressHeaderFilterButton;
943
+ col.suppressHeaderFilterButton = !cellConfig.suppressHeaderFilterButton;
821
944
  }
822
945
  }
823
- return i;
824
- }).filter(function (x) {
946
+ return col;
947
+ };
948
+ columnDefs = columnDefs.map(applyCellConfig).filter(function (x) {
825
949
  return !x.hideInTable;
826
950
  });
827
951
  var processedColumns = processColumnGroups(columnDefs);
@@ -984,8 +1108,8 @@ function AgGridPlus(props) {
984
1108
  onDragStopped: function onDragStopped(e) {
985
1109
  if (apiRef.current) {
986
1110
  var _apiRef$current7;
987
- var _columnState = (_apiRef$current7 = apiRef.current) === null || _apiRef$current7 === void 0 ? void 0 : _apiRef$current7.getColumnState();
988
- setColumnState(_columnState);
1111
+ var _columnState2 = (_apiRef$current7 = apiRef.current) === null || _apiRef$current7 === void 0 ? void 0 : _apiRef$current7.getColumnState();
1112
+ setColumnState(_columnState2);
989
1113
 
990
1114
  // onColumnStateChanged && onColumnStateChanged(columnState)
991
1115
  }
@@ -4,7 +4,7 @@ import './SchemeSelector.less';
4
4
  export interface SchemeSelectorProps {
5
5
  /** 方案管理器 */
6
6
  schemeManager: UseColumnSchemesReturn;
7
- /** 当前表格的列状态(用于创建/更新方案) */
7
+ /** 当前表格的列配置(用于创建/更新方案) */
8
8
  currentColumnState: any[];
9
9
  /** 样式类名 */
10
10
  className?: string;
@@ -125,7 +125,7 @@ export var SchemeSelector = function SchemeSelector(_ref) {
125
125
  _context3.prev = 6;
126
126
  _context3.next = 9;
127
127
  return saveScheme({
128
- columnState: currentColumnState
128
+ columnConfig: currentColumnState
129
129
  });
130
130
  case 9:
131
131
  message.success('保存成功');
@@ -70,7 +70,7 @@ export function useColumnSchemes(config) {
70
70
  * 加载方案列表
71
71
  */
72
72
  var loadSchemesList = useCallback( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
73
- var loadedSchemes, schemeToLoad, lastSchemeId;
73
+ var loadedSchemes, schemeToLoad, lastSchemeId, _schemeToLoad$columnC;
74
74
  return _regeneratorRuntime().wrap(function _callee$(_context) {
75
75
  while (1) switch (_context.prev = _context.next) {
76
76
  case 0:
@@ -111,6 +111,12 @@ export function useColumnSchemes(config) {
111
111
 
112
112
  // 3. 应用方案
113
113
  if (schemeToLoad) {
114
+ console.log('[useColumnSchemes] 加载方案完成,准备调用 onSchemeChange:', {
115
+ schemeId: schemeToLoad.id,
116
+ schemeName: schemeToLoad.name,
117
+ hasColumnConfig: !!schemeToLoad.columnConfig,
118
+ columnConfigCount: ((_schemeToLoad$columnC = schemeToLoad.columnConfig) === null || _schemeToLoad$columnC === void 0 ? void 0 : _schemeToLoad$columnC.length) || 0
119
+ });
114
120
  setCurrentScheme(schemeToLoad);
115
121
  onSchemeChange === null || onSchemeChange === void 0 || onSchemeChange(schemeToLoad);
116
122
  }
@@ -218,6 +224,7 @@ export function useColumnSchemes(config) {
218
224
  */
219
225
  var saveScheme = useCallback( /*#__PURE__*/function () {
220
226
  var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(updates) {
227
+ var _updates$columnConfig, _updates$columnConfig2, _updatedScheme$column, _updatedScheme$column2, _updatedScheme$column3;
221
228
  var nameValidation, descValidation, updatedScheme, updatedSchemes;
222
229
  return _regeneratorRuntime().wrap(function _callee4$(_context4) {
223
230
  while (1) switch (_context4.prev = _context4.next) {
@@ -229,47 +236,86 @@ export function useColumnSchemes(config) {
229
236
  console.error('[useColumnSchemes] 没有激活的方案');
230
237
  return _context4.abrupt("return");
231
238
  case 3:
239
+ console.log('[useColumnSchemes] saveScheme 被调用:', {
240
+ currentSchemeId: currentScheme.id,
241
+ currentSchemeName: currentScheme.name,
242
+ updates: updates,
243
+ hasColumnConfig: !!(updates !== null && updates !== void 0 && updates.columnConfig),
244
+ columnConfigLength: (updates === null || updates === void 0 || (_updates$columnConfig = updates.columnConfig) === null || _updates$columnConfig === void 0 ? void 0 : _updates$columnConfig.length) || 0,
245
+ columnConfigDetail: updates === null || updates === void 0 || (_updates$columnConfig2 = updates.columnConfig) === null || _updates$columnConfig2 === void 0 ? void 0 : _updates$columnConfig2.map(function (item) {
246
+ return {
247
+ type: item.type,
248
+ headerName: item.headerName,
249
+ field: item.field,
250
+ order: item.order,
251
+ parentId: item.parentId
252
+ };
253
+ })
254
+ });
255
+
256
+ // 验证更新内容
232
257
  if (!(updates !== null && updates !== void 0 && updates.name)) {
233
- _context4.next = 9;
258
+ _context4.next = 10;
234
259
  break;
235
260
  }
236
261
  nameValidation = validateSchemeName(updates.name);
237
262
  if (nameValidation.valid) {
238
- _context4.next = 7;
263
+ _context4.next = 8;
239
264
  break;
240
265
  }
241
266
  throw new Error(nameValidation.error);
242
- case 7:
267
+ case 8:
243
268
  if (!checkDuplicateName(updates.name, schemes, currentScheme.id)) {
244
- _context4.next = 9;
269
+ _context4.next = 10;
245
270
  break;
246
271
  }
247
272
  throw new Error('方案名称已存在');
248
- case 9:
273
+ case 10:
249
274
  if (!(updates !== null && updates !== void 0 && updates.description)) {
250
- _context4.next = 13;
275
+ _context4.next = 14;
251
276
  break;
252
277
  }
253
278
  descValidation = validateSchemeDescription(updates.description);
254
279
  if (descValidation.valid) {
255
- _context4.next = 13;
280
+ _context4.next = 14;
256
281
  break;
257
282
  }
258
283
  throw new Error(descValidation.error);
259
- case 13:
284
+ case 14:
260
285
  updatedScheme = _objectSpread(_objectSpread(_objectSpread({}, currentScheme), updates), {}, {
261
286
  updatedAt: Date.now()
262
287
  });
288
+ console.log('[useColumnSchemes] 准备保存的方案数据:', {
289
+ schemeId: updatedScheme.id,
290
+ schemeName: updatedScheme.name,
291
+ hasColumnConfig: !!updatedScheme.columnConfig,
292
+ columnConfigLength: ((_updatedScheme$column = updatedScheme.columnConfig) === null || _updatedScheme$column === void 0 ? void 0 : _updatedScheme$column.length) || 0,
293
+ columnConfigDetail: (_updatedScheme$column2 = updatedScheme.columnConfig) === null || _updatedScheme$column2 === void 0 ? void 0 : _updatedScheme$column2.map(function (item) {
294
+ return {
295
+ type: item.type,
296
+ headerName: item.headerName,
297
+ field: item.field,
298
+ order: item.order,
299
+ parentId: item.parentId
300
+ };
301
+ })
302
+ });
263
303
  updatedSchemes = schemes.map(function (s) {
264
304
  return s.id === currentScheme.id ? updatedScheme : s;
265
305
  });
266
- _context4.next = 17;
306
+ _context4.next = 19;
267
307
  return saveSchemesToStorage(updatedSchemes);
268
- case 17:
308
+ case 19:
269
309
  setCurrentScheme(updatedScheme);
270
310
  setIsDirty(false);
311
+ console.log('[useColumnSchemes] 方案保存完成,当前 currentScheme:', {
312
+ schemeId: updatedScheme.id,
313
+ schemeName: updatedScheme.name,
314
+ hasColumnConfig: !!updatedScheme.columnConfig,
315
+ columnConfigLength: ((_updatedScheme$column3 = updatedScheme.columnConfig) === null || _updatedScheme$column3 === void 0 ? void 0 : _updatedScheme$column3.length) || 0
316
+ });
271
317
  onSchemeSave === null || onSchemeSave === void 0 || onSchemeSave(updatedScheme);
272
- case 20:
318
+ case 23:
273
319
  case "end":
274
320
  return _context4.stop();
275
321
  }
@@ -284,7 +330,7 @@ export function useColumnSchemes(config) {
284
330
  * 创建新方案
285
331
  */
286
332
  var createScheme = useCallback( /*#__PURE__*/function () {
287
- var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(name, columnState, options) {
333
+ var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(name, columnConfig, options) {
288
334
  var nameValidation, uniqueName, newScheme, updatedSchemes;
289
335
  return _regeneratorRuntime().wrap(function _callee5$(_context5) {
290
336
  while (1) switch (_context5.prev = _context5.next) {
@@ -310,7 +356,7 @@ export function useColumnSchemes(config) {
310
356
  name: uniqueName,
311
357
  createdAt: Date.now(),
312
358
  updatedAt: Date.now(),
313
- columnState: columnState
359
+ columnConfig: columnConfig
314
360
  }, options); // 如果设置为默认方案,取消其他方案的默认标记
315
361
  updatedSchemes = schemes;
316
362
  if (newScheme.isDefault) {