diff --git a/.env.development b/.env.development index ef87718b..076c341c 100644 --- a/.env.development +++ b/.env.development @@ -4,13 +4,14 @@ ENV = 'development' # VITE_APP_BASE_API_Url = 'https://aits.jlbank.com.cn:7001' -# VITE_APP_BASE_API_Url = 'https://aitstest.jlbank.com.cn:7001' -VITE_APP_BASE_API_Url = 'http://103.3.121.66:7001' + +VITE_APP_BASE_API_Url = 'https://aitstest.jlbank.com.cn:7001' + # VITE_APP_BASE_API_Url = 'http://192.168.247.200' # VITE_APP_BASE_API_Url = 'http://aitscdn.jlbank.com.cn:7001' # VITE_APP_BASE_API_Url = 'http://192.168.108.129' # dev -#VITE_APP_BASE_API_Url = 'http://25.18.122.65:7001' +# VITE_APP_BASE_API_Url = 'http://25.18.122.65:7001' # sit # VITE_APP_BASE_API_Url = 'http://25.18.122.91:9786' @@ -20,13 +21,14 @@ VITE_APP_BASE_API_Url = 'http://103.3.121.66:7001' # DEV # app入口 - +#VITE_APP_BASE_API_Url = 'http://25.18.122.65:7001' # VITE_APP_BASE_API_Url = 'http://25.16.122.91:9786' # VITE_APP_BASE_API_Url = 'http://25.18.122.66:9786' # h5专用地址x2 + # VITE_APP_BASE_H5_API_Url = 'http://25.18.122.65:7001' -# VITE_APP_BASE_H5_API_Url = 'http://25.18.122.91:9786' +#VITE_APP_BASE_H5_API_Url = 'http://25.18.122.91:9786' # VITE_APP_BASE_H5_API_Url = 'http://25.18.122.78:9786' # VITE_APP_BASE_H5_API_Url_TRAAPP = 'http://192.168.247.200' # VITE_APP_BASE_H5_API_Url_TRASTUDY = 'http://25.64.32.154:9602' diff --git a/.env.development.yh b/.env.development.yh index 943c5717..0bc26d12 100644 --- a/.env.development.yh +++ b/.env.development.yh @@ -6,5 +6,5 @@ VITE_APP_BASE_API_Url = 'http://25.18.122.65:7001' # VITE_APP_BASE_H5_API_Url = 'http://25.18.122.78:9786' # VITE_APP_BASE_H5_API_Url_TRAEXAM = 'http://25.64.32.154:9604' -# VITE_APP_BASE_H5_API_Url_TRAPRACTICE = 'http://25.64.32.154:9603' +VITE_APP_BASE_H5_API_Url_TRAPRACTICE = 'http://25.64.32.156:9603' diff --git a/src/api/common.js b/src/api/common.js index 4656ddad..3a75acb3 100644 --- a/src/api/common.js +++ b/src/api/common.js @@ -169,6 +169,21 @@ export function downloadVoiceFile(url) { }); }); } +// 获取音频 通用参数 +export function downloadVoiceParams(url) { + const token = getToken(); + const header = { + "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", + }; + if (token) + header['summary'] = token + let baseUrl = get_base_url(url); + return { + url: `${baseUrl}${url}`, + header, + timeout: 180000, + } +} export function getAudioByText(data) { diff --git a/src/api/preview.js b/src/api/preview.js index cbf1e63e..86eca834 100644 --- a/src/api/preview.js +++ b/src/api/preview.js @@ -10,3 +10,11 @@ export const queryTraStdyInfoPreviewPaging = (data) => { data }); }; +export const queryTraListPreviewPaging = (data) => { + return request({ + url: '/trapractice/traPartnerInfo/queryTraPartnerPreviewPaging', + method: 'post', + toastErrors: true, + data + }); +}; diff --git a/src/api/sparring.js b/src/api/sparring.js index 239a1ade..0e6598bc 100644 --- a/src/api/sparring.js +++ b/src/api/sparring.js @@ -41,4 +41,44 @@ export const queryTraPartnerCharacterInfoList = (data) => { method: 'post', data }); +}; +// 陪练角色详情 + 对话详情 /traPartnerCharacterInfo/queryTraPartnerCharacterInfoById +export const queryTraPartnerCharacterInfoById = (data) => { + return request({ + url: base_url + '/traPartnerCharacterInfo/queryTraPartnerCharacterInfoById', + method: 'post', + data + }); +}; +// 结束陪练 /trapractice/traPartnerChatReport/partnerChatReportTrigger?execId= +export const partnerChatReportTrigger = (data) => { + return request({ + url: base_url + '/traPartnerChatReport/partnerChatReportTrigger', + method: 'post', + data + }); +}; +// 问答提示/trapractice/traPartnerChat/partnerChatPrompt +export const partnerChatPrompt = (data) => { + return request({ + url: base_url + '/traPartnerChat/partnerChatPrompt', + method: 'post', + data + }); +}; +// 获取报告traPartnerChatReport/partnerChatReport +export const partnerChatReport = (data) => { + return request({ + url: base_url + '/traPartnerChatReport/partnerChatReport', + method: 'post', + data + }); +}; +// 反馈 +export const insertTraPartnerFeedback = (data) => { + return request({ + url: base_url + '/traPartnerFeedback/insertTraPartnerFeedback', + method: 'post', + data + }); }; \ No newline at end of file diff --git a/src/api/traRecord.js b/src/api/traRecord.js new file mode 100644 index 00000000..761429b5 --- /dev/null +++ b/src/api/traRecord.js @@ -0,0 +1,58 @@ +import request from '@/api/request' +const base_url = '/trapractice' + + +/**练习*/ +// 练习列表页 +export const queryPracticeRecordPaging = (data) => { + return request({ + url: base_url + '/traPartnerExecuteHis/queryTraPartnerExecutePaging', + method: 'post', + toastErrors: true, + data:{ + traType:'01', + ...data + } + }); +}; +// 练习每一项列表 +export const queryPracticeHis = (data) => { + return request({ + url: base_url + '/traPartnerExecuteHis/queryTraPartnerExecuteHisPaging', + method: 'post', + toastErrors: true, + data + }); +}; +// 练习详情 通过 exrId 查询 +export const queryPracticeRecordByExrId = (data) => { + return request({ + url: base_url + '/traCrsPractice/queryPracticeRecordByExrId', + method: 'post', + toastErrors: true, + data + }); +}; + +/**考试*/ +export const queryCrsExamRecordPaging = (data) => { + return request({ + url: base_url + '/traPartnerExecuteHis/queryTraPartnerExecutePaging', + method: 'post', + toastErrors: true, + data:{ + traType:'02', + ...data + } + }); +}; +// 考试每一项列表 +export const queryCrsExamHisByExamId = (data) => { + return request({ + url: base_url + '/traPartnerExecuteHis/queryTraPartnerExecuteHisPaging', + method: 'post', + toastErrors: true, + data + }); +}; + diff --git a/src/common/common.js b/src/common/common.js index 037c20a2..e6ee8e52 100644 --- a/src/common/common.js +++ b/src/common/common.js @@ -1,5 +1,7 @@ +import { get_base_url } from '@/api/request'; // #ifdef APP-PLUS import showDialog from '@/common/dialogMessage' +import common from '@/common/common' // #endif function msg(title, duration = 1000) { uni.showToast({ @@ -277,6 +279,65 @@ export function setupKeyboardHeightListener(updateCallback) { } + export const previewFileFnc = ({fileId, getFileSrc, fileName}) => { + let userInfo = getUserInfo() + let userParams = '/' + (userInfo?.loginName??'') + if (getPhoneEnvBool('AND')) { + common.navigateTo('/pages/index/preview?fileId=' + fileId +'&fileApiSrc=' + getFileSrc); + } else { + if (isDownloading.value) return + const base_url = get_base_url(getFileSrc); + let fileUrl = base_url + getFileSrc + fileId + userParams; + const localFilePath = '_doc/pdf_view/' + fileName + '.pdf'; + isDownloading.value = true + downloadFileFnc(fileUrl, localFilePath).then((res) => { + uni.openDocument({ + filePath: res, + showMenu: true, + success: function() { + console.log('打开文档成功'); + } + }) + }).finally(() => { + setTimeout(() => { + isDownloading.value = false + }, 1000) + }); + } + } + const downloadFileFnc = async (fileUrl, localFilePath) => { + try { + //#ifdef APP-PLUS + return new Promise((resolve, reject) => { + console.log('开始下载:', fileUrl); + const dtask = plus.downloader.createDownload( + fileUrl, { + filename: localFilePath + }, + (d, status) => { + if (status === 200) { + console.log('保存路径:', d.filename); + resolve(d.filename); + } else { + console.error('文件下载失败:', status); + reject(new Error(`下载失败,状态码: ${status}`)); + } + } + ); + dtask.start(); + }); + // #endif + //#ifdef H5 + return new Promise((resolve, reject) => { + resolve(); + }); + // #endif + } catch (error) { + console.error('创建目录失败:', error); + throw error; + } + }; + export default { getPageCache, diff --git a/src/pages.json b/src/pages.json index 1348a422..9487bedc 100644 --- a/src/pages.json +++ b/src/pages.json @@ -510,6 +510,15 @@ "titleNView": false } } + }, + { + "path": "pages/traRecord/index", + "style": { + "navigationBarTitleText": "陪练记录页", + "app-plus": { + "titleNView": false + } + } } ], "tabBar": { diff --git a/src/pages/course/components/chartSeven.vue b/src/pages/course/components/chartSeven.vue index fc3878e0..54ff061e 100644 --- a/src/pages/course/components/chartSeven.vue +++ b/src/pages/course/components/chartSeven.vue @@ -15,15 +15,15 @@ - 维度分析22: + 维度分析: {{ score }} - 维度{{ item }} - {{ item }} + {{ item.gradeDimensName || item.gradeDimens }} + {{ item.anlyGrade }} @@ -31,7 +31,7 @@ export default{ props:{ dataList:{ - default:() => [10,20,30,40,50,60,78], + default:() => [], type: Array }, score:{ @@ -54,7 +54,7 @@ }, computed:{ dataValue(){ - return this.dataList//.map(t=>t.anlyGrade) + return this.dataList.map(t=>t.anlyGrade) }, chartWidth(){ return this.size + 'rpx' @@ -119,7 +119,6 @@ dataY: dataY + '%' }); } - console.log(vertices) return vertices; }, diff --git a/src/pages/course/components/chartSix.vue b/src/pages/course/components/chartSix.vue index 871c6854..1b2fba48 100644 --- a/src/pages/course/components/chartSix.vue +++ b/src/pages/course/components/chartSix.vue @@ -15,15 +15,15 @@ - 维度分析22: + 维度分析: {{ score }} - 维度维{{ item }} - {{ item }} + {{ item.gradeDimensName || item.gradeDimens }} + {{ item.anlyGrade }} @@ -31,7 +31,7 @@ export default{ props:{ dataList:{ - default:() => [20,30,40,50,60,78], + default:() => [], type: Array }, score:{ @@ -54,7 +54,7 @@ }, computed:{ dataValue(){ - return this.dataList//.map(t=>t.anlyGrade) + return this.dataList.map(t=>t.anlyGrade) }, chartWidth(){ return this.size + 'rpx' @@ -119,7 +119,6 @@ dataY: dataY + '%' }); } - console.log(vertices) return vertices; }, diff --git a/src/pages/course/components/talkingItem.vue b/src/pages/course/components/talkingItem.vue index 4ac7555a..5cced8fb 100644 --- a/src/pages/course/components/talkingItem.vue +++ b/src/pages/course/components/talkingItem.vue @@ -220,6 +220,7 @@ import VideoPreview from '@/components/image-preview/video-preview.vue'; import { downloadVoiceFile, + downloadVoiceParams, uploadVoiceFile, getAudioByText } from '@/api/common.js'; @@ -238,7 +239,8 @@ useStorageStore } from '@/store/storage.js'; import { - onUnload + onUnload, + onHide } from '@dcloudio/uni-app'; import Subject from '@/components/examination/subject.vue'; @@ -246,6 +248,7 @@ const storageStore = useStorageStore(); const audioCacheObj = computed(() => storageStore.audioObj); + const isGettingId = computed(() => storageStore.getGettingVoiceId); const props = defineProps({ type: { default: 0, // 1: userAnswer 0: AIAnswer @@ -434,12 +437,25 @@ initVoice(); }); onUnload(() => { - pauseVoice(); + // pauseVoice(); + console.log('onUnload') + talkVoiceObj.value?.destroy() + 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() + downloadFnc.value = null }); let prevTime = -1; let pauseTime = -1; + const startPlay = ref(false) + const voiceIsPlaying = ref(false) talkVoiceObj.value.onEnded(() => { console.log('onEnded'); + voiceIsPlaying.value = false if(props.activeVoiceId){ emit('changePlay', ''); } @@ -449,6 +465,8 @@ }); talkVoiceObj.value.onStop(() => { console.log('onStop'); + voiceLoading.value = false; + voiceIsPlaying.value = false if(props.activeVoiceId){ emit('changePlay', ''); } @@ -457,13 +475,22 @@ talkVoiceObj.value.src = ''; }); talkVoiceObj.value.onPause(() => { + voiceIsPlaying.value = false + voiceLoading.value = false; prevTime = talkVoiceObj.value.currentTime; pauseTime = prevTime + if(downloadFnc.value && downloadFnc.value.abord) downloadFnc.value?.abord() + downloadFnc.value = null }); talkVoiceObj.value.onPlay(() => { console.log('onPlay'); prevTime = talkVoiceObj.value.currentTime; pauseTime = prevTime + startPlay.value = true + voiceIsPlaying.value = true + setTimeout(()=> { + startPlay.value= false + },300) emit('changePlay', unref(dataInfo)?.id); }); @@ -475,7 +502,7 @@ prevTime = talkVoiceObj.value.currentTime; } } else { - if (props.isPlaying && (talkVoiceObj.value.currentTime > 0) && props.activeVoiceId) { + if (props.isPlaying && (talkVoiceObj.value.currentTime > 0) && props.activeVoiceId && !startPlay.value) { console.log(pauseTime , prevTime) emit('changePlay', ''); } @@ -491,7 +518,7 @@ // emit('changePlay', ''); }); const pauseVoice = () => { - console.log('手动') + voiceLoading.value = false; if (!talkVoiceObj.value) return; talkVoiceObj.value.pause(); emit('changePlay', ''); @@ -510,7 +537,10 @@ playVoice(); } }; + const downloadFnc = ref(null) const playVoice = (readType = 'pgth') => { + console.log('playVoice11111111') + if(voiceIsPlaying.value) return let _content = showContent.value; if (!_content) { common.msg('没有可以播放的文字信息!'); @@ -518,15 +548,16 @@ } setTimeout(() => { emit('changePlay', unref(dataInfo)?.id); - console.log(1) // readType 阅读内容类型pgrh段落/qns问题 if (talkVoiceObj.value.src && talkVoiceObj.value.src === itemVoice.value) { + if(voiceIsPlaying.value) return talkVoiceObj.value.play(); return; } talkVoiceObj.value.src = ''; if (itemVoice.value) { setTimeout(() => { + if(voiceIsPlaying.value) return talkVoiceObj.value.src = itemVoice.value; talkVoiceObj.value.play(); }, 100); @@ -578,24 +609,53 @@ if (url) { voiceLoading.value = false; itemVoice.value = url; + if(voiceIsPlaying.value) return talkVoiceObj.value.src = url; talkVoiceObj.value.play(); } else { - downloadVoiceFile(_url) - .then((res) => { + storageStore.setGettingVoiceId(unref(dataInfo)?.id); + let _paramsObj = downloadVoiceParams(_url) + downloadFnc.value = uni.downloadFile({ + ..._paramsObj, + success(res) { if (res?.data) { common.msg(res.data.message); return; } voiceLoading.value = false; itemVoice.value = res.tempFilePath; + if(voiceIsPlaying.value) return talkVoiceObj.value.src = res.tempFilePath; - talkVoiceObj.value.play(); - storageStore.setStorage('audio', _url + _params.teachNo, itemVoice.value); - }) - .catch((err) => { - voiceLoading.value = false; - }); + // 判斷是否在當前頁面 + if(unref(isGettingId) === unref(dataInfo)?.id){ + talkVoiceObj.value.play(); + storageStore.setStorage('audio', _url + _params.teachNo, itemVoice.value); + } + }, + complete() { + voiceLoading.value = false; + downloadFnc.value = null + }, + }); + // downloadVoiceFile(_url) + // .then((res) => { + // if (res?.data) { + // common.msg(res.data.message); + // return; + // } + // voiceLoading.value = false; + // if() + // itemVoice.value = res.tempFilePath; + // talkVoiceObj.value.src = res.tempFilePath; + // // 判斷是否在當前頁面 + // if(unref(isGettingId) === unref(dataInfo)?.id){ + // talkVoiceObj.value.play(); + // storageStore.setStorage('audio', _url + _params.teachNo, itemVoice.value); + // } + // }) + // .catch((err) => { + // voiceLoading.value = false; + // }); } }); diff --git a/src/pages/course/components/touchBtn.vue b/src/pages/course/components/touchBtn.vue index 03dddf4b..c8d0ccfe 100644 --- a/src/pages/course/components/touchBtn.vue +++ b/src/pages/course/components/touchBtn.vue @@ -1,54 +1,24 @@ \ No newline at end of file + .overlay-radio-box { + position: absolute; + left: 100rpx; + top: 5rpx; + pointer-events: none; + } + } + } + } + } + } +} + diff --git a/src/pages/courseRecord/components/practiceRecordItem.vue b/src/pages/courseRecord/components/practiceRecordItem.vue index 94d44492..10da90da 100644 --- a/src/pages/courseRecord/components/practiceRecordItem.vue +++ b/src/pages/courseRecord/components/practiceRecordItem.vue @@ -40,7 +40,7 @@ - 练习时长:{{ formatDuration(item_list.exrStartTm, item_list.exrEndTm) }} + 练习时长:{{ item_list.stdtTmLenS || '--' }} @@ -61,7 +61,7 @@ import { computed, ref, reactive } from 'vue'; import common from '@/common/common'; import { queryPracticeHis } from '@/api/courseRecord.js'; - import { useItemList, formatDuration } from '../useItemList.js'; + import { useItemList } from '../useItemList.js'; const props = defineProps({ item: { diff --git a/src/pages/courseRecord/components/studyRecordItem.vue b/src/pages/courseRecord/components/studyRecordItem.vue index 7941a248..446f92ed 100644 --- a/src/pages/courseRecord/components/studyRecordItem.vue +++ b/src/pages/courseRecord/components/studyRecordItem.vue @@ -40,7 +40,7 @@ - 学习时长:{{ formatDuration(item_list.startTm, item_list.endTm) }} + 学习时长:{{ item_list.stdtTmLenS || '--' }} @@ -61,7 +61,7 @@ import { computed } from 'vue'; import common from '@/common/common'; import { queryStdyBatchByCrsId } from '@/api/courseRecord.js'; - import { useItemList, formatDuration, secondsToHours } from '../useItemList.js'; + import { useItemList, secondsToHours } from '../useItemList.js'; const props = defineProps({ item: { type: Object, diff --git a/src/pages/courseRecord/useItemList.js b/src/pages/courseRecord/useItemList.js index 2ff3c9b1..dca33100 100644 --- a/src/pages/courseRecord/useItemList.js +++ b/src/pages/courseRecord/useItemList.js @@ -7,25 +7,25 @@ import { // 计算两个标准时间的时间差值 -export const formatDuration = (startTm, endTm) => { - if (endTm === null || startTm === null) return "00:00:00"; - // 解析时间字符串为时间戳(毫秒) - const startTime = new Date(startTm).getTime(); - const endTime = new Date(endTm).getTime(); - - // 计算时间差(秒),确保为正数 - const seconds = Math.abs(Math.floor((endTime - startTime) / 1000)); - // 计算时、分、秒 - const hours = Math.floor(seconds / 3600); - const minutes = Math.floor((seconds % 3600) / 60); - const remainingSeconds = seconds % 60; - - // 补零格式化函数(统一处理所有单位) - const formatNumber = (num) => num.toString().padStart(2, '0'); - - // 小时、分钟、秒均保持两位数格式 - return `${formatNumber(hours)}:${formatNumber(minutes)}:${formatNumber(remainingSeconds)}`; -}; +// export const formatDuration = (startTm, endTm) => { +// if (endTm === null || startTm === null) return "00:00:00"; +// // 解析时间字符串为时间戳(毫秒) +// const startTime = new Date(startTm).getTime(); +// const endTime = new Date(endTm).getTime(); +// +// // 计算时间差(秒),确保为正数 +// const seconds = Math.abs(Math.floor((endTime - startTime) / 1000)); +// // 计算时、分、秒 +// const hours = Math.floor(seconds / 3600); +// const minutes = Math.floor((seconds % 3600) / 60); +// const remainingSeconds = seconds % 60; +// +// // 补零格式化函数(统一处理所有单位) +// const formatNumber = (num) => num.toString().padStart(2, '0'); +// +// // 小时、分钟、秒均保持两位数格式 +// return `${formatNumber(hours)}:${formatNumber(minutes)}:${formatNumber(remainingSeconds)}`; +// }; // 秒数转换成小时,带小数点的小时 export const secondsToHours = (seconds) => { diff --git a/src/pages/index/dialog.vue b/src/pages/index/dialog.vue index 85ef606f..ae474ff7 100644 --- a/src/pages/index/dialog.vue +++ b/src/pages/index/dialog.vue @@ -1114,6 +1114,7 @@ .talking-list { height: calc(100% - 772rpx); + min-height: 300rpx; padding: 12rpx 24rpx; box-sizing: border-box; min-height: 300rpx; diff --git a/src/pages/index/preview.vue b/src/pages/index/preview.vue index bca1f462..e6470716 100644 --- a/src/pages/index/preview.vue +++ b/src/pages/index/preview.vue @@ -26,6 +26,7 @@ export default { data() { return { fileId: '', + fileApiSrc: '/traask/traFilePreview/', showUrl: '', // viewerUrl: '/static/pdf-view/web/viewer.html', viewerUrl: '/static/view-pdf/pdf.html', @@ -36,6 +37,9 @@ export default { }, onLoad(params) { this.fileId = params.fileId || '' + if(params.fileApiSrc) { + this.fileApiSrc = params.fileApiSrc + } const userInfo = getUserInfo(); this.userParams = '/' + (userInfo?.loginName??'') }, @@ -45,8 +49,8 @@ export default { fileId: this.fileId }) }else{ - const base_url = get_base_url('/traask/traFilePreview/'); - let fileUrl = base_url + '/traask/traFilePreview/' + this.fileId + this.userParams; + const base_url = get_base_url(this.fileApiSrc); + let fileUrl = base_url + this.fileApiSrc + this.fileId + this.userParams; this.showUrl = fileUrl console.log(this.showUrl,111) } @@ -77,9 +81,9 @@ export default { common.navigateBack() }, openPdfFn(data) { - const base_url = get_base_url('/traask/traFilePreview/') + const base_url = get_base_url(this.fileApiSrc) let _id = data?.fileId - let fileUrl = base_url + '/traask/traFilePreview/' + _id + this.userParams + let fileUrl = base_url + this.fileApiSrc + _id + this.userParams this.showUrl = this.viewerUrl + '?url=' + fileUrl console.log(this.showUrl) this.showView = true diff --git a/src/pages/login/login.vue b/src/pages/login/login.vue index 02979bcc..1acfe4f0 100644 --- a/src/pages/login/login.vue +++ b/src/pages/login/login.vue @@ -354,7 +354,7 @@ .main_div { display: flex; flex-direction: column; - overflow: hidden; + // overflow: hidden; max-height: 100vh; } diff --git a/src/pages/me/index.vue b/src/pages/me/index.vue index cbaf7efd..b09b748d 100644 --- a/src/pages/me/index.vue +++ b/src/pages/me/index.vue @@ -98,7 +98,7 @@ - + AI陪练记录 diff --git a/src/pages/preview/components/previewAiSparring.vue b/src/pages/preview/components/previewAiSparring.vue index ee9c7ad0..1a9b36d7 100644 --- a/src/pages/preview/components/previewAiSparring.vue +++ b/src/pages/preview/components/previewAiSparring.vue @@ -1,42 +1,67 @@ \ No newline at end of file diff --git a/src/pages/sparring/chooseRole.vue b/src/pages/sparring/chooseRole.vue index e7393709..e90b0c5b 100644 --- a/src/pages/sparring/chooseRole.vue +++ b/src/pages/sparring/chooseRole.vue @@ -68,6 +68,7 @@ } from "@/api/sparring.js" import CardSwiper from './components/card-swiper.vue'; const traId = ref('') + const talkingType = ref('') const detailInfo = ref({}) const roleList = ref([]) const currentIndex = ref(0) @@ -92,10 +93,11 @@ } const toTip = () => { - common.navigateTo('/pages/sparring/tip?traId=' + traId.value + '&roleId=' + activeRole.value.chaId) + common.navigateTo('/pages/sparring/tip?traId=' + traId.value + '&chaId=' + activeRole.value.chaId + '&type=' + talkingType.value) } onLoad((params) => { traId.value = params.traId; + talkingType.value = params.type }); onMounted(() => { getDetailInfo() diff --git a/src/pages/sparring/components/answer.vue b/src/pages/sparring/components/answer.vue index 15e261fa..68b93536 100644 --- a/src/pages/sparring/components/answer.vue +++ b/src/pages/sparring/components/answer.vue @@ -1,20 +1,23 @@