You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
1.7 KiB
78 lines
1.7 KiB
4 years ago
|
// Utils
|
||
|
import { createNamespace } from '../../utils'; // Components
|
||
|
|
||
|
import Uploader from '../../uploader';
|
||
|
var namespace = createNamespace('sku-img-uploader');
|
||
|
var createComponent = namespace[0];
|
||
|
var t = namespace[2];
|
||
|
export default createComponent({
|
||
|
props: {
|
||
|
value: String,
|
||
|
uploadImg: Function,
|
||
|
maxSize: {
|
||
|
type: Number,
|
||
|
default: 6
|
||
|
}
|
||
|
},
|
||
|
data: function data() {
|
||
|
return {
|
||
|
fileList: []
|
||
|
};
|
||
|
},
|
||
|
watch: {
|
||
|
value: function value(val) {
|
||
|
if (val) {
|
||
|
this.fileList = [{
|
||
|
url: val,
|
||
|
isImage: true
|
||
|
}];
|
||
|
} else {
|
||
|
this.fileList = [];
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
methods: {
|
||
|
afterReadFile: function afterReadFile(file) {
|
||
|
var _this = this;
|
||
|
|
||
|
file.status = 'uploading';
|
||
|
file.message = t('uploading');
|
||
|
this.uploadImg(file.file, file.content).then(function (img) {
|
||
|
file.status = 'done';
|
||
|
|
||
|
_this.$emit('input', img);
|
||
|
}).catch(function () {
|
||
|
file.status = 'failed';
|
||
|
file.message = t('fail');
|
||
|
});
|
||
|
},
|
||
|
onOversize: function onOversize() {
|
||
|
this.$toast(t('oversize', this.maxSize));
|
||
|
},
|
||
|
onDelete: function onDelete() {
|
||
|
this.$emit('input', '');
|
||
|
}
|
||
|
},
|
||
|
render: function render() {
|
||
|
var _this2 = this;
|
||
|
|
||
|
var h = arguments[0];
|
||
|
return h(Uploader, {
|
||
|
"attrs": {
|
||
|
"maxCount": 1,
|
||
|
"afterRead": this.afterReadFile,
|
||
|
"maxSize": this.maxSize * 1024 * 1024
|
||
|
},
|
||
|
"on": {
|
||
|
"oversize": this.onOversize,
|
||
|
"delete": this.onDelete
|
||
|
},
|
||
|
"model": {
|
||
|
value: _this2.fileList,
|
||
|
callback: function callback($$v) {
|
||
|
_this2.fileList = $$v;
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
});
|