ydb-components-material 0.1.95 → 0.1.97

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.
Files changed (84) hide show
  1. package/build/docs/120.7b74d4ab.async.js +1 -0
  2. package/build/docs/404.html +3 -3
  3. package/build/docs/608.bbe7d3e1.async.js +1 -0
  4. package/build/docs/856.8be8ecec.async.js +1 -0
  5. package/build/docs/_demos/:uuid +3 -3
  6. package/build/docs/colorful-button.html +3 -3
  7. package/build/docs/colorful-input.html +3 -3
  8. package/build/docs/index.html +3 -3
  9. package/build/docs/{umi.aa947d35.css → umi.8e9c906f.css} +1 -1
  10. package/build/docs/umi.f458a7ca.js +1 -0
  11. package/build/docs/~demos/:uuid.html +3 -3
  12. package/build/docs/~demos/colorful-button-demo.html +3 -3
  13. package/build/docs/~demos/colorful-input-demo.html +3 -3
  14. package/build/lowcode/3.js +16 -0
  15. package/build/lowcode/4.js +3 -0
  16. package/build/lowcode/5.js +20 -0
  17. package/build/lowcode/assets-daily.json +11 -11
  18. package/build/lowcode/assets-dev.json +2 -2
  19. package/build/lowcode/assets-prod.json +11 -11
  20. package/build/lowcode/index.js +1 -1
  21. package/build/lowcode/meta.js +1 -1
  22. package/build/lowcode/preview.js +16 -16
  23. package/build/lowcode/render/default/1.js +16 -0
  24. package/build/lowcode/render/default/2.js +3 -0
  25. package/build/lowcode/render/default/3.js +20 -0
  26. package/build/lowcode/render/default/view.css +1 -1
  27. package/build/lowcode/render/default/view.js +294 -2
  28. package/build/lowcode/view.css +1 -1
  29. package/build/lowcode/view.js +294 -2
  30. package/dist/1.js +17 -0
  31. package/dist/1.js.map +1 -0
  32. package/dist/2.js +4 -0
  33. package/dist/2.js.map +1 -0
  34. package/dist/3.js +21 -0
  35. package/dist/3.js.map +1 -0
  36. package/dist/BizComps.css +1 -1
  37. package/dist/BizComps.js +297 -5
  38. package/dist/BizComps.js.map +1 -1
  39. package/es/components/drag-drop/icons/preview.svg +1 -0
  40. package/es/components/drag-drop/index.d.ts +17 -0
  41. package/es/components/drag-drop/index.js +306 -0
  42. package/es/components/drag-drop/index.scss +130 -0
  43. package/es/components/file-list/checkPoint.js +6 -9
  44. package/es/components/file-list/index.js +79 -5
  45. package/es/components/file-list/index.scss +14 -1
  46. package/es/components/file-list/item.js +14 -7
  47. package/es/components/file-list/merge.d.ts +18 -0
  48. package/es/components/file-list/merge.js +313 -0
  49. package/es/components/file-list/merge.scss +137 -0
  50. package/es/components/file-list/seal.js +3 -1
  51. package/es/components/file-list/sign.js +3 -1
  52. package/es/components/scene-tree/index.js +2 -0
  53. package/es/components/scene-tree/index.scss +1 -0
  54. package/es/index.d.ts +2 -0
  55. package/es/index.js +1 -0
  56. package/lib/components/drag-drop/icons/preview.svg +1 -0
  57. package/lib/components/drag-drop/index.d.ts +17 -0
  58. package/lib/components/drag-drop/index.js +314 -0
  59. package/lib/components/drag-drop/index.scss +130 -0
  60. package/lib/components/file-list/checkPoint.js +6 -9
  61. package/lib/components/file-list/index.js +80 -6
  62. package/lib/components/file-list/index.scss +14 -1
  63. package/lib/components/file-list/item.js +14 -7
  64. package/lib/components/file-list/merge.d.ts +18 -0
  65. package/lib/components/file-list/merge.js +321 -0
  66. package/lib/components/file-list/merge.scss +137 -0
  67. package/lib/components/file-list/seal.js +3 -1
  68. package/lib/components/file-list/sign.js +3 -1
  69. package/lib/components/scene-tree/index.js +2 -0
  70. package/lib/components/scene-tree/index.scss +1 -0
  71. package/lib/index.d.ts +2 -0
  72. package/lib/index.js +3 -1
  73. package/lowcode/drag-drop-list/meta.ts +159 -0
  74. package/lowcode/file-list/meta.ts +14 -0
  75. package/lowcode_es/drag-drop-list/meta.d.ts +22 -0
  76. package/lowcode_es/drag-drop-list/meta.js +145 -0
  77. package/lowcode_es/file-list/meta.js +13 -0
  78. package/lowcode_es/meta.js +3 -2
  79. package/lowcode_lib/drag-drop-list/meta.d.ts +22 -0
  80. package/lowcode_lib/drag-drop-list/meta.js +150 -0
  81. package/lowcode_lib/file-list/meta.js +13 -0
  82. package/lowcode_lib/meta.js +18 -17
  83. package/package.json +5 -3
  84. package/build/docs/umi.a9f70b86.js +0 -1
