import api from '../../api/api.js' Component({ /** * 组件的属性列表 */ properties: { source:{ value:'media', type:String }, bindData:{ value:{}, type:Object } }, /** * 组件的初始数据 */ data: { originFiles: [], filelist:[], attachmentids:[], gridConfig: { column: 5, width: 120, height: 120, }, config: { count: 1, }, timer:null, uploadCount:0 }, lifetimes:{ attached () { setTimeout(() => { this.fileData() }, 1000); } }, /** * 组件的方法列表 */ methods: { handleAdd (file) { console.log(file) let files = file.detail.files.map(e=>{ e.status = 'loading' return e }) this.setData({ uploadCount:files.length, originFiles:files, attachmentids:[] }) this.toSetFileData() }, handleClick () { let that = this wx.chooseMessageFile({ count: 10, type: 'file', success(res) { let arr = res.tempFiles.map(e=>{ return { name:e.name, url:e.path, type:e.type, } }) that.handleAdd({detail:{files:arr}}) } }) }, handleRemove (data) { console.log(data) let file = { currentTarget:{ dataset:{ item:data.detail.file } } } this.deleteFile(file) }, toSetFileData () { let files = this.data.originFiles for (let i = 0; i < files.length; i++) { // 初始化数据 let that = this, data = this.requestType(files[i]); data.content.filename = data.content.filename ? data.content.filename : `${Date.now()}.${data.content.filetype}`; //发送请求 wx.getFileSystemManager().readFile({ filePath: files[i].url, success: result => { //返回临时文件路径 const fileData = result.data; api._post(data).then(res => { if (res.msg == "成功") { that.uploadFile(res.data, fileData) } }) }, fail: console.error }) } this.data.timer = setInterval(e=>{ if (this.data.uploadCount === 0) { clearInterval(this.data.timer) this.filebindData() } }) }, /* 请求类型 */ 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": 2 // this.data.parentid } } }, /* 上传成功反馈 */ 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 => { that.setData({ originFiles:that.data.originFiles.map(e=>{ if (e.name === res.filename) { e.status = '' } return e }) }) that.data.attachmentids.push(rs.data.attachmentids[0]) that.setData({ uploadCount:that.data.uploadCount - 1 }) }).catch(err => { console.log(err) }) } }) }, async filebindData () { this.data.bindData.attachmentids = this.data.attachmentids const res = await api._post({ "classname": "system.attachment.Attachment", "method": "createFileLink", "content": this.data.bindData }) this.fileData() }, async fileData () { const res = await api._post({ "classname": "system.attachment.Attachment", "method": "queryFileLink", "content": this.data.bindData }) this.setData({ originFiles:res.data }) }, async deleteFile (data) { let item = data.currentTarget.dataset.item const res = await api._post({ "classname": "system.attachment.Attachment", "method": "deleteFileLink", "content": { "linksids": [item.linksid] } }) this.fileData() } } })