<template>
  <el-form ref="form" label-width="120px" style="max-width:600px">
    <el-form-item label="">
      <el-switch
        v-model="formData.type"
        active-text="纯音频模块"
        inactive-text="视频模块">
      </el-switch>
    </el-form-item>
    <div v-if="!formData.type">

      <el-form-item label="视频">
        <div style="margin: 10px">
          <el-button @click="uploadType = true" v-if="!uploadType">地址上传</el-button>
          <el-button @click="uploadType = false" v-if="uploadType">文件上传</el-button>
        </div>
        <el-upload
          class="upload-demo"
          drag
          v-if="!uploadType"
          :http-request="uploadFileVideo"
          :file-list="formData.video"
          :before-upload="beforeAvatarVideo"
          :on-exceed="handleExceed"
          :on-remove="removeFileVideo"
          action="https://jsonplaceholder.typicode.com/posts/"
          multiple>
          <i class="el-icon-upload"></i>
          <div class="el-upload__text">
            将文件拖到此处，或<em>点击上传</em>
            <br>
            <span style="color: #888888;font-size: 12px">只能上传MP4文件</span>
          </div>
          <div class="el-upload__tip" slot="tip"></div>
        </el-upload>
        <el-input v-if="uploadType" v-for="(data,index) in formData.video" :key="index" style="margin-bottom: 10px" v-model="data.url">
          <i slot="suffix" class="el-input__icon el-icon-delete" @click="delVideo(data)"></i>
        </el-input>
        <div v-if="uploadType" style="text-align: center">
          <el-button @click="pushNewVideo">添加视频</el-button>
        </div>
      </el-form-item>
      <el-form-item label="是否切换">
        <el-switch
          v-model="formData.change"
          active-text="开"
          inactive-text="关">
        </el-switch>
      </el-form-item>
      <el-form-item label="切换音频" v-if="formData.change">
        <div style="margin: 10px">
          <el-button @click="uploadType = true" v-if="!uploadType">地址上传</el-button>
          <el-button @click="uploadType = false" v-if="uploadType">文件上传</el-button>
        </div>
        <el-upload
          v-if="!uploadType"
          class="upload-demo"
          :before-upload="beforeAvatarAudio"
          :http-request="uploadFileAudio"
          :file-list="formData.audio"
          :on-exceed="handleExceed"
          :on-remove="removeFileAudio"
          drag
          action="https://jsonplaceholder.typicode.com/posts/"
          multiple>
          <i class="el-icon-upload"></i>
          <div class="el-upload__text">
            将文件拖到此处，或<em>点击上传</em>
            <br>
            <span style="color: #888888;font-size: 12px">只能上传MP3文件</span>
          </div>
        </el-upload>
        <el-input v-if="uploadType" v-for="(data,index) in formData.audio" :key="index" style="margin-bottom: 10px" v-model="data.url">
          <i slot="suffix" class="el-input__icon el-icon-delete" @click="delAudio(data)"></i>
        </el-input>
        <div v-if="uploadType" style="text-align: center">
          <el-button @click="pushNewAudio">添加音频</el-button>
        </div>
      </el-form-item>
      <div v-if="formData.change" v-for="(data,index) in formData.audio" :key="index" class="mp3-block">
        <h3>
          {{data.name}}
        </h3>
        <el-form-item :label="`音频${index + 1}图片`">
          <el-upload
            class="avatar-uploader"
            :http-request="uploadFileImage"
            :before-upload="beforeAvatarImage"
            :data="data"
            action="https://jsonplaceholder.typicode.com/posts/"
            :on-success="uploadImgSuccess"
            :show-file-list="false">
            <img v-if="data.image" :src="data.image" class="avatar">
            <i v-else class="el-icon-plus avatar-uploader-icon"></i>
          </el-upload>
        </el-form-item>
        <el-form-item :label="`音频${index + 1}标题`">
          <el-input v-model="data.title"></el-input>
        </el-form-item>
        <el-form-item :label="`音频${index + 1}说明`">
          <el-input v-model="data.tips"></el-input>
        </el-form-item>
      </div>
      <el-form-item label="是否分龄">
        <el-switch
          v-model="formData.age"
          active-text="是"
          inactive-text="否">
        </el-switch>
      </el-form-item>
      <!--分龄-->
      <el-form-item label="视频" v-if="formData.age">
        <div style="margin: 10px">
          <el-button @click="uploadType = true" v-if="!uploadType">地址上传</el-button>
          <el-button @click="uploadType = false" v-if="uploadType">文件上传</el-button>
        </div>
        <el-upload
          class="upload-demo"
          drag
          v-if="!uploadType"
          :http-request="uploadFileVideo2"
          :before-upload="beforeAvatarVideo"
          :file-list="formData.video2"
          :on-exceed="handleExceed"
          :on-remove="removeFileVideo2"
          action="https://jsonplaceholder.typicode.com/posts/"
          multiple>
          <i class="el-icon-upload"></i>
          <div class="el-upload__text">
            将文件拖到此处，或<em>点击上传</em>
            <br>
            <span style="color: #888888;font-size: 12px">只能上传MP4或AVI文件</span>
          </div>
          <div class="el-upload__tip" slot="tip"></div>
        </el-upload>
        <el-input v-if="uploadType" v-for="(data,index) in formData.video2" :key="index" style="margin-bottom: 10px" v-model="data.url">
          <i slot="suffix" class="el-input__icon el-icon-delete" @click="delVideo2(data)"></i>
        </el-input>
        <div v-if="uploadType" style="text-align: center">
          <el-button @click="pushNewVideo2">添加视频</el-button>
        </div>
      </el-form-item>
      <el-form-item label="是否切换" v-if="formData.age">
        <el-switch
          v-model="formData.change2"
          active-text="开"
          inactive-text="关">
        </el-switch>
      </el-form-item>
      <el-form-item label="切换音频" v-if="formData.age && formData.change2">
        <div style="margin: 10px">
          <el-button @click="uploadType = true" v-if="!uploadType">地址上传</el-button>
          <el-button @click="uploadType = false" v-if="uploadType">文件上传</el-button>
        </div>
        <el-upload
          v-if="!uploadType"
          class="upload-demo"
          :http-request="uploadFileAudio2"
          :before-upload="beforeAvatarAudio"
          :file-list="formData.audio2"
          :on-exceed="handleExceed"
          :on-remove="removeFileAudio2"
          drag
          action="https://jsonplaceholder.typicode.com/posts/"
          multiple>
          <i class="el-icon-upload"></i>
          <div class="el-upload__text">
            将文件拖到此处，或<em>点击上传</em>
            <br>
            <span style="color: #888888;font-size: 12px">只能上传MP3文件</span>
          </div>
        </el-upload>
        <el-input v-if="uploadType" v-for="(data,index) in formData.audio2" :key="index" style="margin-bottom: 10px" v-model="data.url">
          <i slot="suffix" class="el-input__icon el-icon-delete" @click="delAudio2(data)"></i>
        </el-input>
        <div v-if="uploadType" style="text-align: center">
          <el-button @click="pushNewAudio2">添加音频</el-button>
        </div>
      </el-form-item>
      <div v-if="formData.change2 && formData.age" v-for="(data,index) in formData.audio2" :key="index" class="mp3-block">
        <h3>
          {{data.name}}
        </h3>
        <el-form-item :label="`音频${index + 1}图片`">
          <el-upload
            class="avatar-uploader"
            :before-upload="beforeAvatarImage"
            :http-request="uploadFileImage"
            :data="data"
            action="https://jsonplaceholder.typicode.com/posts/"
            :on-success="uploadImgSuccess"
            :show-file-list="false">
            <img v-if="data.image" :src="data.image" class="avatar">
            <i v-else class="el-icon-plus avatar-uploader-icon"></i>
          </el-upload>
        </el-form-item>
        <el-form-item :label="`音频${index + 1}标题`">
          <el-input v-model="data.title"></el-input>
        </el-form-item>
        <el-form-item :label="`音频${index + 1}说明`">
          <el-input v-model="data.tips"></el-input>
        </el-form-item>
      </div>
    </div>
    <div v-if="formData.type">
      <el-form-item label="切换音频">
        <el-upload
          class="upload-demo"
          :http-request="uploadFileAudio"
          :before-upload="beforeAvatarAudio"
          :file-list="formData.audio"
          :on-exceed="handleExceed"
          :on-remove="removeFileAudio"
          drag
          action="https://jsonplaceholder.typicode.com/posts/"
          multiple>
          <i class="el-icon-upload"></i>
          <div class="el-upload__text">
            将文件拖到此处，或<em>点击上传</em>
            <br>
            <span style="color: #888888;font-size: 12px">只能上传MP3文件</span>
          </div>
        </el-upload>
      </el-form-item>
      <div v-for="(data,index) in formData.audio" :key="index" class="mp3-block">
        <h3>
          {{data.name}}
        </h3>
        <el-form-item :label="`音频${index + 1}图片`">
          <el-upload
            class="avatar-uploader"
            :http-request="uploadFileImage"
            :before-upload="beforeAvatarImage"
            :data="data"
            action="https://jsonplaceholder.typicode.com/posts/"
            :on-success="uploadImgSuccess"
            :show-file-list="false">
            <img v-if="data.image" :src="data.image" class="avatar">
            <i v-else class="el-icon-plus avatar-uploader-icon"></i>
          </el-upload>
        </el-form-item>
        <el-form-item :label="`音频${index + 1}标题`">
          <el-input v-model="data.title"></el-input>
        </el-form-item>
        <el-form-item :label="`音频${index + 1}说明`">
          <el-input v-model="data.tips"></el-input>
        </el-form-item>
      </div>
    </div>
    </el-form>
