@nokecy/qc-ui 1.0.82 → 1.0.84

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 (85) 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 +252 -121
  4. package/dist/cjs/ag-grid-plus/querySchemes/components/QuerySchemesManager.js +19 -9
  5. package/dist/cjs/ag-grid-plus/querySchemes/hooks/useQuerySchemes.js +25 -3
  6. package/dist/cjs/ag-grid-plus/schemes/components/SchemeSelector.d.ts +1 -1
  7. package/dist/cjs/ag-grid-plus/schemes/components/SchemeSelector.js +1 -1
  8. package/dist/cjs/ag-grid-plus/schemes/hooks/useColumnSchemes.js +60 -14
  9. package/dist/cjs/ag-grid-plus/schemes/storage/localStorageAdapter.js +12 -26
  10. package/dist/cjs/ag-grid-plus/schemes/types.d.ts +8 -5
  11. package/dist/cjs/ag-grid-plus/schemes/utils/validator.js +14 -18
  12. package/dist/cjs/ag-grid-plus/setting/ColumnConfigForm.d.ts +16 -0
  13. package/dist/cjs/ag-grid-plus/setting/ColumnConfigForm.js +348 -0
  14. package/dist/cjs/ag-grid-plus/setting/ColumnConfigTable.d.ts +20 -0
  15. package/dist/cjs/ag-grid-plus/setting/ColumnConfigTable.js +940 -0
  16. package/dist/cjs/ag-grid-plus/setting/ColumnSetting.js +208 -248
  17. package/dist/cjs/ag-grid-plus/setting/MoveNodeModal.d.ts +15 -0
  18. package/dist/cjs/ag-grid-plus/setting/MoveNodeModal.js +160 -0
  19. package/dist/cjs/ag-grid-plus/setting/NameColumnRenderer.d.ts +18 -0
  20. package/dist/cjs/ag-grid-plus/setting/NameColumnRenderer.js +94 -0
  21. package/dist/cjs/ag-grid-plus/setting/columnGroupTypes.d.ts +59 -0
  22. package/dist/cjs/ag-grid-plus/setting/columnGroupTypes.js +5 -0
  23. package/dist/cjs/ag-grid-plus/setting/columnGroupUtils.d.ts +75 -0
  24. package/dist/cjs/ag-grid-plus/setting/columnGroupUtils.js +281 -0
  25. package/dist/cjs/ag-grid-plus/setting/index.d.ts +2 -1
  26. package/dist/cjs/ag-grid-plus/setting/index.js +4 -2
  27. package/dist/cjs/ag-grid-plus/storage/SchemeSyncManager.d.ts +2 -1
  28. package/dist/cjs/ag-grid-plus/storage/SchemeSyncManager.js +11 -8
  29. package/dist/cjs/ag-grid-plus/types.d.ts +2 -0
  30. package/dist/cjs/array-table/index.js +30 -118
  31. package/dist/cjs/draggableModal/index.d.ts +1 -1
  32. package/dist/cjs/draggableModal/index.js +253 -25
  33. package/dist/cjs/draggableModal/style.less +185 -12
  34. package/dist/esm/ag-grid-plus/_utils/processColumnGroups.d.ts +9 -0
  35. package/dist/esm/ag-grid-plus/_utils/processColumnGroups.js +44 -0
  36. package/dist/esm/ag-grid-plus/ag-gridPlus.js +252 -121
  37. package/dist/esm/ag-grid-plus/querySchemes/components/QuerySchemesManager.js +19 -10
  38. package/dist/esm/ag-grid-plus/querySchemes/hooks/useQuerySchemes.js +25 -3
  39. package/dist/esm/ag-grid-plus/schemes/components/SchemeSelector.d.ts +1 -1
  40. package/dist/esm/ag-grid-plus/schemes/components/SchemeSelector.js +1 -1
  41. package/dist/esm/ag-grid-plus/schemes/hooks/useColumnSchemes.js +60 -14
  42. package/dist/esm/ag-grid-plus/schemes/storage/localStorageAdapter.js +13 -27
  43. package/dist/esm/ag-grid-plus/schemes/types.d.ts +8 -5
  44. package/dist/esm/ag-grid-plus/schemes/utils/validator.js +14 -18
  45. package/dist/esm/ag-grid-plus/setting/ColumnConfigForm.d.ts +16 -0
  46. package/dist/esm/ag-grid-plus/setting/ColumnConfigForm.js +338 -0
  47. package/dist/esm/ag-grid-plus/setting/ColumnConfigTable.d.ts +20 -0
  48. package/dist/esm/ag-grid-plus/setting/ColumnConfigTable.js +932 -0
  49. package/dist/esm/ag-grid-plus/setting/ColumnSetting.js +207 -247
  50. package/dist/esm/ag-grid-plus/setting/MoveNodeModal.d.ts +15 -0
  51. package/dist/esm/ag-grid-plus/setting/MoveNodeModal.js +150 -0
  52. package/dist/esm/ag-grid-plus/setting/NameColumnRenderer.d.ts +18 -0
  53. package/dist/esm/ag-grid-plus/setting/NameColumnRenderer.js +87 -0
  54. package/dist/esm/ag-grid-plus/setting/columnGroupTypes.d.ts +59 -0
  55. package/dist/esm/ag-grid-plus/setting/columnGroupTypes.js +1 -0
  56. package/dist/esm/ag-grid-plus/setting/columnGroupUtils.d.ts +75 -0
  57. package/dist/esm/ag-grid-plus/setting/columnGroupUtils.js +265 -0
  58. package/dist/esm/ag-grid-plus/setting/index.d.ts +2 -1
  59. package/dist/esm/ag-grid-plus/setting/index.js +4 -2
  60. package/dist/esm/ag-grid-plus/storage/SchemeSyncManager.d.ts +2 -1
  61. package/dist/esm/ag-grid-plus/storage/SchemeSyncManager.js +11 -8
  62. package/dist/esm/ag-grid-plus/types.d.ts +2 -0
  63. package/dist/esm/array-table/index.js +31 -119
  64. package/dist/esm/draggableModal/index.d.ts +1 -1
  65. package/dist/esm/draggableModal/index.js +254 -27
  66. package/dist/esm/draggableModal/style.less +185 -12
  67. package/dist/umd/qc-ui.min.css +1 -1
  68. package/dist/umd/qc-ui.min.js +1 -1
  69. package/package.json +1 -1
  70. package/dist/cjs/ag-grid-plus/gridManager/index.d.ts +0 -7
  71. package/dist/cjs/ag-grid-plus/gridManager/index.js +0 -40
  72. package/dist/cjs/ag-grid-plus/querySchemes/hooks/useQuerySchemes.refactored.d.ts +0 -7
  73. package/dist/cjs/ag-grid-plus/querySchemes/hooks/useQuerySchemes.refactored.js +0 -32
  74. package/dist/cjs/ag-grid-plus/schemes/hooks/useColumnSchemes.refactored.d.ts +0 -7
  75. package/dist/cjs/ag-grid-plus/schemes/hooks/useColumnSchemes.refactored.js +0 -32
  76. package/dist/cjs/ag-grid-plus/setting/diySetting/index.d.ts +0 -10
  77. package/dist/cjs/ag-grid-plus/setting/diySetting/index.js +0 -268
  78. package/dist/esm/ag-grid-plus/gridManager/index.d.ts +0 -7
  79. package/dist/esm/ag-grid-plus/gridManager/index.js +0 -35
  80. package/dist/esm/ag-grid-plus/querySchemes/hooks/useQuerySchemes.refactored.d.ts +0 -7
  81. package/dist/esm/ag-grid-plus/querySchemes/hooks/useQuerySchemes.refactored.js +0 -27
  82. package/dist/esm/ag-grid-plus/schemes/hooks/useColumnSchemes.refactored.d.ts +0 -7
  83. package/dist/esm/ag-grid-plus/schemes/hooks/useColumnSchemes.refactored.js +0 -27
  84. package/dist/esm/ag-grid-plus/setting/diySetting/index.d.ts +0 -10
  85. 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,121 @@ 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;
