Requirements
1.监听当前单元格并修改当前单元格,存在 bug,对方必须使用 setTimeout
Install
From npm:
$ npm install vue-upload-drag -D
Usage
import VueUploadDrag from "vue-upload-drag";
Vue.use(VueUploadDrag);
<template>
<upload-drag v-model="fileList" :config="config" />
</template>
API
{onChange} Function
{onProgress} Function
{onError} Function
{onSuccess} Function 必须接受,并回调exChangeUrl方法
slot
具名插槽:loading,用于自定义loading,结合config.loading用
具名插槽:imgBtns,用于自定义imgBtns,结合config.imgBtns用
具名插槽:liItem,该插槽是在li元素根节点
Arguments:
export default {
name: "uploadDrag",
props: {
value: {
required: true,
type: Array
},
config: {
required: false,
type: Object,
default: _ => ({
accept: "image/*",
action: "https://jsonplaceholder.typicode.com/posts/",
data: {},
limit: 9,
multiple: true,
imgUrl: "url",
deleteBtnName: "删除",
viewBtnName: "查看",
dragabled: true,
imgBtns: ["删除", "查看"],
loading: true,
isHttpRequest: false,
uploadField: "file"
})
}
}
};
Example
<template>
<upload-drag
v-model="fileList"
:config="config"
@onChange="onChange"
@onProgress="onProgress"
@picsExceed="picsExceed"
@onError="onError"
@onSuccess="onSuccess"
/>
</template>
import VueUploadDrag from "vue-upload-drag";
Vue.use(VueUploadDrag);
export default {
data() {
return {
fileList: [
{
name: "food.jpg",
url: "https://www.baidu.com/img/bd_logo1.png",
id: 11
}
],
config: {
limit: 1
}
};
},
methods: {
onChange(f) {
console.log(f);
},
onProgress({ e, file, uid }) {
console.log(e, file, uid);
},
onError({ err, file, uid }) {
alert("图片上传失败");
console.log(err, file, uid);
},
picsExceed({ uploadBefore, selectCount, files, value }) {
alert("选择的图片数量超过最大数");
uploadBefore(files, value);
},
onSuccess({ res, file, _uid, exChangeUrl, handleRemove }) {
console.log(res, file, _uid, exChangeUrl, handleRemove);
if (res.code === "0") {
const { url } = res.data;
exChangeUrl(_uid, url);
} else {
alert("图片上传失败");
handleRemove(_uid);
}
}
}
};