|  |  |  | 
|---|
|  |  |  | :close-on-press-escape="false" | 
|---|
|  |  |  | :show-close="false" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <el-form> | 
|---|
|  |  |  | <el-form-item> | 
|---|
|  |  |  | <el-upload | 
|---|
|  |  |  | drag | 
|---|
|  |  |  | :show-file-list="false" | 
|---|
|  |  |  | action="none" | 
|---|
|  |  |  | accept=".xlsx, .xls" | 
|---|
|  |  |  | :before-upload="handleBeforeUpload" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <template v-if="form.file == null"> | 
|---|
|  |  |  | <i class="el-icon-upload"></i> | 
|---|
|  |  |  | <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | <template v-else> | 
|---|
|  |  |  | <i class="el-icon-files"></i> | 
|---|
|  |  |  | <div class="el-upload__text">{{form.file.name}}<em></em></div> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-upload> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | </el-form> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <el-upload | 
|---|
|  |  |  | drag | 
|---|
|  |  |  | :show-file-list="false" | 
|---|
|  |  |  | action="none" | 
|---|
|  |  |  | accept=".xlsx" | 
|---|
|  |  |  | :before-upload="handleBeforeUpload" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <template v-if="form.file == null"> | 
|---|
|  |  |  | <i class="el-icon-upload"></i> | 
|---|
|  |  |  | <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | <template v-else> | 
|---|
|  |  |  | <i class="el-icon-files"></i> | 
|---|
|  |  |  | <div class="el-upload__text">{{form.file.name}}<em></em></div> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-upload> | 
|---|
|  |  |  | <div slot="footer" class="import-window__footer"> | 
|---|
|  |  |  | <!-- <div class="sync-exists"> | 
|---|
|  |  |  | <div class="sync-exists"> | 
|---|
|  |  |  | <el-checkbox v-model="form.sync"/><span>同步已存在的数据</span> | 
|---|
|  |  |  | </div> --> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="opera"> | 
|---|
|  |  |  | <a href=""></a> | 
|---|
|  |  |  | <el-button type="text" icon="el-icon-download" @click="downloadTemplate">下载模版</el-button> | 
|---|
|  |  |  | <el-button @click="cancel">{{cancelText}}</el-button> | 
|---|
|  |  |  | <el-button type="primary" @click="confirm" :loading="isWorking">{{confirmText}}</el-button> | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <script> | 
|---|
|  |  |  | import request from '@/utils/request' | 
|---|
|  |  |  | import { downloadLocalFile } from '@/api/system/common' | 
|---|
|  |  |  | export default { | 
|---|
|  |  |  | name: 'ImportWindow', | 
|---|
|  |  |  | props: { | 
|---|
|  |  |  | 
|---|
|  |  |  | type: String, | 
|---|
|  |  |  | default: '导入' | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 取消按钮文案 | 
|---|
|  |  |  | cancelText: { | 
|---|
|  |  |  | type: String, | 
|---|
|  |  |  | 
|---|
|  |  |  | title: '导入数据', | 
|---|
|  |  |  | form: { | 
|---|
|  |  |  | sync: false, | 
|---|
|  |  |  | file: false, | 
|---|
|  |  |  | categoryId: '' | 
|---|
|  |  |  | file: false | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | 
|---|
|  |  |  | this.isWorking = true | 
|---|
|  |  |  | const param = new FormData() | 
|---|
|  |  |  | param.set('file', this.form.file) | 
|---|
|  |  |  | param.set('sync', this.form.sync) | 
|---|
|  |  |  | request.post(this.action, param, { | 
|---|
|  |  |  | headers: { | 
|---|
|  |  |  | 'Content-Type': 'multipart/form-data;charset=UTF-8' | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | .then(() => { | 
|---|
|  |  |  | this.$tip.success('导入成功') | 
|---|
|  |  |  | .then(data => { | 
|---|
|  |  |  | this.$tip.success('导入成功,共导入' + data + '条记录') | 
|---|
|  |  |  | this.visible = false | 
|---|
|  |  |  | this.$emit('success') | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | .catch(e => { | 
|---|
|  |  |  | //  this.$tip.apiFailed(e) | 
|---|
|  |  |  | this.$tip.apiFailed(e) | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | .finally(() => { | 
|---|
|  |  |  | this.isWorking = false | 
|---|
|  |  |  | 
|---|
|  |  |  | * 下载模版 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | downloadTemplate () { | 
|---|
|  |  |  | const link = document.createElement('a') | 
|---|
|  |  |  | link.setAttribute('download', this.templateName) //下载的文件名 | 
|---|
|  |  |  | console.log(`${window.location.origin}${process.env.VUE_APP_CONTEXT_PATH}${this.templatePath}`); | 
|---|
|  |  |  | link.href = `${window.location.origin}${process.env.VUE_APP_CONTEXT_PATH}${this.templatePath}`  //文件url | 
|---|
|  |  |  | link.click() | 
|---|
|  |  |  | // this.$emit('download') | 
|---|
|  |  |  | downloadLocalFile({ | 
|---|
|  |  |  | path: this.templatePath, | 
|---|
|  |  |  | name: this.templateName | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | .then(data => { | 
|---|
|  |  |  | this.download(data) | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | .catch(e => { | 
|---|
|  |  |  | this.$tip.apiFailed(e) | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 文件上传前存储上传的文件 | 
|---|