253
244
 
254
- // 当 gridApi 就绪且有当前方案时,应用列方案
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]);
278
+
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
+ // 等待 columnDefs 应用完成后再设置过滤器
335
+ // 原因: setGridOption("columnDefs") 会触发 Grid 重新渲染,可能重置内部状态
336
+ // 必须在下一个渲染周期后应用 filterModel,否则会被覆盖
337
+ if (currentScheme.filterModel) {
338
+ requestAnimationFrame(function () {
339
+ if (apiRef.current) {
340
+ console.log('[AgGridPlus] 应用过滤器状态:', currentScheme.filterModel);
341
+ apiRef.current.setFilterModel(currentScheme.filterModel);
342
+ }
343
+ });
344
+ }
345
+ }
346
+
347
+ // 2. 【重要修改】使用 columnConfig 时,不应用 columnState
348
+ // 原因:columnConfig 已经包含了完整的列配置(宽度、隐藏、顺序、分组等)
349
+ // 如果再应用 columnState,会导致分组子列被视为独立列,破坏分组结构
350
+ console.log('[AgGridPlus] useEffect: 使用 columnConfig,跳过 columnState 应用');
351
+ }
264
352
  }, 10);
265
353
  return function () {
266
354
  return clearTimeout(timer);
267
355
  };
268
- }, [columnSchemeManager === null || columnSchemeManager === void 0 ? void 0 : columnSchemeManager.currentScheme]);
356
+ }, [apiRef.current, columnSchemeManager === null || columnSchemeManager === void 0 ? void 0 : columnSchemeManager.currentScheme]);
269
357
  useEffect(function () {
270
358
  setRowData(dataSource || propRowData || []);
271
359
  }, [dataSource, propRowData]);
@@ -301,96 +389,116 @@ function AgGridPlus(props) {
301
389
  return colDef.customCellRenderer(params);
302
390
  };
303
391
 
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;
392
+ // 辅助函数: 处理单个列配置
393
+ var processColumnConfig = function processColumnConfig(col, data) {
394
+ var dataType = getDataType(data, col.field || '', col.valueEnum);
395
+ if (col.valueEnum && Array.isArray(col.valueEnum)) {
396
+ var _defaultItems$0$value, _defaultItems$;
397
+ // 统计默认值
398
+ var valueEnum = col.valueEnum; // 保存引用以便TypeScript理解
399
+ var defaultItems = valueEnum.filter(function (item) {
400
+ return item.default;
401
+ });
402
+ var isMultiple = defaultItems.length > 1;
403
+ var defaultValue = isMultiple ? defaultItems.map(function (item) {
404
+ return item.value;
405
+ }) : (_defaultItems$0$value = (_defaultItems$ = defaultItems[0]) === null || _defaultItems$ === void 0 ? void 0 : _defaultItems$.value) !== null && _defaultItems$0$value !== void 0 ? _defaultItems$0$value : undefined;
406
+ var valueFormatter = function valueFormatter(params) {
407
+ var match = valueEnum.find(function (item) {
408
+ return item.value == params.value;
319
409
  });
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) {
410
+ return match ? match.label : params.value;
411
+ };
412
+ return _objectSpread(_objectSpread(_objectSpread({}, dataType), col), {}, {
413
+ cellRenderer: function cellRenderer(params) {
325
414
  var match = valueEnum.find(function (item) {
326
415
  return item.value == params.value;
327
416
  });
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
- },
417
+ if (match) {
418
+ var color = match.color || '#ffffff';
419
+ return /*#__PURE__*/React.createElement("span", {
375
420
  style: {
376
- display: 'flex',
377
- justifyContent: 'center',
378
- alignItems: 'center'
421
+ color: color,
422
+ backgroundColor: 'transparent',
423
+ fontWeight: 500
379
424
  }
380
- }, value);
425
+ }, match.label);
381
426
  }
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), {}, {
427
+ return params.value;
428
+ },
429
+ filterParams: _objectSpread(_objectSpread({}, col.filterParams || {}), {}, {
430
+ valueFormatter: valueFormatter
431
+ }),
432
+ searchComponent: Select,
433
+ searchComponentProps: {
434
+ options: col.valueEnum.map(function (item) {
435
+ return {
436
+ label: item.label,
437
+ value: item.value
438
+ };
439
+ }),
440
+ mode: isMultiple ? "multiple" : undefined,
441
+ defaultValue: defaultValue
442
+ }
443
+ });
444
+ }
445
+ if (col.type || typeof col.cellRenderer == "string") {
446
+ return _objectSpread({}, col);
447
+ }
448
+ //@ts-ignore
449
+ if (col !== null && col !== void 0 && col.ellipsis) {
450
+ return _objectSpread(_objectSpread({}, col), {}, {
451
+ cellRenderer: function cellRenderer(_ref) {
452
+ var value = _ref.value;
453
+ return /*#__PURE__*/React.createElement(Text, {
454
+ ellipsis: {
455
+ tooltip: value
456
+ },
457
+ style: {
458
+ display: 'flex',
459
+ justifyContent: 'center',
460
+ alignItems: 'center'
461
+ }
462
+ }, value);
463
+ }
464
+ });
465
+ }
466
+ if (col.cellRenderer) {
467
+ return _objectSpread(_objectSpread({}, col), {}, {
391
468
  customCellRenderer: col.cellRenderer,
392
469
  cellRenderer: cellRenderer
393
470
  });
471
+ }
472
+ return _objectSpread(_objectSpread(_objectSpread({}, dataType), col), {}, {
473
+ customCellRenderer: col.cellRenderer,
474
+ cellRenderer: cellRenderer
475
+ });
476
+ };
477
+
478
+ // 获取表格列定义
479
+ var getTableColumns = function getTableColumns(rowDataList) {
480
+ var data = rowDataList.length > 0 ? rowDataList[0] : {};
481
+ var columnProps = React.Children.map(children, function (child, index) {
482
+ return _objectSpread({}, child.props);
483
+ });
484
+ var columnDefs = !columnProps ? props.columnDefs ? props.columnDefs : [] : columnProps;
485
+
486
+ // 递归处理列配置(包括分组的 children)
487
+ var processColumnDefRecursively = function processColumnDefRecursively(col) {
488
+ // 如果有 children(分组列),递归处理每个子列
489
+ if (col.children && Array.isArray(col.children)) {
490
+ return _objectSpread(_objectSpread({}, col), {}, {
491
+ children: col.children.map(function (child) {
492
+ return processColumnDefRecursively(child);
493
+ })
494
+ });
495
+ }
496
+
497
+ // 处理普通列
498
+ return processColumnConfig(col, data);
499
+ };
500
+ columnDefs = columnDefs.map(function (col) {
501
+ return processColumnDefRecursively(col);
394
502
  });
395
503
  extensibleColumns && gridKey && extensibleColumns[gridKey] && extensibleColumns[gridKey].map(function (column) {
396
504
  columnDefs.push({
@@ -465,7 +573,14 @@ function AgGridPlus(props) {
465
573
  };
466
574
  }, [propsRowSelection, enableClickSelection]);
467
575
  var onGridReady = useCallback(function (params) {
468
- var _apiRef$current3;
576
+ var _columnSchemeManager$3, _columnSchemeManager$4, _columnSchemeManager$5, _apiRef$current3;
577
+ console.log('[AgGridPlus] onGridReady 被调用:', {
578
+ hasColumnSchemeManager: !!columnSchemeManager,
579
+ hasCurrentScheme: !!(columnSchemeManager !== null && columnSchemeManager !== void 0 && columnSchemeManager.currentScheme),
580
+ currentSchemeId: columnSchemeManager === null || columnSchemeManager === void 0 || (_columnSchemeManager$3 = columnSchemeManager.currentScheme) === null || _columnSchemeManager$3 === void 0 ? void 0 : _columnSchemeManager$3.id,
581
+ currentSchemeName: columnSchemeManager === null || columnSchemeManager === void 0 || (_columnSchemeManager$4 = columnSchemeManager.currentScheme) === null || _columnSchemeManager$4 === void 0 ? void 0 : _columnSchemeManager$4.name,
582
+ hasColumnConfig: !!(columnSchemeManager !== null && columnSchemeManager !== void 0 && (_columnSchemeManager$5 = columnSchemeManager.currentScheme) !== null && _columnSchemeManager$5 !== void 0 && _columnSchemeManager$5.columnConfig)
583
+ });
469
584
  apiRef.current = params.api;
470
585
  onReady && onReady(params);
471
586
  ///@ts-ignore
@@ -473,7 +588,10 @@ function AgGridPlus(props) {
473
588
  setColumnState((_apiRef$current3 = apiRef.current) === null || _apiRef$current3 === void 0 ? void 0 : _apiRef$current3.getColumnState());
474
589
  sortChanged(params.api);
475
590
  setReady(true);
476
- }, [dataSource]);
591
+
592
+ // 注意: 方案应用已由 useEffect 处理,无需在这里重复应用
593
+ // useEffect 会在 apiRef 和 currentScheme 都准备好时自动应用方案
594
+ }, [dataSource, columnSchemeManager]);
477
595
  var onRequest = useCallback(function (queryFilter) {
478
596
  if (!requestRef.current) return;
479
597
  setLoading(true);
@@ -807,21 +925,34 @@ function AgGridPlus(props) {
807
925
  };
808
926
  var colDefs = useMemo(function () {
809
927
  var columnDefs = getTableColumns(rowData);
810
- columnDefs = columnDefs.map(function (i) {
811
- var cellConfig = columnCellClass[i.field];
928
+
929
+ // 递归应用 columnCellClass 配置
930
+ var applyCellConfig = function applyCellConfig(col) {
931
+ // 如果有 children,递归处理
932
+ if (col.children && Array.isArray(col.children)) {
933
+ return _objectSpread(_objectSpread({}, col), {}, {
934
+ children: col.children.map(applyCellConfig).filter(function (x) {
935
+ return !x.hideInTable;
936
+ })
937
+ });
938
+ }
939
+
940
+ // 处理普通列
941
+ var cellConfig = columnCellClass[col.field];
812
942
  if (cellConfig) {
813
943
  if (cellConfig.cellClass) {
814
- i.cellClass = cellConfig.cellClass;
944
+ col.cellClass = cellConfig.cellClass;
815
945
  }
816
946
  if (cellConfig.groupName) {
817
- i.groupName = cellConfig.groupName;
947
+ col.groupName = cellConfig.groupName;
818
948
  }
819
949
  if (cellConfig.suppressHeaderFilterButton !== undefined) {
820
- i.suppressHeaderFilterButton = !cellConfig.suppressHeaderFilterButton;
950
+ col.suppressHeaderFilterButton = !cellConfig.suppressHeaderFilterButton;
821
951
  }
822
952
  }
823
- return i;
824
- }).filter(function (x) {
953
+ return col;
954
+ };
955
+ columnDefs = columnDefs.map(applyCellConfig).filter(function (x) {
825
956
  return !x.hideInTable;
826
957
  });
827
958
  var processedColumns = processColumnGroups(columnDefs);
@@ -984,8 +1115,8 @@ function AgGridPlus(props) {
984
1115
  onDragStopped: function onDragStopped(e) {
985
1116
  if (apiRef.current) {
986
1117
  var _apiRef$current7;
987
- var _columnState = (_apiRef$current7 = apiRef.current) === null || _apiRef$current7 === void 0 ? void 0 : _apiRef$current7.getColumnState();
988
- setColumnState(_columnState);
1118
+ var _columnState2 = (_apiRef$current7 = apiRef.current) === null || _apiRef$current7 === void 0 ? void 0 : _apiRef$current7.getColumnState();
1119
+ setColumnState(_columnState2);
989
1120
 
990
1121
  // onColumnStateChanged && onColumnStateChanged(columnState)
991
1122
  }
@@ -13,7 +13,8 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
13
13
  function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
14
14
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
15
15
  import React, { useState, useCallback, useMemo } from 'react';
16
- import { Modal, Tabs, Button, Input, Space, List, message, Popconfirm, Tag, Tooltip } from 'antd';
16
+ import { Tabs, Button, Input, Space, List, message, Popconfirm, Tag, Tooltip } from 'antd';
17
+ import DraggableModal from "../../../draggableModal";
17
18
  import { EditOutlined, DeleteOutlined, StarOutlined, StarFilled, HolderOutlined } from '@ant-design/icons';
18
19
  import { DndProvider, useDrag, useDrop } from 'react-dnd';
19
20
  import { HTML5Backend } from 'react-dnd-html5-backend';
@@ -194,7 +195,7 @@ export var QuerySchemesManager = function QuerySchemesManager(_ref2) {
194
195
  case 0:
195
196
  _context.prev = 0;
196
197
  if (!currentScheme) {
197
- _context.next = 4;
198
+ _context.next = 7;
198
199
  break;
199
200
  }
200
201
  _context.next = 4;
@@ -202,24 +203,32 @@ export var QuerySchemesManager = function QuerySchemesManager(_ref2) {
202
203
  itemsOrder: editingOrder
203
204
  });
204
205
  case 4:
206
+ message.success('已应用新顺序');
207
+ _context.next = 10;
208
+ break;
209
+ case 7:
210
+ _context.next = 9;
211
+ return createScheme('默认方案', editingOrder);
212
+ case 9:
213
+ message.success('已自动创建并应用默认方案');
214
+ case 10:
205
215
  // 应用顺序到表单
206
216
  onOrderChange(editingOrder);
207
- message.success('已应用新顺序');
208
217
 
209
218
  // 关闭弹窗,让用户看到效果
210
219
  onClose();
211
- _context.next = 12;
220
+ _context.next = 17;
212
221
  break;
213
- case 9:
214
- _context.prev = 9;
222
+ case 14:
223
+ _context.prev = 14;
215
224
  _context.t0 = _context["catch"](0);
216
225
  message.error(_context.t0.message || '应用失败');
217
- case 12:
226
+ case 17:
218
227
  case "end":
219
228
  return _context.stop();
220
229
  }
221
- }, _callee, null, [[0, 9]]);
222
- })), [editingOrder, onOrderChange, currentScheme, saveScheme, onClose]);
230
+ }, _callee, null, [[0, 14]]);
231
+ })), [editingOrder, onOrderChange, currentScheme, saveScheme, createScheme, onClose]);
223
232
 
