@nokecy/qc-ui 1.0.75 → 1.0.77

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.
@@ -1,5 +1,4 @@
1
1
  import React from 'react';
2
- import "ag-grid-enterprise";
3
2
  import './index.less';
4
3
  import { GridProps } from './interface';
5
4
  declare function AgGridPlus(props: GridProps): React.JSX.Element;
@@ -7,10 +7,11 @@ exports.default = void 0;
7
7
  var _sumBy2 = _interopRequireDefault(require("lodash/sumBy"));
8
8
  var _uniqueId2 = _interopRequireDefault(require("lodash/uniqueId"));
9
9
  var _isArray2 = _interopRequireDefault(require("lodash/isArray"));
10
+ var _agGridCommunity = require("ag-grid-community");
10
11
  var _agGridReact = require("ag-grid-react");
11
12
  var _antd = require("antd");
12
13
  var _react = _interopRequireWildcard(require("react"));
13
- require("ag-grid-enterprise");
14
+ var _agGridEnterprise = require("ag-grid-enterprise");
14
15
  require("./index.less");
15
16
  var _queryForm = _interopRequireDefault(require("./queryForm"));
16
17
  var _toolBar = _interopRequireDefault(require("./toolBar"));
@@ -31,7 +32,7 @@ var _globalSyncManager = require("./storage/globalSyncManager");
31
32
  var _sanitize = require("./utils/sanitize");
32
33
  var _errors = require("./errors");
33
34
  var _logger = require("./utils/logger");
34
- var _excluded = ["style", "loading", "params", "request", "dataSource", "treeKeyName", "treeParentName", "rowData", "gridRef", "headerTitle", "toolBarRender", "search", "hideTool", "onGridReady", "gridKey", "children", "defaultSearchExpand", "overlayNoRowsTemplateText", "queryDefaultRows", "onSelectedRowsChange", "enableQuerySchemes", "querySchemeStorageAdapter", "querySchemeManager", "enableColumnSchemes", "columnSchemeStorageAdapter", "columnSchemeManager"];
35
+ var _excluded = ["style", "loading", "params", "request", "dataSource", "treeKeyName", "treeParentName", "rowData", "gridRef", "headerTitle", "toolBarRender", "search", "hideTool", "onGridReady", "gridKey", "children", "defaultSearchExpand", "overlayNoRowsTemplateText", "queryDefaultRows", "onSelectedRowsChange", "enableQuerySchemes", "querySchemeStorageAdapter", "querySchemeManager", "enableColumnSchemes", "columnSchemeStorageAdapter", "columnSchemeManager", "enableClickSelection", "rowSelection"];
35
36
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
36
37
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
37
38
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -50,6 +51,8 @@ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" !=
50
51
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
51
52
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
52
53
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
54
+ // AG-Grid v33+ 需要显式注册模块
55
+ _agGridCommunity.ModuleRegistry.registerModules([_agGridEnterprise.AllEnterpriseModule]);
53
56
  var Text = _antd.Typography.Text;
