import { createNamespace } from '../../utils'; import Icon from '../../icon'; import Loading from '../../loading'; import Uploader from '../../uploader'; const [createComponent, bem, t] = createNamespace('sku-img-uploader'); export default createComponent({ props: { value: String, uploadImg: Function, maxSize: { type: Number, default: 6 } }, data() { return { // 正在上传的图片 base64 paddingImg: '', uploadFail: false }; }, methods: { afterReadFile(file) { // 上传文件 this.paddingImg = file.content; this.uploadFail = false; this.uploadImg(file.file, file.content) .then(img => { this.$emit('input', img); this.$nextTick(() => { this.paddingImg = ''; }); }) .catch(() => { this.uploadFail = true; }); }, onOversize() { this.$toast(t('oversize', this.maxSize)); }, genUploader(content, disabled = false) { return (
{content}
); }, genMask() { return (
{this.uploadFail ? ( [ ,
] ) : ( )}
); } }, render() { return (
{this.value && this.genUploader( [ , { this.$emit('input', ''); }} /> ], true )} {this.paddingImg && this.genUploader( [ , this.genMask() ], !this.uploadFail )} {!this.value && !this.paddingImg && this.genUploader(
)}
); } });