<template>
  <div class="upload-layout">
    <div v-if="file.downloadUrl" class="file-box">
      <div>
        <a-icon type="file" style="margin-right: 8px" />
        <span class="hover-pointer" @click="downloadfile">{{file.fileName}}</span>
      </div>
      <a-icon type="delete" class="hover-pointer" @click="deletefile" style="margin-left: 8px" />
    </div>
    <div v-else>
      <input type="file" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel" ref="fileElem" class="visually-hidden" @change="handleFiles">
      <a-button @click="fileSelect">
        <a-icon type="upload" />选择文件
      </a-button>
    </div>
  </div>
</template>
<script>
const File = { fileName: null, downloadUrl: null, fileExplain: null, downloadId: null }
export default {
  name: "FileUpload",
  data () {
    return {
      file: { ...File },
    };
  },
  props: {
    value: {
      type: String,
      default () {
        return null
      }
    }
  },
  created () {
    this.fileLoad(this.value)
  },
  methods: {
    fileLoad (value) {
    },
    fileSelect () {
      let fileElem = this.$refs['fileElem']
      if (fileElem) {
        fileElem.click()
      }
    },
    handleFiles () {
      let fileElem = this.$refs['fileElem']
      let files = fileElem.files
      if (files.length <= 0) {
        this.$message.error('未选中文件,请尝试重新选择')
        return
      }
      this.file.fileName = files[0].name
      this.file.downloadUrl = '/' + files[0].name
      this.$emit("beforeUpload", files[0]);
      //   this.$api.base.asyncUpload(this.uploadHandle(files[0], files[0].name)).then(({ data = {} }) => {
      //     this.file.downloadId = data.id
      //   }).catch(() => {
      //     this.$message.error('上传失败')
      //   })
      //   this.$emit("change");
    },
    downloadfile () {

    },
    deletefile () {
      this.file = { ...File }
      this.$emit("cancel");
    },
    uploadHandle (file, fileName) {
      let formData = new FormData()
      formData.append('file', file)
      formData.append('fileName', fileName)
      return formData
    },
  },
  watch: {
    value: {
      handler (value) {
        this.selected = value
      },
    }
  }
};
</script>
<style scoped lang="less">
.upload-layout {
  display: inline-block;
  margin: 0 10px;
  height: 30px;
  line-height: 30px;

  .file-box {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin: 0 8px;

    > div:nth-child(1) {
      max-width: 90%;
      overflow: hidden;
      text-overflow: ellipsis;
      white-space: nowrap;
    }
  }
  .visually-hidden {
    display: none !important;
  }
}
</style>