123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- <template>
- <div class="upload-container">
- <el-button :style="{background:color,borderColor:color}" icon="el-icon-upload" size="mini" type="primary" @click=" dialogVisible=true">
- upload
- </el-button>
- <el-dialog :visible.sync="dialogVisible">
- <el-upload
- :multiple="true"
- :file-list="fileList"
- :show-file-list="true"
- :on-remove="handleRemove"
- :on-success="handleSuccess"
- :before-upload="beforeUpload"
- class="editor-slide-upload"
- action="https://httpbin.org/post"
- list-type="picture-card"
- >
- <el-button size="small" type="primary">
- Click upload
- </el-button>
- </el-upload>
- <el-button @click="dialogVisible = false">
- Cancel
- </el-button>
- <el-button type="primary" @click="handleSubmit">
- Confirm
- </el-button>
- </el-dialog>
- </div>
- </template>
- <script>
- // import { getToken } from 'api/qiniu'
- export default {
- name: 'EditorSlideUpload',
- props: {
- color: {
- type: String,
- default: '#1890ff'
- }
- },
- data() {
- return {
- dialogVisible: false,
- listObj: {},
- fileList: []
- }
- },
- methods: {
- checkAllSuccess() {
- return Object.keys(this.listObj).every(item => this.listObj[item].hasSuccess)
- },
- handleSubmit() {
- const arr = Object.keys(this.listObj).map(v => this.listObj[v])
- if (!this.checkAllSuccess()) {
- this.$message('Please wait for all images to be uploaded successfully. If there is a network problem, please refresh the page and upload again!')
- return
- }
- this.$emit('successCBK', arr)
- this.listObj = {}
- this.fileList = []
- this.dialogVisible = false
- },
- handleSuccess(response, file) {
- const uid = file.uid
- const objKeyArr = Object.keys(this.listObj)
- for (let i = 0, len = objKeyArr.length; i < len; i++) {
- if (this.listObj[objKeyArr[i]].uid === uid) {
- this.listObj[objKeyArr[i]].url = response.files.file
- this.listObj[objKeyArr[i]].hasSuccess = true
- return
- }
- }
- },
- handleRemove(file) {
- const uid = file.uid
- const objKeyArr = Object.keys(this.listObj)
- for (let i = 0, len = objKeyArr.length; i < len; i++) {
- if (this.listObj[objKeyArr[i]].uid === uid) {
- delete this.listObj[objKeyArr[i]]
- return
- }
- }
- },
- beforeUpload(file) {
- const _self = this
- const _URL = window.URL || window.webkitURL
- const fileName = file.uid
- this.listObj[fileName] = {}
- return new Promise((resolve, reject) => {
- const img = new Image()
- img.src = _URL.createObjectURL(file)
- img.onload = function() {
- _self.listObj[fileName] = { hasSuccess: false, uid: file.uid, width: this.width, height: this.height }
- }
- resolve(true)
- })
- }
- }
- }
- </script>
- <style lang="scss" scoped>
- .editor-slide-upload {
- margin-bottom: 20px;
- /deep/ .el-upload--picture-card {
- width: 100%;
- }
- }
- </style>
|