@nokecy/qc-ui 1.0.73 → 1.0.75

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.
@@ -94,6 +94,7 @@ function AgGridPlus(props) {
94
94
  resetAll = _useGridPlusColumnSta.resetAll;
95
95
  var gridRef = (0, _react.useRef)();
96
96
  var apiRef = (0, _react.useRef)();
97
+ var allColDefsRef = (0, _react.useRef)([]);
97
98
  var _useState = (0, _react.useState)(false),
98
99
  _useState2 = _slicedToArray(_useState, 2),
99
100
  ready = _useState2[0],
@@ -116,31 +117,27 @@ function AgGridPlus(props) {
116
117
  setRowData = _useState10[1];
117
118
  var _useState11 = (0, _react.useState)({}),
118
119
  _useState12 = _slicedToArray(_useState11, 2),
119
- selectRow = _useState12[0],
120
- setSelectRow = _useState12[1];
121
- var _useState13 = (0, _react.useState)({}),
120
+ queryFilter = _useState12[0],
121
+ setQueryFilter = _useState12[1];
122
+ var _useState13 = (0, _react.useState)(),
122
123
  _useState14 = _slicedToArray(_useState13, 2),
123
- queryFilter = _useState14[0],
124
- setQueryFilter = _useState14[1];
125
- var _useState15 = (0, _react.useState)(),
126
- _useState16 = _slicedToArray(_useState15, 2),
127
- sortColumn = _useState16[0],
128
- setSortColumn = _useState16[1];
124
+ sortColumn = _useState14[0],
125
+ setSortColumn = _useState14[1];
129
126
  // 初始化分页参数,支持外部传入的pageSize
130
- var _useState17 = (0, _react.useState)({
127
+ var _useState15 = (0, _react.useState)({
131
128
  pageSize: props.pageSize !== undefined ? props.pageSize : props.hidePagination ? 10000 : 200,
132
129
  current: 1,
133
130
  total: dataSource ? dataSource.length : 0
134
131
  }),
135
- _useState18 = _slicedToArray(_useState17, 2),
136
- pagination = _useState18[0],
137
- setPagination = _useState18[1];
132
+ _useState16 = _slicedToArray(_useState15, 2),
133
+ pagination = _useState16[0],
134
+ setPagination = _useState16[1];
138
135
 
139
136
  // ============ 查询方案管理 ============
140
- var _useState19 = (0, _react.useState)([]),
141
- _useState20 = _slicedToArray(_useState19, 2),
142
- queryItemsOrder = _useState20[0],
143
- setQueryItemsOrder = _useState20[1];
137
+ var _useState17 = (0, _react.useState)([]),
138
+ _useState18 = _slicedToArray(_useState17, 2),
139
+ queryItemsOrder = _useState18[0],
140
+ setQueryItemsOrder = _useState18[1];
144
141
 
145
142
  // 尝试获取全局适配器(如果已初始化)
146
143
  var globalQueryAdapter = (0, _globalSyncManager.isGlobalSyncInitialized)() ? (0, _globalSyncManager.useGlobalQueryAdapter)() : undefined;
@@ -411,7 +408,9 @@ function AgGridPlus(props) {
411
408
 
412
409
  // 计算所有列定义(包括隐藏的列)
413
410
  var allColDefs = (0, _react.useMemo)(function () {
414
- return getTableColumns(rowData);
411
+ var cols = getTableColumns(rowData);
412
+ allColDefsRef.current = cols; // 同步更新 ref
413
+ return cols;
415
414
  }, [_react.default.Children.count(children), props.columnDefs, extensibleColumns, rowData, gridKey]);
416
415
 
417
416
  // 稳定化 gridParams 和 sortColumn 的引用
@@ -421,6 +420,9 @@ function AgGridPlus(props) {
421
420
  var stableSortColumn = (0, _react.useMemo)(function () {
422
421
  return sortColumn;
423
422
  }, [JSON.stringify(sortColumn)]);
423
+ var stableQueryFilter = (0, _react.useMemo)(function () {
424
+ return queryFilter;
425
+ }, [JSON.stringify(queryFilter)]);
424
426
  var onGridReady = (0, _react.useCallback)(function (params) {
425
427
  var _apiRef$current3;
426
428
  apiRef.current = params.api;
@@ -432,14 +434,14 @@ function AgGridPlus(props) {
432
434
  setReady(true);
433
435
  }, [dataSource]);
434
436
  var onRequest = (0, _react.useCallback)(function (queryFilter) {
435
- if (!request) return;
437
+ if (!requestRef.current) return;
436
438
  setLoading(true);
437
439
  _logger.logger.debug('开始请求数据', {
438
440
  queryFilter: queryFilter,
439
441
  pagination: pagination
440
442
  });
441
443
  try {
442
- var filter = (0, _utils.convertFilterModel)(queryFilter, allColDefs);
444
+ var filter = (0, _utils.convertFilterModel)(queryFilter, allColDefsRef.current);
443
445
  var params = _objectSpread(_objectSpread({
444
446
  filter: filter
445
447
  }, stableGridParams), {}, {
@@ -448,7 +450,7 @@ function AgGridPlus(props) {
448
450
  maxResultCount: pagination.pageSize,
449
451
  sorter: getSort(stableSortColumn)
450
452
  });
451
- request(params, undefined, queryFilter).then(function (response) {
453
+ requestRef.current(params, undefined, queryFilter).then(function (response) {
452
454
  var _apiRef$current4;
453
455
  // 验证响应数据格式
454
456
  if (!response || _typeof(response) !== 'object') {
@@ -493,8 +495,8 @@ function AgGridPlus(props) {
493
495
  _antd.message.error(gridError.getUserMessage());
494
496
 
495
497
  // 如果用户提供了错误处理回调,调用它
496
- if (props.onError) {
497
- props.onError(gridError);
498
+ if (onErrorRef.current) {
499
+ onErrorRef.current(gridError);
498
500
  }
499
501
  });
500
502
  } catch (error) {
@@ -503,22 +505,57 @@ function AgGridPlus(props) {
503
505
  // 处理同步错误(如 convertFilterModel 抛出的错误)
504
506
  var gridError = new _errors.GridPlusError(error instanceof Error ? error.message : '数据处理失败', _errors.ErrorType.DATA_FORMAT_ERROR, _errors.ErrorSeverity.HIGH, {
505
507
  queryFilter: queryFilter,
506
- allColDefs: allColDefs
508
+ allColDefs: allColDefsRef.current
507
509
  }, error instanceof Error ? error : undefined);
508
510
  _logger.logger.error('数据请求处理失败', gridError.getDetails());
509
511
  _antd.message.error(gridError.getUserMessage());
510
- if (props.onError) {
511
- props.onError(gridError);
512
+ if (onErrorRef.current) {
513
+ onErrorRef.current(gridError);
512
514
  }
513
515
  }
514
- }, [request, stableGridParams, stableSortColumn, pagination.pageSize, pagination.current, allColDefs, props.onError]);
516
+ }, [stableGridParams, stableSortColumn, pagination.pageSize, pagination.current]);
515
517
 
516
- // 请求数据 - 当 ready 状态变化或 request 函数变化时触发
518
+ // 使用 ref 追踪依赖项变化
519
+ var depsRef = (0, _react.useRef)({
520
+ ready: ready,
521
+ stableQueryFilter: stableQueryFilter,
522
+ paginationCurrent: pagination.current,
523
+ paginationPageSize: pagination.pageSize,
524
+ stableSortColumn: stableSortColumn
525
+ });
526
+
527
+ // 请求数据 - 当 ready 状态变化或真正需要请求的参数变化时触发
517
528
  (0, _react.useEffect)(function () {
518
- if (ready && request) {
519
- onRequest(queryFilter);
529
+ var prevDeps = depsRef.current;
530
+ var changedDeps = [];
531
+ if (prevDeps.ready !== ready) changedDeps.push('ready');
532
+ if (prevDeps.stableQueryFilter !== stableQueryFilter) changedDeps.push('stableQueryFilter');
533
+ if (prevDeps.paginationCurrent !== pagination.current) changedDeps.push('pagination.current');
534
+ if (prevDeps.paginationPageSize !== pagination.pageSize) changedDeps.push('pagination.pageSize');
535
+ if (prevDeps.stableSortColumn !== stableSortColumn) changedDeps.push('stableSortColumn');
536
+ if (changedDeps.length > 0) {
537
+ console.log('🔍 useEffect 依赖项变化:', changedDeps.join(', '));
520
538
  }
521
- }, [ready, request, queryFilter, onRequest]);
539
+ depsRef.current = {
540
+ ready: ready,
541
+ stableQueryFilter: stableQueryFilter,
542
+ paginationCurrent: pagination.current,
543
+ paginationPageSize: pagination.pageSize,
544
+ stableSortColumn: stableSortColumn
545
+ };
546
+ if (ready && requestRef.current) {
547
+ _logger.logger.debug('useEffect 触发数据请求', {
548
+ ready: ready,
549
+ hasRequest: !!requestRef.current,
550
+ queryFilter: stableQueryFilter,
551
+ 'pagination.current': pagination.current,
552
+ 'pagination.pageSize': pagination.pageSize,
553
+ stableSortColumn: stableSortColumn,
554
+ changedDeps: changedDeps
555
+ });
556
+ onRequest(stableQueryFilter);
557
+ }
558
+ }, [ready, stableQueryFilter, pagination.current, pagination.pageSize, stableSortColumn]);
522
559
  var handelgridPlusColumnState = function handelgridPlusColumnState(columnState) {
523
560
  var cellMap = {};
524
561
  if ((0, _isArray2.default)(columnState)) {
@@ -544,10 +581,10 @@ function AgGridPlus(props) {
544
581
  setSortColumn(sortedColumn);
545
582
  };
546
583
  var onRefresh = (0, _react.useCallback)(function () {
547
- if (request) {
548
- onRequest(queryFilter);
584
+ if (requestRef.current) {
585
+ onRequest(stableQueryFilter);
549
586
  }
550
- }, [request, onRequest, queryFilter]);
587
+ }, [onRequest, stableQueryFilter]);
551
588
  (0, _react.useEffect)(function () {
552
589
  gridRef.current = {
553
590
  onRefresh: onRefresh
@@ -558,11 +595,21 @@ function AgGridPlus(props) {
558
595
  props.onSelectionChanged(e);
559
596
  }
560
597
  }, [props.onSelectionChanged]);
561
- var onRowSelected = (0, _react.useCallback)(function (e) {
562
- setSelectRow(e.data);
563
598
 
599
+ // 使用 ref 保存最新的回调,避免不必要的 useCallback 重新创建
600
+ var onSelectedRowsChangeRef = (0, _react.useRef)(onSelectedRowsChange);
601
+ var onRowSelectedCallbackRef = (0, _react.useRef)(props.onRowSelected);
602
+ var onErrorRef = (0, _react.useRef)(props.onError);
603
+ var requestRef = (0, _react.useRef)(request);
604
+ (0, _react.useEffect)(function () {
605
+ onSelectedRowsChangeRef.current = onSelectedRowsChange;
606
+ onRowSelectedCallbackRef.current = props.onRowSelected;
607
+ onErrorRef.current = props.onError;
608
+ requestRef.current = request;
609
+ });
610
+ var onRowSelected = (0, _react.useCallback)(function (e) {
564
611
  // 处理选中行数据回调
565
- if (onSelectedRowsChange && apiRef.current) {
612
+ if (onSelectedRowsChangeRef.current && apiRef.current) {
566
613
  // 获取所有选中的行
567
614
  var allSelectedRows = apiRef.current.getSelectedRows();
568
615
 
@@ -596,12 +643,12 @@ function AgGridPlus(props) {
596
643
  return selectedRowId && displayedRowId && selectedRowId === displayedRowId;
597
644
  });
598
645
  });
599
- onSelectedRowsChange(visibleSelectedRows);
646
+ onSelectedRowsChangeRef.current(visibleSelectedRows);
600
647
  }
601
- if (props.onRowSelected) {
602
- props.onRowSelected(e);
648
+ if (onRowSelectedCallbackRef.current) {
649
+ onRowSelectedCallbackRef.current(e);
603
650
  }
604
- }, [onSelectedRowsChange, props.getRowId, props.onRowSelected]);
651
+ }, [props.getRowId]);
605
652
  var onColumnStateChanged = function onColumnStateChanged(columnState) {
606
653
  if (gridKey) {
607
654
  onSaveColumnState && onSaveColumnState(gridKey, columnState);
@@ -769,7 +816,7 @@ function AgGridPlus(props) {
769
816
  var rowDataMemo = (0, _react.useMemo)(function () {
770
817
  return props.treeData ? (0, _utils.flatten)((0, _utils.toTree)(rowData, treeKeyName !== null && treeKeyName !== void 0 ? treeKeyName : "id", treeParentName !== null && treeParentName !== void 0 ? treeParentName : "parentId"), treeKeyName !== null && treeKeyName !== void 0 ? treeKeyName : "id") : rowData;
771
818
  }, [rowData, props.treeData, treeKeyName, treeParentName]);
772
- var actionDom = toolBarRender && toolBarRender(apiRef.current, (0, _utils.convertFilterModel)(queryFilter, allColDefs), queryFilter, {
819
+ var actionDom = toolBarRender && toolBarRender(apiRef.current, (0, _utils.convertFilterModel)(queryFilter, allColDefsRef.current), queryFilter, {
773
820
  current: pagination.current,
774
821
  skipCount: pagination.current == 1 ? 0 : (pagination.current - 1) * pagination.pageSize,
775
822
  maxResultCount: pagination.pageSize
@@ -884,9 +931,11 @@ function AgGridPlus(props) {
884
931
  maintainColumnOrder: true,
885
932
  rowData: rowDataMemo,
886
933
  onGridReady: onGridReady,
887
- defaultColDef: defaultColDef
888
- // getRowId={props.getRowId || ((params) => params.data?.id || params.data?._id)}
889
- ,
934
+ defaultColDef: defaultColDef,
935
+ getRowId: props.getRowId || function (params) {
936
+ var _params$data3, _params$data4;
937
+ return ((_params$data3 = params.data) === null || _params$data3 === void 0 ? void 0 : _params$data3.id) || ((_params$data4 = params.data) === null || _params$data4 === void 0 ? void 0 : _params$data4._id);
938
+ },
890
939
  onSortChanged: function onSortChanged(event) {
891
940
  sortChanged(event.api);
892
941
  props.onSortChanged && props.onSortChanged(event);
@@ -25,7 +25,7 @@ export declare class SchemeSyncManager {
25
25
  */
26
26
  private getGetApiUrl;
27
27
  /**
28
- * 同步方案的完整 API URL (PUT请求)
28
+ * 同步方案的完整 API URL (POST请求)
29
29
  * @private
30
30
  */
31
31
  private getSyncApiUrl;
@@ -107,7 +107,7 @@ var SchemeSyncManager = exports.SchemeSyncManager = /*#__PURE__*/function () {
107
107
  }
108
108
 
109
109
  /**
110
- * 同步方案的完整 API URL (PUT请求)
110
+ * 同步方案的完整 API URL (POST请求)
111
111
  * @private
112
112
  */
113
113
  }, {
@@ -417,7 +417,7 @@ var SchemeSyncManager = exports.SchemeSyncManager = /*#__PURE__*/function () {
417
417
  // 发送同步请求
418
418
  _context2.next = 19;
419
419
  return this.fetchWithRetry(this.getSyncApiUrl(), {
420
- method: 'PUT',
420
+ method: 'POST',
421
421
  headers: {
422
422
  'Content-Type': 'application/json'
423
423
  },
@@ -86,6 +86,7 @@ function AgGridPlus(props) {
86
86
  resetAll = _useGridPlusColumnSta.resetAll;
87
87
  var gridRef = useRef();
88
88
  var apiRef = useRef();
89
+ var allColDefsRef = useRef([]);
89
90
  var _useState = useState(false),
90
91
  _useState2 = _slicedToArray(_useState, 2),
91
92
  ready = _useState2[0],
@@ -108,31 +109,27 @@ function AgGridPlus(props) {
108
109
  setRowData = _useState10[1];
109
110
  var _useState11 = useState({}),
110
111
  _useState12 = _slicedToArray(_useState11, 2),
111
- selectRow = _useState12[0],
112
- setSelectRow = _useState12[1];
113
- var _useState13 = useState({}),
112
+ queryFilter = _useState12[0],
113
+ setQueryFilter = _useState12[1];
114
+ var _useState13 = useState(),
114
115
  _useState14 = _slicedToArray(_useState13, 2),
115
- queryFilter = _useState14[0],
116
- setQueryFilter = _useState14[1];
117
- var _useState15 = useState(),
118
- _useState16 = _slicedToArray(_useState15, 2),
119
- sortColumn = _useState16[0],
120
- setSortColumn = _useState16[1];
116
+ sortColumn = _useState14[0],
117
+ setSortColumn = _useState14[1];
121
118
  // 初始化分页参数,支持外部传入的pageSize
122
- var _useState17 = useState({
119
+ var _useState15 = useState({
123
120
  pageSize: props.pageSize !== undefined ? props.pageSize : props.hidePagination ? 10000 : 200,
124
121
  current: 1,
125
122
  total: dataSource ? dataSource.length : 0
126
123
  }),
127
- _useState18 = _slicedToArray(_useState17, 2),
128
- pagination = _useState18[0],
129
- setPagination = _useState18[1];
124
+ _useState16 = _slicedToArray(_useState15, 2),
125
+ pagination = _useState16[0],
126
+ setPagination = _useState16[1];
130
127
 
131
128
  // ============ 查询方案管理 ============
132
- var _useState19 = useState([]),
133
- _useState20 = _slicedToArray(_useState19, 2),
134
- queryItemsOrder = _useState20[0],
135
- setQueryItemsOrder = _useState20[1];
129
+ var _useState17 = useState([]),
130
+ _useState18 = _slicedToArray(_useState17, 2),
131
+ queryItemsOrder = _useState18[0],
132
+ setQueryItemsOrder = _useState18[1];
136
133
 
137
134
  // 尝试获取全局适配器(如果已初始化)
138
135
  var globalQueryAdapter = isGlobalSyncInitialized() ? useGlobalQueryAdapter() : undefined;
@@ -403,7 +400,9 @@ function AgGridPlus(props) {
403
400
 
404
401
  // 计算所有列定义(包括隐藏的列)
405
402
  var allColDefs = useMemo(function () {
406
- return getTableColumns(rowData);
403
+ var cols = getTableColumns(rowData);
404
+ allColDefsRef.current = cols; // 同步更新 ref
405
+ return cols;
407
406
  }, [React.Children.count(children), props.columnDefs, extensibleColumns, rowData, gridKey]);
408
407
 
409
408
  // 稳定化 gridParams 和 sortColumn 的引用
@@ -413,6 +412,9 @@ function AgGridPlus(props) {
413
412
  var stableSortColumn = useMemo(function () {
414
413
  return sortColumn;
415
414
  }, [JSON.stringify(sortColumn)]);
415
+ var stableQueryFilter = useMemo(function () {
416
+ return queryFilter;
417
+ }, [JSON.stringify(queryFilter)]);
416
418
  var onGridReady = useCallback(function (params) {
417
419
  var _apiRef$current3;
418
420
  apiRef.current = params.api;
@@ -424,14 +426,14 @@ function AgGridPlus(props) {
424
426
  setReady(true);
425
427
  }, [dataSource]);
426
428
  var onRequest = useCallback(function (queryFilter) {
427
- if (!request) return;
429
+ if (!requestRef.current) return;
428
430
  setLoading(true);
429
431
  logger.debug('开始请求数据', {
430
432
  queryFilter: queryFilter,
431
433
  pagination: pagination
432
434
  });
433
435
  try {
434
- var filter = convertFilterModel(queryFilter, allColDefs);
436
+ var filter = convertFilterModel(queryFilter, allColDefsRef.current);
435
437
  var params = _objectSpread(_objectSpread({
436
438
  filter: filter
437
439
  }, stableGridParams), {}, {
@@ -440,7 +442,7 @@ function AgGridPlus(props) {
440
442
  maxResultCount: pagination.pageSize,
441
443
  sorter: getSort(stableSortColumn)
442
444
  });
443
- request(params, undefined, queryFilter).then(function (response) {
445
+ requestRef.current(params, undefined, queryFilter).then(function (response) {
444
446
  var _apiRef$current4;
445
447
  // 验证响应数据格式
446
448
  if (!response || _typeof(response) !== 'object') {
@@ -485,8 +487,8 @@ function AgGridPlus(props) {
485
487
  message.error(gridError.getUserMessage());
486
488
 
487
489
  // 如果用户提供了错误处理回调,调用它
488
- if (props.onError) {
489
- props.onError(gridError);
490
+ if (onErrorRef.current) {
491
+ onErrorRef.current(gridError);
490
492
  }
491
493
  });
492
494
  } catch (error) {
@@ -495,22 +497,57 @@ function AgGridPlus(props) {
495
497
  // 处理同步错误(如 convertFilterModel 抛出的错误)
496
498
  var gridError = new GridPlusError(error instanceof Error ? error.message : '数据处理失败', ErrorType.DATA_FORMAT_ERROR, ErrorSeverity.HIGH, {
497
499
  queryFilter: queryFilter,
498
- allColDefs: allColDefs
500
+ allColDefs: allColDefsRef.current
499
501
  }, error instanceof Error ? error : undefined);
500
502
  logger.error('数据请求处理失败', gridError.getDetails());
501
503
  message.error(gridError.getUserMessage());
502
- if (props.onError) {
503
- props.onError(gridError);
504
+ if (onErrorRef.current) {
505
+ onErrorRef.current(gridError);
504
506
  }
505
507
  }
506
- }, [request, stableGridParams, stableSortColumn, pagination.pageSize, pagination.current, allColDefs, props.onError]);
508
+ }, [stableGridParams, stableSortColumn, pagination.pageSize, pagination.current]);
507
509
 
508
- // 请求数据 - 当 ready 状态变化或 request 函数变化时触发
510
+ // 使用 ref 追踪依赖项变化
511
+ var depsRef = useRef({
512
+ ready: ready,
513
+ stableQueryFilter: stableQueryFilter,
514
+ paginationCurrent: pagination.current,
515
+ paginationPageSize: pagination.pageSize,
516
+ stableSortColumn: stableSortColumn
517
+ });
518
+
519
+ // 请求数据 - 当 ready 状态变化或真正需要请求的参数变化时触发
509
520
  useEffect(function () {
510
- if (ready && request) {
511
- onRequest(queryFilter);
521
+ var prevDeps = depsRef.current;
522
+ var changedDeps = [];
523
+ if (prevDeps.ready !== ready) changedDeps.push('ready');
524
+ if (prevDeps.stableQueryFilter !== stableQueryFilter) changedDeps.push('stableQueryFilter');
525
+ if (prevDeps.paginationCurrent !== pagination.current) changedDeps.push('pagination.current');
526
+ if (prevDeps.paginationPageSize !== pagination.pageSize) changedDeps.push('pagination.pageSize');
527
+ if (prevDeps.stableSortColumn !== stableSortColumn) changedDeps.push('stableSortColumn');
528
+ if (changedDeps.length > 0) {
529
+ console.log('🔍 useEffect 依赖项变化:', changedDeps.join(', '));
512
530
  }
513
- }, [ready, request, queryFilter, onRequest]);
531
+ depsRef.current = {
532
+ ready: ready,
533
+ stableQueryFilter: stableQueryFilter,
534
+ paginationCurrent: pagination.current,
535
+ paginationPageSize: pagination.pageSize,
536
+ stableSortColumn: stableSortColumn
537
+ };
538
+ if (ready && requestRef.current) {
539
+ logger.debug('useEffect 触发数据请求', {
540
+ ready: ready,
541
+ hasRequest: !!requestRef.current,
542
+ queryFilter: stableQueryFilter,
543
+ 'pagination.current': pagination.current,
544
+ 'pagination.pageSize': pagination.pageSize,
545
+ stableSortColumn: stableSortColumn,
546
+ changedDeps: changedDeps
547
+ });
548
+ onRequest(stableQueryFilter);
549
+ }
550
+ }, [ready, stableQueryFilter, pagination.current, pagination.pageSize, stableSortColumn]);
514
551
  var handelgridPlusColumnState = function handelgridPlusColumnState(columnState) {
515
552
  var cellMap = {};
516
553
  if (_isArray(columnState)) {
@@ -536,10 +573,10 @@ function AgGridPlus(props) {
536
573
  setSortColumn(sortedColumn);
537
574
  };
538
575
  var onRefresh = useCallback(function () {
539
- if (request) {
540
- onRequest(queryFilter);
576
+ if (requestRef.current) {
577
+ onRequest(stableQueryFilter);
541
578
  }
542
- }, [request, onRequest, queryFilter]);
579
+ }, [onRequest, stableQueryFilter]);
543
580
  useEffect(function () {
544
581
  gridRef.current = {
545
582
  onRefresh: onRefresh
@@ -550,11 +587,21 @@ function AgGridPlus(props) {
550
587
  props.onSelectionChanged(e);
551
588
  }
552
589
  }, [props.onSelectionChanged]);
553
- var onRowSelected = useCallback(function (e) {
554
- setSelectRow(e.data);
555
590
 
591
+ // 使用 ref 保存最新的回调,避免不必要的 useCallback 重新创建
592
+ var onSelectedRowsChangeRef = useRef(onSelectedRowsChange);
593
+ var onRowSelectedCallbackRef = useRef(props.onRowSelected);
594
+ var onErrorRef = useRef(props.onError);
595
+ var requestRef = useRef(request);
596
+ useEffect(function () {
597
+ onSelectedRowsChangeRef.current = onSelectedRowsChange;
598
+ onRowSelectedCallbackRef.current = props.onRowSelected;
599
+ onErrorRef.current = props.onError;
600
+ requestRef.current = request;
601
+ });
602
+ var onRowSelected = useCallback(function (e) {
556
603
  // 处理选中行数据回调
557
- if (onSelectedRowsChange && apiRef.current) {
604
+ if (onSelectedRowsChangeRef.current && apiRef.current) {
558
605
  // 获取所有选中的行
559
606
  var allSelectedRows = apiRef.current.getSelectedRows();
560
607
 
@@ -588,12 +635,12 @@ function AgGridPlus(props) {
588
635
  return selectedRowId && displayedRowId && selectedRowId === displayedRowId;
589
636
  });
590
637
  });
591
- onSelectedRowsChange(visibleSelectedRows);
638
+ onSelectedRowsChangeRef.current(visibleSelectedRows);
592
639
  }
593
- if (props.onRowSelected) {
594
- props.onRowSelected(e);
640
+ if (onRowSelectedCallbackRef.current) {
641
+ onRowSelectedCallbackRef.current(e);
595
642
  }
596
- }, [onSelectedRowsChange, props.getRowId, props.onRowSelected]);
643
+ }, [props.getRowId]);
597
644
  var onColumnStateChanged = function onColumnStateChanged(columnState) {
598
645
  if (gridKey) {
599
646
  onSaveColumnState && onSaveColumnState(gridKey, columnState);
@@ -761,7 +808,7 @@ function AgGridPlus(props) {
761
808
  var rowDataMemo = useMemo(function () {
762
809
  return props.treeData ? flatten(toTree(rowData, treeKeyName !== null && treeKeyName !== void 0 ? treeKeyName : "id", treeParentName !== null && treeParentName !== void 0 ? treeParentName : "parentId"), treeKeyName !== null && treeKeyName !== void 0 ? treeKeyName : "id") : rowData;
763
810
  }, [rowData, props.treeData, treeKeyName, treeParentName]);
764
- var actionDom = toolBarRender && toolBarRender(apiRef.current, convertFilterModel(queryFilter, allColDefs), queryFilter, {
811
+ var actionDom = toolBarRender && toolBarRender(apiRef.current, convertFilterModel(queryFilter, allColDefsRef.current), queryFilter, {
765
812
  current: pagination.current,
766
813
  skipCount: pagination.current == 1 ? 0 : (pagination.current - 1) * pagination.pageSize,
767
814
  maxResultCount: pagination.pageSize
@@ -876,9 +923,11 @@ function AgGridPlus(props) {
876
923
  maintainColumnOrder: true,
877
924
  rowData: rowDataMemo,
878
925
  onGridReady: onGridReady,
879
- defaultColDef: defaultColDef
880
- // getRowId={props.getRowId || ((params) => params.data?.id || params.data?._id)}
881
- ,
926
+ defaultColDef: defaultColDef,
927
+ getRowId: props.getRowId || function (params) {
928
+ var _params$data3, _params$data4;
929
+ return ((_params$data3 = params.data) === null || _params$data3 === void 0 ? void 0 : _params$data3.id) || ((_params$data4 = params.data) === null || _params$data4 === void 0 ? void 0 : _params$data4._id);
930
+ },
882
931
  onSortChanged: function onSortChanged(event) {
883
932
  sortChanged(event.api);
884
933
  props.onSortChanged && props.onSortChanged(event);
@@ -25,7 +25,7 @@ export declare class SchemeSyncManager {
25
25
  */
26
26
  private getGetApiUrl;
27
27
  /**
28
- * 同步方案的完整 API URL (PUT请求)
28
+ * 同步方案的完整 API URL (POST请求)
29
29
  * @private
30
30
  */
31
31
  private getSyncApiUrl;
@@ -101,7 +101,7 @@ export var SchemeSyncManager = /*#__PURE__*/function () {
101
101
  }
102
102
 
103
103
  /**
104
- * 同步方案的完整 API URL (PUT请求)
104
+ * 同步方案的完整 API URL (POST请求)
105
105
  * @private
106
106
  */
107
107
  }, {
@@ -411,7 +411,7 @@ export var SchemeSyncManager = /*#__PURE__*/function () {
411
411
  // 发送同步请求
412
412
  _context2.next = 19;
413
413
  return this.fetchWithRetry(this.getSyncApiUrl(), {
414
- method: 'PUT',
414
+ method: 'POST',
415
415
  headers: {
416
416
  'Content-Type': 'application/json'
417
417
  },