|
|
@@ -32,7 +32,7 @@ |
|
|
<div class="addText-title">添加文案</div> |
|
|
<div class="addText-title">添加文案</div> |
|
|
<div class="desalinate"> |
|
|
<div class="desalinate"> |
|
|
<span>已录入{{ textareaContent.length }}字</span> |
|
|
<span>已录入{{ textareaContent.length }}字</span> |
|
|
<span>视频时长: 00:16</span> |
|
|
|
|
|
|
|
|
<!-- <span>视频时长: 00:16</span> --> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
<!-- 标题框 --> |
|
|
<!-- 标题框 --> |
|
|
@@ -59,10 +59,14 @@ |
|
|
<div class="addText-title"> |
|
|
<div class="addText-title"> |
|
|
播报声音<span class="redWord">(必选)</span> |
|
|
播报声音<span class="redWord">(必选)</span> |
|
|
</div> |
|
|
</div> |
|
|
<div>{{ soundChoose.subTitle }}</div> |
|
|
|
|
|
|
|
|
<div v-if="soundChoose2.speakTypeStr"> |
|
|
|
|
|
{{ soundChoose.subTitle }}-{{ soundChoose.title }}-{{ |
|
|
|
|
|
soundChoose.ageTypeStr |
|
|
|
|
|
}}-{{ soundChoose2.speakTypeStr }} |
|
|
|
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
<!-- 合成按钮 --> |
|
|
<!-- 合成按钮 --> |
|
|
<div class="makeVideo" @click="submit">立即制作</div> |
|
|
|
|
|
|
|
|
<div class="makeVideo" @click="submit(1)">立即制作</div> |
|
|
<!-- 上移下移 --> |
|
|
<!-- 上移下移 --> |
|
|
<div class="upAndBottomBtn"> |
|
|
<div class="upAndBottomBtn"> |
|
|
<div class="moveLayer" :class="videoType == 2 ? 'moveLayer1' : ''"> |
|
|
<div class="moveLayer" :class="videoType == 2 ? 'moveLayer1' : ''"> |
|
|
@@ -107,26 +111,33 @@ |
|
|
<img src="../../assets/icon/icon-material.png" /> |
|
|
<img src="../../assets/icon/icon-material.png" /> |
|
|
</template> |
|
|
</template> |
|
|
</van-tabbar-item> |
|
|
</van-tabbar-item> |
|
|
<van-tabbar-item @click="clickBottomTab(4)"> |
|
|
|
|
|
|
|
|
<!-- <van-tabbar-item @click="clickBottomTab(4)" disabled> |
|
|
<span v-show="showSubtitle">取消字幕</span> |
|
|
<span v-show="showSubtitle">取消字幕</span> |
|
|
<span v-show="!showSubtitle">添加字幕</span> |
|
|
<span v-show="!showSubtitle">添加字幕</span> |
|
|
<template #icon="props"> |
|
|
<template #icon="props"> |
|
|
<img src="../../assets/icon/icon-subtitle.png" /> |
|
|
<img src="../../assets/icon/icon-subtitle.png" /> |
|
|
</template> |
|
|
</template> |
|
|
</van-tabbar-item> |
|
|
|
|
|
|
|
|
</van-tabbar-item> --> |
|
|
</van-tabbar> |
|
|
</van-tabbar> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<!-- 合成视频进度条 --> |
|
|
<!-- 合成视频进度条 --> |
|
|
<div v-if="showSynthesisDialog" class="synthesisDialog"> |
|
|
<div v-if="showSynthesisDialog" class="synthesisDialog"> |
|
|
<div class="synthesisDialog-in"> |
|
|
<div class="synthesisDialog-in"> |
|
|
<el-progress |
|
|
|
|
|
|
|
|
<van-progress |
|
|
|
|
|
:percentage="percentageData" |
|
|
|
|
|
color="#7264F5" |
|
|
|
|
|
define-back-color="#f0effe" |
|
|
|
|
|
stroke-width="12" |
|
|
|
|
|
class="progress" |
|
|
|
|
|
/> |
|
|
|
|
|
<!-- <el-progress |
|
|
color="#7264F5" |
|
|
color="#7264F5" |
|
|
define-back-color="#f0effe" |
|
|
define-back-color="#f0effe" |
|
|
stroke-width="12" |
|
|
stroke-width="12" |
|
|
class="progress" |
|
|
class="progress" |
|
|
:percentage="26" |
|
|
:percentage="26" |
|
|
></el-progress> |
|
|
|
|
|
|
|
|
></el-progress> --> |
|
|
<div class="synthesisDialog-text">正在生成视频,请耐心等待!</div> |
|
|
<div class="synthesisDialog-text">正在生成视频,请耐心等待!</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
@@ -204,6 +215,13 @@ |
|
|
position="bottom" |
|
|
position="bottom" |
|
|
:style="{ width: '100%' }" |
|
|
:style="{ width: '100%' }" |
|
|
> |
|
|
> |
|
|
|
|
|
<div |
|
|
|
|
|
class="SoundList2-title" |
|
|
|
|
|
@click="showSoundList2 = !showSoundList2" |
|
|
|
|
|
> |
|
|
|
|
|
<div> </div> |
|
|
|
|
|
<img class="yesImg" src="../../assets/icon/icon-yes.png" alt="" /> |
|
|
|
|
|
</div> |
|
|
<div class="list"> |
|
|
<div class="list"> |
|
|
<div v-if="soundItemList2.length == 0">暂无数据</div> |
|
|
<div v-if="soundItemList2.length == 0">暂无数据</div> |
|
|
<template v-if="soundItemList.length != 0"> |
|
|
<template v-if="soundItemList.length != 0"> |
|
|
@@ -425,6 +443,9 @@ export default { |
|
|
}, |
|
|
}, |
|
|
data() { |
|
|
data() { |
|
|
return { |
|
|
return { |
|
|
|
|
|
id: null, |
|
|
|
|
|
timeOuter: null, |
|
|
|
|
|
percentageData: 1, // 进度条的值 |
|
|
pageNum: 1, |
|
|
pageNum: 1, |
|
|
pageSize: 20, |
|
|
pageSize: 20, |
|
|
proportion: null, //编辑页面的比例 |
|
|
proportion: null, //编辑页面的比例 |
|
|
@@ -456,6 +477,7 @@ export default { |
|
|
soundItemListAction: -1, // 声音展示列表高亮 |
|
|
soundItemListAction: -1, // 声音展示列表高亮 |
|
|
soundItemListAction2: -1, // 声音展示列表高亮二级 |
|
|
soundItemListAction2: -1, // 声音展示列表高亮二级 |
|
|
soundChoose: {}, //选中的音频 |
|
|
soundChoose: {}, //选中的音频 |
|
|
|
|
|
soundChoose2: {}, //选中的音频二级 |
|
|
//编辑 |
|
|
//编辑 |
|
|
bjAction: 0, // 背景:素材库和上传高亮 |
|
|
bjAction: 0, // 背景:素材库和上传高亮 |
|
|
bjImgAction: -1, // 选中背景图高亮 |
|
|
bjImgAction: -1, // 选中背景图高亮 |
|
|
@@ -528,8 +550,6 @@ export default { |
|
|
delete obj.data.subVoiceMould |
|
|
delete obj.data.subVoiceMould |
|
|
let list2 = [{ ...obj.data }, ...list] |
|
|
let list2 = [{ ...obj.data }, ...list] |
|
|
|
|
|
|
|
|
console.log(list2) |
|
|
|
|
|
|
|
|
|
|
|
this.soundItemList2 = list2 || [] |
|
|
this.soundItemList2 = list2 || [] |
|
|
|
|
|
|
|
|
// console.log(this.soundItemList2) |
|
|
// console.log(this.soundItemList2) |
|
|
@@ -543,19 +563,20 @@ export default { |
|
|
async clickSoundItem2(index, item) { |
|
|
async clickSoundItem2(index, item) { |
|
|
if (this.soundItemListAction2 != index) { |
|
|
if (this.soundItemListAction2 != index) { |
|
|
this.soundItemListAction2 = index //高亮 |
|
|
this.soundItemListAction2 = index //高亮 |
|
|
this.soundChoose = item |
|
|
|
|
|
|
|
|
this.soundChoose2 = item |
|
|
// 得到试听文件 |
|
|
// 得到试听文件 |
|
|
const res = await videoDetial(item.exampleVideoId) |
|
|
const res = await videoDetial(item.exampleVideoId) |
|
|
|
|
|
|
|
|
this.audioUrl = res.data.videoUrl |
|
|
this.audioUrl = res.data.videoUrl |
|
|
} else { |
|
|
} else { |
|
|
this.soundItemListAction2 = -1 |
|
|
this.soundItemListAction2 = -1 |
|
|
this.soundChoose = {} |
|
|
|
|
|
|
|
|
this.soundChoose2 = {} |
|
|
} |
|
|
} |
|
|
}, |
|
|
}, |
|
|
|
|
|
|
|
|
// 提交合成视频 |
|
|
// 提交合成视频 |
|
|
submit() { |
|
|
|
|
|
|
|
|
submit(type) { |
|
|
|
|
|
// type代表时保存还是点击生成视频按钮 |
|
|
// 组装参数 |
|
|
// 组装参数 |
|
|
console.log(this.soundChoose.id) |
|
|
console.log(this.soundChoose.id) |
|
|
// 素材列表处理 |
|
|
// 素材列表处理 |
|
|
@@ -583,7 +604,7 @@ export default { |
|
|
h: this.materialList.virtual.h |
|
|
h: this.materialList.virtual.h |
|
|
} |
|
|
} |
|
|
const data = { |
|
|
const data = { |
|
|
id: this.$route.query.id, |
|
|
|
|
|
|
|
|
id: this.id, |
|
|
videoType: this.videoType, //横屏竖屏 |
|
|
videoType: this.videoType, //横屏竖屏 |
|
|
personMouldId: this.materialList.virtual.id, //数字人id |
|
|
personMouldId: this.materialList.virtual.id, //数字人id |
|
|
voiceMouldIds: [this.soundChoose.id], //声音id |
|
|
voiceMouldIds: [this.soundChoose.id], //声音id |
|
|
@@ -594,33 +615,37 @@ export default { |
|
|
materialAllJson: JSON.stringify([...scList]) // 素材 |
|
|
materialAllJson: JSON.stringify([...scList]) // 素材 |
|
|
} |
|
|
} |
|
|
console.log(data, '最终提交的参数') |
|
|
console.log(data, '最终提交的参数') |
|
|
|
|
|
|
|
|
// 当没有选择声音参数时 |
|
|
|
|
|
if (!this.soundChoose.id) { |
|
|
|
|
|
Toast.fail('请选择声音!') |
|
|
|
|
|
return |
|
|
|
|
|
} |
|
|
|
|
|
if (!this.inputTitle) { |
|
|
|
|
|
Toast.fail('请输入文案标题!') |
|
|
|
|
|
return |
|
|
|
|
|
} |
|
|
|
|
|
if (!this.textareaContent) { |
|
|
|
|
|
Toast.fail('请输入文案内容!') |
|
|
|
|
|
return |
|
|
|
|
|
|
|
|
if (type == 1) { |
|
|
|
|
|
// 当没有选择声音参数时 |
|
|
|
|
|
if (!this.soundChoose.id) { |
|
|
|
|
|
Toast.fail('请选择声音!') |
|
|
|
|
|
return |
|
|
|
|
|
} |
|
|
|
|
|
if (!this.inputTitle) { |
|
|
|
|
|
Toast.fail('请输入文案标题!') |
|
|
|
|
|
return |
|
|
|
|
|
} |
|
|
|
|
|
if (!this.textareaContent) { |
|
|
|
|
|
Toast.fail('请输入文案内容!') |
|
|
|
|
|
return |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
// 先保存草稿,里面再调生成视频的接口 |
|
|
// 先保存草稿,里面再调生成视频的接口 |
|
|
this.saveOrUpdate(data) |
|
|
|
|
|
|
|
|
this.saveOrUpdate(data, type) |
|
|
}, |
|
|
}, |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* @description:保存或修改用户作品 |
|
|
* @description:保存或修改用户作品 |
|
|
*/ |
|
|
*/ |
|
|
async saveOrUpdate(data) { |
|
|
|
|
|
|
|
|
async saveOrUpdate(data, type) { |
|
|
|
|
|
console.log(data) |
|
|
try { |
|
|
try { |
|
|
const res = await saveOrUpdateUserVideo(data) |
|
|
const res = await saveOrUpdateUserVideo(data) |
|
|
console.log(res, '保存或修改用户作品') |
|
|
console.log(res, '保存或修改用户作品') |
|
|
// this.createVideo({ id: this.saveID }) |
|
|
// this.createVideo({ id: this.saveID }) |
|
|
this.createVideo({ id: this.$route.query.id }) |
|
|
|
|
|
|
|
|
if (type == 1) { |
|
|
|
|
|
this.createVideo({ id: this.$route.query.id }) |
|
|
|
|
|
} |
|
|
} catch (error) { |
|
|
} catch (error) { |
|
|
console.log(error, 'error') |
|
|
console.log(error, 'error') |
|
|
Toast.fail(error.message) |
|
|
Toast.fail(error.message) |
|
|
@@ -636,10 +661,16 @@ export default { |
|
|
console.log(res, '生成视频') |
|
|
console.log(res, '生成视频') |
|
|
Toast.success('提交成功!') |
|
|
Toast.success('提交成功!') |
|
|
// *#06# |
|
|
// *#06# |
|
|
|
|
|
that.showSynthesisDialog = true //显示进度条 |
|
|
this.timeOuter = setTimeout(() => { |
|
|
this.timeOuter = setTimeout(() => { |
|
|
this.isShowCover = true |
|
|
this.isShowCover = true |
|
|
}, 2000) |
|
|
}, 2000) |
|
|
const timer = setInterval(() => { |
|
|
const timer = setInterval(() => { |
|
|
|
|
|
if (that.percentageData < 98) { |
|
|
|
|
|
that.percentageData += 1 |
|
|
|
|
|
} else { |
|
|
|
|
|
that.percentageData == 98 |
|
|
|
|
|
} |
|
|
// 重复调取此接口直到videoStatus == 2 || 3 |
|
|
// 重复调取此接口直到videoStatus == 2 || 3 |
|
|
this.getVideo(that.$route.query.id) |
|
|
this.getVideo(that.$route.query.id) |
|
|
if (this.timerOver) { |
|
|
if (this.timerOver) { |
|
|
@@ -660,6 +691,8 @@ export default { |
|
|
const res = await doFindVideoById(id) |
|
|
const res = await doFindVideoById(id) |
|
|
console.log(res, '通过id获取视频') |
|
|
console.log(res, '通过id获取视频') |
|
|
if (res.data.videoStatus == 2) { |
|
|
if (res.data.videoStatus == 2) { |
|
|
|
|
|
this.percentageData == 99 |
|
|
|
|
|
this.showSynthesisDialog = false //隐藏进度条 |
|
|
this.isShowCover = false |
|
|
this.isShowCover = false |
|
|
clearTimeout(this.timeOuter) |
|
|
clearTimeout(this.timeOuter) |
|
|
Toast.success('视频生成成功!') |
|
|
Toast.success('视频生成成功!') |
|
|
@@ -710,6 +743,7 @@ export default { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
this.videoType = res.data.videoType |
|
|
this.videoType = res.data.videoType |
|
|
|
|
|
this.id = res.data.id |
|
|
// this.imgUrl = res.data.personMould.coverImg |
|
|
// this.imgUrl = res.data.personMould.coverImg |
|
|
this.personMouldId = res.data.personMouldId |
|
|
this.personMouldId = res.data.personMouldId |
|
|
this.mouldSmId = res.data.personMouldSmId |
|
|
this.mouldSmId = res.data.personMouldSmId |
|
|
@@ -717,8 +751,9 @@ export default { |
|
|
this.textareaContent = res.data.paperwork || '' |
|
|
this.textareaContent = res.data.paperwork || '' |
|
|
this.soundChoose.id = res.data.voiceMouldId |
|
|
this.soundChoose.id = res.data.voiceMouldId |
|
|
this.soundChoose.mouldSmId = res.data.voiceMouldSmId |
|
|
this.soundChoose.mouldSmId = res.data.voiceMouldSmId |
|
|
|
|
|
|
|
|
await this.loadVoice() // 获取音频列表 |
|
|
|
|
|
|
|
|
if (this.textareaContent.length != 0) { |
|
|
|
|
|
await this.loadVoice() // 获取音频列表 |
|
|
|
|
|
} |
|
|
this.soundItemListAction = this.soundItemList.findIndex((item) => { |
|
|
this.soundItemListAction = this.soundItemList.findIndex((item) => { |
|
|
return item.id == this.soundChoose.id |
|
|
return item.id == this.soundChoose.id |
|
|
}) //高亮处理 |
|
|
}) //高亮处理 |
|
|
@@ -752,67 +787,67 @@ export default { |
|
|
let that = this |
|
|
let that = this |
|
|
// 背景 |
|
|
// 背景 |
|
|
if (this.bottomTabActive == 2 && this.bjImgAction != -1) { |
|
|
if (this.bottomTabActive == 2 && this.bjImgAction != -1) { |
|
|
Dialog.confirm({ |
|
|
|
|
|
// title: '退出登录', |
|
|
|
|
|
message: '您确定要用这张背景图吗?' |
|
|
|
|
|
}) |
|
|
|
|
|
.then(() => { |
|
|
|
|
|
if (that.bjAction == 0) { |
|
|
|
|
|
that.materialList.BGI = that.systemBGIList.find((item, index) => { |
|
|
|
|
|
return index == that.bjImgAction |
|
|
|
|
|
}) |
|
|
|
|
|
} else if (that.bjAction == 1) { |
|
|
|
|
|
that.materialList.BGI = that.myBGIList.find((item, index) => { |
|
|
|
|
|
return index == that.bjImgAction |
|
|
|
|
|
}) |
|
|
|
|
|
} |
|
|
|
|
|
this.showTabSheet = false |
|
|
|
|
|
|
|
|
// Dialog.confirm({ |
|
|
|
|
|
// // title: '退出登录', |
|
|
|
|
|
// message: '您确定要用这张背景图吗?' |
|
|
|
|
|
// }) |
|
|
|
|
|
// .then(() => { |
|
|
|
|
|
if (that.bjAction == 0) { |
|
|
|
|
|
that.materialList.BGI = that.systemBGIList.find((item, index) => { |
|
|
|
|
|
return index == that.bjImgAction |
|
|
}) |
|
|
}) |
|
|
.catch(() => { |
|
|
|
|
|
console.log('false') |
|
|
|
|
|
this.showTabSheet = false |
|
|
|
|
|
return |
|
|
|
|
|
|
|
|
} else if (that.bjAction == 1) { |
|
|
|
|
|
that.materialList.BGI = that.myBGIList.find((item, index) => { |
|
|
|
|
|
return index == that.bjImgAction |
|
|
}) |
|
|
}) |
|
|
|
|
|
} |
|
|
|
|
|
this.showTabSheet = false |
|
|
|
|
|
// }) |
|
|
|
|
|
// .catch(() => { |
|
|
|
|
|
// console.log('false') |
|
|
|
|
|
// this.showTabSheet = false |
|
|
|
|
|
// return |
|
|
|
|
|
// }) |
|
|
} |
|
|
} |
|
|
// 素材 |
|
|
// 素材 |
|
|
else if (this.bottomTabActive == 3 && this.scImgAction != -1) { |
|
|
else if (this.bottomTabActive == 3 && this.scImgAction != -1) { |
|
|
Dialog.confirm({ |
|
|
|
|
|
// title: '退出登录', |
|
|
|
|
|
message: '您确定要用这张素材图吗?' |
|
|
|
|
|
}) |
|
|
|
|
|
.then(() => { |
|
|
|
|
|
if (that.scAction == 0) { |
|
|
|
|
|
let scItem = that.systemScList.find((item, index) => { |
|
|
|
|
|
return index == that.scImgAction |
|
|
|
|
|
}) |
|
|
|
|
|
that.materialList.scList.push({ |
|
|
|
|
|
...scItem, |
|
|
|
|
|
x: 0, |
|
|
|
|
|
y: 0, |
|
|
|
|
|
z: 0, |
|
|
|
|
|
w: 1, |
|
|
|
|
|
h: 1 |
|
|
|
|
|
}) |
|
|
|
|
|
} else if (that.scAction == 1) { |
|
|
|
|
|
let scItem = that.myScList.find((item, index) => { |
|
|
|
|
|
return index == that.scImgAction |
|
|
|
|
|
}) |
|
|
|
|
|
that.materialList.scList.push({ |
|
|
|
|
|
...scItem, |
|
|
|
|
|
x: 0, |
|
|
|
|
|
y: 0, |
|
|
|
|
|
z: 0, |
|
|
|
|
|
w: 1, |
|
|
|
|
|
h: 1 |
|
|
|
|
|
}) |
|
|
|
|
|
} |
|
|
|
|
|
this.showTabSheet = false |
|
|
|
|
|
|
|
|
// Dialog.confirm({ |
|
|
|
|
|
// // title: '退出登录', |
|
|
|
|
|
// message: '您确定要用这张素材图吗?' |
|
|
|
|
|
// }) |
|
|
|
|
|
// .then(() => { |
|
|
|
|
|
if (that.scAction == 0) { |
|
|
|
|
|
let scItem = that.systemScList.find((item, index) => { |
|
|
|
|
|
return index == that.scImgAction |
|
|
|
|
|
}) |
|
|
|
|
|
that.materialList.scList.push({ |
|
|
|
|
|
...scItem, |
|
|
|
|
|
x: 0, |
|
|
|
|
|
y: 0, |
|
|
|
|
|
z: 0, |
|
|
|
|
|
w: 1, |
|
|
|
|
|
h: 1 |
|
|
}) |
|
|
}) |
|
|
.catch(() => { |
|
|
|
|
|
console.log('false') |
|
|
|
|
|
this.showTabSheet = false |
|
|
|
|
|
return |
|
|
|
|
|
|
|
|
} else if (that.scAction == 1) { |
|
|
|
|
|
let scItem = that.myScList.find((item, index) => { |
|
|
|
|
|
return index == that.scImgAction |
|
|
|
|
|
}) |
|
|
|
|
|
that.materialList.scList.push({ |
|
|
|
|
|
...scItem, |
|
|
|
|
|
x: 0, |
|
|
|
|
|
y: 0, |
|
|
|
|
|
z: 0, |
|
|
|
|
|
w: 1, |
|
|
|
|
|
h: 1 |
|
|
}) |
|
|
}) |
|
|
|
|
|
} |
|
|
|
|
|
this.showTabSheet = false |
|
|
|
|
|
// }) |
|
|
|
|
|
// .catch(() => { |
|
|
|
|
|
// console.log('false') |
|
|
|
|
|
// this.showTabSheet = false |
|
|
|
|
|
// return |
|
|
|
|
|
// }) |
|
|
} |
|
|
} |
|
|
// 啥没选 |
|
|
// 啥没选 |
|
|
else { |
|
|
else { |
|
|
@@ -890,12 +925,12 @@ export default { |
|
|
.then(async () => { |
|
|
.then(async () => { |
|
|
const res = await delImgApi(id) |
|
|
const res = await delImgApi(id) |
|
|
if (this.bottomTabActive == 2) { |
|
|
if (this.bottomTabActive == 2) { |
|
|
this.getMyBGIListApi() |
|
|
|
|
|
this.changeShowBGIList(0) |
|
|
|
|
|
|
|
|
await this.getMyBGIListApi() |
|
|
|
|
|
this.changeShowBGIList(1) |
|
|
} |
|
|
} |
|
|
if (this.bottomTabActive == 3) { |
|
|
if (this.bottomTabActive == 3) { |
|
|
this.getMyScListApi() |
|
|
|
|
|
this.changeShowBGIList(2) |
|
|
|
|
|
|
|
|
await this.getMyScListApi() |
|
|
|
|
|
this.changeShowBGIList(3) |
|
|
} |
|
|
} |
|
|
}) |
|
|
}) |
|
|
.catch(() => {}) |
|
|
.catch(() => {}) |
|
|
@@ -926,21 +961,12 @@ export default { |
|
|
this.proportion = 1920 / elementWidth |
|
|
this.proportion = 1920 / elementWidth |
|
|
console.log(this.proportion) |
|
|
console.log(this.proportion) |
|
|
} |
|
|
} |
|
|
|
|
|
}, |
|
|
|
|
|
async beforeDestroy() { |
|
|
|
|
|
this.timeOuter = null // 清除定时器 |
|
|
|
|
|
await this.submit(2) // 保存草稿 |
|
|
|
|
|
console.log('保存了') |
|
|
} |
|
|
} |
|
|
// beforeRouteLeave(to, from, next) { |
|
|
|
|
|
// let that = this |
|
|
|
|
|
// Dialog.confirm({ |
|
|
|
|
|
// // title: '退出登录', |
|
|
|
|
|
// message: '您还未编辑完成,需要保存为草稿吗?' |
|
|
|
|
|
// }) |
|
|
|
|
|
// .then(async () => { |
|
|
|
|
|
// const res = await that.submit() |
|
|
|
|
|
// next() |
|
|
|
|
|
// }) |
|
|
|
|
|
// .catch(() => { |
|
|
|
|
|
// next() |
|
|
|
|
|
// }) |
|
|
|
|
|
// } |
|
|
|
|
|
} |
|
|
} |
|
|
</script> |
|
|
</script> |
|
|
|
|
|
|
|
|
@@ -984,6 +1010,7 @@ export default { |
|
|
|
|
|
|
|
|
.content { |
|
|
.content { |
|
|
position: relative; |
|
|
position: relative; |
|
|
|
|
|
margin-top: 10px; |
|
|
padding: 0 10px; |
|
|
padding: 0 10px; |
|
|
padding-bottom: 50px; |
|
|
padding-bottom: 50px; |
|
|
|
|
|
|
|
|
@@ -1146,12 +1173,16 @@ export default { |
|
|
position: fixed; |
|
|
position: fixed; |
|
|
top: 0; |
|
|
top: 0; |
|
|
left: 0; |
|
|
left: 0; |
|
|
width: 100vw; |
|
|
|
|
|
height: 110vh; |
|
|
|
|
|
|
|
|
// width: 100vw; |
|
|
|
|
|
// height: 110vh; |
|
|
|
|
|
width: 100%; |
|
|
|
|
|
height: 100%; |
|
|
z-index: 99999; |
|
|
z-index: 99999; |
|
|
color: #333; |
|
|
color: #333; |
|
|
background: rgba(0, 0, 0, 0.5); |
|
|
background: rgba(0, 0, 0, 0.5); |
|
|
|
|
|
|
|
|
|
|
|
overflow: hidden; |
|
|
|
|
|
::v-deep .el-progress-bar { |
|
|
|
|
|
} |
|
|
&-in { |
|
|
&-in { |
|
|
position: absolute; |
|
|
position: absolute; |
|
|
top: 40%; |
|
|
top: 40%; |
|
|
@@ -1165,7 +1196,7 @@ export default { |
|
|
border-radius: 12px; |
|
|
border-radius: 12px; |
|
|
|
|
|
|
|
|
.progress { |
|
|
.progress { |
|
|
width: 300px; |
|
|
|
|
|
|
|
|
width: 280px; |
|
|
|
|
|
|
|
|
::v-deep .el-progress__text { |
|
|
::v-deep .el-progress__text { |
|
|
margin-left: 15px; |
|
|
margin-left: 15px; |
|
|
@@ -1264,10 +1295,30 @@ export default { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
.SoundList2 { |
|
|
.SoundList2 { |
|
|
|
|
|
overflow: hidden; |
|
|
height: 280px; |
|
|
height: 280px; |
|
|
padding: 10px 10px 10px; |
|
|
padding: 10px 10px 10px; |
|
|
|
|
|
&-title { |
|
|
|
|
|
display: flex; |
|
|
|
|
|
justify-content: space-between; |
|
|
|
|
|
margin-bottom: 10px; |
|
|
|
|
|
width: 100%; |
|
|
|
|
|
.img { |
|
|
|
|
|
float: right; |
|
|
|
|
|
margin-top: -3px; |
|
|
|
|
|
margin-right: 3px; |
|
|
|
|
|
width: 16px; |
|
|
|
|
|
height: 16px; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.yesImg { |
|
|
|
|
|
margin-top: -3px; |
|
|
|
|
|
width: 24px; |
|
|
|
|
|
height: 16px; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
.list { |
|
|
.list { |
|
|
height: 280px; |
|
|
|
|
|
|
|
|
height: 240px; |
|
|
margin-top: 0px; |
|
|
margin-top: 0px; |
|
|
} |
|
|
} |
|
|
.list::-webkit-scrollbar { |
|
|
.list::-webkit-scrollbar { |
|
|
|