@nokecy/qc-ui 1.1.31 → 1.1.33
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 +14 -3
- package/dist/cjs/ag-grid-plus/context/gridContext.d.ts +22 -0
- package/dist/cjs/ag-grid-plus/context/useSchemeManager.d.ts +3 -0
- package/dist/cjs/ag-grid-plus/context/useSchemeManager.js +160 -1
- package/dist/cjs/ag-grid-plus/index.d.ts +1 -0
- package/dist/cjs/ag-grid-plus/setting/ColumnSetting.js +192 -50
- package/dist/cjs/ag-grid-plus/shared/permissions/globalConfigPermissions.d.ts +22 -0
- package/dist/cjs/ag-grid-plus/shared/permissions/globalConfigPermissions.js +5 -0
- package/dist/cjs/ag-grid-plus/shared/storage/backendApiAdapter.js +11 -6
- package/dist/cjs/ag-grid-plus/shared/storage/localStorageAdapter.d.ts +18 -0
- package/dist/cjs/ag-grid-plus/shared/storage/localStorageAdapter.js +114 -0
- package/dist/cjs/ag-grid-plus/shared/storage/schemeStorageAdapter.d.ts +25 -0
- package/dist/cjs/index.d.ts +1 -1
- package/dist/esm/ag-grid-plus/ag-gridPlus.js +14 -3
- package/dist/esm/ag-grid-plus/context/gridContext.d.ts +22 -0
- package/dist/esm/ag-grid-plus/context/useSchemeManager.d.ts +3 -0
- package/dist/esm/ag-grid-plus/context/useSchemeManager.js +160 -1
- package/dist/esm/ag-grid-plus/index.d.ts +1 -0
- package/dist/esm/ag-grid-plus/index.js +2 -0
- package/dist/esm/ag-grid-plus/setting/ColumnSetting.js +195 -51
- package/dist/esm/ag-grid-plus/shared/permissions/globalConfigPermissions.d.ts +22 -0
- package/dist/esm/ag-grid-plus/shared/permissions/globalConfigPermissions.js +1 -0
- package/dist/esm/ag-grid-plus/shared/storage/backendApiAdapter.js +11 -6
- package/dist/esm/ag-grid-plus/shared/storage/localStorageAdapter.d.ts +18 -0
- package/dist/esm/ag-grid-plus/shared/storage/localStorageAdapter.js +114 -0
- package/dist/esm/ag-grid-plus/shared/storage/schemeStorageAdapter.d.ts +25 -0
- package/dist/esm/index.d.ts +1 -1
- package/dist/umd/qc-ui.min.js +1 -1
- package/package.json +1 -1
|
@@ -100,7 +100,11 @@ function AgGridPlus(props) {
|
|
|
100
100
|
extensibleColumns = _useGridPlusColumnSta.extensibleColumns,
|
|
101
101
|
applyToGlobal = _useGridPlusColumnSta.applyToGlobal,
|
|
102
102
|
resetCurrent = _useGridPlusColumnSta.resetCurrent,
|
|
103
|
-
resetAll = _useGridPlusColumnSta.resetAll
|
|
103
|
+
resetAll = _useGridPlusColumnSta.resetAll,
|
|
104
|
+
globalConfigPermissions = _useGridPlusColumnSta.globalConfigPermissions,
|
|
105
|
+
applySchemeToGlobal = _useGridPlusColumnSta.applySchemeToGlobal,
|
|
106
|
+
resetToGlobal = _useGridPlusColumnSta.resetToGlobal,
|
|
107
|
+
resetAllUsers = _useGridPlusColumnSta.resetAllUsers;
|
|
104
108
|
var gridRef = (0, _react.useRef)();
|
|
105
109
|
var apiRef = (0, _react.useRef)();
|
|
106
110
|
var allColDefsRef = (0, _react.useRef)([]);
|
|
@@ -1253,7 +1257,12 @@ function AgGridPlus(props) {
|
|
|
1253
1257
|
refreshSchemes: refreshSchemes,
|
|
1254
1258
|
getColumnSchemes: getColumnSchemes,
|
|
1255
1259
|
getQuerySchemes: getQuerySchemes,
|
|
1256
|
-
getCurrentScheme: getCurrentScheme
|
|
1260
|
+
getCurrentScheme: getCurrentScheme,
|
|
1261
|
+
// ========== 全局配置 API(透传给子组件) ==========
|
|
1262
|
+
globalConfigPermissions: globalConfigPermissions,
|
|
1263
|
+
applySchemeToGlobal: applySchemeToGlobal,
|
|
1264
|
+
resetToGlobal: resetToGlobal,
|
|
1265
|
+
resetAllUsers: resetAllUsers
|
|
1257
1266
|
};
|
|
1258
1267
|
}, [extensibleColumns, gridPlusColumnState, allColDefsRef.current,
|
|
1259
1268
|
// 【修复】添加到依赖数组
|
|
@@ -1261,7 +1270,9 @@ function AgGridPlus(props) {
|
|
|
1261
1270
|
// 【新增】添加初始列定义到依赖数组
|
|
1262
1271
|
onSaveColumnState, applyToGlobal, resetCurrent, resetAll, currentQueryScheme, queryItemsOrder, queryFormItems,
|
|
1263
1272
|
// 方案管理依赖
|
|
1264
|
-
columnSchemes, querySchemes, currentSchemes, schemesLoading, lastSyncTime, saveColumnScheme, deleteColumnScheme, saveQueryScheme, deleteQueryScheme, setCurrentColumnScheme, setCurrentQueryScheme, refreshSchemes, getColumnSchemes, getQuerySchemes, getCurrentScheme
|
|
1273
|
+
columnSchemes, querySchemes, currentSchemes, schemesLoading, lastSyncTime, saveColumnScheme, deleteColumnScheme, saveQueryScheme, deleteQueryScheme, setCurrentColumnScheme, setCurrentQueryScheme, refreshSchemes, getColumnSchemes, getQuerySchemes, getCurrentScheme,
|
|
1274
|
+
// 全局配置依赖
|
|
1275
|
+
globalConfigPermissions, applySchemeToGlobal, resetToGlobal, resetAllUsers]);
|
|
1265
1276
|
return /*#__PURE__*/_react.default.createElement(_gridContext.GridPlusContext.Provider, {
|
|
1266
1277
|
value: gridPlusContextValue
|
|
1267
1278
|
}, /*#__PURE__*/_react.default.createElement(_antd.Spin, {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import type { ColumnScheme, QueryScheme, CurrentSchemeDto } from "../shared/storage/schemeStorageAdapter";
|
|
3
|
+
import type { GlobalConfigPermissions } from '../shared/permissions/globalConfigPermissions';
|
|
3
4
|
/**
|
|
4
5
|
* 方案管理 API 接口
|
|
5
6
|
*
|
|
@@ -144,5 +145,26 @@ export interface GridPlusContextValue extends SchemeManagementAPI {
|
|
|
144
145
|
* 此字段由 useSchemeManager 自动管理,无需手动设置
|
|
145
146
|
*/
|
|
146
147
|
currentUserId?: string | null;
|
|
148
|
+
/**
|
|
149
|
+
* 将当前列配置应用为全局默认(管理员操作)
|
|
150
|
+
* @param gridId 表格标识
|
|
151
|
+
* @param schemeId 源方案ID(可选,不传则使用当前激活的方案)
|
|
152
|
+
*/
|
|
153
|
+
applySchemeToGlobal?: (gridId: string, schemeId?: string) => Promise<void>;
|
|
154
|
+
/**
|
|
155
|
+
* 重置当前用户配置,回退到全局配置
|
|
156
|
+
* @param gridId 表格标识
|
|
157
|
+
*/
|
|
158
|
+
resetToGlobal?: (gridId: string) => Promise<void>;
|
|
159
|
+
/**
|
|
160
|
+
* 重置所有用户配置(管理员操作)
|
|
161
|
+
* @param gridId 表格标识
|
|
162
|
+
*/
|
|
163
|
+
resetAllUsers?: (gridId: string) => Promise<void>;
|
|
164
|
+
/**
|
|
165
|
+
* 全局配置权限信息
|
|
166
|
+
* 由使用端(业务应用)传入,用于前端根据权限动态显示/隐藏操作按钮
|
|
167
|
+
*/
|
|
168
|
+
globalConfigPermissions?: GlobalConfigPermissions;
|
|
147
169
|
}
|
|
148
170
|
export declare const GridPlusContext: React.Context<GridPlusContextValue>;
|
|
@@ -51,6 +51,9 @@ export declare function useSchemeManager(config: UseSchemeManagerConfig): {
|
|
|
51
51
|
getColumnSchemes: (gridId: string) => ColumnScheme[];
|
|
52
52
|
getQuerySchemes: (gridId: string) => QueryScheme[];
|
|
53
53
|
getCurrentScheme: (gridId: string) => CurrentSchemeDto | null;
|
|
54
|
+
applySchemeToGlobal: (gridId: string, schemeId?: string) => Promise<string>;
|
|
55
|
+
resetToGlobal: (gridId: string) => Promise<void>;
|
|
56
|
+
resetAllUsers: (gridId: string) => Promise<void>;
|
|
54
57
|
};
|
|
55
58
|
/**
|
|
56
59
|
* 在组件中使用集中式方案管理
|
|
@@ -436,6 +436,161 @@ function useSchemeManager(config) {
|
|
|
436
436
|
}
|
|
437
437
|
}, _callee8);
|
|
438
438
|
})), [loadAllSchemes]);
|
|
439
|
+
|
|
440
|
+
// ========== 全局配置操作 ==========
|
|
441
|
+
|
|
442
|
+
/**
|
|
443
|
+
* 处理全局配置操作的错误
|
|
444
|
+
* @author nokecy
|
|
445
|
+
*/
|
|
446
|
+
var handleGlobalConfigError = (0, _react.useCallback)(function (error, defaultMessage) {
|
|
447
|
+
var _error$response;
|
|
448
|
+
if (((_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.status) === 403) {
|
|
449
|
+
_antd.message.error('没有权限执行此操作');
|
|
450
|
+
} else {
|
|
451
|
+
_antd.message.error(error.message || defaultMessage);
|
|
452
|
+
}
|
|
453
|
+
}, []);
|
|
454
|
+
|
|
455
|
+
/**
|
|
456
|
+
* 将方案应用到全局(管理员操作)
|
|
457
|
+
* @author nokecy
|
|
458
|
+
*/
|
|
459
|
+
var applySchemeToGlobal = (0, _react.useCallback)( /*#__PURE__*/function () {
|
|
460
|
+
var _ref9 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee9(gridId, schemeId) {
|
|
461
|
+
var _currentSchemes$gridI3;
|
|
462
|
+
var targetSchemeId, globalSchemeId;
|
|
463
|
+
return _regeneratorRuntime().wrap(function _callee9$(_context9) {
|
|
464
|
+
while (1) switch (_context9.prev = _context9.next) {
|
|
465
|
+
case 0:
|
|
466
|
+
targetSchemeId = schemeId || ((_currentSchemes$gridI3 = currentSchemes[gridId]) === null || _currentSchemes$gridI3 === void 0 ? void 0 : _currentSchemes$gridI3.columnSchemeId);
|
|
467
|
+
if (targetSchemeId) {
|
|
468
|
+
_context9.next = 3;
|
|
469
|
+
break;
|
|
470
|
+
}
|
|
471
|
+
throw new Error('没有可应用的方案');
|
|
472
|
+
case 3:
|
|
473
|
+
if (adapter.applyToGlobal) {
|
|
474
|
+
_context9.next = 5;
|
|
475
|
+
break;
|
|
476
|
+
}
|
|
477
|
+
throw new Error('当前存储适配器不支持全局配置功能');
|
|
478
|
+
case 5:
|
|
479
|
+
_context9.prev = 5;
|
|
480
|
+
_context9.next = 8;
|
|
481
|
+
return adapter.applyToGlobal(gridId, targetSchemeId);
|
|
482
|
+
case 8:
|
|
483
|
+
globalSchemeId = _context9.sent;
|
|
484
|
+
_antd.message.success('已应用到全局配置');
|
|
485
|
+
_context9.next = 12;
|
|
486
|
+
return refreshSchemes();
|
|
487
|
+
case 12:
|
|
488
|
+
return _context9.abrupt("return", globalSchemeId);
|
|
489
|
+
case 15:
|
|
490
|
+
_context9.prev = 15;
|
|
491
|
+
_context9.t0 = _context9["catch"](5);
|
|
492
|
+
console.error('[useSchemeManager] 应用到全局失败:', _context9.t0);
|
|
493
|
+
handleGlobalConfigError(_context9.t0, '应用到全局失败');
|
|
494
|
+
throw _context9.t0;
|
|
495
|
+
case 20:
|
|
496
|
+
case "end":
|
|
497
|
+
return _context9.stop();
|
|
498
|
+
}
|
|
499
|
+
}, _callee9, null, [[5, 15]]);
|
|
500
|
+
}));
|
|
501
|
+
return function (_x13, _x14) {
|
|
502
|
+
return _ref9.apply(this, arguments);
|
|
503
|
+
};
|
|
504
|
+
}(), [adapter, currentSchemes, refreshSchemes, handleGlobalConfigError]);
|
|
505
|
+
|
|
506
|
+
/**
|
|
507
|
+
* 重置当前用户配置,回退到全局配置
|
|
508
|
+
* @author nokecy
|
|
509
|
+
*/
|
|
510
|
+
var resetToGlobal = (0, _react.useCallback)( /*#__PURE__*/function () {
|
|
511
|
+
var _ref10 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee10(gridId) {
|
|
512
|
+
return _regeneratorRuntime().wrap(function _callee10$(_context10) {
|
|
513
|
+
while (1) switch (_context10.prev = _context10.next) {
|
|
514
|
+
case 0:
|
|
515
|
+
if (adapter.resetToGlobal) {
|
|
516
|
+
_context10.next = 2;
|
|
517
|
+
break;
|
|
518
|
+
}
|
|
519
|
+
throw new Error('当前存储适配器不支持全局配置功能');
|
|
520
|
+
case 2:
|
|
521
|
+
_context10.prev = 2;
|
|
522
|
+
_context10.next = 5;
|
|
523
|
+
return adapter.resetToGlobal(gridId);
|
|
524
|
+
case 5:
|
|
525
|
+
setCurrentSchemes(function (prev) {
|
|
526
|
+
return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, gridId, _objectSpread(_objectSpread({}, prev[gridId]), {}, {
|
|
527
|
+
columnSchemeId: null
|
|
528
|
+
})));
|
|
529
|
+
});
|
|
530
|
+
_context10.next = 8;
|
|
531
|
+
return refreshSchemes();
|
|
532
|
+
case 8:
|
|
533
|
+
_antd.message.success('已重置为全局配置');
|
|
534
|
+
_context10.next = 16;
|
|
535
|
+
break;
|
|
536
|
+
case 11:
|
|
537
|
+
_context10.prev = 11;
|
|
538
|
+
_context10.t0 = _context10["catch"](2);
|
|
539
|
+
console.error('[useSchemeManager] 重置为全局配置失败:', _context10.t0);
|
|
540
|
+
handleGlobalConfigError(_context10.t0, '重置失败');
|
|
541
|
+
throw _context10.t0;
|
|
542
|
+
case 16:
|
|
543
|
+
case "end":
|
|
544
|
+
return _context10.stop();
|
|
545
|
+
}
|
|
546
|
+
}, _callee10, null, [[2, 11]]);
|
|
547
|
+
}));
|
|
548
|
+
return function (_x15) {
|
|
549
|
+
return _ref10.apply(this, arguments);
|
|
550
|
+
};
|
|
551
|
+
}(), [adapter, refreshSchemes, handleGlobalConfigError]);
|
|
552
|
+
|
|
553
|
+
/**
|
|
554
|
+
* 重置所有用户配置(管理员操作)
|
|
555
|
+
* @author nokecy
|
|
556
|
+
*/
|
|
557
|
+
var resetAllUsers = (0, _react.useCallback)( /*#__PURE__*/function () {
|
|
558
|
+
var _ref11 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee11(gridId) {
|
|
559
|
+
return _regeneratorRuntime().wrap(function _callee11$(_context11) {
|
|
560
|
+
while (1) switch (_context11.prev = _context11.next) {
|
|
561
|
+
case 0:
|
|
562
|
+
if (adapter.resetAllUsers) {
|
|
563
|
+
_context11.next = 2;
|
|
564
|
+
break;
|
|
565
|
+
}
|
|
566
|
+
throw new Error('当前存储适配器不支持全局配置功能');
|
|
567
|
+
case 2:
|
|
568
|
+
_context11.prev = 2;
|
|
569
|
+
_context11.next = 5;
|
|
570
|
+
return adapter.resetAllUsers(gridId);
|
|
571
|
+
case 5:
|
|
572
|
+
_context11.next = 7;
|
|
573
|
+
return refreshSchemes();
|
|
574
|
+
case 7:
|
|
575
|
+
_antd.message.success('已重置所有用户配置');
|
|
576
|
+
_context11.next = 15;
|
|
577
|
+
break;
|
|
578
|
+
case 10:
|
|
579
|
+
_context11.prev = 10;
|
|
580
|
+
_context11.t0 = _context11["catch"](2);
|
|
581
|
+
console.error('[useSchemeManager] 重置所有用户配置失败:', _context11.t0);
|
|
582
|
+
handleGlobalConfigError(_context11.t0, '重置失败');
|
|
583
|
+
throw _context11.t0;
|
|
584
|
+
case 15:
|
|
585
|
+
case "end":
|
|
586
|
+
return _context11.stop();
|
|
587
|
+
}
|
|
588
|
+
}, _callee11, null, [[2, 10]]);
|
|
589
|
+
}));
|
|
590
|
+
return function (_x16) {
|
|
591
|
+
return _ref11.apply(this, arguments);
|
|
592
|
+
};
|
|
593
|
+
}(), [adapter, refreshSchemes, handleGlobalConfigError]);
|
|
439
594
|
var getColumnSchemes = (0, _react.useCallback)(function (gridId) {
|
|
440
595
|
return columnSchemes[gridId] || [];
|
|
441
596
|
}, [columnSchemes]);
|
|
@@ -467,7 +622,11 @@ function useSchemeManager(config) {
|
|
|
467
622
|
refreshSchemes: refreshSchemes,
|
|
468
623
|
getColumnSchemes: getColumnSchemes,
|
|
469
624
|
getQuerySchemes: getQuerySchemes,
|
|
470
|
-
getCurrentScheme: getCurrentScheme
|
|
625
|
+
getCurrentScheme: getCurrentScheme,
|
|
626
|
+
// 全局配置操作
|
|
627
|
+
applySchemeToGlobal: applySchemeToGlobal,
|
|
628
|
+
resetToGlobal: resetToGlobal,
|
|
629
|
+
resetAllUsers: resetAllUsers
|
|
471
630
|
};
|
|
472
631
|
}
|
|
473
632
|
|
|
@@ -12,3 +12,4 @@ export type { SchemeStorageAdapter, SchemeSyncDataDto, CurrentSchemeDto, SchemeS
|
|
|
12
12
|
export type { UseSchemeManagerConfig } from "./context/useSchemeManager";
|
|
13
13
|
export type { BackendApiAdapterConfig } from "./shared/storage/backendApiAdapter";
|
|
14
14
|
export type { LocalStorageAdapterConfig } from "./shared/storage/localStorageAdapter";
|
|
15
|
+
export type { GlobalConfigPermissions } from "./shared/permissions/globalConfigPermissions";
|
|
@@ -50,7 +50,7 @@ var TextArea = _antd.Input.TextArea;
|
|
|
50
50
|
* 列方案管理组件 - 集成列配置和列方案管理
|
|
51
51
|
*/
|
|
52
52
|
var ColumnSetting = function ColumnSetting(_ref) {
|
|
53
|
-
var _currentSchemes$gridK4;
|
|
53
|
+
var _globalConfigPermissi, _globalConfigPermissi2, _currentSchemes$gridK4;
|
|
54
54
|
var gridKey = _ref.gridKey,
|
|
55
55
|
gridApi = _ref.gridApi,
|
|
56
56
|
visible = _ref.visible,
|
|
@@ -64,7 +64,15 @@ var ColumnSetting = function ColumnSetting(_ref) {
|
|
|
64
64
|
initialColumnDefs = _useGridSchemes.initialColumnDefs,
|
|
65
65
|
saveColumnScheme = _useGridSchemes.saveColumnScheme,
|
|
66
66
|
deleteColumnScheme = _useGridSchemes.deleteColumnScheme,
|
|
67
|
-
setCurrentColumnScheme = _useGridSchemes.setCurrentColumnScheme
|
|
67
|
+
setCurrentColumnScheme = _useGridSchemes.setCurrentColumnScheme,
|
|
68
|
+
applySchemeToGlobal = _useGridSchemes.applySchemeToGlobal,
|
|
69
|
+
resetToGlobal = _useGridSchemes.resetToGlobal,
|
|
70
|
+
resetAllUsers = _useGridSchemes.resetAllUsers,
|
|
71
|
+
globalConfigPermissions = _useGridSchemes.globalConfigPermissions;
|
|
72
|
+
|
|
73
|
+
// 解构权限信息
|
|
74
|
+
var canApplyToGlobal = (_globalConfigPermissi = globalConfigPermissions === null || globalConfigPermissions === void 0 ? void 0 : globalConfigPermissions.canApplyToGlobal) !== null && _globalConfigPermissi !== void 0 ? _globalConfigPermissi : false;
|
|
75
|
+
var canResetAllUsers = (_globalConfigPermissi2 = globalConfigPermissions === null || globalConfigPermissions === void 0 ? void 0 : globalConfigPermissions.canResetAllUsers) !== null && _globalConfigPermissi2 !== void 0 ? _globalConfigPermissi2 : false;
|
|
68
76
|
|
|
69
77
|
// 获取当前表格的方案列表
|
|
70
78
|
var schemes = (columnSchemes === null || columnSchemes === void 0 ? void 0 : columnSchemes[gridKey]) || [];
|
|
@@ -514,9 +522,16 @@ var ColumnSetting = function ColumnSetting(_ref) {
|
|
|
514
522
|
_context2.prev = 8;
|
|
515
523
|
filterModel = gridApi.getFilterModel();
|
|
516
524
|
if (!currentScheme) {
|
|
517
|
-
_context2.next =
|
|
525
|
+
_context2.next = 21;
|
|
526
|
+
break;
|
|
527
|
+
}
|
|
528
|
+
if (!(currentScheme.isGlobal && !canApplyToGlobal)) {
|
|
529
|
+
_context2.next = 14;
|
|
518
530
|
break;
|
|
519
531
|
}
|
|
532
|
+
_antd.message.error('没有权限修改全局方案');
|
|
533
|
+
return _context2.abrupt("return");
|
|
534
|
+
case 14:
|
|
520
535
|
// 如果有激活的方案,更新该方案
|
|
521
536
|
createdAt = currentScheme.createdAt, updatedAt = currentScheme.updatedAt, schemeWithoutTimestamps = _objectWithoutProperties(currentScheme, _excluded);
|
|
522
537
|
savedScheme = _objectSpread(_objectSpread({}, schemeWithoutTimestamps), {}, {
|
|
@@ -524,21 +539,28 @@ var ColumnSetting = function ColumnSetting(_ref) {
|
|
|
524
539
|
filterModel: filterModel
|
|
525
540
|
// createdAt 和 updatedAt 由存储适配器自动生成
|
|
526
541
|
});
|
|
527
|
-
_context2.next =
|
|
542
|
+
_context2.next = 18;
|
|
528
543
|
return saveColumnScheme === null || saveColumnScheme === void 0 ? void 0 : saveColumnScheme(gridKey, savedScheme);
|
|
529
|
-
case
|
|
544
|
+
case 18:
|
|
530
545
|
_antd.message.success('列配置已保存到方案');
|
|
531
|
-
_context2.next =
|
|
546
|
+
_context2.next = 37;
|
|
532
547
|
break;
|
|
533
|
-
case
|
|
548
|
+
case 21:
|
|
534
549
|
// 如果没有激活的方案,自动创建或更新默认方案
|
|
535
550
|
defaultScheme = schemes.find(function (s) {
|
|
536
551
|
return s.isDefault;
|
|
537
552
|
});
|
|
538
553
|
if (!defaultScheme) {
|
|
539
|
-
_context2.next =
|
|
554
|
+
_context2.next = 33;
|
|
555
|
+
break;
|
|
556
|
+
}
|
|
557
|
+
if (!(defaultScheme.isGlobal && !canApplyToGlobal)) {
|
|
558
|
+
_context2.next = 26;
|
|
540
559
|
break;
|
|
541
560
|
}
|
|
561
|
+
_antd.message.error('没有权限修改全局方案');
|
|
562
|
+
return _context2.abrupt("return");
|
|
563
|
+
case 26:
|
|
542
564
|
// 更新默认方案
|
|
543
565
|
_createdAt = defaultScheme.createdAt, _updatedAt = defaultScheme.updatedAt, _schemeWithoutTimestamps = _objectWithoutProperties(defaultScheme, _excluded2);
|
|
544
566
|
savedScheme = _objectSpread(_objectSpread({}, _schemeWithoutTimestamps), {}, {
|
|
@@ -546,13 +568,13 @@ var ColumnSetting = function ColumnSetting(_ref) {
|
|
|
546
568
|
filterModel: filterModel
|
|
547
569
|
// createdAt 和 updatedAt 由存储适配器自动生成
|
|
548
570
|
});
|
|
549
|
-
_context2.next =
|
|
571
|
+
_context2.next = 30;
|
|
550
572
|
return saveColumnScheme === null || saveColumnScheme === void 0 ? void 0 : saveColumnScheme(gridKey, savedScheme);
|
|
551
|
-
case
|
|
573
|
+
case 30:
|
|
552
574
|
_antd.message.success('列配置已保存到默认方案');
|
|
553
|
-
_context2.next =
|
|
575
|
+
_context2.next = 37;
|
|
554
576
|
break;
|
|
555
|
-
case
|
|
577
|
+
case 33:
|
|
556
578
|
// 创建新的默认方案
|
|
557
579
|
savedScheme = {
|
|
558
580
|
id: (0, _uuid.v4)(),
|
|
@@ -564,25 +586,25 @@ var ColumnSetting = function ColumnSetting(_ref) {
|
|
|
564
586
|
isSystem: false
|
|
565
587
|
// createdAt 和 updatedAt 由存储适配器自动生成
|
|
566
588
|
};
|
|
567
|
-
_context2.next =
|
|
589
|
+
_context2.next = 36;
|
|
568
590
|
return saveColumnScheme === null || saveColumnScheme === void 0 ? void 0 : saveColumnScheme(gridKey, savedScheme);
|
|
569
|
-
case
|
|
591
|
+
case 36:
|
|
570
592
|
_antd.message.success('已创建并保存到默认方案');
|
|
571
|
-
case
|
|
572
|
-
_context2.next =
|
|
593
|
+
case 37:
|
|
594
|
+
_context2.next = 39;
|
|
573
595
|
return new Promise(function (resolve) {
|
|
574
596
|
return setTimeout(resolve, 100);
|
|
575
597
|
});
|
|
576
|
-
case
|
|
598
|
+
case 39:
|
|
577
599
|
gridColumnDefs = (0, _columnGroupUtils.flatConfigToGridState)(savedScheme.columnConfig, allColDefs);
|
|
578
600
|
gridApi.setGridOption('columnDefs', gridColumnDefs);
|
|
579
601
|
|
|
580
602
|
// 等待 columnDefs 更新完成
|
|
581
|
-
_context2.next =
|
|
603
|
+
_context2.next = 43;
|
|
582
604
|
return new Promise(function (resolve) {
|
|
583
605
|
return setTimeout(resolve, 100);
|
|
584
606
|
});
|
|
585
|
-
case
|
|
607
|
+
case 43:
|
|
586
608
|
columnState = (0, _columnGroupUtils.flatConfigToColumnState)(savedScheme.columnConfig);
|
|
587
609
|
gridApi.applyColumnState({
|
|
588
610
|
state: columnState,
|
|
@@ -596,31 +618,31 @@ var ColumnSetting = function ColumnSetting(_ref) {
|
|
|
596
618
|
|
|
597
619
|
// 4. 设置为当前方案(如果不是当前方案)
|
|
598
620
|
if (!(!currentScheme || savedScheme.id !== currentScheme.id)) {
|
|
599
|
-
_context2.next =
|
|
621
|
+
_context2.next = 49;
|
|
600
622
|
break;
|
|
601
623
|
}
|
|
602
|
-
_context2.next =
|
|
624
|
+
_context2.next = 49;
|
|
603
625
|
return setCurrentColumnScheme === null || setCurrentColumnScheme === void 0 ? void 0 : setCurrentColumnScheme(gridKey, savedScheme.id);
|
|
604
|
-
case
|
|
605
|
-
_context2.next =
|
|
626
|
+
case 49:
|
|
627
|
+
_context2.next = 51;
|
|
606
628
|
return new Promise(function (resolve) {
|
|
607
629
|
return setTimeout(resolve, 50);
|
|
608
630
|
});
|
|
609
|
-
case
|
|
631
|
+
case 51:
|
|
610
632
|
// 5. 关闭弹窗
|
|
611
633
|
onClose();
|
|
612
|
-
_context2.next =
|
|
634
|
+
_context2.next = 58;
|
|
613
635
|
break;
|
|
614
|
-
case
|
|
615
|
-
_context2.prev =
|
|
636
|
+
case 54:
|
|
637
|
+
_context2.prev = 54;
|
|
616
638
|
_context2.t0 = _context2["catch"](8);
|
|
617
639
|
console.error('保存列配置到方案失败:', _context2.t0);
|
|
618
640
|
_antd.message.error('保存列配置失败');
|
|
619
|
-
case
|
|
641
|
+
case 58:
|
|
620
642
|
case "end":
|
|
621
643
|
return _context2.stop();
|
|
622
644
|
}
|
|
623
|
-
}, _callee2, null, [[8,
|
|
645
|
+
}, _callee2, null, [[8, 54]]);
|
|
624
646
|
})), [form, gridApi, saveColumnScheme, setCurrentColumnScheme, currentScheme, schemes, gridKey, allColDefs, onClose]);
|
|
625
647
|
|
|
626
648
|
// 保存为新方案
|
|
@@ -828,28 +850,127 @@ var ColumnSetting = function ColumnSetting(_ref) {
|
|
|
828
850
|
setEditingDescription(scheme.description || '');
|
|
829
851
|
}, []);
|
|
830
852
|
|
|
853
|
+
// ========== 全局配置操作处理函数 ==========
|
|
854
|
+
|
|
855
|
+
/**
|
|
856
|
+
* 创建带确认弹窗的操作处理器
|
|
857
|
+
* @author nokecy
|
|
858
|
+
*/
|
|
859
|
+
var createConfirmHandler = (0, _react.useCallback)(function (config) {
|
|
860
|
+
return function () {
|
|
861
|
+
_antd.Modal.confirm({
|
|
862
|
+
title: config.title,
|
|
863
|
+
icon: /*#__PURE__*/_react.default.createElement(_icons.ExclamationCircleOutlined, null),
|
|
864
|
+
content: config.content,
|
|
865
|
+
okText: config.okText || '确定',
|
|
866
|
+
okButtonProps: config.danger ? {
|
|
867
|
+
danger: true
|
|
868
|
+
} : undefined,
|
|
869
|
+
cancelText: '取消',
|
|
870
|
+
onOk: function () {
|
|
871
|
+
var _onOk = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {
|
|
872
|
+
var _config$onSuccess;
|
|
873
|
+
return _regeneratorRuntime().wrap(function _callee6$(_context6) {
|
|
874
|
+
while (1) switch (_context6.prev = _context6.next) {
|
|
875
|
+
case 0:
|
|
876
|
+
_context6.prev = 0;
|
|
877
|
+
_context6.next = 3;
|
|
878
|
+
return config.action();
|
|
879
|
+
case 3:
|
|
880
|
+
(_config$onSuccess = config.onSuccess) === null || _config$onSuccess === void 0 || _config$onSuccess.call(config);
|
|
881
|
+
_context6.next = 8;
|
|
882
|
+
break;
|
|
883
|
+
case 6:
|
|
884
|
+
_context6.prev = 6;
|
|
885
|
+
_context6.t0 = _context6["catch"](0);
|
|
886
|
+
case 8:
|
|
887
|
+
case "end":
|
|
888
|
+
return _context6.stop();
|
|
889
|
+
}
|
|
890
|
+
}, _callee6, null, [[0, 6]]);
|
|
891
|
+
}));
|
|
892
|
+
function onOk() {
|
|
893
|
+
return _onOk.apply(this, arguments);
|
|
894
|
+
}
|
|
895
|
+
return onOk;
|
|
896
|
+
}()
|
|
897
|
+
});
|
|
898
|
+
};
|
|
899
|
+
}, []);
|
|
900
|
+
|
|
901
|
+
// 应用到全局
|
|
902
|
+
var handleApplyToGlobal = (0, _react.useCallback)(function (schemeId) {
|
|
903
|
+
return createConfirmHandler({
|
|
904
|
+
title: '应用到全局',
|
|
905
|
+
content: '确定要将此方案应用为全局默认配置吗?这将影响所有没有个人配置的用户。',
|
|
906
|
+
action: function action() {
|
|
907
|
+
var _applySchemeToGlobal;
|
|
908
|
+
return (_applySchemeToGlobal = applySchemeToGlobal === null || applySchemeToGlobal === void 0 ? void 0 : applySchemeToGlobal(gridKey, schemeId)) !== null && _applySchemeToGlobal !== void 0 ? _applySchemeToGlobal : Promise.resolve();
|
|
909
|
+
}
|
|
910
|
+
})();
|
|
911
|
+
}, [createConfirmHandler, applySchemeToGlobal, gridKey]);
|
|
912
|
+
|
|
913
|
+
// 重置为全局配置
|
|
914
|
+
var handleResetToGlobal = (0, _react.useCallback)(function () {
|
|
915
|
+
return createConfirmHandler({
|
|
916
|
+
title: '重置为全局配置',
|
|
917
|
+
content: '确定要删除您的个人配置,使用全局默认配置吗?',
|
|
918
|
+
action: function action() {
|
|
919
|
+
var _resetToGlobal;
|
|
920
|
+
return (_resetToGlobal = resetToGlobal === null || resetToGlobal === void 0 ? void 0 : resetToGlobal(gridKey)) !== null && _resetToGlobal !== void 0 ? _resetToGlobal : Promise.resolve();
|
|
921
|
+
},
|
|
922
|
+
onSuccess: onClose
|
|
923
|
+
})();
|
|
924
|
+
}, [createConfirmHandler, resetToGlobal, gridKey, onClose]);
|
|
925
|
+
|
|
926
|
+
// 重置所有用户配置
|
|
927
|
+
var handleResetAllUsers = (0, _react.useCallback)(function () {
|
|
928
|
+
return createConfirmHandler({
|
|
929
|
+
title: '重置所有用户配置',
|
|
930
|
+
content: /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("p", {
|
|
931
|
+
style: {
|
|
932
|
+
color: '#ff4d4f',
|
|
933
|
+
fontWeight: 'bold'
|
|
934
|
+
}
|
|
935
|
+
}, "\u6B64\u64CD\u4F5C\u4E0D\u53EF\u6062\u590D\uFF01"), /*#__PURE__*/_react.default.createElement("p", null, "\u786E\u5B9A\u8981\u5220\u9664\u6240\u6709\u7528\u6237\u7684\u4E2A\u4EBA\u5217\u914D\u7F6E\u5417\uFF1F"), /*#__PURE__*/_react.default.createElement("p", null, "\u6267\u884C\u540E\uFF0C\u6240\u6709\u7528\u6237\u5C06\u4F7F\u7528\u5168\u5C40\u9ED8\u8BA4\u914D\u7F6E\u3002")),
|
|
936
|
+
okText: '确定重置',
|
|
937
|
+
danger: true,
|
|
938
|
+
action: function action() {
|
|
939
|
+
var _resetAllUsers;
|
|
940
|
+
return (_resetAllUsers = resetAllUsers === null || resetAllUsers === void 0 ? void 0 : resetAllUsers(gridKey)) !== null && _resetAllUsers !== void 0 ? _resetAllUsers : Promise.resolve();
|
|
941
|
+
}
|
|
942
|
+
})();
|
|
943
|
+
}, [createConfirmHandler, resetAllUsers, gridKey]);
|
|
944
|
+
|
|
945
|
+
// 判断是否存在用户个人方案
|
|
946
|
+
var hasUserSchemes = (0, _react.useMemo)(function () {
|
|
947
|
+
return schemes.some(function (s) {
|
|
948
|
+
return !s.isGlobal;
|
|
949
|
+
});
|
|
950
|
+
}, [schemes]);
|
|
951
|
+
|
|
831
952
|
// 保存编辑
|
|
832
|
-
var handleSaveEdit = (0, _react.useCallback)( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function
|
|
953
|
+
var handleSaveEdit = (0, _react.useCallback)( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {
|
|
833
954
|
var scheme, createdAt, updatedAt, schemeWithoutTimestamps;
|
|
834
|
-
return _regeneratorRuntime().wrap(function
|
|
835
|
-
while (1) switch (
|
|
955
|
+
return _regeneratorRuntime().wrap(function _callee7$(_context7) {
|
|
956
|
+
while (1) switch (_context7.prev = _context7.next) {
|
|
836
957
|
case 0:
|
|
837
958
|
if (editingId) {
|
|
838
|
-
|
|
959
|
+
_context7.next = 2;
|
|
839
960
|
break;
|
|
840
961
|
}
|
|
841
|
-
return
|
|
962
|
+
return _context7.abrupt("return");
|
|
842
963
|
case 2:
|
|
843
|
-
|
|
964
|
+
_context7.prev = 2;
|
|
844
965
|
scheme = schemes.find(function (s) {
|
|
845
966
|
return s.id === editingId;
|
|
846
967
|
});
|
|
847
968
|
if (!scheme) {
|
|
848
|
-
|
|
969
|
+
_context7.next = 10;
|
|
849
970
|
break;
|
|
850
971
|
}
|
|
851
972
|
createdAt = scheme.createdAt, updatedAt = scheme.updatedAt, schemeWithoutTimestamps = _objectWithoutProperties(scheme, _excluded3);
|
|
852
|
-
|
|
973
|
+
_context7.next = 8;
|
|
853
974
|
return saveColumnScheme === null || saveColumnScheme === void 0 ? void 0 : saveColumnScheme(gridKey, _objectSpread(_objectSpread({}, schemeWithoutTimestamps), {}, {
|
|
854
975
|
name: editingName.trim(),
|
|
855
976
|
description: editingDescription.trim() || undefined
|
|
@@ -859,17 +980,17 @@ var ColumnSetting = function ColumnSetting(_ref) {
|
|
|
859
980
|
_antd.message.success('更新成功');
|
|
860
981
|
setEditingId(null);
|
|
861
982
|
case 10:
|
|
862
|
-
|
|
983
|
+
_context7.next = 15;
|
|
863
984
|
break;
|
|
864
985
|
case 12:
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
_antd.message.error(
|
|
986
|
+
_context7.prev = 12;
|
|
987
|
+
_context7.t0 = _context7["catch"](2);
|
|
988
|
+
_antd.message.error(_context7.t0.message || '更新失败');
|
|
868
989
|
case 15:
|
|
869
990
|
case "end":
|
|
870
|
-
return
|
|
991
|
+
return _context7.stop();
|
|
871
992
|
}
|
|
872
|
-
},
|
|
993
|
+
}, _callee7, null, [[2, 12]]);
|
|
873
994
|
})), [schemes, saveColumnScheme, gridKey, editingId, editingName, editingDescription]);
|
|
874
995
|
|
|
875
996
|
// 筛选方案列表
|
|
@@ -908,7 +1029,11 @@ var ColumnSetting = function ColumnSetting(_ref) {
|
|
|
908
1029
|
}
|
|
909
1030
|
return /*#__PURE__*/_react.default.createElement(_antd.Space, {
|
|
910
1031
|
size: "small"
|
|
911
|
-
}, /*#__PURE__*/_react.default.createElement("span", null, record.name), record.
|
|
1032
|
+
}, /*#__PURE__*/_react.default.createElement("span", null, record.name), record.isGlobal ? /*#__PURE__*/_react.default.createElement(_antd.Tag, {
|
|
1033
|
+
color: "purple"
|
|
1034
|
+
}, "\u5168\u5C40") : /*#__PURE__*/_react.default.createElement(_antd.Tag, {
|
|
1035
|
+
color: "cyan"
|
|
1036
|
+
}, "\u4E2A\u4EBA"), record.isDefault && /*#__PURE__*/_react.default.createElement(_antd.Tag, {
|
|
912
1037
|
color: "blue"
|
|
913
1038
|
}, "\u9ED8\u8BA4"), record.id === (currentSchemes === null || currentSchemes === void 0 || (_currentSchemes$gridK3 = currentSchemes[gridKey]) === null || _currentSchemes$gridK3 === void 0 ? void 0 : _currentSchemes$gridK3.columnSchemeId) && /*#__PURE__*/_react.default.createElement(_antd.Tag, {
|
|
914
1039
|
color: "green"
|
|
@@ -948,7 +1073,8 @@ var ColumnSetting = function ColumnSetting(_ref) {
|
|
|
948
1073
|
}, {
|
|
949
1074
|
headerName: '操作',
|
|
950
1075
|
colId: 'actions',
|
|
951
|
-
width:
|
|
1076
|
+
width: 280,
|
|
1077
|
+
// 加宽以容纳新按钮
|
|
952
1078
|
cellRenderer: function cellRenderer(params) {
|
|
953
1079
|
var record = params.data;
|
|
954
1080
|
if (!record) return null;
|
|
@@ -987,7 +1113,16 @@ var ColumnSetting = function ColumnSetting(_ref) {
|
|
|
987
1113
|
onClick: function onClick() {
|
|
988
1114
|
return handleSetDefault(record.id);
|
|
989
1115
|
}
|
|
990
|
-
})), /*#__PURE__*/_react.default.createElement(_antd.Tooltip, {
|
|
1116
|
+
})), !record.isGlobal && canApplyToGlobal && /*#__PURE__*/_react.default.createElement(_antd.Tooltip, {
|
|
1117
|
+
title: "\u5E94\u7528\u5230\u5168\u5C40"
|
|
1118
|
+
}, /*#__PURE__*/_react.default.createElement(_antd.Button, {
|
|
1119
|
+
type: "link",
|
|
1120
|
+
size: "small",
|
|
1121
|
+
icon: /*#__PURE__*/_react.default.createElement(_icons.GlobalOutlined, null),
|
|
1122
|
+
onClick: function onClick() {
|
|
1123
|
+
return handleApplyToGlobal(record.id);
|
|
1124
|
+
}
|
|
1125
|
+
})), (!record.isGlobal || canApplyToGlobal) && /*#__PURE__*/_react.default.createElement(_antd.Tooltip, {
|
|
991
1126
|
title: "\u7F16\u8F91"
|
|
992
1127
|
}, /*#__PURE__*/_react.default.createElement(_antd.Button, {
|
|
993
1128
|
type: "link",
|
|
@@ -996,8 +1131,8 @@ var ColumnSetting = function ColumnSetting(_ref) {
|
|
|
996
1131
|
onClick: function onClick() {
|
|
997
1132
|
return handleEditScheme(record);
|
|
998
1133
|
}
|
|
999
|
-
})), /*#__PURE__*/_react.default.createElement(_antd.Popconfirm, {
|
|
1000
|
-
title:
|
|
1134
|
+
})), (!record.isGlobal || canApplyToGlobal) && /*#__PURE__*/_react.default.createElement(_antd.Popconfirm, {
|
|
1135
|
+
title: record.isGlobal ? "确定要删除此全局方案吗?这将影响所有用户!" : "确定要删除此方案吗?",
|
|
1001
1136
|
onConfirm: function onConfirm() {
|
|
1002
1137
|
return handleDeleteScheme(record.id, record.name);
|
|
1003
1138
|
},
|
|
@@ -1046,13 +1181,20 @@ var ColumnSetting = function ColumnSetting(_ref) {
|
|
|
1046
1181
|
onClick: function onClick() {
|
|
1047
1182
|
return setSaveSchemeVisible(true);
|
|
1048
1183
|
}
|
|
1049
|
-
}, "\u53E6\u5B58\u4E3A\u65B9\u6848")) : /*#__PURE__*/_react.default.createElement(_antd.Button, {
|
|
1184
|
+
}, "\u53E6\u5B58\u4E3A\u65B9\u6848")) : /*#__PURE__*/_react.default.createElement(_antd.Space, null, hasUserSchemes && /*#__PURE__*/_react.default.createElement(_antd.Button, {
|
|
1185
|
+
icon: /*#__PURE__*/_react.default.createElement(_icons.RollbackOutlined, null),
|
|
1186
|
+
onClick: handleResetToGlobal
|
|
1187
|
+
}, "\u91CD\u7F6E\u4E3A\u5168\u5C40\u914D\u7F6E"), canResetAllUsers && /*#__PURE__*/_react.default.createElement(_antd.Button, {
|
|
1188
|
+
danger: true,
|
|
1189
|
+
icon: /*#__PURE__*/_react.default.createElement(_icons.ClearOutlined, null),
|
|
1190
|
+
onClick: handleResetAllUsers
|
|
1191
|
+
}, "\u91CD\u7F6E\u6240\u6709\u7528\u6237"), /*#__PURE__*/_react.default.createElement(_antd.Button, {
|
|
1050
1192
|
type: "primary",
|
|
1051
1193
|
icon: /*#__PURE__*/_react.default.createElement(_icons.SaveOutlined, null),
|
|
1052
1194
|
onClick: function onClick() {
|
|
1053
1195
|
return setSaveSchemeVisible(true);
|
|
1054
1196
|
}
|
|
1055
|
-
}, "\u4FDD\u5B58\u4E3A\u65B0\u65B9\u6848")
|
|
1197
|
+
}, "\u4FDD\u5B58\u4E3A\u65B0\u65B9\u6848"))
|
|
1056
1198
|
}, /*#__PURE__*/_react.default.createElement(TabPane, {
|
|
1057
1199
|
tab: "\u5217\u914D\u7F6E",
|
|
1058
1200
|
key: "columns"
|