UNPKG

captain-ui

Version:

有赞vue wap业务组件库

166 lines (147 loc) 4.05 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.default = void 0; require("vant/es/toast/style"); var _toast = _interopRequireDefault(require("vant/es/toast")); var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); require("vant/es/uploader/style"); var _uploader = _interopRequireDefault(require("vant/es/uploader")); var _upload2 = require("./utils/upload"); var _default = { render: function render() { var _vm = this; var _h = _vm.$createElement; var _c = _vm._self._c || _h; return _c('van-uploader', { class: _vm.extraCls, attrs: { "multiple": false, "disabled": _vm.uploading, "before-read": _vm.beforeRead, "after-read": _vm.afterRead } }, [_c('div', { staticClass: "uploader__content" }, [_c('div', { class: ['uploader__shape', { 'uploader__border': !_vm.image.preview && !_vm.image.url }] }, [_vm.image.preview || _vm.image.url ? _c('div', { staticClass: "uploader__preview", style: { background: "url('" + (_vm.image.preview || _vm.image.url) + "') center / contain no-repeat" } }) : _c('div', { staticClass: "uploader__sample", style: { background: "url('" + _vm.sample + "') 0 / 100% no-repeat" } }), _c('span', { directives: [{ name: "show", rawName: "v-show", value: _vm.image.done === false, expression: "image.done === false" }], staticClass: "uploader__indicator" })]), _c('p', { staticClass: "uploader__desc" }, [_vm._v("\n " + _vm._s(_vm.image.done ? '重新拍摄' : '点击拍摄') + "\n "), _c('span', { staticClass: "uploader__label" }, [_vm._v(_vm._s(_vm.label))])])])]); }, name: 'image-uploader', components: { 'van-uploader': _uploader.default }, props: { value: { type: String, default: '' }, extraCls: { type: String, default: '' }, sample: { type: String, required: true }, label: { type: String, required: true }, maxSize: { type: Number, default: Number.MAX_VALUE }, tokenUrl: { type: String, required: true } }, data: function data() { var value = this.value; return { image: { url: value.replace(/^http:/i, '') }, uploading: false }; }, watch: { value: function value(val, old) { if (val !== old) { var url = this.image.url; if (val !== url) { this.image = { url: val }; } } } }, methods: { upload: function upload(image) { var _this = this; var imageFile = image.file; var tokenUrl = this.tokenUrl; var copy = (0, _extends2.default)({}, image); this.uploading = true; (0, _upload2.upload)([imageFile], tokenUrl).then(function (_ref) { var url = _ref[0]; if (url === '') { _this.image = {}; _this.uploading = false; return (0, _toast.default)('图片上传失败'); } copy.done = true; copy.url = url; _this.image = copy; _this.uploading = false; _this.$emit('change', url); }); }, beforeRead: function beforeRead(image) { var maxSize = this.maxSize; var overSize = image.size > maxSize; if (overSize) { var megabyte = (maxSize / 1024 / 1024).toFixed(1); (0, _toast.default)("\u56FE\u7247\u5C3A\u5BF8\u8D85\u8FC7\u9650\u5236\uFF0C\u6700\u5927\u4E3A" + megabyte + "M"); return false; } return true; }, afterRead: function afterRead(image) { var tokenUrl = this.tokenUrl; this.image = { preview: image.content, file: image.file, done: false }; this.upload(this.image, tokenUrl); } } }; exports.default = _default;