diff --git a/.env.development b/.env.development index 88d981fc..5dc743ae 100644 --- a/.env.development +++ b/.env.development @@ -5,7 +5,6 @@ ENV = 'development' #VITE_APP_BASE_API_Url = 'https://aits.jlbank.com.cn:7001' - VITE_APP_BASE_API_Url = 'https://aitstest.jlbank.com.cn:7003' diff --git a/Android/.gradle/8.11/checksums/checksums.lock b/Android/.gradle/8.11/checksums/checksums.lock new file mode 100644 index 00000000..42460ee9 Binary files /dev/null and b/Android/.gradle/8.11/checksums/checksums.lock differ diff --git a/Android/.gradle/8.11/checksums/md5-checksums.bin b/Android/.gradle/8.11/checksums/md5-checksums.bin new file mode 100644 index 00000000..f6ee268e Binary files /dev/null and b/Android/.gradle/8.11/checksums/md5-checksums.bin differ diff --git a/Android/.gradle/8.11/checksums/sha1-checksums.bin b/Android/.gradle/8.11/checksums/sha1-checksums.bin new file mode 100644 index 00000000..b42474ad Binary files /dev/null and b/Android/.gradle/8.11/checksums/sha1-checksums.bin differ diff --git a/Android/.gradle/8.11/executionHistory/executionHistory.bin b/Android/.gradle/8.11/executionHistory/executionHistory.bin new file mode 100644 index 00000000..591b34bd Binary files /dev/null and b/Android/.gradle/8.11/executionHistory/executionHistory.bin differ diff --git a/Android/.gradle/8.11/executionHistory/executionHistory.lock b/Android/.gradle/8.11/executionHistory/executionHistory.lock new file mode 100644 index 00000000..c764d349 Binary files /dev/null and b/Android/.gradle/8.11/executionHistory/executionHistory.lock differ diff --git a/Android/.gradle/8.11/fileChanges/last-build.bin b/Android/.gradle/8.11/fileChanges/last-build.bin new file mode 100644 index 00000000..f76dd238 Binary files /dev/null and b/Android/.gradle/8.11/fileChanges/last-build.bin differ diff --git a/Android/.gradle/8.11/fileHashes/fileHashes.bin b/Android/.gradle/8.11/fileHashes/fileHashes.bin new file mode 100644 index 00000000..dae4d467 Binary files /dev/null and b/Android/.gradle/8.11/fileHashes/fileHashes.bin differ diff --git a/Android/.gradle/8.11/fileHashes/fileHashes.lock b/Android/.gradle/8.11/fileHashes/fileHashes.lock new file mode 100644 index 00000000..3cbe5fd2 Binary files /dev/null and b/Android/.gradle/8.11/fileHashes/fileHashes.lock differ diff --git a/Android/.gradle/8.11/fileHashes/resourceHashesCache.bin b/Android/.gradle/8.11/fileHashes/resourceHashesCache.bin new file mode 100644 index 00000000..e9330e9a Binary files /dev/null and b/Android/.gradle/8.11/fileHashes/resourceHashesCache.bin differ diff --git a/src/uni_modules/ty-recording/index.uts b/Android/.gradle/8.11/gc.properties similarity index 100% rename from src/uni_modules/ty-recording/index.uts rename to Android/.gradle/8.11/gc.properties diff --git a/Android/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/Android/.gradle/buildOutputCleanup/buildOutputCleanup.lock index 42b63fbd..277a0847 100644 Binary files a/Android/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/Android/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/Android/.gradle/buildOutputCleanup/cache.properties b/Android/.gradle/buildOutputCleanup/cache.properties index 6bb1d5e0..ac0d7462 100644 --- a/Android/.gradle/buildOutputCleanup/cache.properties +++ b/Android/.gradle/buildOutputCleanup/cache.properties @@ -1,2 +1,2 @@ -#Wed Jul 02 15:19:14 CST 2025 -gradle.version=8.11.1 +#Sun Mar 08 15:36:39 CST 2026 +gradle.version=8.11 diff --git a/Android/.gradle/buildOutputCleanup/outputFiles.bin b/Android/.gradle/buildOutputCleanup/outputFiles.bin index 9bb1efd9..d04d6a81 100644 Binary files a/Android/.gradle/buildOutputCleanup/outputFiles.bin and b/Android/.gradle/buildOutputCleanup/outputFiles.bin differ diff --git a/Android/.gradle/config.properties b/Android/.gradle/config.properties index d06e25b3..134d93ab 100644 --- a/Android/.gradle/config.properties +++ b/Android/.gradle/config.properties @@ -1,2 +1,2 @@ -#Mon Jul 14 18:35:21 CST 2025 +#Mon Mar 09 08:55:18 CST 2026 java.home=C\:\\Program Files\\Android\\Android Studio\\jbr diff --git a/Android/.gradle/file-system.probe b/Android/.gradle/file-system.probe index 0fd83d0d..d2ceeb1e 100644 Binary files a/Android/.gradle/file-system.probe and b/Android/.gradle/file-system.probe differ diff --git a/Android/build.gradle b/Android/build.gradle index a6076272..2a17e5c6 100644 --- a/Android/build.gradle +++ b/Android/build.gradle @@ -20,6 +20,7 @@ allprojects { maven {url 'https://maven.aliyun.com/repository/gradle-plugin'} maven {url 'https://maven.aliyun.com/repository/public'} maven { url 'https://jitpack.io' } + maven { url 'https://maven.dcloud.net.cn/repository/public' } google() } } diff --git a/Android/gradle/wrapper/gradle-wrapper.properties b/Android/gradle/wrapper/gradle-wrapper.properties index c55e22ac..a219eaa8 100644 --- a/Android/gradle/wrapper/gradle-wrapper.properties +++ b/Android/gradle/wrapper/gradle-wrapper.properties @@ -4,4 +4,5 @@ distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists # distributionUrl=file\:/data/jenkins/agent/workspace/tra-app-build-test/gradle-home/wrapper/dists/gradle-8.11.1-bin/cfb51gce0vtbe0aaszsky593b/gradle-8.11.1-bin.zip -distributionUrl=http://25.12.10.69:8081/repository/gradle-release/org/df/gradle-8.11.1-bin/1.0.1/gradle-8.11.1-bin-1.0.1-bin.zip \ No newline at end of file +#distributionUrl=http://25.12.10.69:8081/repository/gradle-release/org/df/gradle-8.11.1-bin/1.0.1/gradle-8.11.1-bin-1.0.1-bin.zip +distributionUrl=https://mirrors.aliyun.com/gradle/distributions/v8.11.0/gradle-8.11-bin.zip \ No newline at end of file diff --git a/Android/settings.gradle b/Android/settings.gradle index e5b991b4..1802917d 100644 --- a/Android/settings.gradle +++ b/Android/settings.gradle @@ -1,2 +1,3 @@ include ':simpleDemo' include ':ty-camera' +include ':ty-recording' \ No newline at end of file diff --git a/Android/simpleDemo/build.gradle b/Android/simpleDemo/build.gradle index 011730e8..be61276e 100644 --- a/Android/simpleDemo/build.gradle +++ b/Android/simpleDemo/build.gradle @@ -6,7 +6,7 @@ android { namespace 'cn.com.jlbank.ai' defaultConfig { applicationId "cn.com.jlbank.ai" - minSdkVersion 21 + minSdkVersion 22 targetSdkVersion 33 versionName System.getenv("versionName") ?: "0.0.6" versionCode System.getenv("versionCode")?.toInteger() ?: 230 @@ -63,36 +63,40 @@ configurations.all { } dependencies { + // 本地库依赖 implementation fileTree(dir: 'libs', include: ['*.aar', '*.jar'], exclude: []) + + // AndroidX 核心组件 implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0' implementation 'androidx.core:core:1.1.0' + implementation 'androidx.core:core-ktx:1.6.0' implementation "androidx.fragment:fragment:1.1.0" implementation 'androidx.recyclerview:recyclerview:1.1.0' + implementation 'androidx.webkit:webkit:1.5.0' + implementation 'androidx.activity:activity-ktx:1.9.2' + + // 第三方图片加载 implementation 'com.facebook.fresco:fresco:2.5.0' implementation "com.facebook.fresco:animated-gif:2.5.0" implementation 'com.github.bumptech.glide:glide:4.9.0' + + // 网络请求 + implementation "com.squareup.okhttp3:okhttp:3.12.12" + + // 数据解析 implementation 'com.alibaba:fastjson:1.2.83' - implementation 'androidx.webkit:webkit:1.5.0' - implementation 'com.squareup.okhttp3:okhttp:3.12.12' - implementation 'androidx.activity:activity-ktx:1.9.2' - implementation "com.squareup.okhttp3:okhttp:3.12.12" - implementation "androidx.core:core-ktx:1.6.0" - implementation "org.jetbrains.kotlin:kotlin-stdlib:2.2.0" - implementation "org.jetbrains.kotlin:kotlin-reflect:2.2.0" - implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1" - implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.1" - implementation "com.github.getActivity:XXPermissions:18.63" - - implementation "com.squareup.okhttp3:okhttp:3.12.12" - implementation "androidx.core:core-ktx:1.6.0" + // Kotlin 相关 implementation "org.jetbrains.kotlin:kotlin-stdlib:2.2.0" implementation "org.jetbrains.kotlin:kotlin-reflect:2.2.0" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.1" + + // 权限管理 implementation "com.github.getActivity:XXPermissions:18.63" + // 本地模块依赖 + implementation project(':ty-recording') implementation project(':ty-camera') - } diff --git a/Android/simpleDemo/src/main/assets/apps/__UNI__EDE0E52/www/__uniappview.html b/Android/simpleDemo/src/main/assets/apps/__UNI__EDE0E52/www/__uniappview.html index ec3a8976..f326c23d 100644 --- a/Android/simpleDemo/src/main/assets/apps/__UNI__EDE0E52/www/__uniappview.html +++ b/Android/simpleDemo/src/main/assets/apps/__UNI__EDE0E52/www/__uniappview.html @@ -5,7 +5,7 @@ View - + - - diff --git a/src/pages/competition/pk.vue b/src/pages/competition/pk.vue index 472cd15d..11791144 100644 --- a/src/pages/competition/pk.vue +++ b/src/pages/competition/pk.vue @@ -92,7 +92,7 @@ - --> + @@ -121,7 +130,7 @@ import Subject from '@/components/examination/subject.vue'; import CharactersSubject from '@/components/examination/characters-subject.vue'; // import TouchBtn from '@/components/examination/touchBtn.vue'; - import TouchBtn from '@/pages/course/components/touchBtn.vue'; + // import TouchBtn from '@/pages/course/components/touchBtn.vue'; import common from '@/common/common'; import { setPageCache, formatSeconds, getPageCache, setupKeyboardHeightListener, formatName } from '@/common/common'; import { commonUploadVoiceFile } from '@/api/common.js'; @@ -326,7 +335,44 @@ }); }); }; - + + // 录音组件提交中转圈 + const sendLoading = () => { + const topic = topicList[questionNumber.value]; + console.log('录音组件提交中转圈', topic.es_status); + if (topic.es_status === '00') return; + topic.es_status = '00'; // 00转圈 + } + + // 新录音组件语音提交 + const submitVoice = ({ossKey,text}) => { + console.log('新录音组件语音提交', ossKey,text); + const topic = topicList[questionNumber.value]; + if(!ossKey) { + topic.es_status = ''; // 取消转圈 + common.msg('系统异常,请联系管理员'); + } else if (text === '') { + topic.es_status = ''; // 取消转圈 + return common.msg('未识别到文字'); + } else { + topic.es_status = '02'; + topic.my_answer = { + anserResult: text, + ossKey: ossKey + }; + } + + } + // 新录音组件文本提交 + const submitAnswer = (answerText) => { + const topic = topicList[questionNumber.value]; + touchBtnRef.value?.clearInputText(); // 清除发送框数据 + topic.es_status = '01'; + topic.my_answer = { + anserResult: answerText // 正确答案文字内容 + }; + } + // 录音组件提交 const touchBtnSubmit = (type, submitObj) => { const topic = topicList[questionNumber.value]; diff --git a/src/pages/course/study.vue b/src/pages/course/study.vue index 9667dcc0..abff4c30 100644 --- a/src/pages/course/study.vue +++ b/src/pages/course/study.vue @@ -103,8 +103,25 @@ :canAnswer="testAnswer" :adjustPosition="true" :canAnswerText="canAnswerText" - :answerMethod="answerMethod" + :answerMethod="answerMethod" :isDisabled="(lastTalkingInfo.type || 0) !== 4 || ['SN', 'MU', 'JD'].includes(lastTalkingInfo.qnsTyp)" /> + + + @@ -165,8 +182,8 @@ import common from '@/common/common' import TalkingItem from '@/pages/course/components/talkingItem.vue' import ImagePreview from '@/components/image-preview/image-preview.vue' import PreviewDetail from '@/components/image-preview/preview-detail.vue' -import TouchBtn from '@/pages/course/components/touchBtn.vue' -import TouchBtnOnlyVoice from '@/pages/course/components/touchBtnOnlyVoice.vue' +// import TouchBtn from '@/pages/course/components/touchBtn.vue' +// import TouchBtnOnlyVoice from '@/pages/course/components/touchBtnOnlyVoice.vue' import badge from '@/components/points-and-badge/badge'; import points from '@/components/points-and-badge/points'; import usePointsAndBadge from '@/components/points-and-badge/usePointsAndBadge'; @@ -885,6 +902,59 @@ const testAnswer = computed(() => { let _num = _arr.map(t => [1, 2, 6].indexOf(Number(t.type)) >= 0).filter(t => !!t) return _num.length < 5 }) + + + +const sendLoading = () => { + if (!testAnswer.value) { + common.msg('每个问题最多连续发送五次答案!') + return + } + isUploadingVoice.value = true + let _data = { + stdyId: unref(stdyId), + qnsId: unref(lastTalkingInfo).qnsId, // 问题ID 必输项:true 类型:String + pgrphId: unref(lastTalkingInfo).pgrphId, // 段落ID 必输项:true 类型:String + qstLogId: unref(qstLogId), // 段落ID 必输项:true 类型:String + crsId: crsId.value, // 课程ID 必输项:true 类型:String + stdyBatch: stdyBatch.value, // 学习批次 必输项:true 类型:String + ansterContent: '', // 回答文本内容 必输项:false 类型:String + asrStartTm: unref(lastTalkingInfo).asrStartTm + } + let _id = new Date().getTime() + 'id' + //#ifndef APP-PLUS + // h5 假数据 + talkingList.value.push({ + crsId: crsId.value, + pgrphId: unref(lastTalkingInfo).pgrphId, + qnsId: unref(lastTalkingInfo).qnsId, + talkingContent: '', + talkingVoice: voicePath, + type: 1, + userInfo: { + ...choiceTeacherInfo.value + }, + id: _id + }) + setIsUploadingVoice() + scrollToBottomNow() + // #endif + +} +// 新录音组件语音提交 +const submitVoice = ({ossKey,text}) => { + if(!ossKey) { + + } else if (text === '') { + + } else { + + unref(ajaxApi)({ + processType: 'ANSER-TEXT', + requestBody: JSON.stringify(_data) + }) + } +} const uploadRecordNow = (voicePath, voiceTime) => { if (!testAnswer.value) { common.msg('每个问题最多连续发送五次答案!') diff --git a/src/pages/examination/index.vue b/src/pages/examination/index.vue index 08983e6b..65955efd 100644 --- a/src/pages/examination/index.vue +++ b/src/pages/examination/index.vue @@ -96,7 +96,7 @@ - --> + @@ -174,9 +184,8 @@ import Feedback from './components/feedback.vue'; import Dialog from './components/dialog.vue'; import Subject from '@/components/examination/subject.vue'; - // import TouchBtn from '@/components/examination/touchBtn.vue'; - import TouchBtn from '@/pages/course/components/touchBtn.vue'; - import TouchBtnOnlyVoice from '@/pages/course/components/touchBtnOnlyVoice.vue'; + // import TouchBtn from '@/pages/course/components/touchBtn.vue'; + // import TouchBtnOnlyVoice from '@/pages/course/components/touchBtnOnlyVoice.vue'; import { ref, reactive, computed, onMounted, nextTick } from 'vue'; import { onLoad, onBackPress } from '@dcloudio/uni-app'; import common from '@/common/common'; @@ -321,7 +330,48 @@ } } }; - + + + + // 录音组件提交中转圈 + const sendLoading = () => { + const topic = topicList[questionNumber.value]; + console.log('录音组件提交中转圈', topic.es_status); + if (topic.es_status === '00') return; + topic.es_status = '00'; // 00转圈 + } + + // 新录音组件语音提交 + const submitVoice = ({ossKey,text}) => { + console.log('新录音组件语音提交', ossKey,text); + const topic = topicList[questionNumber.value]; + if(!ossKey) { + topic.es_status = ''; // 取消转圈 + common.msg('系统异常,请联系管理员'); + } else if (text === '') { + topic.es_status = ''; // 取消转圈 + return common.msg('未识别到文字'); + } else { + topic.es_status = '02'; + topic.my_answer = { + anserResult: text, + ossKey: ossKey + }; + hand_in_paper_cache(); + } + } + // 新录音组件文本提交 + const submitAnswer = (answerText) => { + const topic = topicList[questionNumber.value]; + touchBtnRef.value?.clearInputText(); // 清除发送框数据 + topic.es_status = '01'; + topic.my_answer = { + anserResult: answerText // 正确答案文字内容 + }; + hand_in_paper_cache(); + } + + // 录音按钮提交 const touchBtnSubmit = (type, submitObj) => { const topic = topicList[questionNumber.value]; diff --git a/src/pages/index/components/question.vue b/src/pages/index/components/question.vue index e95e15bb..3149dc0c 100644 --- a/src/pages/index/components/question.vue +++ b/src/pages/index/components/question.vue @@ -47,6 +47,7 @@