<template> 
 | 
  <zt-dialog ref="dialog" append-to-body @confirm="formSubmit" :hasConfirm="true"> 
 | 
    <el-form :model="dataForm" ref="dataForm" :disabled="dataForm.disabled" label-width="120px"> 
 | 
      <zt-form-item label="总体节点" prop="shipName"> 
 | 
        <el-input v-model="dataForm.shipName" :readonly="true"></el-input> 
 | 
      </zt-form-item> 
 | 
      <zt-form-item label="评定数据名称" prop="name" rules="required"> 
 | 
        <el-input v-model="dataForm.name"></el-input> 
 | 
      </zt-form-item> 
 | 
      <zt-form-item style="width:100%;" label=""> 
 | 
        <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> 
 | 
    </el-form> 
 | 
  </zt-dialog> 
 | 
</template> 
 | 
  
 | 
<script> 
 | 
  import {guid} from "../../../commonJS/common"; 
 | 
  import qs from "qs"; 
 | 
  import Cookies from "js-cookie"; 
 | 
  
 | 
  export default { 
 | 
    name:'assess-AddOrUpdate', 
 | 
    data() { 
 | 
      return { 
 | 
        dataForm: { 
 | 
          id:'', 
 | 
          name:'', 
 | 
          productId:'' 
 | 
        }, 
 | 
        progress: { 
 | 
          id: null, 
 | 
          speed: 0, 
 | 
          text: '', 
 | 
          start: false, 
 | 
          timer: null 
 | 
        }, 
 | 
        start: 0, 
 | 
        fileType: ['xlsx', 'xls'], 
 | 
        fileList:[], 
 | 
        apiURL:'', 
 | 
        itemId:'' 
 | 
      } 
 | 
    }, 
 | 
    methods: { 
 | 
      async init(id, param) { 
 | 
        if(id){ 
 | 
          this.dataForm.itemId=id 
 | 
          this.dataForm.id=id 
 | 
          this.dataForm.name=param.name 
 | 
        }else{ 
 | 
          let result = await this.$http.get(`/basicInfo/TyProductModel/getUuid`) 
 | 
          this.dataForm.itemId = result.data 
 | 
        } 
 | 
        this.dataForm.productId = param.productId 
 | 
        this.dataForm.shipName = param.shipName 
 | 
        this.resultData = [] 
 | 
        this.progress.id = guid() 
 | 
        let params = qs.stringify({ 
 | 
          token: Cookies.get('token'), 
 | 
          progressId: this.progress.id, 
 | 
          pid: this.dataForm.productId, 
 | 
          itemId: this.dataForm.itemId, 
 | 
        }) 
 | 
        this.apiURL = `${window.SITE_CONFIG['apiURL']}/taskReliability/ReliabilityAssess/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 = [] 
 | 
        this.$emit('refreshDataList') 
 | 
      }, 
 | 
      err(res, file, fileList) { 
 | 
        clearInterval(this.timer) 
 | 
        this.dataForm.speed = 0 
 | 
        this.$tip.error(res.msg) 
 | 
      }, 
 | 
      submitUpload() { 
 | 
        this.dataForm.speed = 0 
 | 
        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的文件') 
 | 
        } 
 | 
      }, 
 | 
      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 { 
 | 
          clearInterval(this.timer) 
 | 
        } 
 | 
      }, 
 | 
      // 表单提交 
 | 
      async formSubmit() { 
 | 
        let param={ 
 | 
          id:this.dataForm.itemId, 
 | 
          name:this.dataForm.name, 
 | 
          productId:this.dataForm.productId 
 | 
        } 
 | 
        let res 
 | 
        if (this.dataForm.id){ 
 | 
          res = await this.$http.post('/taskReliability/ReliabilityAssess/update', param) 
 | 
        }else{ 
 | 
          res = await this.$http.post('/taskReliability/ReliabilityAssess/add', param) 
 | 
        } 
 | 
        if (res.success) { 
 | 
          await this.$tip.success() 
 | 
          this.$refs.dialog.close() 
 | 
          this.$emit('refreshDataList') 
 | 
        } 
 | 
      }, 
 | 
  
 | 
    } 
 | 
  } 
 | 
</script> 
 |