|
@@ -8,7 +8,7 @@ import AudioBox from '../components/AudioBox.vue'
|
|
|
import ReportInsertContent from '../components/reportInsert/Index.vue'
|
|
|
import moment from 'moment'
|
|
|
import {useInitFroalaEditor} from '@/hooks/useFroalaEditor'
|
|
|
-import {useUserInfo} from '@/hooks/common'
|
|
|
+import {useUserInfo,isWeiXin} from '@/hooks/common'
|
|
|
import { showToast,showDialog } from 'vant'
|
|
|
import {useUploadFileToOSS} from '@/hooks/useUploadFileToOSS'
|
|
|
import MD5 from 'js-md5'
|
|
@@ -193,40 +193,43 @@ function handleShowUploadAudio(){
|
|
|
// 获取音频时长
|
|
|
function handleGetAudioDuration(file){
|
|
|
return new Promise((resolve,reject)=>{
|
|
|
+ if(isWeiXin()){
|
|
|
+ console.log('微信?');
|
|
|
+ resolve(0)
|
|
|
+ }
|
|
|
+
|
|
|
const fileUrl=URL.createObjectURL(file)
|
|
|
const audioEl=new Audio(fileUrl)
|
|
|
audioEl.addEventListener('loadedmetadata',(e)=>{
|
|
|
- // console.log('e.path',e.path)
|
|
|
- // console.log('e.composedPath',e.composedPath())
|
|
|
- // console.log('获取音频时长',e.composedPath()[0].duration);
|
|
|
- // console.log(audioEl.duration);
|
|
|
+ console.log('e.path',e.path)
|
|
|
+ console.log('e.composedPath',e.composedPath())
|
|
|
+ console.log('获取音频时长',e.composedPath()[0].duration);
|
|
|
+ console.log(audioEl.duration);
|
|
|
const t=e.composedPath()[0].duration
|
|
|
resolve(t)
|
|
|
})
|
|
|
})
|
|
|
}
|
|
|
function handleAudioUploadBeforeRead(e){
|
|
|
- const temFile=e
|
|
|
- if(temFile.name.indexOf('.mp3')==-1
|
|
|
- && temFile.name.indexOf('.wav')==-1
|
|
|
- && temFile.name.indexOf('.wma')==-1
|
|
|
- &&temFile.name.indexOf('.m4a')==-1
|
|
|
- ){
|
|
|
- showToast('上传失败,上传音频格式不正确')
|
|
|
- return false
|
|
|
- }
|
|
|
+ const allowedTypes = ['audio/mpeg', 'audio/mp4','audio/aac','audio/x-m4a','audio/wav']
|
|
|
+ //由于部分安卓机的部分浏览器无法获取到文件类型,无法判断故先去除判断
|
|
|
+ // if(!allowedTypes.includes(e.type)){
|
|
|
+ // showToast('上传失败,上传音频格式不正确')
|
|
|
+ // return false
|
|
|
+ // }
|
|
|
return true
|
|
|
}
|
|
|
async function handleAudioUploadAfterRead(e){
|
|
|
// console.log(e);
|
|
|
const duration=await handleGetAudioDuration(e.file)
|
|
|
- if(duration>60*15){
|
|
|
- showToast('音频时长不得超过15分钟')
|
|
|
- return
|
|
|
- }
|
|
|
- temAudioData.time=duration
|
|
|
+ // if(duration>60*15){
|
|
|
+ // showToast('音频时长不得超过15分钟')
|
|
|
+ // return
|
|
|
+ // }
|
|
|
+ temAudioData.time=duration||0
|
|
|
temAudioData.size=e.file.size/1024/1024 //单位MB
|
|
|
temAudioData.name=e.file.name
|
|
|
+ console.log('音频数据temAudioData',temAudioData);
|
|
|
// 生成文件名
|
|
|
const t=new Date().getTime().toString()
|
|
|
const temName=`static/yb/audio/${import.meta.env.MODE}/${MD5(t)}.${e.file.type.split('/')[1]}`
|
|
@@ -239,6 +242,10 @@ function handleUpdateAudio(){
|
|
|
chapterBaseInfo.audioSize=temAudioData.size
|
|
|
showUploadAudio.value=false
|
|
|
}
|
|
|
+//更新下音频时长
|
|
|
+function handleUpdateAudioTime(e){
|
|
|
+ temAudioData.time=e
|
|
|
+}
|
|
|
|
|
|
// 报告插入数据弹窗
|
|
|
const showReportInsertPop=ref(false)
|
|
@@ -482,10 +489,11 @@ async function handleReportOpt(type){
|
|
|
:style="{height:'60%'}"
|
|
|
>
|
|
|
<div class="upload-audio-wrap" v-if="showUploadAudio">
|
|
|
+ <div style="font-size:12px;color:#666">tips:如果是在微信中访问,请上传完音频点击播放,获取音频时长后方可保存</div>
|
|
|
<template v-if="temAudioData.url">
|
|
|
<h2>音频链接</h2>
|
|
|
<p>{{temAudioData.url}}</p>
|
|
|
- <AudioBox :url="temAudioData.url" />
|
|
|
+ <AudioBox :time="temAudioData.time" :url="temAudioData.url" @updateDuration="handleUpdateAudioTime"/>
|
|
|
</template>
|
|
|
<div class="bot-btns">
|
|
|
<van-uploader
|
|
@@ -495,7 +503,7 @@ async function handleReportOpt(type){
|
|
|
>
|
|
|
<van-button class="bot-btn" type="default">{{temAudioData.url?'重新上传':'上传音频'}}</van-button>
|
|
|
</van-uploader>
|
|
|
- <van-button class="bot-btn" type="primary" :disabled="!temAudioData.url" @click="handleUpdateAudio">保存</van-button>
|
|
|
+ <van-button class="bot-btn" type="primary" :disabled="!temAudioData.url||temAudioData.time===0" @click="handleUpdateAudio">保存</van-button>
|
|
|
</div>
|
|
|
</div>
|
|
|
</van-popup>
|