diff --git a/package.json b/package.json index 8945418..d3c978b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "front-next", - "version": "6.2.0", + "version": "6.3.0", "scripts": { "dev": "vite --host", "build": "vite build", @@ -15,6 +15,7 @@ "@wangeditor/editor": "^5.1.23", "@wangeditor/editor-for-vue": "^5.1.12", "axios": "^1.3.4", + "chardet": "^1.5.1", "core-js": "^3.23.5", "dayjs": "^1.11.7", "echarts": "^5.3.3", diff --git a/src/modules/extend/excel/import-btn.vue b/src/modules/extend/excel/import-btn.vue index b9c6275..ede7259 100644 --- a/src/modules/extend/excel/import-btn.vue +++ b/src/modules/extend/excel/import-btn.vue @@ -12,6 +12,7 @@
{ - const { result } = event.target; + let data = ""; - const workbook = XLSX.read(result, { type: "binary" }); + if (ext == "csv") { + const detected = chardet.detect(new Uint8Array(event.target.result)); + const decoder = new TextDecoder(detected); + data = decoder.decode(event.target.result); + } else { + data = event.target.result; + } - let data: any[] = []; + const workbook = XLSX.read(data, { type: "binary" }); + + let json: any[] = []; for (const sheet in workbook.Sheets) { if (workbook.Sheets.hasOwnProperty(sheet)) { - data = data.concat(XLSX.utils.sheet_to_json(workbook.Sheets[sheet])); + json = json.concat(XLSX.utils.sheet_to_json(workbook.Sheets[sheet])); } } - // @ts-ignore - upload.data = data; + + upload.data = json; upload.filename = raw.name; console.log(upload.filename, upload.data); - emit("change", data); + emit("change", json); }; - reader.readAsBinaryString(raw); + + if (ext == "csv") { + reader.readAsArrayBuffer(raw); + } else { + reader.readAsBinaryString(raw); + } next(); @@ -166,6 +187,13 @@ function download() { function setProgress(val: string) { progress.value = parseInt(val); } + +defineExpose({ + open, + clear, + setProgress, + Form +});