@nokecy/qc-ui 1.1.2 → 1.1.4

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.
@@ -27,6 +27,7 @@ import { HTML5Backend } from 'react-dnd-html5-backend';
27
27
  import { useGridSchemes } from "../context/useSchemeManager";
28
28
  import { GridPlusContext } from "../context/gridContext";
29
29
  import { v4 as uuidv4 } from 'uuid';
30
+ import { extractItemsOrder, extractHiddenFields, buildQueryConfig } from "../shared/utils/schemeDataMigration";
30
31
  var DRAG_TYPE = 'QUERY_ITEM';
31
32
  /**
32
33
  * 可拖拽的查询项组件
@@ -186,8 +187,8 @@ var QuerySchemeManager = function QuerySchemeManager(_ref2) {
186
187
  setEditingOrder(defaultOrder);
187
188
  }
188
189
 
189
- // 初始化隐藏字段
190
- setHiddenFields((currentScheme === null || currentScheme === void 0 ? void 0 : currentScheme.hiddenFields) || []);
190
+ // 初始化隐藏字段 - 使用新格式提取器
191
+ setHiddenFields(currentScheme ? extractHiddenFields(currentScheme) : []);
191
192
  }
192
193
  }, [visible, currentQueryOrder, queryFormItems, currentScheme]);
193
194
 
@@ -235,68 +236,67 @@ var QuerySchemeManager = function QuerySchemeManager(_ref2) {
235
236
  * 应用当前顺序和隐藏设置
236
237
  */
237
238
  var handleApplyOrder = useCallback( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
238
- var newScheme;
239
+ var queryConfig, newScheme;
239
240
  return _regeneratorRuntime().wrap(function _callee$(_context) {
240
241
  while (1) switch (_context.prev = _context.next) {
241
242
  case 0:
242
243
  _context.prev = 0;
244
+ // 构建新格式的配置
245
+ queryConfig = buildQueryConfig(editingOrder, hiddenFields); // 如果有当前方案,更新方案
243
246
  if (!currentScheme) {
244
- _context.next = 7;
247
+ _context.next = 8;
245
248
  break;
246
249
  }
247
- _context.next = 4;
250
+ _context.next = 5;
248
251
  return saveQueryScheme === null || saveQueryScheme === void 0 ? void 0 : saveQueryScheme(gridKey, _objectSpread(_objectSpread({}, currentScheme), {}, {
249
- itemsOrder: editingOrder,
250
- hiddenFields: hiddenFields,
252
+ queryConfig: queryConfig,
251
253
  updatedAt: Date.now()
252
254
  }));
253
- case 4:
255
+ case 5:
254
256
  message.success('已应用新配置');
255
- _context.next = 13;
257
+ _context.next = 14;
256
258
  break;
257
- case 7:
259
+ case 8:
258
260
  // 创建新方案
259
261
  newScheme = {
260
262
  id: uuidv4(),
261
263
  name: '默认方案',
262
264
  description: '自动创建的默认查询方案',
263
- itemsOrder: editingOrder,
264
- hiddenFields: hiddenFields,
265
- formValues: {},
265
+ queryConfig: queryConfig,
266
266
  isDefault: true,
267
267
  isSystem: false,
268
268
  createdAt: Date.now(),
269
269
  updatedAt: Date.now()
270
270
  };
271
- _context.next = 10;
271
+ _context.next = 11;
272
272
  return saveQueryScheme === null || saveQueryScheme === void 0 ? void 0 : saveQueryScheme(gridKey, newScheme);
273
- case 10:
274
- _context.next = 12;
273
+ case 11:
274
+ _context.next = 13;
275
275
  return setCurrentQueryScheme === null || setCurrentQueryScheme === void 0 ? void 0 : setCurrentQueryScheme(gridKey, newScheme.id);
276
- case 12:
277
- message.success('已自动创建并应用默认方案');
278
276
  case 13:
277
+ message.success('已自动创建并应用默认方案');
278
+ case 14:
279
279
  // 应用顺序到表单
280
280
  updateQueryOrder === null || updateQueryOrder === void 0 || updateQueryOrder(editingOrder);
281
281
  onClose();
282
- _context.next = 20;
282
+ _context.next = 21;
283
283
  break;
284
- case 17:
285
- _context.prev = 17;
284
+ case 18:
285
+ _context.prev = 18;
286
286
  _context.t0 = _context["catch"](0);
287
287
  message.error(_context.t0.message || '应用失败');
288
- case 20:
288
+ case 21:
289
289
  case "end":
290
290
  return _context.stop();
291
291
  }
292
- }, _callee, null, [[0, 17]]);
292
+ }, _callee, null, [[0, 18]]);
293
293
  })), [editingOrder, hiddenFields, currentScheme, saveQueryScheme, gridKey, updateQueryOrder, onClose, setCurrentQueryScheme]);
