ydb-components-material 0.1.206 → 0.1.207

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.
@@ -1,5 +1,9 @@
1
1
  import React from 'react';
2
2
  import './index.scss';
3
+ /**
4
+ * 检查列表中是否还存在 loading 为 true 的文件(包含二级材料),有则返回 true
5
+ */
6
+ export declare const hasLoadingFileInList: (list: any[]) => boolean;
3
7
  export interface FileListProps {
4
8
  /**
5
9
  * 列表数据
@@ -34,6 +34,21 @@ var MATERIAL_FORMAT = {
34
34
  };
35
35
  var OTHER = 1; // 角色数组中"他人"对应的值
36
36
 
37
+ /**
38
+ * 检查列表中是否还存在 loading 为 true 的文件(包含二级材料),有则返回 true
39
+ */
40
+ export var hasLoadingFileInList = function hasLoadingFileInList(list) {
41
+ return (list || []).some(function (item) {
42
+ if ((item.fileList || []).some(function (file) {
43
+ return file && file.loading;
44
+ })) return true;
45
+ return (item.subMaterials || []).some(function (sub) {
46
+ return (sub.fileList || []).some(function (file) {
47
+ return file && file.loading;
48
+ });
49
+ });
50
+ });
51
+ };
37
52
  var FileList = function FileList(_ref) {
38
53
  var fileList = _ref.fileList,
39
54
  token = _ref.token,
@@ -212,6 +227,11 @@ var FileList = function FileList(_ref) {
212
227
  });
213
228
  return list;
214
229
  };
