@nokecy/qc-ui 1.0.82 → 1.0.83

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.
Files changed (81) hide show
  1. package/dist/cjs/ag-grid-plus/_utils/processColumnGroups.d.ts +9 -0
  2. package/dist/cjs/ag-grid-plus/_utils/processColumnGroups.js +43 -0
  3. package/dist/cjs/ag-grid-plus/ag-gridPlus.js +245 -121
  4. package/dist/cjs/ag-grid-plus/schemes/components/SchemeSelector.d.ts +1 -1
  5. package/dist/cjs/ag-grid-plus/schemes/components/SchemeSelector.js +1 -1
  6. package/dist/cjs/ag-grid-plus/schemes/hooks/useColumnSchemes.js +60 -14
  7. package/dist/cjs/ag-grid-plus/schemes/storage/localStorageAdapter.js +12 -26
  8. package/dist/cjs/ag-grid-plus/schemes/types.d.ts +8 -5
  9. package/dist/cjs/ag-grid-plus/schemes/utils/validator.js +14 -18
  10. package/dist/cjs/ag-grid-plus/setting/ColumnConfigForm.d.ts +16 -0
  11. package/dist/cjs/ag-grid-plus/setting/ColumnConfigForm.js +348 -0
  12. package/dist/cjs/ag-grid-plus/setting/ColumnConfigTable.d.ts +20 -0
  13. package/dist/cjs/ag-grid-plus/setting/ColumnConfigTable.js +940 -0
  14. package/dist/cjs/ag-grid-plus/setting/ColumnSetting.js +208 -248
  15. package/dist/cjs/ag-grid-plus/setting/MoveNodeModal.d.ts +15 -0
  16. package/dist/cjs/ag-grid-plus/setting/MoveNodeModal.js +160 -0
  17. package/dist/cjs/ag-grid-plus/setting/NameColumnRenderer.d.ts +18 -0
  18. package/dist/cjs/ag-grid-plus/setting/NameColumnRenderer.js +94 -0
  19. package/dist/cjs/ag-grid-plus/setting/columnGroupTypes.d.ts +59 -0
  20. package/dist/cjs/ag-grid-plus/setting/columnGroupTypes.js +5 -0
  21. package/dist/cjs/ag-grid-plus/setting/columnGroupUtils.d.ts +75 -0
  22. package/dist/cjs/ag-grid-plus/setting/columnGroupUtils.js +281 -0
  23. package/dist/cjs/ag-grid-plus/setting/index.d.ts +2 -1
  24. package/dist/cjs/ag-grid-plus/setting/index.js +4 -2
  25. package/dist/cjs/ag-grid-plus/storage/SchemeSyncManager.d.ts +2 -1
  26. package/dist/cjs/ag-grid-plus/storage/SchemeSyncManager.js +11 -8
  27. package/dist/cjs/ag-grid-plus/types.d.ts +2 -0
  28. package/dist/cjs/array-table/index.js +30 -118
  29. package/dist/cjs/draggableModal/index.d.ts +1 -1
  30. package/dist/cjs/draggableModal/index.js +251 -25
  31. package/dist/cjs/draggableModal/style.less +185 -12
  32. package/dist/esm/ag-grid-plus/_utils/processColumnGroups.d.ts +9 -0
  33. package/dist/esm/ag-grid-plus/_utils/processColumnGroups.js +44 -0
  34. package/dist/esm/ag-grid-plus/ag-gridPlus.js +245 -121
  35. package/dist/esm/ag-grid-plus/schemes/components/SchemeSelector.d.ts +1 -1
  36. package/dist/esm/ag-grid-plus/schemes/components/SchemeSelector.js +1 -1
  37. package/dist/esm/ag-grid-plus/schemes/hooks/useColumnSchemes.js +60 -14
  38. package/dist/esm/ag-grid-plus/schemes/storage/localStorageAdapter.js +13 -27
  39. package/dist/esm/ag-grid-plus/schemes/types.d.ts +8 -5
  40. package/dist/esm/ag-grid-plus/schemes/utils/validator.js +14 -18
  41. package/dist/esm/ag-grid-plus/setting/ColumnConfigForm.d.ts +16 -0
  42. package/dist/esm/ag-grid-plus/setting/ColumnConfigForm.js +338 -0
  43. package/dist/esm/ag-grid-plus/setting/ColumnConfigTable.d.ts +20 -0
  44. package/dist/esm/ag-grid-plus/setting/ColumnConfigTable.js +932 -0
  45. package/dist/esm/ag-grid-plus/setting/ColumnSetting.js +207 -247
  46. package/dist/esm/ag-grid-plus/setting/MoveNodeModal.d.ts +15 -0
  47. package/dist/esm/ag-grid-plus/setting/MoveNodeModal.js +150 -0
  48. package/dist/esm/ag-grid-plus/setting/NameColumnRenderer.d.ts +18 -0
  49. package/dist/esm/ag-grid-plus/setting/NameColumnRenderer.js +87 -0
  50. package/dist/esm/ag-grid-plus/setting/columnGroupTypes.d.ts +59 -0
  51. package/dist/esm/ag-grid-plus/setting/columnGroupTypes.js +1 -0
  52. package/dist/esm/ag-grid-plus/setting/columnGroupUtils.d.ts +75 -0
  53. package/dist/esm/ag-grid-plus/setting/columnGroupUtils.js +265 -0
  54. package/dist/esm/ag-grid-plus/setting/index.d.ts +2 -1
  55. package/dist/esm/ag-grid-plus/setting/index.js +4 -2
  56. package/dist/esm/ag-grid-plus/storage/SchemeSyncManager.d.ts +2 -1
  57. package/dist/esm/ag-grid-plus/storage/SchemeSyncManager.js +11 -8
  58. package/dist/esm/ag-grid-plus/types.d.ts +2 -0
  59. package/dist/esm/array-table/index.js +31 -119
  60. package/dist/esm/draggableModal/index.d.ts +1 -1
  61. package/dist/esm/draggableModal/index.js +252 -27
  62. package/dist/esm/draggableModal/style.less +185 -12
  63. package/dist/umd/qc-ui.min.css +1 -1
  64. package/dist/umd/qc-ui.min.js +1 -1
  65. package/package.json +1 -1
  66. package/dist/cjs/ag-grid-plus/gridManager/index.d.ts +0 -7
  67. package/dist/cjs/ag-grid-plus/gridManager/index.js +0 -40
  68. package/dist/cjs/ag-grid-plus/querySchemes/hooks/useQuerySchemes.refactored.d.ts +0 -7
  69. package/dist/cjs/ag-grid-plus/querySchemes/hooks/useQuerySchemes.refactored.js +0 -32
  70. package/dist/cjs/ag-grid-plus/schemes/hooks/useColumnSchemes.refactored.d.ts +0 -7
  71. package/dist/cjs/ag-grid-plus/schemes/hooks/useColumnSchemes.refactored.js +0 -32
  72. package/dist/cjs/ag-grid-plus/setting/diySetting/index.d.ts +0 -10
  73. package/dist/cjs/ag-grid-plus/setting/diySetting/index.js +0 -268
  74. package/dist/esm/ag-grid-plus/gridManager/index.d.ts +0 -7
  75. package/dist/esm/ag-grid-plus/gridManager/index.js +0 -35
  76. package/dist/esm/ag-grid-plus/querySchemes/hooks/useQuerySchemes.refactored.d.ts +0 -7
  77. package/dist/esm/ag-grid-plus/querySchemes/hooks/useQuerySchemes.refactored.js +0 -27
  78. package/dist/esm/ag-grid-plus/schemes/hooks/useColumnSchemes.refactored.d.ts +0 -7
  79. package/dist/esm/ag-grid-plus/schemes/hooks/useColumnSchemes.refactored.js +0 -27
  80. package/dist/esm/ag-grid-plus/setting/diySetting/index.d.ts +0 -10
  81. package/dist/esm/ag-grid-plus/setting/diySetting/index.js +0 -259