294
294
 
295
295
  /**
296
296
  * 保存为新方案
297
297
  */
298
298
  var handleSaveAsNew = useCallback( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
299
- var newScheme;
299
+ var queryConfig, newScheme;
300
300
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
301
301
  while (1) switch (_context2.prev = _context2.next) {
302
302
  case 0:
@@ -308,34 +308,34 @@ var QuerySchemeManager = function QuerySchemeManager(_ref2) {
308
308
  return _context2.abrupt("return");
309
309
  case 3:
310
310
  _context2.prev = 3;
311
+ // 构建新格式的配置
312
+ queryConfig = buildQueryConfig(editingOrder, hiddenFields);
311
313
  newScheme = {
312
314
  id: uuidv4(),
313
315
  name: schemeName.trim(),
314
316
  description: '',
315
- itemsOrder: editingOrder,
316
- hiddenFields: hiddenFields,
317
- formValues: {},
317
+ queryConfig: queryConfig,
318
318
  isDefault: false,
319
319
  isSystem: false,
320
320
  createdAt: Date.now(),
321
321
  updatedAt: Date.now()
322
322
  };
323
- _context2.next = 7;
323
+ _context2.next = 8;
324
324
  return saveQueryScheme === null || saveQueryScheme === void 0 ? void 0 : saveQueryScheme(gridKey, newScheme);
325
- case 7:
325
+ case 8:
326
326
  message.success('保存成功');
327
327
  setSchemeName('');
328
- _context2.next = 14;
328
+ _context2.next = 15;
329
329
  break;
330
- case 11:
331
- _context2.prev = 11;
330
+ case 12:
331
+ _context2.prev = 12;
332
332
  _context2.t0 = _context2["catch"](3);
333
333
  message.error(_context2.t0.message || '保存失败');
334
- case 14:
334
+ case 15:
335
335
  case "end":
336
336
  return _context2.stop();
337
337
  }
338
- }, _callee2, null, [[3, 11]]);
338
+ }, _callee2, null, [[3, 12]]);
339
339
  })), [schemeName, editingOrder, hiddenFields, saveQueryScheme, gridKey]);
340
340
 
341
341
  /**
@@ -514,7 +514,7 @@ var QuerySchemeManager = function QuerySchemeManager(_ref2) {
514
514
  */