224
233
  /**
225
234
  * 保存为新方案
@@ -437,7 +446,7 @@ export var QuerySchemesManager = function QuerySchemesManager(_ref2) {
437
446
  return _ref9.apply(this, arguments);
438
447
  };
439
448
  }(), [loadScheme, schemes, onOrderChange]);
440
- return /*#__PURE__*/React.createElement(Modal, {
449
+ return /*#__PURE__*/React.createElement(DraggableModal, {
441
450
  title: "\u67E5\u8BE2\u65B9\u6848\u8BBE\u7F6E",
442
451
  open: visible,
443
452
  onCancel: onClose,
@@ -324,18 +324,40 @@ export function useQuerySchemes(config) {
324
324
  _context5.next = 12;
325
325
  return saveSchemesToStorage(updatedSchemes);
326
326
  case 12:
327
+ // 自动激活新创建的方案
328
+ setCurrentScheme(newScheme);
329
+ setIsDirty(false);
330
+
331
+ // 保存当前方案ID,用于刷新后恢复
332
+ if (!storageAdapter.saveCurrentSchemeId) {
333
+ _context5.next = 23;
334
+ break;
335
+ }
336
+ _context5.prev = 15;
337
+ _context5.next = 18;
338
+ return storageAdapter.saveCurrentSchemeId(gridId, newScheme.id);
339
+ case 18:
340
+ _context5.next = 23;
341
+ break;
342
+ case 20:
343
+ _context5.prev = 20;
344
+ _context5.t0 = _context5["catch"](15);
345
+ console.error('[useQuerySchemes] 保存当前方案ID失败:', _context5.t0);
346
+ case 23:
347
+ // 触发方案变更回调
348
+ onSchemeChange === null || onSchemeChange === void 0 || onSchemeChange(newScheme);
327
349
  onSchemeSave === null || onSchemeSave === void 0 || onSchemeSave(newScheme);
328
350
  return _context5.abrupt("return", newScheme);
329
- case 14:
351
+ case 26:
330
352
  case "end":
331
353
  return _context5.stop();
332
354
  }
333
- }, _callee5);
355
+ }, _callee5, null, [[15, 20]]);
334
356
  }));
335
357
  return function (_x4, _x5, _x6) {
336
358
  return _ref5.apply(this, arguments);
337
359
  };
338
- }(), [schemes, saveSchemesToStorage, onSchemeSave]);
360
+ }(), [schemes, gridId, storageAdapter, saveSchemesToStorage, onSchemeChange, onSchemeSave]);
339
361
 
340
362
  /**
341
363
  * 更新方案信息(不影响 itemsOrder)
@@ -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('保存成功');