@@ -5,18 +5,17 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.default = void 0;
8
- var _uniqueId2 = _interopRequireDefault(require("lodash/uniqueId"));
9
8
  var _react = _interopRequireWildcard(require("react"));
10
9
  var _antd = require("antd");
11
10
  var _icons = require("@ant-design/icons");
12
- var _antdV = require("@formily/antd-v5");
13
- var _react2 = require("@formily/react");
14
11
  var _core = require("@formily/core");
15
- var _arrayTable = _interopRequireDefault(require("../../array-table"));
12
+ var _columnGroupUtils = require("./columnGroupUtils");
13
+ var _ColumnConfigTable = _interopRequireDefault(require("./ColumnConfigTable"));
16
14
  var _processColumnGroups = _interopRequireDefault(require("../_utils/processColumnGroups"));
15
+ var _draggableModal = _interopRequireDefault(require("../../draggableModal"));
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
17
  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); }
18
18
  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; }
19
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
20
19
  function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
21
20
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
22
21
  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); }); }; }
@@ -33,19 +32,6 @@ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" !=
33
32
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
34
33
  var TabPane = _antd.Tabs.TabPane;
35
34
  var TextArea = _antd.Input.TextArea;
36
- var SchemaField = (0, _react2.createSchemaField)({
37
- components: {
38
- FormItem: _antdV.FormItem,
39
- FormGrid: _antdV.FormGrid,
40
- Space: _antd.Space,
41
- Input: _antdV.Input,
42
- Select: _antdV.Select,
43
- ArrayTable: _arrayTable.default,
44
- NumberPicker: _antdV.NumberPicker,
45
- Switch: _antdV.Switch
46
- }
47
- });
48
-
49
35
  /**
50
36
  * 列方案管理组件 - 集成列配置和列方案管理
51
37
  */
