1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import uploader from '@/plugins/uploader/index.js'
import { RUN, ERROR } from "@/common/log.js"
const getNetworkType = function() {
return new Promise((resolve, reject) => {
uni.getNetworkType({
success (res) {
resolve(res.networkType)
},
fail (res) {
resolve('获取失败')
}
})
})
}
export default {
/**
* 执行任务队列
*/
async uploadImageTask(that) {
const uploadTask = JSON.parse(JSON.stringify(that.uploadTask)).reverse()
const networkType = await getNetworkType()
const options = {
files: uploadTask, // 必填 临时文件路径 格式: [{path: "图片地址"}]
load: false, //(默认 true 说明:本接口是否提示加载动画)
onEachUpdate: res => {
console.log("上传成功返回:",res);
const log = {
...res,
mobile: that.vuex_user.mobile,
networkType: networkType
}
delete log.files
RUN('upload_photo_success', log)
},
onProgressUpdate: res => {
//console.log("上传进度返回:",res);
}
}
uploader.qnFileUpload(options).then(res => {
this.refreshTask(that, res)
}).catch(err => {
console.log("err", err)
err.mobile = that.vuex_user.mobile
if(!err.key) err.files = uploadTask
if(!err.orderNumber) err.orderNumber = uploadTask[0].orderNumber
if(!err.networkType) err.networkType = networkType
ERROR('upload_photo_error', err)
if (err.errMsg && (err.errMsg.indexOf('fail file not found') !== -1 || err.errMsg.indexOf('file doesn') !== -1)) { // 在任务中删除不存在的图片
const newTask = uploadTask.filter(v => v.key !== err.key)
that.$u.vuex('uploadTask', newTask)
}
})
},
refreshTask(that, result) {
const uploadTask = JSON.parse(JSON.stringify(that.uploadTask)).reverse()
let newTask = []
uploadTask.forEach(v => {
if (!result.includes(`/${v.key}`)) { // 删除已上传的图片
newTask.push(v)
}
})
// uni.setStorageSync('delImg', delImg) // 已上传完的图片,会在启动系统的时候做一次清理
that.$u.vuex('uploadTask', newTask)
}
}