ronds-metadata 1.1.73 → 1.1.75

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,20 @@
1
1
  interface IFileViewProps {
2
+ /**
3
+ * 文件远程链接
4
+ */
2
5
  path?: string;
3
- limit?: number;
6
+ /**
7
+ * json数据
8
+ */
4
9
  data?: any[];
10
+ /**
11
+ * 文件
12
+ */
13
+ file?: any;
14
+ /**
15
+ * 最多展示多少行数据
16
+ */
17
+ limit?: number;
5
18
  }
6
19
  declare const FileView: (props: IFileViewProps) => JSX.Element;
7
20
  export default FileView;
@@ -1,5 +1,3 @@
1
- import "antd/es/empty/style";
2
- import _Empty from "antd/es/empty";
3
1
  import _regeneratorRuntime from "@babel/runtime/regenerator";
4
2
  import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
5
3
  import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
@@ -11,6 +9,7 @@ import * as XLSX from 'xlsx';
11
9
  var FileView = function FileView(props) {
12
10
  var path = props.path,
13
11
  data = props.data,
12
+ file = props.file,
14
13
  _props$limit = props.limit,
15
14
  limit = _props$limit === void 0 ? 1000 : _props$limit;
16
15
  var ref = React.useRef(null);
@@ -61,76 +60,98 @@ var FileView = function FileView(props) {
61
60
  setValue([].concat(_value));
62
61
  firstLoadRef.current = false;
63
62
  }
64
- }, []);
65
- var getFileData = React.useCallback( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
66
- var res, blob, fileReader;
67
- return _regeneratorRuntime.wrap(function _callee$(_context) {
68
- while (1) {
69
- switch (_context.prev = _context.next) {
70
- case 0:
71
- if (!(path && firstLoadRef.current)) {
72
- _context.next = 10;
63
+ }, []); // 文件流转 base64
64
+
65
+ var fixdata = function fixdata(data) {
66
+ var o = '',
67
+ l = 0,
68
+ w = 10240;
69
+
70
+ for (; l < data.byteLength / w; ++l) {
71
+ o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w, l * w + w)));
72
+ }
73
+
74
+ o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w)));
75
+ return o;
76
+ };
77
+
78
+ var getFileData = React.useCallback( /*#__PURE__*/function () {
79
+ var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(_file) {
80
+ var blob, res, fileReader;
81
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
82
+ while (1) {
83
+ switch (_context.prev = _context.next) {
84
+ case 0:
85
+ if (!firstLoadRef.current) {
86
+ _context.next = 14;
87
+ break;
88
+ }
89
+
90
+ if (!path) {
91
+ _context.next = 10;
92
+ break;
93
+ }
94
+
95
+ _context.next = 4;
96
+ return fetch(path);
97
+
98
+ case 4:
99
+ res = _context.sent;
100
+ _context.next = 7;
101
+ return res.blob();
102
+
103
+ case 7:
104
+ blob = _context.sent;
105
+ _context.next = 11;
73
106
  break;
74
- }
75
-
76
- _context.next = 3;
77
- return fetch(path);
78
-
79
- case 3:
80
- res = _context.sent;
81
- _context.next = 6;
82
- return res.blob();
83
-
84
- case 6:
85
- blob = _context.sent;
86
- fileReader = new FileReader();
87
- // blob.type = 'text/csv;charset=utf-8;';
88
- // const bl = new Blob([blob], { type: 'text/csv;charset=utf-8;' });
89
- // console.log('blob2', bl);
90
- //二进制
91
- // fileReader.readAsBinaryString(blob);
92
- fileReader.readAsArrayBuffer(blob);
93
-
94
- fileReader.onload = function (event) {
95
- try {
96
- var _data = [];
97
- var binary = ''; // 以二进制流方式读取得到整份excel表格对象
98
-
99
- var result = event.target.result;
100
- var bytes = new Uint8Array(result);
101
-
102
- for (var i = 0; i < bytes.byteLength; i++) {
103
- binary += String.fromCharCode(bytes[i]);
104
- }
105
107
 
106
- // 遍历每张工作表进行读取(这里默认只读取第一张表)
107
- var workbook = XLSX.read(binary, {
108
- type: 'binary',
109
- codepage: 936
110
- });
108
+ case 10:
109
+ blob = _file;
110
+
111
+ case 11:
112
+ fileReader = new FileReader(); //二进制
113
+ // fileReader.readAsBinaryString(blob);
114
+
115
+ fileReader.onload = function (event) {
116
+ try {
117
+ var _data = []; // 以二进制流方式读取得到整份excel表格对象
111
118
 
112
- for (var sheet in workbook.Sheets) {
113
- if (workbook.Sheets.hasOwnProperty(sheet)) {
114
- // 利用 sheet_to_json 方法将 excel 转成 json 数据
115
- _data = _data.concat(XLSX.utils.sheet_to_json(workbook.Sheets[sheet])); // 如果只取第一张表,就取消注释这行
119
+ var result = event.target.result; // 遍历每张工作表进行读取(这里默认只读取第一张表)
116
120
 
117
- break;
121
+ var workbook = XLSX.read(fixdata(result), {
122
+ type: 'binary',
123
+ codepage: 65001
124
+ });
125
+
126
+ for (var sheet in workbook.Sheets) {
127
+ if (workbook.Sheets.hasOwnProperty(sheet)) {
128
+ // 利用 sheet_to_json 方法将 excel 转成 json 数据
129
+ _data = _data.concat(XLSX.utils.sheet_to_json(workbook.Sheets[sheet])); // 如果只取第一张表,就取消注释这行
130
+
131
+ break;
132
+ }
118
133
  }
134
+
135
+ processDataToExcel(_data);
136
+ } catch (e) {
137
+ return;
119
138
  }
139
+ };
120
140
 
121
- processDataToExcel(_data);
122
- } catch (e) {
123
- return;
124
- }
125
- };
141
+ fileReader.readAsArrayBuffer(blob);
126
142
 
127
- case 10:
128
- case "end":
129
- return _context.stop();
143
+ case 14:
144
+ case "end":
145
+ return _context.stop();
146
+ }
130
147
  }
131
- }
132
- }, _callee);
133
- })), []);
148
+ }, _callee);
149
+ }));
150
+
151
+ return function (_x) {
152
+ return _ref.apply(this, arguments);
153
+ };
154
+ }(), []);
134
155
  React.useEffect(function () {
135
156
  if (path && firstLoadRef.current) {
136
157
  getFileData();
@@ -141,6 +162,16 @@ var FileView = function FileView(props) {
141
162
 
142
163
  return function () {};
143
164
  }, [getFileData, path]);
165
+ React.useEffect(function () {
166
+ if (file && firstLoadRef.current) {
167
+ getFileData(file);
168
+ return function () {
169
+ ref.current = null;
170
+ };
171
+ }
172
+
173
+ return function () {};
174
+ }, [getFileData, file]);
144
175
  React.useEffect(function () {
145
176
  if (data && firstLoadRef.current) {
146
177
  processDataToExcel(data);
@@ -153,7 +184,7 @@ var FileView = function FileView(props) {
153
184
  }, [getFileData, data]);
154
185
 
155
186
  if (!value) {
156
- return /*#__PURE__*/React.createElement(_Empty, null);
187
+ return /*#__PURE__*/React.createElement(React.Fragment, null);
157
188
  }
158
189
 
159
190
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ReactJexcel, {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "public": true,
3
3
  "name": "ronds-metadata",
4
- "version": "1.1.73",
4
+ "version": "1.1.75",
5
5
  "scripts": {
6
6
  "start": "dumi dev",
7
7
  "docs:build": "dumi build",