54
57
  var getSort = function getSort(columnState) {
55
58
  return columnState ? "".concat(columnState.colId, " ").concat(columnState.sort) : "";
@@ -84,6 +87,9 @@ function AgGridPlus(props) {
84
87
  enableColumnSchemes = _props$enableColumnSc === void 0 ? true : _props$enableColumnSc,
85
88
  columnSchemeStorageAdapter = props.columnSchemeStorageAdapter,
86
89
  propsColumnSchemeManager = props.columnSchemeManager,
90
+ _props$enableClickSel = props.enableClickSelection,
91
+ enableClickSelection = _props$enableClickSel === void 0 ? true : _props$enableClickSel,
92
+ propsRowSelection = props.rowSelection,
87
93
  rest = _objectWithoutProperties(props, _excluded);
88
94
  var _useGridPlusColumnSta = (0, _.useGridPlusColumnState)(),
89
95
  onSaveColumnState = _useGridPlusColumnSta.onSaveColumnState,
@@ -423,6 +429,49 @@ function AgGridPlus(props) {
423
429
  var stableQueryFilter = (0, _react.useMemo)(function () {
424
430
  return queryFilter;
425
431
  }, [JSON.stringify(queryFilter)]);
432
+
433
+ // AG-Grid v33+ 行选择配置(使用对象 API)
434
+ var rowSelectionConfig = (0, _react.useMemo)(function () {
435
+ // 如果用户提供了 rowSelection 配置
436
+ if (propsRowSelection) {
437
+ // 如果是对象类型,增强它
438
+ if (_typeof(propsRowSelection) === 'object') {
439
+ var config = propsRowSelection;
440
+ // 如果没有设置 enableClickSelection,使用组件的 enableClickSelection prop
441
+ if (config.enableClickSelection === undefined) {
442
+ return _objectSpread(_objectSpread({}, config), {}, {
443
+ enableClickSelection: enableClickSelection,
444
+ // 只有在多选模式且启用点击选择时,才启用无键多选
445
+ enableSelectionWithoutKeys: enableClickSelection !== false && config.mode !== 'singleRow'
446
+ });
447
+ }
448
+ return config;
449
+ }
450
+ // 如果是字符串(旧 API),转换为新的对象 API
451
+ var isMultiRow = propsRowSelection !== 'single';
452
+ return {
453
+ mode: isMultiRow ? 'multiRow' : 'singleRow',
454
+ enableClickSelection: enableClickSelection,
455
+ enableSelectionWithoutKeys: isMultiRow && enableClickSelection !== false
456
+ };
457
+ }
458
+
459
+ // 默认配置:启用多选和点击选择
460
+ if (enableClickSelection !== false) {
461
+ return {
462
+ mode: 'multiRow',
463
+ enableClickSelection: true,
464
+ enableSelectionWithoutKeys: true
465
+ };
466
+ }
467
+
468
+ // 如果禁用点击选择,返回基础多选模式(v33 对象格式)
469
+ return {
470
+ mode: 'multiRow',
471
+ enableClickSelection: false
472
+ };
473
+ }, [propsRowSelection, enableClickSelection]);
474
+ console.log('[AgGridPlus] rowSelection config:', JSON.stringify(rowSelectionConfig));
426
475
  var onGridReady = (0, _react.useCallback)(function (params) {
427
476
  var _apiRef$current3;
428
477
  apiRef.current = params.api;
@@ -519,6 +568,7 @@ function AgGridPlus(props) {
519
568
  var depsRef = (0, _react.useRef)({
520
569
  ready: ready,
521
570
  stableQueryFilter: stableQueryFilter,
571
+ stableGridParams: stableGridParams,
522
572
  paginationCurrent: pagination.current,
523
573
  paginationPageSize: pagination.pageSize,
524
574
  stableSortColumn: stableSortColumn
@@ -530,6 +580,7 @@ function AgGridPlus(props) {
530
580
  var changedDeps = [];
531
581
  if (prevDeps.ready !== ready) changedDeps.push('ready');
532
582
  if (prevDeps.stableQueryFilter !== stableQueryFilter) changedDeps.push('stableQueryFilter');
583
+ if (prevDeps.stableGridParams !== stableGridParams) changedDeps.push('stableGridParams');
533
584
  if (prevDeps.paginationCurrent !== pagination.current) changedDeps.push('pagination.current');
534
585
  if (prevDeps.paginationPageSize !== pagination.pageSize) changedDeps.push('pagination.pageSize');
535
586
  if (prevDeps.stableSortColumn !== stableSortColumn) changedDeps.push('stableSortColumn');
@@ -539,6 +590,7 @@ function AgGridPlus(props) {
539
590
  depsRef.current = {
540
591
  ready: ready,
541
592
  stableQueryFilter: stableQueryFilter,
593
+ stableGridParams: stableGridParams,
542
594
  paginationCurrent: pagination.current,
543
595
  paginationPageSize: pagination.pageSize,
544
596
  stableSortColumn: stableSortColumn
@@ -548,6 +600,7 @@ function AgGridPlus(props) {
548
600
  ready: ready,
549
601
  hasRequest: !!requestRef.current,
550
602
  queryFilter: stableQueryFilter,
603
+ stableGridParams: stableGridParams,
551
604
  'pagination.current': pagination.current,
552
605
  'pagination.pageSize': pagination.pageSize,
553
606
  stableSortColumn: stableSortColumn,
@@ -555,7 +608,7 @@ function AgGridPlus(props) {
555
608
  });
556
609
  onRequest(stableQueryFilter);
557
610
  }
558
- }, [ready, stableQueryFilter, pagination.current, pagination.pageSize, stableSortColumn]);
611
+ }, [ready, stableQueryFilter, stableGridParams, pagination.current, pagination.pageSize, stableSortColumn]);
559
612
  var handelgridPlusColumnState = function handelgridPlusColumnState(columnState) {
560
613
  var cellMap = {};
561
614
  if ((0, _isArray2.default)(columnState)) {
@@ -943,6 +996,7 @@ function AgGridPlus(props) {
943
996
  onFilterChanged: onFilterChanged,
944
997
  onSelectionChanged: onRowChanged,
945
998
  onRowSelected: onRowSelected,
999
+ rowSelection: rowSelectionConfig,
946
1000
  onDragStopped: function onDragStopped(e) {
947
1001
  if (apiRef.current) {
948
1002
  var _apiRef$current7;
@@ -90,6 +90,25 @@ interface GridProps extends AgGridReactProps {
90
90
  * 当组件发生错误时调用,可用于自定义错误处理逻辑
91
91
  */
92
92
  onError?: (error: GridPlusError) => void;
93
+ /**
94
+ * 是否启用点击行选择功能
95
+ * - true: 启用行点击选择(默认)
96
+ * - false: 禁用点击行选择(仅复选框可选择)
97
+ *
98
+ * 默认值: true
99
+ *
100
+ * AG-Grid v33+ 特性:
101
+ * 1. 点击行即可选择/取消选择
102
+ * 2. **无需按键即可点击多选**(enableSelectionWithoutKeys)
103
+ * 3. 复选框和行点击都支持多选
104
+ * 4. 支持 Ctrl/Cmd + A 全选
105
+ *
106
+ * 内部实现:
107
+ * - 使用 v33+ 对象化 rowSelection API
108
+ * - 自动配置 enableClickSelection 和 enableSelectionWithoutKeys
109
+ * - 兼容旧的字符串 API('single' | 'multiple')
110
+ */
111
+ enableClickSelection?: boolean;
93
112
  }
94
113
  interface AgGridColumnPropsClone extends ColDef {
95
114
  /**
@@ -93,6 +93,11 @@ export declare class SchemeSyncManager {
93
93
  * 应用服务器版本
94
94
  */
95
95
  private applyServerVersion;
96
+ /**
97
+ * 反序列化从后端接收的方案数据
98
+ * 将 columnState 和 itemsOrder 从 JSON 字符串转换为数组
99
+ */
100
+ private deserializeSchemesData;
96
101
  /**
97
102
  * 页面卸载前同步
98
103
  */
@@ -10,6 +10,12 @@ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try
10
10
  function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
11
11
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
12
12
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
14
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
15
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
16
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
17
+ 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; } }
18
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
13
19
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
14
20
  function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
15
21
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
@@ -63,11 +69,35 @@ var SchemeSyncManager = exports.SchemeSyncManager = /*#__PURE__*/function () {
63
69
  */
64
70
  _defineProperty(this, "handleBeforeUnload", function () {
65
71
  if (_this.hasDirtyData()) {
72
+ // 序列化列方案和查询方案
73
+ var serializedColumnSchemes = {};
74
+ Object.entries(_this.allData.columnSchemes).forEach(function (_ref) {
75
+ var _ref2 = _slicedToArray(_ref, 2),
76
+ gridId = _ref2[0],
77
+ schemes = _ref2[1];
78
+ serializedColumnSchemes[gridId] = schemes.map(function (scheme) {
79
+ return _objectSpread(_objectSpread({}, scheme), {}, {
80
+ columnState: JSON.stringify(scheme.columnState)
81
+ });
82
+ });
83
+ });
84
+ var serializedQuerySchemes = {};
85
+ Object.entries(_this.allData.querySchemes).forEach(function (_ref3) {
86
+ var _ref4 = _slicedToArray(_ref3, 2),
87
+ gridId = _ref4[0],
88
+ schemes = _ref4[1];
89
+ serializedQuerySchemes[gridId] = schemes.map(function (scheme) {
90
+ return _objectSpread(_objectSpread({}, scheme), {}, {
91
+ itemsOrder: JSON.stringify(scheme.itemsOrder)
92
+ });
93
+ });
94
+ });
95
+
66
96
  // 使用 Beacon API 发送数据(不阻塞页面卸载)
67
97
  var requestData = {
68
98
  clientSyncTime: _this.lastSyncTime,
69
- columnSchemes: _this.allData.columnSchemes,
70
- querySchemes: _this.allData.querySchemes,
99
+ columnSchemes: serializedColumnSchemes,
100
+ querySchemes: serializedQuerySchemes,
71
101
  currentSchemes: _this.allData.currentSchemes
72
102
  };
73
103
  var blob = new Blob([JSON.stringify(requestData)], {
@@ -123,7 +153,7 @@ var SchemeSyncManager = exports.SchemeSyncManager = /*#__PURE__*/function () {
123
153
  key: "initialize",
124
154
  value: (function () {
125
155
  var _initialize = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
126
- var response, data;
156
+ var response, responseData, allSchemesData;
127
157
  return _regeneratorRuntime().wrap(function _callee$(_context) {
128
158
  while (1) switch (_context.prev = _context.next) {
129
159
  case 0:
@@ -147,15 +177,35 @@ var SchemeSyncManager = exports.SchemeSyncManager = /*#__PURE__*/function () {
147
177
  _context.next = 9;
148
178
  return response.json();
149
179
  case 9:
150
- data = _context.sent;
151
- if (data.success) {
152
- _context.next = 12;
180
+ responseData = _context.sent;
181
+ if (!(responseData.success !== undefined)) {
182
+ _context.next = 16;
183
+ break;
184
+ }
185
+ if (responseData.success) {
186
+ _context.next = 13;
153
187
  break;
154
188
  }
155
189
  throw new Error('初始化失败:服务器返回错误');
156
- case 12:
157
- this.allData = data.data;
158
- this.lastSyncTime = data.data.syncTime;
190
+ case 13:
191
+ allSchemesData = responseData.data;
192
+ _context.next = 21;
193
+ break;
194
+ case 16:
195
+ if (!(responseData.columnSchemes !== undefined)) {
196
+ _context.next = 20;
197
+ break;
198
+ }
199
+ // 格式2: 直接返回 AllSchemesData
200
+ allSchemesData = responseData;
201
+ _context.next = 21;
202
+ break;
203
+ case 20:
204
+ throw new Error('初始化失败:服务器返回的数据格式不正确');
205
+ case 21:
206
+ // 反序列化从后端接收的数据
207
+ this.allData = this.deserializeSchemesData(allSchemesData);
208
+ this.lastSyncTime = allSchemesData.syncTime || 0;
159
209
  this.initialized = true;
160
210
 
161
211
  // 启动后台同步
@@ -167,18 +217,18 @@ var SchemeSyncManager = exports.SchemeSyncManager = /*#__PURE__*/function () {
167
217
  querySchemes: Object.keys(this.allData.querySchemes).length,
168
218
  syncTime: new Date(this.lastSyncTime).toISOString()
169
219
  });
170
- _context.next = 23;
220
+ _context.next = 32;
171
221
  break;
172
- case 19:
173
- _context.prev = 19;
222
+ case 28:
223
+ _context.prev = 28;
174
224
  _context.t0 = _context["catch"](3);
175
225
  console.error('[SchemeSyncManager] 初始化失败:', _context.t0);
176
226
  throw _context.t0;
177
- case 23:
227
+ case 32:
178
228
  case "end":
179
229
  return _context.stop();
180
230
  }
181
- }, _callee, this, [[3, 19]]);
231
+ }, _callee, this, [[3, 28]]);
182
232
  }));
183
233
  function initialize() {
184
234
  return _initialize.apply(this, arguments);
@@ -356,7 +406,7 @@ var SchemeSyncManager = exports.SchemeSyncManager = /*#__PURE__*/function () {
356
406
  var _this$events$onSyncSt,
357
407
  _this$events,
358
408
  _this4 = this;
359
- var _this$events$onSyncSu, _this$events3, _result$conflicts, requestData, dirtyColumnGrids, dirtyQueryGrids, dirtyCurrentGrids, response, result, _this$events$onConfli, _this$events2, _this$events$onSyncEr, _this$events4;
409
+ var _this$events$onSyncSu, _this$events3, _syncResult$conflicts, requestData, dirtyColumnGrids, dirtyQueryGrids, dirtyCurrentGrids, response, responseData, syncResult, _this$events$onConfli, _this$events2, _this$events$onSyncEr, _this$events4;
360
410
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
361
411
  while (1) switch (_context2.prev = _context2.next) {
362
412
  case 0:
@@ -390,19 +440,31 @@ var SchemeSyncManager = exports.SchemeSyncManager = /*#__PURE__*/function () {
390
440
  if (types.has('current')) dirtyCurrentGrids.add(gridId);
391
441
  });
392
442
 
393
- // 添加列方案数据
443
+ // 添加列方案数据(将 columnState 序列化为 JSON 字符串)
394
444
  if (dirtyColumnGrids.size > 0) {
395
445
  requestData.columnSchemes = {};
396
446
  dirtyColumnGrids.forEach(function (gridId) {
397
- requestData.columnSchemes[gridId] = _this4.allData.columnSchemes[gridId] || [];
447
+ var schemes = _this4.allData.columnSchemes[gridId] || [];
448
+ // 将每个方案的 columnState 从数组转换为 JSON 字符串
449
+ requestData.columnSchemes[gridId] = schemes.map(function (scheme) {
450
+ return _objectSpread(_objectSpread({}, scheme), {}, {
451
+ columnState: JSON.stringify(scheme.columnState)
452
+ });
453
+ });
398
454
  });
399
455
  }
400
456
 
401
- // 添加查询方案数据
457
+ // 添加查询方案数据(将 itemsOrder 序列化为 JSON 字符串)
402
458
  if (dirtyQueryGrids.size > 0) {
403
459
  requestData.querySchemes = {};
404
460
  dirtyQueryGrids.forEach(function (gridId) {
405
- requestData.querySchemes[gridId] = _this4.allData.querySchemes[gridId] || [];
461
+ var schemes = _this4.allData.querySchemes[gridId] || [];
462
+ // 将每个方案的 itemsOrder 从数组转换为 JSON 字符串
463
+ requestData.querySchemes[gridId] = schemes.map(function (scheme) {
464
+ return _objectSpread(_objectSpread({}, scheme), {}, {
465
+ itemsOrder: JSON.stringify(scheme.itemsOrder)
466
+ });
467
+ });
406
468
  });
407
469
  }
408
470
 
@@ -428,23 +490,46 @@ var SchemeSyncManager = exports.SchemeSyncManager = /*#__PURE__*/function () {
428
490
  _context2.next = 22;
429
491
  return response.json();
430
492
  case 22:
431
- result = _context2.sent;
432
- if (result.success) {
433
- _context2.next = 25;
493
+ responseData = _context2.sent;
494
+ if (!(responseData.success !== undefined)) {
495
+ _context2.next = 29;
496
+ break;
497
+ }
498
+ if (responseData.success) {
499
+ _context2.next = 26;
500
+ break;
501
+ }
502
+ throw new Error(responseData.error || '同步失败');
503
+ case 26:
504
+ syncResult = responseData;
505
+ _context2.next = 34;
506
+ break;
507
+ case 29:
508
+ if (!(responseData.syncTime !== undefined)) {
509
+ _context2.next = 33;
434
510
  break;
435
511
  }
436
- throw new Error(result.error || '同步失败');
437
- case 25:
512
+ // 格式2: 直接返回数据格式,构造一个兼容的结果对象
513
+ syncResult = {
514
+ success: true,
515
+ syncTime: responseData.syncTime,
516
+ conflicts: responseData.conflicts
517
+ };
518
+ _context2.next = 34;
519
+ break;
520
+ case 33:
521
+ throw new Error('同步失败:服务器返回的数据格式不正确');
522
+ case 34:
438
523
  // 处理冲突
439
- if (result.conflicts && result.conflicts.length > 0) {
440
- this.handleConflicts(result.conflicts);
441
- (_this$events$onConfli = (_this$events2 = this.events).onConflict) === null || _this$events$onConfli === void 0 || _this$events$onConfli.call(_this$events2, result.conflicts);
524
+ if (syncResult.conflicts && syncResult.conflicts.length > 0) {
525
+ this.handleConflicts(syncResult.conflicts);
526
+ (_this$events$onConfli = (_this$events2 = this.events).onConflict) === null || _this$events$onConfli === void 0 || _this$events$onConfli.call(_this$events2, syncResult.conflicts);
442
527
  }
443
528
 
444
529
  // 更新同步时间
445
- if (result.syncTime) {
446
- this.lastSyncTime = result.syncTime;
447
- this.allData.syncTime = result.syncTime;
530
+ if (syncResult.syncTime) {
531
+ this.lastSyncTime = syncResult.syncTime;
532
+ this.allData.syncTime = syncResult.syncTime;
448
533
  }
449
534
 
450
535
  // 清除脏数据标记
@@ -452,25 +537,25 @@ var SchemeSyncManager = exports.SchemeSyncManager = /*#__PURE__*/function () {
452
537
  (_this$events$onSyncSu = (_this$events3 = this.events).onSyncSuccess) === null || _this$events$onSyncSu === void 0 || _this$events$onSyncSu.call(_this$events3, this.lastSyncTime);
453
538
  console.log('[SchemeSyncManager] 同步成功:', {
454
539
  syncTime: new Date(this.lastSyncTime).toISOString(),
455
- conflicts: ((_result$conflicts = result.conflicts) === null || _result$conflicts === void 0 ? void 0 : _result$conflicts.length) || 0
540
+ conflicts: ((_syncResult$conflicts = syncResult.conflicts) === null || _syncResult$conflicts === void 0 ? void 0 : _syncResult$conflicts.length) || 0
456
541
  });
457
- _context2.next = 37;
542
+ _context2.next = 46;
458
543
  break;
459
- case 32:
460
- _context2.prev = 32;
544
+ case 41:
545
+ _context2.prev = 41;
461
546
  _context2.t0 = _context2["catch"](8);
462
547
  console.error('[SchemeSyncManager] 同步失败:', _context2.t0);
463
548
  (_this$events$onSyncEr = (_this$events4 = this.events).onSyncError) === null || _this$events$onSyncEr === void 0 || _this$events$onSyncEr.call(_this$events4, _context2.t0);
464
549
  throw _context2.t0;
465
- case 37:
466
- _context2.prev = 37;
550
+ case 46:
551
+ _context2.prev = 46;
467
552
  this.syncing = false;
468
- return _context2.finish(37);
469
- case 40:
553
+ return _context2.finish(46);
554
+ case 49:
470
555
  case "end":
471
556
  return _context2.stop();
472
557
  }
473
- }, _callee2, this, [[8, 32, 37, 40]]);
558
+ }, _callee2, this, [[8, 41, 46, 49]]);
474
559
  }));
475
560
  function syncNow() {
476
561
  return _syncNow.apply(this, arguments);
@@ -532,6 +617,48 @@ var SchemeSyncManager = exports.SchemeSyncManager = /*#__PURE__*/function () {
532
617
  type: type
533
618
  });
534
619
  }
620
+
621
+ /**
622
+ * 反序列化从后端接收的方案数据
623
+ * 将 columnState 和 itemsOrder 从 JSON 字符串转换为数组
624
+ */
625
+ }, {
626
+ key: "deserializeSchemesData",
627
+ value: function deserializeSchemesData(data) {
628
+ var result = _objectSpread(_objectSpread({}, data), {}, {
629
+ columnSchemes: {},
630
+ querySchemes: {}
631
+ });
632
+
633
+ // 反序列化列方案
634
+ Object.entries(data.columnSchemes || {}).forEach(function (_ref5) {
635
+ var _ref6 = _slicedToArray(_ref5, 2),
636
+ gridId = _ref6[0],
637
+ schemes = _ref6[1];
638
+ result.columnSchemes[gridId] = schemes.map(function (scheme) {
639
+ // 如果 columnState 是字符串,则解析为数组
640
+ var columnState = typeof scheme.columnState === 'string' ? JSON.parse(scheme.columnState) : scheme.columnState;
641
+ return _objectSpread(_objectSpread({}, scheme), {}, {
642
+ columnState: columnState
643
+ });
644
+ });
645
+ });
646
+
647
+ // 反序列化查询方案
648
+ Object.entries(data.querySchemes || {}).forEach(function (_ref7) {
649
+ var _ref8 = _slicedToArray(_ref7, 2),
650
+ gridId = _ref8[0],
651
+ schemes = _ref8[1];
652
+ result.querySchemes[gridId] = schemes.map(function (scheme) {
653
+ // 如果 itemsOrder 是字符串,则解析为数组
654
+ var itemsOrder = typeof scheme.itemsOrder === 'string' ? JSON.parse(scheme.itemsOrder) : scheme.itemsOrder;
655
+ return _objectSpread(_objectSpread({}, scheme), {}, {
656
+ itemsOrder: itemsOrder
657
+ });
658
+ });
659
+ });
660
+ return result;
661
+ }
535
662
  }, {
536
663
  key: "fetchWithRetry",
537
664
  value: (
@@ -1,5 +1,4 @@
1
1
  import React from 'react';
2
- import "ag-grid-enterprise";
3
2
  import './index.less';
4
3
  import { GridProps } from './interface';
5
4
  declare function AgGridPlus(props: GridProps): React.JSX.Element;
@@ -1,7 +1,7 @@
1
1
  import _sumBy from "lodash/sumBy";
2
2
  import _uniqueId from "lodash/uniqueId";
3
3
  import _isArray from "lodash/isArray";
4
- var _excluded = ["style", "loading", "params", "request", "dataSource", "treeKeyName", "treeParentName", "rowData", "gridRef", "headerTitle", "toolBarRender", "search", "hideTool", "onGridReady", "gridKey", "children", "defaultSearchExpand", "overlayNoRowsTemplateText", "queryDefaultRows", "onSelectedRowsChange", "enableQuerySchemes", "querySchemeStorageAdapter", "querySchemeManager", "enableColumnSchemes", "columnSchemeStorageAdapter", "columnSchemeManager"];
4
+ var _excluded = ["style", "loading", "params", "request", "dataSource", "treeKeyName", "treeParentName", "rowData", "gridRef", "headerTitle", "toolBarRender", "search", "hideTool", "onGridReady", "gridKey", "children", "defaultSearchExpand", "overlayNoRowsTemplateText", "queryDefaultRows", "onSelectedRowsChange", "enableQuerySchemes", "querySchemeStorageAdapter", "querySchemeManager", "enableColumnSchemes", "columnSchemeStorageAdapter", "columnSchemeManager", "enableClickSelection", "rowSelection"];
5
5
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
6
6
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
7
7
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
@@ -17,10 +17,14 @@ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" !=
17
17
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
18
18
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
19
19
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
20
+ import { ModuleRegistry } from 'ag-grid-community';
20
21
  import { AgGridReact } from 'ag-grid-react';
21
22
  import { Spin, Pagination, Card, Tag, Typography } from 'antd';
22
23
  import React, { useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';
23
- import "ag-grid-enterprise";
24
+ import { AllEnterpriseModule } from "ag-grid-enterprise";
25
+
26
+ // AG-Grid v33+ 需要显式注册模块
27
+ ModuleRegistry.registerModules([AllEnterpriseModule]);
24
28
  import "./index.less";
25
29
  import FormRender from "./queryForm";
26
30
  import ToolBar from "./toolBar";
@@ -76,6 +80,9 @@ function AgGridPlus(props) {
76
80
  enableColumnSchemes = _props$enableColumnSc === void 0 ? true : _props$enableColumnSc,
77
81
  columnSchemeStorageAdapter = props.columnSchemeStorageAdapter,
78
82
  propsColumnSchemeManager = props.columnSchemeManager,
83
+ _props$enableClickSel = props.enableClickSelection,
84
+ enableClickSelection = _props$enableClickSel === void 0 ? true : _props$enableClickSel,
85
+ propsRowSelection = props.rowSelection,
79
86
  rest = _objectWithoutProperties(props, _excluded);
80
87
  var _useGridPlusColumnSta = useGridPlusColumnState(),
81
88
  onSaveColumnState = _useGridPlusColumnSta.onSaveColumnState,
@@ -415,6 +422,49 @@ function AgGridPlus(props) {
415
422
  var stableQueryFilter = useMemo(function () {
416
423
  return queryFilter;
417
424
  }, [JSON.stringify(queryFilter)]);
425
+
426
+ // AG-Grid v33+ 行选择配置(使用对象 API)
427
+ var rowSelectionConfig = useMemo(function () {
428
+ // 如果用户提供了 rowSelection 配置
429
+ if (propsRowSelection) {
430
+ // 如果是对象类型,增强它
431
+ if (_typeof(propsRowSelection) === 'object') {
432
+ var config = propsRowSelection;
433
+ // 如果没有设置 enableClickSelection,使用组件的 enableClickSelection prop
434
+ if (config.enableClickSelection === undefined) {
435
+ return _objectSpread(_objectSpread({}, config), {}, {
436
+ enableClickSelection: enableClickSelection,
437
+ // 只有在多选模式且启用点击选择时,才启用无键多选
438
+ enableSelectionWithoutKeys: enableClickSelection !== false && config.mode !== 'singleRow'
439
+ });
440
+ }
441
+ return config;
442
+ }
443
+ // 如果是字符串(旧 API),转换为新的对象 API
444
+ var isMultiRow = propsRowSelection !== 'single';
445
+ return {
446
+ mode: isMultiRow ? 'multiRow' : 'singleRow',
447
+ enableClickSelection: enableClickSelection,
448
+ enableSelectionWithoutKeys: isMultiRow && enableClickSelection !== false
449
+ };
450
+ }
451
+
452
+ // 默认配置:启用多选和点击选择
453
+ if (enableClickSelection !== false) {
454
+ return {
455
+ mode: 'multiRow',
456
+ enableClickSelection: true,
457
+ enableSelectionWithoutKeys: true
458
+ };
459
+ }
460
+
461
+ // 如果禁用点击选择,返回基础多选模式(v33 对象格式)
462
+ return {
463
+ mode: 'multiRow',
464
+ enableClickSelection: false
465
+ };
466
+ }, [propsRowSelection, enableClickSelection]);
467
+ console.log('[AgGridPlus] rowSelection config:', JSON.stringify(rowSelectionConfig));
418
468
  var onGridReady = useCallback(function (params) {
419
469
  var _apiRef$current3;
420
470
  apiRef.current = params.api;
@@ -511,6 +561,7 @@ function AgGridPlus(props) {
511
561
  var depsRef = useRef({
512
562
  ready: ready,
513
563
  stableQueryFilter: stableQueryFilter,
564
+ stableGridParams: stableGridParams,
514
565
  paginationCurrent: pagination.current,
515
566
  paginationPageSize: pagination.pageSize,
516
567
  stableSortColumn: stableSortColumn
@@ -522,6 +573,7 @@ function AgGridPlus(props) {
522
573
  var changedDeps = [];
523
574
  if (prevDeps.ready !== ready) changedDeps.push('ready');
524
575
  if (prevDeps.stableQueryFilter !== stableQueryFilter) changedDeps.push('stableQueryFilter');
576
+ if (prevDeps.stableGridParams !== stableGridParams) changedDeps.push('stableGridParams');
525
577
  if (prevDeps.paginationCurrent !== pagination.current) changedDeps.push('pagination.current');
526
578
  if (prevDeps.paginationPageSize !== pagination.pageSize) changedDeps.push('pagination.pageSize');
527
579
  if (prevDeps.stableSortColumn !== stableSortColumn) changedDeps.push('stableSortColumn');
@@ -531,6 +583,7 @@ function AgGridPlus(props) {
531
583
  depsRef.current = {
532
584
  ready: ready,
533
585
  stableQueryFilter: stableQueryFilter,
586
+ stableGridParams: stableGridParams,
534
587
  paginationCurrent: pagination.current,
535
588
  paginationPageSize: pagination.pageSize,
536
589
  stableSortColumn: stableSortColumn
@@ -540,6 +593,7 @@ function AgGridPlus(props) {
540
593
  ready: ready,
541
594
  hasRequest: !!requestRef.current,
542
595
  queryFilter: stableQueryFilter,
596
+ stableGridParams: stableGridParams,
543
597
  'pagination.current': pagination.current,
544
598
  'pagination.pageSize': pagination.pageSize,
545
599
  stableSortColumn: stableSortColumn,
@@ -547,7 +601,7 @@ function AgGridPlus(props) {
547
601
  });
548
602
  onRequest(stableQueryFilter);
549
603
  }
550
- }, [ready, stableQueryFilter, pagination.current, pagination.pageSize, stableSortColumn]);
604
+ }, [ready, stableQueryFilter, stableGridParams, pagination.current, pagination.pageSize, stableSortColumn]);
551
605
  var handelgridPlusColumnState = function handelgridPlusColumnState(columnState) {
552
606
  var cellMap = {};
553
607
  if (_isArray(columnState)) {
@@ -935,6 +989,7 @@ function AgGridPlus(props) {
935
989
  onFilterChanged: onFilterChanged,
936
990
  onSelectionChanged: onRowChanged,
937
991
  onRowSelected: onRowSelected,
992
+ rowSelection: rowSelectionConfig,
938
993
  onDragStopped: function onDragStopped(e) {
939
994
  if (apiRef.current) {
940
995
  var _apiRef$current7;