@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.
- package/dist/cjs/ag-grid-plus/ag-gridPlus.d.ts +0 -1
- package/dist/cjs/ag-grid-plus/ag-gridPlus.js +57 -3
- package/dist/cjs/ag-grid-plus/interface.d.ts +19 -0
- package/dist/cjs/ag-grid-plus/storage/SchemeSyncManager.d.ts +5 -0
- package/dist/cjs/ag-grid-plus/storage/SchemeSyncManager.js +166 -39
- package/dist/esm/ag-grid-plus/ag-gridPlus.d.ts +0 -1
- package/dist/esm/ag-grid-plus/ag-gridPlus.js +58 -3
- package/dist/esm/ag-grid-plus/interface.d.ts +19 -0
- package/dist/esm/ag-grid-plus/storage/SchemeSyncManager.d.ts +5 -0
- package/dist/esm/ag-grid-plus/storage/SchemeSyncManager.js +166 -39
- package/dist/umd/qc-ui.min.js +1 -1
- package/package.json +4 -4
|
@@ -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
|
/**
|
|
@@ -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:
|
|
70
|
-
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,
|
|
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
|
-
|
|
151
|
-
if (
|
|
152
|
-
_context.next =
|
|
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
|
|
157
|
-
|
|
158
|
-
|
|
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 =
|
|
220
|
+
_context.next = 32;
|
|
171
221
|
break;
|
|
172
|
-
case
|
|
173
|
-
_context.prev =
|
|
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
|
|
227
|
+
case 32:
|
|
178
228
|
case "end":
|
|
179
229
|
return _context.stop();
|
|
180
230
|
}
|
|
181
|
-
}, _callee, this, [[3,
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
432
|
-
if (
|
|
433
|
-
_context2.next =
|
|
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
|
-
|
|
437
|
-
|
|
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 (
|
|
440
|
-
this.handleConflicts(
|
|
441
|
-
(_this$events$onConfli = (_this$events2 = this.events).onConflict) === null || _this$events$onConfli === void 0 || _this$events$onConfli.call(_this$events2,
|
|
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 (
|
|
446
|
-
this.lastSyncTime =
|
|
447
|
-
this.allData.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: ((
|
|
540
|
+
conflicts: ((_syncResult$conflicts = syncResult.conflicts) === null || _syncResult$conflicts === void 0 ? void 0 : _syncResult$conflicts.length) || 0
|
|
456
541
|
});
|
|
457
|
-
_context2.next =
|
|
542
|
+
_context2.next = 46;
|
|
458
543
|
break;
|
|
459
|
-
case
|
|
460
|
-
_context2.prev =
|
|
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
|
|
466
|
-
_context2.prev =
|
|
550
|
+
case 46:
|
|
551
|
+
_context2.prev = 46;
|
|
467
552
|
this.syncing = false;
|
|
468
|
-
return _context2.finish(
|
|
469
|
-
case
|
|
553
|
+
return _context2.finish(46);
|
|
554
|
+
case 49:
|
|
470
555
|
case "end":
|
|
471
556
|
return _context2.stop();
|
|
472
557
|
}
|
|
473
|
-
}, _callee2, this, [[8,
|
|
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,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;
|