@@ -0,0 +1,314 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ exports.__esModule = true;
5
+ exports["default"] = void 0;
6
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
7
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
8
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
9
+ var _react = _interopRequireWildcard(require("react"));
10
+ var React = _react;
11
+ var _preview = _interopRequireDefault(require("./icons/preview.svg"));
12
+ var _reactBeautifulDnd = require("react-beautiful-dnd");
13
+ var _icons = require("@ant-design/icons");
14
+ var _jspdf = _interopRequireDefault(require("jspdf"));
15
+ require("./index.scss");
16
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
17
+ // 1. 引入 useState
18
+
19
+ var DragDropList = function DragDropList(_ref) {
20
+ var fileList = _ref.fileList,
21
+ valChange = _ref.valChange,
22
+ _ref$style = _ref.style,
23
+ style = _ref$style === void 0 ? {} : _ref$style,
24
+ baseUrl = _ref.baseUrl,
25
+ materialName = _ref.materialName,
26
+ tokenTY = _ref.tokenTY;
27
+ var _useState = (0, _react.useState)(''),
28
+ viewUrl = _useState[0],
29
+ setViewUrl = _useState[1];
30
+ var _useState2 = (0, _react.useState)(''),
31
+ viewPdfUrl = _useState2[0],
32
+ setViewPdfUrl = _useState2[1];
33
+ var _useState3 = (0, _react.useState)(null),
34
+ blob = _useState3[0],
35
+ setBlob = _useState3[1];
36
+
37
+ // 置顶
38
+ var top = function top(index) {
39
+ console.log('置顶');
40
+ var newItems = Array.from(fileList);
41
+
42
+ // 4. 移除被拖拽的元素
43
+ var _newItems$splice = newItems.splice(index, 1),
44
+ removed = _newItems$splice[0];
45
+
46
+ // 5. 将元素插入到新的位置
47
+ newItems.splice(0, 0, removed);
48
+
49
+ // 6. 更新状态,触发重新渲染
50
+ // setItems(newItems);
51
+ valChange && valChange(newItems);
52
+ };
53
+ var onDragEnd = function onDragEnd(result) {
54
+ // 如果没有目标位置(比如拖拽到容器外),则不处理
55
+ if (!result.destination) return;
56
+
57
+ // 如果源位置和目标位置相同,也不处理
58
+ if (result.source.index === result.destination.index) return;
59
+
60
+ // 3. 创建一个新的数组副本
61
+ var newItems = Array.from(fileList);
62
+
63
+ // 4. 移除被拖拽的元素
64
+ var _newItems$splice2 = newItems.splice(result.source.index, 1),
65
+ removed = _newItems$splice2[0];
66
+
67
+ // 5. 将元素插入到新的位置
68
+ newItems.splice(result.destination.index, 0, removed);
69
+
70
+ // 6. 更新状态,触发重新渲染
71
+ // setItems(newItems);
72
+ valChange && valChange(newItems);
73
+ console.log('拖拽完成,新顺序:', newItems);
74
+ };
75
+
76
+ // File 文件转 Image 对象
77
+ var getImageByFile = function getImageByFile(file) {
78
+ return new Promise(function (resolve) {
79
+ var reader = new FileReader();
80
+ reader.onload = function (e) {
81
+ var img = new Image();
82
+ img.src = e.target.result;
83
+ img.onload = function () {
84
+ return resolve(img);
85
+ };
86
+ };
87
+ reader.readAsDataURL(file);
88
+ });
89
+ };
90
+
91
+ // 下载文件
92
+ var getBlob = function getBlob(url) {
93
+ return new Promise(function (resolve, reject) {
94
+ var xhr = new XMLHttpRequest();
95
+ xhr.open('GET', url, true);
96
+ xhr.responseType = 'blob';
97
+ xhr.onload = function () {
98
+ if (xhr.status === 200) {
99
+ resolve(xhr.response);
100
+ } else {
101
+ reject("Request failed with status " + xhr.status);
102
+ }
103
+ };
104
+ xhr.onerror = function () {
105
+ reject('Request failed');
106
+ };
107
+ xhr.send();
108
+ });
109
+ };
110
+
111
+ // 核心:多张图片合并PDF
112
+ var imgsToPdf = /*#__PURE__*/function () {
113
+ var _ref2 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
114
+ var pdf, i, fileUrl, _blob, file, img, targetWidth, scale, targetHeight, pdfBlob, blobUrl;
115
+ return _regenerator["default"].wrap(function (_context) {
116
+ while (1) switch (_context.prev = _context.next) {
117
+ case 0:
118
+ // 初始化PDF,纵向、A4
119
+ pdf = new _jspdf["default"]({
120
+ orientation: 'portrait',
121
+ unit: 'px',
122
+ format: 'a4'
123
+ }); // 遍历所有图片
124
+ i = 0;
125
+ case 1:
126
+ if (!(i < fileList.length)) {
127
+ _context.next = 5;
128
+ break;
129
+ }
130
+ fileUrl = fileList[i].fileUrl;
131
+ _context.next = 2;
132
+ return getBlob(fileUrl);
133
+ case 2:
134
+ _blob = _context.sent;
135
+ console.log(_blob);
136
+ file = new File([_blob], "img" + i, {
137
+ type: 'image/png'
138
+ });
139
+ console.log(file);
140
+ _context.next = 3;
141
+ return getImageByFile(file);
142
+ case 3:
143
+ img = _context.sent;
144
+ // 3. 计算可用宽度(保留边距)
145
+ targetWidth = 400; // 4. 按比例计算高度
146
+ scale = targetWidth / img.width;
147
+ targetHeight = img.height * scale; // 第一张不加新页,后续图片新增一页
148
+ if (i > 0) pdf.addPage();
149
+
150
+ // 图片写入PDF
151
+ pdf.addImage(img, 'PNG',
152
+ // 格式 JPEG/PNG
153
+ 0, 0,
154
+ // x y 坐标
155
+ // A4_W, A4_H
156
+ targetWidth, targetHeight);
157
+ case 4:
158
+ i++;
159
+ _context.next = 1;
160
+ break;
161
+ case 5:
162
+ // 1. 获取 Blob
163
+ pdfBlob = pdf.output('blob');
164
+ setBlob(pdfBlob);
165
+
166
+ // 2. 创建 Blob URL
167
+ blobUrl = URL.createObjectURL(pdfBlob);
168
+ setViewPdfUrl(blobUrl);
169
+ case 6:
170
+ case "end":
171
+ return _context.stop();
172
+ }
173
+ }, _callee);
174
+ }));
175
+ return function imgsToPdf() {
176
+ return _ref2.apply(this, arguments);
177
+ };
178
+ }();
179
+ var uploadPdf = /*#__PURE__*/function () {
180
+ var _ref3 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
181
+ var formData;
182
+ return _regenerator["default"].wrap(function (_context2) {
183
+ while (1) switch (_context2.prev = _context2.next) {
184
+ case 0:
185
+ formData = new FormData();
186
+ formData.append('file', blob);
187
+ formData.append('open', true);
188
+ fetch(baseUrl + "/declaration/material/file/files/api", {
189
+ method: 'POST',
190
+ body: formData,
191
+ headers: {
192
+ 'Authorization': tokenTY || ''
193
+ }
194
+ }).then(function (response) {
195
+ return response.json();
196
+ }).then(function (res) {
197
+ console.log(res);
198
+ valChange((0, _extends2["default"])({}, res, {
199
+ fileName: materialName + '.pdf'
200
+ }));
201
+ });
202
+ case 1:
203
+ case "end":
204
+ return _context2.stop();
205
+ }
206
+ }, _callee2);
207
+ }));
208
+ return function uploadPdf() {
209
+ return _ref3.apply(this, arguments);
210
+ };
211
+ }();
212
+ return /*#__PURE__*/React.createElement("div", {
213
+ className: "drag_drop",
214
+ style: style
215
+ }, /*#__PURE__*/React.createElement("div", {
216
+ className: "tip"
217
+ }, /*#__PURE__*/React.createElement(_icons.ExclamationCircleFilled, {
218
+ size: 14,
219
+ style: {
220
+ marginTop: '4px'
221
+ }
222
+ }), "\u8BF7\u5BF9\u7167\u6750\u6599\u9875\u7801\u987A\u5E8F\u4F9D\u6B21\u6392\u5217\u56FE\u7247\uFF0C\u672A\u6309\u89C4\u8303\u63D0\u4EA4\u7684\u6750\u6599\uFF0C\u5C06\u5F71\u54CD\u5BA1\u6838\u7ED3\u679C"), /*#__PURE__*/React.createElement("p", {
223
+ className: "text"
224
+ }, "\u957F\u6309\u5217\u8868\u62D6\u52A8\u6392\u5E8F"), /*#__PURE__*/React.createElement(_reactBeautifulDnd.DragDropContext, {
225
+ onDragEnd: onDragEnd
226
+ }, /*#__PURE__*/React.createElement(_reactBeautifulDnd.Droppable, {
227
+ droppableId: "droppable"
228
+ }, function (provided) {
229
+ return /*#__PURE__*/React.createElement("div", (0, _extends2["default"])({}, provided.droppableProps, {
230
+ ref: provided.innerRef
231
+ }), fileList.map(function (item, index) {
232
+ return /*#__PURE__*/React.createElement(_reactBeautifulDnd.Draggable, {
233
+ key: item.fileId,
234
+ draggableId: item.fileId,
235
+ index: index
236
+ }, function (provided) {
237
+ return /*#__PURE__*/React.createElement("div", (0, _extends2["default"])({
238
+ ref: provided.innerRef
239
+ }, provided.draggableProps, provided.dragHandleProps, {
240
+ className: "dragable",
241
+ style: (0, _extends2["default"])({}, provided.draggableProps.style)
242
+ }), /*#__PURE__*/React.createElement(_icons.HolderOutlined, {
243
+ style: {
244
+ fontSize: '20px'
245
+ }
246
+ }), /*#__PURE__*/React.createElement("img", {
247
+ className: "img",
248
+ src: item.fileUrl,
249
+ alt: ""
250
+ }), /*#__PURE__*/React.createElement("div", {
251
+ className: "info"
252
+ }, /*#__PURE__*/React.createElement("div", {
253
+ className: "name"
254
+ }, item.fileName), /*#__PURE__*/React.createElement("div", {
255
+ className: "view",
256
+ onClick: function onClick() {
257
+ return setViewUrl(item.fileUrl);
258
+ }
259
+ }, /*#__PURE__*/React.createElement("img", {
260
+ src: _preview["default"],
261
+ alt: ""
262
+ }), "\u9884\u89C8")), /*#__PURE__*/React.createElement("div", {
263
+ className: "top",
264
+ onClick: function onClick() {
265
+ return top(index);
266
+ }
267
+ }, /*#__PURE__*/React.createElement(_icons.VerticalAlignTopOutlined, null)));
268
+ });
269
+ }), provided.placeholder);
270
+ })), /*#__PURE__*/React.createElement("div", {
271
+ className: "bottom_btn"
272
+ }, /*#__PURE__*/React.createElement("div", {
273
+ className: "previous btn",
274
+ onClick: close
275
+ }, "\u4E0A\u4E00\u6B65"), /*#__PURE__*/React.createElement("div", {
276
+ className: "preview btn",
277
+ onClick: imgsToPdf
278
+ }, "\u9884\u89C8\u6750\u6599")), viewUrl && /*#__PURE__*/React.createElement("div", {
279
+ className: "viewImg"
280
+ }, /*#__PURE__*/React.createElement(_icons.CloseOutlined, {
281
+ className: "close",
282
+ onClick: function onClick() {
283
+ return setViewUrl('');
284
+ }
285
+ }), /*#__PURE__*/React.createElement("img", {
286
+ className: "view",
287
+ src: viewUrl,
288
+ alt: ""
289
+ })), viewPdfUrl && /*#__PURE__*/React.createElement("div", {
290
+ className: "view_pdf"
291
+ }, /*#__PURE__*/React.createElement("iframe", {
292
+ src: viewPdfUrl + '#toolbar=0&navpanes=0&scrollbar=0&messages=0&statusbar=0',
293
+ id: "iframe",
294
+ frameBorder: "0",
295
+ height: "95%",
296
+ width: "100%"
297
+ }), /*#__PURE__*/React.createElement("div", {
298
+ className: "bottom_btn",
299
+ style: {
300
+ background: '#fff',
301
+ paddingTop: '20px'
302
+ }
303
+ }, /*#__PURE__*/React.createElement("div", {
304
+ className: "previous btn",
305
+ onClick: function onClick() {
306
+ return setViewPdfUrl('');
307
+ }
308
+ }, "\u8FD4\u56DE\u4FEE\u6539"), /*#__PURE__*/React.createElement("div", {
309
+ className: "preview btn",
310
+ onClick: uploadPdf
311
+ }, "\u786E\u8BA4\u65E0\u8BEF"))));
312
+ };
313
+ DragDropList.displayName = 'DragDropList';
314
+ var _default = exports["default"] = DragDropList;
@@ -0,0 +1,130 @@
1
+ .drag_drop {
2
+ .tip {
3
+ background: #FFF6E8;
4
+ padding: 12px;
5
+ color: #F29655;
6
+ font-size: 14px;
7
+ display: flex;
8
+ gap: 8px;
9
+ }
10
+
11
+ .text {
12
+ color: #999999;
13
+ font-size: 14px;
14
+ margin: 8px 12px;
15
+ }
16
+
17
+ .dragable {
18
+ padding: 12px;
19
+ border-radius: 8px;
20
+ background: #fff;
21
+ display: flex;
22
+ gap: 15px;
23
+ align-items: center;
24
+ margin: 0 12px;
25
+ margin-bottom: 12px;
26
+
27
+ .img {
28
+ width: 50px;
29
+ }
30
+
31
+ .info {
32
+ .name {
33
+ font-size: 14px;
34
+ color: #333333;
35
+ margin-bottom: 25px;
36
+ }
37
+
38
+ .view {
39
+ color: #1678FF;
40
+ font-size: 14px;
41
+ display: flex;
42
+ align-items: center;
43
+ gap: 4px;
44
+ }
45
+
46
+
47
+ }
48
+ .top {
49
+ margin-left: auto;
50
+ width: 30px;
51
+ height: 30px;
52
+ border-radius: 8px;
53
+ opacity: 1;
54
+ background: #F7F7F7;
55
+ display: flex;
56
+ align-items: center;
57
+ justify-content: center;
58
+ font-size: 20px;
59
+ color: #666666;
60
+ }
61
+ }
62
+
63
+ .bottom_btn {
64
+ display: flex;
65
+ justify-content: center;
66
+ gap: 15px;
67
+ position: fixed;
68
+ bottom: 0;
69
+ width: 100%;
70
+ padding-bottom: 20px;
71
+
72
+ .btn {
73
+ text-align: center;
74
+ line-height: 40px;
75
+ }
76
+
77
+ .previous {
78
+ width: 45%;
79
+ height: 40px;
80
+ border-radius: 50px;
81
+ opacity: 1;
82
+ background: rgb(255, 255, 255);
83
+ color: rgb(51, 51, 51);
84
+ border: 1px solid rgb(231, 231, 231);
85
+ font-size: 16px;
86
+ font-weight: 500;
87
+ }
88
+
89
+ .preview {
90
+ width: 45%;
91
+ height: 40px;
92
+ border-radius: 50px;
93
+ opacity: 1;
94
+ color: rgb(255, 255, 255);
95
+ font-size: 16px;
96
+ font-weight: 500;
97
+ background: linear-gradient(90deg, rgb(115, 174, 255) 0%, rgb(22, 120, 255) 100%);
98
+ }
99
+ }
100
+ .view_pdf {
101
+ position: fixed;
102
+ top: 0;
103
+ left: 0;
104
+ width: 100%;
105
+ height: 100%;
106
+ z-index: 9;
107
+ }
108
+ .viewImg {
109
+ background-color: #3333336a;
110
+ position: fixed;
111
+ top: 0;
112
+ left: 0;
113
+ width: 100%;
114
+ height: 100%;
115
+ // z-index: 9999;
116
+
117
+ .close {
118
+ position: absolute;
119
+ right: 20px;
120
+ top: 20px;
121
+ font-size: 30px;
122
+ color: #fff;
123
+ }
124
+
125
+ .view {
126
+ width: 100%;
127
+ margin-top: 40%;
128
+ }
129
+ }
130
+ }
@@ -134,22 +134,19 @@ function CheckPoint(props) {
134
134
  }, resIndexData.reviewNotes)))), /*#__PURE__*/_react.React.createElement("div", {
135
135
  className: "bottom-btn"
136
136
  }, /*#__PURE__*/_react.React.createElement("div", {
137
- className: "btn"
138
- }, /*#__PURE__*/_react.React.createElement("div", {
137
+ className: "btn",
139
138
  onClick: handleClose
140
- }, "\u8FD4\u56DE")), /*#__PURE__*/_react.React.createElement("div", {
141
- className: "btn"
142
- }, /*#__PURE__*/_react.React.createElement("div", {
139
+ }, /*#__PURE__*/_react.React.createElement("div", null, "\u8FD4\u56DE")), /*#__PURE__*/_react.React.createElement("div", {
140
+ className: "btn",
143
141
  onClick: function onClick() {
144
142
  return handleSwitch('prev');
145
143
  }
146
- }, "\u4E0A\u4E00\u9879")), /*#__PURE__*/_react.React.createElement("div", {
147
- className: "btn btn-blue"
148
- }, /*#__PURE__*/_react.React.createElement("div", {
144
+ }, /*#__PURE__*/_react.React.createElement("div", null, "\u4E0A\u4E00\u9879")), /*#__PURE__*/_react.React.createElement("div", {
145
+ className: "btn btn-blue",
149
146
  onClick: function onClick() {
150
147
  return handleSwitch('next');
151
148
  }
152
- }, "\u4E0B\u4E00\u9879"))), /*#__PURE__*/_react.React.createElement("iframe", {
149
+ }, /*#__PURE__*/_react.React.createElement("div", null, "\u4E0B\u4E00\u9879"))), /*#__PURE__*/_react.React.createElement("iframe", {
153
150
  ref: imgRef,
154
151
  id: "file_check_point",
155
152
  frameBorder: "0",
@@ -4,10 +4,12 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  exports.__esModule = true;
5
5
  exports["default"] = void 0;
6
6
  var _balloon = _interopRequireDefault(require("@alifd/next/lib/balloon"));
7
- var _react = _interopRequireDefault(require("react"));
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _file = require("./file.js");
9
+ var _merge = _interopRequireDefault(require("./merge"));
8
10
  var _item = _interopRequireDefault(require("./item"));
9
11
  require("./index.scss");
10
- var Tooltip = _balloon["default"].Tooltip;
12
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
11
13
  var MATERIAL_TYPE = {
12
14
  1: '原件',
13
15
  2: '复印件',
@@ -48,6 +50,17 @@ var FileList = function FileList(_ref) {
48
50
  openLoading = _ref.openLoading,
49
51
  closeLoading = _ref.closeLoading,
50
52
  valChange = _ref.valChange;
53
+ var _useState = (0, _react.useState)(false),
54
+ showMerge = _useState[0],
55
+ setShowMerge = _useState[1];
56
+ var _useState2 = (0, _react.useState)({
57
+ materialName: '',
58
+ fileList: [],
59
+ index: 0,
60
+ subIndex: 0
61
+ }),
62
+ curMerge = _useState2[0],
63
+ setCurMerge = _useState2[1];
51
64
  var convertNumbersToChinese = function convertNumbersToChinese(str) {
52
65
  // 定义基础映射关系
53
66
  var digitMap = {
@@ -110,6 +123,26 @@ var FileList = function FileList(_ref) {
110
123
  console.log('text', sizeText);
111
124
  return text + "\u9700\u4E0A\u4F20\u3010" + MATERIAL_TYPE[materialType] + "\u3011\uFF0C\u652F\u6301\u3010" + formatText + "\u3011\u683C\u5F0F\u3002" + sizeText;
112
125
  };
126
+ var mergeFiles = function mergeFiles(name, files, index, subIndex) {
127
+ var filterList = files.filter(function (file) {
128
+ return !!file.fileId;
129
+ });
130
+ setCurMerge({
131
+ materialName: name,
132
+ fileList: filterList,
133
+ index: index,
134
+ subIndex: subIndex
135
+ });
136
+ setShowMerge(true);
137
+ };
138
+ var mergeChange = function mergeChange(value) {
139
+ console.log('mergeChange', value);
140
+ for (var i = 0; i < curMerge.fileList.length - 1; i++) {
141
+ handleChange(undefined, 0, curMerge.index, curMerge.subIndex);
142
+ }
143
+ handleChange(value, 0, curMerge.index, curMerge.subIndex);
144
+ setShowMerge(false);
145
+ };
113
146
  var handleChange = function handleChange(value, fileIndex, index, subIndex) {
114
147
  console.log('handleChange', value, fileIndex, index, subIndex);
115
148
  // 先找到一级目录
@@ -162,6 +195,22 @@ var FileList = function FileList(_ref) {
162
195
  console.log('fileList--------res', fileList);
163
196
  valChange(fileList);
164
197
  };
198
+
199
+ // 如果 文件列表中都是图片,且数量大于1 判断需要合并
200
+ var judgeNeedMerge = function judgeNeedMerge(files) {
201
+ console.log('files--------judgeNeedMerge', files);
202
+ var filterList = files.filter(function (file) {
203
+ return !!file.fileId;
204
+ });
205
+ return filterList.every(function (file) {
206
+ var fileName = file.fileName;
207
+ if (!fileName) return false;
208
+ console.log('fileName----', fileName);
209
+ var type = (0, _file.getFileExtension)(fileName);
210
+ console.log('type----', type);
211
+ return ['png', 'jpg', 'jpeg'].includes(type);
212
+ }) && filterList.length > 1;
213
+ };
165
214
  var trigger = function trigger(child) {
166
215
  return /*#__PURE__*/_react["default"].createElement("div", {
167
216
  className: "tag",
@@ -180,7 +229,10 @@ var FileList = function FileList(_ref) {
180
229
  className: "file_level_one_title"
181
230
  }, /*#__PURE__*/_react["default"].createElement("p", {
182
231
  className: "name_level_one"
183
- }, convertNumbersToChinese(index + 1), item.materialName), !(item.subMaterials && item.subMaterials.length > 0) && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("span", {
232
+ }, convertNumbersToChinese(index + 1), item.materialName), !(item.subMaterials && item.subMaterials.length > 0) && /*#__PURE__*/_react["default"].createElement("div", {
233
+ key: item.fileList.length,
234
+ className: "title_info"
235
+ }, /*#__PURE__*/_react["default"].createElement("span", {
184
236
  className: "required"
185
237
  }, "*"), /*#__PURE__*/_react["default"].createElement(_balloon["default"], {
186
238
  v2: true,
@@ -190,13 +242,19 @@ var FileList = function FileList(_ref) {
190
242
  arrowPointToCenter: true,
191
243
  title: "",
192
244
  delay: 20
193
- }, item.isSmart ? '本材料为智能生成材料,系统将根据您填写的信息自动生成申报材料。' : item.isShareFile ? '本材料为共享材料,数据由大数据共享获取,无需用户自行准备。' : '需要用户自行准备申报材料'))), item.subMaterials && item.subMaterials.length > 0 ? /*#__PURE__*/_react["default"].createElement("div", {
245
+ }, item.isSmart ? '本材料为智能生成材料,系统将根据您填写的信息自动生成申报材料。' : item.isShareFile ? '本材料为共享材料,数据由大数据共享获取,无需用户自行准备。' : '需要用户自行准备申报材料'), judgeNeedMerge(item.fileList || []) && /*#__PURE__*/_react["default"].createElement("div", {
246
+ className: "merge_btn",
247
+ onClick: function onClick() {
248
+ return mergeFiles(item.materialName, item.fileList, index);
249
+ }
250
+ }, "\u5408\u5E76\u6750\u6599"))), item.subMaterials && item.subMaterials.length > 0 ? /*#__PURE__*/_react["default"].createElement("div", {
194
251
  className: "file_level_two"
195
252
  }, item.subMaterials.map(function (child, subIndex) {
196
253
  return /*#__PURE__*/_react["default"].createElement("div", {
197
254
  className: "file_level_two_item"
198
255
  }, /*#__PURE__*/_react["default"].createElement("div", {
199
- className: "file_level_two_title"
256
+ className: "file_level_two_title",
257
+ key: child.fileList.length
200
258
  }, /*#__PURE__*/_react["default"].createElement("p", {
201
259
  className: "name_level_two"
202
260
  }, subIndex + 1, "\u3001", child.materialName), /*#__PURE__*/_react["default"].createElement("span", {
@@ -209,7 +267,12 @@ var FileList = function FileList(_ref) {
209
267
  align: "t",
210
268
  title: "",
211
269
  delay: 20
212
- }, child.isSmart ? '本材料为智能生成材料,系统将根据您填写的信息自动生成申报材料。' : child.isShareFile ? '本材料为共享材料,数据由大数据共享获取,无需用户自行准备。' : '需要用户自行准备申报材料')), /*#__PURE__*/_react["default"].createElement("p", {
270
+ }, child.isSmart ? '本材料为智能生成材料,系统将根据您填写的信息自动生成申报材料。' : child.isShareFile ? '本材料为共享材料,数据由大数据共享获取,无需用户自行准备。' : '需要用户自行准备申报材料'), judgeNeedMerge(child.fileList || []) && /*#__PURE__*/_react["default"].createElement("div", {
271
+ className: "merge_btn",
272
+ onClick: function onClick() {
273
+ return mergeFiles(child.materialName, child.fileList, index, subIndex);
274
+ }
275
+ }, "\u5408\u5E76\u6750\u6599")), /*#__PURE__*/_react["default"].createElement("p", {
213
276
  className: "tip"
214
277
  }, getTipTextForSubMaterial(item, index, subIndex)), child.fileList.map(function (file, i) {
215
278
  return /*#__PURE__*/_react["default"].createElement(_item["default"], {
@@ -264,6 +327,17 @@ var FileList = function FileList(_ref) {
264
327
  }
265
328
  });
266
329
  })));
330
+ }), showMerge && /*#__PURE__*/_react["default"].createElement(_merge["default"], {
331
+ fileList: curMerge.fileList,
332
+ valChange: mergeChange,
333
+ close: function close() {
334
+ return setShowMerge(false);
335
+ },
336
+ baseUrl: baseUrl,
337
+ tokenTY: tokenTY,
338
+ materialName: curMerge.materialName,
339
+ openLoading: openLoading,
340
+ closeLoading: closeLoading
267
341
  }));
268
342
  };
269
343
  var _default = exports["default"] = FileList;
@@ -1,4 +1,12 @@
1
1
  .file_list {
2
+ .merge_btn {
3
+ border: 1px solid #1678FF;
4
+ color: #1678FF;
5
+ font-size: 13px;
6
+ border-radius: 4px;
7
+ padding: 0px 3px;
8
+ margin-left: 5px;
9
+ }
2
10
  .file_level_one {
3
11
  background: #ffffff;
4
12
  border-radius: 8px;
@@ -19,7 +27,7 @@
19
27
 
20
28
  .tag {
21
29
  border-radius: 4px;
22
- padding: 0 4px;
30
+ padding: 2px 4px;
23
31
  font-size: 12px;
24
32
  color: #FFFFFF;
25
33
  }
@@ -36,6 +44,11 @@
36
44
  border-bottom: 1px solid #EEEEEE;
37
45
  display: flex;
38
46
  align-items: center;
47
+
48
+ .title_info {
49
+ display: flex;
50
+ align-items: center;
51
+ }
39
52
  }
40
53
 
41
54
  .file_level_two {