import api from '../../api/api.js'
let waitBindings = []; //等待绑定的附件
Component({
  properties: {
    source: {
      value: 'media',
      type: String
    },
    parentid: {
      type: String,
      value: wx.getStorageSync('siteP').appfolderid
    },
    originFiles: Array
  },
  data: {
    gridConfig: {
      column: 5,
      width: 120,
      height: 120,
    },
    config: {
      count: 1,
    }
  },
  methods: {
    handleAdd(file) {
      this.toSetFileData(file.detail.files.map(e => {
        e.status = 'loading'
        return e
      }))
    },
    toSetFileData(files) {
      let that = this;
      this.setData({
        originFiles: this.data.originFiles.concat(files)
      });
      for (let i = 0; i < files.length; i++) {
        // 初始化数据
        let params = this.requestType(files[i]);
        params.content.filename = params.content.filename ? params.content.filename : `${Date.now()}.${params.content.filetype}`;
        //发送请求
        wx.getFileSystemManager().readFile({
          filePath: files[i].url,
          success: ({
            data
          }) => api._post(params).then(res => res.msg == "成功" && that.uploadFile(res.data, data)),
          fail: console.error
        })
      }
    },
    /* 上传成功反馈 */
    uploadFile(res, data) {
      var that = this;
      wx.request({
        url: res.uploadurl,
        method: "PUT",
        data: data,
        header: {
          'content-type': 'application/octet-stream'
        },
        success(a) {
          api._post({
            "classname": "system.attachment.huawei.OBS",
            "method": "uploadSuccess",
            "content": {
              "serialfilename": res.serialfilename
            }
          }).then(rs => {
            console.log("上传附件反馈", rs)
            waitBindings.push(rs.data.attachmentids[0] || "");
            let data = that.data.originFiles.find(e => e.name === res.filename);
            if (data) {
              data.status = '';
              data.attachmentids = rs.data.attachmentids[0]
            }
            that.setData({
              originFiles: that.data.originFiles
            })
          }).catch(err => {
            console.log(err)
          })
        }
      })
    },
    async handleRemove(data) {

      let file = data.detail.file;
      if (file.linksid) {
        const res = await api._post({
          "classname": "system.attachment.Attachment",
          "method": "deleteFileLink",
          "content": {
            "linksids": [file.linksid]
          }
        })
        if (res.msg == '成功') this.setData({
          originFiles: this.data.originFiles.filter(e => e.linksid !== file.linksid),
        })
      } else {
        waitBindings = waitBindings.filter(e => e !== file.attachmentids);
        this.setData({
          originFiles: this.data.originFiles.filter(e => e.attachmentids !== file.attachmentids),
        })
      }
    },
    /* 请求类型 */
    requestType(file) {
      var index = file.url.lastIndexOf(".");
      var ext = file.url.substr(index + 1);
      //文件名称
      return {
        "classname": "system.attachment.huawei.OBS",
        "method": "getFileName",
        "content": {
          "filename": file.name,
          "filetype": ext,
          "parentid": this.data.parentid
        }
      }
    },
    handleBind() {
      let arr = JSON.parse(JSON.stringify(waitBindings));
      waitBindings = [];
      return arr;
    }
  }
})