Commit 29cdcdb6 authored by 廖伟胜's avatar 廖伟胜

修改上创组件

parent 13518f2c
...@@ -2,10 +2,10 @@ ...@@ -2,10 +2,10 @@
<div> <div>
<el-upload ref="upload" :show-file-list="false" :on-preview="handler().handlePreview()" :list-type="listType" :on-exceed="(files, fileList)=>handler().handleExceed(files,fileList)" :drag="uploadStyle === 'drag' ? true : false" :limit="limit" :on-success="(file) => handler().imageSuccess(file)" :action="uploadDomain" :before-upload="init().beforeUpload" :multiple="multiple" :headers="headers" class="avatar-uploader" > <el-upload ref="upload" :show-file-list="false" :on-preview="handler().handlePreview()" :list-type="listType" :on-exceed="(files, fileList)=>handler().handleExceed(files,fileList)" :drag="uploadStyle === 'drag' ? true : false" :limit="limit" :on-success="(file) => handler().imageSuccess(file)" :action="uploadDomain" :before-upload="init().beforeUpload" :multiple="multiple" :headers="headers" class="avatar-uploader" >
<!--音频--> <!--音频-->
<div v-if="data.length >0 && !isList" style="display:inline"> <div v-if="list.length >0 && !isList" style="display:inline">
<div v-for="(item,index) in data" :key="index" style="float:left;margin-right:10px;" @click.stop="handler().getIndex(index)" > <div v-for="(item,index) in list" :key="index" style="float:left;margin-right:10px;" @click.stop="handler().getIndex(index)" >
<div class="avatar" style="border:none" > <div class="avatar" style="border:none" >
<i class="el-icon-close delete-icon" title="删除" @click.stop="data.splice(index, 1)"/> <i class="el-icon-close delete-icon" title="删除" @click.stop="handler().handelDelete(index)"/>
<aplayer <aplayer
class="audio-player" class="audio-player"
:music="item" :music="item"
...@@ -22,12 +22,12 @@ ...@@ -22,12 +22,12 @@
</div> </div>
</div> </div>
</div> </div>
<div v-else-if="data.length >0 && isList" style="display:inline"> <div v-else-if="list.length >0 && isList" style="display:inline">
<div class="avatar" style="border:none" > <div class="avatar" style="border:none" >
<i class="el-icon-close delete-icon" title="删除" @click.stop="data.splice(index, 1)"/> <i class="el-icon-close delete-icon" title="删除" @click.stop="handler().handelDelete(index)"/>
<aplayer <aplayer
class="audio-player" class="audio-player"
:list="data" :list="list"
:mini="mini" :mini="mini"
:float="float" :float="float"
:showLrc="showLrc" :showLrc="showLrc"
...@@ -141,7 +141,7 @@ export default{ ...@@ -141,7 +141,7 @@ export default{
// 图片大小限制(kb) // 图片大小限制(kb)
sizeLimit: { sizeLimit: {
type: Number, type: Number,
default: 3000, default: 10000,
}, },
//显示删除 //显示删除
showDel: { showDel: {
...@@ -156,6 +156,11 @@ export default{ ...@@ -156,6 +156,11 @@ export default{
show: { show: {
type: Boolean, type: Boolean,
default: true, default: true,
},
// 类型
dataType: {
type: String,
default: 'array',
}, },
//上传组件风格 //上传组件风格
uploadStyle:{ uploadStyle:{
...@@ -185,6 +190,7 @@ export default{ ...@@ -185,6 +190,7 @@ export default{
return { return {
index:null, index:null,
data: '', data: '',
list:[],
qiniuToken: '', qiniuToken: '',
baseUrl: process.env.VUE_APP_BASE_API, baseUrl: process.env.VUE_APP_BASE_API,
videoFlag: false, videoFlag: false,
...@@ -265,16 +271,17 @@ export default{ ...@@ -265,16 +271,17 @@ export default{
}, },
watch: { watch: {
value(value) { value(value) {
this.data = this.init().data(value) this.list = this.init().data(value)
}, },
data() { data() {
this.$emit('input', this.data) this.data = this.list;
this.$emit('input', this.init().value(this.data))
this.$emit('on-success', this.data) this.$emit('on-success', this.data)
}, },
}, },
created() { created() {
this.index = null; this.index = null;
this.data = this.value this.list = this.init().data(this.value);
this.init().token() this.init().token()
}, },
methods: { methods: {
...@@ -378,10 +385,9 @@ export default{ ...@@ -378,10 +385,9 @@ export default{
const link = data.url; const link = data.url;
// this.data = url // this.data = url
let attrs = { let attrs = {
title:file.name,
src:link src:link
} }
this.data = this.data.push(attrs); this.data = this.list.push(attrs);
this.$refs.upload.clearFiles(); this.$refs.upload.clearFiles();
}, },
//获取索引 //获取索引
...@@ -418,6 +424,10 @@ export default{ ...@@ -418,6 +424,10 @@ export default{
this.data = '' this.data = ''
this.$emit('delete') this.$emit('delete')
}, },
//删除音频
handelDelete:(index)=>{
this.data = this.list.splice(index,1);
},
} }
}, },
/** /**
......
<template> <template>
<div> <div>
<el-upload ref="upload" :show-file-list="false" :on-preview="handler().handlePreview()" :list-type="listType" :on-exceed="(files, fileList)=>handler().handleExceed(files,fileList)" :drag="uploadStyle === 'drag' ? true : false" :limit="limit" :on-success="(file) => handler().imageSuccess(file)" :action="uploadDomain" :before-upload="init().beforeUpload" :multiple="multiple" :headers="headers" class="avatar-uploader" > <el-upload ref="upload" :show-file-list="false" :on-preview="handler().handlePreview()" :list-type="listType" :on-exceed="(files, fileList)=>handler().handleExceed(files,fileList)" :drag="uploadStyle === 'drag' ? true : false" :limit="limit" :on-success="(file,files) => handler().imageSuccess(file,files)" :action="uploadDomain" :before-upload="init().beforeUpload" :multiple="multiple" :headers="headers" class="avatar-uploader" >
<i class="el-icon-upload" v-if="uploadStyle === 'drag'"></i> <i class="el-icon-upload" v-if="uploadStyle === 'drag'"></i>
<div class="el-upload__text" v-if="uploadStyle === 'drag'">将文件拖到此处,或<em>点击上传</em></div> <div class="el-upload__text" v-if="uploadStyle === 'drag'">将文件拖到此处,或<em>点击上传</em></div>
<!--文件上传--> <!--文件上传-->
...@@ -10,12 +10,12 @@ ...@@ -10,12 +10,12 @@
</el-upload> </el-upload>
<!-- 文件列表 --> <!-- 文件列表 -->
<transition-group class="upload-file-list el-upload-list el-upload-list--text" name="el-fade-in-linear" tag="ul"> <transition-group class="upload-file-list el-upload-list el-upload-list--text" name="el-fade-in-linear" tag="ul">
<li :key="index" class="el-upload-list__item ele-upload-list__item-content" v-for="(file, index) in data"> <li :key="index" class="el-upload-list__item ele-upload-list__item-content" v-for="(file, index) in list">
<el-link :href="`${baseUrl}${file.url}`" :underline="false" target="_blank"> <el-link :href="`${baseUrl}${file.url}`" :underline="false" target="_blank">
<span class="el-icon-document"> {{ file.name }} </span> <span class="el-icon-document"> {{ file.name }} </span>
</el-link> </el-link>
<div class="ele-upload-list__item-content-action"> <div class="ele-upload-list__item-content-action">
<el-link :underline="false" @click="handleDelete(index)" type="danger">删除</el-link> <el-link :underline="false" @click="handler().handelDelete(index)" type="danger">删除</el-link>
</div> </div>
</li> </li>
</transition-group> </transition-group>
...@@ -59,6 +59,11 @@ export default{ ...@@ -59,6 +59,11 @@ export default{
sizeLimit: { sizeLimit: {
type: Number, type: Number,
default: 3000, default: 3000,
},
// 类型
dataType: {
type: String,
default: 'array',
}, },
fileSize:{ fileSize:{
type: Number, type: Number,
...@@ -97,6 +102,7 @@ export default{ ...@@ -97,6 +102,7 @@ export default{
return { return {
index:null, index:null,
data: [], data: [],
list:[],
qiniuToken: '', qiniuToken: '',
baseUrl: process.env.VUE_APP_BASE_API, baseUrl: process.env.VUE_APP_BASE_API,
imgDomain: '', imgDomain: '',
...@@ -165,16 +171,17 @@ export default{ ...@@ -165,16 +171,17 @@ export default{
}, },
watch: { watch: {
value(value) { value(value) {
this.data = this.init().data(value) this.list = this.init().data(value)
}, },
data() { data() {
this.$emit('input', this.data) this.data = this.list;
this.$emit('input', this.init().value(this.data))
this.$emit('on-success', this.data) this.$emit('on-success', this.data)
}, },
}, },
created() { created() {
this.index = null; this.index = null;
this.data = this.value this.list = this.init().data(this.value);
this.init().token() this.init().token()
}, },
methods: { methods: {
...@@ -281,8 +288,7 @@ export default{ ...@@ -281,8 +288,7 @@ export default{
name:file.name, name:file.name,
url:link url:link
} }
this.data = this.data.push(attrs); this.data = this.list.push(attrs);
this.$refs.upload.clearFiles();
}, },
// 文件个数超出 // 文件个数超出
handleExceed:(file,fileList)=>{ handleExceed:(file,fileList)=>{
...@@ -314,6 +320,10 @@ export default{ ...@@ -314,6 +320,10 @@ export default{
this.data = '' this.data = ''
this.$emit('delete') this.$emit('delete')
}, },
//删除文件
handelDelete:(index)=>{
this.data = this.list.splice(index,1);
},
} }
}, },
/** /**
......
...@@ -196,7 +196,7 @@ export default{ ...@@ -196,7 +196,7 @@ export default{
handler() { handler() {
return { return {
// 图片上传成功回调 // 图片上传成功回调
imageSuccess: ({ data }) => { imageSuccess: (data) => {
const { url } = data const { url } = data
this.data = url this.data = url
}, },
......
<template> <template>
<div> <div>
<el-upload ref="upload" :show-file-list="false" :on-preview="handler().handlePreview()" :on-progress="(event, file, fileList)=>handler().uploadVideoProcess(event, file, fileList)" :file-list="data" :list-type="listType" :on-exceed="(files, fileList)=>handler().handleExceed(files,fileList)" :drag="uploadStyle === 'drag' ? true : false" :limit="limit" :on-success="(file) => handler().imageSuccess(file)" :action="uploadDomain" :before-upload="init().beforeUpload" :multiple="multiple" :headers="headers" class="avatar-uploader" > <el-upload ref="upload" :show-file-list="false" :on-progress="(event, file)=>handler().uploadVideoProcess(event, file)" :list-type="listType" :on-exceed="(files)=>handler().handleExceed(files)" :drag="uploadStyle === 'drag' ? true : false" :limit="limit" :on-success="(file) => handler().imageSuccess(file)" :action="uploadDomain" :before-upload="init().beforeUpload" :multiple="multiple" :headers="headers" class="avatar-uploader" >
<!--视频--> <!--视频-->
<div v-if="data.length >0" style="display:inline" @click.stop="handler().getIndex(index)" > <div v-if="list.length >0" style="display:inline" @click.stop="handler().getIndex(index)" >
<div v-for="(item,index) in data" :key="index" style="float:left;" @click.stop="handler().getIndex(index)"> <div v-for="(item,index) in list" :key="index" style="float:left;" @click.stop="handler().getIndex(index)">
<div :style="style" class="avatar video-box" > <div :style="style" class="avatar video-box" >
<i class="el-icon-close delete-icon" title="删除" @click.stop="data.splice(index, 1)"/> <i class="el-icon-close delete-icon" title="删除" @click.stop="handler().handelDelete(index)"/>
<video id="myVideo" <video id="myVideo"
:src="item.url" :src="item.url"
:autoplay="autoplay == true ? 'autoplay' : false" :autoplay="autoplay == true ? 'autoplay' : false"
...@@ -86,6 +86,11 @@ export default{ ...@@ -86,6 +86,11 @@ export default{
preload:{ preload:{
type: Boolean, type: Boolean,
default: false, default: false,
},
// 类型
dataType: {
type: String,
default: 'array',
}, },
// 是否多选 // 是否多选
multiple: { multiple: {
...@@ -148,6 +153,7 @@ export default{ ...@@ -148,6 +153,7 @@ export default{
return { return {
index:null, index:null,
data: '', data: '',
list:[],
qiniuToken: '', qiniuToken: '',
baseUrl: process.env.VUE_APP_BASE_API, baseUrl: process.env.VUE_APP_BASE_API,
videoFlag: false, videoFlag: false,
...@@ -228,16 +234,17 @@ export default{ ...@@ -228,16 +234,17 @@ export default{
}, },
watch: { watch: {
value(value) { value(value) {
this.data = this.init().data(value) this.list = this.init().data(value)
}, },
data() { data() {
this.$emit('input', this.data) this.data = this.list;
this.$emit('input', this.init().value(this.data))
this.$emit('on-success', this.data) this.$emit('on-success', this.data)
}, },
}, },
created() { created() {
this.index = null; this.index = null;
this.data = this.value this.list = this.init().data(this.value);
this.init().token() this.init().token()
}, },
methods: { methods: {
...@@ -356,11 +363,11 @@ export default{ ...@@ -356,11 +363,11 @@ export default{
this.isShowUploadVideo = true; this.isShowUploadVideo = true;
this.videoFlag = false; this.videoFlag = false;
this.videoUploadPercent = 0; this.videoUploadPercent = 0;
this.data = this.index != null ? this.data.splice(this.index,1,attr) : this.data.push(attr); this.data = this.index != null ? this.list.splice(this.index,1,attr) : this.list.push(attr);
this.$refs.upload.clearFiles(); // this.$refs.upload.clearFiles();
}, },
//进度条 //进度条
uploadVideoProcess:(event, file, fileList)=>{ uploadVideoProcess:(event, file)=>{
this.videoFlag = true; this.videoFlag = true;
this.videoUploadPercent = file.percentage.toFixed(0) * 1; this.videoUploadPercent = file.percentage.toFixed(0) * 1;
}, },
...@@ -369,7 +376,7 @@ export default{ ...@@ -369,7 +376,7 @@ export default{
this.index = index; this.index = index;
}, },
// 文件个数超出 // 文件个数超出
handleExceed:(file,fileList)=>{ handleExceed:(file)=>{
this.$message.error(`上传文件数量不能超过 ${this.limit} 个!`); this.$message.error(`上传文件数量不能超过 ${this.limit} 个!`);
}, },
handlePreview:(file)=>{ handlePreview:(file)=>{
...@@ -411,6 +418,10 @@ export default{ ...@@ -411,6 +418,10 @@ export default{
this.data = '' this.data = ''
this.$emit('delete') this.$emit('delete')
}, },
//删除视频
handelDelete:(index)=>{
this.data = this.list.splice(index,1);
},
} }
}, },
/** /**
......
...@@ -91,7 +91,7 @@ export default { ...@@ -91,7 +91,7 @@ export default {
}, },
limit: { // 图片上传数量限制,默认10 limit: { // 图片上传数量限制,默认10
type: Number, type: Number,
default: 1, default: 10,
}, },
value: { value: {
type: [String, Object, Array], type: [String, Object, Array],
......
...@@ -49,7 +49,7 @@ ...@@ -49,7 +49,7 @@
:ref="form[item.field]" :ref="form[item.field]"
v-model="form[item.field]" v-model="form[item.field]"
:type="item.type" :type="item.type"
:limit="(item.upload && item.upload.limit) || 1" :limit="(item.upload && item.upload.limit) || 5"
:size="(item.upload && item.upload.size) || 100" :size="(item.upload && item.upload.size) || 100"
:dataType="(item.upload && item.upload.dataType) || 'array'" :dataType="(item.upload && item.upload.dataType) || 'array'"
:edit="(item.upload && item.upload.edit) || true" :edit="(item.upload && item.upload.edit) || true"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment