Skip to content

Commit f6faac4

Browse files
committed
fix(imgUpload): 修复新增图片修改后状态不对的问题
1 parent 0ae39ae commit f6faac4

1 file changed

Lines changed: 42 additions & 41 deletions

File tree

src/components/base/upload-imgs/index.vue

Lines changed: 42 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ function createItem(data = null, oldData = {}) {
146146
if (!data.id) {
147147
if (oldData) {
148148
// 如果旧数据状态是输入框, 则为新图片
149-
if (oldData.status === 'input') {
149+
if (oldData.status === 'input' || oldData.status === 'new') {
150150
item.status = 'new'
151151
}
152152
// 如果旧数据状态是初始化 init, 则为修改
@@ -418,6 +418,36 @@ export default {
418418
// 初始化 Draggable
419419
},
420420
methods: {
421+
async uploadImg(item) {
422+
this.$axios({
423+
method: 'post',
424+
url: '/cms/file/',
425+
data: {
426+
file: item.file,
427+
},
428+
}).then((res) => {
429+
if (!Array.isArray(res) || res.length !== 1) {
430+
throw new Error('upload error')
431+
}
432+
// 释放内存
433+
window.URL.revokeObjectURL(item.display)
434+
// eslint-disable-next-line
435+
item.display = res[0].url
436+
// eslint-disable-next-line
437+
item.src = res[0].key
438+
// eslint-disable-next-line
439+
item.file = null
440+
// eslint-disable-next-line
441+
item.loading = false
442+
return item
443+
}).catch((err) => {
444+
// eslint-disable-next-line
445+
item.loading = false
446+
console.error(err)
447+
this.$message.error('图像上传失败, 请重试')
448+
return false
449+
})
450+
},
421451
async getValue() {
422452
const { itemList, isStable, min } = this
423453
@@ -435,46 +465,15 @@ export default {
435465
}
436466
// 提取需要上传文件
437467
const asyncList = []
438-
// 上传文件后获取对应key值
439-
const getAsyncItem = (item) => {
440-
if (!item.file) {
441-
return Promise.resolve(item)
442-
}
443-
// eslint-disable-next-line
444-
item.loading = true
445-
return this.$axios({
446-
method: 'post',
447-
url: '/cms/file/',
448-
data: {
449-
file: item.file,
450-
},
451-
}).then((res) => {
452-
if (!Array.isArray(res) || res.length !== 1) {
453-
throw new Error('upload error')
454-
}
455-
// 释放内存
456-
window.URL.revokeObjectURL(item.display)
457-
// eslint-disable-next-line
458-
item.display = res[0].url
459-
// eslint-disable-next-line
460-
item.src = res[0].key
461-
// eslint-disable-next-line
462-
item.file = null
463-
// eslint-disable-next-line
464-
item.loading = false
465-
return item
466-
}).catch((err) => {
467-
// eslint-disable-next-line
468-
item.loading = false
469-
console.error(err)
470-
this.$message.error('图像上传失败, 请重试')
471-
return false
472-
})
473-
}
468+
474469
for (let i = 0; i < itemList.length; i += 1) {
475470
// 跳过上传组件
476-
if (itemList[i].status !== 'input') {
477-
asyncList.push(getAsyncItem(itemList[i]))
471+
if (itemList[i].status === 'input') return
472+
if (!itemList[i].file) {
473+
asyncList.push(Promise.resolve(itemList[i]))
474+
} else {
475+
// 上传文件后获取对应key值
476+
asyncList.push(this.uploadImg(itemList[i]))
478477
}
479478
}
480479
const imgInfoList = await Promise.all(asyncList)
@@ -620,7 +619,7 @@ export default {
620619
* 选择图像文件后处理, 包括获取图像信息, 验证图像等
621620
*/
622621
async handleChange(e) {
623-
const { currentId } = this
622+
const { currentId, autoUpload } = this
624623
const { files } = e.target
625624
let imgInfoList
626625
@@ -650,9 +649,11 @@ export default {
650649
}
651650
try {
652651
imgInfoList = await Promise.all(asyncList)
653-
console.log(imgInfoList)
654652
// 设置图片信息
655653
await this.setImgInfo(imgInfoList, currentId)
654+
if (autoUpload) {
655+
656+
} else {}
656657
} catch (err) {
657658
// 清空缓存
658659
for (let i = 0; i < cache.length; i += 1) {

0 commit comments

Comments
 (0)