Commit 530a37c89eff532bc5ae15effe1f7d1affbff50d
1 parent
bb778c90
上传组件
Showing
1 changed file
with
111 additions
and
7 deletions
src/components/upload.vue
| 1 | <template> | 1 | <template> |
| 2 | <div> | 2 | <div> |
| 3 | - <el-upload> | ||
| 4 | - | ||
| 5 | - </el-upload> | 3 | + <div class="d1"> |
| 4 | + 第一步:下载模板并编辑完成学生分数<el-link | ||
| 5 | + type="primary" | ||
| 6 | + icon="el-icon-download" | ||
| 7 | + @click="()=>downExcel()" | ||
| 8 | + >下载模版</el-link | ||
| 9 | + > | ||
| 10 | + </div> | ||
| 11 | + <div class="d1"> | ||
| 12 | + 第二步:上传完成编辑的模板文件并导入 | ||
| 13 | + <el-upload | ||
| 14 | + class="upload-demo" | ||
| 15 | + ref="upload" | ||
| 16 | + action="/api/web/report/importSubjectiveScore" | ||
| 17 | + :multiple="false" | ||
| 18 | + :data="{ id: id }" | ||
| 19 | + :with-credentials="true" | ||
| 20 | + :limit="1" | ||
| 21 | + :on-change="change" | ||
| 22 | + :on-success="upSuccess" | ||
| 23 | + :on-error="upError" | ||
| 24 | + > | ||
| 25 | + <!-- accept="application/vnd.ms-excel" --> | ||
| 26 | + <el-button class="btn" size="mini" type="primary" | ||
| 27 | + >选择文件并上传</el-button | ||
| 28 | + > | ||
| 29 | + </el-upload> | ||
| 30 | + </div> | ||
| 6 | </div> | 31 | </div> |
| 7 | </template> | 32 | </template> |
| 8 | 33 | ||
| 9 | <script> | 34 | <script> |
| 35 | +import { downloadTemplate } from "@/api/report"; | ||
| 36 | +import { downloadFile } from "@/utils"; | ||
| 10 | export default { | 37 | export default { |
| 38 | + name: "downUpData", | ||
| 39 | + props: { | ||
| 40 | + id: { | ||
| 41 | + type: String, | ||
| 42 | + default: "", | ||
| 43 | + }, | ||
| 44 | + classObject: { | ||
| 45 | + type: Object, | ||
| 46 | + default: ()=> { | ||
| 47 | + return {} | ||
| 48 | + }, | ||
| 49 | + } | ||
| 50 | + }, | ||
| 51 | + data() { | ||
| 52 | + return { | ||
| 53 | + file: null, | ||
| 54 | + }; | ||
| 55 | + }, | ||
| 56 | + methods: { | ||
| 57 | + async submitUpload() { | ||
| 58 | + this.$refs.upload.submit(); | ||
| 11 | 59 | ||
| 12 | -} | 60 | + // const formData = new FormData() |
| 61 | + // formData.append('id',this.componentId) | ||
| 62 | + // formData.append('file',new File(this.file.raw)) | ||
| 63 | + // let {status,info} = await uploadExcel(formData); | ||
| 64 | + // if(status===0){ | ||
| 65 | + // this.$message.success(info); | ||
| 66 | + // this.$emit("upSuccess") | ||
| 67 | + // } else { | ||
| 68 | + // this.$message.error(info); | ||
| 69 | + // } | ||
| 70 | + }, | ||
| 71 | + upSuccess(res) { | ||
| 72 | + if (res && res.code == 0 && res.success) { | ||
| 73 | + this.$message.success("上传成功"); | ||
| 74 | + this.$emit("upSuccess"); | ||
| 75 | + } else { | ||
| 76 | + this.$message.error(res.message); | ||
| 77 | + } | ||
| 78 | + }, | ||
| 79 | + upError(res) { | ||
| 80 | + if (res && res.status == 0) { | ||
| 81 | + this.$message.success("上传成功"); | ||
| 82 | + this.$emit("upSuccess"); | ||
| 83 | + } else { | ||
| 84 | + this.$message.error(res.message); | ||
| 85 | + } | ||
| 86 | + }, | ||
| 87 | + change(file) { | ||
| 88 | + this.file = file; | ||
| 89 | + }, | ||
| 90 | + async downExcel() { | ||
| 91 | + let data = await downloadTemplate({ | ||
| 92 | + id: this.id, | ||
| 93 | + }); | ||
| 94 | + if (data && !data.code) { | ||
| 95 | + let filename = "模板.xlsx"; | ||
| 96 | + if (this.classObject) { | ||
| 97 | + let className = this.classObject.classObject?.[0].label; | ||
| 98 | + filename = className + "_" + this.classObject.subjectName + "_" + this.classObject.examinationName + "_主观题分数导入.xlsx"; | ||
| 99 | + } | ||
| 100 | + let blob = new Blob([data], { | ||
| 101 | + type: "application/vnd.ms-excel;charset=utf-8", | ||
| 102 | + }); | ||
| 103 | + downloadFile(filename, blob); | ||
| 104 | + } else { | ||
| 105 | + this.$message.error(data.message); | ||
| 106 | + } | ||
| 107 | + }, | ||
| 108 | + }, | ||
| 109 | +}; | ||
| 13 | </script> | 110 | </script> |
| 14 | 111 | ||
| 15 | -<style> | ||
| 16 | - | ||
| 17 | -</style> | ||
| 18 | \ No newline at end of file | 112 | \ No newline at end of file |
| 113 | +<style lang="scss" scoped> | ||
| 114 | +.d1 { | ||
| 115 | + padding: 10px; | ||
| 116 | +} | ||
| 117 | +.btn { | ||
| 118 | + margin-top: 20px; | ||
| 119 | + border-radius: 8px; | ||
| 120 | + font-weight: normal; | ||
| 121 | +} | ||
| 122 | +</style> |