New file |
| | |
| | | <template> |
| | | <zt-dialog ref="dialog" title="导入产品模型" :hasConfirm="false" append-to-body> |
| | | <el-form> |
| | | <zt-form-item style="width:100%;" label="" prop="remark"> |
| | | <el-upload |
| | | style="width: 600px" |
| | | class="upload-demo" |
| | | ref="upload" |
| | | :action="apiURL" |
| | | :on-success="succ" |
| | | :on-exceed="uploadExceed" |
| | | :on-error="err" |
| | | :limit="1" |
| | | :file-list="fileList" |
| | | :auto-upload="false"> |
| | | <div style="display:inline-block;font-size: 14px;" class="el-upload__tip"> 只能上传.xlsx或.xls的文件,且不超过2G</div> |
| | | <el-button slot="trigger" size="small" type="primary" style="font-size: 15px">选取文件</el-button> |
| | | <el-button type="primary" size="small" style="margin-left:20px;font-size: 15px" @click="submitUpload()">提 交 |
| | | </el-button> |
| | | </el-upload> |
| | | </zt-form-item> |
| | | <el-progress :text-inside="true" :stroke-width="30" :percentage="progress.speed"></el-progress> |
| | | <zt-form-item style="width:100%;" label="导入信息提示:" prop="text"> |
| | | <el-input style="width:80%;color:#000000;" v-model="dataForm.text" type="textarea" :rows="1" |
| | | placeholder="导入信息提示" readOnly></el-input> |
| | | </zt-form-item> |
| | | <el-table ref="table" v-adaptive="{bottomOffset:220}" height="100px" :resizable="false" :data="resultData" |
| | | highlight-current-row :default-sort="{prop:'errCause',order:'ascending'}"> |
| | | <el-table-column prop="sheetName" label="excel工作表" width="150"/> |
| | | <el-table-column :sortable="true" prop="errCause" label="错误原因" width="300"/> |
| | | <el-table-column prop="lineNumber" label="错误行数"/> |
| | | </el-table> |
| | | </el-form> |
| | | <!--<template slot="footer">--> |
| | | <!--<zt-button type="primary" style="float:left" @click="exportExcelModel()">导出Excel导入模板</zt-button>--> |
| | | <!--</template>--> |
| | | </zt-dialog> |
| | | </template> |
| | | |
| | | <script> |
| | | import Cookies from 'js-cookie' |
| | | import qs from 'qs' |
| | | import {guid} from "../../../commonJS/common"; |
| | | |
| | | export default { |
| | | name: 'product-import', |
| | | props: { |
| | | projectId: { |
| | | type: String, |
| | | required: true |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | dataForm: { |
| | | result: '' |
| | | }, |
| | | progress: { |
| | | id: null, |
| | | speed: 0, |
| | | text: '', |
| | | start: false, |
| | | timer: null |
| | | }, |
| | | fileType: ['xlsx', 'xls'], |
| | | apiURL: '', |
| | | start: 0, |
| | | dialogVisible: false, |
| | | dialogMsg: '', |
| | | fileList: [], |
| | | resultData: [] |
| | | } |
| | | }, |
| | | computed: { |
| | | importparam() { |
| | | return {} |
| | | } |
| | | }, |
| | | created() { |
| | | this.fileList = [] |
| | | this.resultData = [] |
| | | }, |
| | | methods: { |
| | | |
| | | // Array.sort(function(obj1, obj2) { |
| | | // let val1 = obj1.key |
| | | // let val2 = obj2.key |
| | | // return val1 - val2 |
| | | // }), |
| | | init(row) { |
| | | this.fileList = [] |
| | | this.resultData = [] |
| | | this.progress.id = guid() |
| | | let params = qs.stringify({ |
| | | token: Cookies.get('token'), |
| | | progressId: this.progress.id, |
| | | pid: row.id |
| | | }) |
| | | this.apiURL = `${window.SITE_CONFIG['apiURL']}/basicInfo/XhProductModel/importProductExcel?${params}` |
| | | }, |
| | | uploadExceed(files, fileList) { |
| | | this.$set(fileList[0], 'raw', files[0]) |
| | | this.$set(fileList[0], 'name', files[0].name) |
| | | this.$refs.upload.clearFiles() |
| | | this.$refs.upload.handleStart(files[0]) |
| | | }, |
| | | succ(res, file, fileList) { |
| | | clearInterval(this.timer) |
| | | this.dataForm.speed = 100 |
| | | this.$refs.upload.clearFiles() |
| | | this.fileList = [] |
| | | if (res.code === 0) { |
| | | this.dataForm.text = res.msg |
| | | } |
| | | if (res.code === 501) { |
| | | this.dataForm.text = res.msg |
| | | if (res.data) { |
| | | this.resultData = res.data |
| | | } |
| | | } |
| | | this.$emit('refreshDataList') |
| | | }, |
| | | err(res, file, fileList) { |
| | | clearInterval(this.timer) |
| | | this.dataForm.speed = 0 |
| | | this.dataForm.text = '导入数据包格式有误' |
| | | this.$tip.error(res.msg) |
| | | }, |
| | | submitUpload() { |
| | | this.dataForm.speed = 0 |
| | | this.dataForm.text = '' |
| | | this.progress.speed = 0 |
| | | this.progress.start = true |
| | | this.progress.timer = window.setInterval(this.getStroke, 1000) |
| | | this.uploadQuery() |
| | | }, |
| | | uploadQuery() { |
| | | if (this.$refs.upload.uploadFiles.length === 1) { |
| | | this.start = 1 |
| | | this.$refs.upload.submit() |
| | | } else { |
| | | this.$tip.error('请选择需要上传的.xlsx或.xls的文件') |
| | | } |
| | | //clearInterval(this.timers) |
| | | }, |
| | | getStroke() { |
| | | //console.log('getStroke:',this.progress.start,",",this.progress.speed) |
| | | if (this.progress.start && this.progress.speed < 100) { |
| | | //console.log('getStroke2') |
| | | this.$http.get(`sys/common/stroke?progressId=${this.progress.id}`).then( |
| | | res => { |
| | | if (res.success) { |
| | | this.progress.speed = parseFloat(res.data.speed) |
| | | this.progress.text = res.data.text |
| | | } |
| | | } |
| | | ) |
| | | } else { |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | |
| | | </style> |