@nokecy/qc-ui 1.1.27 → 1.1.29

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.
@@ -174,39 +174,45 @@ function AgGridPlus(props) {
174
174
  _useState2 = _slicedToArray(_useState, 2),
175
175
  ready = _useState2[0],
176
176
  setReady = _useState2[1];
177
- var _useState3 = (0, _react.useState)(loadingProps ? loadingProps : false),
177
+ // 【修复】追踪搜索表单是否已完成初始化(包含默认值)
178
+ // 只有当 search !== false 时才需要等待表单初始化
179
+ var _useState3 = (0, _react.useState)(search === false),
178
180
  _useState4 = _slicedToArray(_useState3, 2),
179
- loading = _useState4[0],
180
- setLoading = _useState4[1];
181
- var _useState5 = (0, _react.useState)(),
181
+ formInitialized = _useState4[0],
182
+ setFormInitialized = _useState4[1];
183
+ var _useState5 = (0, _react.useState)(loadingProps ? loadingProps : false),
182
184
  _useState6 = _slicedToArray(_useState5, 2),
183
- columnState = _useState6[0],
184
- setColumnState = _useState6[1];
185
- var _useState7 = (0, _react.useState)({}),
185
+ loading = _useState6[0],
186
+ setLoading = _useState6[1];
187
+ var _useState7 = (0, _react.useState)(),
186
188
  _useState8 = _slicedToArray(_useState7, 2),
187
- columnCellClass = _useState8[0],
188
- setColumnCellClass = _useState8[1];
189
- var _useState9 = (0, _react.useState)([]),
189
+ columnState = _useState8[0],
190
+ setColumnState = _useState8[1];
191
+ var _useState9 = (0, _react.useState)({}),
190
192
  _useState10 = _slicedToArray(_useState9, 2),
191
- rowData = _useState10[0],
192
- setRowData = _useState10[1];
193
- var _useState11 = (0, _react.useState)({}),
193
+ columnCellClass = _useState10[0],
194
+ setColumnCellClass = _useState10[1];
195
+ var _useState11 = (0, _react.useState)([]),
194
196
  _useState12 = _slicedToArray(_useState11, 2),
195
- queryFilter = _useState12[0],
196
- setQueryFilter = _useState12[1];
197
- var _useState13 = (0, _react.useState)(),
197
+ rowData = _useState12[0],
198
+ setRowData = _useState12[1];
199
+ var _useState13 = (0, _react.useState)({}),
198
200
  _useState14 = _slicedToArray(_useState13, 2),
199
- sortColumn = _useState14[0],
200
- setSortColumn = _useState14[1];
201
+ queryFilter = _useState14[0],
202
+ setQueryFilter = _useState14[1];
203
+ var _useState15 = (0, _react.useState)(),
204
+ _useState16 = _slicedToArray(_useState15, 2),
205
+ sortColumn = _useState16[0],
206
+ setSortColumn = _useState16[1];
201
207
  // 初始化分页参数,支持外部传入的pageSize
202
- var _useState15 = (0, _react.useState)({
208
+ var _useState17 = (0, _react.useState)({
203
209
  pageSize: props.pageSize !== undefined ? props.pageSize : props.hidePagination ? 10000 : 200,
204
210
  current: 1,
205
211
  total: dataSource ? dataSource.length : 0
206
212
  }),
207
- _useState16 = _slicedToArray(_useState15, 2),
208
- pagination = _useState16[0],
209
- setPagination = _useState16[1];
213
+ _useState18 = _slicedToArray(_useState17, 2),
214
+ pagination = _useState18[0],
215
+ setPagination = _useState18[1];
210
216
 
211
217
  // ============ 方案管理 - 使用集中式 Context ============
212
218
  var _useGridSchemes = (0, _useSchemeManager.useGridSchemes)(),
@@ -225,16 +231,16 @@ function AgGridPlus(props) {
225
231
  getColumnSchemes = _useGridSchemes.getColumnSchemes,
226
232
  getQuerySchemes = _useGridSchemes.getQuerySchemes,
227
233
  getCurrentScheme = _useGridSchemes.getCurrentScheme;
228
- var _useState17 = (0, _react.useState)([]),
229
- _useState18 = _slicedToArray(_useState17, 2),
230
- queryItemsOrder = _useState18[0],
231
- setQueryItemsOrder = _useState18[1];
234
+ var _useState19 = (0, _react.useState)([]),
235
+ _useState20 = _slicedToArray(_useState19, 2),
236
+ queryItemsOrder = _useState20[0],
237
+ setQueryItemsOrder = _useState20[1];
232
238
 
233
239
  // 高级查询状态
234
- var _useState19 = (0, _react.useState)(false),
235
- _useState20 = _slicedToArray(_useState19, 2),
236
- advancedPopoverOpen = _useState20[0],
237
- setAdvancedPopoverOpen = _useState20[1];
240
+ var _useState21 = (0, _react.useState)(false),
241
+ _useState22 = _slicedToArray(_useState21, 2),
242
+ advancedPopoverOpen = _useState22[0],
243
+ setAdvancedPopoverOpen = _useState22[1];
238
244
  var createEmptyRuleGroup = function createEmptyRuleGroup() {
239
245
  return {
240
246
  id: (0, _uuid.v4)(),
@@ -242,10 +248,10 @@ function AgGridPlus(props) {
242
248
  children: []
243
249
  };
244
250
  };
245
- var _useState21 = (0, _react.useState)(createEmptyRuleGroup),
246
- _useState22 = _slicedToArray(_useState21, 2),
247
- advancedQueryRules = _useState22[0],
248
- setAdvancedQueryRules = _useState22[1];
251
+ var _useState23 = (0, _react.useState)(createEmptyRuleGroup),
252
+ _useState24 = _slicedToArray(_useState23, 2),
253
+ advancedQueryRules = _useState24[0],
254
+ setAdvancedQueryRules = _useState24[1];
249
255
 
250
256
  /**
251
257
  * 【P1 架构优化】使用单向数据流架构
@@ -819,9 +825,10 @@ function AgGridPlus(props) {
819
825
  paginationPageSize: pagination.pageSize,
820
826
  stableSortColumn: stableSortColumn
821
827
  };
822
- if (ready && requestRef.current) {
828
+ if (ready && formInitialized && requestRef.current) {
823
829
  _logger.logger.debug('useEffect 触发数据请求', {
824
830
  ready: ready,
831
+ formInitialized: formInitialized,
825
832
  hasRequest: !!requestRef.current,
826
833
  queryFilter: stableQueryFilter,
827
834
  stableGridParams: stableGridParams,
@@ -832,7 +839,7 @@ function AgGridPlus(props) {
832
839
  });
833
840
  onRequest(stableQueryFilter);
834
841
  }
835
- }, [ready, stableQueryFilter, stableGridParams, pagination.current, pagination.pageSize, stableSortColumn]);
842
+ }, [ready, formInitialized, stableQueryFilter, stableGridParams, pagination.current, pagination.pageSize, stableSortColumn]);
836
843
  var handelgridPlusColumnState = function handelgridPlusColumnState(columnState) {
837
844
  var cellMap = {};
838
845
  if ((0, _isArray2.default)(columnState)) {
@@ -1257,7 +1264,10 @@ function AgGridPlus(props) {
1257
1264
  onRequest && onRequest(formValues);
1258
1265
  },
1259
1266
  onInit: function onInit(defaultValues) {
1267
+ // 【修复】先设置 queryFilter,再标记表单已初始化
1268
+ // 这样确保首次请求时 queryFilter 已包含默认值
1260
1269
  setQueryFilter(defaultValues);
1270
+ setFormInitialized(true);
1261
1271
  }
1262
1272
  }), /*#__PURE__*/_react.default.createElement(_antd.Card, {
1263
1273
  bordered: false,
@@ -57,9 +57,11 @@ var FormRender = function FormRender(props) {
57
57
  }
58
58
  });
59
59
  }, []);
60
- (0, _react2.useEffect)(function () {
61
- props.onInit && props.onInit(form.values);
62
- }, []);
60
+
61
+ // 【修复】移除此处的 onInit 调用
62
+ // 原因:此时 schema 尚未设置,form.values 为空,默认值还未应用
63
+ // 改为在下方 schema 设置完成后调用 onInit
64
+
63
65
  var SchemaField = (0, _react2.useMemo)(function () {
64
66
  return (0, _react.createSchemaField)({
65
67
  components: {
@@ -193,9 +195,24 @@ var FormRender = function FormRender(props) {
193
195
  }
194
196
  return rootSchema;
195
197
  };
198
+
199
+ // 【新增】用于追踪是否已完成首次初始化
200
+ var initializedRef = (0, _react2.useRef)(false);
196
201
  (0, _react2.useEffect)(function () {
197
202
  var new_schema = getSchema(onReset);
198
203
  setSchema(new_schema);
204
+
205
+ // 【修复】在 schema 设置完成后调用 onInit
206
+ // 使用 setTimeout 确保 Formily 有时间处理 schema 并应用默认值
207
+ if (!initializedRef.current) {
208
+ initializedRef.current = true;
209
+ // 使用 requestAnimationFrame + setTimeout 确保默认值已应用
210
+ requestAnimationFrame(function () {
211
+ setTimeout(function () {
212
+ props.onInit && props.onInit(form.values);
213
+ }, 0);
214
+ });
215
+ }
199
216
  }, [columnStates === null || columnStates === void 0 ? void 0 : columnStates.map(function (c) {
200
217
  return c.colId;
201
218
  }).join('|'), colDefs === null || colDefs === void 0 ? void 0 : colDefs.map(function (c) {
@@ -28,6 +28,10 @@ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) r
28
28
  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; }
29
29
  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); } }
30
30
  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); }); }; }
31
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
32
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
33
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
34
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
31
35
  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; }