@@ -98,39 +84,66 @@ var ColumnSetting = function ColumnSetting(_ref) {
98
84
  viewMode = _useState18[0],
99
85
  setViewMode = _useState18[1];
100
86
 
101
- // 获取列数据 - 优先从当前方案获取,否则从 Grid 当前状态获取
87
+ // 保存原始列定义,用于取消时恢复
88
+ var _useState19 = (0, _react.useState)(null),
89
+ _useState20 = _slicedToArray(_useState19, 2),
90
+ originalColumnDefs = _useState20[0],
91
+ setOriginalColumnDefs = _useState20[1];
92
+
93
+ /**
94
+ * 获取列数据 - 将 Grid 的列定义转换为扁平化配置
95
+ * 新版本使用树形结构,兼容旧版本的 groupName 结构
96
+ */
102
97
  var getColumnData = (0, _react.useCallback)(function () {
103
98
  var _schemeManager$curren;
104
- // 优先使用当前方案的列状态,如果没有则使用 Grid 当前状态
105
- var columnStates = (schemeManager === null || schemeManager === void 0 || (_schemeManager$curren = schemeManager.currentScheme) === null || _schemeManager$curren === void 0 ? void 0 : _schemeManager$curren.columnState) || gridApi.getColumnState();
99
+ // 优先使用当前方案中保存的完整列配置(包含分组结构)
100
+ if (schemeManager !== null && schemeManager !== void 0 && (_schemeManager$curren = schemeManager.currentScheme) !== null && _schemeManager$curren !== void 0 && _schemeManager$curren.columnConfig) {
101
+ console.log('[ColumnSetting] 使用方案中保存的 columnConfig:', schemeManager.currentScheme.columnConfig);
102
+ return schemeManager.currentScheme.columnConfig;
103
+ }
104
+
105
+ // 如果方案中没有 columnConfig,则从 Grid 读取
106
106
  var columnDefs = gridApi.getColumnDefs() || [];
107
- var columnRowData = [];
108
- var processColumns = function processColumns(columns, parentGroup) {
109
- columns.forEach(function (column) {
110
- if (column.children && column.children.length > 0) {
111
- processColumns(column.children, column.headerName);
112
- } else {
113
- var columnState = columnStates.find(function (state) {
114
- return state.colId === column.field;
115
- });
116
- if (columnState) {
117
- columnRowData.push(_objectSpread({
118
- id: (0, _uniqueId2.default)(),
119
- field: column.field,
120
- headerName: column.headerName,
121
- width: columnState.width,
122
- hide: columnState.hide,
123
- cellClass: column.cellClass,
124
- suppressHeaderFilterButton: !column.suppressHeaderFilterButton,
125
- groupName: parentGroup
126
- }, columnState));
107
+ var columnStates = gridApi.getColumnState();
108
+ console.log('[ColumnSetting] 从 Grid 读取列配置:', {
109
+ columnDefs: columnDefs,
110
+ columnStates: columnStates
111
+ });
112
+
113
+ // 将 Grid 状态转换为扁平化配置
114
+ var flatConfig = (0, _columnGroupUtils.gridStateToFlatConfig)(columnDefs);
115
+
116
+ // 同步列状态(宽度、隐藏等)
117
+ flatConfig = flatConfig.map(function (item) {
118
+ if (item.type === 'column' && item.field) {
119
+ var _state = columnStates.find(function (s) {
120
+ return s.colId === item.field;
121
+ });
122
+ if (_state) {
123
+ // 处理 pinned: 可能是 true/false/null/'left'/'right'
124
+ var pinnedValue = 'notPinned';
125
+ if (_state.pinned === 'left') {
126
+ pinnedValue = 'left';
127
+ } else if (_state.pinned === 'right') {
128
+ pinnedValue = 'right';
129
+ } else if (_state.pinned === true) {
130
+ // true 表示左固定
131
+ pinnedValue = 'left';
127
132
  }
133
+ // null, false, undefined 都表示不固定,默认值已经是 'notPinned'
134
+
135
+ return _objectSpread(_objectSpread({}, item), {}, {
136
+ width: _state.width,
137
+ hide: _state.hide === true,
138
+ // 转换为 boolean
139
+ pinned: pinnedValue
140
+ });
128
141
  }
129
- });
130
- };
131
- processColumns(columnDefs);
132
- return columnRowData;
133
- }, [gridApi, schemeManager === null || schemeManager === void 0 ? void 0 : schemeManager.currentScheme]);
142
+ }
143
+ return item;
144
+ });
145
+ return flatConfig;
146
+ }, [gridApi, schemeManager]);
134
147
 
135
148
  // 创建 Formily Form 实例
136
149
  var form = (0, _react.useMemo)(function () {
@@ -153,9 +166,56 @@ var ColumnSetting = function ColumnSetting(_ref) {
153
166
  }
154
167
  }, [schemeManager === null || schemeManager === void 0 ? void 0 : schemeManager.currentScheme, visible, form, getColumnData]);
155
168
 
156
- // 保存列配置
169
+ // 弹窗打开时保存原始列定义,用于取消时恢复
170
+ (0, _react.useEffect)(function () {
171
+ if (visible) {
172
+ var currentDefs = gridApi.getColumnDefs();
173
+ setOriginalColumnDefs(currentDefs);
174
+ }
175
+ }, [visible, gridApi]);
176
+
177
+ /**
178
+ * 列配置变更处理 - 实时预览
179
+ * 当用户在配置表格中进行操作时,立即应用到 AG-Grid 以提供实时预览
180
+ */
181
+ var handleColumnChange = (0, _react.useCallback)(function (newItems) {
182
+ // 1. 更新表单数据
183
+ form.setValues({
184
+ items: newItems
185
+ });
186
+
187
+ // 2. 转换为 AG-Grid 列定义
188
+ var gridColumnDefs = (0, _columnGroupUtils.flatConfigToGridState)(newItems);
189
+
190
+ // 3. 立即应用到 Grid(实时预览,不保存到方案)
191
+ if (type !== 'formArrayTable') {
192
+ gridApi.setGridOption("columnDefs", gridColumnDefs);
193
+ }
194
+ }, [form, gridApi, type]);
195
+
196
+ /**
197
+ * 关闭弹窗处理 - 取消时恢复原始状态
198
+ * 如果用户取消操作,恢复到打开弹窗前的列定义状态
199
+ */
200
+ var handleClose = (0, _react.useCallback)(function () {
201
+ // 如果有保存的原始状态,恢复它
202
+ if (originalColumnDefs && type !== 'formArrayTable') {
203
+ gridApi.setGridOption("columnDefs", originalColumnDefs);
204
+ }
205
+
206
+ // 清空备份
207
+ setOriginalColumnDefs(null);
208
+
209
+ // 调用父组件的 onClose
210
+ onClose();
211
+ }, [originalColumnDefs, gridApi, type, onClose]);
212
+
213
+ /**
214
+ * 保存列配置
215
+ * 将扁平化配置转换回 Grid State 并应用到 AG-Grid
216
+ */
157
217
  var handleSaveColumns = (0, _react.useCallback)( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
158
- var values, processedColumns;
218
+ var values, flatConfig, configToSave, gridColumnDefs;
159
219
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
160
220
  while (1) switch (_context2.prev = _context2.next) {
161
221
  case 0:
@@ -166,87 +226,122 @@ var ColumnSetting = function ColumnSetting(_ref) {
166
226
  return _context2.abrupt("return");
167
227
  case 2:
168
228
  values = form.values;
169
- onSaveColumnState && onSaveColumnState(values.items);
170
- processedColumns = (0, _processColumnGroups.default)(values.items); // 先应用列配置到 Grid
171
- if (type !== 'formArrayTable') {
172
- gridApi.setGridOption("columnDefs", processedColumns);
229
+ flatConfig = values.items || []; // 检查是否是旧版本数据,如果是则先迁移
230
+ configToSave = flatConfig;
231
+ if ((0, _columnGroupUtils.isOldSchemeData)(flatConfig)) {
232
+ configToSave = (0, _columnGroupUtils.migrateOldScheme)(flatConfig);
233
+ _antd.message.info('检测到旧版本配置,已自动迁移到新格式');
173
234
  }
174
235
 
175
- // 应用列状态(包括顺序、宽度、隐藏等)
176
- gridApi.applyColumnState({
177
- state: processedColumns,
178
- applyOrder: true
236
+ // 转换为 AG-Grid 的列定义
237
+ gridColumnDefs = (0, _columnGroupUtils.flatConfigToGridState)(configToSave);
238
+ console.log('[ColumnSetting] 保存列配置:', {
239
+ flatConfig: configToSave,
240
+ gridColumnDefs: gridColumnDefs
179
241
  });
180
242
 
243
+ // 先应用列配置到 Grid
244
+ if (type !== 'formArrayTable') {
245
+ gridApi.setGridOption("columnDefs", gridColumnDefs);
246
+ }
247
+
248
+ // 应用列状态(应用列定义后,Grid 会自动更新状态)
249
+
181
250
  // 等待 Grid 状态更新完成后再保存到方案
182
251
  setTimeout( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
183
- var updatedState, defaultScheme, newScheme;
252
+ var updatedState, filterModel, defaultScheme, newScheme;
184
253
  return _regeneratorRuntime().wrap(function _callee$(_context) {
185
254
  while (1) switch (_context.prev = _context.next) {
186
255
  case 0:
187
256
  if (!(schemeManager && gridKey)) {
188
- _context.next = 26;
257
+ _context.next = 28;
189
258
  break;
190
259
  }
191
260
  _context.prev = 1;
192
- // 从 Grid 获取应用后的最新列状态
261
+ // 从 Grid 获取应用后的最新列状态和过滤器状态
193
262
  updatedState = gridApi.getColumnState();
263
+ filterModel = gridApi.getFilterModel();
264
+ console.log('[ColumnSetting] 准备保存到方案:', {
265
+ columnConfig: configToSave,
266
+ columnConfigLength: configToSave.length,
267
+ columnConfigDetail: configToSave.map(function (item, idx) {
268
+ return {
269
+ index: idx,
270
+ type: item.type,
271
+ headerName: item.headerName,
272
+ field: item.field,
273
+ order: item.order,
274
+ parentId: item.parentId
275
+ };
276
+ }),
277
+ filterModel: filterModel
278
+ });
194
279
  if (!schemeManager.currentScheme) {
195
- _context.next = 8;
280
+ _context.next = 10;
196
281
  break;
197
282
  }
198
- _context.next = 6;
283
+ _context.next = 8;
199
284
  return schemeManager.saveScheme({
200
- columnState: updatedState
285
+ columnConfig: configToSave,
286
+ // 保存完整的列配置(包含分组结构)
287
+ filterModel: filterModel
201
288
  });
202
- case 6:
203
- _context.next = 21;
204
- break;
205
289
  case 8:
290
+ _context.next = 23;
291
+ break;
292
+ case 10:
206
293
  // 如果没有激活的方案,查找或创建"默认配置"方案
207
294
  defaultScheme = schemeManager.schemes.find(function (s) {
208
295
  return s.isDefault;
209
296
  });
210
297
  if (!defaultScheme) {
211
- _context.next = 16;
298
+ _context.next = 18;
212
299
  break;
213
300
  }
214
- _context.next = 12;
215
- return schemeManager.loadScheme(defaultScheme.id);
216
- case 12:
217
301
  _context.next = 14;
302
+ return schemeManager.loadScheme(defaultScheme.id);
303
+ case 14:
304
+ _context.next = 16;
218
305
  return schemeManager.saveScheme({
219
- columnState: updatedState
306
+ columnConfig: configToSave,
307
+ // 保存完整的列配置(包含分组结构)
308
+ filterModel: filterModel
220
309
  });
221
- case 14:
222
- _context.next = 21;
223
- break;
224
310
  case 16:
225
- _context.next = 18;
226
- return schemeManager.createScheme('默认配置', updatedState, {
311
+ _context.next = 23;
312
+ break;
313
+ case 18:
314
+ _context.next = 20;
315
+ return schemeManager.createScheme('默认配置', configToSave,
316
+ // 使用 columnConfig 而不是 columnState
317
+ {
227
318
  isDefault: true,
228
- description: '自动保存的默认列配置'
319
+ description: '自动保存的默认列配置',
320
+ filterModel: filterModel
229
321
  });
230
- case 18:
322
+ case 20:
231
323
  newScheme = _context.sent;
232
- _context.next = 21;
324
+ _context.next = 23;
233
325
  return schemeManager.loadScheme(newScheme.id);
234
- case 21:
235
- _context.next = 26;
236
- break;
237
326
  case 23:
238
- _context.prev = 23;
327
+ _context.next = 28;
328
+ break;
329
+ case 25:
330
+ _context.prev = 25;
239
331
  _context.t0 = _context["catch"](1);
240
332
  console.error('[ColumnSetting] 保存列配置到方案失败:', _context.t0);
241
- case 26:
333
+ case 28:
242
334
  case "end":
243
335
  return _context.stop();
244
336
  }
245
- }, _callee, null, [[1, 23]]);
337
+ }, _callee, null, [[1, 25]]);
246
338
  })), 50);
339
+
340
+ // 保存成功后清除备份
341
+ setOriginalColumnDefs(null);
247
342
  _antd.message.success('列配置已保存');
248
343
  onClose();
249
- case 10:
344
+ case 13:
250
345
  case "end":
251
346
  return _context2.stop();
252
347
  }
@@ -255,7 +350,7 @@ var ColumnSetting = function ColumnSetting(_ref) {
255
350
 
256
351
  // 保存为新方案
257
352
  var handleSaveScheme = (0, _react.useCallback)( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
258
- var columnStateToSave, values, processedColumns, newScheme;
353
+ var columnConfigToSave, values, processedColumns, _values, filterModel, newScheme;
259
354
  return _regeneratorRuntime().wrap(function _callee3$(_context3) {
260
355
  while (1) switch (_context3.prev = _context3.next) {
261
356
  case 0:
@@ -268,37 +363,37 @@ var ColumnSetting = function ColumnSetting(_ref) {
268
363
  case 3:
269
364
  _context3.prev = 3;
270
365
  if (!(activeTab === 'columns' && form)) {
271
- _context3.next = 14;
366
+ _context3.next = 13;
272
367
  break;
273
368
  }
274
369
  values = form.values;
370
+ columnConfigToSave = values.items; // 直接使用 FlatColumnItem[] 数据
275
371
  processedColumns = (0, _processColumnGroups.default)(values.items); // 先应用到 Grid
276
372
  if (type !== 'formArrayTable') {
277
373
  gridApi.setGridOption("columnDefs", processedColumns);
278
374
  }
279
- gridApi.applyColumnState({
280
- state: processedColumns,
281
- applyOrder: true
282
- });
283
375
 
284
- // 等待状态更新,然后获取最新状态
376
+ // 等待状态更新
285
377
  _context3.next = 11;
286
378
  return new Promise(function (resolve) {
287
379
  return setTimeout(resolve, 50);
288
380
  });
289
381
  case 11:
290
- columnStateToSave = gridApi.getColumnState();
291
382
  _context3.next = 15;
292
383
  break;
293
- case 14:
294
- // 如果在"方案管理"标签页,直接获取当前 Grid 状态
295
- columnStateToSave = gridApi.getColumnState();
384
+ case 13:
385
+ // 如果在"方案管理"标签页,使用当前表单数据
386
+ _values = form === null || form === void 0 ? void 0 : form.values;
387
+ columnConfigToSave = (_values === null || _values === void 0 ? void 0 : _values.items) || [];
296
388
  case 15:
297
- _context3.next = 17;
298
- return schemeManager === null || schemeManager === void 0 ? void 0 : schemeManager.createScheme(schemeName.trim(), columnStateToSave, {
299
- description: schemeDescription.trim() || "\u521B\u5EFA\u4E8E ".concat(new Date().toLocaleString())
389
+ // 获取过滤器模型
390
+ filterModel = gridApi.getFilterModel();
391
+ _context3.next = 18;
392
+ return schemeManager === null || schemeManager === void 0 ? void 0 : schemeManager.createScheme(schemeName.trim(), columnConfigToSave, {
393
+ description: schemeDescription.trim() || "\u521B\u5EFA\u4E8E ".concat(new Date().toLocaleString()),
394
+ filterModel: filterModel
300
395
  });
301
- case 17:
396
+ case 18:
302
397
  newScheme = _context3.sent;
303
398
  _antd.message.success('方案保存成功');
304
399
  setSaveSchemeVisible(false);
@@ -307,17 +402,17 @@ var ColumnSetting = function ColumnSetting(_ref) {
307
402
 
308
403
  // 切换到方案管理标签页,显示新创建的方案
309
404
  setActiveTab('schemes');
310
- _context3.next = 28;
405
+ _context3.next = 29;
311
406
  break;
312
- case 25:
313
- _context3.prev = 25;
407
+ case 26:
408
+ _context3.prev = 26;
314
409
  _context3.t0 = _context3["catch"](3);
315
410
  _antd.message.error(_context3.t0.message || '保存方案失败');
316
- case 28:
411
+ case 29:
317
412
  case "end":
318
413
  return _context3.stop();
319
414
  }
320
- }, _callee3, null, [[3, 25]]);
415
+ }, _callee3, null, [[3, 26]]);
321
416
  })), [gridApi, schemeManager, schemeName, schemeDescription, activeTab, form, type]);
322
417
 
323
418
  // 加载方案
@@ -575,13 +670,10 @@ var ColumnSetting = function ColumnSetting(_ref) {
575
670
  }))));