230
+
231
+ // 传给 FileItem:签署前检查列表中是否还有 loading 中的文件
232
+ var hasLoadingFile = function hasLoadingFile() {
233
+ return hasLoadingFileInList(fileArray);
234
+ };
215
235
  var handleChange = function handleChange(value, fileIndex, index, subIndex) {
216
236
  // console.log('handleChange', value, fileIndex, index, subIndex);
217
237
  // 先找到一级目录
@@ -388,6 +408,7 @@ var FileList = function FileList(_ref) {
388
408
  download: download,
389
409
  applySeal: applySeal,
390
410
  valChange: handleChange,
411
+ hasLoadingFile: hasLoadingFile,
391
412
  openLoading: openLoading,
392
413
  closeLoading: closeLoading,
393
414
  parentPageUrl: parentPageUrl,
@@ -427,6 +448,7 @@ var FileList = function FileList(_ref) {
427
448
  download: download,
428
449
  applySeal: applySeal,
429
450
  valChange: handleChange,
451
+ hasLoadingFile: hasLoadingFile,
430
452
  openLoading: openLoading,
431
453
  closeLoading: closeLoading,
432
454
  parentPageUrl: parentPageUrl,
@@ -29,6 +29,7 @@ export interface FileItemProps {
29
29
  download: (value: any) => void;
30
30
  saveSignerInfo: (value: any) => Promise<boolean>;
31
31
  signInfoMap?: object;
32
+ hasLoadingFile?: () => boolean;
32
33
  autoShowSignerInfo?: boolean;
33
34
  onNeedSignerInfo?: (pos: {
34
35
  index: number;
@@ -29,6 +29,7 @@ var RadioGroup = _Radio.Group;
29
29
  var SELF = 0;
30
30
  var OTHER = 1;
31
31
  var FileItem = function FileItem(_ref) {
32
+ var _this = this;
32
33
  var index = _ref.index,
33
34
  subIndex = _ref.subIndex,
34
35
  fileIndex = _ref.fileIndex,
@@ -53,6 +54,7 @@ var FileItem = function FileItem(_ref) {
53
54
  closeLoading = _ref.closeLoading,
54
55
  saveSignerInfo = _ref.saveSignerInfo,
55
56
  signInfoMap = _ref.signInfoMap,
57
+ hasLoadingFile = _ref.hasLoadingFile,
56
58
  applySeal = _ref.applySeal,
57
59
  parentPageUrl = _ref.parentPageUrl,
58
60
  toSign = _ref.toSign,
@@ -213,6 +215,14 @@ var FileItem = function FileItem(_ref) {
213
215
  var _useState19 = useState(0),
214
216
  signKey = _useState19[0],
215
217
  setSignKey = _useState19[1];
218
+ // 签批结果轮询中:在当前材料图片上展示局部 loading
219
+ var _useState20 = useState(false),
220
+ signPolling = _useState20[0],
221
+ setSignPolling = _useState20[1];
222
+ // 材料图片区域的 loading:文件自身 loading 或签批结果轮询中
223
+ var isLoading = loading || signPolling;
224
+ // 预览/下载在 loading 期间的提示语,区分「文件加载」与「签批结果轮询」
225
+ var loadingTip = signPolling ? '签批结果获取中,请稍后' : '数据获取中,请稍后';
216
226
  var timerRef = useRef(null);
217
227
  var originalUrlRef = useRef('');
218
228
  var rootRef = useRef(null);
@@ -245,7 +255,8 @@ var FileItem = function FileItem(_ref) {
245
255
  fileName: nameVal,
246
256
  fileUrl: newFile.fileUrlList[2],
247
257
  originalUrl: originalUrlRef.current,
248
- isSigned: true
258
+ isSigned: true,
259
+ loading: false
249
260
  }));
250
261
  return _context.abrupt("return", true);
251
262
  case 2:
@@ -352,11 +363,11 @@ var FileItem = function FileItem(_ref) {
352
363
  return _regeneratorRuntime.wrap(function (_context2) {
353
364
  while (1) switch (_context2.prev = _context2.next) {
354
365
  case 0:
355
- if (!loading) {
366
+ if (!isLoading) {
356
367
  _context2.next = 1;
357
368
  break;
358
369
  }
359
- _Message.warning('数据请求中,请稍后');
370
+ _Message.warning(loadingTip);
360
371
  return _context2.abrupt("return");
361
372
  case 1:
362
373
  if (fileUrl) {
@@ -477,6 +488,20 @@ var FileItem = function FileItem(_ref) {
477
488
  };
478
489
  }();
479
490
 
491
+ // 签字要跳转三方页面 跳之前存一下当前页面数据
492
+ var saveStorage = function saveStorage() {
493
+ var loginAccountId = userInfo.loginAccountId;
494
+ var previousData = window.localStorage.getItem(_this.state.applicationId + loginAccountId);
495
+ var previousDataVal = JSON.parse(previousData || '{}');
496
+ // 消费过了。删除一下
497
+ delete previousDataVal.isFormEdited;
498
+ window.localStorage.setItem(_this.state.applicationId + loginAccountId, JSON.stringify(_extends({}, previousDataVal, {
499
+ material: {
500
+ fileList: fileList
501
+ }
502
+ })));
503
+ };
504
+
480
505
  // 手写签批
481
506
  var sign = function sign() {
482
507
  if (!signatureEnable) {
@@ -489,6 +514,7 @@ var FileItem = function FileItem(_ref) {
489
514
  return k + 1;
490
515
  });
491
516
  setIsShowSignPage(true);
517
+ saveStorage();
492
518
  };
493
519
 
494
520
  // 签章
@@ -603,6 +629,12 @@ var FileItem = function FileItem(_ref) {
603
629
  setShowSignerInfo(true);
604
630
  };
605
631
  var signAndSeal = function signAndSeal() {
632
+ // 有材料还在 loading(如签批结果轮询中)时拦截签署,避免还有未完成的请求就跳转签署页面
633
+ if (hasLoadingFile && hasLoadingFile()) {
634
+ _Message.warning('部分材料正在处理中,请稍后再签署');
635
+ return;
636
+ }
637
+
606
638
  // 当前是个人 不需要签批。需要签他人签署 就直接打开维护签署人信息,这种情况属于签章开启 但是个人待办法人事项的时候
607
639
  if (userInfo.acctType !== '20' && !signatureEnable && needOtherSign) {
608
640
  openSignerInfo();
@@ -907,8 +939,8 @@ var FileItem = function FileItem(_ref) {
907
939
  };
908
940
  }();
909
941
  var onDownload = function onDownload() {
910
- if (loading) {
911
- _Message.warning('数据请求中,请稍后');
942
+ if (isLoading) {
943
+ _Message.warning(loadingTip);
912
944
  return;
913
945
  }
914
946
  if (disabled) return;
@@ -1074,7 +1106,12 @@ var FileItem = function FileItem(_ref) {
1074
1106
  localStorage.removeItem(fileId);
1075
1107
  originalUrlRef.current = originalUrl || '';
1076
1108
  if (docId && contrId && nameVal) {
1077
- openLoading();
1109
+ // openLoading()
1110
+ setSignPolling(true);
1111
+ // 轮询期间把 loading 标记到 file 对象上,沿用统一的 loading 展示逻辑
1112
+ valChange(_extends({}, file, {
1113
+ loading: true
1114
+ }), fileIndex, index, subIndex);
1078
1115
  // 兜底:连续 10 次轮询仍未成功则结束轮询,避免无限请求
1079
1116
  var pollCount = 0;
1080
1117
  timerRef.current = setInterval(function () {
@@ -1082,11 +1119,18 @@ var FileItem = function FileItem(_ref) {
1082
1119
  // 成功时 getSignedFile 内部会清除轮询并关闭 loading
1083
1120
  if (!success) {
1084
1121
  pollCount += 1;
1085
- if (pollCount >= 20) {
1122
+ if (pollCount >= 10) {
1086
1123
  clearInterval(timerRef.current);
1087
1124
  timerRef.current = null;
1088
1125
  closeLoading();
1126
+ setSignPolling(false);
1127
+ valChange(_extends({}, file, {
1128
+ loading: false
1129
+ }), fileIndex, index, subIndex);
1130
+ _Message.error('签批结果获取失败,请重试');
1089
1131
  }
1132
+ } else {
1133
+ setSignPolling(false);
1090
1134
  }
1091
1135
  });
1092
1136
  }, 3000);
@@ -1129,7 +1173,7 @@ var FileItem = function FileItem(_ref) {
1129
1173
  className: "error_msg",
1130
1174
  src: errorMsgIcon,
1131
1175
  alt: ""
1132
- })) : !loading && /*#__PURE__*/React.createElement("div", {
1176
+ })) : !isLoading && /*#__PURE__*/React.createElement("div", {
1133
1177
  className: "add",
1134
1178
  onClick: function onClick() {
1135
1179
  return upload();
@@ -1163,7 +1207,7 @@ var FileItem = function FileItem(_ref) {
1163
1207
  }, /*#__PURE__*/React.createElement("img", {
1164
1208
  src: CheckedIcon,
1165
1209
  alt: ""
1166
- }), "\u5DF2\u7B7E\u7AE0"))), loading && /*#__PURE__*/React.createElement("div", {
1210
+ }), "\u5DF2\u7B7E\u7AE0"))), isLoading && /*#__PURE__*/React.createElement("div", {
1167
1211
  className: "loading_mask"
1168
1212
  }, /*#__PURE__*/React.createElement("span", {
1169
1213
  className: "loading_spinner"
@@ -1,5 +1,9 @@
1
1
  import React from 'react';
2
2
  import './index.scss';
3
+ /**
4
+ * 检查列表中是否还存在 loading 为 true 的文件(包含二级材料),有则返回 true
5
+ */
6
+ export declare const hasLoadingFileInList: (list: any[]) => boolean;
3
7
  export interface FileListProps {
4
8
  /**
5
9
  * 列表数据
@@ -2,7 +2,7 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
  exports.__esModule = true;
5
- exports["default"] = void 0;
5
+ exports.hasLoadingFileInList = exports["default"] = void 0;
6
6
  var _balloon = _interopRequireDefault(require("@alifd/next/lib/balloon"));
7
7
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
8
8
  var _react = _interopRequireWildcard(require("react"));
@@ -40,6 +40,21 @@ var MATERIAL_FORMAT = {
40
40
  };
41
41
  var OTHER = 1; // 角色数组中"他人"对应的值
42
42
 
43
+ /**
44
+ * 检查列表中是否还存在 loading 为 true 的文件(包含二级材料),有则返回 true
45
+ */
46
+ var hasLoadingFileInList = exports.hasLoadingFileInList = function hasLoadingFileInList(list) {
47
+ return (list || []).some(function (item) {
48
+ if ((item.fileList || []).some(function (file) {
49
+ return file && file.loading;
50
+ })) return true;
51
+ return (item.subMaterials || []).some(function (sub) {
52
+ return (sub.fileList || []).some(function (file) {
53
+ return file && file.loading;
54
+ });
55
+ });
56
+ });
57
+ };
43
58
  var FileList = function FileList(_ref) {
44
59
  var fileList = _ref.fileList,
45
60
  token = _ref.token,
@@ -218,6 +233,11 @@ var FileList = function FileList(_ref) {
218
233
  });
219
234
  return list;
220
235
  };
236
+
237
+ // 传给 FileItem:签署前检查列表中是否还有 loading 中的文件
238
+ var hasLoadingFile = function hasLoadingFile() {
239
+ return hasLoadingFileInList(fileArray);
240
+ };
221
241
  var handleChange = function handleChange(value, fileIndex, index, subIndex) {
222
242
  // console.log('handleChange', value, fileIndex, index, subIndex);
223
243
  // 先找到一级目录
@@ -394,6 +414,7 @@ var FileList = function FileList(_ref) {
394
414
  download: download,
395
415
  applySeal: applySeal,
396
416
  valChange: handleChange,
417
+ hasLoadingFile: hasLoadingFile,
397
418
  openLoading: openLoading,
398
419
  closeLoading: closeLoading,
399
420
  parentPageUrl: parentPageUrl,
@@ -433,6 +454,7 @@ var FileList = function FileList(_ref) {
433
454
  download: download,
434
455
  applySeal: applySeal,
435
456
  valChange: handleChange,
457
+ hasLoadingFile: hasLoadingFile,
436
458
  openLoading: openLoading,
437
459
  closeLoading: closeLoading,
438
460
  parentPageUrl: parentPageUrl,
@@ -29,6 +29,7 @@ export interface FileItemProps {
29
29
  download: (value: any) => void;
30
30
  saveSignerInfo: (value: any) => Promise<boolean>;
31
31
  signInfoMap?: object;
32
+ hasLoadingFile?: () => boolean;
32
33
  autoShowSignerInfo?: boolean;
33
34
  onNeedSignerInfo?: (pos: {
34
35
  index: number;
@@ -35,6 +35,7 @@ var RadioGroup = _radio["default"].Group;
35
35
  var SELF = 0;
36
36
  var OTHER = 1;
37
37
  var FileItem = function FileItem(_ref) {
38
+ var _this = this;
38
39
  var index = _ref.index,
39
40
  subIndex = _ref.subIndex,
40
41
  fileIndex = _ref.fileIndex,
@@ -59,6 +60,7 @@ var FileItem = function FileItem(_ref) {
59
60
  closeLoading = _ref.closeLoading,
60
61
  saveSignerInfo = _ref.saveSignerInfo,
61
62
  signInfoMap = _ref.signInfoMap,
63
+ hasLoadingFile = _ref.hasLoadingFile,
62
64
  applySeal = _ref.applySeal,
63
65
  parentPageUrl = _ref.parentPageUrl,
64
66
  toSign = _ref.toSign,
@@ -219,6 +221,14 @@ var FileItem = function FileItem(_ref) {
219
221
  var _useState19 = (0, _react.useState)(0),
220
222
  signKey = _useState19[0],
221
223
  setSignKey = _useState19[1];
224
+ // 签批结果轮询中:在当前材料图片上展示局部 loading
225
+ var _useState20 = (0, _react.useState)(false),
226
+ signPolling = _useState20[0],
227
+ setSignPolling = _useState20[1];
228
+ // 材料图片区域的 loading:文件自身 loading 或签批结果轮询中
229
+ var isLoading = loading || signPolling;
230
+ // 预览/下载在 loading 期间的提示语,区分「文件加载」与「签批结果轮询」
231
+ var loadingTip = signPolling ? '签批结果获取中,请稍后' : '数据获取中,请稍后';
222
232
  var timerRef = (0, _react.useRef)(null);
223
233
  var originalUrlRef = (0, _react.useRef)('');
224
234
  var rootRef = (0, _react.useRef)(null);
@@ -251,7 +261,8 @@ var FileItem = function FileItem(_ref) {
251
261
  fileName: nameVal,
252
262
  fileUrl: newFile.fileUrlList[2],
253
263
  originalUrl: originalUrlRef.current,
254
- isSigned: true
264
+ isSigned: true,
265
+ loading: false
255
266
  }));
256
267
  return _context.abrupt("return", true);
257
268
  case 2:
@@ -358,11 +369,11 @@ var FileItem = function FileItem(_ref) {
358
369
  return _regenerator["default"].wrap(function (_context2) {
359
370
  while (1) switch (_context2.prev = _context2.next) {
360
371
  case 0:
361
- if (!loading) {
372
+ if (!isLoading) {
362
373
  _context2.next = 1;
363
374
  break;
364
375
  }
365
- _message["default"].warning('数据请求中,请稍后');
376
+ _message["default"].warning(loadingTip);
366
377
  return _context2.abrupt("return");
367
378
  case 1:
368
379
  if (fileUrl) {
@@ -483,6 +494,20 @@ var FileItem = function FileItem(_ref) {
483
494
  };
484
495
  }();
485
496
 
497
+ // 签字要跳转三方页面 跳之前存一下当前页面数据
498
+ var saveStorage = function saveStorage() {
499
+ var loginAccountId = userInfo.loginAccountId;
500
+ var previousData = window.localStorage.getItem(_this.state.applicationId + loginAccountId);
501
+ var previousDataVal = JSON.parse(previousData || '{}');
502
+ // 消费过了。删除一下
503
+ delete previousDataVal.isFormEdited;
504
+ window.localStorage.setItem(_this.state.applicationId + loginAccountId, JSON.stringify((0, _extends3["default"])({}, previousDataVal, {
505
+ material: {
506
+ fileList: fileList
507
+ }
508
+ })));
509
+ };
510
+
486
511
  // 手写签批
487
512
  var sign = function sign() {
488
513
  if (!signatureEnable) {
@@ -495,6 +520,7 @@ var FileItem = function FileItem(_ref) {
495
520
  return k + 1;
496
521
  });
497
522
  setIsShowSignPage(true);
523
+ saveStorage();
498
524
  };
499
525
 
500
526
  // 签章
@@ -609,6 +635,12 @@ var FileItem = function FileItem(_ref) {
609
635
  setShowSignerInfo(true);
610
636
  };
611
637
  var signAndSeal = function signAndSeal() {
638
+ // 有材料还在 loading(如签批结果轮询中)时拦截签署,避免还有未完成的请求就跳转签署页面
639
+ if (hasLoadingFile && hasLoadingFile()) {
640
+ _message["default"].warning('部分材料正在处理中,请稍后再签署');
641
+ return;
642
+ }
643
+
612
644
  // 当前是个人 不需要签批。需要签他人签署 就直接打开维护签署人信息,这种情况属于签章开启 但是个人待办法人事项的时候
613
645
  if (userInfo.acctType !== '20' && !signatureEnable && needOtherSign) {
614
646
  openSignerInfo();
@@ -913,8 +945,8 @@ var FileItem = function FileItem(_ref) {
913
945
  };
914
946
  }();
915
947
  var onDownload = function onDownload() {
916
- if (loading) {
917
- _message["default"].warning('数据请求中,请稍后');
948
+ if (isLoading) {
949
+ _message["default"].warning(loadingTip);
918
950
  return;
919
951
  }
920
952
  if (disabled) return;
@@ -1080,7 +1112,12 @@ var FileItem = function FileItem(_ref) {
1080
1112
  localStorage.removeItem(fileId);
1081
1113
  originalUrlRef.current = originalUrl || '';
1082
1114
  if (docId && contrId && nameVal) {
1083
- openLoading();
1115
+ // openLoading()
1116
+ setSignPolling(true);
1117
+ // 轮询期间把 loading 标记到 file 对象上,沿用统一的 loading 展示逻辑
1118
+ valChange((0, _extends3["default"])({}, file, {
1119
+ loading: true
1120
+ }), fileIndex, index, subIndex);
1084
1121
  // 兜底:连续 10 次轮询仍未成功则结束轮询,避免无限请求
1085
1122
  var pollCount = 0;
1086
1123
  timerRef.current = setInterval(function () {
@@ -1088,11 +1125,18 @@ var FileItem = function FileItem(_ref) {
1088
1125
  // 成功时 getSignedFile 内部会清除轮询并关闭 loading
1089
1126
  if (!success) {
1090
1127
  pollCount += 1;
1091
- if (pollCount >= 20) {
1128
+ if (pollCount >= 10) {
1092
1129
  clearInterval(timerRef.current);
1093
1130
  timerRef.current = null;
1094
1131
  closeLoading();
1132
+ setSignPolling(false);
1133
+ valChange((0, _extends3["default"])({}, file, {
1134
+ loading: false
1135
+ }), fileIndex, index, subIndex);
1136
+ _message["default"].error('签批结果获取失败,请重试');
1095
1137
  }
1138
+ } else {
1139
+ setSignPolling(false);
1096
1140
  }
1097
1141
  });
1098
1142
  }, 3000);
@@ -1135,7 +1179,7 @@ var FileItem = function FileItem(_ref) {
1135
1179
  className: "error_msg",
1136
1180
  src: _icon_errorMsg["default"],
1137
1181
  alt: ""
1138
- })) : !loading && /*#__PURE__*/_react["default"].createElement("div", {
1182
+ })) : !isLoading && /*#__PURE__*/_react["default"].createElement("div", {
1139
1183
  className: "add",
1140
1184
  onClick: function onClick() {
1141
1185
  return upload();
@@ -1169,7 +1213,7 @@ var FileItem = function FileItem(_ref) {
1169
1213
  }, /*#__PURE__*/_react["default"].createElement("img", {
1170
1214
  src: _checked["default"],
1171
1215
  alt: ""
1172
- }), "\u5DF2\u7B7E\u7AE0"))), loading && /*#__PURE__*/_react["default"].createElement("div", {
1216
+ }), "\u5DF2\u7B7E\u7AE0"))), isLoading && /*#__PURE__*/_react["default"].createElement("div", {
1173
1217
  className: "loading_mask"
1174
1218
  }, /*#__PURE__*/_react["default"].createElement("span", {
1175
1219
  className: "loading_spinner"
@@ -101,7 +101,7 @@ function fillRealVersion(meta, packageName, version, basicLibraryVersion) {
101
101
  packageName = 'ydb-components-material';
102
102
  }
103
103
  if (version === void 0) {
104
- version = '0.1.206';
104
+ version = '0.1.207';
105
105
  }
106
106
  if (basicLibraryVersion === void 0) {
107
107
  basicLibraryVersion = {
@@ -106,7 +106,7 @@ function fillRealVersion(meta, packageName, version, basicLibraryVersion) {
106
106
  packageName = 'ydb-components-material';
107
107
  }
108
108
  if (version === void 0) {
109
- version = '0.1.206';
109
+ version = '0.1.207';
110
110
  }
111
111
  if (basicLibraryVersion === void 0) {
112
112
  basicLibraryVersion = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ydb-components-material",
3
- "version": "0.1.206",
3
+ "version": "0.1.207",
4
4
  "description": "ydb-components-material",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",
@@ -103,10 +103,10 @@
103
103
  },
104
104
  "componentConfig": {
105
105
  "isComponentLibrary": true,
106
- "materialSchema": "https://unpkg.com/ydb-components-material@0.1.206/build/lowcode/assets-prod.json"
106
+ "materialSchema": "https://unpkg.com/ydb-components-material@0.1.207/build/lowcode/assets-prod.json"
107
107
  },
108
108
  "lcMeta": {
109
109
  "type": "component"
110
110
  },
111
- "homepage": "https://unpkg.com/ydb-components-material@0.1.206/build/index.html"
111
+ "homepage": "https://unpkg.com/ydb-components-material@0.1.207/build/index.html"
112
112
  }