@nokecy/qc-ui 1.0.78 → 1.0.80

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.
@@ -107,6 +107,12 @@ export var SchemeSyncManager = /*#__PURE__*/function () {
107
107
  this.config = _objectSpread(_objectSpread({}, DEFAULT_CONFIG), config);
108
108
  this.events = events;
109
109
 
110
+ // 如果配置中提供了 token,立即设置
111
+ if (config.token) {
112
+ this.authToken = config.token;
113
+ console.log('[SchemeSyncManager] 从配置中设置了初始 Token');
114
+ }
115
+
110
116
  // 初始化空数据
111
117
  this.allData = {
112
118
  columnSchemes: {},
@@ -142,21 +148,147 @@ export var SchemeSyncManager = /*#__PURE__*/function () {
142
148
  return "".concat(this.config.apiBaseUrl).concat(this.config.syncApiPath);
143
149
  }
144
150
 
151
+ /**
152
+ * 检查是否有有效的用户数据
153
+ * @private
154
+ */
155
+ }, {
156
+ key: "hasValidData",
157
+ value: function hasValidData() {
158
+ var hasColumnSchemes = Object.keys(this.allData.columnSchemes).length > 0;
159
+ var hasQuerySchemes = Object.keys(this.allData.querySchemes).length > 0;
160
+ var hasCurrentSchemes = Object.keys(this.allData.currentSchemes).length > 0;
161
+ return hasColumnSchemes || hasQuerySchemes || hasCurrentSchemes;
162
+ }
163
+
164
+ /**
165
+ * 重新加载数据(从服务器获取最新方案数据)
166
+ */
167
+ }, {
168
+ key: "reloadData",
169
+ value: (function () {
170
+ var _reloadData = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
171
+ var response, responseData, allSchemesData;
172
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
173
+ while (1) switch (_context.prev = _context.next) {
174
+ case 0:
175
+ console.log('[SchemeSyncManager] 重新加载数据...');
176
+ _context.prev = 1;
177
+ _context.next = 4;
178
+ return this.fetchWithRetry(this.getGetApiUrl(), {
179
+ method: 'GET',
180
+ headers: this.getHeaders()
181
+ });
182
+ case 4:
183
+ response = _context.sent;
184
+ _context.next = 7;
185
+ return response.json();
186
+ case 7:
187
+ responseData = _context.sent;
188
+ if (!(responseData.success !== undefined)) {
189
+ _context.next = 14;
190
+ break;
191
+ }
192
+ if (responseData.success) {
193
+ _context.next = 11;
194
+ break;
195
+ }
196
+ throw new Error('重新加载失败:服务器返回错误');
197
+ case 11:
198
+ allSchemesData = responseData.data;
199
+ _context.next = 19;
200
+ break;
201
+ case 14:
202
+ if (!(responseData.columnSchemes !== undefined)) {
203
+ _context.next = 18;
204
+ break;
205
+ }
206
+ allSchemesData = responseData;
207
+ _context.next = 19;
208
+ break;
209
+ case 18:
210
+ throw new Error('重新加载失败:服务器返回的数据格式不正确');
211
+ case 19:
212
+ // 反序列化并更新数据
213
+ this.allData = this.deserializeSchemesData(allSchemesData);
214
+ this.lastSyncTime = allSchemesData.syncTime || Date.now();
215
+ console.log('[SchemeSyncManager] 数据重新加载成功:', {
216
+ columnSchemes: Object.keys(this.allData.columnSchemes).length,
217
+ querySchemes: Object.keys(this.allData.querySchemes).length,
218
+ syncTime: new Date(this.lastSyncTime).toISOString()
219
+ });
220
+ _context.next = 28;
221
+ break;
222
+ case 24:
223
+ _context.prev = 24;
224
+ _context.t0 = _context["catch"](1);
225
+ console.error('[SchemeSyncManager] 重新加载数据失败:', _context.t0);
226
+ throw _context.t0;
227
+ case 28:
228
+ case "end":
229
+ return _context.stop();
230
+ }
231
+ }, _callee, this, [[1, 24]]);
232
+ }));
233
+ function reloadData() {
234
+ return _reloadData.apply(this, arguments);
235
+ }
236
+ return reloadData;
237
+ }()
145
238
  /**
146
239
  * 设置认证 Token
147
240
  * @param token 认证令牌 (通常是 Bearer Token)
241
+ * @param autoReload 是否在设置 token 后自动重新加载数据(默认 true)
148
242
  */
