<view class="form-part else-part">
<view class="part-title else-title">
<view class="img-label">线下病历/处方({{imgList.length}}/{{maxImgList}})</view>
</view>
<view class="part-content img-box-wrap">
<view class="img-box" wx:for="{{imgList}}" wx:key="index">
<image src="{{ item.url }}" mode="aspectFill" />
<image class="icon-del" src="{{ icon.del }}" data-index="{{index}}" bind:tap="onImgDel" />
</view>
<view class="img-box upload" wx:if="{{imgList.length < maxImgList}}" bind:tap="onImgUpload">
<image src="{{ icon.upload }}" />
</view>
</view>
</view>
import { request, uploadFile, showErrorToast } from '../../utils/util'
data: {
maxImgList: 4,
imgList: [],
}
onImgUpload() {
const { maxImgList, imgList = [] } = this.data
wx.chooseImage({
count: maxImgList - imgList.length,
sizeType: ['original', 'compressed'],
sourceType: ['album', 'camera'],
success: (result) => {
const tempFilePaths = result.tempFilePaths
this.uploadToCloud(tempFilePaths)
},
fail: () => {
// on cancel
}
})
},
uploadToCloud(paths) {
const { maxImgList, imgList } = this.data
const uploadTasks = paths.map((path, index) => uploadFile(path))
Promise.all(uploadTasks)
.then(data => {
console.log('upload', data)
const newImgList = data.map(path => ({ url: path }))
const mergeList = imgList.concat(newImgList)
// 防止网速慢导致的图片超出限制,优先删除最早上传~=最快上传文件
this.setData({ imgList: mergeList.slice(-maxImgList) })
})
.catch(e => {
showErrorToast('上传失败')
console.log(e)
})
},
onImgDel(e) {
const { index } = e.target.dataset
const { imgList = [] } = this.data
imgList.splice(index, 1)
this.setData({ imgList })
},
微信小程序upload
最新推荐文章于 2024-05-30 15:42:53 发布