|
@@ -0,0 +1,107 @@
|
|
|
+<template>
|
|
|
+ <div>
|
|
|
+ <el-upload
|
|
|
+ action="http://macro-oss.oss-cn-shenzhen.aliyuncs.com"
|
|
|
+ :data="dataObj"
|
|
|
+ list-type="picture"
|
|
|
+ :multiple="false" :show-file-list="showFileList"
|
|
|
+ :file-list="fileList"
|
|
|
+ :before-upload="beforeUpload"
|
|
|
+ :on-remove="handleRemove"
|
|
|
+ :on-success="handleUploadSuccess"
|
|
|
+ :on-preview="handlePreview">
|
|
|
+ <el-button size="small" type="primary">点击上传</el-button>
|
|
|
+ <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过10MB</div>
|
|
|
+ </el-upload>
|
|
|
+ <el-dialog :visible.sync="dialogVisible">
|
|
|
+ <img width="100%" :src="fileList[0].url" alt="">
|
|
|
+ </el-dialog>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+<script>
|
|
|
+ import {policy} from '@/api/oss'
|
|
|
+
|
|
|
+ export default {
|
|
|
+ name: 'singleUpload',
|
|
|
+ props: {
|
|
|
+ value: String
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ imageUrl() {
|
|
|
+ return this.value;
|
|
|
+ },
|
|
|
+ imageName() {
|
|
|
+ if (this.value != null && this.value !== '') {
|
|
|
+ return this.value.substr(this.value.lastIndexOf("/") + 1);
|
|
|
+ } else {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ fileList() {
|
|
|
+ return [{
|
|
|
+ name: this.imageName,
|
|
|
+ url: this.imageUrl
|
|
|
+ }]
|
|
|
+ },
|
|
|
+ showFileList: {
|
|
|
+ get: function () {
|
|
|
+ return this.value !== null && this.value !== '';
|
|
|
+ },
|
|
|
+ set: function (newValue) {
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ dataObj: {
|
|
|
+ policy: '',
|
|
|
+ signature: '',
|
|
|
+ key: '',
|
|
|
+ ossaccessKeyId: '',
|
|
|
+ dir: '',
|
|
|
+ host: ''
|
|
|
+ },
|
|
|
+ dialogVisible: false
|
|
|
+ };
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ emitInput(val) {
|
|
|
+ this.$emit('input', val)
|
|
|
+ },
|
|
|
+ handleRemove(file, fileList) {
|
|
|
+ this.emitInput('');
|
|
|
+ },
|
|
|
+ handlePreview(file) {
|
|
|
+ this.dialogVisible = true;
|
|
|
+ },
|
|
|
+ beforeUpload(file) {
|
|
|
+ let _self = this;
|
|
|
+ return new Promise((resolve, reject) => {
|
|
|
+ policy().then(response => {
|
|
|
+ _self.dataObj.policy = response.data.policy;
|
|
|
+ _self.dataObj.signature = response.data.signature;
|
|
|
+ _self.dataObj.ossaccessKeyId = response.data.accessKeyId;
|
|
|
+ _self.dataObj.key = response.data.dir + '/${filename}';
|
|
|
+ _self.dataObj.dir = response.data.dir;
|
|
|
+ _self.dataObj.host = response.data.host;
|
|
|
+ resolve(true)
|
|
|
+ }).catch(err => {
|
|
|
+ console.log(err)
|
|
|
+ reject(false)
|
|
|
+ })
|
|
|
+ })
|
|
|
+ },
|
|
|
+ handleUploadSuccess(res, file) {
|
|
|
+ this.showFileList = true;
|
|
|
+ this.fileList.pop();
|
|
|
+ this.fileList.push({name: file.name, url: this.dataObj.host + '/' + this.dataObj.dir + '/' + file.name});
|
|
|
+ this.emitInput(this.fileList[0].url);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+</script>
|
|
|
+<style>
|
|
|
+
|
|
|
+</style>
|
|
|
+
|
|
|
+
|