remitAccountUploadModal.vue 5.55 KB
<template>
<a-modal
      :visible="visible"
      :title="title"
      :maskClosable="false" 
      :centered='true'
      :confirmLoading="confirmLoading"
      @ok="handleSubmit"
      @cancel="handleCancel"
      cancelText="关闭"
    >
    <a-spin :spinning="confirmLoading">
      <a-form :form="form" >
          <!-- <a-form-item label="上传文件" :labelCol="{xs: { span: 8 },sm: { span: 5 }}" :wrapperCol="wrapperCol" extra="">
            <a-upload
              v-decorator="[
                  'fileUrl',
                  {
                    getValueFromEvent: normFile,
                  },
                  { rules: [{ required: true, message: '请选择文件上传' }] }
                ]"
              name="file"
              :action="url.upload"
              @preview="handlePreview"
              @change="handleChange"
              :disabled="fileList.length >= 1">
              <a-button v-if="fileList.length < 1">
                <a-icon type="upload" />upload
              </a-button>
            </a-upload>
          </a-form-item>
          <a-form-item label="模板下载" :labelCol="{xs: { span: 8 },sm: { span: 5 }}" :wrapperCol="wrapperCol" extra="">
            <a-button icon="download" @click="handleDownload">Download</a-button>
          </a-form-item> -->

          <a-form-item label="上传文件" :labelCol="{xs: { span: 8 },sm: { span: 5 }}" :wrapperCol="wrapperCol" extra=""
          >
            <input 
              id="file" 
              type="file" 
              accept=".xls,.xlsx" 
              ref="uploadFile" 
              @change="handleFile" 
              name="file"
              style="opacity: 0;position: absolute;width: 100%;height: 100%;top: 0;left: 0;z-index:10"  />
            <a-button v-if="!failName" icon="download" style="position:relative;">上传</a-button>
            <div v-if="failName" style="color:#1890FF;"> {{failName}}</div>
          </a-form-item>

          <a-form-item label="模板下载" :labelCol="{xs: { span: 8 },sm: { span: 5 }}" :wrapperCol="wrapperCol" extra="">
            <a-button icon="download" @click="handleDownload('模板下载')">下载</a-button>
            <a v-show="failShow" @click="downListFail('校验失败的白名单记录')" style="color:red;">校验失败的白名单记录下载</a>
          </a-form-item>


      </a-form>
    </a-spin>
</a-modal>

</template>
<script>
  import store from '@/store'
  import pick from 'lodash.pick'
  import { importRemitAccounts, exportRemitAccountFails } from '@/api/insys'
  import { downFile } from '@/api/configApi'
  export default {
    name: "repayFlowUploadModal",
    data () {
      return {
        visible: false,
        confirmLoading: false,
        title: '',
        validatorRules:{
          fileAttachmentNo: {
            rules:[{
              required: true,
              message: '请输入上传配置编号'
            }]
          },
        },
        labelCol: {
          xs: { span: 24 },
          sm: { span: 8 },
        },
        wrapperCol: {
          xs: { span: 24 },
          sm: { span: 16 },
        },
        form: this.$form.createForm(this),
        model: {},
        url: {
          upload:  window._CONFIG['uploadUrl'],
          exportXlsUrl: "/config/admin/remitAccountExcelTemp", 
          importExcelUrl: "/config/admin/remitAccountExcelTemp",
        },
        fileList: [],
        failName:'',
        failShow:''
      }
    },
    methods: {
      handleFile(e){
        this.fileList = this.$refs.uploadFile.files[0];
        this.failName = this.$refs.uploadFile.files[0].name
        console.log(this.fileList)
      },
      handleDownload(fileName){
        downFile(this.url.exportXlsUrl).then(data => {
          console.log(data)
          if (!data) {
            this.$message.warning("文件下载失败")
            return
          }
          if (typeof window.navigator.msSaveBlob !== 'undefined') {
            window.navigator.msSaveBlob(new Blob([data]), fileName+'.xlsx')
          }else{
            let url = window.URL.createObjectURL(new Blob([data]))
            let link = document.createElement('a')
            link.style.display = 'none'
            link.href = url
            link.setAttribute('download', fileName+'.xlsx')
            document.body.appendChild(link)
            link.click()
            document.body.removeChild(link); //下载完成移除元素
            window.URL.revokeObjectURL(url); //释放掉blob对象
          }
        })
      },
      add (val) {
        this.model = val
        this.form.resetFields();
        this.visible = true;
        this.$nextTick(() => {
          this.form.setFieldsValue();
          this.disabled = false
        });
      },

      close () {
        this.$emit('close');
        this.visible = false;
        this.disableSubmit = false;
        this.fileList = [];
        this.failName = ''
      },
      handleSubmit () {
        // 触发表单验证
        let that = this
        const formData = new FormData();
        formData.append('remitAccountsFile', this.fileList);
        importRemitAccounts(formData).then((res)=>{
          if(res.status.statusCode == 0){
            this.$message.success(res.status.statusReason);
            this.$emit('ok');
          }else{
            this.$message.warning(res.status.statusReason);
          }
        }).finally(() => {
          this.confirmLoading = false;
          this.refresh()
          this.close();
        });
      },
      handleCancel () {
        this.close()
      },
      refresh(){
        this.fileList = [];
      }
    }
  }
</script>
<style scoped>

</style>