@vtx/components 3.1.134 → 3.1.136
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.
- package/lib/vtx-import/index.js +219 -24
- package/lib/vtx-import/index.js.map +1 -1
- package/lib/vtx-import2/index.js +200 -24
- package/lib/vtx-import2/index.js.map +1 -1
- package/lib/vtx-upload/FilePreview.js +8 -2
- package/lib/vtx-upload/FilePreview.js.map +1 -1
- package/lib/vtx-upload/index.js +5 -2
- package/lib/vtx-upload/index.js.map +1 -1
- package/package.json +1 -1
package/lib/vtx-import/index.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
4
|
+
|
|
3
5
|
Object.defineProperty(exports, "__esModule", {
|
|
4
6
|
value: true
|
|
5
7
|
});
|
|
6
8
|
exports["default"] = void 0;
|
|
7
9
|
|
|
8
|
-
var _react =
|
|
10
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
11
|
|
|
10
12
|
var _modal = _interopRequireDefault(require("antd/lib/modal"));
|
|
11
13
|
|
|
@@ -21,8 +23,16 @@ var _result = _interopRequireDefault(require("./result"));
|
|
|
21
23
|
|
|
22
24
|
var _getToken = _interopRequireDefault(require("../_util/getToken"));
|
|
23
25
|
|
|
26
|
+
var _md = _interopRequireDefault(require("md5"));
|
|
27
|
+
|
|
28
|
+
var _utils = require("@vtx/utils");
|
|
29
|
+
|
|
24
30
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
25
31
|
|
|
32
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
33
|
+
|
|
34
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
35
|
+
|
|
26
36
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
27
37
|
|
|
28
38
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
@@ -44,6 +54,8 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
|
44
54
|
var token = (0, _getToken["default"])();
|
|
45
55
|
|
|
46
56
|
function VtxImport(props) {
|
|
57
|
+
var indexRef = (0, _react.useRef)(0);
|
|
58
|
+
|
|
47
59
|
var _useSet = (0, _useSet3["default"])({
|
|
48
60
|
fileForm: null,
|
|
49
61
|
// form表单
|
|
@@ -71,11 +83,174 @@ function VtxImport(props) {
|
|
|
71
83
|
title: '错误说明',
|
|
72
84
|
dataIndex: 'messages',
|
|
73
85
|
key: 'messages'
|
|
74
|
-
}]
|
|
86
|
+
}],
|
|
87
|
+
step: 1,
|
|
88
|
+
chunkSize: props.chunkSize || 10 * 1024 * 1024,
|
|
89
|
+
totalChunk: 0,
|
|
90
|
+
currentIndex: 0,
|
|
91
|
+
chunkId: '',
|
|
92
|
+
chunks: []
|
|
75
93
|
}),
|
|
76
94
|
_useSet2 = _slicedToArray(_useSet, 2),
|
|
77
95
|
state = _useSet2[0],
|
|
78
|
-
setState = _useSet2[1]; //
|
|
96
|
+
setState = _useSet2[1]; // 开始准备文件
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
function checkFile(file) {
|
|
100
|
+
if (file.size <= state.chunkSize) {
|
|
101
|
+
upload(file);
|
|
102
|
+
} else {
|
|
103
|
+
setState({
|
|
104
|
+
mode: 'spread'
|
|
105
|
+
});
|
|
106
|
+
var chunks = spreadFile(file);
|
|
107
|
+
setState({
|
|
108
|
+
chunks: chunks,
|
|
109
|
+
chunkId: (0, _md["default"])("".concat(new Date().valueOf()).concat(Math.random())),
|
|
110
|
+
totalChunk: chunks.length,
|
|
111
|
+
step: 2
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
} // 开始上传
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
function startUpload() {
|
|
118
|
+
var dataArr = [];
|
|
119
|
+
state.chunks.forEach(function (e, i) {
|
|
120
|
+
//创建formdata对象
|
|
121
|
+
var data = new FormData(); // data.append("totalNumber", state.chunks.length)
|
|
122
|
+
|
|
123
|
+
data.append('chunkSize', state.chunks.length);
|
|
124
|
+
data.append('chunkNo', i + 1);
|
|
125
|
+
data.append('chunkId', state.chunkId);
|
|
126
|
+
data.append('tenantId', (0, _utils.getVtxToken)('tenantId'));
|
|
127
|
+
data.append('file', new File([e], state.fileInput.files[0].name));
|
|
128
|
+
dataArr.push(data);
|
|
129
|
+
});
|
|
130
|
+
uploadAsync(dataArr);
|
|
131
|
+
} // 上传
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
function uploadAsync(list) {
|
|
135
|
+
if (indexRef.current < list.length) {
|
|
136
|
+
var xhr = new XMLHttpRequest();
|
|
137
|
+
|
|
138
|
+
xhr.onload = function () {
|
|
139
|
+
if (xhr.status === 200) {
|
|
140
|
+
setState({
|
|
141
|
+
currentIndex: indexRef.current + 1
|
|
142
|
+
});
|
|
143
|
+
indexRef.current += 1;
|
|
144
|
+
uploadAsync(list);
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
xhr.onerror = function () {
|
|
149
|
+
_message["default"].error('上传失败');
|
|
150
|
+
}; // 发送请求
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
xhr.open('POST', '/cloudFile/common/uploadChunk', true);
|
|
154
|
+
xhr.send(list[indexRef.current]);
|
|
155
|
+
} else {
|
|
156
|
+
mergeFile();
|
|
157
|
+
}
|
|
158
|
+
} // 合并分片
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
function mergeFile() {
|
|
162
|
+
var xhr = new XMLHttpRequest(); // 当上传完成时调用
|
|
163
|
+
|
|
164
|
+
xhr.onload = function () {
|
|
165
|
+
if (xhr.status === 200) {
|
|
166
|
+
var res = JSON.parse(xhr.responseText);
|
|
167
|
+
|
|
168
|
+
if ((res === null || res === void 0 ? void 0 : res.result) == 0) {
|
|
169
|
+
_message["default"].success('上传成功');
|
|
170
|
+
|
|
171
|
+
chunkUpload(res.data);
|
|
172
|
+
} else {
|
|
173
|
+
_message["default"].error((res === null || res === void 0 ? void 0 : res.msg) || '上传失败');
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
};
|
|
177
|
+
|
|
178
|
+
xhr.onerror = function () {
|
|
179
|
+
_message["default"].error('上传失败');
|
|
180
|
+
}; // 发送请求
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
xhr.open('POST', '/cloudFile/common/mergeChunk', true);
|
|
184
|
+
var data = new FormData();
|
|
185
|
+
data.append('chunkId', state.chunkId);
|
|
186
|
+
data.append('tenantId', (0, _utils.getVtxToken)('tenantId'));
|
|
187
|
+
data.append('chunkSize', state.chunks.length);
|
|
188
|
+
data.append('fileName', state.fileInput.files[0].name);
|
|
189
|
+
xhr.send(data);
|
|
190
|
+
} // 合并切片后上传
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
function chunkUpload(data) {
|
|
194
|
+
var postUrl = getPostURL();
|
|
195
|
+
|
|
196
|
+
if (state.useFormData) {
|
|
197
|
+
var request = new XMLHttpRequest(); // 发送请求
|
|
198
|
+
|
|
199
|
+
request.open('POST', postUrl);
|
|
200
|
+
request.setRequestHeader('Authorization', token ? "Bearer ".concat(token) : '');
|
|
201
|
+
request.setRequestHeader('access_token', token ? "".concat(token) : '');
|
|
202
|
+
|
|
203
|
+
request.onreadystatechange = function (e) {
|
|
204
|
+
if (e.target.readyState == 4) {
|
|
205
|
+
uploadSuccess(e.target.response);
|
|
206
|
+
}
|
|
207
|
+
}; //创建formdata对象
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
var fmd = new FormData();
|
|
211
|
+
fmd.append('tenantId', (0, _utils.getVtxToken)('tenantId'));
|
|
212
|
+
fmd.append('fileId', data[0].id);
|
|
213
|
+
request.send(fmd);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
function upload() {
|
|
218
|
+
var postUrl = getPostURL();
|
|
219
|
+
|
|
220
|
+
if (state.useFormData) {
|
|
221
|
+
var request = new XMLHttpRequest(); // 发送请求
|
|
222
|
+
|
|
223
|
+
request.open('POST', postUrl);
|
|
224
|
+
request.setRequestHeader('Authorization', token ? "Bearer ".concat(token) : '');
|
|
225
|
+
request.setRequestHeader('access_token', token ? "".concat(token) : '');
|
|
226
|
+
|
|
227
|
+
request.onreadystatechange = function (e) {
|
|
228
|
+
if (e.target.readyState == 4) {
|
|
229
|
+
uploadSuccess(e.target.response);
|
|
230
|
+
}
|
|
231
|
+
}; //创建formdata对象
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
var fmd = new FormData();
|
|
235
|
+
fmd.append(state.fileKey, state.fileInput.files[0]);
|
|
236
|
+
request.send(fmd);
|
|
237
|
+
}
|
|
238
|
+
} // 切片文件
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
function spreadFile(file) {
|
|
242
|
+
var chunks = [];
|
|
243
|
+
var start = 0;
|
|
244
|
+
var end;
|
|
245
|
+
|
|
246
|
+
while (start < file.size) {
|
|
247
|
+
end = Math.min(start + state.chunkSize, file.size);
|
|
248
|
+
chunks.push(file.slice(start, end));
|
|
249
|
+
start = end;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
return chunks;
|
|
253
|
+
} // 获取上传地址(拼接参数)
|
|
79
254
|
|
|
80
255
|
|
|
81
256
|
var getPostURL = function getPostURL() {
|
|
@@ -139,7 +314,8 @@ function VtxImport(props) {
|
|
|
139
314
|
|
|
140
315
|
var templateURL = props.templateURL,
|
|
141
316
|
uploadURL = props.uploadURL,
|
|
142
|
-
afterUpload = props.afterUpload
|
|
317
|
+
afterUpload = props.afterUpload,
|
|
318
|
+
beforeUpload = props.beforeUpload;
|
|
143
319
|
var modalProps = {
|
|
144
320
|
className: 'vtx-import-modal',
|
|
145
321
|
visible: state.visible,
|
|
@@ -158,29 +334,41 @@ function VtxImport(props) {
|
|
|
158
334
|
type: "primary",
|
|
159
335
|
loading: state.uploading,
|
|
160
336
|
onClick: function onClick() {
|
|
161
|
-
|
|
337
|
+
if (typeof props.beforeUpload === 'function') {
|
|
338
|
+
var flag = beforeUpload(state.fileInput.files[0]);
|
|
339
|
+
|
|
340
|
+
if (!flag) {
|
|
341
|
+
state.fileInput.value = '';
|
|
342
|
+
setState({
|
|
343
|
+
fileInput: null
|
|
344
|
+
});
|
|
345
|
+
return;
|
|
346
|
+
}
|
|
347
|
+
}
|
|
162
348
|
|
|
163
349
|
if (state.fileInput.value) {
|
|
164
350
|
setState({
|
|
165
351
|
uploading: true
|
|
166
|
-
});
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
352
|
+
}); // 上传文件
|
|
353
|
+
|
|
354
|
+
checkFile(state.fileInput.files[0]); // const postUrl = getPostURL();
|
|
355
|
+
// if (state.useFormData) {
|
|
356
|
+
// const request = new XMLHttpRequest();
|
|
357
|
+
// request.open('POST', postUrl);
|
|
358
|
+
// request.setRequestHeader(
|
|
359
|
+
// 'Authorization',
|
|
360
|
+
// token ? `Bearer ${token}` : '',
|
|
361
|
+
// );
|
|
362
|
+
// request.setRequestHeader('access_token', token ? `${token}` : '');
|
|
363
|
+
// request.onreadystatechange = e => {
|
|
364
|
+
// if (e.target.readyState == 4) {
|
|
365
|
+
// uploadSuccess(e.target.response);
|
|
366
|
+
// }
|
|
367
|
+
// };
|
|
368
|
+
// const fmd = new FormData();
|
|
369
|
+
// fmd.append(state.fileKey, state.fileInput.files[0]);
|
|
370
|
+
// request.send(fmd);
|
|
371
|
+
// }
|
|
184
372
|
} else {
|
|
185
373
|
_message["default"].info('请选择需要上传的文件');
|
|
186
374
|
}
|
|
@@ -203,6 +391,11 @@ function VtxImport(props) {
|
|
|
203
391
|
},
|
|
204
392
|
modalWidth: state.modalWidth
|
|
205
393
|
};
|
|
394
|
+
(0, _react.useEffect)(function () {
|
|
395
|
+
if (state.chunkId) {
|
|
396
|
+
startUpload();
|
|
397
|
+
}
|
|
398
|
+
}, [state.chunkId]);
|
|
206
399
|
return /*#__PURE__*/_react["default"].createElement(_modal["default"], modalProps, props.children, /*#__PURE__*/_react["default"].createElement("form", {
|
|
207
400
|
encType: "multipart/form-data",
|
|
208
401
|
method: "post",
|
|
@@ -240,7 +433,9 @@ VtxImport.propTypes = {
|
|
|
240
433
|
afterUpload: _propTypes["default"].func,
|
|
241
434
|
modalWidth: _propTypes["default"].number,
|
|
242
435
|
columns: _propTypes["default"].array,
|
|
243
|
-
children: _propTypes["default"].object
|
|
436
|
+
children: _propTypes["default"].object,
|
|
437
|
+
beforeUpload: _propTypes["default"].func,
|
|
438
|
+
chunkSize: _propTypes["default"].number
|
|
244
439
|
};
|
|
245
440
|
var _default = VtxImport;
|
|
246
441
|
exports["default"] = _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["token","getToken","VtxImport","props","useSet","fileForm","fileInput","iframe","useFormData","window","FormData","uploading","visible","fileKey","accept","resultVisible","resultData","modalWidth","columns","title","dataIndex","key","state","setState","getPostURL","postUrl","uploadURL","postData","postArray","k","undefined","push","encodeURIComponent","length","join","closeModal","value","close","uploadSuccess","data","afterUpload","parseData","JSON","parse","Array","isArray","map","item","index","messages","filter","result","message","error","msg","templateURL","modalProps","className","onCancel","maskClosable","footer","open","request","XMLHttpRequest","setRequestHeader","onreadystatechange","e","target","readyState","response","fmd","append","files","send","info","resultProps","dataSource","hideVisible","children","dom","display","propTypes","PropTypes","bool","string","object","func","number","array"],"sources":["vtx-import/index.jsx"],"sourcesContent":["import React from 'react';\r\nimport Modal from 'antd/lib/modal';\r\nimport Button from 'antd/lib/button';\r\nimport message from 'antd/lib/message';\r\nimport PropTypes from 'prop-types';\r\nimport useSet from '../_util/useSet';\r\nimport VtxImportResult from './result';\r\nimport getToken from '../_util/getToken';\r\nconst token = getToken();\r\nfunction VtxImport(props) {\r\n const [state, setState] = useSet({\r\n fileForm: null, // form表单\r\n fileInput: null, // 保存上传的文件\r\n iframe: null, // form表单提交之后跳转的\r\n useFormData: window.FormData ? true : false, // 是否查看\r\n uploading: false, // 表单提交的状态\r\n visible: props.visible || false,\r\n fileKey: props.fileKey || 'file',\r\n accept:\r\n props.accept ||\r\n 'application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,text/csv',\r\n resultVisible: false, // 导入结果查看弹窗\r\n resultData: [], // 导入结果查看\r\n modalWidth: props.modalWidth || 800,\r\n columns: props.columns || [\r\n {\r\n title: '行号',\r\n dataIndex: 'lineNum',\r\n key: 'lineNum',\r\n },\r\n {\r\n title: '错误说明',\r\n dataIndex: 'messages',\r\n key: 'messages',\r\n },\r\n ],\r\n });\r\n // 获取上传地址(拼接参数)\r\n const getPostURL = () => {\r\n const postUrl = props.uploadURL;\r\n const postData = props.postData || {};\r\n const postArray = [];\r\n for (const k in postData) {\r\n if (postData[k] !== undefined && postData[k] !== null && postData[k] !== '') {\r\n postArray.push(`${k}=${encodeURIComponent(postData[k])}`);\r\n }\r\n }\r\n return postArray.length > 0 ? `${postUrl}?${postArray.join('&')}` : postUrl;\r\n };\r\n const closeModal = () => {\r\n state.fileInput.value = '';\r\n if (typeof props.close === 'function') {\r\n props.close();\r\n } else {\r\n setState({\r\n visible: !state.visible,\r\n });\r\n }\r\n };\r\n // 上传之后的回调 - 展示报错信息\r\n const uploadSuccess = data => {\r\n state.fileInput.value = '';\r\n setState({\r\n uploading: false,\r\n });\r\n if (typeof props.afterUpload === 'function') {\r\n afterUpload(data);\r\n }\r\n const parseData = JSON.parse(data);\r\n if (Array.isArray(parseData?.data)) {\r\n setState({\r\n resultVisible: true,\r\n resultData: parseData.data\r\n .map((item, index) => ({\r\n ...item,\r\n key: index,\r\n messages: item.messages.join(','),\r\n }))\r\n .filter(item => item.messages.length !== 0),\r\n });\r\n } else {\r\n // 新增其他错误提示\r\n if (parseData.result !== 0) {\r\n message.error(parseData?.msg || '服务器异常');\r\n }\r\n }\r\n };\r\n const { templateURL, uploadURL, afterUpload } = props;\r\n const modalProps = {\r\n className: 'vtx-import-modal',\r\n visible: state.visible,\r\n title: '导入',\r\n onCancel: () => closeModal(),\r\n maskClosable: false,\r\n footer: [\r\n templateURL ? (\r\n <Button\r\n key=\"downloadTemple\"\r\n onClick={() => {\r\n window.open(templateURL);\r\n }}\r\n >\r\n 下载模板\r\n </Button>\r\n ) : null,\r\n <Button\r\n key=\"uploadSubmit\"\r\n type=\"primary\"\r\n loading={state.uploading}\r\n onClick={() => {\r\n const postUrl = getPostURL();\r\n if (state.fileInput.value) {\r\n setState({\r\n uploading: true,\r\n });\r\n if (state.useFormData) {\r\n const request = new XMLHttpRequest();\r\n request.open('POST', postUrl);\r\n request.setRequestHeader(\r\n 'Authorization',\r\n token ? `Bearer ${token}` : '',\r\n );\r\n request.setRequestHeader('access_token', token ? `${token}` : '');\r\n request.onreadystatechange = e => {\r\n if (e.target.readyState == 4) {\r\n uploadSuccess(e.target.response);\r\n }\r\n };\r\n const fmd = new FormData();\r\n fmd.append(state.fileKey, state.fileInput.files[0]);\r\n request.send(fmd);\r\n }\r\n } else {\r\n message.info('请选择需要上传的文件');\r\n }\r\n }}\r\n >\r\n 上传\r\n </Button>,\r\n <Button\r\n key=\"closeWindow\"\r\n onClick={() => {\r\n closeModal();\r\n }}\r\n >\r\n 关闭\r\n </Button>,\r\n ],\r\n };\r\n const resultProps = {\r\n visible: state.resultVisible,\r\n dataSource: state.resultData,\r\n columns: state.columns,\r\n hideVisible: () => {\r\n setState({\r\n resultVisible: false,\r\n });\r\n },\r\n modalWidth: state.modalWidth,\r\n };\r\n return (\r\n <Modal {...modalProps}>\r\n {props.children}\r\n <form\r\n encType=\"multipart/form-data\"\r\n method=\"post\"\r\n target=\"tmp\"\r\n action={uploadURL}\r\n ref={dom => {\r\n if (dom) state.fileForm = dom;\r\n }}\r\n >\r\n <input\r\n type=\"file\"\r\n name={state.fileKey}\r\n accept={state.accept}\r\n ref={dom => {\r\n if (dom) state.fileInput = dom;\r\n }}\r\n />\r\n </form>\r\n <iframe\r\n name=\"tmp\"\r\n style={{ display: 'none' }}\r\n ref={dom => {\r\n if (dom) state.iframe = dom;\r\n }}\r\n ></iframe>\r\n {state.resultVisible && <VtxImportResult {...resultProps} />}\r\n </Modal>\r\n );\r\n}\r\nVtxImport.propTypes = {\r\n visible: PropTypes.bool,\r\n templateURL: PropTypes.string,\r\n uploadURL: PropTypes.string,\r\n postData: PropTypes.object,\r\n fileKey: PropTypes.string,\r\n accept: PropTypes.string,\r\n close: PropTypes.func,\r\n afterUpload: PropTypes.func,\r\n modalWidth: PropTypes.number,\r\n columns: PropTypes.array,\r\n children: PropTypes.object,\r\n};\r\nexport default VtxImport;\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["token","getToken","VtxImport","props","indexRef","useRef","useSet","fileForm","fileInput","iframe","useFormData","window","FormData","uploading","visible","fileKey","accept","resultVisible","resultData","modalWidth","columns","title","dataIndex","key","step","chunkSize","totalChunk","currentIndex","chunkId","chunks","state","setState","checkFile","file","size","upload","mode","spreadFile","md5","Date","valueOf","Math","random","length","startUpload","dataArr","forEach","e","i","data","append","getVtxToken","File","files","name","push","uploadAsync","list","current","xhr","XMLHttpRequest","onload","status","onerror","message","error","open","send","mergeFile","res","JSON","parse","responseText","result","success","chunkUpload","msg","postUrl","getPostURL","request","setRequestHeader","onreadystatechange","target","readyState","uploadSuccess","response","fmd","id","start","end","min","slice","uploadURL","postData","postArray","k","undefined","encodeURIComponent","join","closeModal","value","close","afterUpload","parseData","Array","isArray","map","item","index","messages","filter","templateURL","beforeUpload","modalProps","className","onCancel","maskClosable","footer","flag","info","resultProps","dataSource","hideVisible","useEffect","children","dom","display","propTypes","PropTypes","bool","string","object","func","number","array"],"sources":["vtx-import/index.jsx"],"sourcesContent":["import React, { useRef, useEffect } from 'react';\r\nimport Modal from 'antd/lib/modal';\r\nimport Button from 'antd/lib/button';\r\nimport message from 'antd/lib/message';\r\nimport PropTypes from 'prop-types';\r\nimport useSet from '../_util/useSet';\r\nimport VtxImportResult from './result';\r\nimport getToken from '../_util/getToken';\r\nconst token = getToken();\r\nimport md5 from 'md5';\r\nimport { getVtxToken } from '@vtx/utils';\r\nfunction VtxImport(props) {\r\n const indexRef = useRef(0);\r\n const [state, setState] = useSet({\r\n fileForm: null, // form表单\r\n fileInput: null, // 保存上传的文件\r\n iframe: null, // form表单提交之后跳转的\r\n useFormData: window.FormData ? true : false, // 是否查看\r\n uploading: false, // 表单提交的状态\r\n visible: props.visible || false,\r\n fileKey: props.fileKey || 'file',\r\n accept:\r\n props.accept ||\r\n 'application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,text/csv',\r\n resultVisible: false, // 导入结果查看弹窗\r\n resultData: [], // 导入结果查看\r\n modalWidth: props.modalWidth || 800,\r\n columns: props.columns || [\r\n {\r\n title: '行号',\r\n dataIndex: 'lineNum',\r\n key: 'lineNum',\r\n },\r\n {\r\n title: '错误说明',\r\n dataIndex: 'messages',\r\n key: 'messages',\r\n },\r\n ],\r\n step: 1,\r\n chunkSize: props.chunkSize || 10 * 1024 * 1024,\r\n totalChunk: 0,\r\n currentIndex: 0,\r\n chunkId: '',\r\n chunks: [],\r\n });\r\n\r\n // 开始准备文件\r\n function checkFile(file) {\r\n if (file.size <= state.chunkSize) {\r\n upload(file);\r\n } else {\r\n setState({ mode: 'spread' });\r\n let chunks = spreadFile(file);\r\n setState({\r\n chunks,\r\n chunkId: md5(`${new Date().valueOf()}${Math.random()}`),\r\n totalChunk: chunks.length,\r\n step: 2,\r\n });\r\n }\r\n }\r\n\r\n // 开始上传\r\n function startUpload() {\r\n let dataArr = [];\r\n state.chunks.forEach((e, i) => {\r\n //创建formdata对象\r\n let data = new FormData();\r\n // data.append(\"totalNumber\", state.chunks.length)\r\n data.append('chunkSize', state.chunks.length);\r\n data.append('chunkNo', i + 1);\r\n data.append('chunkId', state.chunkId);\r\n data.append('tenantId', getVtxToken('tenantId'));\r\n data.append('file', new File([e], state.fileInput.files[0].name));\r\n dataArr.push(data);\r\n });\r\n uploadAsync(dataArr);\r\n }\r\n\r\n // 上传\r\n function uploadAsync(list) {\r\n if (indexRef.current < list.length) {\r\n let xhr = new XMLHttpRequest();\r\n xhr.onload = function() {\r\n if (xhr.status === 200) {\r\n setState({ currentIndex: indexRef.current + 1 });\r\n indexRef.current += 1;\r\n uploadAsync(list);\r\n }\r\n };\r\n xhr.onerror = function() {\r\n message.error('上传失败');\r\n };\r\n // 发送请求\r\n xhr.open('POST', '/cloudFile/common/uploadChunk', true);\r\n xhr.send(list[indexRef.current]);\r\n } else {\r\n mergeFile();\r\n }\r\n }\r\n\r\n // 合并分片\r\n function mergeFile() {\r\n let xhr = new XMLHttpRequest();\r\n // 当上传完成时调用\r\n xhr.onload = function() {\r\n if (xhr.status === 200) {\r\n let res = JSON.parse(xhr.responseText);\r\n if (res?.result == 0) {\r\n message.success('上传成功');\r\n chunkUpload(res.data);\r\n } else {\r\n message.error(res?.msg || '上传失败');\r\n }\r\n }\r\n };\r\n xhr.onerror = function() {\r\n message.error('上传失败');\r\n };\r\n // 发送请求\r\n xhr.open('POST', '/cloudFile/common/mergeChunk', true);\r\n let data = new FormData();\r\n data.append('chunkId', state.chunkId);\r\n data.append('tenantId', getVtxToken('tenantId'));\r\n data.append('chunkSize', state.chunks.length);\r\n data.append('fileName', state.fileInput.files[0].name);\r\n xhr.send(data);\r\n }\r\n\r\n // 合并切片后上传\r\n function chunkUpload(data) {\r\n const postUrl = getPostURL();\r\n if (state.useFormData) {\r\n const request = new XMLHttpRequest();\r\n // 发送请求\r\n request.open('POST', postUrl);\r\n request.setRequestHeader('Authorization', token ? `Bearer ${token}` : '');\r\n request.setRequestHeader('access_token', token ? `${token}` : '');\r\n request.onreadystatechange = e => {\r\n if (e.target.readyState == 4) {\r\n uploadSuccess(e.target.response);\r\n }\r\n };\r\n //创建formdata对象\r\n const fmd = new FormData();\r\n fmd.append('tenantId', getVtxToken('tenantId'));\r\n fmd.append('fileId', data[0].id);\r\n request.send(fmd);\r\n }\r\n }\r\n function upload() {\r\n const postUrl = getPostURL();\r\n if (state.useFormData) {\r\n const request = new XMLHttpRequest();\r\n // 发送请求\r\n request.open('POST', postUrl);\r\n request.setRequestHeader('Authorization', token ? `Bearer ${token}` : '');\r\n request.setRequestHeader('access_token', token ? `${token}` : '');\r\n request.onreadystatechange = e => {\r\n if (e.target.readyState == 4) {\r\n uploadSuccess(e.target.response);\r\n }\r\n };\r\n //创建formdata对象\r\n const fmd = new FormData();\r\n fmd.append(state.fileKey, state.fileInput.files[0]);\r\n request.send(fmd);\r\n }\r\n }\r\n\r\n // 切片文件\r\n function spreadFile(file) {\r\n const chunks = [];\r\n let start = 0;\r\n let end;\r\n while (start < file.size) {\r\n end = Math.min(start + state.chunkSize, file.size);\r\n chunks.push(file.slice(start, end));\r\n start = end;\r\n }\r\n return chunks;\r\n }\r\n\r\n // 获取上传地址(拼接参数)\r\n const getPostURL = () => {\r\n const postUrl = props.uploadURL;\r\n const postData = props.postData || {};\r\n const postArray = [];\r\n for (const k in postData) {\r\n if (postData[k] !== undefined && postData[k] !== null && postData[k] !== '') {\r\n postArray.push(`${k}=${encodeURIComponent(postData[k])}`);\r\n }\r\n }\r\n return postArray.length > 0 ? `${postUrl}?${postArray.join('&')}` : postUrl;\r\n };\r\n const closeModal = () => {\r\n state.fileInput.value = '';\r\n if (typeof props.close === 'function') {\r\n props.close();\r\n } else {\r\n setState({\r\n visible: !state.visible,\r\n });\r\n }\r\n };\r\n // 上传之后的回调 - 展示报错信息\r\n const uploadSuccess = data => {\r\n state.fileInput.value = '';\r\n setState({\r\n uploading: false,\r\n });\r\n\r\n if (typeof props.afterUpload === 'function') {\r\n afterUpload(data);\r\n }\r\n const parseData = JSON.parse(data);\r\n if (Array.isArray(parseData?.data)) {\r\n setState({\r\n resultVisible: true,\r\n resultData: parseData.data\r\n .map((item, index) => ({\r\n ...item,\r\n key: index,\r\n messages: item.messages.join(','),\r\n }))\r\n .filter(item => item.messages.length !== 0),\r\n });\r\n } else {\r\n // 新增其他错误提示\r\n if (parseData.result !== 0) {\r\n message.error(parseData?.msg || '服务器异常');\r\n }\r\n }\r\n };\r\n const { templateURL, uploadURL, afterUpload, beforeUpload } = props;\r\n\r\n const modalProps = {\r\n className: 'vtx-import-modal',\r\n visible: state.visible,\r\n title: '导入',\r\n onCancel: () => closeModal(),\r\n maskClosable: false,\r\n footer: [\r\n templateURL ? (\r\n <Button\r\n key=\"downloadTemple\"\r\n onClick={() => {\r\n window.open(templateURL);\r\n }}\r\n >\r\n 下载模板\r\n </Button>\r\n ) : null,\r\n <Button\r\n key=\"uploadSubmit\"\r\n type=\"primary\"\r\n loading={state.uploading}\r\n onClick={() => {\r\n if (typeof props.beforeUpload === 'function') {\r\n let flag = beforeUpload(state.fileInput.files[0]);\r\n if(!flag){\r\n state.fileInput.value = '';\r\n setState({fileInput: null});\r\n return;\r\n }\r\n }\r\n\r\n if (state.fileInput.value) {\r\n setState({\r\n uploading: true,\r\n });\r\n // 上传文件\r\n checkFile(state.fileInput.files[0]);\r\n // const postUrl = getPostURL();\r\n // if (state.useFormData) {\r\n // const request = new XMLHttpRequest();\r\n // request.open('POST', postUrl);\r\n // request.setRequestHeader(\r\n // 'Authorization',\r\n // token ? `Bearer ${token}` : '',\r\n // );\r\n // request.setRequestHeader('access_token', token ? `${token}` : '');\r\n // request.onreadystatechange = e => {\r\n // if (e.target.readyState == 4) {\r\n // uploadSuccess(e.target.response);\r\n // }\r\n // };\r\n // const fmd = new FormData();\r\n // fmd.append(state.fileKey, state.fileInput.files[0]);\r\n // request.send(fmd);\r\n // }\r\n } else {\r\n message.info('请选择需要上传的文件');\r\n }\r\n }}\r\n >\r\n 上传\r\n </Button>,\r\n <Button\r\n key=\"closeWindow\"\r\n onClick={() => {\r\n closeModal();\r\n }}\r\n >\r\n 关闭\r\n </Button>,\r\n ],\r\n };\r\n const resultProps = {\r\n visible: state.resultVisible,\r\n dataSource: state.resultData,\r\n columns: state.columns,\r\n hideVisible: () => {\r\n setState({\r\n resultVisible: false,\r\n });\r\n },\r\n modalWidth: state.modalWidth,\r\n };\r\n\r\n useEffect(() => {\r\n if (state.chunkId) {\r\n startUpload();\r\n }\r\n }, [state.chunkId]);\r\n\r\n return (\r\n <Modal {...modalProps}>\r\n {props.children}\r\n <form\r\n encType=\"multipart/form-data\"\r\n method=\"post\"\r\n target=\"tmp\"\r\n action={uploadURL}\r\n ref={dom => {\r\n if (dom) state.fileForm = dom;\r\n }}\r\n >\r\n <input\r\n type=\"file\"\r\n name={state.fileKey}\r\n accept={state.accept}\r\n ref={dom => {\r\n if (dom) state.fileInput = dom;\r\n }}\r\n />\r\n </form>\r\n <iframe\r\n name=\"tmp\"\r\n style={{ display: 'none' }}\r\n ref={dom => {\r\n if (dom) state.iframe = dom;\r\n }}\r\n ></iframe>\r\n {state.resultVisible && <VtxImportResult {...resultProps} />}\r\n </Modal>\r\n );\r\n}\r\nVtxImport.propTypes = {\r\n visible: PropTypes.bool,\r\n templateURL: PropTypes.string,\r\n uploadURL: PropTypes.string,\r\n postData: PropTypes.object,\r\n fileKey: PropTypes.string,\r\n accept: PropTypes.string,\r\n close: PropTypes.func,\r\n afterUpload: PropTypes.func,\r\n modalWidth: PropTypes.number,\r\n columns: PropTypes.array,\r\n children: PropTypes.object,\r\n beforeUpload: PropTypes.func,\r\n chunkSize: PropTypes.number,\r\n};\r\nexport default VtxImport;\r\n"],"mappings":"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"}
|
package/lib/vtx-import2/index.js
CHANGED
|
@@ -23,6 +23,12 @@ var _getToken = _interopRequireDefault(require("../_util/getToken"));
|
|
|
23
23
|
|
|
24
24
|
var _getSignature = _interopRequireDefault(require("@vtx/utils/lib/getSignature"));
|
|
25
25
|
|
|
26
|
+
var _useSet3 = _interopRequireDefault(require("../_util/useSet"));
|
|
27
|
+
|
|
28
|
+
var _md = _interopRequireDefault(require("md5"));
|
|
29
|
+
|
|
30
|
+
var _utils = require("@vtx/utils");
|
|
31
|
+
|
|
26
32
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
27
33
|
|
|
28
34
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
@@ -76,7 +82,8 @@ var VtxImport2 = function VtxImport2(props) {
|
|
|
76
82
|
errorDownloadName = props.errorDownloadName,
|
|
77
83
|
customText = props.customText,
|
|
78
84
|
_props$customEnumText = props.customEnumText,
|
|
79
|
-
customEnumText = _props$customEnumText === void 0 ? {} : _props$customEnumText
|
|
85
|
+
customEnumText = _props$customEnumText === void 0 ? {} : _props$customEnumText,
|
|
86
|
+
beforeUpload = props.beforeUpload;
|
|
80
87
|
|
|
81
88
|
var TextEnum = _objectSpread({
|
|
82
89
|
headSubTitleText: '导入',
|
|
@@ -139,6 +146,20 @@ var VtxImport2 = function VtxImport2(props) {
|
|
|
139
146
|
|
|
140
147
|
var fileInputRef = (0, _react.useRef)();
|
|
141
148
|
var fileName = (0, _react.useRef)('');
|
|
149
|
+
var indexRef = (0, _react.useRef)(0);
|
|
150
|
+
|
|
151
|
+
var _useSet = (0, _useSet3["default"])({
|
|
152
|
+
step: 1,
|
|
153
|
+
chunkSize: props.chunkSize || 10 * 1024 * 1024,
|
|
154
|
+
totalChunk: 0,
|
|
155
|
+
currentIndex: 0,
|
|
156
|
+
chunkId: '',
|
|
157
|
+
chunks: []
|
|
158
|
+
}),
|
|
159
|
+
_useSet2 = _slicedToArray(_useSet, 2),
|
|
160
|
+
state = _useSet2[0],
|
|
161
|
+
setState = _useSet2[1];
|
|
162
|
+
|
|
142
163
|
var token = (0, _getToken["default"])();
|
|
143
164
|
|
|
144
165
|
if (!token) {
|
|
@@ -162,7 +183,165 @@ var VtxImport2 = function VtxImport2(props) {
|
|
|
162
183
|
if (fileList.length !== 0) {
|
|
163
184
|
fileName.current = getFileName(fileList[0].name);
|
|
164
185
|
}
|
|
165
|
-
}, [fileList]); //
|
|
186
|
+
}, [fileList]); // 开始准备文件
|
|
187
|
+
|
|
188
|
+
function checkFile(file) {
|
|
189
|
+
if (file.size <= state.chunkSize) {
|
|
190
|
+
upload(file);
|
|
191
|
+
} else {
|
|
192
|
+
setState({
|
|
193
|
+
mode: 'spread'
|
|
194
|
+
});
|
|
195
|
+
var chunks = spreadFile(file);
|
|
196
|
+
setState({
|
|
197
|
+
chunks: chunks,
|
|
198
|
+
chunkId: (0, _md["default"])("".concat(new Date().valueOf()).concat(Math.random())),
|
|
199
|
+
totalChunk: chunks.length,
|
|
200
|
+
step: 2
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
} // 开始上传
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
function startUpload() {
|
|
207
|
+
var dataArr = [];
|
|
208
|
+
state.chunks.forEach(function (e, i) {
|
|
209
|
+
//创建formdata对象
|
|
210
|
+
var data = new FormData(); // data.append("totalNumber", state.chunks.length)
|
|
211
|
+
|
|
212
|
+
data.append('chunkSize', state.chunks.length);
|
|
213
|
+
data.append('chunkNo', i + 1);
|
|
214
|
+
data.append('chunkId', state.chunkId);
|
|
215
|
+
data.append('tenantId', (0, _utils.getVtxToken)('tenantId'));
|
|
216
|
+
data.append('file', new File([e], fileList[0].name));
|
|
217
|
+
dataArr.push(data);
|
|
218
|
+
});
|
|
219
|
+
uploadAsync(dataArr);
|
|
220
|
+
} // 上传
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
function uploadAsync(list) {
|
|
224
|
+
if (indexRef.current < list.length) {
|
|
225
|
+
var xhr = new XMLHttpRequest();
|
|
226
|
+
|
|
227
|
+
xhr.onload = function () {
|
|
228
|
+
if (xhr.status === 200) {
|
|
229
|
+
setState({
|
|
230
|
+
currentIndex: indexRef.current + 1
|
|
231
|
+
});
|
|
232
|
+
indexRef.current += 1;
|
|
233
|
+
uploadAsync(list);
|
|
234
|
+
}
|
|
235
|
+
};
|
|
236
|
+
|
|
237
|
+
xhr.onerror = function () {
|
|
238
|
+
_antd.message.error('上传失败');
|
|
239
|
+
}; // 发送请求
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
xhr.open('POST', '/cloudFile/common/uploadChunk', true);
|
|
243
|
+
xhr.send(list[indexRef.current]);
|
|
244
|
+
} else {
|
|
245
|
+
mergeFile();
|
|
246
|
+
}
|
|
247
|
+
} // 合并分片
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
function mergeFile() {
|
|
251
|
+
var xhr = new XMLHttpRequest(); // 当上传完成时调用
|
|
252
|
+
|
|
253
|
+
xhr.onload = function () {
|
|
254
|
+
if (xhr.status === 200) {
|
|
255
|
+
var res = JSON.parse(xhr.responseText);
|
|
256
|
+
|
|
257
|
+
if ((res === null || res === void 0 ? void 0 : res.result) == 0) {
|
|
258
|
+
_antd.message.success('上传成功');
|
|
259
|
+
|
|
260
|
+
chunkUpload(res.data);
|
|
261
|
+
} else {
|
|
262
|
+
_antd.message.error((res === null || res === void 0 ? void 0 : res.msg) || '上传失败');
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
};
|
|
266
|
+
|
|
267
|
+
xhr.onerror = function () {
|
|
268
|
+
_antd.message.error('上传失败');
|
|
269
|
+
}; // 发送请求
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
xhr.open('POST', '/cloudFile/common/mergeChunk', true);
|
|
273
|
+
var data = new FormData();
|
|
274
|
+
data.append('chunkId', state.chunkId);
|
|
275
|
+
data.append('tenantId', (0, _utils.getVtxToken)('tenantId'));
|
|
276
|
+
data.append('chunkSize', state.chunks.length);
|
|
277
|
+
data.append('fileName', fileList[0].name);
|
|
278
|
+
xhr.send(data);
|
|
279
|
+
} // 合并切片后上传
|
|
280
|
+
|
|
281
|
+
|
|
282
|
+
function chunkUpload(data) {
|
|
283
|
+
var postUrl = getPostURL();
|
|
284
|
+
var fmd = new FormData();
|
|
285
|
+
fmd.append('fileId', data[0].id);
|
|
286
|
+
var request = new XMLHttpRequest();
|
|
287
|
+
request.open('POST', postUrl);
|
|
288
|
+
var signature = (0, _getSignature["default"])(postData);
|
|
289
|
+
|
|
290
|
+
for (var key in signature) {
|
|
291
|
+
request.setRequestHeader(key, signature[key]);
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
request.setRequestHeader('Authorization', token ? "Bearer ".concat(token) : '');
|
|
295
|
+
request.setRequestHeader('access_token', token ? "".concat(token) : '');
|
|
296
|
+
|
|
297
|
+
request.onreadystatechange = function (e) {
|
|
298
|
+
if (e.target.readyState == 4) {
|
|
299
|
+
dealResult(e.target.response);
|
|
300
|
+
}
|
|
301
|
+
};
|
|
302
|
+
|
|
303
|
+
request.send(fmd);
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
function upload(files) {
|
|
307
|
+
var postUrl = getPostURL();
|
|
308
|
+
var fmd = new FormData();
|
|
309
|
+
fmd.append(fileKey, files);
|
|
310
|
+
var request = new XMLHttpRequest();
|
|
311
|
+
request.open('POST', postUrl);
|
|
312
|
+
var signature = (0, _getSignature["default"])(postData);
|
|
313
|
+
|
|
314
|
+
for (var key in signature) {
|
|
315
|
+
request.setRequestHeader(key, signature[key]);
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
request.setRequestHeader('Authorization', token ? "Bearer ".concat(token) : '');
|
|
319
|
+
request.setRequestHeader('access_token', token ? "".concat(token) : '');
|
|
320
|
+
|
|
321
|
+
request.onreadystatechange = function (e) {
|
|
322
|
+
if (e.target.readyState == 4) {
|
|
323
|
+
dealResult(e.target.response);
|
|
324
|
+
}
|
|
325
|
+
};
|
|
326
|
+
|
|
327
|
+
request.send(fmd);
|
|
328
|
+
} // 切片文件
|
|
329
|
+
|
|
330
|
+
|
|
331
|
+
function spreadFile(file) {
|
|
332
|
+
var chunks = [];
|
|
333
|
+
var start = 0;
|
|
334
|
+
var end;
|
|
335
|
+
|
|
336
|
+
while (start < file.size) {
|
|
337
|
+
end = Math.min(start + state.chunkSize, file.size);
|
|
338
|
+
chunks.push(file.slice(start, end));
|
|
339
|
+
start = end;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
return chunks;
|
|
343
|
+
} // 获取上传地址(拼接参数)
|
|
344
|
+
|
|
166
345
|
|
|
167
346
|
var getPostURL = function getPostURL() {
|
|
168
347
|
var postUrl = uploadURL;
|
|
@@ -207,32 +386,22 @@ var VtxImport2 = function VtxImport2(props) {
|
|
|
207
386
|
var _ref$files = _ref.files,
|
|
208
387
|
files = _ref$files === void 0 ? fileList : _ref$files;
|
|
209
388
|
|
|
210
|
-
if (
|
|
211
|
-
|
|
212
|
-
}
|
|
389
|
+
if (typeof props.beforeUpload === 'function') {
|
|
390
|
+
var flag = beforeUpload(files[0]);
|
|
213
391
|
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
var request = new XMLHttpRequest();
|
|
219
|
-
request.open('POST', postUrl);
|
|
220
|
-
var signature = (0, _getSignature["default"])(postData);
|
|
221
|
-
|
|
222
|
-
for (var key in signature) {
|
|
223
|
-
request.setRequestHeader(key, signature[key]);
|
|
392
|
+
if (!flag) {
|
|
393
|
+
setFileList([]);
|
|
394
|
+
return;
|
|
395
|
+
}
|
|
224
396
|
}
|
|
225
397
|
|
|
226
|
-
|
|
227
|
-
|
|
398
|
+
if (files.length === 0) {
|
|
399
|
+
return _antd.message.info(TextEnum.msgUploadWarningText);
|
|
400
|
+
}
|
|
228
401
|
|
|
229
|
-
|
|
230
|
-
if (e.target.readyState == 4) {
|
|
231
|
-
dealResult(e.target.response);
|
|
232
|
-
}
|
|
233
|
-
};
|
|
402
|
+
setUploading(true); // 上传文件
|
|
234
403
|
|
|
235
|
-
|
|
404
|
+
checkFile(files[0]);
|
|
236
405
|
};
|
|
237
406
|
|
|
238
407
|
var againUpload = function againUpload() {
|
|
@@ -250,6 +419,11 @@ var VtxImport2 = function VtxImport2(props) {
|
|
|
250
419
|
});
|
|
251
420
|
};
|
|
252
421
|
|
|
422
|
+
(0, _react.useEffect)(function () {
|
|
423
|
+
if (state.chunkId) {
|
|
424
|
+
startUpload();
|
|
425
|
+
}
|
|
426
|
+
}, [state.chunkId]);
|
|
253
427
|
var modelProps = {
|
|
254
428
|
visible: visible,
|
|
255
429
|
width: 392,
|
|
@@ -320,7 +494,9 @@ VtxImport2.propTypes = {
|
|
|
320
494
|
afterUpload: _propTypes["default"].func,
|
|
321
495
|
token: _propTypes["default"].string,
|
|
322
496
|
customText: _propTypes["default"].string,
|
|
323
|
-
customEnumText: _propTypes["default"].object
|
|
497
|
+
customEnumText: _propTypes["default"].object,
|
|
498
|
+
beforeUpload: _propTypes["default"].func,
|
|
499
|
+
chunkSize: _propTypes["default"].number
|
|
324
500
|
};
|
|
325
501
|
var _default = VtxImport2;
|
|
326
502
|
exports["default"] = _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["getFileName","name","index","lastIndexOf","suffix","substring","VtxImport2","props","visible","close","title","accept","fileKey","uploadURL","postData","errorURL","templateURL","afterUpload","errorDownloadName","customText","customEnumText","TextEnum","headSubTitleText","btnCloseText","btnUploadText","btnReUploadText","btnImportText","msgUploadWarningText","normalTemplateInfoText","normalSelectFileInfoText","normalReChooseFileText","resultSuccessText","resultFailText","resultFailReasonDownText","resultInfoTotalText","resultInfoDataText","resultNetworkErrorText","useState","status","setStatus","result","setResult","countdown","setCountdown","fileList","setFileList","undefined","interval","setInterval","errorFile","setErrorFile","uploading","setUploading","count","setCount","fileInputRef","useRef","fileName","token","getToken","newErrorDownloadName","current","useInterval","useEffect","length","getPostURL","postUrl","postArray","k","push","encodeURIComponent","join","dealResult","response","parseData","JSON","parse","data","message","error","msg","onUpload","files","info","fmd","FormData","append","request","XMLHttpRequest","open","signature","getSignature","key","setRequestHeader","onreadystatechange","e","target","readyState","send","againUpload","click","onFileChange","modelProps","width","maskClosable","footer","onCancel","display","defaultProps","propTypes","PropTypes","bool","string","object","func"],"sources":["vtx-import2/index.jsx"],"sourcesContent":["import React, { useRef } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Button, message, Modal } from 'antd';\r\nimport Content from './Content';\r\nimport { useState } from 'react';\r\nimport ImportResult from './ImportResult';\r\nimport { useInterval } from 'ahooks';\r\nimport { useEffect } from 'react';\r\nimport getToken from '../_util/getToken';\r\nimport getSignature from '@vtx/utils/lib/getSignature';\r\n\r\nfunction getFileName(name = '') {\r\n const index = name.lastIndexOf('.');\r\n const suffix = name.substring(index);\r\n return name.substring(0, index) + '(错误文件)' + suffix;\r\n}\r\n\r\nconst VtxImport2 = props => {\r\n const {\r\n visible,\r\n close,\r\n title,\r\n accept,\r\n fileKey,\r\n uploadURL,\r\n postData,\r\n errorURL,\r\n templateURL,\r\n afterUpload,\r\n errorDownloadName,\r\n customText,\r\n customEnumText = {},\r\n } = props;\r\n const TextEnum = {\r\n headSubTitleText: '导入',\r\n\r\n btnCloseText: '关闭',\r\n btnUploadText: '上传',\r\n btnReUploadText: '再次上传',\r\n btnImportText: '导入',\r\n\r\n msgUploadWarningText: '请选择需要上传的文件',\r\n\r\n normalTemplateInfoText: '没有模板?点击此处下载',\r\n normalSelectFileInfoText: '点击选择文件(支持excel格式)',\r\n normalReChooseFileText: '重新选择文件',\r\n\r\n resultSuccessText: '导入成功',\r\n resultFailText: '导入失败',\r\n resultFailReasonDownText: '下载文件,查看导入失败原因',\r\n resultInfoTotalText: '本次共计',\r\n resultInfoDataText: '条数据',\r\n resultNetworkErrorText: '服务器异常',\r\n\r\n ...customEnumText,\r\n };\r\n const [status, setStatus] = useState(0); // 0:首页,1:结果页\r\n const [result, setResult] = useState(false);\r\n const [countdown, setCountdown] = useState(5);\r\n const [fileList, setFileList] = useState([]);\r\n const [interval, setInterval] = useState(undefined);\r\n const [errorFile, setErrorFile] = useState('');\r\n const [uploading, setUploading] = useState(false);\r\n const [count, setCount] = useState(0);\r\n const fileInputRef = useRef();\r\n const fileName = useRef('');\r\n let token = getToken();\r\n if (!token) {\r\n token = props.token;\r\n }\r\n let newErrorDownloadName = errorDownloadName;\r\n if (!errorDownloadName) {\r\n newErrorDownloadName = fileName.current;\r\n }\r\n useInterval(() => {\r\n if (countdown === 0) {\r\n return close();\r\n }\r\n setCountdown(countdown - 1);\r\n }, interval);\r\n\r\n useEffect(() => {\r\n if (fileList.length !== 0) {\r\n fileName.current = getFileName(fileList[0].name);\r\n }\r\n }, [fileList]);\r\n\r\n // 获取上传地址(拼接参数)\r\n const getPostURL = () => {\r\n const postUrl = uploadURL;\r\n const postArray = [];\r\n for (const k in postData) {\r\n if (postData[k] !== undefined && postData[k] !== null && postData[k] !== '') {\r\n postArray.push(`${k}=${encodeURIComponent(postData[k])}`);\r\n }\r\n }\r\n return postArray.length > 0 ? `${postUrl}?${postArray.join('&')}` : postUrl;\r\n };\r\n\r\n const dealResult = response => {\r\n setUploading(false);\r\n const parseData = JSON.parse(response);\r\n setStatus(1);\r\n if (typeof props.afterUpload === 'function') {\r\n afterUpload(parseData);\r\n }\r\n if (parseData.result === 0) {\r\n setResult(true);\r\n setCountdown(5);\r\n setInterval(1000);\r\n setCount(parseData.data);\r\n } else if (parseData.result === 1) {\r\n setResult(false);\r\n setFileList([]);\r\n if (parseData.data) {\r\n setErrorFile(parseData.data);\r\n } else {\r\n message.error(parseData?.msg || TextEnum.resultNetworkErrorText);\r\n }\r\n }\r\n };\r\n\r\n const onUpload = ({ files = fileList }) => {\r\n if (files.length === 0) {\r\n return message.info(TextEnum.msgUploadWarningText);\r\n }\r\n setUploading(true);\r\n const postUrl = getPostURL();\r\n const fmd = new FormData();\r\n fmd.append(fileKey, files[0]);\r\n const request = new XMLHttpRequest();\r\n request.open('POST', postUrl);\r\n const signature = getSignature(postData);\r\n for(let key in signature){\r\n request.setRequestHeader(key, signature[key]);\r\n }\r\n request.setRequestHeader('Authorization', token ? `Bearer ${token}` : '');\r\n request.setRequestHeader('access_token', token ? `${token}` : '');\r\n request.onreadystatechange = e => {\r\n if (e.target.readyState == 4) {\r\n dealResult(e.target.response);\r\n }\r\n };\r\n\r\n request.send(fmd);\r\n };\r\n\r\n const againUpload = () => {\r\n setInterval(undefined);\r\n setFileList([]);\r\n fileInputRef.current && fileInputRef.current.click();\r\n };\r\n\r\n const onFileChange = () => {\r\n const fileList = [...fileInputRef.current.files];\r\n setFileList(fileList);\r\n onUpload({ files: fileList });\r\n };\r\n\r\n const modelProps = {\r\n visible,\r\n width: 392,\r\n maskClosable: false,\r\n footer: [\r\n <Button key=\"closeWindow\" onClick={close}>\r\n {`${TextEnum.btnCloseText}${status === 1 && result ? '(' + countdown + ')' : ''}`}\r\n </Button>,\r\n (status === 0 || (status === 1 && !result)) && (\r\n <Button\r\n key=\"uploadSubmit\"\r\n type=\"primary\"\r\n loading={uploading}\r\n onClick={status === 0 ? onUpload : againUpload}\r\n >\r\n {status === 0\r\n ? TextEnum.btnUploadText\r\n : result\r\n ? `${TextEnum.btnImportText}(${countdown})`\r\n : TextEnum.btnReUploadText}\r\n </Button>\r\n ),\r\n ],\r\n onCancel: close,\r\n title: (\r\n <div className=\"vtx-import2-modal-header-title\">\r\n <span className=\"vtx-import2-modal-header-text\">{title}</span>\r\n <span className=\"vtx-import2-modal-header-subtitle\">\r\n {TextEnum.headSubTitleText}\r\n </span>\r\n </div>\r\n ),\r\n };\r\n return (\r\n <Modal {...modelProps}>\r\n {status === 0 ? (\r\n <Content\r\n fileList={fileList}\r\n setFileList={setFileList}\r\n accept={accept}\r\n fileKey={fileKey}\r\n templateURL={templateURL}\r\n customText={customText}\r\n TextEnum={TextEnum}\r\n />\r\n ) : (\r\n <ImportResult\r\n result={result}\r\n count={count}\r\n errorFile={errorFile}\r\n errorURL={errorURL}\r\n token={token}\r\n errorDownloadName={newErrorDownloadName}\r\n TextEnum={TextEnum}\r\n />\r\n )}\r\n <input\r\n type=\"file\"\r\n name={fileKey}\r\n accept={accept}\r\n ref={fileInputRef}\r\n style={{ display: 'none' }}\r\n onChange={onFileChange}\r\n value={fileList.length === 0 ? '' : fileList[0].fileName}\r\n />\r\n </Modal>\r\n );\r\n};\r\n\r\nVtxImport2.defaultProps = {\r\n fileKey: 'file',\r\n accept:\r\n 'application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,text/csv',\r\n postData: {},\r\n};\r\n\r\nVtxImport2.propTypes = {\r\n visible: PropTypes.bool,\r\n templateURL: PropTypes.string,\r\n uploadURL: PropTypes.string,\r\n title: PropTypes.string,\r\n postData: PropTypes.object,\r\n fileKey: PropTypes.string,\r\n accept: PropTypes.string,\r\n close: PropTypes.func,\r\n errorURL: PropTypes.string,\r\n errorDownloadName: PropTypes.string,\r\n afterUpload: PropTypes.func,\r\n token: PropTypes.string,\r\n customText: PropTypes.string,\r\n customEnumText: PropTypes.object,\r\n};\r\n\r\nexport default VtxImport2;\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["getFileName","name","index","lastIndexOf","suffix","substring","VtxImport2","props","visible","close","title","accept","fileKey","uploadURL","postData","errorURL","templateURL","afterUpload","errorDownloadName","customText","customEnumText","beforeUpload","TextEnum","headSubTitleText","btnCloseText","btnUploadText","btnReUploadText","btnImportText","msgUploadWarningText","normalTemplateInfoText","normalSelectFileInfoText","normalReChooseFileText","resultSuccessText","resultFailText","resultFailReasonDownText","resultInfoTotalText","resultInfoDataText","resultNetworkErrorText","useState","status","setStatus","result","setResult","countdown","setCountdown","fileList","setFileList","undefined","interval","setInterval","errorFile","setErrorFile","uploading","setUploading","count","setCount","fileInputRef","useRef","fileName","indexRef","useSet","step","chunkSize","totalChunk","currentIndex","chunkId","chunks","state","setState","token","getToken","newErrorDownloadName","current","useInterval","useEffect","length","checkFile","file","size","upload","mode","spreadFile","md5","Date","valueOf","Math","random","startUpload","dataArr","forEach","e","i","data","FormData","append","getVtxToken","File","push","uploadAsync","list","xhr","XMLHttpRequest","onload","onerror","message","error","open","send","mergeFile","res","JSON","parse","responseText","success","chunkUpload","msg","postUrl","getPostURL","fmd","id","request","signature","getSignature","key","setRequestHeader","onreadystatechange","target","readyState","dealResult","response","files","start","end","min","slice","postArray","k","encodeURIComponent","join","parseData","onUpload","flag","info","againUpload","click","onFileChange","modelProps","width","maskClosable","footer","onCancel","display","defaultProps","propTypes","PropTypes","bool","string","object","func","number"],"sources":["vtx-import2/index.jsx"],"sourcesContent":["import React, { useRef } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Button, message, Modal } from 'antd';\r\nimport Content from './Content';\r\nimport { useState } from 'react';\r\nimport ImportResult from './ImportResult';\r\nimport { useInterval } from 'ahooks';\r\nimport { useEffect } from 'react';\r\nimport getToken from '../_util/getToken';\r\nimport getSignature from '@vtx/utils/lib/getSignature';\r\nimport useSet from '../_util/useSet';\r\nimport md5 from 'md5';\r\nimport { getVtxToken } from '@vtx/utils';\r\n\r\nfunction getFileName(name = '') {\r\n const index = name.lastIndexOf('.');\r\n const suffix = name.substring(index);\r\n return name.substring(0, index) + '(错误文件)' + suffix;\r\n}\r\n\r\nconst VtxImport2 = props => {\r\n const {\r\n visible,\r\n close,\r\n title,\r\n accept,\r\n fileKey,\r\n uploadURL,\r\n postData,\r\n errorURL,\r\n templateURL,\r\n afterUpload,\r\n errorDownloadName,\r\n customText,\r\n customEnumText = {},\r\n beforeUpload,\r\n } = props;\r\n const TextEnum = {\r\n headSubTitleText: '导入',\r\n\r\n btnCloseText: '关闭',\r\n btnUploadText: '上传',\r\n btnReUploadText: '再次上传',\r\n btnImportText: '导入',\r\n\r\n msgUploadWarningText: '请选择需要上传的文件',\r\n\r\n normalTemplateInfoText: '没有模板?点击此处下载',\r\n normalSelectFileInfoText: '点击选择文件(支持excel格式)',\r\n normalReChooseFileText: '重新选择文件',\r\n\r\n resultSuccessText: '导入成功',\r\n resultFailText: '导入失败',\r\n resultFailReasonDownText: '下载文件,查看导入失败原因',\r\n resultInfoTotalText: '本次共计',\r\n resultInfoDataText: '条数据',\r\n resultNetworkErrorText: '服务器异常',\r\n\r\n ...customEnumText,\r\n };\r\n const [status, setStatus] = useState(0); // 0:首页,1:结果页\r\n const [result, setResult] = useState(false);\r\n const [countdown, setCountdown] = useState(5);\r\n const [fileList, setFileList] = useState([]);\r\n const [interval, setInterval] = useState(undefined);\r\n const [errorFile, setErrorFile] = useState('');\r\n const [uploading, setUploading] = useState(false);\r\n const [count, setCount] = useState(0);\r\n const fileInputRef = useRef();\r\n const fileName = useRef('');\r\n const indexRef = useRef(0);\r\n\r\n const [state, setState] = useSet({\r\n step: 1,\r\n chunkSize: props.chunkSize || 10 * 1024 * 1024,\r\n totalChunk: 0,\r\n currentIndex: 0,\r\n chunkId: '',\r\n chunks: [],\r\n });\r\n\r\n let token = getToken();\r\n if (!token) {\r\n token = props.token;\r\n }\r\n let newErrorDownloadName = errorDownloadName;\r\n if (!errorDownloadName) {\r\n newErrorDownloadName = fileName.current;\r\n }\r\n useInterval(() => {\r\n if (countdown === 0) {\r\n return close();\r\n }\r\n setCountdown(countdown - 1);\r\n }, interval);\r\n\r\n useEffect(() => {\r\n if (fileList.length !== 0) {\r\n fileName.current = getFileName(fileList[0].name);\r\n }\r\n }, [fileList]);\r\n\r\n // 开始准备文件\r\n function checkFile(file) {\r\n if (file.size <= state.chunkSize) {\r\n upload(file);\r\n } else {\r\n setState({ mode: 'spread' });\r\n let chunks = spreadFile(file);\r\n setState({\r\n chunks,\r\n chunkId: md5(`${new Date().valueOf()}${Math.random()}`),\r\n totalChunk: chunks.length,\r\n step: 2,\r\n });\r\n }\r\n }\r\n // 开始上传\r\n function startUpload() {\r\n let dataArr = [];\r\n state.chunks.forEach((e, i) => {\r\n //创建formdata对象\r\n let data = new FormData();\r\n // data.append(\"totalNumber\", state.chunks.length)\r\n data.append('chunkSize', state.chunks.length);\r\n data.append('chunkNo', i + 1);\r\n data.append('chunkId', state.chunkId);\r\n data.append('tenantId', getVtxToken('tenantId'));\r\n data.append('file', new File([e], fileList[0].name));\r\n dataArr.push(data);\r\n });\r\n uploadAsync(dataArr);\r\n }\r\n // 上传\r\n function uploadAsync(list) {\r\n if (indexRef.current < list.length) {\r\n let xhr = new XMLHttpRequest();\r\n xhr.onload = function() {\r\n if (xhr.status === 200) {\r\n setState({ currentIndex: indexRef.current + 1 });\r\n indexRef.current += 1;\r\n uploadAsync(list);\r\n }\r\n };\r\n xhr.onerror = function() {\r\n message.error('上传失败');\r\n };\r\n // 发送请求\r\n xhr.open('POST', '/cloudFile/common/uploadChunk', true);\r\n xhr.send(list[indexRef.current]);\r\n } else {\r\n mergeFile();\r\n }\r\n }\r\n // 合并分片\r\n function mergeFile() {\r\n let xhr = new XMLHttpRequest();\r\n // 当上传完成时调用\r\n xhr.onload = function() {\r\n if (xhr.status === 200) {\r\n let res = JSON.parse(xhr.responseText);\r\n if (res?.result == 0) {\r\n message.success('上传成功');\r\n chunkUpload(res.data);\r\n } else {\r\n message.error(res?.msg || '上传失败');\r\n }\r\n }\r\n };\r\n xhr.onerror = function() {\r\n message.error('上传失败');\r\n };\r\n // 发送请求\r\n xhr.open('POST', '/cloudFile/common/mergeChunk', true);\r\n let data = new FormData();\r\n data.append('chunkId', state.chunkId);\r\n data.append('tenantId', getVtxToken('tenantId'));\r\n data.append('chunkSize', state.chunks.length);\r\n data.append('fileName', fileList[0].name);\r\n xhr.send(data);\r\n }\r\n // 合并切片后上传\r\n function chunkUpload(data) {\r\n const postUrl = getPostURL();\r\n const fmd = new FormData();\r\n fmd.append('fileId', data[0].id);\r\n const request = new XMLHttpRequest();\r\n request.open('POST', postUrl);\r\n const signature = getSignature(postData);\r\n for (let key in signature) {\r\n request.setRequestHeader(key, signature[key]);\r\n }\r\n request.setRequestHeader('Authorization', token ? `Bearer ${token}` : '');\r\n request.setRequestHeader('access_token', token ? `${token}` : '');\r\n request.onreadystatechange = e => {\r\n if (e.target.readyState == 4) {\r\n dealResult(e.target.response);\r\n }\r\n };\r\n request.send(fmd);\r\n }\r\n function upload(files) {\r\n const postUrl = getPostURL();\r\n const fmd = new FormData();\r\n fmd.append(fileKey, files);\r\n const request = new XMLHttpRequest();\r\n request.open('POST', postUrl);\r\n const signature = getSignature(postData);\r\n for (let key in signature) {\r\n request.setRequestHeader(key, signature[key]);\r\n }\r\n request.setRequestHeader('Authorization', token ? `Bearer ${token}` : '');\r\n request.setRequestHeader('access_token', token ? `${token}` : '');\r\n request.onreadystatechange = e => {\r\n if (e.target.readyState == 4) {\r\n dealResult(e.target.response);\r\n }\r\n };\r\n request.send(fmd);\r\n }\r\n // 切片文件\r\n function spreadFile(file) {\r\n const chunks = [];\r\n let start = 0;\r\n let end;\r\n while (start < file.size) {\r\n end = Math.min(start + state.chunkSize, file.size);\r\n chunks.push(file.slice(start, end));\r\n start = end;\r\n }\r\n return chunks;\r\n }\r\n\r\n // 获取上传地址(拼接参数)\r\n const getPostURL = () => {\r\n const postUrl = uploadURL;\r\n const postArray = [];\r\n for (const k in postData) {\r\n if (postData[k] !== undefined && postData[k] !== null && postData[k] !== '') {\r\n postArray.push(`${k}=${encodeURIComponent(postData[k])}`);\r\n }\r\n }\r\n return postArray.length > 0 ? `${postUrl}?${postArray.join('&')}` : postUrl;\r\n };\r\n\r\n const dealResult = response => {\r\n setUploading(false);\r\n const parseData = JSON.parse(response);\r\n setStatus(1);\r\n if (typeof props.afterUpload === 'function') {\r\n afterUpload(parseData);\r\n }\r\n if (parseData.result === 0) {\r\n setResult(true);\r\n setCountdown(5);\r\n setInterval(1000);\r\n setCount(parseData.data);\r\n } else if (parseData.result === 1) {\r\n setResult(false);\r\n setFileList([]);\r\n if (parseData.data) {\r\n setErrorFile(parseData.data);\r\n } else {\r\n message.error(parseData?.msg || TextEnum.resultNetworkErrorText);\r\n }\r\n }\r\n };\r\n\r\n const onUpload = ({ files = fileList }) => {\r\n if (typeof props.beforeUpload === 'function') {\r\n let flag = beforeUpload(files[0]);\r\n if(!flag){\r\n setFileList([]);\r\n return;\r\n }\r\n }\r\n if (files.length === 0) {\r\n return message.info(TextEnum.msgUploadWarningText);\r\n }\r\n setUploading(true);\r\n // 上传文件\r\n checkFile(files[0]);\r\n };\r\n\r\n const againUpload = () => {\r\n setInterval(undefined);\r\n setFileList([]);\r\n fileInputRef.current && fileInputRef.current.click();\r\n };\r\n\r\n const onFileChange = () => {\r\n const fileList = [...fileInputRef.current.files];\r\n setFileList(fileList);\r\n onUpload({ files: fileList });\r\n };\r\n\r\n useEffect(() => {\r\n if (state.chunkId) {\r\n startUpload();\r\n }\r\n }, [state.chunkId]);\r\n\r\n const modelProps = {\r\n visible,\r\n width: 392,\r\n maskClosable: false,\r\n footer: [\r\n <Button key=\"closeWindow\" onClick={close}>\r\n {`${TextEnum.btnCloseText}${status === 1 && result ? '(' + countdown + ')' : ''}`}\r\n </Button>,\r\n (status === 0 || (status === 1 && !result)) && (\r\n <Button\r\n key=\"uploadSubmit\"\r\n type=\"primary\"\r\n loading={uploading}\r\n onClick={status === 0 ? onUpload : againUpload}\r\n >\r\n {status === 0\r\n ? TextEnum.btnUploadText\r\n : result\r\n ? `${TextEnum.btnImportText}(${countdown})`\r\n : TextEnum.btnReUploadText}\r\n </Button>\r\n ),\r\n ],\r\n onCancel: close,\r\n title: (\r\n <div className=\"vtx-import2-modal-header-title\">\r\n <span className=\"vtx-import2-modal-header-text\">{title}</span>\r\n <span className=\"vtx-import2-modal-header-subtitle\">\r\n {TextEnum.headSubTitleText}\r\n </span>\r\n </div>\r\n ),\r\n };\r\n return (\r\n <Modal {...modelProps}>\r\n {status === 0 ? (\r\n <Content\r\n fileList={fileList}\r\n setFileList={setFileList}\r\n accept={accept}\r\n fileKey={fileKey}\r\n templateURL={templateURL}\r\n customText={customText}\r\n TextEnum={TextEnum}\r\n />\r\n ) : (\r\n <ImportResult\r\n result={result}\r\n count={count}\r\n errorFile={errorFile}\r\n errorURL={errorURL}\r\n token={token}\r\n errorDownloadName={newErrorDownloadName}\r\n TextEnum={TextEnum}\r\n />\r\n )}\r\n <input\r\n type=\"file\"\r\n name={fileKey}\r\n accept={accept}\r\n ref={fileInputRef}\r\n style={{ display: 'none' }}\r\n onChange={onFileChange}\r\n value={fileList.length === 0 ? '' : fileList[0].fileName}\r\n />\r\n </Modal>\r\n );\r\n};\r\n\r\nVtxImport2.defaultProps = {\r\n fileKey: 'file',\r\n accept:\r\n 'application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,text/csv',\r\n postData: {},\r\n};\r\n\r\nVtxImport2.propTypes = {\r\n visible: PropTypes.bool,\r\n templateURL: PropTypes.string,\r\n uploadURL: PropTypes.string,\r\n title: PropTypes.string,\r\n postData: PropTypes.object,\r\n fileKey: PropTypes.string,\r\n accept: PropTypes.string,\r\n close: PropTypes.func,\r\n errorURL: PropTypes.string,\r\n errorDownloadName: PropTypes.string,\r\n afterUpload: PropTypes.func,\r\n token: PropTypes.string,\r\n customText: PropTypes.string,\r\n customEnumText: PropTypes.object,\r\n beforeUpload: PropTypes.func,\r\n chunkSize: PropTypes.number,\r\n};\r\n\r\nexport default VtxImport2;\r\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,SAASA,WAAT,GAAgC;EAAA,IAAXC,IAAW,uEAAJ,EAAI;EAC5B,IAAMC,KAAK,GAAGD,IAAI,CAACE,WAAL,CAAiB,GAAjB,CAAd;EACA,IAAMC,MAAM,GAAGH,IAAI,CAACI,SAAL,CAAeH,KAAf,CAAf;EACA,OAAOD,IAAI,CAACI,SAAL,CAAe,CAAf,EAAkBH,KAAlB,IAA2B,QAA3B,GAAsCE,MAA7C;AACH;;AAED,IAAME,UAAU,GAAG,SAAbA,UAAa,CAAAC,KAAK,EAAI;EACxB,IACIC,OADJ,GAeID,KAfJ,CACIC,OADJ;EAAA,IAEIC,KAFJ,GAeIF,KAfJ,CAEIE,KAFJ;EAAA,IAGIC,KAHJ,GAeIH,KAfJ,CAGIG,KAHJ;EAAA,IAIIC,MAJJ,GAeIJ,KAfJ,CAIII,MAJJ;EAAA,IAKIC,OALJ,GAeIL,KAfJ,CAKIK,OALJ;EAAA,IAMIC,SANJ,GAeIN,KAfJ,CAMIM,SANJ;EAAA,IAOIC,QAPJ,GAeIP,KAfJ,CAOIO,QAPJ;EAAA,IAQIC,QARJ,GAeIR,KAfJ,CAQIQ,QARJ;EAAA,IASIC,WATJ,GAeIT,KAfJ,CASIS,WATJ;EAAA,IAUIC,WAVJ,GAeIV,KAfJ,CAUIU,WAVJ;EAAA,IAWIC,iBAXJ,GAeIX,KAfJ,CAWIW,iBAXJ;EAAA,IAYIC,UAZJ,GAeIZ,KAfJ,CAYIY,UAZJ;EAAA,4BAeIZ,KAfJ,CAaIa,cAbJ;EAAA,IAaIA,cAbJ,sCAaqB,EAbrB;EAAA,IAcIC,YAdJ,GAeId,KAfJ,CAcIc,YAdJ;;EAgBA,IAAMC,QAAQ;IACVC,gBAAgB,EAAE,IADR;IAGVC,YAAY,EAAE,IAHJ;IAIVC,aAAa,EAAE,IAJL;IAKVC,eAAe,EAAE,MALP;IAMVC,aAAa,EAAE,IANL;IAQVC,oBAAoB,EAAE,YARZ;IAUVC,sBAAsB,EAAE,aAVd;IAWVC,wBAAwB,EAAE,mBAXhB;IAYVC,sBAAsB,EAAE,QAZd;IAcVC,iBAAiB,EAAE,MAdT;IAeVC,cAAc,EAAE,MAfN;IAgBVC,wBAAwB,EAAE,eAhBhB;IAiBVC,mBAAmB,EAAE,MAjBX;IAkBVC,kBAAkB,EAAE,KAlBV;IAmBVC,sBAAsB,EAAE;EAnBd,GAqBPjB,cArBO,CAAd;;EAuBA,gBAA4B,IAAAkB,eAAA,EAAS,CAAT,CAA5B;EAAA;EAAA,IAAOC,MAAP;EAAA,IAAeC,SAAf,iBAxCwB,CAwCiB;;;EACzC,iBAA4B,IAAAF,eAAA,EAAS,KAAT,CAA5B;EAAA;EAAA,IAAOG,MAAP;EAAA,IAAeC,SAAf;;EACA,iBAAkC,IAAAJ,eAAA,EAAS,CAAT,CAAlC;EAAA;EAAA,IAAOK,SAAP;EAAA,IAAkBC,YAAlB;;EACA,iBAAgC,IAAAN,eAAA,EAAS,EAAT,CAAhC;EAAA;EAAA,IAAOO,QAAP;EAAA,IAAiBC,WAAjB;;EACA,iBAAgC,IAAAR,eAAA,EAASS,SAAT,CAAhC;EAAA;EAAA,IAAOC,QAAP;EAAA,IAAiBC,WAAjB;;EACA,kBAAkC,IAAAX,eAAA,EAAS,EAAT,CAAlC;EAAA;EAAA,IAAOY,SAAP;EAAA,IAAkBC,YAAlB;;EACA,kBAAkC,IAAAb,eAAA,EAAS,KAAT,CAAlC;EAAA;EAAA,IAAOc,SAAP;EAAA,IAAkBC,YAAlB;;EACA,kBAA0B,IAAAf,eAAA,EAAS,CAAT,CAA1B;EAAA;EAAA,IAAOgB,KAAP;EAAA,IAAcC,QAAd;;EACA,IAAMC,YAAY,GAAG,IAAAC,aAAA,GAArB;EACA,IAAMC,QAAQ,GAAG,IAAAD,aAAA,EAAO,EAAP,CAAjB;EACA,IAAME,QAAQ,GAAG,IAAAF,aAAA,EAAO,CAAP,CAAjB;;EAEA,cAA0B,IAAAG,mBAAA,EAAO;IAC7BC,IAAI,EAAE,CADuB;IAE7BC,SAAS,EAAEvD,KAAK,CAACuD,SAAN,IAAmB,KAAK,IAAL,GAAY,IAFb;IAG7BC,UAAU,EAAE,CAHiB;IAI7BC,YAAY,EAAE,CAJe;IAK7BC,OAAO,EAAE,EALoB;IAM7BC,MAAM,EAAE;EANqB,CAAP,CAA1B;EAAA;EAAA,IAAOC,KAAP;EAAA,IAAcC,QAAd;;EASA,IAAIC,KAAK,GAAG,IAAAC,oBAAA,GAAZ;;EACA,IAAI,CAACD,KAAL,EAAY;IACRA,KAAK,GAAG9D,KAAK,CAAC8D,KAAd;EACH;;EACD,IAAIE,oBAAoB,GAAGrD,iBAA3B;;EACA,IAAI,CAACA,iBAAL,EAAwB;IACpBqD,oBAAoB,GAAGb,QAAQ,CAACc,OAAhC;EACH;;EACD,IAAAC,mBAAA,EAAY,YAAM;IACd,IAAI9B,SAAS,KAAK,CAAlB,EAAqB;MACjB,OAAOlC,KAAK,EAAZ;IACH;;IACDmC,YAAY,CAACD,SAAS,GAAG,CAAb,CAAZ;EACH,CALD,EAKGK,QALH;EAOA,IAAA0B,gBAAA,EAAU,YAAM;IACZ,IAAI7B,QAAQ,CAAC8B,MAAT,KAAoB,CAAxB,EAA2B;MACvBjB,QAAQ,CAACc,OAAT,GAAmBxE,WAAW,CAAC6C,QAAQ,CAAC,CAAD,CAAR,CAAY5C,IAAb,CAA9B;IACH;EACJ,CAJD,EAIG,CAAC4C,QAAD,CAJH,EA5EwB,CAkFxB;;EACA,SAAS+B,SAAT,CAAmBC,IAAnB,EAAyB;IACrB,IAAIA,IAAI,CAACC,IAAL,IAAaX,KAAK,CAACL,SAAvB,EAAkC;MAC9BiB,MAAM,CAACF,IAAD,CAAN;IACH,CAFD,MAEO;MACHT,QAAQ,CAAC;QAAEY,IAAI,EAAE;MAAR,CAAD,CAAR;MACA,IAAId,MAAM,GAAGe,UAAU,CAACJ,IAAD,CAAvB;MACAT,QAAQ,CAAC;QACLF,MAAM,EAANA,MADK;QAELD,OAAO,EAAE,IAAAiB,cAAA,YAAO,IAAIC,IAAJ,GAAWC,OAAX,EAAP,SAA8BC,IAAI,CAACC,MAAL,EAA9B,EAFJ;QAGLvB,UAAU,EAAEG,MAAM,CAACS,MAHd;QAILd,IAAI,EAAE;MAJD,CAAD,CAAR;IAMH;EACJ,CAhGuB,CAiGxB;;;EACA,SAAS0B,WAAT,GAAuB;IACnB,IAAIC,OAAO,GAAG,EAAd;IACArB,KAAK,CAACD,MAAN,CAAauB,OAAb,CAAqB,UAACC,CAAD,EAAIC,CAAJ,EAAU;MAC3B;MACA,IAAIC,IAAI,GAAG,IAAIC,QAAJ,EAAX,CAF2B,CAG3B;;MACAD,IAAI,CAACE,MAAL,CAAY,WAAZ,EAAyB3B,KAAK,CAACD,MAAN,CAAaS,MAAtC;MACAiB,IAAI,CAACE,MAAL,CAAY,SAAZ,EAAuBH,CAAC,GAAG,CAA3B;MACAC,IAAI,CAACE,MAAL,CAAY,SAAZ,EAAuB3B,KAAK,CAACF,OAA7B;MACA2B,IAAI,CAACE,MAAL,CAAY,UAAZ,EAAwB,IAAAC,kBAAA,EAAY,UAAZ,CAAxB;MACAH,IAAI,CAACE,MAAL,CAAY,MAAZ,EAAoB,IAAIE,IAAJ,CAAS,CAACN,CAAD,CAAT,EAAc7C,QAAQ,CAAC,CAAD,CAAR,CAAY5C,IAA1B,CAApB;MACAuF,OAAO,CAACS,IAAR,CAAaL,IAAb;IACH,CAVD;IAWAM,WAAW,CAACV,OAAD,CAAX;EACH,CAhHuB,CAiHxB;;;EACA,SAASU,WAAT,CAAqBC,IAArB,EAA2B;IACvB,IAAIxC,QAAQ,CAACa,OAAT,GAAmB2B,IAAI,CAACxB,MAA5B,EAAoC;MAChC,IAAIyB,GAAG,GAAG,IAAIC,cAAJ,EAAV;;MACAD,GAAG,CAACE,MAAJ,GAAa,YAAW;QACpB,IAAIF,GAAG,CAAC7D,MAAJ,KAAe,GAAnB,EAAwB;UACpB6B,QAAQ,CAAC;YAAEJ,YAAY,EAAEL,QAAQ,CAACa,OAAT,GAAmB;UAAnC,CAAD,CAAR;UACAb,QAAQ,CAACa,OAAT,IAAoB,CAApB;UACA0B,WAAW,CAACC,IAAD,CAAX;QACH;MACJ,CAND;;MAOAC,GAAG,CAACG,OAAJ,GAAc,YAAW;QACrBC,aAAA,CAAQC,KAAR,CAAc,MAAd;MACH,CAFD,CATgC,CAYhC;;;MACAL,GAAG,CAACM,IAAJ,CAAS,MAAT,EAAiB,+BAAjB,EAAkD,IAAlD;MACAN,GAAG,CAACO,IAAJ,CAASR,IAAI,CAACxC,QAAQ,CAACa,OAAV,CAAb;IACH,CAfD,MAeO;MACHoC,SAAS;IACZ;EACJ,CArIuB,CAsIxB;;;EACA,SAASA,SAAT,GAAqB;IACjB,IAAIR,GAAG,GAAG,IAAIC,cAAJ,EAAV,CADiB,CAEjB;;IACAD,GAAG,CAACE,MAAJ,GAAa,YAAW;MACpB,IAAIF,GAAG,CAAC7D,MAAJ,KAAe,GAAnB,EAAwB;QACpB,IAAIsE,GAAG,GAAGC,IAAI,CAACC,KAAL,CAAWX,GAAG,CAACY,YAAf,CAAV;;QACA,IAAI,CAAAH,GAAG,SAAH,IAAAA,GAAG,WAAH,YAAAA,GAAG,CAAEpE,MAAL,KAAe,CAAnB,EAAsB;UAClB+D,aAAA,CAAQS,OAAR,CAAgB,MAAhB;;UACAC,WAAW,CAACL,GAAG,CAACjB,IAAL,CAAX;QACH,CAHD,MAGO;UACHY,aAAA,CAAQC,KAAR,CAAc,CAAAI,GAAG,SAAH,IAAAA,GAAG,WAAH,YAAAA,GAAG,CAAEM,GAAL,KAAY,MAA1B;QACH;MACJ;IACJ,CAVD;;IAWAf,GAAG,CAACG,OAAJ,GAAc,YAAW;MACrBC,aAAA,CAAQC,KAAR,CAAc,MAAd;IACH,CAFD,CAdiB,CAiBjB;;;IACAL,GAAG,CAACM,IAAJ,CAAS,MAAT,EAAiB,8BAAjB,EAAiD,IAAjD;IACA,IAAId,IAAI,GAAG,IAAIC,QAAJ,EAAX;IACAD,IAAI,CAACE,MAAL,CAAY,SAAZ,EAAuB3B,KAAK,CAACF,OAA7B;IACA2B,IAAI,CAACE,MAAL,CAAY,UAAZ,EAAwB,IAAAC,kBAAA,EAAY,UAAZ,CAAxB;IACAH,IAAI,CAACE,MAAL,CAAY,WAAZ,EAAyB3B,KAAK,CAACD,MAAN,CAAaS,MAAtC;IACAiB,IAAI,CAACE,MAAL,CAAY,UAAZ,EAAwBjD,QAAQ,CAAC,CAAD,CAAR,CAAY5C,IAApC;IACAmG,GAAG,CAACO,IAAJ,CAASf,IAAT;EACH,CAhKuB,CAiKxB;;;EACA,SAASsB,WAAT,CAAqBtB,IAArB,EAA2B;IACvB,IAAMwB,OAAO,GAAGC,UAAU,EAA1B;IACA,IAAMC,GAAG,GAAG,IAAIzB,QAAJ,EAAZ;IACAyB,GAAG,CAACxB,MAAJ,CAAW,QAAX,EAAqBF,IAAI,CAAC,CAAD,CAAJ,CAAQ2B,EAA7B;IACA,IAAMC,OAAO,GAAG,IAAInB,cAAJ,EAAhB;IACAmB,OAAO,CAACd,IAAR,CAAa,MAAb,EAAqBU,OAArB;IACA,IAAMK,SAAS,GAAG,IAAAC,wBAAA,EAAa5G,QAAb,CAAlB;;IACA,KAAK,IAAI6G,GAAT,IAAgBF,SAAhB,EAA2B;MACvBD,OAAO,CAACI,gBAAR,CAAyBD,GAAzB,EAA8BF,SAAS,CAACE,GAAD,CAAvC;IACH;;IACDH,OAAO,CAACI,gBAAR,CAAyB,eAAzB,EAA0CvD,KAAK,oBAAaA,KAAb,IAAuB,EAAtE;IACAmD,OAAO,CAACI,gBAAR,CAAyB,cAAzB,EAAyCvD,KAAK,aAAMA,KAAN,IAAgB,EAA9D;;IACAmD,OAAO,CAACK,kBAAR,GAA6B,UAAAnC,CAAC,EAAI;MAC9B,IAAIA,CAAC,CAACoC,MAAF,CAASC,UAAT,IAAuB,CAA3B,EAA8B;QAC1BC,UAAU,CAACtC,CAAC,CAACoC,MAAF,CAASG,QAAV,CAAV;MACH;IACJ,CAJD;;IAKAT,OAAO,CAACb,IAAR,CAAaW,GAAb;EACH;;EACD,SAASvC,MAAT,CAAgBmD,KAAhB,EAAuB;IACnB,IAAMd,OAAO,GAAGC,UAAU,EAA1B;IACA,IAAMC,GAAG,GAAG,IAAIzB,QAAJ,EAAZ;IACAyB,GAAG,CAACxB,MAAJ,CAAWlF,OAAX,EAAoBsH,KAApB;IACA,IAAMV,OAAO,GAAG,IAAInB,cAAJ,EAAhB;IACAmB,OAAO,CAACd,IAAR,CAAa,MAAb,EAAqBU,OAArB;IACA,IAAMK,SAAS,GAAG,IAAAC,wBAAA,EAAa5G,QAAb,CAAlB;;IACA,KAAK,IAAI6G,GAAT,IAAgBF,SAAhB,EAA2B;MACvBD,OAAO,CAACI,gBAAR,CAAyBD,GAAzB,EAA8BF,SAAS,CAACE,GAAD,CAAvC;IACH;;IACDH,OAAO,CAACI,gBAAR,CAAyB,eAAzB,EAA0CvD,KAAK,oBAAaA,KAAb,IAAuB,EAAtE;IACAmD,OAAO,CAACI,gBAAR,CAAyB,cAAzB,EAAyCvD,KAAK,aAAMA,KAAN,IAAgB,EAA9D;;IACAmD,OAAO,CAACK,kBAAR,GAA6B,UAAAnC,CAAC,EAAI;MAC9B,IAAIA,CAAC,CAACoC,MAAF,CAASC,UAAT,IAAuB,CAA3B,EAA8B;QAC1BC,UAAU,CAACtC,CAAC,CAACoC,MAAF,CAASG,QAAV,CAAV;MACH;IACJ,CAJD;;IAKAT,OAAO,CAACb,IAAR,CAAaW,GAAb;EACH,CAvMuB,CAwMxB;;;EACA,SAASrC,UAAT,CAAoBJ,IAApB,EAA0B;IACtB,IAAMX,MAAM,GAAG,EAAf;IACA,IAAIiE,KAAK,GAAG,CAAZ;IACA,IAAIC,GAAJ;;IACA,OAAOD,KAAK,GAAGtD,IAAI,CAACC,IAApB,EAA0B;MACtBsD,GAAG,GAAG/C,IAAI,CAACgD,GAAL,CAASF,KAAK,GAAGhE,KAAK,CAACL,SAAvB,EAAkCe,IAAI,CAACC,IAAvC,CAAN;MACAZ,MAAM,CAAC+B,IAAP,CAAYpB,IAAI,CAACyD,KAAL,CAAWH,KAAX,EAAkBC,GAAlB,CAAZ;MACAD,KAAK,GAAGC,GAAR;IACH;;IACD,OAAOlE,MAAP;EACH,CAnNuB,CAqNxB;;;EACA,IAAMmD,UAAU,GAAG,SAAbA,UAAa,GAAM;IACrB,IAAMD,OAAO,GAAGvG,SAAhB;IACA,IAAM0H,SAAS,GAAG,EAAlB;;IACA,KAAK,IAAMC,CAAX,IAAgB1H,QAAhB,EAA0B;MACtB,IAAIA,QAAQ,CAAC0H,CAAD,CAAR,KAAgBzF,SAAhB,IAA6BjC,QAAQ,CAAC0H,CAAD,CAAR,KAAgB,IAA7C,IAAqD1H,QAAQ,CAAC0H,CAAD,CAAR,KAAgB,EAAzE,EAA6E;QACzED,SAAS,CAACtC,IAAV,WAAkBuC,CAAlB,cAAuBC,kBAAkB,CAAC3H,QAAQ,CAAC0H,CAAD,CAAT,CAAzC;MACH;IACJ;;IACD,OAAOD,SAAS,CAAC5D,MAAV,GAAmB,CAAnB,aAA0ByC,OAA1B,cAAqCmB,SAAS,CAACG,IAAV,CAAe,GAAf,CAArC,IAA6DtB,OAApE;EACH,CATD;;EAWA,IAAMY,UAAU,GAAG,SAAbA,UAAa,CAAAC,QAAQ,EAAI;IAC3B5E,YAAY,CAAC,KAAD,CAAZ;IACA,IAAMsF,SAAS,GAAG7B,IAAI,CAACC,KAAL,CAAWkB,QAAX,CAAlB;IACAzF,SAAS,CAAC,CAAD,CAAT;;IACA,IAAI,OAAOjC,KAAK,CAACU,WAAb,KAA6B,UAAjC,EAA6C;MACzCA,WAAW,CAAC0H,SAAD,CAAX;IACH;;IACD,IAAIA,SAAS,CAAClG,MAAV,KAAqB,CAAzB,EAA4B;MACxBC,SAAS,CAAC,IAAD,CAAT;MACAE,YAAY,CAAC,CAAD,CAAZ;MACAK,WAAW,CAAC,IAAD,CAAX;MACAM,QAAQ,CAACoF,SAAS,CAAC/C,IAAX,CAAR;IACH,CALD,MAKO,IAAI+C,SAAS,CAAClG,MAAV,KAAqB,CAAzB,EAA4B;MAC/BC,SAAS,CAAC,KAAD,CAAT;MACAI,WAAW,CAAC,EAAD,CAAX;;MACA,IAAI6F,SAAS,CAAC/C,IAAd,EAAoB;QAChBzC,YAAY,CAACwF,SAAS,CAAC/C,IAAX,CAAZ;MACH,CAFD,MAEO;QACHY,aAAA,CAAQC,KAAR,CAAc,CAAAkC,SAAS,SAAT,IAAAA,SAAS,WAAT,YAAAA,SAAS,CAAExB,GAAX,KAAkB7F,QAAQ,CAACe,sBAAzC;MACH;IACJ;EACJ,CArBD;;EAuBA,IAAMuG,QAAQ,GAAG,SAAXA,QAAW,OAA0B;IAAA,sBAAvBV,KAAuB;IAAA,IAAvBA,KAAuB,2BAAfrF,QAAe;;IACvC,IAAI,OAAOtC,KAAK,CAACc,YAAb,KAA8B,UAAlC,EAA8C;MAC1C,IAAIwH,IAAI,GAAGxH,YAAY,CAAC6G,KAAK,CAAC,CAAD,CAAN,CAAvB;;MACA,IAAG,CAACW,IAAJ,EAAS;QACL/F,WAAW,CAAC,EAAD,CAAX;QACA;MACH;IACJ;;IACD,IAAIoF,KAAK,CAACvD,MAAN,KAAiB,CAArB,EAAwB;MACpB,OAAO6B,aAAA,CAAQsC,IAAR,CAAaxH,QAAQ,CAACM,oBAAtB,CAAP;IACH;;IACDyB,YAAY,CAAC,IAAD,CAAZ,CAXuC,CAYvC;;IACAuB,SAAS,CAACsD,KAAK,CAAC,CAAD,CAAN,CAAT;EACH,CAdD;;EAgBA,IAAMa,WAAW,GAAG,SAAdA,WAAc,GAAM;IACtB9F,WAAW,CAACF,SAAD,CAAX;IACAD,WAAW,CAAC,EAAD,CAAX;IACAU,YAAY,CAACgB,OAAb,IAAwBhB,YAAY,CAACgB,OAAb,CAAqBwE,KAArB,EAAxB;EACH,CAJD;;EAMA,IAAMC,YAAY,GAAG,SAAfA,YAAe,GAAM;IACvB,IAAMpG,QAAQ,sBAAOW,YAAY,CAACgB,OAAb,CAAqB0D,KAA5B,CAAd;;IACApF,WAAW,CAACD,QAAD,CAAX;IACA+F,QAAQ,CAAC;MAAEV,KAAK,EAAErF;IAAT,CAAD,CAAR;EACH,CAJD;;EAMA,IAAA6B,gBAAA,EAAU,YAAM;IACZ,IAAIP,KAAK,CAACF,OAAV,EAAmB;MACfsB,WAAW;IACd;EACJ,CAJD,EAIG,CAACpB,KAAK,CAACF,OAAP,CAJH;EAMA,IAAMiF,UAAU,GAAG;IACf1I,OAAO,EAAPA,OADe;IAEf2I,KAAK,EAAE,GAFQ;IAGfC,YAAY,EAAE,KAHC;IAIfC,MAAM,EAAE,cACJ,gCAAC,YAAD;MAAQ,GAAG,EAAC,aAAZ;MAA0B,OAAO,EAAE5I;IAAnC,aACQa,QAAQ,CAACE,YADjB,SACgCe,MAAM,KAAK,CAAX,IAAgBE,MAAhB,GAAyB,MAAME,SAAN,GAAkB,GAA3C,GAAiD,EADjF,EADI,EAIJ,CAACJ,MAAM,KAAK,CAAX,IAAiBA,MAAM,KAAK,CAAX,IAAgB,CAACE,MAAnC,kBACI,gCAAC,YAAD;MACI,GAAG,EAAC,cADR;MAEI,IAAI,EAAC,SAFT;MAGI,OAAO,EAAEW,SAHb;MAII,OAAO,EAAEb,MAAM,KAAK,CAAX,GAAeqG,QAAf,GAA0BG;IAJvC,GAMKxG,MAAM,KAAK,CAAX,GACKjB,QAAQ,CAACG,aADd,GAEKgB,MAAM,aACHnB,QAAQ,CAACK,aADN,cACuBgB,SADvB,SAENrB,QAAQ,CAACI,eAVnB,CALA,CAJO;IAuBf4H,QAAQ,EAAE7I,KAvBK;IAwBfC,KAAK,eACD;MAAK,SAAS,EAAC;IAAf,gBACI;MAAM,SAAS,EAAC;IAAhB,GAAiDA,KAAjD,CADJ,eAEI;MAAM,SAAS,EAAC;IAAhB,GACKY,QAAQ,CAACC,gBADd,CAFJ;EAzBW,CAAnB;EAiCA,oBACI,gCAAC,WAAD,EAAW2H,UAAX,EACK3G,MAAM,KAAK,CAAX,gBACG,gCAAC,mBAAD;IACI,QAAQ,EAAEM,QADd;IAEI,WAAW,EAAEC,WAFjB;IAGI,MAAM,EAAEnC,MAHZ;IAII,OAAO,EAAEC,OAJb;IAKI,WAAW,EAAEI,WALjB;IAMI,UAAU,EAAEG,UANhB;IAOI,QAAQ,EAAEG;EAPd,EADH,gBAWG,gCAAC,wBAAD;IACI,MAAM,EAAEmB,MADZ;IAEI,KAAK,EAAEa,KAFX;IAGI,SAAS,EAAEJ,SAHf;IAII,QAAQ,EAAEnC,QAJd;IAKI,KAAK,EAAEsD,KALX;IAMI,iBAAiB,EAAEE,oBANvB;IAOI,QAAQ,EAAEjD;EAPd,EAZR,eAsBI;IACI,IAAI,EAAC,MADT;IAEI,IAAI,EAAEV,OAFV;IAGI,MAAM,EAAED,MAHZ;IAII,GAAG,EAAE6C,YAJT;IAKI,KAAK,EAAE;MAAE+F,OAAO,EAAE;IAAX,CALX;IAMI,QAAQ,EAAEN,YANd;IAOI,KAAK,EAAEpG,QAAQ,CAAC8B,MAAT,KAAoB,CAApB,GAAwB,EAAxB,GAA6B9B,QAAQ,CAAC,CAAD,CAAR,CAAYa;EAPpD,EAtBJ,CADJ;AAkCH,CA7VD;;AA+VApD,UAAU,CAACkJ,YAAX,GAA0B;EACtB5I,OAAO,EAAE,MADa;EAEtBD,MAAM,EACF,qGAHkB;EAItBG,QAAQ,EAAE;AAJY,CAA1B;AAOAR,UAAU,CAACmJ,SAAX,GAAuB;EACnBjJ,OAAO,EAAEkJ,qBAAA,CAAUC,IADA;EAEnB3I,WAAW,EAAE0I,qBAAA,CAAUE,MAFJ;EAGnB/I,SAAS,EAAE6I,qBAAA,CAAUE,MAHF;EAInBlJ,KAAK,EAAEgJ,qBAAA,CAAUE,MAJE;EAKnB9I,QAAQ,EAAE4I,qBAAA,CAAUG,MALD;EAMnBjJ,OAAO,EAAE8I,qBAAA,CAAUE,MANA;EAOnBjJ,MAAM,EAAE+I,qBAAA,CAAUE,MAPC;EAQnBnJ,KAAK,EAAEiJ,qBAAA,CAAUI,IARE;EASnB/I,QAAQ,EAAE2I,qBAAA,CAAUE,MATD;EAUnB1I,iBAAiB,EAAEwI,qBAAA,CAAUE,MAVV;EAWnB3I,WAAW,EAAEyI,qBAAA,CAAUI,IAXJ;EAYnBzF,KAAK,EAAEqF,qBAAA,CAAUE,MAZE;EAanBzI,UAAU,EAAEuI,qBAAA,CAAUE,MAbH;EAcnBxI,cAAc,EAAEsI,qBAAA,CAAUG,MAdP;EAenBxI,YAAY,EAAEqI,qBAAA,CAAUI,IAfL;EAgBnBhG,SAAS,EAAE4F,qBAAA,CAAUK;AAhBF,CAAvB;eAmBezJ,U"}
|
|
@@ -31,7 +31,8 @@ function Preview(props) {
|
|
|
31
31
|
url = props.url,
|
|
32
32
|
downloadUrl = props.downloadUrl,
|
|
33
33
|
visible = props.visible,
|
|
34
|
-
onCancel = props.onCancel
|
|
34
|
+
onCancel = props.onCancel,
|
|
35
|
+
customDownload = props.customDownload;
|
|
35
36
|
var player = null,
|
|
36
37
|
timer = null;
|
|
37
38
|
timer = setTimeout(function () {
|
|
@@ -64,7 +65,11 @@ function Preview(props) {
|
|
|
64
65
|
key: "download",
|
|
65
66
|
type: "primary",
|
|
66
67
|
onClick: function onClick() {
|
|
67
|
-
|
|
68
|
+
if (customDownload instanceof Function) {
|
|
69
|
+
customDownload(downloadUrl);
|
|
70
|
+
} else {
|
|
71
|
+
createForm(downloadUrl);
|
|
72
|
+
}
|
|
68
73
|
}
|
|
69
74
|
}, "\u4E0B\u8F7D")]
|
|
70
75
|
};
|
|
@@ -106,6 +111,7 @@ Preview.propTypes = {
|
|
|
106
111
|
url: _propTypes["default"].string,
|
|
107
112
|
visible: _propTypes["default"].bool,
|
|
108
113
|
onCancel: _propTypes["default"].func,
|
|
114
|
+
customDownload: _propTypes["default"].func,
|
|
109
115
|
downloadUrl: _propTypes["default"].string
|
|
110
116
|
};
|
|
111
117
|
var _default = Preview;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilePreview.js","names":["Preview","props","type","name","url","downloadUrl","visible","onCancel","player","timer","setTimeout","document","getElementById","Player","id","width","height","controlPlugins","volume","playbackRate","modalProps","title","cancel","footer","createForm","wrapClassName","destroy","clearTimeout","border","propTypes","PropTypes","string","bool","func","reqURL","formDom","createElement","method","action","style","body","appendChild","submit","remove"],"sources":["vtx-upload/FilePreview.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport Player from 'xgplayer/dist/simple_player';\nimport { volume, playbackRate } from 'xgplayer/dist/controls';\nimport Modal from 'antd/lib/modal';\nimport Button from 'antd/lib/button';\n\nfunction Preview(props) {\n const { type, name, url, downloadUrl, visible, onCancel } = props;\n\n let player = null,\n timer = null;\n timer = setTimeout(() => {\n if (type == 'video' && document.getElementById('vs')) {\n player = new Player({\n id: 'vs',\n url: url,\n width: 600,\n height: 337.5,\n controlPlugins: [\n volume, //音量\n playbackRate, //播放倍速\n ],\n playbackRate: [0.5, 0.75, 1, 1.5, 2], //传入倍速可选数组\n });\n }\n }, 500);\n\n let modalProps = {\n title: name,\n visible,\n onCancel: () => cancel(),\n footer: [\n <Button key=\"close\" onClick={() => cancel()}>\n 关闭\n </Button>,\n <Button key=\"download\" type=\"primary\" onClick={() => createForm(downloadUrl)}>\n 下载\n </Button>,\n ],\n };\n if (type == 'file') {\n modalProps = {\n ...modalProps,\n wrapClassName: 'vtx-modal-maxClass',\n };\n }\n if (type == 'video') {\n modalProps = {\n ...modalProps,\n width: 648,\n };\n }\n\n const cancel = () => {\n //销毁播放器\n player && player.destroy();\n timer && clearTimeout(timer);\n onCancel();\n };\n\n return (\n <Modal {...modalProps}>\n {type == 'file' ? (\n <iframe\n src={url}\n style={{ height: '100%', width: '100%', border: 'none' }}\n ></iframe>\n ) : null}\n {type == 'video' ? <div id=\"vs\"></div> : null}\n </Modal>\n );\n}\n\nPreview.propTypes = {\n type: PropTypes.string,\n name: PropTypes.string,\n url: PropTypes.string,\n visible: PropTypes.bool,\n onCancel: PropTypes.func,\n downloadUrl: PropTypes.string,\n};\n\nexport default Preview;\n\nconst createForm = function(reqURL) {\n const formDom = document.createElement('form'); // 定义一个form表单\n formDom.method = 'post';\n formDom.action = reqURL;\n formDom.style = 'display:none';\n document.body.appendChild(formDom); // 将表单放置在web中\n formDom.submit(); // 表单提交\n formDom.remove();\n};\n"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;AAEA,SAASA,OAAT,CAAiBC,KAAjB,EAAwB;EACpB,IAAQC,IAAR,
|
|
1
|
+
{"version":3,"file":"FilePreview.js","names":["Preview","props","type","name","url","downloadUrl","visible","onCancel","customDownload","player","timer","setTimeout","document","getElementById","Player","id","width","height","controlPlugins","volume","playbackRate","modalProps","title","cancel","footer","Function","createForm","wrapClassName","destroy","clearTimeout","border","propTypes","PropTypes","string","bool","func","reqURL","formDom","createElement","method","action","style","body","appendChild","submit","remove"],"sources":["vtx-upload/FilePreview.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport Player from 'xgplayer/dist/simple_player';\nimport { volume, playbackRate } from 'xgplayer/dist/controls';\nimport Modal from 'antd/lib/modal';\nimport Button from 'antd/lib/button';\n\nfunction Preview(props) {\n const { type, name, url, downloadUrl, visible, onCancel, customDownload } = props;\n\n let player = null,\n timer = null;\n timer = setTimeout(() => {\n if (type == 'video' && document.getElementById('vs')) {\n player = new Player({\n id: 'vs',\n url: url,\n width: 600,\n height: 337.5,\n controlPlugins: [\n volume, //音量\n playbackRate, //播放倍速\n ],\n playbackRate: [0.5, 0.75, 1, 1.5, 2], //传入倍速可选数组\n });\n }\n }, 500);\n\n let modalProps = {\n title: name,\n visible,\n onCancel: () => cancel(),\n footer: [\n <Button key=\"close\" onClick={() => cancel()}>\n 关闭\n </Button>,\n <Button key=\"download\" type=\"primary\" onClick={() => {\n if(customDownload instanceof Function){\n customDownload(downloadUrl);\n }else {\n createForm(downloadUrl)\n }\n }}>\n 下载\n </Button>,\n ],\n };\n if (type == 'file') {\n modalProps = {\n ...modalProps,\n wrapClassName: 'vtx-modal-maxClass',\n };\n }\n if (type == 'video') {\n modalProps = {\n ...modalProps,\n width: 648,\n };\n }\n\n const cancel = () => {\n //销毁播放器\n player && player.destroy();\n timer && clearTimeout(timer);\n onCancel();\n };\n\n return (\n <Modal {...modalProps}>\n {type == 'file' ? (\n <iframe\n src={url}\n style={{ height: '100%', width: '100%', border: 'none' }}\n ></iframe>\n ) : null}\n {type == 'video' ? <div id=\"vs\"></div> : null}\n </Modal>\n );\n}\n\nPreview.propTypes = {\n type: PropTypes.string,\n name: PropTypes.string,\n url: PropTypes.string,\n visible: PropTypes.bool,\n onCancel: PropTypes.func,\n customDownload: PropTypes.func,\n downloadUrl: PropTypes.string,\n};\n\nexport default Preview;\n\nconst createForm = function(reqURL) {\n const formDom = document.createElement('form'); // 定义一个form表单\n formDom.method = 'post';\n formDom.action = reqURL;\n formDom.style = 'display:none';\n document.body.appendChild(formDom); // 将表单放置在web中\n formDom.submit(); // 表单提交\n formDom.remove();\n};\n"],"mappings":"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"}
|
package/lib/vtx-upload/index.js
CHANGED
|
@@ -37,7 +37,7 @@ var _getToken = _interopRequireDefault(require("../_util/getToken"));
|
|
|
37
37
|
|
|
38
38
|
var _antdImgCrop = _interopRequireDefault(require("antd-img-crop"));
|
|
39
39
|
|
|
40
|
-
var _excluded = ["isDragger", "draggerConfig", "accept", "mode", "viewMode", "showUploadList", "customizedButton", "listType", "onSuccess", "onError", "onRemove", "maxFileSize", "beforeUpload", "maxNum", "flag", "crop"];
|
|
40
|
+
var _excluded = ["isDragger", "draggerConfig", "accept", "mode", "viewMode", "showUploadList", "customizedButton", "listType", "onSuccess", "onError", "onRemove", "maxFileSize", "beforeUpload", "maxNum", "flag", "crop", "customDownload"];
|
|
41
41
|
|
|
42
42
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
43
43
|
|
|
@@ -122,6 +122,7 @@ var VtxUpload = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
|
122
122
|
maxNum = props.maxNum,
|
|
123
123
|
flag = props.flag,
|
|
124
124
|
crop = props.crop,
|
|
125
|
+
customDownload = props.customDownload,
|
|
125
126
|
rest = _objectWithoutProperties(props, _excluded); // 是否使用缩略图
|
|
126
127
|
|
|
127
128
|
|
|
@@ -342,7 +343,8 @@ var VtxUpload = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
|
342
343
|
name: file.name || '视频预览',
|
|
343
344
|
url: downloadUrl + file.id,
|
|
344
345
|
downloadUrl: downloadUrl + file.id,
|
|
345
|
-
visible: true
|
|
346
|
+
visible: true,
|
|
347
|
+
customDownload: customDownload
|
|
346
348
|
});
|
|
347
349
|
} else {
|
|
348
350
|
(0, _downloadFile["default"])(downloadUrl + file.id, {
|
|
@@ -502,6 +504,7 @@ VtxUpload.propTypes = {
|
|
|
502
504
|
onError: _propTypes["default"].func,
|
|
503
505
|
onRemove: _propTypes["default"].func,
|
|
504
506
|
onPreview: _propTypes["default"].func,
|
|
507
|
+
customDownload: _propTypes["default"].func,
|
|
505
508
|
maxFileSize: _propTypes["default"].number,
|
|
506
509
|
beforeUpload: _propTypes["default"].func,
|
|
507
510
|
maxNum: _propTypes["default"].number,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["debouncedMessage","debounce","msg","message","error","initVPrev","type","name","url","downloadUrl","visible","initUrl","action","thumbnailUrl","rejectTypes","Dragger","Upload","VtxUpload","forwardRef","props","ref","isDragger","draggerConfig","accept","mode","viewMode","showUploadList","customizedButton","listType","onSuccess","onError","onRemove","maxFileSize","beforeUpload","maxNum","flag","crop","rest","useThumbnail","undefined","useState","fileList","setFileList","imageViewer","setImageViewer","imageList","setImageList","imageCt","setImageCt","useSetState","vPrev","setVPrev","joinToken","str","indexOf","replace","getToken","window","flsPrefix","useEffect","getSynFileList","Array","isArray","imagelist","map","file","push","Viewer","getConfig","token","config","headers","Authorization","onChange","info","response","result","errMsg","flt","pop","status","vtxId","data","length","id","newFileList","newFile","thumbUrl","filter","item","uid","afterFileList","limit","size","pointIndex","lastIndexOf","fileType","substring","includes","onDownload","downloadFile","fileName","onPreview","handlePreview","showRemoveIcon","showDownloadIcon","imageIndex","update","view","processedFileList","index","console","isSupportThumbnail","upload","fontSize","color","comp","img","maxWidth","maxHeight","marginTop","marginBottom","mainText","subText","display","ins","propTypes","PropTypes","bool","object","string","node","previewUrl","func","number","array"],"sources":["vtx-upload/index.jsx"],"sourcesContent":["import React, { useState, useEffect, forwardRef } from 'react';\r\nimport useSetState from 'ahooks/es/useSetState';\r\nimport PropTypes from 'prop-types';\r\nimport Viewer from 'viewerjs';\r\nimport Upload from 'antd/lib/upload';\r\nimport Button from 'antd/lib/button';\r\nimport InboxOutlined from '@ant-design/icons/InboxOutlined';\r\nimport PlusOutlined from '@ant-design/icons/PlusOutlined';\r\nimport UploadOutlined from '@ant-design/icons/UploadOutlined';\r\nimport message from 'antd/lib/message';\r\nimport downloadFile from '@vtx/utils/lib/downloadFile';\r\nimport debounce from 'lodash.debounce';\r\nimport Prev from './FilePreview';\r\nimport getToken from '../_util/getToken';\r\nimport ImgCrop from 'antd-img-crop';\r\n\r\nconst debouncedMessage = debounce(msg => {\r\n message.error(msg);\r\n}, 500);\r\n\r\n//文件预览\r\nconst initVPrev = {\r\n type: '', //video or file\r\n name: '',\r\n url: '',\r\n downloadUrl: '',\r\n visible: false,\r\n};\r\n\r\nconst initUrl = {\r\n action: '/cloudFile/common/uploadFile',\r\n downloadUrl: '/cloudFile/common/downloadFile?id=',\r\n thumbnailUrl:\r\n '/vortex/rest/cloud/np/file/downloadFileThumbnail?outputQuality=0.5&scale=0.2&id=',\r\n //previewUrl: '/onlinePreview',\r\n};\r\n//禁止上传的文件类型\r\nconst rejectTypes = ['.asp', '.aspx', '.jsp', '.exe', '.cgi', '.asa', '.cer', '.cdx', '.hta'];\r\n\r\nconst Dragger = Upload.Dragger;\r\nconst VtxUpload = forwardRef((props, ref) => {\r\n const {\r\n isDragger = false, //是否拖拽模式\r\n draggerConfig = {}, //拖动配置\r\n accept, //接受上传的文件类型\r\n mode = 'multiple', //单文件模式or多文件模式\r\n viewMode, //是否查看模式(隐藏上传按钮)\r\n showUploadList, //是否展示文件列表\r\n customizedButton, //自定义上传文字描述\r\n listType = 'text', //上传列表的样式\r\n onSuccess, //上传成功\r\n onError, //上传失败\r\n onRemove, //删除\r\n maxFileSize = 5 * 1024 * 1024, //文件大小限制,默认最大5M\r\n beforeUpload, //上传前回调\r\n maxNum, //最多上传的文件数量\r\n flag, //同步数据标记\r\n crop, //是否打开裁剪\r\n ...rest\r\n } = props;\r\n // 是否使用缩略图\r\n const useThumbnail =\r\n (props.useThumbnail === undefined ? true : props.useThumbnail) &&\r\n (listType == 'picture' || listType == 'picture-card');\r\n\r\n const [fileList, setFileList] = useState([]); //初始化文件列表\r\n const [imageViewer, setImageViewer] = useState(null); //图片预览\r\n const [imageList, setImageList] = useState([]);\r\n const [imageCt, setImageCt] = useState(null);\r\n const [vPrev, setVPrev] = useSetState(initVPrev); //文件预览相关\r\n\r\n // 参数中拼接token\r\n function joinToken(str) {\r\n if (str.indexOf('token=') === -1 && str.indexOf('?') > -1) {\r\n return str.replace('?', `?token=${getToken() || ''}&`);\r\n } else if (str.indexOf('?') === -1) {\r\n return str + `?token=${getToken() || ''}`;\r\n }\r\n return str;\r\n }\r\n\r\n const url = {\r\n action: props.action || initUrl.action,\r\n downloadUrl: joinToken(props.downloadUrl || initUrl.downloadUrl),\r\n thumbnailUrl: joinToken(\r\n window?.flsPrefix\r\n ? `${window.flsPrefix}${initUrl.thumbnailUrl}`\r\n : `${props.thumbnailUrl || initUrl.thumbnailUrl}`,\r\n ),\r\n //previewUrl: props.previewUrl || initUrl.previewUrl,\r\n };\r\n const { action, downloadUrl, thumbnailUrl } = url;\r\n\r\n useEffect(() => {\r\n setFileList(getSynFileList(props) || []);\r\n }, [flag]);\r\n\r\n useEffect(() => {\r\n if (Array.isArray(fileList)) {\r\n // 只有图片的才可以预览,这边需要判断是否是图片\r\n const imagelist = [];\r\n // 只能通过后缀来判断\r\n fileList.map(file => {\r\n if (file.type?.indexOf('image') > -1) {\r\n imagelist.push(file);\r\n }\r\n });\r\n setImageList(imagelist);\r\n }\r\n }, [fileList]);\r\n\r\n useEffect(() => {\r\n if (imageCt) {\r\n setImageViewer(new Viewer(imageCt, {}));\r\n }\r\n }, [imageCt]);\r\n\r\n const getConfig = () => {\r\n let token = getToken() || '';\r\n let config = {\r\n ...rest,\r\n accept,\r\n action,\r\n fileList: fileList,\r\n listType,\r\n showUploadList,\r\n headers: {\r\n Authorization: token ? `Bearer ${token}` : '',\r\n ...rest.headers,\r\n },\r\n onChange(info) {\r\n setFileList(info.fileList);\r\n if (info.file.response && info.file.response.result === 1) {\r\n message.error(info.file.response.errMsg || '上传失败!');\r\n let flt = [...fileList];\r\n flt.pop();\r\n setFileList(flt);\r\n return;\r\n }\r\n // 此处根据后台返回的数据结构取得文件ID\r\n if (info.file.status !== 'uploading' && info.file.status !== 'removed') {\r\n let vtxId =\r\n info.file.response &&\r\n Array.isArray(info.file.response.data) &&\r\n info.file.response.data.length > 0\r\n ? info.file.response.data[0].id\r\n : undefined;\r\n let newFileList = info.fileList;\r\n let newFile = vtxId\r\n ? {\r\n ...info.file,\r\n id: vtxId,\r\n url: downloadUrl + vtxId,\r\n thumbUrl: useThumbnail ? thumbnailUrl + vtxId : undefined,\r\n }\r\n : {\r\n ...info.file,\r\n };\r\n newFileList = info.fileList\r\n .filter(item => {\r\n // 有vtxId代表上传成功,有item.id代表之前上传成功的\r\n if (vtxId || item.id) return true;\r\n return false;\r\n })\r\n .map(item => {\r\n if (item.uid == info.file.uid) {\r\n return {\r\n ...item,\r\n id: vtxId,\r\n url: downloadUrl + vtxId,\r\n thumbUrl: useThumbnail ? thumbnailUrl + vtxId : undefined,\r\n };\r\n }\r\n return item;\r\n });\r\n\r\n if (mode == 'single') {\r\n setFileList([newFile]);\r\n } else {\r\n setFileList(newFileList);\r\n }\r\n // 更新组件状态\r\n // if (mode == 'single' && info.file.status === 'done') {\r\n // setFileList([newFile]);\r\n // } else {\r\n // setFileList(newFileList);\r\n // }\r\n\r\n // 触发外部方法\r\n if (info.file.status === 'done') {\r\n if (typeof onSuccess == 'function') {\r\n onSuccess(newFile);\r\n }\r\n } else if (info.file.status === 'error') {\r\n if (typeof onError == 'function') {\r\n onError(info.file);\r\n }\r\n }\r\n }\r\n },\r\n onRemove(file) {\r\n if (typeof onRemove == 'function') {\r\n return onRemove(file);\r\n }\r\n },\r\n beforeUpload(file, afterFileList) {\r\n //限制文件大小\r\n if (maxFileSize && typeof maxFileSize === 'number') {\r\n const limit = file.size < maxFileSize;\r\n if (!limit) {\r\n message.error(`请上传${maxFileSize / 1024 / 1024}M以内的文件`);\r\n return false;\r\n }\r\n }\r\n //限制不允许上传的文件类型(通过文件名后缀)\r\n let pointIndex = file.name ? file.name.lastIndexOf('.') : -1;\r\n if (pointIndex > -1) {\r\n let fileType = file.name.substring(pointIndex);\r\n if (rejectTypes.includes(fileType)) {\r\n message.error('不支持该文件类型');\r\n return false;\r\n }\r\n }\r\n // 多选限制文件数量\r\n if (typeof maxNum === 'number' && afterFileList.length + fileList.length > maxNum) {\r\n // 减少提示错误次数, 思路,防抖 这边有个问题 就是防抖的这个方法 return fasle 不上传\r\n debouncedMessage(`最多上传${maxNum}个`);\r\n return false;\r\n }\r\n\r\n if (typeof beforeUpload === 'function') {\r\n return beforeUpload(file, afterFileList);\r\n }\r\n return true;\r\n },\r\n onDownload: file=>{\r\n downloadFile(\r\n file.url,\r\n { fileName: file.name },\r\n 'blob',\r\n );\r\n }\r\n };\r\n\r\n if (props.onPreview && typeof props.onPreview === 'function') {\r\n config.onPreview = props.onPreview;\r\n } else {\r\n config.onPreview = file => {\r\n if (!file.type) {\r\n downloadFile(downloadUrl + file.id, { fileName: file.name }, 'blob');\r\n } else if (file.type?.indexOf('image') > -1) {\r\n handlePreview(file);\r\n } else if (file.type?.indexOf('video') > -1) {\r\n // 视频\r\n setVPrev({\r\n type: 'video',\r\n name: file.name || '视频预览',\r\n url: downloadUrl + file.id,\r\n downloadUrl: downloadUrl + file.id,\r\n visible: true,\r\n });\r\n } else {\r\n downloadFile(downloadUrl + file.id, { fileName: file.name }, 'blob');\r\n }\r\n\r\n // TODO 暂无好的文件预览服务,等后续完善,只提供下载\r\n // else if (\r\n // file.type == 'application/PDF' ||\r\n // file.type == 'application/vnd.ms-excel' ||\r\n // file.type ==\r\n // 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' ||\r\n // file.type == 'application/msword' ||\r\n // file.type ==\r\n // 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'\r\n // ) {\r\n // let url = '';\r\n // if (props.previewUrl) {\r\n // url = `${props.previewUrl}?id=${file.id}&fileName=${file.name}`;\r\n // } else {\r\n // url = `http://183.215.89.162:8012/onlinePreview?url=http://183.136.177.108:8003/cloudFile/common/downloadFile${encodeURIComponent(\r\n // '?id=' + file.id + '&fullfilename=' + file.name.replace(/\\s*/g, ''),\r\n // )}`;\r\n // }\r\n\r\n // setVPrev({\r\n // type: 'file',\r\n // name: file.name || '文件预览',\r\n // url: url,\r\n // downloadUrl: downloadUrl + file.id,\r\n // visible: true,\r\n // });\r\n // }\r\n };\r\n }\r\n\r\n // viewMode\r\n if (viewMode) {\r\n config.showUploadList = { showRemoveIcon: false, showDownloadIcon: true };\r\n }\r\n\r\n return config;\r\n };\r\n\r\n const handlePreview = file => {\r\n const imageIndex = imageList.map(item => item.id).indexOf(file.id);\r\n if (imageIndex == -1) return;\r\n imageViewer.update();\r\n imageViewer.view(imageIndex);\r\n };\r\n\r\n const getSynFileList = props => {\r\n let processedFileList = props.fileList || [];\r\n // 单文件模式只取第一个\r\n if (props.mode == 'single' && processedFileList.length > 1) {\r\n processedFileList = [processedFileList[0]];\r\n }\r\n processedFileList = processedFileList.map((item, index) => {\r\n // 将外部传入的简易文件数组处理成为组件需要的数组结构\r\n if (item.name === undefined || item.id === undefined) {\r\n // eslint-disable-next-line no-console\r\n console.error('文件列表的name和id属性不能为空');\r\n }\r\n let url = item.url || downloadUrl + item.id,\r\n thumbUrl = useThumbnail ? item.thumbUrl || thumbnailUrl + item.id : undefined;\r\n if(!isSupportThumbnail(item.type)){\r\n thumbUrl = url;\r\n }\r\n return {\r\n ...item,\r\n uid: -1 - index,\r\n status: 'done',\r\n url,\r\n thumbUrl,\r\n };\r\n });\r\n return processedFileList;\r\n };\r\n\r\n const upload = (\r\n <Upload {...getConfig()} ref={ref}>\r\n {viewMode || fileList.length >= maxNum\r\n ? null\r\n : customizedButton ||\r\n (listType == 'picture-card' ? (\r\n <div>\r\n <PlusOutlined style={{ fontSize: '28px', color: '#999' }} />\r\n <div className=\"ant-upload-text\">上传</div>\r\n </div>\r\n ) : (\r\n <Button>\r\n <UploadOutlined />\r\n 上传\r\n </Button>\r\n ))}\r\n </Upload>\r\n )\r\n const comp = (listType == 'picture-card'&&!!crop)?\r\n <ImgCrop rotationSlider>\r\n {upload}\r\n </ImgCrop>\r\n :upload;\r\n \r\n return (\r\n <>\r\n {isDragger ? (\r\n <Dragger {...getConfig()} ref={ref}>\r\n {draggerConfig?.img ? (\r\n <img\r\n src={draggerConfig.img}\r\n alt=\"\"\r\n style={{\r\n maxWidth: 100,\r\n maxHeight: 100,\r\n marginTop: '3%',\r\n marginBottom: '5%',\r\n }}\r\n />\r\n ) : (\r\n <p className=\"ant-upload-drag-icon\">\r\n <InboxOutlined />\r\n </p>\r\n )}\r\n <p className=\"ant-upload-text\">{draggerConfig?.mainText || '点击或拖拽上传'}</p>\r\n <p className=\"ant-upload-hint\">\r\n {draggerConfig?.subText || '支持上传word,excel,png...'}\r\n </p>\r\n </Dragger>\r\n ) : (\r\n comp\r\n )}\r\n <div style={{ display: 'none' }}>\r\n <ul\r\n ref={ins => {\r\n if (ins) setImageCt(ins);\r\n }}\r\n >\r\n {imageList\r\n .filter(item => item.type && item.type?.indexOf('image') > -1)\r\n .map((item, index) => (\r\n <li key={item.uid}>\r\n <img\r\n src={item.url || downloadUrl + item.id}\r\n alt={item.name || `picture-${index + 1}`}\r\n />\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n {/* 视频预览 */}\r\n <Prev onCancel={() => setVPrev(initVPrev)} {...vPrev} />\r\n </>\r\n );\r\n});\r\n\r\nVtxUpload.propTypes = {\r\n isDragger: PropTypes.bool,\r\n draggerConfig: PropTypes.object,\r\n accept: PropTypes.string,\r\n mode: PropTypes.string,\r\n viewMode: PropTypes.bool,\r\n showUploadList: PropTypes.bool | PropTypes.object,\r\n customizedButton: PropTypes.node,\r\n listType: PropTypes.string,\r\n action: PropTypes.string,\r\n downloadUrl: PropTypes.string,\r\n thumbnailUrl: PropTypes.string,\r\n previewUrl: PropTypes.string,\r\n onSuccess: PropTypes.func,\r\n onError: PropTypes.func,\r\n onRemove: PropTypes.func,\r\n onPreview: PropTypes.func,\r\n maxFileSize: PropTypes.number,\r\n beforeUpload: PropTypes.func,\r\n maxNum: PropTypes.number,\r\n fileList: PropTypes.array,\r\n flag: PropTypes.number,\r\n useThumbnail: PropTypes.bool,\r\n crop: PropTypes.bool,\r\n};\r\nexport default VtxUpload;\r\n\r\nfunction isSupportThumbnail(type){\r\n if(['image/webp'].includes(type)){\r\n return false;\r\n }\r\n return true;\r\n}"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,IAAMA,gBAAgB,GAAG,IAAAC,kBAAA,EAAS,UAAAC,GAAG,EAAI;EACrCC,mBAAA,CAAQC,KAAR,CAAcF,GAAd;AACH,CAFwB,EAEtB,GAFsB,CAAzB,C,CAIA;;AACA,IAAMG,SAAS,GAAG;EACdC,IAAI,EAAE,EADQ;EACJ;EACVC,IAAI,EAAE,EAFQ;EAGdC,GAAG,EAAE,EAHS;EAIdC,WAAW,EAAE,EAJC;EAKdC,OAAO,EAAE;AALK,CAAlB;AAQA,IAAMC,OAAO,GAAG;EACZC,MAAM,EAAE,8BADI;EAEZH,WAAW,EAAE,oCAFD;EAGZI,YAAY,EACR,kFAJQ,CAKZ;;AALY,CAAhB,C,CAOA;;AACA,IAAMC,WAAW,GAAG,CAAC,MAAD,EAAS,OAAT,EAAkB,MAAlB,EAA0B,MAA1B,EAAkC,MAAlC,EAA0C,MAA1C,EAAkD,MAAlD,EAA0D,MAA1D,EAAkE,MAAlE,CAApB;AAEA,IAAMC,OAAO,GAAGC,kBAAA,CAAOD,OAAvB;AACA,IAAME,SAAS,gBAAG,IAAAC,iBAAA,EAAW,UAACC,KAAD,EAAQC,GAAR,EAAgB;EAAA;;EACzC,uBAkBID,KAlBJ,CACIE,SADJ;EAAA,IACIA,SADJ,iCACgB,KADhB;EAAA,2BAkBIF,KAlBJ,CAEIG,aAFJ;EAAA,IAEIA,aAFJ,qCAEoB,EAFpB;EAAA,IAGIC,MAHJ,GAkBIJ,KAlBJ,CAGII,MAHJ;EAAA,kBAkBIJ,KAlBJ,CAIIK,IAJJ;EAAA,IAIIA,IAJJ,4BAIW,UAJX;EAAA,IAKIC,QALJ,GAkBIN,KAlBJ,CAKIM,QALJ;EAAA,IAMIC,cANJ,GAkBIP,KAlBJ,CAMIO,cANJ;EAAA,IAOIC,gBAPJ,GAkBIR,KAlBJ,CAOIQ,gBAPJ;EAAA,sBAkBIR,KAlBJ,CAQIS,QARJ;EAAA,IAQIA,QARJ,gCAQe,MARf;EAAA,IASIC,SATJ,GAkBIV,KAlBJ,CASIU,SATJ;EAAA,IAUIC,OAVJ,GAkBIX,KAlBJ,CAUIW,OAVJ;EAAA,IAWIC,SAXJ,GAkBIZ,KAlBJ,CAWIY,QAXJ;EAAA,yBAkBIZ,KAlBJ,CAYIa,WAZJ;EAAA,IAYIA,WAZJ,mCAYkB,IAAI,IAAJ,GAAW,IAZ7B;EAAA,IAaIC,aAbJ,GAkBId,KAlBJ,CAaIc,YAbJ;EAAA,IAcIC,MAdJ,GAkBIf,KAlBJ,CAcIe,MAdJ;EAAA,IAeIC,IAfJ,GAkBIhB,KAlBJ,CAeIgB,IAfJ;EAAA,IAgBIC,IAhBJ,GAkBIjB,KAlBJ,CAgBIiB,IAhBJ;EAAA,IAiBOC,IAjBP,4BAkBIlB,KAlBJ,aADyC,CAoBzC;;;EACA,IAAMmB,YAAY,GACd,CAACnB,KAAK,CAACmB,YAAN,KAAuBC,SAAvB,GAAmC,IAAnC,GAA0CpB,KAAK,CAACmB,YAAjD,MACCV,QAAQ,IAAI,SAAZ,IAAyBA,QAAQ,IAAI,cADtC,CADJ;;EAIA,gBAAgC,IAAAY,eAAA,EAAS,EAAT,CAAhC;EAAA;EAAA,IAAOC,QAAP;EAAA,IAAiBC,WAAjB,iBAzByC,CAyBK;;;EAC9C,iBAAsC,IAAAF,eAAA,EAAS,IAAT,CAAtC;EAAA;EAAA,IAAOG,WAAP;EAAA,IAAoBC,cAApB,iBA1ByC,CA0Ba;;;EACtD,iBAAkC,IAAAJ,eAAA,EAAS,EAAT,CAAlC;EAAA;EAAA,IAAOK,SAAP;EAAA,IAAkBC,YAAlB;;EACA,iBAA8B,IAAAN,eAAA,EAAS,IAAT,CAA9B;EAAA;EAAA,IAAOO,OAAP;EAAA,IAAgBC,UAAhB;;EACA,mBAA0B,IAAAC,wBAAA,EAAY5C,SAAZ,CAA1B;EAAA;EAAA,IAAO6C,KAAP;EAAA,IAAcC,QAAd,oBA7ByC,CA6BS;EAElD;;;EACA,SAASC,SAAT,CAAmBC,GAAnB,EAAwB;IACpB,IAAIA,GAAG,CAACC,OAAJ,CAAY,QAAZ,MAA0B,CAAC,CAA3B,IAAgCD,GAAG,CAACC,OAAJ,CAAY,GAAZ,IAAmB,CAAC,CAAxD,EAA2D;MACvD,OAAOD,GAAG,CAACE,OAAJ,CAAY,GAAZ,mBAA2B,IAAAC,oBAAA,OAAc,EAAzC,OAAP;IACH,CAFD,MAEO,IAAIH,GAAG,CAACC,OAAJ,CAAY,GAAZ,MAAqB,CAAC,CAA1B,EAA6B;MAChC,OAAOD,GAAG,oBAAa,IAAAG,oBAAA,OAAc,EAA3B,CAAV;IACH;;IACD,OAAOH,GAAP;EACH;;EAED,IAAM7C,GAAG,GAAG;IACRI,MAAM,EAAEO,KAAK,CAACP,MAAN,IAAgBD,OAAO,CAACC,MADxB;IAERH,WAAW,EAAE2C,SAAS,CAACjC,KAAK,CAACV,WAAN,IAAqBE,OAAO,CAACF,WAA9B,CAFd;IAGRI,YAAY,EAAEuC,SAAS,CACnB,WAAAK,MAAM,UAAN,kCAAQC,SAAR,aACSD,MAAM,CAACC,SADhB,SAC4B/C,OAAO,CAACE,YADpC,cAESM,KAAK,CAACN,YAAN,IAAsBF,OAAO,CAACE,YAFvC,CADmB,CAHf,CAQR;;EARQ,CAAZ;EAUA,IAAQD,MAAR,GAA8CJ,GAA9C,CAAQI,MAAR;EAAA,IAAgBH,WAAhB,GAA8CD,GAA9C,CAAgBC,WAAhB;EAAA,IAA6BI,YAA7B,GAA8CL,GAA9C,CAA6BK,YAA7B;EAEA,IAAA8C,gBAAA,EAAU,YAAM;IACZjB,WAAW,CAACkB,cAAc,CAACzC,KAAD,CAAd,IAAyB,EAA1B,CAAX;EACH,CAFD,EAEG,CAACgB,IAAD,CAFH;EAIA,IAAAwB,gBAAA,EAAU,YAAM;IACZ,IAAIE,KAAK,CAACC,OAAN,CAAcrB,QAAd,CAAJ,EAA6B;MACzB;MACA,IAAMsB,SAAS,GAAG,EAAlB,CAFyB,CAGzB;;MACAtB,QAAQ,CAACuB,GAAT,CAAa,UAAAC,IAAI,EAAI;QAAA;;QACjB,IAAI,eAAAA,IAAI,CAAC3D,IAAL,0DAAWgD,OAAX,CAAmB,OAAnB,KAA8B,CAAC,CAAnC,EAAsC;UAClCS,SAAS,CAACG,IAAV,CAAeD,IAAf;QACH;MACJ,CAJD;MAKAnB,YAAY,CAACiB,SAAD,CAAZ;IACH;EACJ,CAZD,EAYG,CAACtB,QAAD,CAZH;EAcA,IAAAkB,gBAAA,EAAU,YAAM;IACZ,IAAIZ,OAAJ,EAAa;MACTH,cAAc,CAAC,IAAIuB,oBAAJ,CAAWpB,OAAX,EAAoB,EAApB,CAAD,CAAd;IACH;EACJ,CAJD,EAIG,CAACA,OAAD,CAJH;;EAMA,IAAMqB,SAAS,GAAG,SAAZA,SAAY,GAAM;IACpB,IAAIC,KAAK,GAAG,IAAAb,oBAAA,OAAc,EAA1B;;IACA,IAAIc,MAAM,mCACHjC,IADG;MAENd,MAAM,EAANA,MAFM;MAGNX,MAAM,EAANA,MAHM;MAIN6B,QAAQ,EAAEA,QAJJ;MAKNb,QAAQ,EAARA,QALM;MAMNF,cAAc,EAAdA,cANM;MAON6C,OAAO;QACHC,aAAa,EAAEH,KAAK,oBAAaA,KAAb,IAAuB;MADxC,GAEAhC,IAAI,CAACkC,OAFL,CAPD;MAWNE,QAXM,oBAWGC,IAXH,EAWS;QACXhC,WAAW,CAACgC,IAAI,CAACjC,QAAN,CAAX;;QACA,IAAIiC,IAAI,CAACT,IAAL,CAAUU,QAAV,IAAsBD,IAAI,CAACT,IAAL,CAAUU,QAAV,CAAmBC,MAAnB,KAA8B,CAAxD,EAA2D;UACvDzE,mBAAA,CAAQC,KAAR,CAAcsE,IAAI,CAACT,IAAL,CAAUU,QAAV,CAAmBE,MAAnB,IAA6B,OAA3C;;UACA,IAAIC,GAAG,sBAAOrC,QAAP,CAAP;;UACAqC,GAAG,CAACC,GAAJ;UACArC,WAAW,CAACoC,GAAD,CAAX;UACA;QACH,CARU,CASX;;;QACA,IAAIJ,IAAI,CAACT,IAAL,CAAUe,MAAV,KAAqB,WAArB,IAAoCN,IAAI,CAACT,IAAL,CAAUe,MAAV,KAAqB,SAA7D,EAAwE;UACpE,IAAIC,KAAK,GACLP,IAAI,CAACT,IAAL,CAAUU,QAAV,IACAd,KAAK,CAACC,OAAN,CAAcY,IAAI,CAACT,IAAL,CAAUU,QAAV,CAAmBO,IAAjC,CADA,IAEAR,IAAI,CAACT,IAAL,CAAUU,QAAV,CAAmBO,IAAnB,CAAwBC,MAAxB,GAAiC,CAFjC,GAGMT,IAAI,CAACT,IAAL,CAAUU,QAAV,CAAmBO,IAAnB,CAAwB,CAAxB,EAA2BE,EAHjC,GAIM7C,SALV;UAMA,IAAI8C,WAAW,GAAGX,IAAI,CAACjC,QAAvB;UACA,IAAI6C,OAAO,GAAGL,KAAK,mCAENP,IAAI,CAACT,IAFC;YAGTmB,EAAE,EAAEH,KAHK;YAITzE,GAAG,EAAEC,WAAW,GAAGwE,KAJV;YAKTM,QAAQ,EAAEjD,YAAY,GAAGzB,YAAY,GAAGoE,KAAlB,GAA0B1C;UALvC,uBAQNmC,IAAI,CAACT,IARC,CAAnB;UAUAoB,WAAW,GAAGX,IAAI,CAACjC,QAAL,CACT+C,MADS,CACF,UAAAC,IAAI,EAAI;YACZ;YACA,IAAIR,KAAK,IAAIQ,IAAI,CAACL,EAAlB,EAAsB,OAAO,IAAP;YACtB,OAAO,KAAP;UACH,CALS,EAMTpB,GANS,CAML,UAAAyB,IAAI,EAAI;YACT,IAAIA,IAAI,CAACC,GAAL,IAAYhB,IAAI,CAACT,IAAL,CAAUyB,GAA1B,EAA+B;cAC3B,uCACOD,IADP;gBAEIL,EAAE,EAAEH,KAFR;gBAGIzE,GAAG,EAAEC,WAAW,GAAGwE,KAHvB;gBAIIM,QAAQ,EAAEjD,YAAY,GAAGzB,YAAY,GAAGoE,KAAlB,GAA0B1C;cAJpD;YAMH;;YACD,OAAOkD,IAAP;UACH,CAhBS,CAAd;;UAkBA,IAAIjE,IAAI,IAAI,QAAZ,EAAsB;YAClBkB,WAAW,CAAC,CAAC4C,OAAD,CAAD,CAAX;UACH,CAFD,MAEO;YACH5C,WAAW,CAAC2C,WAAD,CAAX;UACH,CAxCmE,CAyCpE;UACA;UACA;UACA;UACA;UACA;UAEA;;;UACA,IAAIX,IAAI,CAACT,IAAL,CAAUe,MAAV,KAAqB,MAAzB,EAAiC;YAC7B,IAAI,OAAOnD,SAAP,IAAoB,UAAxB,EAAoC;cAChCA,SAAS,CAACyD,OAAD,CAAT;YACH;UACJ,CAJD,MAIO,IAAIZ,IAAI,CAACT,IAAL,CAAUe,MAAV,KAAqB,OAAzB,EAAkC;YACrC,IAAI,OAAOlD,OAAP,IAAkB,UAAtB,EAAkC;cAC9BA,OAAO,CAAC4C,IAAI,CAACT,IAAN,CAAP;YACH;UACJ;QACJ;MACJ,CAhFK;MAiFNlC,QAjFM,oBAiFGkC,IAjFH,EAiFS;QACX,IAAI,OAAOlC,SAAP,IAAmB,UAAvB,EAAmC;UAC/B,OAAOA,SAAQ,CAACkC,IAAD,CAAf;QACH;MACJ,CArFK;MAsFNhC,YAtFM,wBAsFOgC,IAtFP,EAsFa0B,aAtFb,EAsF4B;QAC9B;QACA,IAAI3D,WAAW,IAAI,OAAOA,WAAP,KAAuB,QAA1C,EAAoD;UAChD,IAAM4D,KAAK,GAAG3B,IAAI,CAAC4B,IAAL,GAAY7D,WAA1B;;UACA,IAAI,CAAC4D,KAAL,EAAY;YACRzF,mBAAA,CAAQC,KAAR,6BAAoB4B,WAAW,GAAG,IAAd,GAAqB,IAAzC;;YACA,OAAO,KAAP;UACH;QACJ,CAR6B,CAS9B;;;QACA,IAAI8D,UAAU,GAAG7B,IAAI,CAAC1D,IAAL,GAAY0D,IAAI,CAAC1D,IAAL,CAAUwF,WAAV,CAAsB,GAAtB,CAAZ,GAAyC,CAAC,CAA3D;;QACA,IAAID,UAAU,GAAG,CAAC,CAAlB,EAAqB;UACjB,IAAIE,QAAQ,GAAG/B,IAAI,CAAC1D,IAAL,CAAU0F,SAAV,CAAoBH,UAApB,CAAf;;UACA,IAAIhF,WAAW,CAACoF,QAAZ,CAAqBF,QAArB,CAAJ,EAAoC;YAChC7F,mBAAA,CAAQC,KAAR,CAAc,UAAd;;YACA,OAAO,KAAP;UACH;QACJ,CAjB6B,CAkB9B;;;QACA,IAAI,OAAO8B,MAAP,KAAkB,QAAlB,IAA8ByD,aAAa,CAACR,MAAd,GAAuB1C,QAAQ,CAAC0C,MAAhC,GAAyCjD,MAA3E,EAAmF;UAC/E;UACAlC,gBAAgB,mCAAQkC,MAAR,YAAhB;UACA,OAAO,KAAP;QACH;;QAED,IAAI,OAAOD,aAAP,KAAwB,UAA5B,EAAwC;UACpC,OAAOA,aAAY,CAACgC,IAAD,EAAO0B,aAAP,CAAnB;QACH;;QACD,OAAO,IAAP;MACH,CAnHK;MAoHNQ,UAAU,EAAE,oBAAAlC,IAAI,EAAE;QACd,IAAAmC,wBAAA,EACInC,IAAI,CAACzD,GADT,EAEI;UAAE6F,QAAQ,EAAEpC,IAAI,CAAC1D;QAAjB,CAFJ,EAGI,MAHJ;MAKH;IA1HK,EAAV;;IA6HA,IAAIY,KAAK,CAACmF,SAAN,IAAmB,OAAOnF,KAAK,CAACmF,SAAb,KAA2B,UAAlD,EAA8D;MAC1DhC,MAAM,CAACgC,SAAP,GAAmBnF,KAAK,CAACmF,SAAzB;IACH,CAFD,MAEO;MACHhC,MAAM,CAACgC,SAAP,GAAmB,UAAArC,IAAI,EAAI;QAAA;;QACvB,IAAI,CAACA,IAAI,CAAC3D,IAAV,EAAgB;UACZ,IAAA8F,wBAAA,EAAa3F,WAAW,GAAGwD,IAAI,CAACmB,EAAhC,EAAoC;YAAEiB,QAAQ,EAAEpC,IAAI,CAAC1D;UAAjB,CAApC,EAA6D,MAA7D;QACH,CAFD,MAEO,IAAI,gBAAA0D,IAAI,CAAC3D,IAAL,4DAAWgD,OAAX,CAAmB,OAAnB,KAA8B,CAAC,CAAnC,EAAsC;UACzCiD,aAAa,CAACtC,IAAD,CAAb;QACH,CAFM,MAEA,IAAI,gBAAAA,IAAI,CAAC3D,IAAL,4DAAWgD,OAAX,CAAmB,OAAnB,KAA8B,CAAC,CAAnC,EAAsC;UACzC;UACAH,QAAQ,CAAC;YACL7C,IAAI,EAAE,OADD;YAELC,IAAI,EAAE0D,IAAI,CAAC1D,IAAL,IAAa,MAFd;YAGLC,GAAG,EAAEC,WAAW,GAAGwD,IAAI,CAACmB,EAHnB;YAIL3E,WAAW,EAAEA,WAAW,GAAGwD,IAAI,CAACmB,EAJ3B;YAKL1E,OAAO,EAAE;UALJ,CAAD,CAAR;QAOH,CATM,MASA;UACH,IAAA0F,wBAAA,EAAa3F,WAAW,GAAGwD,IAAI,CAACmB,EAAhC,EAAoC;YAAEiB,QAAQ,EAAEpC,IAAI,CAAC1D;UAAjB,CAApC,EAA6D,MAA7D;QACH,CAhBsB,CAkBvB;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;MACH,CA7CD;IA8CH,CAhLmB,CAkLpB;;;IACA,IAAIkB,QAAJ,EAAc;MACV6C,MAAM,CAAC5C,cAAP,GAAwB;QAAE8E,cAAc,EAAE,KAAlB;QAAyBC,gBAAgB,EAAE;MAA3C,CAAxB;IACH;;IAED,OAAOnC,MAAP;EACH,CAxLD;;EA0LA,IAAMiC,aAAa,GAAG,SAAhBA,aAAgB,CAAAtC,IAAI,EAAI;IAC1B,IAAMyC,UAAU,GAAG7D,SAAS,CAACmB,GAAV,CAAc,UAAAyB,IAAI;MAAA,OAAIA,IAAI,CAACL,EAAT;IAAA,CAAlB,EAA+B9B,OAA/B,CAAuCW,IAAI,CAACmB,EAA5C,CAAnB;IACA,IAAIsB,UAAU,IAAI,CAAC,CAAnB,EAAsB;IACtB/D,WAAW,CAACgE,MAAZ;IACAhE,WAAW,CAACiE,IAAZ,CAAiBF,UAAjB;EACH,CALD;;EAOA,IAAM9C,cAAc,GAAG,SAAjBA,cAAiB,CAAAzC,KAAK,EAAI;IAC5B,IAAI0F,iBAAiB,GAAG1F,KAAK,CAACsB,QAAN,IAAkB,EAA1C,CAD4B,CAE5B;;IACA,IAAItB,KAAK,CAACK,IAAN,IAAc,QAAd,IAA0BqF,iBAAiB,CAAC1B,MAAlB,GAA2B,CAAzD,EAA4D;MACxD0B,iBAAiB,GAAG,CAACA,iBAAiB,CAAC,CAAD,CAAlB,CAApB;IACH;;IACDA,iBAAiB,GAAGA,iBAAiB,CAAC7C,GAAlB,CAAsB,UAACyB,IAAD,EAAOqB,KAAP,EAAiB;MACvD;MACA,IAAIrB,IAAI,CAAClF,IAAL,KAAcgC,SAAd,IAA2BkD,IAAI,CAACL,EAAL,KAAY7C,SAA3C,EAAsD;QAClD;QACAwE,OAAO,CAAC3G,KAAR,CAAc,oBAAd;MACH;;MACD,IAAII,GAAG,GAAGiF,IAAI,CAACjF,GAAL,IAAYC,WAAW,GAAGgF,IAAI,CAACL,EAAzC;MAAA,IACIG,QAAQ,GAAGjD,YAAY,GAAGmD,IAAI,CAACF,QAAL,IAAiB1E,YAAY,GAAG4E,IAAI,CAACL,EAAxC,GAA6C7C,SADxE;;MAEA,IAAG,CAACyE,kBAAkB,CAACvB,IAAI,CAACnF,IAAN,CAAtB,EAAkC;QAC9BiF,QAAQ,GAAG/E,GAAX;MACH;;MACD,uCACOiF,IADP;QAEIC,GAAG,EAAE,CAAC,CAAD,GAAKoB,KAFd;QAGI9B,MAAM,EAAE,MAHZ;QAIIxE,GAAG,EAAHA,GAJJ;QAKI+E,QAAQ,EAARA;MALJ;IAOH,CAlBmB,CAApB;IAmBA,OAAOsB,iBAAP;EACH,CA1BD;;EA4BA,IAAMI,MAAM,gBACR,gCAAC,kBAAD,eAAY7C,SAAS,EAArB;IAAyB,GAAG,EAAEhD;EAA9B,IACKK,QAAQ,IAAIgB,QAAQ,CAAC0C,MAAT,IAAmBjD,MAA/B,GACK,IADL,GAEKP,gBAAgB,KACbC,QAAQ,IAAI,cAAZ,gBACG,0DACI,gCAAC,wBAAD;IAAc,KAAK,EAAE;MAAEsF,QAAQ,EAAE,MAAZ;MAAoBC,KAAK,EAAE;IAA3B;EAArB,EADJ,eAEI;IAAK,SAAS,EAAC;EAAf,kBAFJ,CADH,gBAMG,gCAAC,kBAAD,qBACI,gCAAC,0BAAD,OADJ,iBAPU,CAH1B,CADJ;;EAkBA,IAAMC,IAAI,GAAIxF,QAAQ,IAAI,cAAZ,IAA4B,CAAC,CAACQ,IAA/B,gBACT,gCAAC,uBAAD;IAAS,cAAc;EAAvB,GACK6E,MADL,CADS,GAIRA,MAJL;EAMA,oBACI,kEACK5F,SAAS,gBACN,gCAAC,OAAD,eAAa+C,SAAS,EAAtB;IAA0B,GAAG,EAAEhD;EAA/B,IACKE,aAAa,SAAb,IAAAA,aAAa,WAAb,IAAAA,aAAa,CAAE+F,GAAf,gBACG;IACI,GAAG,EAAE/F,aAAa,CAAC+F,GADvB;IAEI,GAAG,EAAC,EAFR;IAGI,KAAK,EAAE;MACHC,QAAQ,EAAE,GADP;MAEHC,SAAS,EAAE,GAFR;MAGHC,SAAS,EAAE,IAHR;MAIHC,YAAY,EAAE;IAJX;EAHX,EADH,gBAYG;IAAG,SAAS,EAAC;EAAb,gBACI,gCAAC,yBAAD,OADJ,CAbR,eAiBI;IAAG,SAAS,EAAC;EAAb,GAAgC,CAAAnG,aAAa,SAAb,IAAAA,aAAa,WAAb,YAAAA,aAAa,CAAEoG,QAAf,KAA2B,SAA3D,CAjBJ,eAkBI;IAAG,SAAS,EAAC;EAAb,GACK,CAAApG,aAAa,SAAb,IAAAA,aAAa,WAAb,YAAAA,aAAa,CAAEqG,OAAf,KAA0B,uBAD/B,CAlBJ,CADM,GAwBNP,IAzBR,eA2BI;IAAK,KAAK,EAAE;MAAEQ,OAAO,EAAE;IAAX;EAAZ,gBACI;IACI,GAAG,EAAE,aAAAC,GAAG,EAAI;MACR,IAAIA,GAAJ,EAAS7E,UAAU,CAAC6E,GAAD,CAAV;IACZ;EAHL,GAKKhF,SAAS,CACL2C,MADJ,CACW,UAAAC,IAAI;IAAA;;IAAA,OAAIA,IAAI,CAACnF,IAAL,IAAa,eAAAmF,IAAI,CAACnF,IAAL,0DAAWgD,OAAX,CAAmB,OAAnB,KAA8B,CAAC,CAAhD;EAAA,CADf,EAEIU,GAFJ,CAEQ,UAACyB,IAAD,EAAOqB,KAAP;IAAA,oBACD;MAAI,GAAG,EAAErB,IAAI,CAACC;IAAd,gBACI;MACI,GAAG,EAAED,IAAI,CAACjF,GAAL,IAAYC,WAAW,GAAGgF,IAAI,CAACL,EADxC;MAEI,GAAG,EAAEK,IAAI,CAAClF,IAAL,sBAAwBuG,KAAK,GAAG,CAAhC;IAFT,EADJ,CADC;EAAA,CAFR,CALL,CADJ,CA3BJ,eA8CI,gCAAC,uBAAD;IAAM,QAAQ,EAAE;MAAA,OAAM3D,QAAQ,CAAC9C,SAAD,CAAd;IAAA;EAAhB,GAA+C6C,KAA/C,EA9CJ,CADJ;AAkDH,CApXiB,CAAlB;AAsXAjC,SAAS,CAAC6G,SAAV,GAAsB;EAClBzG,SAAS,EAAE0G,qBAAA,CAAUC,IADH;EAElB1G,aAAa,EAAEyG,qBAAA,CAAUE,MAFP;EAGlB1G,MAAM,EAAEwG,qBAAA,CAAUG,MAHA;EAIlB1G,IAAI,EAAEuG,qBAAA,CAAUG,MAJE;EAKlBzG,QAAQ,EAAEsG,qBAAA,CAAUC,IALF;EAMlBtG,cAAc,EAAEqG,qBAAA,CAAUC,IAAV,GAAiBD,qBAAA,CAAUE,MANzB;EAOlBtG,gBAAgB,EAAEoG,qBAAA,CAAUI,IAPV;EAQlBvG,QAAQ,EAAEmG,qBAAA,CAAUG,MARF;EASlBtH,MAAM,EAAEmH,qBAAA,CAAUG,MATA;EAUlBzH,WAAW,EAAEsH,qBAAA,CAAUG,MAVL;EAWlBrH,YAAY,EAAEkH,qBAAA,CAAUG,MAXN;EAYlBE,UAAU,EAAEL,qBAAA,CAAUG,MAZJ;EAalBrG,SAAS,EAAEkG,qBAAA,CAAUM,IAbH;EAclBvG,OAAO,EAAEiG,qBAAA,CAAUM,IAdD;EAelBtG,QAAQ,EAAEgG,qBAAA,CAAUM,IAfF;EAgBlB/B,SAAS,EAAEyB,qBAAA,CAAUM,IAhBH;EAiBlBrG,WAAW,EAAE+F,qBAAA,CAAUO,MAjBL;EAkBlBrG,YAAY,EAAE8F,qBAAA,CAAUM,IAlBN;EAmBlBnG,MAAM,EAAE6F,qBAAA,CAAUO,MAnBA;EAoBlB7F,QAAQ,EAAEsF,qBAAA,CAAUQ,KApBF;EAqBlBpG,IAAI,EAAE4F,qBAAA,CAAUO,MArBE;EAsBlBhG,YAAY,EAAEyF,qBAAA,CAAUC,IAtBN;EAuBlB5F,IAAI,EAAE2F,qBAAA,CAAUC;AAvBE,CAAtB;eAyBe/G,S;;;AAEf,SAAS+F,kBAAT,CAA4B1G,IAA5B,EAAiC;EAC7B,IAAG,CAAC,YAAD,EAAe4F,QAAf,CAAwB5F,IAAxB,CAAH,EAAiC;IAC7B,OAAO,KAAP;EACH;;EACD,OAAO,IAAP;AACH"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["debouncedMessage","debounce","msg","message","error","initVPrev","type","name","url","downloadUrl","visible","initUrl","action","thumbnailUrl","rejectTypes","Dragger","Upload","VtxUpload","forwardRef","props","ref","isDragger","draggerConfig","accept","mode","viewMode","showUploadList","customizedButton","listType","onSuccess","onError","onRemove","maxFileSize","beforeUpload","maxNum","flag","crop","customDownload","rest","useThumbnail","undefined","useState","fileList","setFileList","imageViewer","setImageViewer","imageList","setImageList","imageCt","setImageCt","useSetState","vPrev","setVPrev","joinToken","str","indexOf","replace","getToken","window","flsPrefix","useEffect","getSynFileList","Array","isArray","imagelist","map","file","push","Viewer","getConfig","token","config","headers","Authorization","onChange","info","response","result","errMsg","flt","pop","status","vtxId","data","length","id","newFileList","newFile","thumbUrl","filter","item","uid","afterFileList","limit","size","pointIndex","lastIndexOf","fileType","substring","includes","onDownload","downloadFile","fileName","onPreview","handlePreview","showRemoveIcon","showDownloadIcon","imageIndex","update","view","processedFileList","index","console","isSupportThumbnail","upload","fontSize","color","comp","img","maxWidth","maxHeight","marginTop","marginBottom","mainText","subText","display","ins","propTypes","PropTypes","bool","object","string","node","previewUrl","func","number","array"],"sources":["vtx-upload/index.jsx"],"sourcesContent":["import React, { useState, useEffect, forwardRef } from 'react';\r\nimport useSetState from 'ahooks/es/useSetState';\r\nimport PropTypes from 'prop-types';\r\nimport Viewer from 'viewerjs';\r\nimport Upload from 'antd/lib/upload';\r\nimport Button from 'antd/lib/button';\r\nimport InboxOutlined from '@ant-design/icons/InboxOutlined';\r\nimport PlusOutlined from '@ant-design/icons/PlusOutlined';\r\nimport UploadOutlined from '@ant-design/icons/UploadOutlined';\r\nimport message from 'antd/lib/message';\r\nimport downloadFile from '@vtx/utils/lib/downloadFile';\r\nimport debounce from 'lodash.debounce';\r\nimport Prev from './FilePreview';\r\nimport getToken from '../_util/getToken';\r\nimport ImgCrop from 'antd-img-crop';\r\n\r\nconst debouncedMessage = debounce(msg => {\r\n message.error(msg);\r\n}, 500);\r\n\r\n//文件预览\r\nconst initVPrev = {\r\n type: '', //video or file\r\n name: '',\r\n url: '',\r\n downloadUrl: '',\r\n visible: false,\r\n};\r\n\r\nconst initUrl = {\r\n action: '/cloudFile/common/uploadFile',\r\n downloadUrl: '/cloudFile/common/downloadFile?id=',\r\n thumbnailUrl:\r\n '/vortex/rest/cloud/np/file/downloadFileThumbnail?outputQuality=0.5&scale=0.2&id=',\r\n //previewUrl: '/onlinePreview',\r\n};\r\n//禁止上传的文件类型\r\nconst rejectTypes = ['.asp', '.aspx', '.jsp', '.exe', '.cgi', '.asa', '.cer', '.cdx', '.hta'];\r\n\r\nconst Dragger = Upload.Dragger;\r\nconst VtxUpload = forwardRef((props, ref) => {\r\n const {\r\n isDragger = false, //是否拖拽模式\r\n draggerConfig = {}, //拖动配置\r\n accept, //接受上传的文件类型\r\n mode = 'multiple', //单文件模式or多文件模式\r\n viewMode, //是否查看模式(隐藏上传按钮)\r\n showUploadList, //是否展示文件列表\r\n customizedButton, //自定义上传文字描述\r\n listType = 'text', //上传列表的样式\r\n onSuccess, //上传成功\r\n onError, //上传失败\r\n onRemove, //删除\r\n maxFileSize = 5 * 1024 * 1024, //文件大小限制,默认最大5M\r\n beforeUpload, //上传前回调\r\n maxNum, //最多上传的文件数量\r\n flag, //同步数据标记\r\n crop, //是否打开裁剪\r\n customDownload,// 自定义下载文件\r\n ...rest\r\n } = props;\r\n // 是否使用缩略图\r\n const useThumbnail =\r\n (props.useThumbnail === undefined ? true : props.useThumbnail) &&\r\n (listType == 'picture' || listType == 'picture-card');\r\n\r\n const [fileList, setFileList] = useState([]); //初始化文件列表\r\n const [imageViewer, setImageViewer] = useState(null); //图片预览\r\n const [imageList, setImageList] = useState([]);\r\n const [imageCt, setImageCt] = useState(null);\r\n const [vPrev, setVPrev] = useSetState(initVPrev); //文件预览相关\r\n\r\n // 参数中拼接token\r\n function joinToken(str) {\r\n if (str.indexOf('token=') === -1 && str.indexOf('?') > -1) {\r\n return str.replace('?', `?token=${getToken() || ''}&`);\r\n } else if (str.indexOf('?') === -1) {\r\n return str + `?token=${getToken() || ''}`;\r\n }\r\n return str;\r\n }\r\n\r\n const url = {\r\n action: props.action || initUrl.action,\r\n downloadUrl: joinToken(props.downloadUrl || initUrl.downloadUrl),\r\n thumbnailUrl: joinToken(\r\n window?.flsPrefix\r\n ? `${window.flsPrefix}${initUrl.thumbnailUrl}`\r\n : `${props.thumbnailUrl || initUrl.thumbnailUrl}`,\r\n ),\r\n //previewUrl: props.previewUrl || initUrl.previewUrl,\r\n };\r\n const { action, downloadUrl, thumbnailUrl } = url;\r\n\r\n useEffect(() => {\r\n setFileList(getSynFileList(props) || []);\r\n }, [flag]);\r\n\r\n useEffect(() => {\r\n if (Array.isArray(fileList)) {\r\n // 只有图片的才可以预览,这边需要判断是否是图片\r\n const imagelist = [];\r\n // 只能通过后缀来判断\r\n fileList.map(file => {\r\n if (file.type?.indexOf('image') > -1) {\r\n imagelist.push(file);\r\n }\r\n });\r\n setImageList(imagelist);\r\n }\r\n }, [fileList]);\r\n\r\n useEffect(() => {\r\n if (imageCt) {\r\n setImageViewer(new Viewer(imageCt, {}));\r\n }\r\n }, [imageCt]);\r\n\r\n const getConfig = () => {\r\n let token = getToken() || '';\r\n let config = {\r\n ...rest,\r\n accept,\r\n action,\r\n fileList: fileList,\r\n listType,\r\n showUploadList,\r\n headers: {\r\n Authorization: token ? `Bearer ${token}` : '',\r\n ...rest.headers,\r\n },\r\n onChange(info) {\r\n setFileList(info.fileList);\r\n if (info.file.response && info.file.response.result === 1) {\r\n message.error(info.file.response.errMsg || '上传失败!');\r\n let flt = [...fileList];\r\n flt.pop();\r\n setFileList(flt);\r\n return;\r\n }\r\n // 此处根据后台返回的数据结构取得文件ID\r\n if (info.file.status !== 'uploading' && info.file.status !== 'removed') {\r\n let vtxId =\r\n info.file.response &&\r\n Array.isArray(info.file.response.data) &&\r\n info.file.response.data.length > 0\r\n ? info.file.response.data[0].id\r\n : undefined;\r\n let newFileList = info.fileList;\r\n let newFile = vtxId\r\n ? {\r\n ...info.file,\r\n id: vtxId,\r\n url: downloadUrl + vtxId,\r\n thumbUrl: useThumbnail ? thumbnailUrl + vtxId : undefined,\r\n }\r\n : {\r\n ...info.file,\r\n };\r\n newFileList = info.fileList\r\n .filter(item => {\r\n // 有vtxId代表上传成功,有item.id代表之前上传成功的\r\n if (vtxId || item.id) return true;\r\n return false;\r\n })\r\n .map(item => {\r\n if (item.uid == info.file.uid) {\r\n return {\r\n ...item,\r\n id: vtxId,\r\n url: downloadUrl + vtxId,\r\n thumbUrl: useThumbnail ? thumbnailUrl + vtxId : undefined,\r\n };\r\n }\r\n return item;\r\n });\r\n\r\n if (mode == 'single') {\r\n setFileList([newFile]);\r\n } else {\r\n setFileList(newFileList);\r\n }\r\n // 更新组件状态\r\n // if (mode == 'single' && info.file.status === 'done') {\r\n // setFileList([newFile]);\r\n // } else {\r\n // setFileList(newFileList);\r\n // }\r\n\r\n // 触发外部方法\r\n if (info.file.status === 'done') {\r\n if (typeof onSuccess == 'function') {\r\n onSuccess(newFile);\r\n }\r\n } else if (info.file.status === 'error') {\r\n if (typeof onError == 'function') {\r\n onError(info.file);\r\n }\r\n }\r\n }\r\n },\r\n onRemove(file) {\r\n if (typeof onRemove == 'function') {\r\n return onRemove(file);\r\n }\r\n },\r\n beforeUpload(file, afterFileList) {\r\n //限制文件大小\r\n if (maxFileSize && typeof maxFileSize === 'number') {\r\n const limit = file.size < maxFileSize;\r\n if (!limit) {\r\n message.error(`请上传${maxFileSize / 1024 / 1024}M以内的文件`);\r\n return false;\r\n }\r\n }\r\n //限制不允许上传的文件类型(通过文件名后缀)\r\n let pointIndex = file.name ? file.name.lastIndexOf('.') : -1;\r\n if (pointIndex > -1) {\r\n let fileType = file.name.substring(pointIndex);\r\n if (rejectTypes.includes(fileType)) {\r\n message.error('不支持该文件类型');\r\n return false;\r\n }\r\n }\r\n // 多选限制文件数量\r\n if (typeof maxNum === 'number' && afterFileList.length + fileList.length > maxNum) {\r\n // 减少提示错误次数, 思路,防抖 这边有个问题 就是防抖的这个方法 return fasle 不上传\r\n debouncedMessage(`最多上传${maxNum}个`);\r\n return false;\r\n }\r\n\r\n if (typeof beforeUpload === 'function') {\r\n return beforeUpload(file, afterFileList);\r\n }\r\n return true;\r\n },\r\n onDownload: file=>{\r\n downloadFile(\r\n file.url,\r\n { fileName: file.name },\r\n 'blob',\r\n );\r\n }\r\n };\r\n\r\n if (props.onPreview && typeof props.onPreview === 'function') {\r\n config.onPreview = props.onPreview;\r\n } else {\r\n config.onPreview = file => {\r\n if (!file.type) {\r\n downloadFile(downloadUrl + file.id, { fileName: file.name }, 'blob');\r\n } else if (file.type?.indexOf('image') > -1) {\r\n handlePreview(file);\r\n } else if (file.type?.indexOf('video') > -1) {\r\n // 视频\r\n setVPrev({\r\n type: 'video',\r\n name: file.name || '视频预览',\r\n url: downloadUrl + file.id,\r\n downloadUrl: downloadUrl + file.id,\r\n visible: true,\r\n customDownload\r\n });\r\n } else {\r\n downloadFile(downloadUrl + file.id, { fileName: file.name }, 'blob');\r\n }\r\n\r\n // TODO 暂无好的文件预览服务,等后续完善,只提供下载\r\n // else if (\r\n // file.type == 'application/PDF' ||\r\n // file.type == 'application/vnd.ms-excel' ||\r\n // file.type ==\r\n // 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' ||\r\n // file.type == 'application/msword' ||\r\n // file.type ==\r\n // 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'\r\n // ) {\r\n // let url = '';\r\n // if (props.previewUrl) {\r\n // url = `${props.previewUrl}?id=${file.id}&fileName=${file.name}`;\r\n // } else {\r\n // url = `http://183.215.89.162:8012/onlinePreview?url=http://183.136.177.108:8003/cloudFile/common/downloadFile${encodeURIComponent(\r\n // '?id=' + file.id + '&fullfilename=' + file.name.replace(/\\s*/g, ''),\r\n // )}`;\r\n // }\r\n\r\n // setVPrev({\r\n // type: 'file',\r\n // name: file.name || '文件预览',\r\n // url: url,\r\n // downloadUrl: downloadUrl + file.id,\r\n // visible: true,\r\n // });\r\n // }\r\n };\r\n }\r\n\r\n // viewMode\r\n if (viewMode) {\r\n config.showUploadList = { showRemoveIcon: false, showDownloadIcon: true };\r\n }\r\n\r\n return config;\r\n };\r\n\r\n const handlePreview = file => {\r\n const imageIndex = imageList.map(item => item.id).indexOf(file.id);\r\n if (imageIndex == -1) return;\r\n imageViewer.update();\r\n imageViewer.view(imageIndex);\r\n };\r\n\r\n const getSynFileList = props => {\r\n let processedFileList = props.fileList || [];\r\n // 单文件模式只取第一个\r\n if (props.mode == 'single' && processedFileList.length > 1) {\r\n processedFileList = [processedFileList[0]];\r\n }\r\n processedFileList = processedFileList.map((item, index) => {\r\n // 将外部传入的简易文件数组处理成为组件需要的数组结构\r\n if (item.name === undefined || item.id === undefined) {\r\n // eslint-disable-next-line no-console\r\n console.error('文件列表的name和id属性不能为空');\r\n }\r\n let url = item.url || downloadUrl + item.id,\r\n thumbUrl = useThumbnail ? item.thumbUrl || thumbnailUrl + item.id : undefined;\r\n if(!isSupportThumbnail(item.type)){\r\n thumbUrl = url;\r\n }\r\n return {\r\n ...item,\r\n uid: -1 - index,\r\n status: 'done',\r\n url,\r\n thumbUrl,\r\n };\r\n });\r\n return processedFileList;\r\n };\r\n\r\n const upload = (\r\n <Upload {...getConfig()} ref={ref}>\r\n {viewMode || fileList.length >= maxNum\r\n ? null\r\n : customizedButton ||\r\n (listType == 'picture-card' ? (\r\n <div>\r\n <PlusOutlined style={{ fontSize: '28px', color: '#999' }} />\r\n <div className=\"ant-upload-text\">上传</div>\r\n </div>\r\n ) : (\r\n <Button>\r\n <UploadOutlined />\r\n 上传\r\n </Button>\r\n ))}\r\n </Upload>\r\n )\r\n const comp = (listType == 'picture-card'&&!!crop)?\r\n <ImgCrop rotationSlider>\r\n {upload}\r\n </ImgCrop>\r\n :upload;\r\n \r\n return (\r\n <>\r\n {isDragger ? (\r\n <Dragger {...getConfig()} ref={ref}>\r\n {draggerConfig?.img ? (\r\n <img\r\n src={draggerConfig.img}\r\n alt=\"\"\r\n style={{\r\n maxWidth: 100,\r\n maxHeight: 100,\r\n marginTop: '3%',\r\n marginBottom: '5%',\r\n }}\r\n />\r\n ) : (\r\n <p className=\"ant-upload-drag-icon\">\r\n <InboxOutlined />\r\n </p>\r\n )}\r\n <p className=\"ant-upload-text\">{draggerConfig?.mainText || '点击或拖拽上传'}</p>\r\n <p className=\"ant-upload-hint\">\r\n {draggerConfig?.subText || '支持上传word,excel,png...'}\r\n </p>\r\n </Dragger>\r\n ) : (\r\n comp\r\n )}\r\n <div style={{ display: 'none' }}>\r\n <ul\r\n ref={ins => {\r\n if (ins) setImageCt(ins);\r\n }}\r\n >\r\n {imageList\r\n .filter(item => item.type && item.type?.indexOf('image') > -1)\r\n .map((item, index) => (\r\n <li key={item.uid}>\r\n <img\r\n src={item.url || downloadUrl + item.id}\r\n alt={item.name || `picture-${index + 1}`}\r\n />\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n {/* 视频预览 */}\r\n <Prev onCancel={() => setVPrev(initVPrev)} {...vPrev} />\r\n </>\r\n );\r\n});\r\n\r\nVtxUpload.propTypes = {\r\n isDragger: PropTypes.bool,\r\n draggerConfig: PropTypes.object,\r\n accept: PropTypes.string,\r\n mode: PropTypes.string,\r\n viewMode: PropTypes.bool,\r\n showUploadList: PropTypes.bool | PropTypes.object,\r\n customizedButton: PropTypes.node,\r\n listType: PropTypes.string,\r\n action: PropTypes.string,\r\n downloadUrl: PropTypes.string,\r\n thumbnailUrl: PropTypes.string,\r\n previewUrl: PropTypes.string,\r\n onSuccess: PropTypes.func,\r\n onError: PropTypes.func,\r\n onRemove: PropTypes.func,\r\n onPreview: PropTypes.func,\r\n customDownload: PropTypes.func,\r\n maxFileSize: PropTypes.number,\r\n beforeUpload: PropTypes.func,\r\n maxNum: PropTypes.number,\r\n fileList: PropTypes.array,\r\n flag: PropTypes.number,\r\n useThumbnail: PropTypes.bool,\r\n crop: PropTypes.bool,\r\n};\r\nexport default VtxUpload;\r\n\r\nfunction isSupportThumbnail(type){\r\n if(['image/webp'].includes(type)){\r\n return false;\r\n }\r\n return true;\r\n}"],"mappings":"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"}
|