@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.
- package/dist/cjs/ag-grid-plus/ag-gridPlus.js +94 -45
- package/dist/cjs/ag-grid-plus/storage/SchemeSyncManager.d.ts +1 -1
- package/dist/cjs/ag-grid-plus/storage/SchemeSyncManager.js +2 -2
- package/dist/esm/ag-grid-plus/ag-gridPlus.js +94 -45
- package/dist/esm/ag-grid-plus/storage/SchemeSyncManager.d.ts +1 -1
- package/dist/esm/ag-grid-plus/storage/SchemeSyncManager.js +2 -2
- package/dist/umd/qc-ui.min.js +1 -1
- package/package.json +1 -1
|
@@ -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
|
-
|
|
120
|
-
|
|
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
|
-
|
|
124
|
-
|
|
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
|
|
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
|
-
|
|
136
|
-
pagination =
|
|
137
|
-
setPagination =
|
|
132
|
+
_useState16 = _slicedToArray(_useState15, 2),
|
|
133
|
+
pagination = _useState16[0],
|
|
134
|
+
setPagination = _useState16[1];
|
|
138
135
|
|
|
139
136
|
// ============ 查询方案管理 ============
|
|
140
|
-
var
|
|
141
|
-
|
|
142
|
-
queryItemsOrder =
|
|
143
|
-
setQueryItemsOrder =
|
|
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
|
-
|
|
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 (!
|
|
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,
|
|
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
|
-
|
|
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 (
|
|
497
|
-
|
|
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:
|
|
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 (
|
|
511
|
-
|
|
512
|
+
if (onErrorRef.current) {
|
|
513
|
+
onErrorRef.current(gridError);
|
|
512
514
|
}
|
|
513
515
|
}
|
|
514
|
-
}, [
|
|
516
|
+
}, [stableGridParams, stableSortColumn, pagination.pageSize, pagination.current]);
|
|
515
517
|
|
|
516
|
-
//
|
|
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
|
-
|
|
519
|
-
|
|
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
|
-
|
|
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 (
|
|
548
|
-
onRequest(
|
|
584
|
+
if (requestRef.current) {
|
|
585
|
+
onRequest(stableQueryFilter);
|
|
549
586
|
}
|
|
550
|
-
}, [
|
|
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 (
|
|
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
|
-
|
|
646
|
+
onSelectedRowsChangeRef.current(visibleSelectedRows);
|
|
600
647
|
}
|
|
601
|
-
if (
|
|
602
|
-
|
|
648
|
+
if (onRowSelectedCallbackRef.current) {
|
|
649
|
+
onRowSelectedCallbackRef.current(e);
|
|
603
650
|
}
|
|
604
|
-
}, [
|
|
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,
|
|
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
|
-
|
|
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);
|
|
@@ -107,7 +107,7 @@ var SchemeSyncManager = exports.SchemeSyncManager = /*#__PURE__*/function () {
|
|
|
107
107
|
}
|
|
108
108
|
|
|
109
109
|
/**
|
|
110
|
-
* 同步方案的完整 API URL (
|
|
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: '
|
|
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
|
-
|
|
112
|
-
|
|
113
|
-
var _useState13 = useState(
|
|
112
|
+
queryFilter = _useState12[0],
|
|
113
|
+
setQueryFilter = _useState12[1];
|
|
114
|
+
var _useState13 = useState(),
|
|
114
115
|
_useState14 = _slicedToArray(_useState13, 2),
|
|
115
|
-
|
|
116
|
-
|
|
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
|
|
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
|
-
|
|
128
|
-
pagination =
|
|
129
|
-
setPagination =
|
|
124
|
+
_useState16 = _slicedToArray(_useState15, 2),
|
|
125
|
+
pagination = _useState16[0],
|
|
126
|
+
setPagination = _useState16[1];
|
|
130
127
|
|
|
131
128
|
// ============ 查询方案管理 ============
|
|
132
|
-
var
|
|
133
|
-
|
|
134
|
-
queryItemsOrder =
|
|
135
|
-
setQueryItemsOrder =
|
|
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
|
-
|
|
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 (!
|
|
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,
|
|
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
|
-
|
|
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 (
|
|
489
|
-
|
|
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:
|
|
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 (
|
|
503
|
-
|
|
504
|
+
if (onErrorRef.current) {
|
|
505
|
+
onErrorRef.current(gridError);
|
|
504
506
|
}
|
|
505
507
|
}
|
|
506
|
-
}, [
|
|
508
|
+
}, [stableGridParams, stableSortColumn, pagination.pageSize, pagination.current]);
|
|
507
509
|
|
|
508
|
-
//
|
|
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
|
-
|
|
511
|
-
|
|
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
|
-
|
|
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 (
|
|
540
|
-
onRequest(
|
|
576
|
+
if (requestRef.current) {
|
|
577
|
+
onRequest(stableQueryFilter);
|
|
541
578
|
}
|
|
542
|
-
}, [
|
|
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 (
|
|
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
|
-
|
|
638
|
+
onSelectedRowsChangeRef.current(visibleSelectedRows);
|
|
592
639
|
}
|
|
593
|
-
if (
|
|
594
|
-
|
|
640
|
+
if (onRowSelectedCallbackRef.current) {
|
|
641
|
+
onRowSelectedCallbackRef.current(e);
|
|
595
642
|
}
|
|
596
|
-
}, [
|
|
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,
|
|
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
|
-
|
|
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);
|
|
@@ -101,7 +101,7 @@ export var SchemeSyncManager = /*#__PURE__*/function () {
|
|
|
101
101
|
}
|
|
102
102
|
|
|
103
103
|
/**
|
|
104
|
-
* 同步方案的完整 API URL (
|
|
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: '
|
|
414
|
+
method: 'POST',
|
|
415
415
|
headers: {
|
|
416
416
|
'Content-Type': 'application/json'
|
|
417
417
|
},
|