Skip to content

Commit 9f8ac37

Browse files
committed
perf[UploadExcel-component]: set readerData to promise
1 parent 8c685cc commit 9f8ac37

File tree

1 file changed

+21
-15
lines changed

1 file changed

+21
-15
lines changed

src/components/UploadExcel/index.vue

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<input id="excel-upload-input" ref="excel-upload-input" type="file" accept=".xlsx, .xls" class="c-hide" @change="handkeFileChange">
44
<div id="drop" @drop="handleDrop" @dragover="handleDragover" @dragenter="handleDragover">
55
Drop excel file here or
6-
<el-button style="margin-left:16px;" size="mini" type="primary" @click="handleUpload">browse</el-button>
6+
<el-button :loading="loading" style="margin-left:16px;" size="mini" type="primary" @click="handleUpload">browse</el-button>
77
</div>
88
</div>
99
</template>
@@ -52,22 +52,28 @@ export default {
5252
const files = e.target.files
5353
const itemFile = files[0] // only use files[0]
5454
if (!itemFile) return
55-
this.readerData(itemFile)
56-
this.$refs['excel-upload-input'].value = null // fix can't select the same excel
55+
this.loading = true
56+
this.readerData(itemFile).then(() => {
57+
this.$refs['excel-upload-input'].value = null // fix can't select the same excel
58+
this.loading = false
59+
})
5760
},
5861
readerData(itemFile) {
59-
const reader = new FileReader()
60-
reader.onload = e => {
61-
const data = e.target.result
62-
const fixedData = this.fixdata(data)
63-
const workbook = XLSX.read(btoa(fixedData), { type: 'base64' })
64-
const firstSheetName = workbook.SheetNames[0]
65-
const worksheet = workbook.Sheets[firstSheetName]
66-
const header = this.get_header_row(worksheet)
67-
const results = XLSX.utils.sheet_to_json(worksheet)
68-
this.generateDate({ header, results })
69-
}
70-
reader.readAsArrayBuffer(itemFile)
62+
return new Promise((resolve, reject) => {
63+
const reader = new FileReader()
64+
reader.onload = e => {
65+
const data = e.target.result
66+
const fixedData = this.fixdata(data)
67+
const workbook = XLSX.read(btoa(fixedData), { type: 'base64' })
68+
const firstSheetName = workbook.SheetNames[0]
69+
const worksheet = workbook.Sheets[firstSheetName]
70+
const header = this.get_header_row(worksheet)
71+
const results = XLSX.utils.sheet_to_json(worksheet)
72+
this.generateDate({ header, results })
73+
resolve()
74+
}
75+
reader.readAsArrayBuffer(itemFile)
76+
})
7177
},
7278
fixdata(data) {
7379
let o = ''

0 commit comments

Comments
 (0)