515
515
  var handleApply = useCallback( /*#__PURE__*/function () {
516
516
  var _ref8 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6(schemeId) {
517
- var scheme;
517
+ var scheme, itemsOrder;
518
518
  return _regeneratorRuntime().wrap(function _callee6$(_context6) {
519
519
  while (1) switch (_context6.prev = _context6.next) {
520
520
  case 0:
@@ -525,9 +525,13 @@ var QuerySchemeManager = function QuerySchemeManager(_ref2) {
525
525
  scheme = schemes.find(function (s) {
526
526
  return s.id === schemeId;
527
527
  });
528
- if (scheme && scheme.itemsOrder) {
529
- updateQueryOrder === null || updateQueryOrder === void 0 || updateQueryOrder(scheme.itemsOrder);
530
- message.success('方案已应用');
528
+ if (scheme) {
529
+ // 使用新格式提取器获取顺序
530
+ itemsOrder = extractItemsOrder(scheme);
531
+ if (itemsOrder.length > 0) {
532
+ updateQueryOrder === null || updateQueryOrder === void 0 || updateQueryOrder(itemsOrder);
533
+ message.success('方案已应用');
534
+ }
531
535
  }
532
536
  _context6.next = 10;
533
537
  break;
@@ -637,7 +641,6 @@ var QuerySchemeManager = function QuerySchemeManager(_ref2) {
637
641
  children: /*#__PURE__*/React.createElement(List, {
638
642
  dataSource: schemes,
639
643
  renderItem: function renderItem(scheme) {
640
- var _scheme$itemsOrder;
641
644
  return /*#__PURE__*/React.createElement(List.Item, {
642
645
  actions: [/*#__PURE__*/React.createElement(Button, {
643
646
  key: "apply",
@@ -725,7 +728,7 @@ var QuerySchemeManager = function QuerySchemeManager(_ref2) {
725
728
  }, "\u5F53\u524D"), scheme.isSystem && /*#__PURE__*/React.createElement(Tag, {
726
729
  color: "default"
727
730
  }, "\u7CFB\u7EDF")),
728
- description: scheme.description || "".concat(((_scheme$itemsOrder = scheme.itemsOrder) === null || _scheme$itemsOrder === void 0 ? void 0 : _scheme$itemsOrder.length) || 0, " \u4E2A\u67E5\u8BE2\u9879")
731
+ description: scheme.description || "".concat(extractItemsOrder(scheme).length || 0, " \u4E2A\u67E5\u8BE2\u9879")
729
732
  }));
730
733
  }
731
734
  })
@@ -306,6 +306,9 @@ export function flatConfigToColumnState(flatConfig) {
306
306
  return flatConfig.filter(function (item) {
307
307
  return item.type === 'column';
308
308
  }) // 只处理列节点,分组不在 columnState 中
309
+ .filter(function (item) {
310
+ return item.field;
311
+ }) // 【修复】过滤掉没有 field 的列,防止 colId 为 undefined
309
312
  .sort(function (a, b) {
310
313
  return a.order - b.order;
311
314
  }) // 按 order 字段排序
@@ -211,19 +211,13 @@ export var BackendApiSchemeAdapter = /*#__PURE__*/function () {
211
211
  });
212
212
  }
213
213
 
214
- // 将所有查询方案的字段从字符串解析为数组和对象
214
+ // 将所有查询方案的 queryConfig 字段从字符串解析为对象
215
215
  if (response.querySchemes) {
216
216
  Object.keys(response.querySchemes).forEach(function (gridId) {
217
217
  response.querySchemes[gridId] = response.querySchemes[gridId].map(function (scheme) {
218
218
  var parsedScheme = _objectSpread({}, scheme);
219
- if (typeof parsedScheme.itemsOrder === 'string') {
220
- parsedScheme.itemsOrder = JSON.parse(parsedScheme.itemsOrder);
221
- }
222
- if (typeof parsedScheme.hiddenFields === 'string') {
223
- parsedScheme.hiddenFields = JSON.parse(parsedScheme.hiddenFields);
224
- }
225
- if (typeof parsedScheme.formValues === 'string') {
226
- parsedScheme.formValues = JSON.parse(parsedScheme.formValues);
219
+ if (typeof parsedScheme.queryConfig === 'string') {
220
+ parsedScheme.queryConfig = JSON.parse(parsedScheme.queryConfig);
227
221
  }
228
222
  return parsedScheme;
229
223
  });
@@ -362,11 +356,9 @@ export var BackendApiSchemeAdapter = /*#__PURE__*/function () {
362
356
  _context5.prev = 0;
363
357
  this.log("\u4FDD\u5B58\u67E5\u8BE2\u65B9\u6848: ".concat(gridId, " - ").concat(scheme.name));
364
358
 
365
- // 将数组和对象字段转换为 JSON 字符串
359
+ // 将 queryConfig 对象字段转换为 JSON 字符串
366
360
  schemeForBackend = _objectSpread(_objectSpread({}, scheme), {}, {
367
- itemsOrder: scheme.itemsOrder ? JSON.stringify(scheme.itemsOrder) : undefined,
368
- hiddenFields: scheme.hiddenFields ? JSON.stringify(scheme.hiddenFields) : undefined,
369
- formValues: scheme.formValues ? JSON.stringify(scheme.formValues) : undefined
361
+ queryConfig: scheme.queryConfig ? JSON.stringify(scheme.queryConfig) : undefined
370
362
  });
371
363
  url = "".concat(this.config.apiBaseUrl, "/api/extra-object/table-scheme/save-query-scheme");
372
364
  _context5.next = 6;
@@ -385,18 +377,10 @@ export var BackendApiSchemeAdapter = /*#__PURE__*/function () {
385
377
  }
386
378
  throw new Error(response.message || '保存失败');
387
379
  case 9:
388
- // 将返回的字符串字段解析为数组和对象
380
+ // 将返回的 queryConfig 字符串字段解析为对象
389
381
  savedScheme = response.scheme;
390
- if (savedScheme) {
391
- if (typeof savedScheme.itemsOrder === 'string') {
392
- savedScheme.itemsOrder = JSON.parse(savedScheme.itemsOrder);
393
- }
394
- if (typeof savedScheme.hiddenFields === 'string') {
395
- savedScheme.hiddenFields = JSON.parse(savedScheme.hiddenFields);
396
- }
397
- if (typeof savedScheme.formValues === 'string') {
398
- savedScheme.formValues = JSON.parse(savedScheme.formValues);
399
- }
382
+ if (savedScheme && typeof savedScheme.queryConfig === 'string') {
383
+ savedScheme.queryConfig = JSON.parse(savedScheme.queryConfig);
400
384
  }
401
385
  this.log('保存成功', savedScheme);
402
386
  return _context5.abrupt("return", savedScheme);
@@ -1,4 +1,22 @@
1
1
  import type { FlatColumnItem } from '../../setting/columnGroupTypes';
2
+ /**
3
+ * 查询项配置
4
+ */
5
+ export interface QueryItem {
6
+ /** 字段名 */
7
+ field: string;
8
+ /** 是否隐藏 */
9
+ hidden?: boolean;
10
+ }
11
+ /**
12
+ * 查询配置结构
13
+ */
14
+ export interface QueryConfig {
15
+ /** 查询项配置列表 (按顺序排列) */
16
+ items: QueryItem[];
17
+ /** 查询表单默认值 */
18
+ defaultValues?: Record<string, any>;
19
+ }
2
20
  /**
3
21
  * 查询方案
4
22
  */
@@ -9,12 +27,8 @@ export interface QueryScheme {
9
27
  name: string;
10
28
  /** 方案描述 */
11
29
  description?: string;
12
- /** 查询表单字段排序 */
13
- itemsOrder?: string[];
14
- /** 隐藏的字段列表 */
15
- hiddenFields?: string[];
16
- /** 查询表单值 */
17
- formValues?: Record<string, any>;
30
+ /** 查询配置 */
31
+ queryConfig: QueryConfig;
18
32
  /** 是否为默认方案 */
19
33
  isDefault: boolean;
20
34
  /** 是否为系统方案(不可删除) */
@@ -0,0 +1,27 @@
1
+ import type { QueryScheme, QueryConfig } from '../storage/schemeStorageAdapter';
2
+ /**
3
+ * 从查询方案提取字段顺序数组
4
+ * @param scheme 查询方案对象
5
+ * @returns 字段顺序数组
6
+ */
7
+ export declare function extractItemsOrder(scheme: QueryScheme): string[];
8
+ /**
9
+ * 从查询方案提取隐藏字段数组
10
+ * @param scheme 查询方案对象
11
+ * @returns 隐藏字段数组
12
+ */
13
+ export declare function extractHiddenFields(scheme: QueryScheme): string[];
14
+ /**
15
+ * 从查询方案提取表单默认值
16
+ * @param scheme 查询方案对象
17
+ * @returns 表单默认值对象
18
+ */
19
+ export declare function extractFormValues(scheme: QueryScheme): Record<string, any>;
20
+ /**
21
+ * 构建 QueryConfig 对象
22
+ * @param itemsOrder 字段顺序数组
23
+ * @param hiddenFields 隐藏字段数组
24
+ * @param formValues 表单默认值
25
+ * @returns QueryConfig 对象
26
+ */
27
+ export declare function buildQueryConfig(itemsOrder: string[], hiddenFields?: string[], formValues?: Record<string, any>): QueryConfig;
@@ -0,0 +1,54 @@
1
+ /**
2
+ * 从查询方案提取字段顺序数组
3
+ * @param scheme 查询方案对象
4
+ * @returns 字段顺序数组
5
+ */
6
+ export function extractItemsOrder(scheme) {
7
+ return scheme.queryConfig.items.map(function (item) {
8
+ return item.field;
9
+ });
10
+ }
11
+
12
+ /**
13
+ * 从查询方案提取隐藏字段数组
14
+ * @param scheme 查询方案对象
15
+ * @returns 隐藏字段数组
16
+ */
17
+ export function extractHiddenFields(scheme) {
18
+ return scheme.queryConfig.items.filter(function (item) {
19
+ return item.hidden;
20
+ }).map(function (item) {
21
+ return item.field;
22
+ });
23
+ }
24
+
25
+ /**
26
+ * 从查询方案提取表单默认值
27
+ * @param scheme 查询方案对象
28
+ * @returns 表单默认值对象
29
+ */
30
+ export function extractFormValues(scheme) {
31
+ return scheme.queryConfig.defaultValues || {};
32
+ }
33
+
34
+ /**
35
+ * 构建 QueryConfig 对象
36
+ * @param itemsOrder 字段顺序数组
37
+ * @param hiddenFields 隐藏字段数组
38
+ * @param formValues 表单默认值
39
+ * @returns QueryConfig 对象
40
+ */
41
+ export function buildQueryConfig(itemsOrder) {
42
+ var hiddenFields = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
43
+ var formValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
44
+ var items = itemsOrder.map(function (field) {
45
+ return {
46
+ field: field,
47
+ hidden: hiddenFields.includes(field)
48
+ };
49
+ });
50
+ return {
51
+ items: items,
52
+ defaultValues: Object.keys(formValues).length > 0 ? formValues : undefined
53
+ };
54
+ }
@@ -33,7 +33,6 @@ var DraggableModal = function DraggableModal(props) {
33
33
  bounds = _useState4[0],
34
34
  setBounds = _useState4[1];
35
35
  var draggleRef = useRef(null);
36
- var modalContentRef = useRef(null);
37
36
 
38
37
  // 调整大小相关状态
39
38
  var _useState5 = useState(false),