243
+ )
149
244
  }, {
150
245
  key: "setToken",
151
- value: function setToken(token) {
152
- this.authToken = token;
153
- console.log('[SchemeSyncManager] Token 已更新');
154
- }
155
-
246
+ value: (function () {
247
+ var _setToken = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(token) {
248
+ var autoReload,
249
+ previousToken,
250
+ _args2 = arguments;
251
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
252
+ while (1) switch (_context2.prev = _context2.next) {
253
+ case 0:
254
+ autoReload = _args2.length > 1 && _args2[1] !== undefined ? _args2[1] : true;
255
+ previousToken = this.authToken;
256
+ this.authToken = token;
257
+ console.log('[SchemeSyncManager] Token 已更新');
258
+
259
+ // 如果已经初始化,且之前没有 token,现在有了 token,且数据为空,自动重新加载
260
+ if (!(autoReload && this.initialized && !previousToken && token && !this.hasValidData())) {
261
+ _context2.next = 14;
262
+ break;
263
+ }
264
+ console.log('[SchemeSyncManager] 检测到首次设置 Token 且无数据,自动重新加载...');
265
+ _context2.prev = 6;
266
+ _context2.next = 9;
267
+ return this.reloadData();
268
+ case 9:
269
+ _context2.next = 14;
270
+ break;
271
+ case 11:
272
+ _context2.prev = 11;
273
+ _context2.t0 = _context2["catch"](6);
274
+ console.error('[SchemeSyncManager] Token 设置后自动重新加载失败:', _context2.t0);
275
+ // 不抛出错误,允许继续使用
276
+ case 14:
277
+ case "end":
278
+ return _context2.stop();
279
+ }
280
+ }, _callee2, this, [[6, 11]]);
281
+ }));
282
+ function setToken(_x) {
283
+ return _setToken.apply(this, arguments);
284
+ }
285
+ return setToken;
286
+ }()
156
287
  /**
157
288
  * 获取请求头(包含认证信息)
158
289
  * @private
159
290
  */
