<template> <div class="editor"> <el-container> <div class="head-top"> 缩放:<el-input-number v-model="bigNum" size="mini" :min="30" :max="150" :step="10"></el-input-number> </div> <el-button class="head-edit" type="default" @click="setOpen()"> 编辑当前页参数 </el-button> <el-header> <div class="head-content"> <div v-if="selectedMould.length > 0"> {{ selectedMould[nowIndex].title }} </div> </div> </el-header> <el-container> <el-aside width="150px" class="aside-block"> <div class="page-list"> <div class="card-item" v-for="(data,index) in selectedMould" :key="index" > <div class="list2-btn"> <i class="iconfont icon-shanchu" @click="delMould(index)"></i> </div> <div @click="chooseThat(index)"> <el-card shadow="hover" :class="nowIndex === index ? 'border' : ''" :body-style="{ padding: '0px' }"> <div class="dialog-card"> 序号:{{index}} </div> <img :src="data.imgUrl" class="image"> </el-card> </div> </div> </div> </el-aside> <el-main> <!--爸妈看一看1--> <div v-if="selectedMould.length > 0 && selectedMould[nowIndex] && selectedMould[nowIndex].key === 'look1'"> <div class="look1" :style="{backgroundImage:`url(${mouldImg.look1.bg}`,transform:`scale(${bigNum/100},${bigNum/100})`}"> <div class="bg-block"> <img :src="mouldImg.look1.reqiqiu" class="reqiqiu"/> <img :src="mouldImg.look1.qiqiu" class="qiqiu"/> <img :src="mouldImg.look1.feiji" class="feiji"/> <div> <img :src="mouldImg.look1.title1"/> </div> <div class="radio"> <img :src="mouldImg.look1.r1" class="r1"> <img :src="mouldImg.look1.r2" class="r2" v-show="lookAudioType"> <img :src="mouldImg.look1.playing" class="r2" v-show="!lookAudioType"> <img :src="mouldImg.look1.r3" class="r3"> <img :src="mouldImg.look1.rp" class="rp" @click="playLook1Audio" v-show="lookAudioType"> <img :src="mouldImg.look1.rs" class="rs" @click="stopLook1Audio" v-show="!lookAudioType"> </div> <!--<img :src="mouldImg.look1.radio" @click="$refs.audio.play()"/>--> <audio ref="audio" v-if="selectedMould[nowIndex].content.radio.length>0" :src="selectedMould[nowIndex].content.radio[0].url"></audio> <div class="today-block"> <img :src="mouldImg.look1.tadayBg"/> <div class="today-text"> <div class="zhanwei1"></div> <div class="zhanwei2"></div> <div class="zhanwei3"></div> <div v-html="formatBr(selectedMould[nowIndex].content.today)"> </div> </div> </div> <div class="title2-block"> <img :src="mouldImg.look1.title2" class="title2"/> <div class="directory-text"> <div v-html="formatBr(selectedMould[nowIndex].content.directory)"> </div> </div> </div> </div> <div class="bottom-block"> <img :src="mouldImg.look1.bank"/> <img :src="mouldImg.look1.go" v-if="selectedMould[nowIndex].content.nextIndex !== -1"/> </div> </div> </div> <!--音频1--> <div v-if="selectedMould[nowIndex] && selectedMould[nowIndex].key === 'radio1'"> <div class="look1 radio1" :style="{backgroundImage:`url(${selectedMould[nowIndex].content.titleType === 0 ? mouldImg.radio1.bg:mouldImg.radio1.moerduoBg}`,transform:`scale(${bigNum/100},${bigNum/100})`}"> <div class="bg-block" :style="{backgroundImage:`url(${mouldImg.radio1.contentBg}`}"> <img :src="mouldImg.radio1.tabVideo" class="tab-video-img" v-if="selectedMould[nowIndex].content.tabVideo.type"/> <div> <img :src="mouldImg.radio1.title" v-if="selectedMould[nowIndex].content.titleType === 0"/> <img :src="mouldImg.radio1.moerduo" v-if="selectedMould[nowIndex].content.titleType === 1"/> </div> <div> <img :src="mouldImg.radio1.CD"/> </div> <audio ref="audio" v-if="selectedMould[nowIndex].content.radio[radioLenth]" :src="selectedMould[nowIndex].content.radio[radioLenth].url" @timeupdate="updateTime"></audio> <div class="name-block"> <div class="name"> <span v-if="selectedMould[nowIndex].content.radio[radioLenth]">{{selectedMould[nowIndex].content.radio[0].title}}</span> </div> <div class="ahtor"> <span v-if="selectedMould[nowIndex].content.radio[radioLenth]">{{selectedMould[nowIndex].content.radio[0].lable}}</span> </div> </div> <div class="play-block"> <img :src="mouldImg.radio1.loading"/> <div class="radius-icon" :style="{left:audioLeft}"></div> </div> <div class="btn-block"> <img :src="mouldImg.radio1.near" @click="dRadio()"/> <img :src="mouldImg.radio1.play" class="play" @click="playLook1Audio" v-if="lookAudioType"/> <img :src="mouldImg.radio1.stop" class="play" @click="stopLook1Audio" v-if="!lookAudioType"/> <img :src="mouldImg.radio1.next" @click="aRadio()"/> </div> </div> <div class="bottom-block" v-if="selectedMould[nowIndex].content.buttonType === 0"> <img :src="mouldImg.radio1.backLookBtn"/> <img :src="mouldImg.radio1.showBtn"/> </div> <div class="bottom-block" v-if="selectedMould[nowIndex].content.buttonType === 1"> <img :src="mouldImg.radio1.last"/> <img :src="mouldImg.radio1.finishBtn"/> </div> <div class="bottom-block" v-if="selectedMould[nowIndex].content.buttonType === 2"> <img :src="mouldImg.radio1.last"/> <img :src="mouldImg.radio1.nextBtn"/> </div> <div class="bottom-block" v-if="selectedMould[nowIndex].content.buttonType === 3"> <img :src="mouldImg.radio1.backPlayBtn"/> <img :src="mouldImg.radio1.nextBtn" v-if="selectedMould[nowIndex].content.nextIndex !== -1"/> </div> </div> </div> <!--视频玩一玩1--> <div v-if="selectedMould[nowIndex] && selectedMould[nowIndex].key === 'play1'"> <div class="look1 play1" :style="{backgroundImage:`url(${mouldImg.play1.bg}`,transform:`scale(${bigNum/100},${bigNum/100})`}"> <div class="bg-block"> <div class="video-block"> <div class="icon-class" v-if="playVideoType"> <img :src="mouldImg.play1.play" @click="playVideo()"/> </div> <video style="width: 100%" ref="video" :controls="!playVideoType" v-if="selectedMould[nowIndex].content.videoUrl.length > 0" :poster="selectedMould[nowIndex].content.banner[0] ? selectedMould[nowIndex].content.banner[0].url : '' " :src="selectedMould[nowIndex].content.videoUrl[0].url"></video> </div> <img :src="mouldImg.play1.radio" class="radio-img"/> <img :src="mouldImg.play1.backBtn" class="btn back"/> <img :src="mouldImg.play1.next" class="btn next" v-if="selectedMould[nowIndex].content.nextIndex !== -1"/> </div> </div> </div> <!--爸妈秀宝贝1--> <div v-if="selectedMould[nowIndex] && selectedMould[nowIndex].key === 'show1'"> <div class="look1 show1" :style="{backgroundImage:`url(${mouldImg.show1.bg}`,transform:`scale(${bigNum/100},${bigNum/100})`}"> <img :src="mouldImg.show1.riji" class="riji"/> <img :src="mouldImg.show1.yeziyou" class="yeziyou"/> <img :src="mouldImg.show1.yezizuo" class="yezizuo"/> <img :src="mouldImg.show1.zhaopianqiang" class="zhaopianqiang"/> <div class="bg-block" :style="{backgroundImage:`url(${mouldImg.show1.contentBg}`}"> <div class="title-block"> <img :src="mouldImg.show1.title"/> </div> <div class="textarea"> <div class="btn-block"> <img :src="mouldImg.show1.radioIcon"/> <img :src="mouldImg.show1.imgIcon"/> <img :src="mouldImg.show1.videoIcon"/> </div> </div> <div class="text-block"> 解释说明: <div class="text-content"> 各位爸爸妈妈,记得在每日完成学习后记录宝宝一天的学习过程哦!养成良好的学习习惯也是很重要的一环,记录并分享后更可以获得 <span style="color: #333">唱学加油包</span>哦! </div> </div> <div class="sub-block"> <img :src="mouldImg.show1.subBtn"> </div> </div> <div class="bottom-block"> <img :src="mouldImg.show1.backBtn"/> <img :src="mouldImg.show1.jiayoubao" v-if="selectedMould[nowIndex].content.nextIndex !== -1"/> </div> </div> </div> <!--唱学加油包1--> <div v-if="selectedMould[nowIndex] && selectedMould[nowIndex].key === 'refueling1'"> <div class="look1 refueling1" :style="{backgroundImage:`url(${mouldImg.refueling1.bg}`,transform:`scale(${bigNum/100},${bigNum/100})`}"> <div class="bg-block"> <audio ref="audio" v-if="selectedMould[nowIndex].content.radio[0]" :src="selectedMould[nowIndex].content.radio[0].url"></audio> <img :src="mouldImg.refueling1.title"> <div class="content-img"> <img :src="selectedMould[nowIndex].content.banner[0] ? selectedMould[nowIndex].content.banner[0].url :''" style="width: 100%"> <img :src="mouldImg.refueling1.radio" class="radio-icon" @click="playJiayou()"> </div> </div> <div class="bottom-block"> <img :src="mouldImg.refueling1.backBtn"/> <img :src="mouldImg.refueling1.next" v-if="selectedMould[nowIndex].content.nextIndex !== -1"/> </div> </div> </div> <!--唱学加油包2--> <div v-if="selectedMould[nowIndex] && selectedMould[nowIndex].key === 'refueling2'"> <div class="look1 refueling2" :style="{backgroundImage:`url(${mouldImg.refueling2.bg}`,transform:`scale(${bigNum/100},${bigNum/100})`}"> <div class="bg-block"> <audio ref="audio" v-if="selectedMould[nowIndex].content.radio[0]" :src="selectedMould[nowIndex].content.radio[0].url"></audio> <img :src="mouldImg.refueling2.title" v-if="!selectedMould[nowIndex].content.title || selectedMould[nowIndex].content.title===0 " class="title"> <img :src="mouldImg.radio1.title" v-if="selectedMould[nowIndex].content.title===1 " class="title"> <div class="content-img" :style="{backgroundImage:selectedMould[nowIndex].content.banner[0] ? `url(${selectedMould[nowIndex].content.banner[0].url}`:''}"> <img :src="mouldImg.refueling2.radio" class="radio-icon" @click="playJiayou()"> <img :src="mouldImg.refueling2.back" class="left-icon"/> <img :src="mouldImg.refueling2.next" class="right-icon" v-if="selectedMould[nowIndex].content.nextIndex !== -1"/> </div> </div> </div> </div> </el-main> </el-container> </el-container> <el-dialog :title="`编辑序号${nowIndex}页参数`" :visible.sync="dialogVisible" :modal="false" width="800px"> <!--爸妈看一看1--> <el-form label-width="100px" v-if="selectedMould[nowIndex] && selectedMould[this.nowIndex].key === 'look1'"> <el-form-item label="模块"> <el-select v-model="selectedMould[nowIndex].name" placeholder="请选择"> <el-option label="爸妈看一看" :value="1"> </el-option> <el-option label="宝贝玩一玩" :value="2"> </el-option> <el-option label="宝贝成长秀" :value="3"> </el-option> <el-option label="多元趣味课" :value="4"> </el-option> </el-select> </el-form-item> <el-form-item label="音频"> <el-button type="success" size="small" v-if="!urlShow" @click="urlShow = true"> 地址输入 </el-button> <el-button type="success" size="small" v-if="urlShow" @click="urlShow = false"> 素材上传 </el-button> </el-form-item> <el-form-item v-if="!urlShow"> <el-upload class="upload-demo" action="/api/public/upload" :on-remove="removeFileRadio2" :http-request="uploadFileRadio2" multiple :disabled="(fileUid && progress < 99)" :file-list="selectedMould[nowIndex].content.radio"> <el-button size="small" type="primary" :disabled="(fileUid && progress < 99)">点击上传</el-button> <div style="width: 300px"> <el-progress v-if="fileUid" :percentage="progress"></el-progress> </div> </el-upload> </el-form-item> <el-form-item v-if="urlShow"> <el-input v-model="selectedMould[nowIndex].content.radio[0].url" v-if="selectedMould[nowIndex].content.radio[0]" @change="urlChangeAudio" placeholder="请输入音频地址"></el-input> <el-input v-if="!selectedMould[nowIndex].content.radio[0]" placeholder="请输入音频地址" @change="urlChangeAudio"></el-input> </el-form-item> <el-form-item label="今日目标"> <el-input type="textarea" rows="8" v-model="selectedMould[nowIndex].content.today" placeholder="今日目标换行输入<br>"></el-input> </el-form-item> <el-form-item label="陪玩指南"> <el-input type="textarea" rows="8" v-model="selectedMould[nowIndex].content.directory" placeholder="陪玩指南换行输入<br>"></el-input> </el-form-item> <el-form-item label="下一页序号"> <el-select v-model="selectedMould[nowIndex].content.nextIndex" placeholder="请选择"> <el-option v-for="(item,index) in selectedMould" :key="index" :label="index" :value="index"> </el-option> <el-option label="无" :value="-1"> </el-option> </el-select> </el-form-item> <el-form-item label="停留时长"> <el-input-number v-model="selectedMould[nowIndex].content.timeLang"></el-input-number> </el-form-item> </el-form> <!--音频1--> <el-form label-width="100px" v-if="selectedMould[nowIndex] && selectedMould[this.nowIndex].key === 'radio1'"> <el-form-item label="模块"> <el-select v-model="selectedMould[nowIndex].name" placeholder="请选择"> <el-option label="爸妈看一看" :value="1"> </el-option> <el-option label="宝贝玩一玩" :value="2"> </el-option> <el-option label="宝贝成长秀" :value="3"> </el-option> <el-option label="多元趣味课" :value="4"> </el-option> </el-select> </el-form-item> <el-form-item label="音频"> <el-button type="success" size="small" v-if="!urlShow" @click="urlShow = true"> 地址输入 </el-button> <el-button type="success" size="small" v-if="urlShow" @click="urlShow = false"> 素材上传 </el-button> </el-form-item> <el-form-item v-if="!urlShow"> <el-upload class="upload-demo" action="/api/public/upload" :on-remove="removeFileRadio2" :http-request="uploadFileRadio2" multiple :disabled="(fileUid && progress < 99)" :file-list="selectedMould[nowIndex].content.radio"> <el-button size="small" type="primary" :disabled="(fileUid && progress < 99)">点击上传</el-button> <div style="width: 300px"> <el-progress v-if="fileUid" :percentage="progress"></el-progress> </div> </el-upload> </el-form-item> <el-form-item v-if="urlShow"> <el-input v-for="(data,index) in selectedMould[nowIndex].content.radio" style="margin-bottom: 10px" v-model="selectedMould[nowIndex].content.radio[index].url" :key="index" @change="urlChangeAudioMore($event,index)" placeholder="请输入音频地址"></el-input> <el-button size="mini" type="success" @click="addRadio()">添加</el-button> </el-form-item> <div v-for="(data,index) in selectedMould[nowIndex].content.radio"> <el-form-item label="音频名字"> <el-input v-model="data.title" placeholder="请输入音频显示标题"></el-input> </el-form-item> <el-form-item label="音频作者"> <el-input v-model="data.lable" placeholder="请输入音频来源作者"></el-input> </el-form-item> </div> <el-form-item label="上一步序号"> <el-select v-model="selectedMould[nowIndex].content.lastIndex" placeholder="请选择"> <el-option v-for="(item,index) in selectedMould" :key="index" :label="index" :value="index"> </el-option> </el-select> </el-form-item> <el-form-item label="下一步序号"> <el-select v-model="selectedMould[nowIndex].content.nextIndex" placeholder="请选择"> <el-option v-for="(item,index) in selectedMould" :key="index" :label="index" :value="index"> </el-option> <el-option label="无" :value="-1"> </el-option> </el-select> </el-form-item> <el-form-item label="标题类型"> <el-select v-model="selectedMould[nowIndex].content.titleType" placeholder="请选择"> <el-option :value="0" label="宝贝玩一玩"> </el-option> <el-option :value="1" label="磨耳朵"> </el-option> </el-select> </el-form-item> <el-form-item label="按钮组"> <el-select v-model="selectedMould[nowIndex].content.buttonType" placeholder="请选择"> <el-option :value="0" label="返回看一看 + 爸妈秀宝贝"> </el-option> <el-option :value="1" label="上一页 + 完成今日学习"> </el-option> <el-option :value="2" label="上一页 + 下一页"> </el-option> </el-select> </el-form-item> <el-form-item label="视频切换"> <el-switch v-model="selectedMould[nowIndex].content.tabVideo.type"> </el-switch> </el-form-item> <el-form-item label="视频目标" v-if="selectedMould[nowIndex].content.tabVideo.type"> <el-select v-model="selectedMould[nowIndex].content.tabVideo.index" placeholder="请选择"> <el-option v-for="(item,index) in selectedMould" :key="index" :label="index" :value="index"> </el-option> </el-select> </el-form-item> <el-form-item label="停留时长"> <el-input-number v-model="selectedMould[nowIndex].content.timeLang"></el-input-number> </el-form-item> </el-form> <!--视频玩一玩1--> <el-form label-width="100px" v-if="selectedMould[nowIndex] && selectedMould[this.nowIndex].key === 'play1'"> <el-form-item label="模块"> <el-select v-model="selectedMould[nowIndex].name" placeholder="请选择"> <el-option label="爸妈看一看" :value="1"> </el-option> <el-option label="宝贝玩一玩" :value="2"> </el-option> <el-option label="宝贝成长秀" :value="3"> </el-option> <el-option label="多元趣味课" :value="4"> </el-option> </el-select> </el-form-item> <el-form-item label="音频"> <el-button type="success" size="small" v-if="!urlShow" @click="urlShow = true"> 地址输入 </el-button> <el-button type="success" size="small" v-if="urlShow" @click="urlShow = false"> 素材上传 </el-button> </el-form-item> <el-form-item v-if="!urlShow"> <el-upload class="upload-demo" action="/api/public/upload" :http-request="uploadFileVideo" :on-remove="removeFileVideoUrl" :on-exceed="handleExceed" multiple :limit="1" :disabled="(fileUid && progress < 99)" :file-list="selectedMould[nowIndex].content.videoUrl"> <el-button size="small" type="primary" :disabled="(fileUid && progress < 100)">点击上传</el-button> <div style="width: 300px"> <el-progress v-if="fileUid" :percentage="progress"></el-progress> </div> </el-upload> </el-form-item> <el-form-item v-if="urlShow"> <el-input v-model="selectedMould[nowIndex].content.videoUrl[0].url" v-if="selectedMould[nowIndex].content.videoUrl[0]" @change="urlChangeVidoe" placeholder="请输入视频地址"></el-input> <el-input v-if="!selectedMould[nowIndex].content.videoUrl[0]" placeholder="请输入视频地址" @change="urlChangeVidoe"></el-input> </el-form-item> <el-form-item label="视频封面"> <el-upload class="upload-demo" action="/api/public/upload" :http-request="uploadFileVideo1Banner" :on-remove="removeFileBanner" :on-exceed="handleExceed" list-type="picture-card" multiple :limit="1" :disabled="(fileUid && progress < 99)" :file-list="selectedMould[nowIndex].content.banner"> </el-upload> </el-form-item> <el-form-item label="是否切换"> <el-switch v-model="selectedMould[nowIndex].content.tabRadio.type"> </el-switch> </el-form-item> <el-form-item label="切换目标" v-if="selectedMould[nowIndex].content.tabRadio.type"> <el-select v-model="selectedMould[nowIndex].content.tabRadio.index" placeholder="请选择"> <el-option v-for="(item,index) in selectedMould" :key="index" :label="index" :value="index"> </el-option> </el-select> </el-form-item> <el-form-item label="上一步序号"> <el-select v-model="selectedMould[nowIndex].content.lastIndex" placeholder="请选择"> <el-option v-for="(item,index) in selectedMould" :key="index" :label="index" :value="index"> </el-option> </el-select> </el-form-item> <el-form-item label="下一步序号"> <el-select v-model="selectedMould[nowIndex].content.nextIndex" placeholder="请选择"> <el-option v-for="(item,index) in selectedMould" :key="index" :label="index" :value="index"> </el-option> <el-option label="无" :value="-1"> </el-option> </el-select> </el-form-item> </el-form> <!--唱学加油包1--> <el-form label-width="100px" v-if="selectedMould[nowIndex] && selectedMould[this.nowIndex].key === 'refueling1'"> <el-form-item label="模块"> <el-select v-model="selectedMould[nowIndex].name" placeholder="请选择"> <el-option label="爸妈看一看" :value="1"> </el-option> <el-option label="宝贝玩一玩" :value="2"> </el-option> <el-option label="宝贝成长秀" :value="3"> </el-option> <el-option label="多元趣味课" :value="4"> </el-option> </el-select> </el-form-item> <el-form-item label="音频"> <el-button type="success" size="small" v-if="!urlShow" @click="urlShow = true"> 地址输入 </el-button> <el-button type="success" size="small" v-if="urlShow" @click="urlShow = false"> 素材上传 </el-button> </el-form-item> <el-form-item v-if="!urlShow"> <el-upload class="upload-demo" action="/api/public/upload" :on-remove="removeFileRadio2" :http-request="uploadFileRadio2" multiple :disabled="(fileUid && progress < 99)" :file-list="selectedMould[nowIndex].content.radio"> <el-button size="small" type="primary" :disabled="(fileUid && progress < 99)">点击上传</el-button> <div style="width: 300px"> <el-progress v-if="fileUid" :percentage="progress"></el-progress> </div> </el-upload> </el-form-item> <el-form-item v-if="urlShow"> <el-input v-model="selectedMould[nowIndex].content.radio[0].url" v-if="selectedMould[nowIndex].content.radio[0]" @change="urlChangeAudio" placeholder="请输入音频地址"></el-input> <el-input v-if="!selectedMould[nowIndex].content.radio[0]" placeholder="请输入音频地址" @change="urlChangeAudio"></el-input> </el-form-item> <el-form-item label="图片"> <el-upload class="upload-demo" action="/api/public/upload" :http-request="uploadFileVideo1Banner" list-type="picture-card" :on-remove="removeFileBanner" multiple :on-exceed="handleExceed" :limit="1" :disabled="(fileUid && progress < 99)" :file-list="selectedMould[nowIndex].content.banner"> </el-upload> </el-form-item> <el-form-item label="上一步序号"> <el-select v-model="selectedMould[nowIndex].content.lastIndex" placeholder="请选择"> <el-option v-for="(item,index) in selectedMould" :key="index" :label="index" :value="index"> </el-option> </el-select> </el-form-item> <el-form-item label="下一步序号"> <el-select v-model="selectedMould[nowIndex].content.nextIndex" placeholder="请选择"> <el-option v-for="(item,index) in selectedMould" :key="index" :label="index" :value="index"> </el-option> <el-option label="无" :value="-1"> </el-option> </el-select> </el-form-item> </el-form> <!--唱学加油包2--> <el-form label-width="100px" v-if="selectedMould[nowIndex] && selectedMould[this.nowIndex].key === 'refueling2'"> <el-form-item label="模块"> <el-select v-model="selectedMould[nowIndex].name" placeholder="请选择"> <el-option label="爸妈看一看" :value="1"> </el-option> <el-option label="宝贝玩一玩" :value="2"> </el-option> <el-option label="宝贝成长秀" :value="3"> </el-option> <el-option label="多元趣味课" :value="4"> </el-option> </el-select> </el-form-item> <el-form-item label="音频"> <el-button type="success" size="small" v-if="!urlShow" @click="urlShow = true"> 地址输入 </el-button> <el-button type="success" size="small" v-if="urlShow" @click="urlShow = false"> 素材上传 </el-button> </el-form-item> <el-form-item v-if="!urlShow"> <el-upload class="upload-demo" action="/api/public/upload" :on-remove="removeFileRadio2" :http-request="uploadFileRadio2" multiple :disabled="(fileUid && progress < 99)" :file-list="selectedMould[nowIndex].content.radio"> <el-button size="small" type="primary" :disabled="(fileUid && progress < 99)">点击上传</el-button> <div style="width: 300px"> <el-progress v-if="fileUid" :percentage="progress"></el-progress> </div> </el-upload> </el-form-item> <el-form-item v-if="urlShow"> <el-input v-model="selectedMould[nowIndex].content.radio[0].url" v-if="selectedMould[nowIndex].content.radio[0]" @change="urlChangeAudio" placeholder="请输入音频地址"></el-input> <el-input v-if="!selectedMould[nowIndex].content.radio[0]" placeholder="请输入音频地址" @change="urlChangeAudio"></el-input> </el-form-item> <el-form-item label="图片"> <el-upload class="upload-demo" action="/api/public/upload" :http-request="uploadFileVideo1Banner" list-type="picture-card" :on-remove="removeFileBanner" multiple :on-exceed="handleExceed" :limit="1" :disabled="(fileUid && progress < 99)" :file-list="selectedMould[nowIndex].content.banner"> </el-upload> </el-form-item> <el-form-item label="标题"> <el-select v-model="selectedMould[nowIndex].content.title" placeholder="请选择"> <el-option label="多元趣味课" :value="0"> </el-option> <el-option label="宝贝玩一玩" :value="1"> </el-option> </el-select> </el-form-item> <el-form-item label="上一步序号"> <el-select v-model="selectedMould[nowIndex].content.lastIndex" placeholder="请选择"> <el-option v-for="(item,index) in selectedMould" :key="index" :label="index" :value="index"> </el-option> </el-select> </el-form-item> <el-form-item label="下一步序号"> <el-select v-model="selectedMould[nowIndex].content.nextIndex" placeholder="请选择"> <el-option v-for="(item,index) in selectedMould" :key="index" :label="index" :value="index"> </el-option> <el-option label="无" :value="-1"> </el-option> </el-select> </el-form-item> </el-form> <!--爸妈秀宝贝1--> <el-form label-width="100px" v-if="selectedMould[nowIndex] && selectedMould[this.nowIndex].key === 'show1'"> <el-form-item label="模块"> <el-select v-model="selectedMould[nowIndex].name" placeholder="请选择"> <el-option label="爸妈看一看" :value="1"> </el-option> <el-option label="宝贝玩一玩" :value="2"> </el-option> <el-option label="宝贝成长秀" :value="3"> </el-option> <el-option label="多元趣味课" :value="4"> </el-option> </el-select> </el-form-item> <el-form-item label="说明文字"> <el-input type="textarea" :rows="3" v-model="selectedMould[nowIndex].content.text"></el-input> </el-form-item> <el-form-item label="解锁限制"> <el-switch v-model="selectedMould[nowIndex].content.check"> </el-switch> </el-form-item> <el-form-item label="上一步序号"> <el-select v-model="selectedMould[nowIndex].content.lastIndex" placeholder="请选择"> <el-option v-for="(item,index) in selectedMould" :key="index" :label="index" :value="index"> </el-option> </el-select> </el-form-item> <el-form-item label="下一步序号"> <el-select v-model="selectedMould[nowIndex].content.nextIndex" placeholder="请选择"> <el-option v-for="(item,index) in selectedMould" :key="index" :label="index" :value="index"> </el-option> <el-option label="无" :value="-1"> </el-option> </el-select> </el-form-item> </el-form> <span slot="footer" class="dialog-footer" style="text-align: center"> <!--<el-button type="default" @click="dialogVisible = false">取消</el-button>--> <el-button type="primary" @click="dialogVisible = false">确 定</el-button> </span> </el-dialog> </div> </template> <script> import mouldImg from '../../util/mouldImgUrl' import {uploadFileApi} from "../../service/api"; export default { name: "editor", props:[ 'selectedMould', 'editorObj' ], data(){ return { // 放大缩小参数 bigNum:50, // 弹窗参数 dialogVisible:false, // 当前对象下标 nowIndex:0, // 模板图片集 mouldImg:mouldImg, // 文件上传Uid fileUid:null, // radio播放标志 lookAudioType:true, // 播放进度 audioLeft:0, // 音频下标 radioLenth:0, // 视频播放 playVideoType:true, // url选择标志 urlShow:true } }, mounted(){ }, computed:{ progress(){ return this.$store.state.progressList.find(i=>{return i.id === this.fileUid}).num <100 ? this.$store.state.progressList.find(i=>{return i.id === this.fileUid}).num : 100 } }, methods:{ initPage(){ switch (this.editorObj.type) { case 0: this.selectedMould=[] } }, playVideo(){ this.playVideoType = false; this.$refs.video.play() }, playLook1Audio(){ this.$refs.audio.play(); this.lookAudioType = false }, playJiayou(){ if(this.$refs.audio.paused){ this.$refs.audio.play() }else{ this.$refs.audio.pause() } }, // 暂停看一看音频 stopLook1Audio(){ this.$refs.audio.pause(); this.lookAudioType = true }, formatBr(str){ str = str.replace(/\r\n/g,"<br/>"); str = str.replace(/\n/g,"<br/>"); str = str.replace(/\r/g,"<br/>"); return str }, setOpen(){ if ( !this.selectedMould[this.nowIndex]){ this.$message.info('请先选泽模版!'); } else { this.dialogVisible = true; } }, // 上传Banner uploadFileVideo1Banner(a){ this.$store.dispatch('setProgress',{type:'new',id:a.file.uid}); uploadFileApi({file:a.file,type:'local'}).then(res=>{ this.$message({ type: 'success', message: '上传成功!' }); this.selectedMould[this.nowIndex].content.banner[0] = {name:res.name,url:process.env.IMAGE_URL_HEAD + res.url,title:'',lable:''}; this.$store.dispatch('setProgress',{type:'delete',id:a.file.uid}); this.fileUid=null }) }, // 删除文件 removeFileVideoUrl(a,b){ this.selectedMould[this.nowIndex].content.videoUrl = []; this.fileUid=null }, removeFileBanner(a,b){ this.selectedMould[this.nowIndex].content.banner = []; this.fileUid=null }, removeFileRadio(a,b){ this.selectedMould[this.nowIndex].content.radio = []; this.fileUid=null }, removeFileRadio2(a,b){ this.selectedMould[this.nowIndex].content.radio = b; this.fileUid=null }, // 上传音频 uploadFileRadio(a){ this.$store.dispatch('setProgress',{type:'new',id:a.file.uid}); this.fileUid = a.file.uid; uploadFileApi({file:a.file,type:'local'}).then(res=>{ this.$message({ type: 'success', message: '上传成功!' }); this.selectedMould[this.nowIndex].content.radio[0] = {name:res.name,url:process.env.IMAGE_URL_HEAD + res.url,title:'',lable:''}; this.$store.dispatch('setProgress',{type:'delete',id:a.file.uid}); this.fileUid=null }) }, // 上传多个音频 uploadFileRadio2(a){ this.$store.dispatch('setProgress',{type:'new',id:a.file.uid}); this.fileUid = a.file.uid; uploadFileApi({file:a.file,type:'local'}).then(res=>{ this.$message({ type: 'success', message: '上传成功!' }); this.selectedMould[this.nowIndex].content.radio.push({name:res.name,url:process.env.IMAGE_URL_HEAD + res.url,title:'',lable:''}); this.$store.dispatch('setProgress',{type:'delete',id:a.file.uid}); this.fileUid=null }) }, // 上传视频 uploadFileVideo(a){ this.$store.dispatch('setProgress',{type:'new',id:a.file.uid}); this.fileUid = a.file.uid; uploadFileApi({file:a.file,type:'local'}).then(res=>{ this.$message({ type: 'success', message: '上传成功!' }); this.selectedMould[this.nowIndex].content.videoUrl[0]= {name:res.name,url:process.env.IMAGE_URL_HEAD + res.url,title:'',lable:''}; this.$store.dispatch('setProgress',{type:'delete',id:a.file.uid}); this.fileUid=null }) }, // 列表选择 chooseThat(data){ this.nowIndex = data; }, // 超出个数显示 handleExceed(){ this.$message.error('超出文件限制个数'); }, updateTime(e){ let time = e.target.currentTime / e.target.duration * 544; this.audioLeft = time + 'px'; if(e.target.currentTime === e.target.duration ){ this.playAudioType = false } }, delMould(index){ this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => { this.selectedMould.splice(index,1); if(this.nowIndex > this.selectedMould.length - 1){ this.nowIndex = 0; } }); }, // 切换音频+ aRadio(){ if(this.radioLenth <this.selectedMould[this.nowIndex].content.radio.length - 1){ this.radioLenth ++; this.playAudioType = false; this.audioLeft = 0; }else{ } }, // 切换音频- dRadio(){ if(this.radioLenth>0){ this.radioLenth --; this.playAudioType = false; this.audioLeft = 0; }else{ } }, urlChangeAudio(e){ let a = e.split('/'); this.selectedMould[this.nowIndex].content.radio[0] = {name:a[a.length-1],url:e} }, urlChangeVidoe(e){ let a = e.split('/'); this.selectedMould[this.nowIndex].content.videoUrl[0] = {name:a[a.length-1],url:e} }, addRadio(){ this.selectedMould[this.nowIndex].content.radio.push({name:'',url:''}) }, urlChangeAudioMore(e,index){ let a = e.split('/'); this.selectedMould[this.nowIndex].content.radio[index] = {name:a[a.length-1],url:e} } }, watch:{ 'selectedMould':{ handler(newValue, oldValue) { this.pageList = newValue }, deep: true } }, } </script> <style> .el-upload{ text-align: left; } </style> <style scoped lang="less"> @import "../../util/public"; .editor{ height: 100%; } .aside-block{ height: 100%; overflow: scroll; } .el-container{ position: relative; background: white; height: 100%; .head-top{ background: #f5f8ff; font-size: 14px; color: #333333; padding: 5px; position: absolute; top: -102px; left: 50%; width: 182px; margin-left: -91px; .page-type{ display: inline-block; padding: 0 10px; } } .head-edit{ position: absolute; top: -49px; left: 190px; width: 182px; margin-left: 0; } .el-header{ padding: 0; .head-content{ padding: 10px; text-align: center; line-height: 60px; font-size: 18px; } } .page-list{ padding: 10px 0; .el-card{ margin: 15px 0; position: relative; .dialog-card{ position: absolute; top: 0; left: 0; bottom: 0; right: 0; text-align: center; padding: 20px; background: rgba(0,0,0,0.3); color: white; font-size: 18px; } img{ width: 100%; } } } } .plus-radio{ text-align: center; margin: 10px; padding: 5px; border-radius: 8px; font-size: 20px; cursor: pointer; border: 3px dashed #cccccc; } .look1{ transform-origin:50% 0; width: 750px; height: 1334px; overflow-x: hidden; overflow-y: auto; margin: auto; position: relative; &.play1{ .bg-block{ width:1094px ; height: 568px; transform-origin: 340px 355px; transform: rotate(90deg); padding: 20px; .radio-img{ position: absolute; right: 10px; top: 20px; width: 80px; } .btn{ width: 60px; position: absolute; right: 10px; bottom: 40px; &.back{ bottom:120px } } .video-block{ background: black; border-radius: 8px; height: 570px; width: 1012px; position: relative; .icon-class{ position: absolute; top: 0; bottom: 0; left: 0; right: 0; z-index: 1000; background: rgba(0,0,0,0.3); } img{ position: absolute; top: 50%; left: 50%; margin-top: -50px; margin-left: -50px; } video{ width: 1000px; } } } } &.radio1{ .bg-block{ background-color: transparent; border: none; box-shadow: none; background-repeat: no-repeat; background-size: 100% 100%; .tab-video-img{ position: absolute; bottom: 30px; right: 30px; } .name-block{ margin-top: 40px; font-family: PingFang-SC-Regular; color: #333333; .name{ height: 50px; line-height: 50px; font-size: 32px; } .ahtor{ font-size: 24px; } } .play-block{ width: 544px; margin: 40px auto auto auto; position: relative; .radius-icon{ position: absolute; width: 25px; top: -2px; left: 0; height: 25px; background: #80952B ; border-radius: 100px; } } .btn-block{ line-height: 200px; img{ vertical-align: middle;; margin-right: 20px; &:last-child{ margin-right: 0; } } } } } &.show1{ &>img{ position: absolute; z-index: 2; &.haiou{ bottom: 350px; left: 70px; } &.riji{ top: 210px; left: 0; } &.yeziyou{ bottom: 0; right: 0; } &.yezizuo{ bottom: 0; left: 0; } &.zhaopianqiang{ bottom: 350px; left: 80px; } } .bg-block{ position: relative; background: none; box-shadow: none; .zhuangshi{ bottom: 0; } } .title-block{ padding-top: 60px; } .textarea{ background: #FDFDFD; height: 352px; width: 626px; margin: auto; box-shadow: inset 1px 1px 3px 1px rgba(142,142,142,0.50); border-radius: 8px; position: relative; .btn-block{ position: absolute; bottom: 10px; right: 10px; img{ margin-right: 10px; } } } .text-block{ width: 600px; margin: auto; padding-top: 20px; text-align: left; font-family: PingFang-SC-Medium; font-size: 28px; color: #666666; line-height: 40px; .text-content{ font-family: PingFang-SC-Regular; font-size: 24px; color: #999999; } } .sub-block{ position: absolute; width: 100%; text-align: center; bottom: 160px; } } &.refueling1{ .bottom-block{ position: static; } .bg-block{ height: auto; min-height: 1080px; } .content-img{ position: relative; min-height: 832px; background-repeat: no-repeat; background-size: 100% 100%; margin: 20px; border-radius: 8px; .radio-icon{ position: absolute; right: 20px; top: 20px; } } } &.refueling2{ .bg-block{ width: 1154px; height: 690px; transform-origin: 355px 370px; transform: rotate(90deg); background: white; .title{ position: relative; top: -30px; } .content-img{ width: 1078px; min-height: 550px; margin: -40px auto 0 auto; position: relative; border-radius: 8px; background-size: 100% 100%; .radio-icon{ position: absolute; bottom: 20px; left: 20px; } .left-icon{ position: absolute; top: 50%; margin-top: -30px; left: 20px; } .right-icon{ position: absolute; top: 50%; margin-top: -30px; right: 20px; } } } } &>div{ margin: auto; text-align: center; } .bg-block{ width: 690px; height: 1080px; position: relative; background: #FFFFFF; box-shadow: 0 2px 3px 1px rgba(153,153,153,0.50); border-radius: 8px; margin: 150px auto 100px auto; .today-block{ position: relative; .today-text{ position: absolute; top: 70px; left: 0; bottom: 0; right: 0; font-size: 28px; line-height: 70px; text-align: left; padding-left: 40px; padding-right: 30px; z-index: 3; overflow: hidden; .zhanwei1{ float: left; clear: left; width: 30px; height: 70px; } .zhanwei2{ float: left; clear: left; width: 120px; height: 70px; } .zhanwei3{ float: left; clear: left; width: 140px; height: 70px; } } } .reqiqiu{ position: absolute; left: -30px; z-index: 1; } .qiqiu{ position: absolute; z-index: 1; left: -30px; top: 700px } .feiji{ position: absolute; z-index: 1; right: -30px; top: 200px; } .title-block{ text-align: center; width: 560px; margin: auto; height: 152px; line-height: 152px; img{ vertical-align: middle; } } .radio{ text-align: center; position: relative; height: 55 * 2px; .r1{ position: absolute; bottom: 10 * 2px; width: 225.5 * 2px; right: 10 * 2px; } .r2{ position: absolute; right: 45 * 2px; width: 118*2px; bottom: 13 * 2px; } .r3{ position: absolute; left: 15 * 2px; bottom: 10 * 2px; width: 73 * 2px; } .rs{ position: absolute; right: 190 * 2px; bottom: 15 * 2px; width: 22 * 2px; } .rp{ position: absolute; right: 190 * 2px; bottom: 15 * 2px; width: 22 * 2px; } } .title2-block{ background: #FFFFFF; border: 2px solid #2E2E2E; border-radius: 8px; margin: 0 30px; position: relative; top: 35px; height: 450px; .directory-text{ position: absolute; top: 50px; left: 0; bottom: 0; right: 0; font-size: 28px; line-height: 70px; text-align: left; padding-left: 40px; padding-right: 30px; z-index: 3; overflow: auto; } .title2{ position: absolute; top: -45px; left: 20px; } .redM{ position: absolute; top: -4px; right: -4px; } .flour{ position: absolute; bottom: 0; right: 0; } } } .bottom-block{ position: absolute; bottom: 18px; width: 100%; text-align: center; img:first-child{ margin-right: 50px; } } } .border { border: 1px dashed red; } .box { padding: 0px; } .list2-btn{ position: absolute; top: 50%; left: 50%; transition: all 1s; display: none; i{ color: #444; font-size: 26px; margin-left: -13px; &:hover{ color: #333; } } z-index: 999; } .card-item { position: relative; } .upload-demo{ text-align: left; } .el-upload{ text-align: left; } .card-item:hover .list2-btn{ display: inline-block; } </style>