32
36
  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; }
33
37
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
@@ -170,7 +174,7 @@ var ColumnSetting = function ColumnSetting(_ref) {
170
174
  /**
171
175
  * 合并代码中新增的列到配置中
172
176
  * 场景:用户保存列配置后,开发者在代码中新增了列,这些列应该显示在配置表格中
173
- * 【增强】按照原始定义的顺序插入新增列,保留原始位置
177
+ * 【修复】只检测并追加新增列到末尾,不改变已保存配置的顺序
174
178
  */
175
179
  var mergeNewColumns = (0, _react.useCallback)(function (config, originalDefs) {
176
180
  if (!originalDefs || originalDefs.length === 0) {
@@ -178,93 +182,75 @@ var ColumnSetting = function ColumnSetting(_ref) {
178
182
  }
179
183
 
180
184
  // 创建 field -> config item 的映射(用于快速查找已保存的列配置)
181
- var configByField = new Map();
185
+ var existingFields = new Set();
182
186
  config.filter(function (item) {
183
187
  return item.type === 'column' && item.field;
184
188
  }).forEach(function (item) {
185
- configByField.set(item.field, item);
189
+ existingFields.add(item.field);
186
190
  });
187
191
 
188
192
  // 创建 groupId -> config item 的映射(用于快速查找已保存的分组配置)
189
- var configByGroupId = new Map();
193
+ var existingGroupIds = new Set();
190
194
  config.filter(function (item) {
191
195
  return item.type === 'group' && item.groupId;
192
196
  }).forEach(function (item) {
193
- configByGroupId.set(item.groupId, item);
197
+ existingGroupIds.add(item.groupId);
194
198
  });
195
- var result = [];
196
- var order = 0;
197
- var hasNewColumns = false;
199
+
200
+ // 收集新增的列(在 originalDefs 中存在但 config 中不存在)
201
+ var newItems = [];
202
+ var maxOrder = Math.max.apply(Math, _toConsumableArray(config.map(function (item) {
203
+ return item.order;
204
+ })).concat([-1]));
198
205
 
199
206
  /**
200
- * 递归处理列定义,按原始顺序构建结果
201
- * @param defs 列定义数组
202
- * @param level 当前层级
203
- * @param parentId 父节点 ID(如果有)
207
+ * 递归处理列定义,查找新增的列和分组
204
208
  */
205
- var processDefsInOrder = function processDefsInOrder(defs, level, parentId) {
209
+ var findNewColumns = function findNewColumns(defs, level, parentId) {
206
210
  var _iterator2 = _createForOfIteratorHelper(defs),
207
211
  _step2;
208
212
  try {
209
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
213
+ var _loop = function _loop() {
210
214
  var def = _step2.value;
211
215
  // 检查是否是分组
212
216
  if ('children' in def && def.children && def.children.length > 0) {
213
217
  var groupDef = def;
214
218
  var groupIdValue = groupDef.groupId || groupDef.field || (0, _columnGroupUtils.generateId)();
215
-
216
- // 查找已保存的分组配置
217
- var existingGroup = configByGroupId.get(groupIdValue);
218
- var groupItem = void 0;
219
- if (existingGroup) {
220
- // 使用已保存的分组配置,但更新 order 和 parentId
221
- groupItem = _objectSpread(_objectSpread({}, existingGroup), {}, {
222
- order: order++,
223
- parentId: parentId,
224
- level: level
225
- });
226
- } else {
219
+ if (!existingGroupIds.has(groupIdValue)) {
227
220
  // 新分组
228
- hasNewColumns = true;
229
- groupItem = {
230
- id: (0, _columnGroupUtils.generateId)(),
221
+ var newGroupId = (0, _columnGroupUtils.generateId)();
222
+ newItems.push({
223
+ id: newGroupId,
231
224
  type: 'group',
232
225
  parentId: parentId,
233
226
  level: level,
234
- order: order++,
227
+ order: ++maxOrder,
235
228
  headerName: groupDef.headerName || '未命名分组',
236
229
  originalHeaderName: groupDef.headerName || '未命名分组',
237
230
  groupId: groupIdValue,
238
231
  marryChildren: groupDef.marryChildren
239
- };
232
+ });
233
+ // 递归处理子节点(新分组的子节点也都是新的)
234
+ findNewColumns(groupDef.children, level + 1, newGroupId);
235
+ } else {
236
+ // 已存在的分组,但要检查子节点是否有新增
237
+ var existingGroup = config.find(function (item) {
238
+ return item.type === 'group' && item.groupId === groupIdValue;
239
+ });
240
+ findNewColumns(groupDef.children, level + 1, existingGroup === null || existingGroup === void 0 ? void 0 : existingGroup.id);
240
241
  }
241
- result.push(groupItem);
242
-
243
- // 递归处理子节点
244
- processDefsInOrder(groupDef.children, level + 1, groupItem.id);
245
242
  } else {
246
243
  // 普通列
247
244
  var colDef = def;
248
- if (!colDef.field) continue;
249
-
250
- // 查找已保存的列配置
251
- var existingCol = configByField.get(colDef.field);
252
- if (existingCol) {
253
- // 使用已保存的列配置,但更新 order 和 parentId
254
- result.push(_objectSpread(_objectSpread({}, existingCol), {}, {
255
- order: order++,
256
- parentId: parentId,
257
- level: level
258
- }));
259
- } else {
260
- // 新列
261
- hasNewColumns = true;
262
- result.push({
245
+ if (!colDef.field) return 1; // continue
246
+ if (!existingFields.has(colDef.field)) {
247
+ // 新列 - 追加到末尾
248
+ newItems.push({
263
249
  id: (0, _columnGroupUtils.generateId)(),
264
250
  type: 'column',
265
251
  parentId: parentId,
266
252
  level: level,
267
- order: order++,
253
+ order: ++maxOrder,
268
254
  field: colDef.field,
269
255
  headerName: colDef.headerName || colDef.field || '未命名列',
270
256
  originalHeaderName: colDef.headerName || colDef.field || '未命名列',
@@ -277,6 +263,9 @@ var ColumnSetting = function ColumnSetting(_ref) {
277
263
  });
278
264
  }
279
265
  }
266
+ };
267
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
268
+ if (_loop()) continue;
280
269
  }
281
270
  } catch (err) {
282
271
  _iterator2.e(err);
@@ -285,10 +274,12 @@ var ColumnSetting = function ColumnSetting(_ref) {
285
274
  }
286
275
  };
287
276
 
288
- // 从根级别开始处理
289
- processDefsInOrder(originalDefs, 0);
290
- if (hasNewColumns) {}
291
- return result;
277
+ // 从根级别开始查找新增列
278
+ findNewColumns(originalDefs, 0);
279
+ if (newItems.length > 0) {
280
+ return [].concat(_toConsumableArray(config), newItems);
281
+ }
282
+ return config;
292
283
  }, []);
293
284
 
294
285
  /**
@@ -302,6 +293,10 @@ var ColumnSetting = function ColumnSetting(_ref) {
302
293
  var config = fixOriginalHeaderName(currentScheme.columnConfig);
303
294
  // 【修复】检测并追加代码中新增的列到配置末尾
304
295
  config = mergeNewColumns(config, originalColumnDefs);
296
+ // 【修复】按 order 字段排序,确保配置弹窗显示的列顺序与保存时一致
297
+ config = _toConsumableArray(config).sort(function (a, b) {
298
+ return a.order - b.order;
299
+ });
305
300
  return config;
306
301
  }
307
302
 
@@ -166,39 +166,45 @@ function AgGridPlus(props) {
166
166
  _useState2 = _slicedToArray(_useState, 2),
167
167
  ready = _useState2[0],
168
168
  setReady = _useState2[1];
169
- var _useState3 = useState(loadingProps ? loadingProps : false),
169
+ // 【修复】追踪搜索表单是否已完成初始化(包含默认值)
170
+ // 只有当 search !== false 时才需要等待表单初始化
171
+ var _useState3 = useState(search === false),
170
172
  _useState4 = _slicedToArray(_useState3, 2),
171
- loading = _useState4[0],
172
- setLoading = _useState4[1];
173
- var _useState5 = useState(),
173
+ formInitialized = _useState4[0],
174
+ setFormInitialized = _useState4[1];
175
+ var _useState5 = useState(loadingProps ? loadingProps : false),
174
176
  _useState6 = _slicedToArray(_useState5, 2),
175
- columnState = _useState6[0],
176
- setColumnState = _useState6[1];
177
- var _useState7 = useState({}),
177
+ loading = _useState6[0],
178
+ setLoading = _useState6[1];
179
+ var _useState7 = useState(),
178
180
  _useState8 = _slicedToArray(_useState7, 2),
179
- columnCellClass = _useState8[0],
180
- setColumnCellClass = _useState8[1];
181
- var _useState9 = useState([]),
181
+ columnState = _useState8[0],
182
+ setColumnState = _useState8[1];
183
+ var _useState9 = useState({}),
182
184
  _useState10 = _slicedToArray(_useState9, 2),
183
- rowData = _useState10[0],
184
- setRowData = _useState10[1];
185
- var _useState11 = useState({}),
185
+ columnCellClass = _useState10[0],
186
+ setColumnCellClass = _useState10[1];
187
+ var _useState11 = useState([]),
186
188
  _useState12 = _slicedToArray(_useState11, 2),
187
- queryFilter = _useState12[0],
188
- setQueryFilter = _useState12[1];
189
- var _useState13 = useState(),
189
+ rowData = _useState12[0],
190
+ setRowData = _useState12[1];
191
+ var _useState13 = useState({}),
190
192
  _useState14 = _slicedToArray(_useState13, 2),
191
- sortColumn = _useState14[0],
192
- setSortColumn = _useState14[1];
193
+ queryFilter = _useState14[0],
194
+ setQueryFilter = _useState14[1];
195
+ var _useState15 = useState(),
196
+ _useState16 = _slicedToArray(_useState15, 2),
197
+ sortColumn = _useState16[0],
198
+ setSortColumn = _useState16[1];
193
199
  // 初始化分页参数,支持外部传入的pageSize
194
- var _useState15 = useState({
200
+ var _useState17 = useState({
195
201
  pageSize: props.pageSize !== undefined ? props.pageSize : props.hidePagination ? 10000 : 200,
196
202
  current: 1,
197
203
  total: dataSource ? dataSource.length : 0
198
204
  }),
199
- _useState16 = _slicedToArray(_useState15, 2),
200
- pagination = _useState16[0],
201
- setPagination = _useState16[1];
205
+ _useState18 = _slicedToArray(_useState17, 2),
206
+ pagination = _useState18[0],
207
+ setPagination = _useState18[1];
202
208
 
203
209
  // ============ 方案管理 - 使用集中式 Context ============
204
210
  var _useGridSchemes = useGridSchemes(),
@@ -217,16 +223,16 @@ function AgGridPlus(props) {
217
223
  getColumnSchemes = _useGridSchemes.getColumnSchemes,
218
224
  getQuerySchemes = _useGridSchemes.getQuerySchemes,
219
225
  getCurrentScheme = _useGridSchemes.getCurrentScheme;
220
- var _useState17 = useState([]),
221
- _useState18 = _slicedToArray(_useState17, 2),
222
- queryItemsOrder = _useState18[0],
223
- setQueryItemsOrder = _useState18[1];
226
+ var _useState19 = useState([]),
227
+ _useState20 = _slicedToArray(_useState19, 2),
228
+ queryItemsOrder = _useState20[0],
229
+ setQueryItemsOrder = _useState20[1];
224
230
 
225
231
  // 高级查询状态
226
- var _useState19 = useState(false),
227
- _useState20 = _slicedToArray(_useState19, 2),
228
- advancedPopoverOpen = _useState20[0],
229
- setAdvancedPopoverOpen = _useState20[1];
232
+ var _useState21 = useState(false),
233
+ _useState22 = _slicedToArray(_useState21, 2),
234
+ advancedPopoverOpen = _useState22[0],
235
+ setAdvancedPopoverOpen = _useState22[1];
230
236
  var createEmptyRuleGroup = function createEmptyRuleGroup() {
231
237
  return {
232
238
  id: uuidv4(),
@@ -234,10 +240,10 @@ function AgGridPlus(props) {
234
240
  children: []
235
241
  };
236
242
  };
237
- var _useState21 = useState(createEmptyRuleGroup),
238
- _useState22 = _slicedToArray(_useState21, 2),
239
- advancedQueryRules = _useState22[0],
240
- setAdvancedQueryRules = _useState22[1];
243
+ var _useState23 = useState(createEmptyRuleGroup),
244
+ _useState24 = _slicedToArray(_useState23, 2),
245
+ advancedQueryRules = _useState24[0],
246
+ setAdvancedQueryRules = _useState24[1];
241
247
 
242
248
  /**
243
249
  * 【P1 架构优化】使用单向数据流架构
@@ -811,9 +817,10 @@ function AgGridPlus(props) {
811
817
  paginationPageSize: pagination.pageSize,
812
818
  stableSortColumn: stableSortColumn
813
819
  };
814
- if (ready && requestRef.current) {
820
+ if (ready && formInitialized && requestRef.current) {
815
821
  logger.debug('useEffect 触发数据请求', {
816
822
  ready: ready,
823
+ formInitialized: formInitialized,
817
824
  hasRequest: !!requestRef.current,
818
825
  queryFilter: stableQueryFilter,
819
826
  stableGridParams: stableGridParams,
@@ -824,7 +831,7 @@ function AgGridPlus(props) {
824
831
  });
825
832
  onRequest(stableQueryFilter);
826
833
  }
827
- }, [ready, stableQueryFilter, stableGridParams, pagination.current, pagination.pageSize, stableSortColumn]);
834
+ }, [ready, formInitialized, stableQueryFilter, stableGridParams, pagination.current, pagination.pageSize, stableSortColumn]);
828
835
  var handelgridPlusColumnState = function handelgridPlusColumnState(columnState) {
829
836
  var cellMap = {};
830
837
  if (_isArray(columnState)) {
@@ -1249,7 +1256,10 @@ function AgGridPlus(props) {
1249
1256
  onRequest && onRequest(formValues);
1250
1257
  },
1251
1258
  onInit: function onInit(defaultValues) {
1259
+ // 【修复】先设置 queryFilter,再标记表单已初始化
1260
+ // 这样确保首次请求时 queryFilter 已包含默认值
1252
1261
  setQueryFilter(defaultValues);
1262
+ setFormInitialized(true);
1253
1263
  }
1254
1264
  }), /*#__PURE__*/React.createElement(Card, {
1255
1265
  bordered: false,
@@ -16,7 +16,7 @@ import { onFieldInit } from '@formily/core';
16
16
  import { createSchemaField } from '@formily/react';
17
17
  import { Button } from 'antd';
18
18
  import classNames from 'classnames';
19
- import React, { useEffect, useMemo, useState } from 'react';
19
+ import React, { useEffect, useMemo, useRef, useState } from 'react';
20
20
  import QueryForm from "./queryForm";
21
21
  import BoolSelect from "../_utils/boolSelect";
22
22
  import "./index.less";
@@ -49,9 +49,11 @@ var FormRender = function FormRender(props) {
49
49
  }
50
50
  });
51
51
  }, []);
52
- useEffect(function () {
53
- props.onInit && props.onInit(form.values);
54
- }, []);
52
+
53
+ // 【修复】移除此处的 onInit 调用
54
+ // 原因:此时 schema 尚未设置,form.values 为空,默认值还未应用
55
+ // 改为在下方 schema 设置完成后调用 onInit
56
+
55
57
  var SchemaField = useMemo(function () {
56
58
  return createSchemaField({
57
59
  components: {
@@ -185,9 +187,24 @@ var FormRender = function FormRender(props) {
185
187
  }
186
188
  return rootSchema;
187
189
  };
190
+
191
+ // 【新增】用于追踪是否已完成首次初始化
192
+ var initializedRef = useRef(false);
188
193
  useEffect(function () {
189
194
  var new_schema = getSchema(onReset);
190
195
  setSchema(new_schema);
196
+
197
+ // 【修复】在 schema 设置完成后调用 onInit
198
+ // 使用 setTimeout 确保 Formily 有时间处理 schema 并应用默认值
199
+ if (!initializedRef.current) {
200
+ initializedRef.current = true;
201
+ // 使用 requestAnimationFrame + setTimeout 确保默认值已应用
202
+ requestAnimationFrame(function () {
203
+ setTimeout(function () {
204
+ props.onInit && props.onInit(form.values);
205
+ }, 0);
206
+ });
207
+ }
191
208
  }, [columnStates === null || columnStates === void 0 ? void 0 : columnStates.map(function (c) {
192
209
  return c.colId;
193
210
  }).join('|'), colDefs === null || colDefs === void 0 ? void 0 : colDefs.map(function (c) {