Merge branch 'develop' of http://25.13.9.101:9000/K17_AITS/tra-app into develop

This commit is contained in:
田岩
2025-11-24 20:45:33 +08:00
6 changed files with 68 additions and 33 deletions
+15 -6
View File
@@ -61,6 +61,11 @@
import {
useStorageStore
} from '@/store/storage.js';
import {
onHide,
onShow
} from '@dcloudio/uni-app';
const storageStore = useStorageStore();
const proxy = getCurrentInstance();
@@ -304,15 +309,13 @@
if (IsAndEnv) {
let _recordPerm = await permission.requestAndroidPermission('android.permission.RECORD_AUDIO');
if (_recordPerm !== 1) {
isGettingPermission.value = true
common.show('提示信息', '当前页面需要使用的录音权限,是否前往开启?', true, '取消', '确定').then((res) => {
if (res) {
isGettingPermission.value = true
hideOverlayTalking()
// 去开启权限
permission.gotoAppPermissionSetting();
} else {
// 取消
hideOverlayTalking()
common.navigateBack();
}
});
@@ -324,15 +327,13 @@
let _recordPerm = uni.getAppAuthorizeSetting();
let _state = _recordPerm.microphoneAuthorized;
if (_state === 'denied') {
isGettingPermission.value = true
common.show('提示信息', '当前页面需要使用的录音权限,是否前往开启?', true, '取消', '确定').then((res) => {
if (res) {
isGettingPermission.value = true
hideOverlayTalking()
// 去开启权限
uni.openAppAuthorizeSetting();
} else {
// 取消
hideOverlayTalking()
common.navigateBack();
}
});
@@ -351,6 +352,11 @@
const isTalking = ref(false);
const showOverlayTalking = (obj) => {
if (showTalkingModel.value) return;
if (isGettingPermission.value) {
stopRecord()
isGettingPermission.value = false
return
}
if (isLoadingState.value) {
uni.showToast({
title: props.loadingText,
@@ -449,6 +455,9 @@
keyboardIsShow.value = !keyboardIsShow.value;
answerValue.value = '';
};
onHide(()=>{
isGettingPermission.value = true
})
</script>
<style lang="scss" scoped>
@@ -7,12 +7,12 @@
<view class="left-items">
<view class="sparring-item-box" v-for="item in leftsparringList">
<SparringItem :itemInfo="item" :activeTag="[]" @clickItem="toSparringDetail(item)" />
<SparringItem :itemInfo="item" :activeTag="[]" @clickItem="toSparringDetail(item)" :isPreview="true"/>
</view>
</view>
<view class="right-items">
<view class="sparring-item-box" v-for="item in rightsparringList">
<SparringItem :itemInfo="item" :activeTag="[]" @clickItem="toSparringDetail(item)" />
<SparringItem :itemInfo="item" :activeTag="[]" @clickItem="toSparringDetail(item)" :isPreview="true"/>
</view>
</view>
</z-paging>
@@ -105,12 +105,14 @@
width: 50%;
float: left;
overflow: hidden;
margin-top: 24rpx;
}
.right-items {
width: 50%;
float: left;
overflow: hidden;
margin-top: 24rpx;
}
.sparring-item-box {
@@ -20,8 +20,8 @@
</view>
</view>
</scroll-view>
<view class="item-publish">截止时间{{itemInfo.limitTyp === '01'?'不限制':itemInfo.endTm}}</view>
<view class="item-num">陪练次数{{itemInfo.practiceTimes }} 人次</view>
<view class="item-publish" v-if="!isPreview">截止时间{{itemInfo.limitTyp === '01'?'不限制':itemInfo.endTm}}</view>
<view class="item-num" v-if="!isPreview">陪练次数{{itemInfo.practiceTimes }} 人次</view>
</view>
</view>
</template>
@@ -46,6 +46,10 @@
activeTag: {
default: () => [],
type: Array
},
isPreview:{
type: Boolean,
default: false
}
},
data() {
@@ -133,7 +137,6 @@
}
.item-tags {
margin-bottom: 14rpx;
padding: 0 20rpx;
box-sizing: border-box;
@@ -180,7 +183,7 @@
}
.item-publish {
margin-top: 0rpx;
margin-top: 14rpx;
}
}
}
+25 -7
View File
@@ -50,7 +50,11 @@
import {
useStorageStore
} from '@/store/storage.js';
import {
onHide,
onShow
} from '@dcloudio/uni-app';
const storageStore = useStorageStore();
const proxy = getCurrentInstance();
const emit = defineEmits(['uploadVoice', 'startRecord']);
@@ -144,6 +148,10 @@
}
});
unref(recordObjCom).onStart(() => {
if(isGettingPermission.value){
stopRecord();
return
}
startFlag.value = 1;
setTimeout(() => {
startFlag.value = 2;
@@ -229,6 +237,7 @@
// #ifdef APP-PLUS
if (!hasPermission.value) {
let _res = await getPermission()
console.log(_res,11111111)
if (_res) {
hasPermission.value = true
showOverlayTalking(obj);
@@ -242,18 +251,18 @@
// #ifdef APP-PLUS
// 安卓端
if (IsAndEnv) {
isGettingPermission.value = true
let _recordPerm = await permission.requestAndroidPermission('android.permission.RECORD_AUDIO');
if (_recordPerm !== 1) {
showTalkingModel.value = false;
isGettingPermission.value = true
common.show('提示信息', '当前页面需要使用的录音权限,是否前往开启?', true, '取消', '确定').then((res) => {
if (res) {
isGettingPermission.value = true
hideOverlayTalking()
// 去开启权限
permission.gotoAppPermissionSetting();
} else {
// 取消
common.navigateBack();
hideOverlayTalking()
}
});
return false
@@ -264,16 +273,14 @@
let _recordPerm = uni.getAppAuthorizeSetting();
let _state = _recordPerm.microphoneAuthorized;
if (_state === 'denied') {
isGettingPermission.value = true
common.show('提示信息', '当前页面需要使用的录音权限,是否前往开启?', true, '取消', '确定').then((res) => {
if (res) {
isGettingPermission.value = true
hideOverlayTalking()
// 去开启权限
uni.openAppAuthorizeSetting();
} else {
// 取消
common.navigateBack();
hideOverlayTalking()
}
});
return false
@@ -291,6 +298,11 @@
const isTalking = ref(false);
const showOverlayTalking = (obj) => {
if (showTalkingModel.value) return;
if (isGettingPermission.value) {
stopRecord()
isGettingPermission.value = false
return
}
if (isLoadingState.value) {
uni.showToast({
title: props.loadingText,
@@ -344,6 +356,12 @@
}
}
};
onShow(()=>{
// stopRecord()
})
onHide(()=>{
isGettingPermission.value = true
})
</script>
<style lang="scss" scoped>
+16 -8
View File
@@ -6,7 +6,7 @@
</view>
<view class="top-box">
<view class="top-title">
<view class="back-icon" @click="common.navigateBack()"></view>
<view class="back-icon" @click="goBack()"></view>
{{ '陪练报告' }}
<view class="feedback-icon" @click="feedbackNow"></view>
<view class="top-desc">内容由AI生成</view>
@@ -62,14 +62,14 @@
<view class="static-score">{{ totalScore }}</view>
<view class="static-desc" v-if="false">{{'朋友你挺能说违禁词啊'}}</view>
<view class="static-desc" v-if="false">以下均为违禁词:<text style="color: red;">{{'违禁词'}}</text></view>
<view class="static-desc">{{!isPass?'你这个得分,不容易的!':'恭喜阁下过关斩将,顺利通关!'}}</view>
<view class="static-desc">{{!isPass?'你这个得分,不容易的!':'恭喜过关斩将,顺利通关!'}}</view>
<view class="static-charts">
<ChartThree v-if="length === 3" fromType="tra" :dataList="evalDimens" />
<ChartFour v-if="length === 4" fromType="tra" :dataList="evalDimens" />
<ChartFive v-if="length === 5" fromType="tra" :dataList="evalDimens" />
<ChartSix v-if="length === 6" fromType="tra" :dataList="evalDimens" />
<ChartSeven v-if="length === 7" fromType="tra" :dataList="evalDimens" />
<ChartThree v-if="evalDimens.length === 3" fromType="tra" :dataList="evalDimens" />
<ChartFour v-if="evalDimens.length === 4" fromType="tra" :dataList="evalDimens" />
<ChartFive v-if="evalDimens.length === 5" fromType="tra" :dataList="evalDimens" />
<ChartSix v-if="evalDimens.length === 6" fromType="tra" :dataList="evalDimens" />
<ChartSeven v-if="evalDimens.length === 7" fromType="tra" :dataList="evalDimens" />
</view>
</view>
</view>
@@ -107,7 +107,6 @@
const feedbackRef = ref()
const roleInfo = ref({})
const showAllTalk = ref(false)
const length = ref(6)
const traInfo = ref({})
const traTm = ref('')
const activeVoiceTalkingItemId = ref('')
@@ -258,12 +257,21 @@
return _str
}
const isPreview = ref(false)
const isOver = ref(false)
const goBack = () => {
if(isOver.value){
common.navigateBack(3)
}else{
common.navigateBack()
}
}
onLoad((params) => {
traId.value = params.traId;
execId.value = params.execId
talkingType.value = params.type;
showLoading.value = true
isPreview.value = params.isPreview === '1'
isOver.value = params.isOver === '1'
getData()
});
onMounted(() => {})
+1 -6
View File
@@ -351,9 +351,7 @@
return;
}
if (commond === 'ASK-ANSWER') {
console.log('ASK-ANSWER',body);
if (body.event === 'start') {
console.log('开始回答!');
answerIsOver.value = false;
answerText.value = '';
talkingList.value.pop();
@@ -371,13 +369,10 @@
} else if (body.event === 'token') {
answerIsOver.value = false;
answerText.value += body.data;
console.log(answerText.value)
talkingList.value[talkingList.value.length - 1].talkingText = answerText.value;
} else if (body.event === 'end') {
console.log('完成回答!');
answerIsOver.value = true;
} else if (body.event === 'recordAi') {
console.log('推送声音id');
talkingList.value[talkingList.value.length - 1].execLogId = body.execLogId
}
scrollToBottomNow();
@@ -420,7 +415,7 @@
socketStore?.closeSocket();
changePlayItemId('')
pointAndBadgesRun(talkingType.value === '01'? '07': '08', null, ()=>{
common.navigateTo('/pages/sparring/result?traId=' + traId.value + '&execId=' + execId.value + '&type=' + talkingType.value + '&isPreview=' + (isPreview.value ?'1':''))
common.navigateTo('/pages/sparring/result?isOver=1&traId=' + traId.value + '&execId=' + execId.value + '&type=' + talkingType.value + '&isPreview=' + (isPreview.value ?'1':''))
})
})
}