</template>

<script>
  import {uploadFileApi} from "../../service/api";
  export default {
    props:[
      'formData'
    ],
    name: "videoUpload",
    data(){
      return {
        uploadType:false
      }
    },
    methods:{
      beforeAvatarImage(file){
        const isJPG = (file.type === 'image/jpeg' || file.type === 'image/png' );
        const isLt2M = file.size / 1024  < 400;
        if (!isJPG) {
          this.$message.error('上传头像图片只能是 JPG 或 PNG 格式!');
        }
        if (!isLt2M) {
          this.$message.error('上传头像图片大小不能超过 200KB!');
        }
        return isJPG && isLt2M;
      },
      // 添加视频按钮
      pushNewVideo(){
        this.formData.video.push({name:'地址输入文件',url:''})
      },
      // 视频文件限制
      beforeAvatarVideo(file){
        const isJPG = (file.type === 'video/mp4' );
        if (!isJPG) {
          this.$message.error('上传视频只能是MP4格式!');
        }
        return isJPG;
      },
      // 音频文件限制
      beforeAvatarAudio(file){
        const isJPG = (file.type === 'audio/mp3' );
        if (!isJPG) {
          this.$message.error('上传视频只能是MP4格式!');
        }
        return isJPG;
      },
      // 添加音频按钮
      pushNewAudio(){
        this.formData.audio.push({name:'地址录入文件',url:'',title:'',tips:'',image:''})
      },
      // 删除视频
      delVideo(data){
        let i = this.formData.video.indexOf(data);
        this.formData.video.splice(i,1)
      },
      // 删除音频
      delAudio(data){
        let i = this.formData.audio.indexOf(data);
        this.formData.audio.splice(i,1)
      },
      // 添加视频2
      pushNewVideo2(){
        this.formData.video2.push({name:'地址输入文件',url:''})
      },
      // 添加音频2
      pushNewAudio2(){
        this.formData.audio2.push({name:'地址录入文件',url:'',title:'',tips:'',image:''})
      },
      // 珊瑚视频2
      delVideo2(data){
        let i = this.formData.video2.indexOf(data);
        this.formData.video2.splice(i,1)
      },
      // 删除音频2
      delAudio2(data){
        let i = this.formData.audio2.indexOf(data);
        this.formData.audio2.splice(i,1)
      },
      // 上传视频
      uploadFileVideo(a){
          uploadFileApi({file:a.file,type:'local',obj:a}).then(res=>{
            this.$message({
              type: 'success',
              message: '上传成功!'
            });
            this.formData.video.push({name:res.name,url:process.env.IMAGE_URL_HEAD + res.url});
          })
      },
      // 上传视频2
      uploadFileVideo2(a){
          uploadFileApi({file:a.file,type:'local',obj:a}).then(res=>{
            this.$message({
              type: 'success',
              message: '上传成功!'
            });
            this.formData.video2.push({name:res.name,url:process.env.IMAGE_URL_HEAD + res.url});
          })
      },
      // 上传音频
      uploadFileAudio(a){
          uploadFileApi({file:a.file,type:'local',obj:a}).then(res=>{
            this.$message({
              type: 'success',
              message: '上传成功!'
            });
            a.onSuccess('上传成功')
            this.formData.audio.push({name:res.name,url:process.env.IMAGE_URL_HEAD + res.url,title:'',tips:'',image:''});
          })
      },
      // 上传音频2
      uploadFileAudio2(a){
          uploadFileApi({file:a.file,type:'local',obj:a}).then(res=>{
            this.$message({
              type: 'success',
              message: '上传成功!'
            });
            a.onSuccess('上传成功');
            this.formData.audio2.push({name:res.name,url:process.env.IMAGE_URL_HEAD + res.url,title:'',tips:'',image:''});
          })
      },
      // 移除
      removeFileVideo(file,fileList){
        this.formData.video = fileList
      },
      // 移除
      removeFileVideo2(file,fileList){
        this.formData.video2 = fileList
      },
      // 移除
      removeFileAudio(file,fileList){
        this.formData.audio = fileList
      },
      // 移除
      removeFileAudio2(file,fileList){
        this.formData.audio2 = fileList
      },
      handleExceed(){
      },
      uploadFileImage(a){
        if( a.file.size < 200 * 1024) {
          uploadFileApi({file:a.file,type:'local',obj:a}).then(res=>{
            a.data.image = process.env.IMAGE_URL_HEAD + res.url;
            this.$message({
              type: 'success',
              message: '上传成功!'
            });
            a.onSuccess('上传成功')
          });
        }else{
          this.$message({
            type: 'error',
            message: '文件过大'
          });
        }
      },
      uploadImgSuccess(a,b,c){
      }
    }
  }

</script>
<style scoped lang="less">
  .mp3-block{
    border: 1px solid #ddd;
    border-radius: 4px;
    padding: 0 20px;
    margin: 10px;
    h3{
      text-align: center;
    }
  }
</style>
<style>
  .avatar-uploader .el-upload {
    border: 1px dashed #d9d9d9;
    border-radius: 6px;
    cursor: pointer;
    position: relative;
    overflow: hidden;
  }
  .avatar-uploader .el-upload:hover {
    border-color: #409EFF;
  }
  .avatar-uploader-icon {
    font-size: 28px;
    color: #8c939d;
    width: 178px;
    height: 178px;
    line-height: 178px;
    text-align: center;
  }
  .avatar {
    width: 178px;
    height: 178px;
    display: block;
  }
</style>