291
+ )
160
292
  }, {
161
293
  key: "getHeaders",
162
294
  value: function getHeaders() {
@@ -175,51 +307,51 @@ export var SchemeSyncManager = /*#__PURE__*/function () {
175
307
  }, {
176
308
  key: "initialize",
177
309
  value: (function () {
178
- var _initialize = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
310
+ var _initialize = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
179
311
  var response, responseData, allSchemesData;
180
- return _regeneratorRuntime().wrap(function _callee$(_context) {
181
- while (1) switch (_context.prev = _context.next) {
312
+ return _regeneratorRuntime().wrap(function _callee3$(_context3) {
313
+ while (1) switch (_context3.prev = _context3.next) {
182
314
  case 0:
183
315
  if (!this.initialized) {
184
- _context.next = 3;
316
+ _context3.next = 3;
185
317
  break;
186
318
  }
187
319
  console.warn('[SchemeSyncManager] 已经初始化,跳过重复初始化');
188
- return _context.abrupt("return");
320
+ return _context3.abrupt("return");
189
321
  case 3:
190
- _context.prev = 3;
191
- _context.next = 6;
322
+ _context3.prev = 3;
323
+ _context3.next = 6;
192
324
  return this.fetchWithRetry(this.getGetApiUrl(), {
193
325
  method: 'GET',
194
326
  headers: this.getHeaders()
195
327
  });
196
328
  case 6:
197
- response = _context.sent;
198
- _context.next = 9;
329
+ response = _context3.sent;
330
+ _context3.next = 9;
199
331
  return response.json();
200
332
  case 9:
201
- responseData = _context.sent;
333
+ responseData = _context3.sent;
202
334
  if (!(responseData.success !== undefined)) {
203
- _context.next = 16;
335
+ _context3.next = 16;
204
336
  break;
205
337
  }
206
338
  if (responseData.success) {
207
- _context.next = 13;
339
+ _context3.next = 13;
208
340
  break;
209
341
  }
210
342
  throw new Error('初始化失败:服务器返回错误');
211
343
  case 13:
212
344
  allSchemesData = responseData.data;
213
- _context.next = 21;
345
+ _context3.next = 21;
214
346
  break;
215
347
  case 16:
216
348
  if (!(responseData.columnSchemes !== undefined)) {
217
- _context.next = 20;
349
+ _context3.next = 20;
218
350
  break;
219
351
  }
220
352
  // 格式2: 直接返回 AllSchemesData
221
353
  allSchemesData = responseData;
222
- _context.next = 21;
354
+ _context3.next = 21;
223
355
  break;
224
356
  case 20:
225
357
  throw new Error('初始化失败:服务器返回的数据格式不正确');
@@ -238,18 +370,18 @@ export var SchemeSyncManager = /*#__PURE__*/function () {
238
370
  querySchemes: Object.keys(this.allData.querySchemes).length,
239
371
  syncTime: new Date(this.lastSyncTime).toISOString()
240
372
  });
241
- _context.next = 32;
373
+ _context3.next = 32;
242
374
  break;
243
375
  case 28:
244
- _context.prev = 28;
245
- _context.t0 = _context["catch"](3);
246
- console.error('[SchemeSyncManager] 初始化失败:', _context.t0);
247
- throw _context.t0;
376
+ _context3.prev = 28;
377
+ _context3.t0 = _context3["catch"](3);
378
+ console.error('[SchemeSyncManager] 初始化失败:', _context3.t0);
379
+ throw _context3.t0;
248
380
  case 32:
249
381
  case "end":
250
- return _context.stop();
382
+ return _context3.stop();
251
383
  }
252
- }, _callee, this, [[3, 28]]);
384
+ }, _callee3, this, [[3, 28]]);
253
385
  }));
254
386
  function initialize() {
255
387
  return _initialize.apply(this, arguments);
@@ -423,31 +555,31 @@ export var SchemeSyncManager = /*#__PURE__*/function () {
423
555
  }, {
424
556
  key: "syncNow",
425
557
  value: (function () {
426
- var _syncNow = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
558
+ var _syncNow = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
427
559
  var _this$events$onSyncSt,
428
560
  _this$events,
429
561
  _this4 = this;
430
562
  var _this$events$onSyncSu, _this$events3, _syncResult$conflicts, requestData, dirtyColumnGrids, dirtyQueryGrids, dirtyCurrentGrids, response, responseData, syncResult, _this$events$onConfli, _this$events2, _this$events$onSyncEr, _this$events4;
431
- return _regeneratorRuntime().wrap(function _callee2$(_context2) {
432
- while (1) switch (_context2.prev = _context2.next) {
563
+ return _regeneratorRuntime().wrap(function _callee4$(_context4) {
564
+ while (1) switch (_context4.prev = _context4.next) {
433
565
  case 0:
434
566
  if (!this.syncing) {
435
- _context2.next = 3;
567
+ _context4.next = 3;
436
568
  break;
437
569
  }
438
570
  console.log('[SchemeSyncManager] 正在同步中,跳过重复请求');
439
- return _context2.abrupt("return");
571
+ return _context4.abrupt("return");
440
572
  case 3:
441
573
  if (this.hasDirtyData()) {
442
- _context2.next = 6;
574
+ _context4.next = 6;
443
575
  break;
444
576
  }
445
577
  console.log('[SchemeSyncManager] 没有需要同步的数据');
446
- return _context2.abrupt("return");
578
+ return _context4.abrupt("return");
447
579
  case 6:
448
580
  this.syncing = true;
449
581
  (_this$events$onSyncSt = (_this$events = this.events).onSyncStart) === null || _this$events$onSyncSt === void 0 || _this$events$onSyncSt.call(_this$events);
450
- _context2.prev = 8;
582
+ _context4.prev = 8;
451
583
  // 构建同步请求数据
452
584
  requestData = {
453
585
  clientSyncTime: this.lastSyncTime
@@ -498,34 +630,34 @@ export var SchemeSyncManager = /*#__PURE__*/function () {
498
630
  }
499
631
 
500
632
  // 发送同步请求
501
- _context2.next = 19;
633
+ _context4.next = 19;
502
634
  return this.fetchWithRetry(this.getSyncApiUrl(), {
503
635
  method: 'POST',
504
636
  headers: this.getHeaders(),
505
637
  body: JSON.stringify(requestData)
506
638
  });
507
639
  case 19:
508
- response = _context2.sent;
509
- _context2.next = 22;
640
+ response = _context4.sent;
641
+ _context4.next = 22;
510
642
  return response.json();
511
643
  case 22:
512
- responseData = _context2.sent;
644
+ responseData = _context4.sent;
513
645
  if (!(responseData.success !== undefined)) {
514
- _context2.next = 29;
646
+ _context4.next = 29;
515
647
  break;
516
648
  }
517
649
  if (responseData.success) {
518
- _context2.next = 26;
650
+ _context4.next = 26;
519
651
  break;
520
652
  }
521
653
  throw new Error(responseData.error || '同步失败');
522
654
  case 26:
523
655
  syncResult = responseData;
524
- _context2.next = 34;
656
+ _context4.next = 34;
525
657
  break;
526
658
  case 29:
527
659
  if (!(responseData.syncTime !== undefined)) {
528
- _context2.next = 33;
660
+ _context4.next = 33;
529
661
  break;
530
662
  }
531
663
  // 格式2: 直接返回数据格式,构造一个兼容的结果对象
@@ -534,7 +666,7 @@ export var SchemeSyncManager = /*#__PURE__*/function () {
534
666
  syncTime: responseData.syncTime,
535
667
  conflicts: responseData.conflicts
536
668
  };
537
- _context2.next = 34;
669
+ _context4.next = 34;
538
670
  break;
539
671
  case 33:
540
672
  throw new Error('同步失败:服务器返回的数据格式不正确');
@@ -558,23 +690,23 @@ export var SchemeSyncManager = /*#__PURE__*/function () {
558
690
  syncTime: new Date(this.lastSyncTime).toISOString(),
559
691
  conflicts: ((_syncResult$conflicts = syncResult.conflicts) === null || _syncResult$conflicts === void 0 ? void 0 : _syncResult$conflicts.length) || 0
560
692
  });
561
- _context2.next = 46;
693
+ _context4.next = 46;
562
694
  break;
563
695
  case 41:
564
- _context2.prev = 41;
565
- _context2.t0 = _context2["catch"](8);
566
- console.error('[SchemeSyncManager] 同步失败:', _context2.t0);
567
- (_this$events$onSyncEr = (_this$events4 = this.events).onSyncError) === null || _this$events$onSyncEr === void 0 || _this$events$onSyncEr.call(_this$events4, _context2.t0);
568
- throw _context2.t0;
696
+ _context4.prev = 41;
697
+ _context4.t0 = _context4["catch"](8);
698
+ console.error('[SchemeSyncManager] 同步失败:', _context4.t0);
699
+ (_this$events$onSyncEr = (_this$events4 = this.events).onSyncError) === null || _this$events$onSyncEr === void 0 || _this$events$onSyncEr.call(_this$events4, _context4.t0);
700
+ throw _context4.t0;
569
701
  case 46:
570
- _context2.prev = 46;
702
+ _context4.prev = 46;
571
703
  this.syncing = false;
572
- return _context2.finish(46);
704
+ return _context4.finish(46);
573
705
  case 49:
574
706
  case "end":
575
- return _context2.stop();
707
+ return _context4.stop();
576
708
  }
577
- }, _callee2, this, [[8, 41, 46, 49]]);
709
+ }, _callee4, this, [[8, 41, 46, 49]]);
578
710
  }));
579
711
  function syncNow() {
580
712
  return _syncNow.apply(this, arguments);
@@ -685,58 +817,58 @@ export var SchemeSyncManager = /*#__PURE__*/function () {
685
817
  * 带重试的 fetch 请求
686
818
  */
687
819
  function () {
688
- var _fetchWithRetry = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(url, options) {
820
+ var _fetchWithRetry = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(url, options) {
689
821
  var retries,
690
822
  controller,
691
823
  timeoutId,
692
824
  response,
693
- _args3 = arguments;
694
- return _regeneratorRuntime().wrap(function _callee3$(_context3) {
695
- while (1) switch (_context3.prev = _context3.next) {
825
+ _args5 = arguments;
826
+ return _regeneratorRuntime().wrap(function _callee5$(_context5) {
827
+ while (1) switch (_context5.prev = _context5.next) {
696
828
  case 0:
697
- retries = _args3.length > 2 && _args3[2] !== undefined ? _args3[2] : this.config.maxRetries;
698
- _context3.prev = 1;
829
+ retries = _args5.length > 2 && _args5[2] !== undefined ? _args5[2] : this.config.maxRetries;
830
+ _context5.prev = 1;
699
831
  controller = new AbortController();
700
832
  timeoutId = setTimeout(function () {
701
833
  return controller.abort();
702
834
  }, this.config.requestTimeout);
703
- _context3.next = 6;
835
+ _context5.next = 6;
704
836
  return fetch(url, _objectSpread(_objectSpread({}, options), {}, {
705
837
  signal: controller.signal
706
838
  }));
707
839
  case 6:
708
- response = _context3.sent;
840
+ response = _context5.sent;
709
841
  clearTimeout(timeoutId);
710
842
  if (response.ok) {
711
- _context3.next = 10;
843
+ _context5.next = 10;
712
844
  break;
713
845
  }
714
846
  throw new Error("HTTP ".concat(response.status, ": ").concat(response.statusText));
715
847
  case 10:
716
- return _context3.abrupt("return", response);
848
+ return _context5.abrupt("return", response);
717
849
  case 13:
718
- _context3.prev = 13;
719
- _context3.t0 = _context3["catch"](1);
850
+ _context5.prev = 13;
851
+ _context5.t0 = _context5["catch"](1);
720
852
  if (!(retries > 0)) {
721
- _context3.next = 20;
853
+ _context5.next = 20;
722
854
  break;
723
855
  }
724
- console.warn("[SchemeSyncManager] \u8BF7\u6C42\u5931\u8D25\uFF0C\u91CD\u8BD5\u4E2D... (\u5269\u4F59 ".concat(retries, " \u6B21)"), _context3.t0);
725
- _context3.next = 19;
856
+ console.warn("[SchemeSyncManager] \u8BF7\u6C42\u5931\u8D25\uFF0C\u91CD\u8BD5\u4E2D... (\u5269\u4F59 ".concat(retries, " \u6B21)"), _context5.t0);
857
+ _context5.next = 19;
726
858
  return new Promise(function (resolve) {
727
859
  return setTimeout(resolve, 1000);
728
860
  });
729
861
  case 19:
730
- return _context3.abrupt("return", this.fetchWithRetry(url, options, retries - 1));
862
+ return _context5.abrupt("return", this.fetchWithRetry(url, options, retries - 1));
731
863
  case 20:
732
- throw _context3.t0;
864
+ throw _context5.t0;
733
865
  case 21:
734
866
  case "end":
735
- return _context3.stop();
867
+ return _context5.stop();
736
868
  }
737
- }, _callee3, this, [[1, 13]]);
869
+ }, _callee5, this, [[1, 13]]);
738
870
  }));
739
- function fetchWithRetry(_x, _x2) {
871
+ function fetchWithRetry(_x2, _x3) {
740
872
  return _fetchWithRetry.apply(this, arguments);
741
873
  }
742
874
  return fetchWithRetry;
@@ -61,8 +61,9 @@ export declare function hasUnsyncedData(): boolean;
61
61
  /**
62
62
  * 设置认证 Token
63
63
  * @param token 认证令牌 (通常是 Bearer Token)
64
+ * @param autoReload 是否在设置 token 后自动重新加载数据(默认 true)
64
65
  */
65
- export declare function setToken(token: string | null): void;
66
+ export declare function setToken(token: string | null, autoReload?: boolean): Promise<void>;
66
67
  /**
67
68
  * 获取有未同步数据的表格列表
68
69
  */
@@ -251,15 +251,35 @@ export function hasUnsyncedData() {
251
251
  /**
252
252
  * 设置认证 Token
253
253
  * @param token 认证令牌 (通常是 Bearer Token)
254
+ * @param autoReload 是否在设置 token 后自动重新加载数据(默认 true)
254
255
  */
255
- export function setToken(token) {
256
- var manager = getGlobalSyncManager();
257
- manager.setToken(token);
256
+ export function setToken(_x3) {
257
+ return _setToken.apply(this, arguments);
258
258
  }
259
259
 
260
260
  /**
261
261
  * 获取有未同步数据的表格列表
262
262
  */
263
+ function _setToken() {
264
+ _setToken = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(token) {
265
+ var autoReload,
266
+ manager,
267
+ _args4 = arguments;
268
+ return _regeneratorRuntime().wrap(function _callee4$(_context4) {
269
+ while (1) switch (_context4.prev = _context4.next) {
270
+ case 0:
271
+ autoReload = _args4.length > 1 && _args4[1] !== undefined ? _args4[1] : true;
272
+ manager = getGlobalSyncManager();
273
+ _context4.next = 4;
274
+ return manager.setToken(token, autoReload);
275
+ case 4:
276
+ case "end":
277
+ return _context4.stop();
278
+ }
279
+ }, _callee4);
280
+ }));
281
+ return _setToken.apply(this, arguments);
282
+ }
263
283
  export function getUnsyncedGrids() {
264
284
  var manager = getGlobalSyncManager();
265
285
  return manager.getDirtyGridIds();
@@ -100,6 +100,12 @@ export type DirtyType = 'column' | 'query' | 'current';
100
100
  export interface SyncConfig {
101
101
  /** API 基础路径 */
102
102
  apiBaseUrl: string;
103
+ /**
104
+ * 认证令牌(可选)
105
+ * 如果在初始化时提供,将在所有请求中自动添加 Authorization header
106
+ * 也可以稍后通过 setToken() 方法设置
107
+ */
108
+ token?: string;
103
109
  /**
104
110
  * 获取方案API路径(可选)
105
111
  * 默认值: '/api/v1/ag-grid-plus/schemes'