diff --git a/.env.development b/.env.development index f8c85ebb..93437482 100644 --- a/.env.development +++ b/.env.development @@ -7,6 +7,7 @@ ENV = 'development' VITE_APP_BASE_API_Url = 'https://aitstest.jlbank.com.cn:7001' + # DEV #VITE_APP_BASE_API_Url = 'http://25.18.122.65:7001' diff --git a/src/api/common.js b/src/api/common.js index 1bc5e8e7..80258eb9 100644 --- a/src/api/common.js +++ b/src/api/common.js @@ -47,7 +47,7 @@ export const getPreviewFileUrl = (id) => { return get_base_url() + `/traoss/tras3/show/${id}` } // 对象存储下载 /traoss/tras3/show/{文件ID} -export function downloadFile(id) { +export function downloadFile(id = '', url = '') { const token = getToken(); const header = { "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", @@ -55,10 +55,10 @@ export function downloadFile(id) { if (token) header['summary'] = token let baseUrl = get_base_url(); - + let _url = id?`${baseUrl}/traoss/tras3/show/${id}?tk=${token}`:`${url}?tk=${token}` return new Promise((resolve, reject) => { uni.downloadFile({ - url: `${baseUrl}/traoss/tras3/show/${id}`, + url: _url, header, success(result) { resolve(result) diff --git a/src/components/comment-input/comment-input.vue b/src/components/comment-input/comment-input.vue index 75b6f280..df8085fa 100644 --- a/src/components/comment-input/comment-input.vue +++ b/src/components/comment-input/comment-input.vue @@ -77,7 +77,7 @@ - 发送 + 发送 @@ -163,6 +163,9 @@ isFocus.value = true cursorLength.value = resStart.value || value.value.length } + const sendDisabled = computed(()=>{ + return value.value.length === 0 && fileList.value.length === 0 + }) const showEmoji = ref(false) const showEmojiNow = () => { showEmoji.value = !showEmoji.value @@ -171,7 +174,6 @@ const focus = (event) => { isShow.value = true isFocus.value = true - console.log('focusevent'); if(!isReply.value){ getMemList() } @@ -185,7 +187,6 @@ }) const resStart = ref(-1) const blur = (event) => { - console.log('失去焦点不一定关闭',event); // popHeight.value = '0px' resStart.value = event.detail.cursor isShow.value = true @@ -193,7 +194,6 @@ } const hideAll = (flag=false) => { popHeight.value = '0px' - console.log('hideAll'); isShow.value = false isFocus.value = false if(flag){ @@ -245,7 +245,6 @@ const extension = url.slice(lastDotIndex + 1).split('?')[0].toLowerCase() return ['png', 'jpg'].includes(extension) }) - console.log(tempFilePaths,valid) if (!valid) return common.msg('您选择的图片格式有误。') const data = { bizScen: 'S3005' @@ -304,13 +303,10 @@ bbsTag: bbsTag.value, // 评价标签 (SUG 建议 ASK 提问 ) bbsContent: value.value // 评价内容 } - console.log(_params) publishCrsEvaluation(_params).then((res) => { const loadingDuration = Date.now() - loadingStartTime; const minLoadingTime = 700; - console.log(loadingStartTime, loadingDuration); const delayTime = Math.max(0, minLoadingTime - loadingDuration); - console.log('delayTime', delayTime); setTimeout(() => { common.hideLoading(); nextTick(() => common.msg('发表成功')); @@ -322,9 +318,7 @@ emit('submitOver') }, 500); }, delayTime); - }).catch(err=>{ - console.log(err) - }) + }).catch(err=>{}) }; const reply_send = async () => { emit('sendReply', {...answerData.value, bbsContent: value.value}) @@ -351,10 +345,7 @@ popHeight.value = val ? `${maxKeyboardHeight.value}px` : (keyboardHeight.value+'px') }) watch(()=> keyboardHeight.value,(val)=>{ - console.log(val,showEmoji.value) - console.log(maxKeyboardHeight.value) popHeight.value = showEmoji.value ? `${maxKeyboardHeight.value}px` : keyboardHeight.value+'px' - console.log(popHeight.value) }) defineExpose({hideAll, resetVal}) diff --git a/src/components/image-preview/preview-detail.vue b/src/components/image-preview/preview-detail.vue index 827eaffe..316e959e 100644 --- a/src/components/image-preview/preview-detail.vue +++ b/src/components/image-preview/preview-detail.vue @@ -94,7 +94,10 @@ }, srcList() { return this.storageStore?.getFileSrcList - } + }, + isBase() { + return this.storageStore?.getIsBase + }, }, watch: { fileId: { @@ -148,6 +151,11 @@ }, initSrc(newval, oldval) { let _src + if(this.isBase){ + _src = newval + this.fileUrlShow = _src + return _src + } if (newval.indexOf('http') === 0) { _src = newval + '?tk=' + getToken() } else { diff --git a/src/pages/course/components/talkingItem.vue b/src/pages/course/components/talkingItem.vue index 456638bf..b074c3b5 100644 --- a/src/pages/course/components/talkingItem.vue +++ b/src/pages/course/components/talkingItem.vue @@ -68,11 +68,13 @@ - + + + :fileId="dataInfo.vidoAddrs[0].vidAddr" :picId="dataInfo.vidoAddrs[0].vidImgAddr" + @click="previewVideo(dataInfo.vidoAddrs[0])"> @@ -234,7 +236,8 @@ downloadVoiceFile, downloadVoiceParams, uploadVoiceFile, - getAudioByText + getAudioByText, + downloadFile } from '@/api/common.js'; import { studyParagraphOverApi, @@ -245,6 +248,7 @@ import ChartFive from './chartFive.vue'; import common from '@/common/common'; import { + getPhoneEnvBool, getUserInfo } from '@/common/common'; import { @@ -260,7 +264,7 @@ import { previewFileFnc } from '@/common/common' - + const storageStore = useStorageStore(); const audioCacheObj = computed(() => storageStore.audioObj); @@ -337,7 +341,7 @@ ...(dataInfo.value?.traQnsInfoVo || {}), my_answer: dataInfo.value?.traQnsInfoVo?.anserResult || '', answerMethod: props.answerMethod, - ...(props.type === 5?{ + ...(props.type === 5 ? { "qnsTyp": "ES", my_answer: dataInfo.value, itemVos: [{ @@ -346,21 +350,21 @@ "qnsId": dataInfo.value.qnsId, "itemAnswer": dataInfo.value.itemAnswer, "relKeyword": dataInfo.value.relKeyword, - anserResult:dataInfo.value?.traQnsInfoVo?.anserResult || '', + anserResult: dataInfo.value?.traQnsInfoVo?.anserResult || '', "evalSettingVos": dataInfo.value?.essayEvalVo, }] - }:{}) - + } : {}) + }; }); - const mode = computed(()=>{ + const mode = computed(() => { return props.type == 5 ? 'study_answer' : props.type == 8 ? 'study_result' : 'study' }); // 考试 examination 练习practice 学习study 学习结果study_answer - - const imgAddrs = computed(()=>{ + + const imgAddrs = computed(() => { return (dataInfo.value.imageAddrs || []) }) - + const previewFile = info => { previewFileFnc({ fileId: info.fileId, @@ -424,16 +428,16 @@ return false; } if (type.value === 5) { - if(dataInfo.value.stdyStat !== 'Y' && dataInfo.value.isLastQns === 'Y'){ + if (dataInfo.value.stdyStat !== 'Y' && dataInfo.value.isLastQns === 'Y') { return false - }else{ + } else { return true; } } if (type.value === 8) { - if(dataInfo.value.stdyStat !== 'Y' && dataInfo.value.isLastQns === 'Y'){ + if (dataInfo.value.stdyStat !== 'Y' && dataInfo.value.isLastQns === 'Y') { return false - }else{ + } else { return !!dataInfo.value.traQnsInfoVo?.judgeResult; } } @@ -466,44 +470,59 @@ const changeBr = (str = '') => { return str.replace(/\/n/g, '\n'); }; - - const previewVideo = (obj)=>{ - console.log(obj) - storageStore.setShowPreviewDetail({ - status: true, - fileType: 'video', - fileId: '', - fileSrc: obj.vidAddr - }) + + const previewVideo = async (obj) => { + const IsAndEnv = getPhoneEnvBool('AND'); + if (IsAndEnv) { + storageStore.setShowPreviewDetail({ + status: true, + fileType: 'video', + fileId: '', + isBase: false, + fileSrc: obj.vidAddr + }) + } else { + common.loading('加载中'); + try { + const _res = await downloadFile('', obj.vidAddr) + storageStore.setShowPreviewDetail({ + status: true, + fileType: 'video', + fileId: '', + isBase: _res.tempFilePath ? true : false, + fileSrc: _res.tempFilePath || obj.vidAddr + }) + } catch {} finally { + common.hideLoading(); + } + } } - const previewImage = (obj, arr=[])=>{ + const previewImage = (obj, arr = []) => { storageStore.setShowPreviewDetail({ - status: true, - fileType: arr.length>0?'imageList':'image', - fileId: '', + status: true, + fileType: arr.length > 0 ? 'imageList' : 'image', + fileId: '', fileSrc: obj, fileSrcList: arr }) } - - + + const voiceTime = ref(''); const itemInfo = ref({}); - + onMounted(() => { initVoice(); }); onUnload(() => { // pauseVoice(); - console.log('onUnload') talkVoiceObj.value?.destroy() - if(downloadFnc.value && downloadFnc.value.abord) downloadFnc.value?.abord() + if (downloadFnc.value && downloadFnc.value.abord) downloadFnc.value?.abord() downloadFnc.value = null }); onHide(() => { - console.log('onHide') - voiceLoading.value = false; - if(downloadFnc.value && downloadFnc.value.abord) downloadFnc.value?.abord() + voiceLoading.value = false; + if (downloadFnc.value && downloadFnc.value.abord) downloadFnc.value?.abord() downloadFnc.value = null }); let prevTime = -1; @@ -513,7 +532,7 @@ talkVoiceObj.value.onEnded(() => { console.log('onEnded'); voiceIsPlaying.value = false - if(props.activeVoiceId){ + if (props.activeVoiceId) { emit('changePlay', ''); } prevTime = -1; @@ -522,9 +541,9 @@ }); talkVoiceObj.value.onStop(() => { console.log('onStop'); - voiceLoading.value = false; + voiceLoading.value = false; voiceIsPlaying.value = false - if(props.activeVoiceId){ + if (props.activeVoiceId) { emit('changePlay', ''); } prevTime = -1; @@ -533,10 +552,10 @@ }); talkVoiceObj.value.onPause(() => { voiceIsPlaying.value = false - voiceLoading.value = false; + voiceLoading.value = false; prevTime = talkVoiceObj.value.currentTime; pauseTime = prevTime - if(downloadFnc.value && downloadFnc.value.abord) downloadFnc.value?.abord() + if (downloadFnc.value && downloadFnc.value.abord) downloadFnc.value?.abord() downloadFnc.value = null }); talkVoiceObj.value.onPlay(() => { @@ -545,12 +564,12 @@ pauseTime = prevTime startPlay.value = true voiceIsPlaying.value = true - setTimeout(()=> { - startPlay.value= false - },300) + setTimeout(() => { + startPlay.value = false + }, 300) emit('changePlay', unref(dataInfo)?.id); }); - + talkVoiceObj.value.onTimeUpdate(() => { if (activeVoiceId.value === unref(dataInfo)?.id) { setTimeout(() => { @@ -559,8 +578,9 @@ prevTime = talkVoiceObj.value.currentTime; } } else { - if (props.isPlaying && (talkVoiceObj.value.currentTime > 0) && props.activeVoiceId && !startPlay.value) { - console.log(pauseTime , prevTime) + if (props.isPlaying && (talkVoiceObj.value.currentTime > 0) && props.activeVoiceId && !startPlay + .value) { + console.log(pauseTime, prevTime) emit('changePlay', ''); } } @@ -575,7 +595,7 @@ // emit('changePlay', ''); }); const pauseVoice = () => { - voiceLoading.value = false; + voiceLoading.value = false; if (!talkVoiceObj.value) return; talkVoiceObj.value.pause(); emit('changePlay', ''); @@ -597,7 +617,7 @@ const downloadFnc = ref(null) const playVoice = (readType = 'pgth') => { console.log('playVoice11111111') - if(voiceIsPlaying.value) return + if (voiceIsPlaying.value) return let _content = showContent.value; if (!_content) { common.msg('没有可以播放的文字信息!'); @@ -607,14 +627,14 @@ emit('changePlay', unref(dataInfo)?.id); // readType 阅读内容类型pgrh段落/qns问题 if (talkVoiceObj.value.src && talkVoiceObj.value.src === itemVoice.value) { - if(voiceIsPlaying.value) return + if (voiceIsPlaying.value) return talkVoiceObj.value.play(); return; } talkVoiceObj.value.src = ''; if (itemVoice.value) { setTimeout(() => { - if(voiceIsPlaying.value) return + if (voiceIsPlaying.value) return talkVoiceObj.value.src = itemVoice.value; talkVoiceObj.value.play(); }, 100); @@ -666,7 +686,7 @@ if (url) { voiceLoading.value = false; itemVoice.value = url; - if(voiceIsPlaying.value) return + if (voiceIsPlaying.value) return talkVoiceObj.value.src = url; talkVoiceObj.value.play(); } else { @@ -681,16 +701,16 @@ } voiceLoading.value = false; itemVoice.value = res.tempFilePath; - if(voiceIsPlaying.value) return + if (voiceIsPlaying.value) return talkVoiceObj.value.src = res.tempFilePath; // 判斷是否在當前頁面 - if(unref(isGettingId) === unref(dataInfo)?.id){ + if (unref(isGettingId) === unref(dataInfo)?.id) { talkVoiceObj.value.play(); storageStore.setStorage('audio', _url + _params.teachNo, itemVoice.value); } }, complete() { - voiceLoading.value = false; + voiceLoading.value = false; downloadFnc.value = null }, }); @@ -715,7 +735,7 @@ // }); } }); - + } }, 100); }; @@ -748,11 +768,11 @@ const setVoiceTime = (sum) => { plus.io.getAudioInfo({ filePath: unref(dataInfo).talkingVoice, - success:(res)=>{ - voiceTime.value = (Math.floor(res.duration) || 1) + 's' + success: (res) => { + voiceTime.value = (Math.floor(res.duration) || 1) + 's' }, - fail:(res)=>{ - voiceTime.value = (unref(dataInfo).voiceTime || 1) + 's' + fail: (res) => { + voiceTime.value = (unref(dataInfo).voiceTime || 1) + 's' } }) } @@ -809,16 +829,16 @@ clickNow(); if ([5, 8].indexOf(props.type) >= 0) { // 完成问题 - if(dataInfo.value.stdyStat === 'Y' && dataInfo.value.isLastQns === 'Y'){ + if (dataInfo.value.stdyStat === 'Y' && dataInfo.value.isLastQns === 'Y') { emit('nextQuestion', unref(dataInfo), 'overNextGraph'); - }else{ + } else { emit('nextQuestion', unref(dataInfo)); } } else if ([3].indexOf(props.type) >= 0) { // 完成段落 - if(unref(dataInfo).hasQns !=='Y'){ + if (unref(dataInfo).hasQns !== 'Y') { emit('nextQuestion', unref(dataInfo), 'overNextGraph'); - }else{ + } else { emit('nextQuestion', unref(dataInfo), 'overGraph'); } } else if ([9].indexOf(props.type) >= 0) { @@ -971,11 +991,12 @@ // min-height: 36px; } } - - .file-items{ + + .file-items { float: left; width: 100%; padding-top: 12rpx; + .file-item { line-height: 36rpx; font-size: 28rpx; @@ -983,7 +1004,7 @@ color: #06f; } } - + .cont-img-box { float: left; width: calc(33% - 13.34rpx); @@ -993,19 +1014,22 @@ background-color: #fafafa; margin-bottom: 20rpx; margin-right: 20rpx; - - &.cont-video-box{ + + &.cont-video-box { width: 433rpx; height: 269rpx; margin-right: 0rpx; } - &:nth-child(3n){ + + &:nth-child(3n) { margin-right: 0; } - &.cont-img-box2{ + + &.cont-img-box2 { width: calc(50% - 10rpx); height: 200rpx; - &:nth-child(2n){ + + &:nth-child(2n) { margin-right: 0rpx; } } diff --git a/src/pages/pointsMall/pointsMall.vue b/src/pages/pointsMall/pointsMall.vue index d54f9b5e..4fd5d309 100644 --- a/src/pages/pointsMall/pointsMall.vue +++ b/src/pages/pointsMall/pointsMall.vue @@ -3,7 +3,6 @@ ref="pagingRef" v-model="data_list" @query="queryList" - :fixed="false" class="scroll_div" :auto="true" empty-view-text="暂无学习任务" @@ -17,6 +16,7 @@ 积分商城 + @@ -24,12 +24,18 @@ 当前积分 - {{points}} - 积分明细> + + + + 积分明细> - + @@ -44,35 +50,67 @@ {{ item.excPoints }} - - {{ item.endTm.substr(0,10) }}截止 - + {{ item.endTm.substr(0, 10) }}截止