| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- <template>
- <div class="upload-container">
- <!--<el-button :style="{background:color,borderColor:color}" icon="el-icon-upload" size="mini" type="primary" @click="opUpload('img')">上传图片-->
- <!--</el-button>-->
- <!--<el-button :style="{background:color,borderColor:color}" icon="el-icon-upload" size="mini" type="primary" @click="opUpload('video')">上传视频-->
- <!--</el-button>-->
- <el-dialog :visible.sync="dialogVisible" :modal="false">
- <el-upload v-if="uploadType === 'file'"
- :multiple="true"
- :file-list="fileList"
- :show-file-list="true"
- :on-remove="handleRemove"
- :on-success="handleSuccess"
- :before-upload="beforeUpload"
- :accept="'.pdf,.ppt,.pptx,.xls,.xml,.wps,.xlsx,.doc,.docx,.txt,.rtf,.md'"
- class="editor-slide-upload"
- :on-error="onError"
- :list-type="'text'"
- :action="uploadFileUrl">
- <el-button size="small" type="primary">点击上传附件</el-button>
- </el-upload>
- <el-upload v-else
- :multiple="true"
- :file-list="fileList"
- :show-file-list="true"
- :on-remove="handleRemove"
- :on-error="onError"
- :on-success="handleSuccess"
- :before-upload="beforeUpload"
- :accept="uploadType === 'img'? 'image/*':'.mp4,.mov,.avi'"
- class="editor-slide-upload"
- :list-type="uploadType === 'img'? 'picture-card': 'text'"
- :action="uploadType === 'img'? uploadUrl:uploadVideoUrl">
- <el-button v-if="uploadType === 'img'" size="small" type="primary">点击上传图片</el-button>
- <el-button v-else size="small" type="primary">点击上传视频</el-button>
- </el-upload>
- <el-button @click="dialogVisible = false">取 消</el-button>
- <el-button type="primary" @click="handleSubmit">确 定</el-button>
- </el-dialog>
- </div>
- </template>
- <script>
- // import { getToken } from 'api/qiniu'
- export default {
- name: 'EditorSlideUpload',
- props: {
- color: {
- type: String,
- default: '#2973fd'
- }
- },
- data() {
- return {
- uploadUrl: "",
- uploadFileUrl: "",
- uploadVideoUrl: "",
- dialogVisible: false,
- listObj: {},
- fileList: [],
- uploadType: 'img',
- }
- },
- mounted() {
- this.uploadUrl = this.fun.getRealUrl("upload.uploadPic", {});
- this.uploadFileUrl = this.fun.getRealUrl("upload.uploadPic", {upload_type: 'file'});
- this.uploadVideoUrl = this.fun.getRealUrl("upload.uploadPic", {upload_type: 'videos'});
- },
- methods: {
- opUpload(str) {
- this.uploadType = str;
- this.dialogVisible=true
- },
- checkAllSuccess() {
- return Object.keys(this.listObj).every(item => this.listObj[item].hasSuccess)
- },
- handleSubmit() {
- console.log(this.listObj)
- const arr = Object.keys(this.listObj).map(v => this.listObj[v])
- if (!this.checkAllSuccess()) {
- this.$message('请等待所有图片上传成功 或 出现了网络问题,请刷新页面重新上传!')
- return
- }
- this.$emit('successCBK', {uploadType: this.uploadType, arr: arr})
- this.listObj = {}
- this.fileList = []
- this.dialogVisible = false
- },
- handleSuccess(response, file) {
- if(response.result == 0) {
- this.$message.error(response.msg);
- return;
- }
- 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.data.img_url
- 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) => {
- if(this.uploadType ==='img') {
- 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 }
- }
- }else {
- _self.listObj[fileName] = { hasSuccess: false, uid: file.uid, width: 0, height: 0, name: file.name }
- }
- resolve(true)
- })
- },
- onError(err) {
- console.log(err)
- }
- }
- }
- </script>
- <style rel="stylesheet/scss" lang="scss" scoped>
- .editor-slide-upload {
- margin-bottom: 20px;
- text-align: center;
- :deep(.el-upload--picture-card) {
- width: 100%;
- }
- }
- </style>
- <style>
- .tinymce-box .el-upload-list{ list-style: none;}
- .tinymce-box .el-upload-list li {list-style:none}
- </style>
|