@nokecy/qc-ui 1.0.74 → 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.
@@ -117,31 +117,27 @@ function AgGridPlus(props) {
117
117
  setRowData = _useState10[1];
118
118
  var _useState11 = (0, _react.useState)({}),
119
119
  _useState12 = _slicedToArray(_useState11, 2),
120
- selectRow = _useState12[0],
121
- setSelectRow = _useState12[1];
122
- var _useState13 = (0, _react.useState)({}),
120
+ queryFilter = _useState12[0],
121
+ setQueryFilter = _useState12[1];
122
+ var _useState13 = (0, _react.useState)(),
123
123
  _useState14 = _slicedToArray(_useState13, 2),
124
- queryFilter = _useState14[0],
125
- setQueryFilter = _useState14[1];
126
- var _useState15 = (0, _react.useState)(),
127
- _useState16 = _slicedToArray(_useState15, 2),
128
- sortColumn = _useState16[0],
129
- setSortColumn = _useState16[1];
124
+ sortColumn = _useState14[0],
125
+ setSortColumn = _useState14[1];
130
126
  // 初始化分页参数,支持外部传入的pageSize
131
- var _useState17 = (0, _react.useState)({
127
+ var _useState15 = (0, _react.useState)({
132
128
  pageSize: props.pageSize !== undefined ? props.pageSize : props.hidePagination ? 10000 : 200,
133
129
  current: 1,
134
130
  total: dataSource ? dataSource.length : 0
135
131
  }),
136
- _useState18 = _slicedToArray(_useState17, 2),
137
- pagination = _useState18[0],
138
- setPagination = _useState18[1];
132
+ _useState16 = _slicedToArray(_useState15, 2),
133
+ pagination = _useState16[0],
134
+ setPagination = _useState16[1];
139
135
 
140
136
  // ============ 查询方案管理 ============
141
- var _useState19 = (0, _react.useState)([]),
142
- _useState20 = _slicedToArray(_useState19, 2),
143
- queryItemsOrder = _useState20[0],
144
- setQueryItemsOrder = _useState20[1];
137
+ var _useState17 = (0, _react.useState)([]),
138
+ _useState18 = _slicedToArray(_useState17, 2),
139
+ queryItemsOrder = _useState18[0],
140
+ setQueryItemsOrder = _useState18[1];
145
141
 
146
142
  // 尝试获取全局适配器(如果已初始化)
147
143
  var globalQueryAdapter = (0, _globalSyncManager.isGlobalSyncInitialized)() ? (0, _globalSyncManager.useGlobalQueryAdapter)() : undefined;
@@ -424,6 +420,9 @@ function AgGridPlus(props) {
424
420
  var stableSortColumn = (0, _react.useMemo)(function () {
425
421
  return sortColumn;
426
422
  }, [JSON.stringify(sortColumn)]);
423
+ var stableQueryFilter = (0, _react.useMemo)(function () {
424
+ return queryFilter;
425
+ }, [JSON.stringify(queryFilter)]);
427
426
  var onGridReady = (0, _react.useCallback)(function (params) {
428
427
  var _apiRef$current3;
429
428
  apiRef.current = params.api;
@@ -435,7 +434,7 @@ function AgGridPlus(props) {
435
434
  setReady(true);
436
435
  }, [dataSource]);
437
436
  var onRequest = (0, _react.useCallback)(function (queryFilter) {
438
- if (!request) return;
437
+ if (!requestRef.current) return;
439
438
  setLoading(true);
440
439
  _logger.logger.debug('开始请求数据', {
441
440
  queryFilter: queryFilter,
@@ -451,7 +450,7 @@ function AgGridPlus(props) {
451
450
  maxResultCount: pagination.pageSize,
452
451
  sorter: getSort(stableSortColumn)
453
452
  });
454
- request(params, undefined, queryFilter).then(function (response) {
453
+ requestRef.current(params, undefined, queryFilter).then(function (response) {
455
454
  var _apiRef$current4;
456
455
  // 验证响应数据格式
457
456
  if (!response || _typeof(response) !== 'object') {
@@ -496,8 +495,8 @@ function AgGridPlus(props) {
496
495
  _antd.message.error(gridError.getUserMessage());
497
496
 
498
497
  // 如果用户提供了错误处理回调,调用它
499
- if (props.onError) {
500
- props.onError(gridError);
498
+ if (onErrorRef.current) {
499
+ onErrorRef.current(gridError);
501
500
  }
502
501
  });
503
502
  } catch (error) {
@@ -510,18 +509,53 @@ function AgGridPlus(props) {
510
509
  }, error instanceof Error ? error : undefined);
511
510
  _logger.logger.error('数据请求处理失败', gridError.getDetails());
512
511
  _antd.message.error(gridError.getUserMessage());
513
- if (props.onError) {
514
- props.onError(gridError);
512
+ if (onErrorRef.current) {
513
+ onErrorRef.current(gridError);
515
514
  }
516
515
  }
517
- }, [request, stableGridParams, stableSortColumn, pagination.pageSize, pagination.current, props.onError]);
516
+ }, [stableGridParams, stableSortColumn, pagination.pageSize, pagination.current]);
518
517
 
519
- // 请求数据 - 当 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 状态变化或真正需要请求的参数变化时触发
520
528
  (0, _react.useEffect)(function () {
521
- if (ready && request) {
522
- 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(', '));
523
538
  }
524
- }, [ready, request, queryFilter, pagination.current, pagination.pageSize, stableSortColumn]);
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]);
525
559
  var handelgridPlusColumnState = function handelgridPlusColumnState(columnState) {
526
560
  var cellMap = {};
527
561
  if ((0, _isArray2.default)(columnState)) {
@@ -547,10 +581,10 @@ function AgGridPlus(props) {
547
581
  setSortColumn(sortedColumn);
548
582
  };
549
583
  var onRefresh = (0, _react.useCallback)(function () {
550
- if (request) {
551
- onRequest(queryFilter);
584
+ if (requestRef.current) {
585
+ onRequest(stableQueryFilter);
552
586
  }
553
- }, [request, onRequest, queryFilter]);
587
+ }, [onRequest, stableQueryFilter]);
554
588
  (0, _react.useEffect)(function () {
555
589
  gridRef.current = {
556
590
  onRefresh: onRefresh
@@ -561,11 +595,21 @@ function AgGridPlus(props) {
561
595
  props.onSelectionChanged(e);
562
596
  }
563
597
  }, [props.onSelectionChanged]);
564
- var onRowSelected = (0, _react.useCallback)(function (e) {
565
- setSelectRow(e.data);
566
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) {
567
611
  // 处理选中行数据回调
568
- if (onSelectedRowsChange && apiRef.current) {
612
+ if (onSelectedRowsChangeRef.current && apiRef.current) {
569
613
  // 获取所有选中的行
570
614
  var allSelectedRows = apiRef.current.getSelectedRows();
571
615
 
@@ -599,12 +643,12 @@ function AgGridPlus(props) {
599
643
  return selectedRowId && displayedRowId && selectedRowId === displayedRowId;
600
644
  });
601
645
  });
602
- onSelectedRowsChange(visibleSelectedRows);
646
+ onSelectedRowsChangeRef.current(visibleSelectedRows);
603
647
  }
604
- if (props.onRowSelected) {
605
- props.onRowSelected(e);
648
+ if (onRowSelectedCallbackRef.current) {
649
+ onRowSelectedCallbackRef.current(e);
606
650
  }
607
- }, [onSelectedRowsChange, props.getRowId, props.onRowSelected]);
651
+ }, [props.getRowId]);
608
652
  var onColumnStateChanged = function onColumnStateChanged(columnState) {
609
653
  if (gridKey) {
610
654
  onSaveColumnState && onSaveColumnState(gridKey, columnState);
@@ -887,9 +931,11 @@ function AgGridPlus(props) {
887
931
  maintainColumnOrder: true,
888
932
  rowData: rowDataMemo,
889
933
  onGridReady: onGridReady,
890
- defaultColDef: defaultColDef
891
- // getRowId={props.getRowId || ((params) => params.data?.id || params.data?._id)}
892
- ,
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
+ },
893
939
  onSortChanged: function onSortChanged(event) {
894
940
  sortChanged(event.api);
895
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
  },
@@ -109,31 +109,27 @@ function AgGridPlus(props) {
109
109
  setRowData = _useState10[1];
110
110
  var _useState11 = useState({}),
111
111
  _useState12 = _slicedToArray(_useState11, 2),
112
- selectRow = _useState12[0],
113
- setSelectRow = _useState12[1];
114
- var _useState13 = useState({}),
112
+ queryFilter = _useState12[0],
113
+ setQueryFilter = _useState12[1];
114
+ var _useState13 = useState(),
115
115
  _useState14 = _slicedToArray(_useState13, 2),
116
- queryFilter = _useState14[0],
117
- setQueryFilter = _useState14[1];
118
- var _useState15 = useState(),
119
- _useState16 = _slicedToArray(_useState15, 2),
120
- sortColumn = _useState16[0],
121
- setSortColumn = _useState16[1];
116
+ sortColumn = _useState14[0],
117
+ setSortColumn = _useState14[1];
122
118
  // 初始化分页参数,支持外部传入的pageSize
123
- var _useState17 = useState({
119
+ var _useState15 = useState({
124
120
  pageSize: props.pageSize !== undefined ? props.pageSize : props.hidePagination ? 10000 : 200,
125
121
  current: 1,
126
122
  total: dataSource ? dataSource.length : 0
127
123
  }),
128
- _useState18 = _slicedToArray(_useState17, 2),
129
- pagination = _useState18[0],
130
- setPagination = _useState18[1];
124
+ _useState16 = _slicedToArray(_useState15, 2),
125
+ pagination = _useState16[0],
126
+ setPagination = _useState16[1];
131
127
 
132
128
  // ============ 查询方案管理 ============
133
- var _useState19 = useState([]),
134
- _useState20 = _slicedToArray(_useState19, 2),
135
- queryItemsOrder = _useState20[0],
136
- setQueryItemsOrder = _useState20[1];
129
+ var _useState17 = useState([]),
130
+ _useState18 = _slicedToArray(_useState17, 2),
131
+ queryItemsOrder = _useState18[0],
132
+ setQueryItemsOrder = _useState18[1];
137
133
 
138
134
  // 尝试获取全局适配器(如果已初始化)
139
135
  var globalQueryAdapter = isGlobalSyncInitialized() ? useGlobalQueryAdapter() : undefined;
@@ -416,6 +412,9 @@ function AgGridPlus(props) {
416
412
  var stableSortColumn = useMemo(function () {
417
413
  return sortColumn;
418
414
  }, [JSON.stringify(sortColumn)]);
415
+ var stableQueryFilter = useMemo(function () {
416
+ return queryFilter;
417
+ }, [JSON.stringify(queryFilter)]);
419
418
  var onGridReady = useCallback(function (params) {
420
419
  var _apiRef$current3;
421
420
  apiRef.current = params.api;
@@ -427,7 +426,7 @@ function AgGridPlus(props) {
427
426
  setReady(true);
428
427
  }, [dataSource]);
429
428
  var onRequest = useCallback(function (queryFilter) {
430
- if (!request) return;
429
+ if (!requestRef.current) return;
431
430
  setLoading(true);
432
431
  logger.debug('开始请求数据', {
433
432
  queryFilter: queryFilter,
@@ -443,7 +442,7 @@ function AgGridPlus(props) {
443
442
  maxResultCount: pagination.pageSize,
444
443
  sorter: getSort(stableSortColumn)
445
444
  });
446
- request(params, undefined, queryFilter).then(function (response) {
445
+ requestRef.current(params, undefined, queryFilter).then(function (response) {
447
446
  var _apiRef$current4;
448
447
  // 验证响应数据格式
449
448
  if (!response || _typeof(response) !== 'object') {
@@ -488,8 +487,8 @@ function AgGridPlus(props) {
488
487
  message.error(gridError.getUserMessage());
489
488
 
490
489
  // 如果用户提供了错误处理回调,调用它
491
- if (props.onError) {
492
- props.onError(gridError);
490
+ if (onErrorRef.current) {
491
+ onErrorRef.current(gridError);
493
492
  }
494
493
  });
495
494
  } catch (error) {
@@ -502,18 +501,53 @@ function AgGridPlus(props) {
502
501
  }, error instanceof Error ? error : undefined);
503
502
  logger.error('数据请求处理失败', gridError.getDetails());
504
503
  message.error(gridError.getUserMessage());
505
- if (props.onError) {
506
- props.onError(gridError);
504
+ if (onErrorRef.current) {
505
+ onErrorRef.current(gridError);
507
506
  }
508
507
  }
509
- }, [request, stableGridParams, stableSortColumn, pagination.pageSize, pagination.current, props.onError]);
508
+ }, [stableGridParams, stableSortColumn, pagination.pageSize, pagination.current]);
510
509
 
511
- // 请求数据 - 当 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 状态变化或真正需要请求的参数变化时触发
512
520
  useEffect(function () {
513
- if (ready && request) {
514
- 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(', '));
515
530
  }
516
- }, [ready, request, queryFilter, pagination.current, pagination.pageSize, stableSortColumn]);
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]);
517
551
  var handelgridPlusColumnState = function handelgridPlusColumnState(columnState) {
518
552
  var cellMap = {};
519
553
  if (_isArray(columnState)) {
@@ -539,10 +573,10 @@ function AgGridPlus(props) {
539
573
  setSortColumn(sortedColumn);
540
574
  };
541
575
  var onRefresh = useCallback(function () {
542
- if (request) {
543
- onRequest(queryFilter);
576
+ if (requestRef.current) {
577
+ onRequest(stableQueryFilter);
544
578
  }
545
- }, [request, onRequest, queryFilter]);
579
+ }, [onRequest, stableQueryFilter]);
546
580
  useEffect(function () {
547
581
  gridRef.current = {
548
582
  onRefresh: onRefresh
@@ -553,11 +587,21 @@ function AgGridPlus(props) {
553
587
  props.onSelectionChanged(e);
554
588
  }
555
589
  }, [props.onSelectionChanged]);
556
- var onRowSelected = useCallback(function (e) {
557
- setSelectRow(e.data);
558
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) {
559
603
  // 处理选中行数据回调
560
- if (onSelectedRowsChange && apiRef.current) {
604
+ if (onSelectedRowsChangeRef.current && apiRef.current) {
561
605
  // 获取所有选中的行
562
606
  var allSelectedRows = apiRef.current.getSelectedRows();
563
607
 
@@ -591,12 +635,12 @@ function AgGridPlus(props) {
591
635
  return selectedRowId && displayedRowId && selectedRowId === displayedRowId;
592
636
  });
593
637
  });
594
- onSelectedRowsChange(visibleSelectedRows);
638
+ onSelectedRowsChangeRef.current(visibleSelectedRows);
595
639
  }
596
- if (props.onRowSelected) {
597
- props.onRowSelected(e);
640
+ if (onRowSelectedCallbackRef.current) {
641
+ onRowSelectedCallbackRef.current(e);
598
642
  }
599
- }, [onSelectedRowsChange, props.getRowId, props.onRowSelected]);
643
+ }, [props.getRowId]);
600
644
  var onColumnStateChanged = function onColumnStateChanged(columnState) {
601
645
  if (gridKey) {
602
646
  onSaveColumnState && onSaveColumnState(gridKey, columnState);
@@ -879,9 +923,11 @@ function AgGridPlus(props) {
879
923
  maintainColumnOrder: true,
880
924
  rowData: rowDataMemo,
881
925
  onGridReady: onGridReady,
882
- defaultColDef: defaultColDef
883
- // getRowId={props.getRowId || ((params) => params.data?.id || params.data?._id)}
884
- ,
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
+ },
885
931
  onSortChanged: function onSortChanged(event) {
886
932
  sortChanged(event.api);
887
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
  },