576
671
  }
577
672
  }];
578
- var tableProps = {
579
- onRowDrag: true
580
- };
581
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_antd.Modal, {
673
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_draggableModal.default, {
582
674
  title: "\u5217\u65B9\u6848\u7BA1\u7406",
583
675
  open: visible,
584
- onCancel: onClose,
676
+ onCancel: handleClose,
585
677
  width: 1100,
586
678
  footer: null,
587
679
  destroyOnClose: true
@@ -592,7 +684,7 @@ var ColumnSetting = function ColumnSetting(_ref) {
592
684
  onClick: onClose
593
685
  }, "\u53D6\u6D88"), /*#__PURE__*/_react.default.createElement(_antd.Button, {
594
686
  onClick: handleSaveColumns
595
- }, "\u4FDD\u5B58\u914D\u7F6E"), /*#__PURE__*/_react.default.createElement(_antd.Button, {
687
+ }, "\u4FDD\u5B58\u914D\u7F6E"), (type !== 'formArrayTable' || schemeManager) && /*#__PURE__*/_react.default.createElement(_antd.Button, {
596
688
  type: "primary",
597
689
  icon: /*#__PURE__*/_react.default.createElement(_icons.SaveOutlined, null),
598
690
  onClick: function onClick() {
@@ -632,143 +724,11 @@ var ColumnSetting = function ColumnSetting(_ref) {
632
724
  style: {
633
725
  color: '#666'
634
726
  }
635
- }, "\u672A\u9009\u62E9\u65B9\u6848 - \u4F7F\u7528\u9ED8\u8BA4\u914D\u7F6E")), /*#__PURE__*/_react.default.createElement(_antdV.Form, {
636
- form: form
637
- }, /*#__PURE__*/_react.default.createElement(_antdV.FormLayout, null, /*#__PURE__*/_react.default.createElement(SchemaField, null, /*#__PURE__*/_react.default.createElement(SchemaField.Void, {
638
- "x-component": "FormGrid",
639
- "x-component-props": {
640
- maxColumns: [1, 3],
641
- strictAutoFit: true
642
- }
643
- }, /*#__PURE__*/_react.default.createElement(SchemaField.Array, {
644
- name: "items",
645
- title: "",
646
- "x-component": "ArrayTable",
647
- "x-component-props": tableProps,
648
- "x-decorator": "FormItem",
649
- "x-decorator-props": {
650
- gridSpan: 3
651
- }
652
- }, /*#__PURE__*/_react.default.createElement(SchemaField.Object, null, /*#__PURE__*/_react.default.createElement(SchemaField.Void, {
653
- "x-component": "ArrayTable.Column",
654
- "x-component-props": {
655
- width: 80,
656
- title: '排序'
657
- }
658
- }, /*#__PURE__*/_react.default.createElement(SchemaField.Void, {
659
- "x-decorator": "FormItem",
660
- required: true,
661
- "x-component": "ArrayTable.SortHandle"
662
- })), /*#__PURE__*/_react.default.createElement(SchemaField.Void, {
663
- "x-component": "ArrayTable.Column",
664
- "x-component-props": {
665
- width: 180,
666
- title: '列名'
667
- }
668
- }, /*#__PURE__*/_react.default.createElement(SchemaField.String, {
669
- name: "headerName",
670
- "x-decorator": "FormItem",
671
- "x-component": "Input",
672
- "x-read-pretty": true
673
- })), /*#__PURE__*/_react.default.createElement(SchemaField.Void, {
674
- "x-component": "ArrayTable.Column",
675
- "x-component-props": {
676
- width: 120,
677
- title: '分组名称'
678
- }
679
- }, /*#__PURE__*/_react.default.createElement(SchemaField.String, {
680
- name: "groupName",
681
- "x-decorator": "FormItem",
682
- "x-component": "Input"
683
- })), /*#__PURE__*/_react.default.createElement(SchemaField.Void, {
684
- "x-component": "ArrayTable.Column",
685
- "x-component-props": {
686
- width: 80,
687
- title: '列过滤'
688
- }
689
- }, /*#__PURE__*/_react.default.createElement(SchemaField.String, {
690
- name: "suppressHeaderFilterButton",
691
- "x-decorator": "FormItem",
692
- "x-component": "Switch"
693
- })), /*#__PURE__*/_react.default.createElement(SchemaField.Void, {
694
- "x-component": "ArrayTable.Column",
695
- "x-component-props": {
696
- width: 120,
697
- title: '内容布局'
698
- }
699
- }, /*#__PURE__*/_react.default.createElement(SchemaField.String, {
700
- name: "cellClass",
701
- "x-decorator": "FormItem",
702
- "x-component": "Select",
703
- default: "custom-cell-left",
704
- enum: [{
705
- value: 'custom-cell-left',
706
- label: '左对齐'
707
- }, {
708
- value: 'custom-cell-right',
709
- label: '右对齐'
710
- }, {
711
- value: 'custom-cell-centered',
712
- label: '居中对齐'
713
- }]
714
- })), /*#__PURE__*/_react.default.createElement(SchemaField.Void, {
715
- "x-component": "ArrayTable.Column",
716
- "x-component-props": {
717
- width: 100,
718
- title: '宽度'
719
- }
720
- }, /*#__PURE__*/_react.default.createElement(SchemaField.String, {
721
- name: "width",
722
- "x-decorator": "FormItem",
723
- "x-component": "NumberPicker"
724
- })), /*#__PURE__*/_react.default.createElement(SchemaField.Void, {
725
- "x-component": "ArrayTable.Column",
726
- "x-component-props": {
727
- width: 100,
728
- title: '占满'
729
- }
730
- }, /*#__PURE__*/_react.default.createElement(SchemaField.String, {
731
- name: "flex",
732
- "x-decorator": "FormItem",
733
- "x-component": "Select",
734
- enum: [{
735
- value: 1,
736
- label: '占满'
737
- }, {
738
- value: 0,
739
- label: '不占满'
740
- }]
741
- })), /*#__PURE__*/_react.default.createElement(SchemaField.Void, {
742
- "x-component": "ArrayTable.Column",
743
- "x-component-props": {
744
- width: 100,
745
- title: '固定位置'
746
- }
747
- }, /*#__PURE__*/_react.default.createElement(SchemaField.String, {
748
- name: "pinned",
749
- "x-decorator": "FormItem",
750
- "x-component": "Select",
751
- enum: [{
752
- value: 'left',
753
- label: '左固定'
754
- }, {
755
- value: 'right',
756
- label: '右固定'
757
- }, {
758
- value: 'notPinned',
759
- label: '不固定'
760
- }]
761
- })), /*#__PURE__*/_react.default.createElement(SchemaField.Void, {
762
- "x-component": "ArrayTable.Column",
763
- "x-component-props": {
764
- width: 100,
765
- title: '隐藏'
766
- }
767
- }, /*#__PURE__*/_react.default.createElement(SchemaField.String, {
768
- name: "hide",
769
- "x-decorator": "FormItem",
770
- "x-component": "Switch"
771
- }))))))))), schemeManager && /*#__PURE__*/_react.default.createElement(TabPane, {
727
+ }, "\u672A\u9009\u62E9\u65B9\u6848 - \u4F7F\u7528\u9ED8\u8BA4\u914D\u7F6E")), /*#__PURE__*/_react.default.createElement(_ColumnConfigTable.default, {
728
+ items: form.values.items || [],
729
+ onChange: handleColumnChange,
730
+ simple: type === 'formArrayTable'
731
+ })), schemeManager && type !== 'formArrayTable' && /*#__PURE__*/_react.default.createElement(TabPane, {
772
732
  tab: "\u65B9\u6848\u7BA1\u7406",
773
733
  key: "schemes"
774
734
  }, /*#__PURE__*/_react.default.createElement("div", {
@@ -0,0 +1,15 @@
1
+ /**
2
+ * 移动节点弹窗组件
3
+ * 用于选择目标父节点,支持移动到根级别或其他分组下
4
+ */
5
+ import React from 'react';
6
+ import type { FlatColumnItem } from './columnGroupTypes';
7
+ interface MoveNodeModalProps {
8
+ visible: boolean;
9
+ currentNode: FlatColumnItem | null;
10
+ allItems: FlatColumnItem[];
11
+ onCancel: () => void;
12
+ onConfirm: (targetParentId: string | undefined) => void;
13
+ }
14
+ declare const MoveNodeModal: React.FC<MoveNodeModalProps>;
15
+ export default MoveNodeModal;