@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.
- package/dist/cjs/ag-grid-plus/ag-gridPlus.js +46 -36
- package/dist/cjs/ag-grid-plus/queryForm/index.js +20 -3
- package/dist/cjs/ag-grid-plus/setting/ColumnSetting.js +50 -55
- package/dist/esm/ag-grid-plus/ag-gridPlus.js +46 -36
- package/dist/esm/ag-grid-plus/queryForm/index.js +21 -4
- package/dist/esm/ag-grid-plus/setting/ColumnSetting.js +50 -55
- package/dist/umd/qc-ui.min.js +1 -1
- package/package.json +1 -1
|
@@ -174,39 +174,45 @@ function AgGridPlus(props) {
|
|
|
174
174
|
_useState2 = _slicedToArray(_useState, 2),
|
|
175
175
|
ready = _useState2[0],
|
|
176
176
|
setReady = _useState2[1];
|
|
177
|
-
|
|
177
|
+
// 【修复】追踪搜索表单是否已完成初始化(包含默认值)
|
|
178
|
+
// 只有当 search !== false 时才需要等待表单初始化
|
|
179
|
+
var _useState3 = (0, _react.useState)(search === false),
|
|
178
180
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
179
|
-
|
|
180
|
-
|
|
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
|
-
|
|
184
|
-
|
|
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
|
-
|
|
188
|
-
|
|
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
|
-
|
|
192
|
-
|
|
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
|
-
|
|
196
|
-
|
|
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
|
-
|
|
200
|
-
|
|
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
|
|
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
|
-
|
|
208
|
-
pagination =
|
|
209
|
-
setPagination =
|
|
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
|
|
229
|
-
|
|
230
|
-
queryItemsOrder =
|
|
231
|
-
setQueryItemsOrder =
|
|
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
|
|
235
|
-
|
|
236
|
-
advancedPopoverOpen =
|
|
237
|
-
setAdvancedPopoverOpen =
|
|
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
|
|
246
|
-
|
|
247
|
-
advancedQueryRules =
|
|
248
|
-
setAdvancedQueryRules =
|
|
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
|
-
|
|
61
|
-
|
|
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
|
|
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
|
-
|
|
189
|
+
existingFields.add(item.field);
|
|
186
190
|
});
|
|
187
191
|
|
|
188
192
|
// 创建 groupId -> config item 的映射(用于快速查找已保存的分组配置)
|
|
189
|
-
var
|
|
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
|
-
|
|
197
|
+
existingGroupIds.add(item.groupId);
|
|
194
198
|
});
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
var
|
|
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
|
|
209
|
+
var findNewColumns = function findNewColumns(defs, level, parentId) {
|
|
206
210
|
var _iterator2 = _createForOfIteratorHelper(defs),
|
|
207
211
|
_step2;
|
|
208
212
|
try {
|
|
209
|
-
|
|
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
|
-
|
|
229
|
-
|
|
230
|
-
id:
|
|
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:
|
|
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
|
-
|
|
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:
|
|
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
|
-
|
|
290
|
-
if (
|
|
291
|
-
|
|
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
|
-
|
|
169
|
+
// 【修复】追踪搜索表单是否已完成初始化(包含默认值)
|
|
170
|
+
// 只有当 search !== false 时才需要等待表单初始化
|
|
171
|
+
var _useState3 = useState(search === false),
|
|
170
172
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
171
|
-
|
|
172
|
-
|
|
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
|
-
|
|
176
|
-
|
|
177
|
-
var _useState7 = useState(
|
|
177
|
+
loading = _useState6[0],
|
|
178
|
+
setLoading = _useState6[1];
|
|
179
|
+
var _useState7 = useState(),
|
|
178
180
|
_useState8 = _slicedToArray(_useState7, 2),
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
var _useState9 = useState(
|
|
181
|
+
columnState = _useState8[0],
|
|
182
|
+
setColumnState = _useState8[1];
|
|
183
|
+
var _useState9 = useState({}),
|
|
182
184
|
_useState10 = _slicedToArray(_useState9, 2),
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
var _useState11 = useState(
|
|
185
|
+
columnCellClass = _useState10[0],
|
|
186
|
+
setColumnCellClass = _useState10[1];
|
|
187
|
+
var _useState11 = useState([]),
|
|
186
188
|
_useState12 = _slicedToArray(_useState11, 2),
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
var _useState13 = useState(),
|
|
189
|
+
rowData = _useState12[0],
|
|
190
|
+
setRowData = _useState12[1];
|
|
191
|
+
var _useState13 = useState({}),
|
|
190
192
|
_useState14 = _slicedToArray(_useState13, 2),
|
|
191
|
-
|
|
192
|
-
|
|
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
|
|
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
|
-
|
|
200
|
-
pagination =
|
|
201
|
-
setPagination =
|
|
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
|
|
221
|
-
|
|
222
|
-
queryItemsOrder =
|
|
223
|
-
setQueryItemsOrder =
|
|
226
|
+
var _useState19 = useState([]),
|
|
227
|
+
_useState20 = _slicedToArray(_useState19, 2),
|
|
228
|
+
queryItemsOrder = _useState20[0],
|
|
229
|
+
setQueryItemsOrder = _useState20[1];
|
|
224
230
|
|
|
225
231
|
// 高级查询状态
|
|
226
|
-
var
|
|
227
|
-
|
|
228
|
-
advancedPopoverOpen =
|
|
229
|
-
setAdvancedPopoverOpen =
|
|
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
|
|
238
|
-
|
|
239
|
-
advancedQueryRules =
|
|
240
|
-
setAdvancedQueryRules =
|
|
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
|
-
|
|
53
|
-
|
|
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) {
|