ydb-components-material 0.1.96 → 0.1.98

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 (82) 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.19ae92a3.js +1 -0
  10. package/build/docs/{umi.96fb6893.css → umi.6979d68b.css} +1 -1
  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 +83 -6
  45. package/es/components/file-list/index.scss +13 -0
  46. package/es/components/file-list/item.js +18 -8
  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/sealUtil.js +9 -3
  51. package/es/components/scene-tree/index.js +2 -0
  52. package/es/components/scene-tree/index.scss +1 -0
  53. package/es/index.d.ts +2 -0
  54. package/es/index.js +1 -0
  55. package/lib/components/drag-drop/icons/preview.svg +1 -0
  56. package/lib/components/drag-drop/index.d.ts +17 -0
  57. package/lib/components/drag-drop/index.js +314 -0
  58. package/lib/components/drag-drop/index.scss +130 -0
  59. package/lib/components/file-list/checkPoint.js +6 -9
  60. package/lib/components/file-list/index.js +84 -7
  61. package/lib/components/file-list/index.scss +13 -0
  62. package/lib/components/file-list/item.js +18 -8
  63. package/lib/components/file-list/merge.d.ts +18 -0
  64. package/lib/components/file-list/merge.js +321 -0
  65. package/lib/components/file-list/merge.scss +137 -0
  66. package/lib/components/file-list/sealUtil.js +9 -3
  67. package/lib/components/scene-tree/index.js +2 -0
  68. package/lib/components/scene-tree/index.scss +1 -0
  69. package/lib/index.d.ts +2 -0
  70. package/lib/index.js +3 -1
  71. package/lowcode/drag-drop-list/meta.ts +159 -0
  72. package/lowcode/file-list/meta.ts +14 -0
  73. package/lowcode_es/drag-drop-list/meta.d.ts +22 -0
  74. package/lowcode_es/drag-drop-list/meta.js +145 -0
  75. package/lowcode_es/file-list/meta.js +13 -0
  76. package/lowcode_es/meta.js +3 -2
  77. package/lowcode_lib/drag-drop-list/meta.d.ts +22 -0
  78. package/lowcode_lib/drag-drop-list/meta.js +150 -0
  79. package/lowcode_lib/file-list/meta.js +13 -0
  80. package/lowcode_lib/meta.js +18 -17
  81. package/package.json +5 -3
  82. package/build/docs/umi.19926380.js +0 -1
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="16" height="11" viewBox="0 0 16 11"><g><path d="M15.949896,5.2555661C16.016703,5.4388962,16.016703,5.5611272,15.949896,5.7444577C15.949896,5.7444577,15.883092,5.9277883,15.816283,5.9888978C15.749479,6.1722283,15.615868,6.3555694,15.482255,6.5999985C15.148229,7.0888891,14.680583,7.7000132,14.012527,8.3722239C12.743215,9.6555681,10.739035,11,8,11C5.2609663,11,3.2567897,9.6555681,1.987474,8.3722239C1.319415,7.7000132,0.85177505,7.0888891,0.51774478,6.5999985C0.51774478,6.5999985,0.18371604,5.9888978,0.18371604,5.9888978C0.11691014,5.9277883,0.050104432,5.7444577,0.050104432,5.7444577C-0.016701477,5.6222262,-0.016701477,5.4388962,0.050104432,5.2555661C0.050104432,5.2555661,0.1169103,5.0722361,0.18371604,5.0111141C0.25052202,4.8277841,0.38413364,4.6444426,0.51774478,4.4000139C0.85177356,3.9111221,1.319415,3.3000102,1.987474,2.6277888C3.2567489,1.3444551,5.2609239,0,7.9999585,0C10.738992,0,12.743169,1.3444551,14.012487,2.6277888C14.680545,3.3000102,15.148186,3.9111221,15.482213,4.400003C15.482213,4.400003,15.816243,5.0111032,15.816243,5.0111032C15.883049,5.0722246,15.949852,5.2555661,15.949852,5.2555661C15.949852,5.2555661,15.949896,5.2555661,15.949896,5.2555661ZM8.0000048,3.3000102C9.2025099,3.3000102,10.271409,4.2777824,10.271409,5.5000286C10.271409,6.72223,9.2025127,7.7000132,8.0000048,7.7000132C6.7974997,7.7000132,5.728601,6.72223,5.728601,5.5000286C5.728601,4.2777824,6.7974944,3.3000102,8.0000048,3.3000102C8.0000048,3.3000102,8.0000048,3.3000102,8.0000048,3.3000102ZM4.3924899,5.5000286C4.3924899,7.3333526,5.9958301,8.9222136,8.0000048,8.9222136C10.004179,8.9222136,11.607521,7.3333526,11.607521,5.5000286C11.607521,3.6666818,10.004179,2.0777981,8.0000048,2.0777981C5.9958305,2.0777981,4.3924899,3.6666818,4.3924899,5.5000286C4.3924899,5.5000286,4.3924899,5.5000286,4.3924899,5.5000286Z" fill="#1678FF" fill-opacity="1" style="mix-blend-mode:passthrough"/></g></svg>
@@ -0,0 +1,17 @@
1
+ import * as React from 'react';
2
+ import './index.scss';
3
+ export interface DragDropListProps {
4
+ /**
5
+ * 类型
6
+ */
7
+ fileList: Array<object>;
8
+ valChange?: (value: any) => void;
9
+ close?: () => void;
10
+ style?: object;
11
+ baseUrl: string;
12
+ tokenTY: string;
13
+ materialName: string;
14
+ getRes: (value: any) => void;
15
+ }
16
+ declare const DragDropList: React.FC<DragDropListProps>;
17
+ export default DragDropList;
@@ -0,0 +1,306 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
3
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
4
+ import * as React from 'react';
5
+ import { useState } from 'react'; // 1. 引入 useState
6
+ import previewIcon from "./icons/preview.svg";
7
+ import { DragDropContext, Droppable, Draggable } from 'react-beautiful-dnd';
8
+ import { ExclamationCircleFilled, HolderOutlined, CloseOutlined, VerticalAlignTopOutlined } from '@ant-design/icons';
9
+ import jsPDF from 'jspdf';
10
+ import "./index.scss";
11
+ var DragDropList = function DragDropList(_ref) {
12
+ var fileList = _ref.fileList,
13
+ valChange = _ref.valChange,
14
+ _ref$style = _ref.style,
15
+ style = _ref$style === void 0 ? {} : _ref$style,
16
+ baseUrl = _ref.baseUrl,
17
+ materialName = _ref.materialName,
18
+ tokenTY = _ref.tokenTY;
19
+ var _useState = useState(''),
20
+ viewUrl = _useState[0],
21
+ setViewUrl = _useState[1];
22
+ var _useState2 = useState(''),
23
+ viewPdfUrl = _useState2[0],
24
+ setViewPdfUrl = _useState2[1];
25
+ var _useState3 = useState(null),
26
+ blob = _useState3[0],
27
+ setBlob = _useState3[1];
28
+
29
+ // 置顶
30
+ var top = function top(index) {
31
+ console.log('置顶');
32
+ var newItems = Array.from(fileList);
33
+
34
+ // 4. 移除被拖拽的元素
35
+ var _newItems$splice = newItems.splice(index, 1),
36
+ removed = _newItems$splice[0];
37
+
38
+ // 5. 将元素插入到新的位置
39
+ newItems.splice(0, 0, removed);
40
+
41
+ // 6. 更新状态,触发重新渲染
42
+ // setItems(newItems);
43
+ valChange && valChange(newItems);
44
+ };
45
+ var onDragEnd = function onDragEnd(result) {
46
+ // 如果没有目标位置(比如拖拽到容器外),则不处理
47
+ if (!result.destination) return;
48
+
49
+ // 如果源位置和目标位置相同,也不处理
50
+ if (result.source.index === result.destination.index) return;
51
+
52
+ // 3. 创建一个新的数组副本
53
+ var newItems = Array.from(fileList);
54
+
55
+ // 4. 移除被拖拽的元素
56
+ var _newItems$splice2 = newItems.splice(result.source.index, 1),
57
+ removed = _newItems$splice2[0];
58
+
59
+ // 5. 将元素插入到新的位置
60
+ newItems.splice(result.destination.index, 0, removed);
61
+
62
+ // 6. 更新状态,触发重新渲染
63
+ // setItems(newItems);
64
+ valChange && valChange(newItems);
65
+ console.log('拖拽完成,新顺序:', newItems);
66
+ };
67
+
68
+ // File 文件转 Image 对象
69
+ var getImageByFile = function getImageByFile(file) {
70
+ return new Promise(function (resolve) {
71
+ var reader = new FileReader();
72
+ reader.onload = function (e) {
73
+ var img = new Image();
74
+ img.src = e.target.result;
75
+ img.onload = function () {
76
+ return resolve(img);
77
+ };
78
+ };
79
+ reader.readAsDataURL(file);
80
+ });
81
+ };
82
+
83
+ // 下载文件
84
+ var getBlob = function getBlob(url) {
85
+ return new Promise(function (resolve, reject) {
86
+ var xhr = new XMLHttpRequest();
87
+ xhr.open('GET', url, true);
88
+ xhr.responseType = 'blob';
89
+ xhr.onload = function () {
90
+ if (xhr.status === 200) {
91
+ resolve(xhr.response);
92
+ } else {
93
+ reject("Request failed with status " + xhr.status);
94
+ }
95
+ };
96
+ xhr.onerror = function () {
97
+ reject('Request failed');
98
+ };
99
+ xhr.send();
100
+ });
101
+ };
102
+
103
+ // 核心:多张图片合并PDF
104
+ var imgsToPdf = /*#__PURE__*/function () {
105
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
106
+ var pdf, i, fileUrl, _blob, file, img, targetWidth, scale, targetHeight, pdfBlob, blobUrl;
107
+ return _regeneratorRuntime.wrap(function (_context) {
108
+ while (1) switch (_context.prev = _context.next) {
109
+ case 0:
110
+ // 初始化PDF,纵向、A4
111
+ pdf = new jsPDF({
112
+ orientation: 'portrait',
113
+ unit: 'px',
114
+ format: 'a4'
115
+ }); // 遍历所有图片
116
+ i = 0;
117
+ case 1:
118
+ if (!(i < fileList.length)) {
119
+ _context.next = 5;
120
+ break;
121
+ }
122
+ fileUrl = fileList[i].fileUrl;
123
+ _context.next = 2;
124
+ return getBlob(fileUrl);
125
+ case 2:
126
+ _blob = _context.sent;
127
+ console.log(_blob);
128
+ file = new File([_blob], "img" + i, {
129
+ type: 'image/png'
130
+ });
131
+ console.log(file);
132
+ _context.next = 3;
133
+ return getImageByFile(file);
134
+ case 3:
135
+ img = _context.sent;
136
+ // 3. 计算可用宽度(保留边距)
137
+ targetWidth = 400; // 4. 按比例计算高度
138
+ scale = targetWidth / img.width;
139
+ targetHeight = img.height * scale; // 第一张不加新页,后续图片新增一页
140
+ if (i > 0) pdf.addPage();
141
+
142
+ // 图片写入PDF
143
+ pdf.addImage(img, 'PNG',
144
+ // 格式 JPEG/PNG
145
+ 0, 0,
146
+ // x y 坐标
147
+ // A4_W, A4_H
148
+ targetWidth, targetHeight);
149
+ case 4:
150
+ i++;
151
+ _context.next = 1;
152
+ break;
153
+ case 5:
154
+ // 1. 获取 Blob
155
+ pdfBlob = pdf.output('blob');
156
+ setBlob(pdfBlob);
157
+
158
+ // 2. 创建 Blob URL
159
+ blobUrl = URL.createObjectURL(pdfBlob);
160
+ setViewPdfUrl(blobUrl);
161
+ case 6:
162
+ case "end":
163
+ return _context.stop();
164
+ }
165
+ }, _callee);
166
+ }));
167
+ return function imgsToPdf() {
168
+ return _ref2.apply(this, arguments);
169
+ };
170
+ }();
171
+ var uploadPdf = /*#__PURE__*/function () {
172
+ var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
173
+ var formData;
174
+ return _regeneratorRuntime.wrap(function (_context2) {
175
+ while (1) switch (_context2.prev = _context2.next) {
176
+ case 0:
177
+ formData = new FormData();
178
+ formData.append('file', blob);
179
+ formData.append('open', true);
180
+ fetch(baseUrl + "/declaration/material/file/files/api", {
181
+ method: 'POST',
182
+ body: formData,
183
+ headers: {
184
+ 'Authorization': tokenTY || ''
185
+ }
186
+ }).then(function (response) {
187
+ return response.json();
188
+ }).then(function (res) {
189
+ console.log(res);
190
+ valChange(_extends({}, res, {
191
+ fileName: materialName + '.pdf'
192
+ }));
193
+ });
194
+ case 1:
195
+ case "end":
196
+ return _context2.stop();
197
+ }
198
+ }, _callee2);
199
+ }));
200
+ return function uploadPdf() {
201
+ return _ref3.apply(this, arguments);
202
+ };
203
+ }();
204
+ return /*#__PURE__*/React.createElement("div", {
205
+ className: "drag_drop",
206
+ style: style
207
+ }, /*#__PURE__*/React.createElement("div", {
208
+ className: "tip"
209
+ }, /*#__PURE__*/React.createElement(ExclamationCircleFilled, {
210
+ size: 14,
211
+ style: {
212
+ marginTop: '4px'
213
+ }
214
+ }), "\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", {
215
+ className: "text"
216
+ }, "\u957F\u6309\u5217\u8868\u62D6\u52A8\u6392\u5E8F"), /*#__PURE__*/React.createElement(DragDropContext, {
217
+ onDragEnd: onDragEnd
218
+ }, /*#__PURE__*/React.createElement(Droppable, {
219
+ droppableId: "droppable"
220
+ }, function (provided) {
221
+ return /*#__PURE__*/React.createElement("div", _extends({}, provided.droppableProps, {
222
+ ref: provided.innerRef
223
+ }), fileList.map(function (item, index) {
224
+ return /*#__PURE__*/React.createElement(Draggable, {
225
+ key: item.fileId,
226
+ draggableId: item.fileId,
227
+ index: index
228
+ }, function (provided) {
229
+ return /*#__PURE__*/React.createElement("div", _extends({
230
+ ref: provided.innerRef
231
+ }, provided.draggableProps, provided.dragHandleProps, {
232
+ className: "dragable",
233
+ style: _extends({}, provided.draggableProps.style)
234
+ }), /*#__PURE__*/React.createElement(HolderOutlined, {
235
+ style: {
236
+ fontSize: '20px'
237
+ }
238
+ }), /*#__PURE__*/React.createElement("img", {
239
+ className: "img",
240
+ src: item.fileUrl,
241
+ alt: ""
242
+ }), /*#__PURE__*/React.createElement("div", {
243
+ className: "info"
244
+ }, /*#__PURE__*/React.createElement("div", {
245
+ className: "name"
246
+ }, item.fileName), /*#__PURE__*/React.createElement("div", {
247
+ className: "view",
248
+ onClick: function onClick() {
249
+ return setViewUrl(item.fileUrl);
250
+ }
251
+ }, /*#__PURE__*/React.createElement("img", {
252
+ src: previewIcon,
253
+ alt: ""
254
+ }), "\u9884\u89C8")), /*#__PURE__*/React.createElement("div", {
255
+ className: "top",
256
+ onClick: function onClick() {
257
+ return top(index);
258
+ }
259
+ }, /*#__PURE__*/React.createElement(VerticalAlignTopOutlined, null)));
260
+ });
261
+ }), provided.placeholder);
262
+ })), /*#__PURE__*/React.createElement("div", {
263
+ className: "bottom_btn"
264
+ }, /*#__PURE__*/React.createElement("div", {
265
+ className: "previous btn",
266
+ onClick: close
267
+ }, "\u4E0A\u4E00\u6B65"), /*#__PURE__*/React.createElement("div", {
268
+ className: "preview btn",
269
+ onClick: imgsToPdf
270
+ }, "\u9884\u89C8\u6750\u6599")), viewUrl && /*#__PURE__*/React.createElement("div", {
271
+ className: "viewImg"
272
+ }, /*#__PURE__*/React.createElement(CloseOutlined, {
273
+ className: "close",
274
+ onClick: function onClick() {
275
+ return setViewUrl('');
276
+ }
277
+ }), /*#__PURE__*/React.createElement("img", {
278
+ className: "view",
279
+ src: viewUrl,
280
+ alt: ""
281
+ })), viewPdfUrl && /*#__PURE__*/React.createElement("div", {
282
+ className: "view_pdf"
283
+ }, /*#__PURE__*/React.createElement("iframe", {
284
+ src: viewPdfUrl + '#toolbar=0&navpanes=0&scrollbar=0&messages=0&statusbar=0',
285
+ id: "iframe",
286
+ frameBorder: "0",
287
+ height: "95%",
288
+ width: "100%"
289
+ }), /*#__PURE__*/React.createElement("div", {
290
+ className: "bottom_btn",
291
+ style: {
292
+ background: '#fff',
293
+ paddingTop: '20px'
294
+ }
295
+ }, /*#__PURE__*/React.createElement("div", {
296
+ className: "previous btn",
297
+ onClick: function onClick() {
298
+ return setViewPdfUrl('');
299
+ }
300
+ }, "\u8FD4\u56DE\u4FEE\u6539"), /*#__PURE__*/React.createElement("div", {
301
+ className: "preview btn",
302
+ onClick: uploadPdf
303
+ }, "\u786E\u8BA4\u65E0\u8BEF"))));
304
+ };
305
+ DragDropList.displayName = 'DragDropList';
306
+ export 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
+ }
@@ -129,22 +129,19 @@ export default function CheckPoint(props) {
129
129
  }, resIndexData.reviewNotes)))), /*#__PURE__*/React.createElement("div", {
130
130
  className: "bottom-btn"
131
131
  }, /*#__PURE__*/React.createElement("div", {
132
- className: "btn"
133
- }, /*#__PURE__*/React.createElement("div", {
132
+ className: "btn",
134
133
  onClick: handleClose
135
- }, "\u8FD4\u56DE")), /*#__PURE__*/React.createElement("div", {
136
- className: "btn"
137
- }, /*#__PURE__*/React.createElement("div", {
134
+ }, /*#__PURE__*/React.createElement("div", null, "\u8FD4\u56DE")), /*#__PURE__*/React.createElement("div", {
135
+ className: "btn",
138
136
  onClick: function onClick() {
139
137
  return handleSwitch('prev');
140
138
  }
141
- }, "\u4E0A\u4E00\u9879")), /*#__PURE__*/React.createElement("div", {
142
- className: "btn btn-blue"
143
- }, /*#__PURE__*/React.createElement("div", {
139
+ }, /*#__PURE__*/React.createElement("div", null, "\u4E0A\u4E00\u9879")), /*#__PURE__*/React.createElement("div", {
140
+ className: "btn btn-blue",
144
141
  onClick: function onClick() {
145
142
  return handleSwitch('next');
146
143
  }
147
- }, "\u4E0B\u4E00\u9879"))), /*#__PURE__*/React.createElement("iframe", {
144
+ }, /*#__PURE__*/React.createElement("div", null, "\u4E0B\u4E00\u9879"))), /*#__PURE__*/React.createElement("iframe", {
148
145
  ref: imgRef,
149
146
  id: "file_check_point",
150
147
  frameBorder: "0",
@@ -1,6 +1,9 @@
1
1
  import _Balloon from "@alifd/next/es/balloon";
2
+ import _extends from "@babel/runtime/helpers/extends";
2
3
  import React from 'react';
3
- var Tooltip = _Balloon.Tooltip;
4
+ import { useState } from 'react';
5
+ import { getFileExtension } from "./file.js";
6
+ import Merge from "./merge";
4
7
  import FileItem from "./item";
5
8
  import "./index.scss";
6
9
  var MATERIAL_TYPE = {
@@ -43,6 +46,17 @@ var FileList = function FileList(_ref) {
43
46
  openLoading = _ref.openLoading,
44
47
  closeLoading = _ref.closeLoading,
45
48
  valChange = _ref.valChange;
49
+ var _useState = useState(false),
50
+ showMerge = _useState[0],
51
+ setShowMerge = _useState[1];
52
+ var _useState2 = useState({
53
+ materialName: '',
54
+ fileList: [],
55
+ index: 0,
56
+ subIndex: 0
57
+ }),
58
+ curMerge = _useState2[0],
59
+ setCurMerge = _useState2[1];
46
60
  var convertNumbersToChinese = function convertNumbersToChinese(str) {
47
61
  // 定义基础映射关系
48
62
  var digitMap = {
@@ -105,6 +119,26 @@ var FileList = function FileList(_ref) {
105
119
  console.log('text', sizeText);
106
120
  return text + "\u9700\u4E0A\u4F20\u3010" + MATERIAL_TYPE[materialType] + "\u3011\uFF0C\u652F\u6301\u3010" + formatText + "\u3011\u683C\u5F0F\u3002" + sizeText;
107
121
  };
122
+ var mergeFiles = function mergeFiles(name, files, index, subIndex) {
123
+ var filterList = files.filter(function (file) {
124
+ return !!file.fileId;
125
+ });
126
+ setCurMerge({
127
+ materialName: name,
128
+ fileList: filterList,
129
+ index: index,
130
+ subIndex: subIndex
131
+ });
132
+ setShowMerge(true);
133
+ };
134
+ var mergeChange = function mergeChange(value) {
135
+ console.log('mergeChange', value);
136
+ for (var i = 0; i < curMerge.fileList.length - 1; i++) {
137
+ handleChange(undefined, 0, curMerge.index, curMerge.subIndex);
138
+ }
139
+ handleChange(value, 0, curMerge.index, curMerge.subIndex);
140
+ setShowMerge(false);
141
+ };
108
142
  var handleChange = function handleChange(value, fileIndex, index, subIndex) {
109
143
  console.log('handleChange', value, fileIndex, index, subIndex);
110
144
  // 先找到一级目录
@@ -157,6 +191,22 @@ var FileList = function FileList(_ref) {
157
191
  console.log('fileList--------res', fileList);
158
192
  valChange(fileList);
159
193
  };
194
+
195
+ // 如果 文件列表中都是图片,且数量大于1 判断需要合并
196
+ var judgeNeedMerge = function judgeNeedMerge(files) {
197
+ console.log('files--------judgeNeedMerge', files);
198
+ var filterList = files.filter(function (file) {
199
+ return !!file.fileId;
200
+ });
201
+ return filterList.every(function (file) {
202
+ var fileName = file.fileName;
203
+ if (!fileName) return false;
204
+ console.log('fileName----', fileName);
205
+ var type = getFileExtension(fileName);
206
+ console.log('type----', type);
207
+ return ['png', 'jpg', 'jpeg'].includes(type);
208
+ }) && filterList.length > 1;
209
+ };
160
210
  var trigger = function trigger(child) {
161
211
  return /*#__PURE__*/React.createElement("div", {
162
212
  className: "tag",
@@ -167,7 +217,9 @@ var FileList = function FileList(_ref) {
167
217
  };
168
218
  return /*#__PURE__*/React.createElement("div", {
169
219
  className: "file_list",
170
- style: style
220
+ style: _extends({}, style, {
221
+ width: '100%'
222
+ })
171
223
  }, fileList.map(function (item, index) {
172
224
  return /*#__PURE__*/React.createElement("div", {
173
225
  className: "file_level_one"
@@ -175,7 +227,10 @@ var FileList = function FileList(_ref) {
175
227
  className: "file_level_one_title"
176
228
  }, /*#__PURE__*/React.createElement("p", {
177
229
  className: "name_level_one"
178
- }, convertNumbersToChinese(index + 1), item.materialName), !(item.subMaterials && item.subMaterials.length > 0) && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", {
230
+ }, convertNumbersToChinese(index + 1), item.materialName), !(item.subMaterials && item.subMaterials.length > 0) && /*#__PURE__*/React.createElement("div", {
231
+ key: item.fileList.length,
232
+ className: "title_info"
233
+ }, /*#__PURE__*/React.createElement("span", {
179
234
  className: "required"
180
235
  }, "*"), /*#__PURE__*/React.createElement(_Balloon, {
181
236
  v2: true,
@@ -185,13 +240,19 @@ var FileList = function FileList(_ref) {
185
240
  arrowPointToCenter: true,
186
241
  title: "",
187
242
  delay: 20
188
- }, item.isSmart ? '本材料为智能生成材料,系统将根据您填写的信息自动生成申报材料。' : item.isShareFile ? '本材料为共享材料,数据由大数据共享获取,无需用户自行准备。' : '需要用户自行准备申报材料'))), item.subMaterials && item.subMaterials.length > 0 ? /*#__PURE__*/React.createElement("div", {
243
+ }, item.isSmart ? '本材料为智能生成材料,系统将根据您填写的信息自动生成申报材料。' : item.isShareFile ? '本材料为共享材料,数据由大数据共享获取,无需用户自行准备。' : '需要用户自行准备申报材料'), judgeNeedMerge(item.fileList || []) && /*#__PURE__*/React.createElement("div", {
244
+ className: "merge_btn",
245
+ onClick: function onClick() {
246
+ return mergeFiles(item.materialName, item.fileList, index);
247
+ }
248
+ }, "\u5408\u5E76\u6750\u6599"))), item.subMaterials && item.subMaterials.length > 0 ? /*#__PURE__*/React.createElement("div", {
189
249
  className: "file_level_two"
190
250
  }, item.subMaterials.map(function (child, subIndex) {
191
251
  return /*#__PURE__*/React.createElement("div", {
192
252
  className: "file_level_two_item"
193
253
  }, /*#__PURE__*/React.createElement("div", {
194
- className: "file_level_two_title"
254
+ className: "file_level_two_title",
255
+ key: child.fileList.length
195
256
  }, /*#__PURE__*/React.createElement("p", {
196
257
  className: "name_level_two"
197
258
  }, subIndex + 1, "\u3001", child.materialName), /*#__PURE__*/React.createElement("span", {
@@ -204,7 +265,12 @@ var FileList = function FileList(_ref) {
204
265
  align: "t",
205
266
  title: "",
206
267
  delay: 20
207
- }, child.isSmart ? '本材料为智能生成材料,系统将根据您填写的信息自动生成申报材料。' : child.isShareFile ? '本材料为共享材料,数据由大数据共享获取,无需用户自行准备。' : '需要用户自行准备申报材料')), /*#__PURE__*/React.createElement("p", {
268
+ }, child.isSmart ? '本材料为智能生成材料,系统将根据您填写的信息自动生成申报材料。' : child.isShareFile ? '本材料为共享材料,数据由大数据共享获取,无需用户自行准备。' : '需要用户自行准备申报材料'), judgeNeedMerge(child.fileList || []) && /*#__PURE__*/React.createElement("div", {
269
+ className: "merge_btn",
270
+ onClick: function onClick() {
271
+ return mergeFiles(child.materialName, child.fileList, index, subIndex);
272
+ }
273
+ }, "\u5408\u5E76\u6750\u6599")), /*#__PURE__*/React.createElement("p", {
208
274
  className: "tip"
209
275
  }, getTipTextForSubMaterial(item, index, subIndex)), child.fileList.map(function (file, i) {
210
276
  return /*#__PURE__*/React.createElement(FileItem, {
@@ -259,6 +325,17 @@ var FileList = function FileList(_ref) {
259
325
  }
260
326
  });
261
327
  })));
328
+ }), showMerge && /*#__PURE__*/React.createElement(Merge, {
329
+ fileList: curMerge.fileList,
330
+ valChange: mergeChange,
331
+ close: function close() {
332
+ return setShowMerge(false);
333
+ },
334
+ baseUrl: baseUrl,
335
+ tokenTY: tokenTY,
336
+ materialName: curMerge.materialName,
337
+ openLoading: openLoading,
338
+ closeLoading: closeLoading
262
339
  }));
263
340
  };
264
341
  export 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: 2px 3px;
8
+ margin-left: 5px;
9
+ }
2
10
  .file_level_one {
3
11
  background: #ffffff;
4
12
  border-radius: 8px;
@@ -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 {