mirror of
https://github.com/cool-team-official/cool-admin-vue.git
synced 2025-12-16 16:42:50 +00:00
优化
This commit is contained in:
parent
bbd057dbf0
commit
09003b1a74
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "front-next",
|
"name": "front-next",
|
||||||
"version": "6.2.0",
|
"version": "6.3.0",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite --host",
|
"dev": "vite --host",
|
||||||
"build": "vite build",
|
"build": "vite build",
|
||||||
@ -15,6 +15,7 @@
|
|||||||
"@wangeditor/editor": "^5.1.23",
|
"@wangeditor/editor": "^5.1.23",
|
||||||
"@wangeditor/editor-for-vue": "^5.1.12",
|
"@wangeditor/editor-for-vue": "^5.1.12",
|
||||||
"axios": "^1.3.4",
|
"axios": "^1.3.4",
|
||||||
|
"chardet": "^1.5.1",
|
||||||
"core-js": "^3.23.5",
|
"core-js": "^3.23.5",
|
||||||
"dayjs": "^1.11.7",
|
"dayjs": "^1.11.7",
|
||||||
"echarts": "^5.3.3",
|
"echarts": "^5.3.3",
|
||||||
|
|||||||
@ -12,6 +12,7 @@
|
|||||||
<div class="inner">
|
<div class="inner">
|
||||||
<cl-upload
|
<cl-upload
|
||||||
drag
|
drag
|
||||||
|
:limit-size="limitSize"
|
||||||
:accept="accept"
|
:accept="accept"
|
||||||
:disabled="disabled"
|
:disabled="disabled"
|
||||||
type="file"
|
type="file"
|
||||||
@ -33,6 +34,8 @@ import { useForm } from "@cool-vue/crud";
|
|||||||
import { ElMessage } from "element-plus";
|
import { ElMessage } from "element-plus";
|
||||||
import { reactive, ref } from "vue";
|
import { reactive, ref } from "vue";
|
||||||
import XLSX from "xlsx";
|
import XLSX from "xlsx";
|
||||||
|
import chardet from "chardet";
|
||||||
|
import { extname } from "/@/cool/utils";
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
onConfig: Function,
|
onConfig: Function,
|
||||||
@ -53,7 +56,11 @@ const props = defineProps({
|
|||||||
default: 10
|
default: 10
|
||||||
},
|
},
|
||||||
disabled: Boolean,
|
disabled: Boolean,
|
||||||
accept: String
|
accept: {
|
||||||
|
type: String,
|
||||||
|
default:
|
||||||
|
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel,text/csv"
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const emit = defineEmits(["change"]);
|
const emit = defineEmits(["change"]);
|
||||||
@ -63,7 +70,7 @@ const Form = useForm();
|
|||||||
// 上传信息
|
// 上传信息
|
||||||
const upload = reactive({
|
const upload = reactive({
|
||||||
filename: "",
|
filename: "",
|
||||||
data: []
|
data: [] as any[]
|
||||||
});
|
});
|
||||||
|
|
||||||
// 进度
|
// 进度
|
||||||
@ -127,27 +134,41 @@ function open() {
|
|||||||
|
|
||||||
function onUpload(raw: File, _: any, { next }: any) {
|
function onUpload(raw: File, _: any, { next }: any) {
|
||||||
const reader = new FileReader();
|
const reader = new FileReader();
|
||||||
|
const ext = extname(raw.name);
|
||||||
|
|
||||||
reader.onload = (event: any) => {
|
reader.onload = (event: any) => {
|
||||||
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) {
|
for (const sheet in workbook.Sheets) {
|
||||||
if (workbook.Sheets.hasOwnProperty(sheet)) {
|
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;
|
upload.filename = raw.name;
|
||||||
|
|
||||||
console.log(upload.filename, upload.data);
|
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();
|
next();
|
||||||
|
|
||||||
@ -166,6 +187,13 @@ function download() {
|
|||||||
function setProgress(val: string) {
|
function setProgress(val: string) {
|
||||||
progress.value = parseInt(val);
|
progress.value = parseInt(val);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
defineExpose({
|
||||||
|
open,
|
||||||
|
clear,
|
||||||
|
setProgress,
|
||||||
|
Form
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
|||||||
@ -1188,6 +1188,11 @@ chalk@^4.0.0, chalk@^4.1.2:
|
|||||||
ansi-styles "^4.1.0"
|
ansi-styles "^4.1.0"
|
||||||
supports-color "^7.1.0"
|
supports-color "^7.1.0"
|
||||||
|
|
||||||
|
chardet@^1.5.1:
|
||||||
|
version "1.5.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/chardet/-/chardet-1.5.1.tgz#2a15770a46ce15e25a99f2741c949f43f9925dd5"
|
||||||
|
integrity sha512-0XMOtA52igKDOIfvJZJ6v0+J9yMF3IuYyEa5oFUxBXA01G6mwCNKpul3bgbFf7lmZuqwN/oyg/zQ1cGS7NyJkQ==
|
||||||
|
|
||||||
"chokidar@>=3.0.0 <4.0.0":
|
"chokidar@>=3.0.0 <4.0.0":
|
||||||
version "3.5.3"
|
version "3.5.3"
|
||||||
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
|
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user