|
@@ -0,0 +1,186 @@ |
|
|
|
|
|
<template> |
|
|
|
|
|
<div class="van-ov-upload-root"> |
|
|
|
|
|
<van-uploader ref="van_uploader" |
|
|
|
|
|
capture="camera" |
|
|
|
|
|
v-model="value" |
|
|
|
|
|
:max-count="maxCount" |
|
|
|
|
|
preview-size="65px" |
|
|
|
|
|
@delete="deleteFile" |
|
|
|
|
|
@oversize="uploadFileOverSize" |
|
|
|
|
|
:loop="false" max-size="5242880"> |
|
|
|
|
|
<img class="el-ov-uploader-file" slot="default" @click.stop="showActionSheet($event)" |
|
|
|
|
|
src="../../assets/common/icon_upload.png" width="72px" |
|
|
|
|
|
alt=""> |
|
|
|
|
|
</van-uploader> |
|
|
|
|
|
</div> |
|
|
|
|
|
</template> |
|
|
|
|
|
|
|
|
|
|
|
<script> |
|
|
|
|
|
import {Toast} from "vant"; |
|
|
|
|
|
import {getFileInfoList} from "@/api/common"; |
|
|
|
|
|
|
|
|
|
|
|
export default { |
|
|
|
|
|
name: "van-ov-uploader", |
|
|
|
|
|
props: { |
|
|
|
|
|
value: { |
|
|
|
|
|
default: Array |
|
|
|
|
|
}, |
|
|
|
|
|
pictureid: { |
|
|
|
|
|
default: String |
|
|
|
|
|
}, |
|
|
|
|
|
maxCount: { |
|
|
|
|
|
default: 6 |
|
|
|
|
|
} |
|
|
|
|
|
}, |
|
|
|
|
|
data() { |
|
|
|
|
|
return { |
|
|
|
|
|
deleteFileIds: [], |
|
|
|
|
|
pictureList: [] |
|
|
|
|
|
} |
|
|
|
|
|
}, |
|
|
|
|
|
watch: { |
|
|
|
|
|
value: function (val) { |
|
|
|
|
|
this.deleteFileInput() |
|
|
|
|
|
} |
|
|
|
|
|
}, |
|
|
|
|
|
mounted() { |
|
|
|
|
|
this.deleteFileInput() |
|
|
|
|
|
}, beforeUpdate() { |
|
|
|
|
|
this.deleteFileInput() |
|
|
|
|
|
}, |
|
|
|
|
|
updated() { |
|
|
|
|
|
this.deleteFileInput() |
|
|
|
|
|
}, |
|
|
|
|
|
methods: { |
|
|
|
|
|
deleteFileInput() { |
|
|
|
|
|
document.getElementsByClassName('van-uploader__input')[0].remove() |
|
|
|
|
|
}, |
|
|
|
|
|
showActionSheet(event) { |
|
|
|
|
|
event.preventDefault(); |
|
|
|
|
|
let that = this |
|
|
|
|
|
uexWindow.actionSheet({ |
|
|
|
|
|
title: "", |
|
|
|
|
|
cancel: "取消", |
|
|
|
|
|
buttons: "拍照上传,本地上传" |
|
|
|
|
|
}, function (index) { |
|
|
|
|
|
if (index == 0) { |
|
|
|
|
|
try { |
|
|
|
|
|
uexCamera.open(1, '', function (data) { |
|
|
|
|
|
let uploader = uexUploaderMgr.create({ |
|
|
|
|
|
url: process.env.VUE_APP_BASE_API + "/api/mongodb/fileInfo/uploadFileInfo?parentId=" + that.pictureid, |
|
|
|
|
|
type: 1 |
|
|
|
|
|
}); |
|
|
|
|
|
if (!uploader) { |
|
|
|
|
|
alert("创建失败!"); |
|
|
|
|
|
} |
|
|
|
|
|
uexUploaderMgr.uploadFile(uploader, data, "file", 1, 640, function (packageSize, percent, responseString, status) { |
|
|
|
|
|
if (status == 1) { |
|
|
|
|
|
let data = { |
|
|
|
|
|
parentId: that.pictureid, |
|
|
|
|
|
} |
|
|
|
|
|
this.pictureList = [] |
|
|
|
|
|
getFileInfoList(data).then((resp) => { |
|
|
|
|
|
if (resp.code == 1 && resp.data.rows.length != 0) { |
|
|
|
|
|
let item = resp.data.rows[resp.data.rows.length - 1] |
|
|
|
|
|
that.value.push({ |
|
|
|
|
|
url: process.env.VUE_APP_BASE_API + '/api/mongodb/downloadFile?fileId=' + item.id, |
|
|
|
|
|
isImage: true |
|
|
|
|
|
}) |
|
|
|
|
|
that.deleteFileInput() |
|
|
|
|
|
} |
|
|
|
|
|
}).catch() |
|
|
|
|
|
} else if (status == 2) { |
|
|
|
|
|
alert("上传失败"); |
|
|
|
|
|
} |
|
|
|
|
|
that.deleteFileInput() |
|
|
|
|
|
}); |
|
|
|
|
|
}) |
|
|
|
|
|
} catch (e) { |
|
|
|
|
|
alert(JSON.stringify(e)) |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} else if (index == 1) { |
|
|
|
|
|
//打开多图片选择器 |
|
|
|
|
|
var data = { |
|
|
|
|
|
min: 1, |
|
|
|
|
|
max: 1, |
|
|
|
|
|
quality: 1, |
|
|
|
|
|
detailedInfo: true, |
|
|
|
|
|
// style: 1, |
|
|
|
|
|
}; |
|
|
|
|
|
uexImage.openPicker(data, function (error, info) { |
|
|
|
|
|
if (error == -1) { |
|
|
|
|
|
} else if (error == 0) { |
|
|
|
|
|
if (info.detailedImageInfo) { |
|
|
|
|
|
info.detailedImageInfo.map(async (item) => { |
|
|
|
|
|
var uploader = uexUploaderMgr.create({ |
|
|
|
|
|
url: process.env.VUE_APP_BASE_API + "/api/mongodb/fileInfo/uploadFileInfo?parentId=" + that.pictureid, |
|
|
|
|
|
type: 1 |
|
|
|
|
|
}); |
|
|
|
|
|
if (!uploader) { |
|
|
|
|
|
alert("创建失败!"); |
|
|
|
|
|
} |
|
|
|
|
|
uexUploaderMgr.uploadFile(uploader, item.localPath, "file", 0, 640, function (packageSize, percent, responseString, status) { |
|
|
|
|
|
if (status == 1) { |
|
|
|
|
|
let data = { |
|
|
|
|
|
parentId: that.pictureid, |
|
|
|
|
|
} |
|
|
|
|
|
this.pictureList = [] |
|
|
|
|
|
getFileInfoList(data).then((resp) => { |
|
|
|
|
|
if (resp.code == 1 && resp.data.rows.length != 0) { |
|
|
|
|
|
let item = resp.data.rows[resp.data.rows.length - 1] |
|
|
|
|
|
that.value.push({ |
|
|
|
|
|
url: process.env.VUE_APP_BASE_API + '/api/mongodb/downloadFile?fileId=' + item.id, |
|
|
|
|
|
isImage: true |
|
|
|
|
|
}) |
|
|
|
|
|
} |
|
|
|
|
|
that.deleteFileInput() |
|
|
|
|
|
}) |
|
|
|
|
|
} |
|
|
|
|
|
}) |
|
|
|
|
|
}) |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
}); |
|
|
|
|
|
that.deleteFileInput() |
|
|
|
|
|
} |
|
|
|
|
|
}); |
|
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
deleteFile(obj) { |
|
|
|
|
|
let url = obj.url |
|
|
|
|
|
let fileId = url.substr(url.lastIndexOf("fileId=") + 7) |
|
|
|
|
|
this.deleteFileIds.push(fileId) |
|
|
|
|
|
} |
|
|
|
|
|
, |
|
|
|
|
|
uploadFileOverSize(obj) { |
|
|
|
|
|
Toast("图片大小超出限制,图片大小应在 5MB 之内"); |
|
|
|
|
|
} |
|
|
|
|
|
, |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
</script> |
|
|
|
|
|
|
|
|
|
|
|
<style lang="scss"> |
|
|
|
|
|
.van-ov-upload-root { |
|
|
|
|
|
.van-uploader__input-wrapper { |
|
|
|
|
|
width: 72px; |
|
|
|
|
|
height: 72px; |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.el-ov-uploader-file { |
|
|
|
|
|
position: absolute; |
|
|
|
|
|
top: 0; |
|
|
|
|
|
left: 0; |
|
|
|
|
|
width: 72px; |
|
|
|
|
|
height: 72px; |
|
|
|
|
|
overflow: hidden; |
|
|
|
|
|
cursor: pointer; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
</style> |
|
|
|
|
|
———————————————— |
|
|
|
|
|
版权声明:本文为CSDN博主「bydongxin」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 |
|
|
|
|
|
原文链接:https://blog.csdn.net/bydongxin/article/details/108367086 |