jinlin
2024-07-15 22eb970f2e316cdb6b8f1b8e49038d10f865a67e
修改
1个文件已添加
167 ■■■■■ 已修改文件
web/src/views/modules/basicInfo/ProductImport.vue 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/modules/basicInfo/ProductImport.vue
New file
@@ -0,0 +1,167 @@
<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">&nbsp;&nbsp;&nbsp;只能上传.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>