{"remainingRequest":"D:\\源码\\vue-element-admin-master\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\源码\\vue-element-admin-master\\src\\components\\UploadExcel\\index.vue?vue&type=style&index=0&id=12d4a639&scoped=true&lang=css&","dependencies":[{"path":"D:\\源码\\vue-element-admin-master\\src\\components\\UploadExcel\\index.vue","mtime":1649647926000},{"path":"D:\\源码\\vue-element-admin-master\\node_modules\\css-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\源码\\vue-element-admin-master\\node_modules\\vue-loader\\lib\\loaders\\stylePostLoader.js","mtime":499162500000},{"path":"D:\\源码\\vue-element-admin-master\\node_modules\\postcss-loader\\src\\index.js","mtime":499162500000},{"path":"D:\\源码\\vue-element-admin-master\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\源码\\vue-element-admin-master\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCi5leGNlbC11cGxvYWQtaW5wdXR7CiAgZGlzcGxheTogbm9uZTsKICB6LWluZGV4OiAtOTk5OTsKfQouZHJvcHsKICBib3JkZXI6IDJweCBkYXNoZWQgI2JiYjsKICB3aWR0aDogNjAwcHg7CiAgaGVpZ2h0OiAxNjBweDsKICBsaW5lLWhlaWdodDogMTYwcHg7CiAgbWFyZ2luOiAwIGF1dG87CiAgZm9udC1zaXplOiAyNHB4OwogIGJvcmRlci1yYWRpdXM6IDVweDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgY29sb3I6ICNiYmI7CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9Cg=="},{"version":3,"sources":["index.vue"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"index.vue","sourceRoot":"src/components/UploadExcel","sourcesContent":["<template>\n <div>\n <input ref=\"excel-upload-input\" class=\"excel-upload-input\" type=\"file\" accept=\".xlsx, .xls\" @change=\"handleClick\">\n <div class=\"drop\" @drop=\"handleDrop\" @dragover=\"handleDragover\" @dragenter=\"handleDragover\">\n Drop excel file here or\n <el-button :loading=\"loading\" style=\"margin-left:16px;\" size=\"mini\" type=\"primary\" @click=\"handleUpload\">\n Browse\n </el-button>\n </div>\n </div>\n</template>\n\n<script>\nimport XLSX from 'xlsx'\n\nexport default {\n props: {\n beforeUpload: Function, // eslint-disable-line\n onSuccess: Function// eslint-disable-line\n },\n data() {\n return {\n loading: false,\n excelData: {\n header: null,\n results: null\n }\n }\n },\n methods: {\n generateData({ header, results }) {\n this.excelData.header = header\n this.excelData.results = results\n this.onSuccess && this.onSuccess(this.excelData)\n },\n handleDrop(e) {\n e.stopPropagation()\n e.preventDefault()\n if (this.loading) return\n const files = e.dataTransfer.files\n if (files.length !== 1) {\n this.$message.error('Only support uploading one file!')\n return\n }\n const rawFile = files[0] // only use files[0]\n\n if (!this.isExcel(rawFile)) {\n this.$message.error('Only supports upload .xlsx, .xls, .csv suffix files')\n return false\n }\n this.upload(rawFile)\n e.stopPropagation()\n e.preventDefault()\n },\n handleDragover(e) {\n e.stopPropagation()\n e.preventDefault()\n e.dataTransfer.dropEffect = 'copy'\n },\n handleUpload() {\n this.$refs['excel-upload-input'].click()\n },\n handleClick(e) {\n const files = e.target.files\n const rawFile = files[0] // only use files[0]\n if (!rawFile) return\n this.upload(rawFile)\n },\n upload(rawFile) {\n this.$refs['excel-upload-input'].value = null // fix can't select the same excel\n\n if (!this.beforeUpload) {\n this.readerData(rawFile)\n return\n }\n const before = this.beforeUpload(rawFile)\n if (before) {\n this.readerData(rawFile)\n }\n },\n readerData(rawFile) {\n this.loading = true\n return new Promise((resolve, reject) => {\n const reader = new FileReader()\n reader.onload = e => {\n const data = e.target.result\n const workbook = XLSX.read(data, { type: 'array' })\n const firstSheetName = workbook.SheetNames[0]\n const worksheet = workbook.Sheets[firstSheetName]\n const header = this.getHeaderRow(worksheet)\n const results = XLSX.utils.sheet_to_json(worksheet)\n this.generateData({ header, results })\n this.loading = false\n resolve()\n }\n reader.readAsArrayBuffer(rawFile)\n })\n },\n getHeaderRow(sheet) {\n const headers = []\n const range = XLSX.utils.decode_range(sheet['!ref'])\n let C\n const R = range.s.r\n /* start in the first row */\n for (C = range.s.c; C <= range.e.c; ++C) { /* walk every column in the range */\n const cell = sheet[XLSX.utils.encode_cell({ c: C, r: R })]\n /* find the cell in the first row */\n let hdr = 'UNKNOWN ' + C // <-- replace with your desired default\n if (cell && cell.t) hdr = XLSX.utils.format_cell(cell)\n headers.push(hdr)\n }\n return headers\n },\n isExcel(file) {\n return /\\.(xlsx|xls|csv)$/.test(file.name)\n }\n }\n}\n</script>\n\n<style scoped>\n.excel-upload-input{\n display: none;\n z-index: -9999;\n}\n.drop{\n border: 2px dashed #bbb;\n width: 600px;\n height: 160px;\n line-height: 160px;\n margin: 0 auto;\n font-size: 24px;\n border-radius: 5px;\n text-align: center;\n color: #bbb;\n position: relative;\n}\n</style>\n"]}]}
|