Merge branch 'develop' into 'sit'

Develop

See merge request K17_AITS/tra-app!57
This commit is contained in:
田岩
2025-07-22 17:24:39 +08:00
14 changed files with 294 additions and 239 deletions
+2 -2
View File
@@ -9,7 +9,7 @@ ENV = 'development'
# VITE_APP_BASE_API_Url = 'http://25.18.122.78:9786'
# DEV
VITE_APP_BASE_API_Url = 'https://aitstest.jlbank.com.cn:7003'
VITE_APP_BASE_API_Url = 'https://aitstest.jlbank.com.cn:7001'
# app入口
#VITE_APP_BASE_API_Url = 'http://25.16.122.65:7001'
@@ -17,4 +17,4 @@ VITE_APP_BASE_API_Url = 'https://aitstest.jlbank.com.cn:7003'
#VITE_APP_BASE_API_Url = 'http://25.18.122.66:9786'
# h5专用地址
VITE_APP_BASE_H5_API_Url = 'https://aitstest.jlbank.com.cn:7003'
VITE_APP_BASE_H5_API_Url = 'http://aitstest.jlbank.com.cn:7001'
+50 -20
View File
@@ -9,13 +9,16 @@
>按住说话
</view>
<view class="touch-btn" v-if="keyboardIsShow">
<uv-input class="input-box" ref="inputRef" v-model.trim="answerValue" maxlength="500"
<uv-input class="input-box" ref="inputRef" v-model="answerValue" maxlength="500"
placeholderStyle='color:#999999;font-size:26rpx' placeholder="请输入文字">
</uv-input>
</view>
<view class="talk-btn-box" @click.stop="showKeyboard" v-show="!onlyVoice">
<image class="talk-btn-icon" v-show="!keyboardIsShow" src="/src/static/images/course/jianpan.png" mode=""></image>
<image class="talk-btn-icon" v-show="keyboardIsShow" src="/src/static/images/course/send.png" mode=""></image>
<view class="talk-btn-box" v-show="!onlyVoice">
<image class="talk-btn-icon" v-show="!keyboardIsShow" src="/src/static/images/course/jianpan.png" mode="" @click="changeBtn"></image>
<image class="talk-btn-icon" v-show="keyboardIsShow && !answerValue" src="/src/static/images/course/record.png" mode="" @click="changeBtn"></image>
<image class="talk-btn-icon" v-show="keyboardIsShow && !!answerValue" src="/src/static/images/course/send.png" mode=""
@click.stop="showKeyboard"
></image>
</view>
<uv-overlay :show="showTalkingModel" opacity=".9" @click="showTalkingModel = false">
<view class="overlay-box">
@@ -83,6 +86,8 @@ watch(()=>props.onlyVoice,()=>{},{
})
const showTalkingModel = ref(false)
const keyboardIsShow = ref(false)
const answerValue = ref('')
const talkBtnRef = ref()
// 录音
@@ -98,13 +103,27 @@ const initRecord = () => {
// stopRecord()
unref(recordObjCom)?.onStop((res, duration)=>{
audioPath.value = res.tempFilePath
showTalkingModel.value = false
if(!isOut.value){
if(startFlag.value !== 2){
common.msg('说话时间太短,没有听清!')
return
// setTimeout(() => {
// showTalkingModel.value = false
// nextTick(() => {
// // showTalkingModel.value = false
// common.msg('说话时间太短,没有听清!')
// })
// },100)
closeModel(()=>{
nextTick(() => {
// showTalkingModel.value = false
common.msg('说话时间太短,没有听清!')
})
})
}else{
closeModel()
emit('uploadVoice', audioPath.value)
}
emit('uploadVoice', audioPath.value)
}else{
closeModel()
}
})
unref(recordObjCom).onStart(() => {
@@ -125,15 +144,21 @@ const startRecord = () => {
}
const stopRecord = () => {
if(unref(recordObjCom).stop){
try{
unref(recordObjCom)?.stop()
if(unref(recordObjCom).stop){
unref(recordObjCom).stop()
}else{
closeModel()
}
}catch{
showTalkingModel.value = false
closeModel()
}
}else{
}
const closeModel = (cb = () => {}) => {
setTimeout(() => {
showTalkingModel.value = false
}
cb && cb()
},100)
}
// #endif
//#ifndef APP-PLUS
@@ -200,6 +225,7 @@ const getRecordPermission = (obj) => {
}
const isMoving = ref(false)
const showOverlayTalking = (obj) => {
if(showTalkingModel.value) return
if(isLoadingState.value){
uni.showToast({
title: props.loadingText,
@@ -267,17 +293,15 @@ const showKeyboard = () => {
}
if(!isDisabled.value){
if(keyboardIsShow.value){
if(answerValue.value){
if(answerValue.value.trim()){
emit(
'submitAnswer',
answerValue.value,
() => {
keyboardIsShow.value = !keyboardIsShow.value
answerValue.value = ''
}
changeBtn
)
}else{
keyboardIsShow.value = !keyboardIsShow.value
// keyboardIsShow.value = !keyboardIsShow.value
common.msg("不能发送空白消息!")
}
}else{
keyboardIsShow.value = !keyboardIsShow.value
@@ -290,6 +314,10 @@ const showKeyboard = () => {
})
}
}
const changeBtn = () => {
keyboardIsShow.value = !keyboardIsShow.value
answerValue.value = ''
}
</script>
<style lang="scss" scoped>
@@ -425,5 +453,7 @@ const showKeyboard = () => {
}
}
}
::v-deep .uv-input__content__field-wrapper__field{
padding-right: 60rpx;
}
</style>
+10 -6
View File
@@ -32,11 +32,11 @@
<view class="filter-type" v-for="item in tagsTree" :key="item.value">
<!-- .filter(t=>(t.children||[]).length>0) -->
<view class="filter-type-title">{{item.label}}</view>
<view class="filter-type-list">
<scroll-view :scroll-x="true" class="filter-type-list">
<view :class="['filter-type-item', activeTag===itemT.value?'is-active':'']" v-for="itemT in (item.children||[])" @click="chooseTag(itemT)">
{{itemT.label}}
</view>
</view>
</scroll-view>
</view>
</view>
<uv-scroll-list class="tags-view" :indicator="false">
@@ -284,6 +284,9 @@ import { onShow } from "@dcloudio/uni-app"
getPrdLineTypeListApi().then(res=>{
coursePrdlineList.value = res.body||[]
})
getTraTagListApi().then(res=>{
tagsTree.value = res.body||[]
})
changeTab({name:'全部'})
})
onActivated(() => {
@@ -369,8 +372,8 @@ import { onShow } from "@dcloudio/uni-app"
overflow-y: auto;
z-index: 2;
background-color: #f9f9f9;
box-shadow: 0rpx 19rpx 19rpx rgba(160,160,160,.5);
border-radius: 0 0 20rpx 20rpx;
box-shadow: 0rpx 12rpx 20rpx rgba(160,160,160,.25);
border-radius: 0 0 0rpx 0rpx;
padding: 0rpx 25rpx;
box-sizing: border-box;
.filter-type{
@@ -385,7 +388,8 @@ import { onShow } from "@dcloudio/uni-app"
.filter-type-list{
overflow: hidden;
.filter-type-item{
width: calc(25% - 18rpx);
// width: calc(25% - 18rpx);
display: inline-block;
font-size: 29rpx;
box-sizing: border-box;
padding:0 20rpx;
@@ -401,7 +405,7 @@ import { onShow } from "@dcloudio/uni-app"
border-radius: 6rpx;
margin-bottom: 20rpx;
&:nth-child(4n){
margin-right: 0;
margin-right: 24rpx;
}
&.is-active{
color: #06f;
+5 -2
View File
@@ -953,6 +953,7 @@ const chooseRateNow = (item) => {
display: flex;
flex-direction: column;
.body-title{
height: 150rpx;
text-align: center;
font-size: 33rpx;
@@ -965,9 +966,11 @@ const chooseRateNow = (item) => {
// margin-bottom: 23rpx;
.arrow-icon{
position: absolute;
left:36rpx;
top:80rpx;
left:21rpx;
top:65rpx;
color: #000;
padding: 15rpx;
// background-color: red;
}
}
.study-num{
@@ -75,7 +75,7 @@
@click="common.navigateTo('/pages/courseDetail/submit?crsNum='+props.crsNum+'&imgId='+props.imgId)">发布评价</uv-button>
</view>
<uni-popup ref="popup" background-color="red">
<uni-popup ref="popup">
<view class="bottom_reply_input_div">
<uv-input v-model="reply_data.bbsContent" placeholderStyle='color:#999999;font-size:26rpx'
:placeholder="reply_data.placeholder" :focus="true" :maxlength="100">
+6 -3
View File
@@ -148,9 +148,12 @@
.back_div {
margin-right: 10rpx;
position: fixed;
left: 46rpx;
top: 64rpx;
left: 25rpx;
top: 45rpx;
// background-color: red;
// width: 60rpx;
// height: 60rpx;
padding: 20rpx;
.back-icon {
position: relative;
width: 40rpx;
+3 -2
View File
@@ -251,8 +251,9 @@
align-items: center;
.back_div {
margin-right: 10rpx;
// margin-right: 10rpx;
padding: 15rpx;
// background-color: red;
.back-icon {
position: relative;
width: 40rpx;
+1 -1
View File
@@ -49,7 +49,7 @@
<style scoped lang="scss">
.talking-item{
overflow: hidden;
margin-top: 30rpx;
margin-top: 0rpx;
&+.talking-item{
margin-top: 30rpx;
}
+209 -198
View File
@@ -33,7 +33,8 @@
<view class="question-item"
v-for="item in questionList.length - Math.ceil(questionList.length/2)"
@click="sendText(questionList[item + Math.ceil(questionList.length/2)-1])">
{{questionList[item + Math.ceil(questionList.length/2)-1]}}</view>
{{questionList[item + Math.ceil(questionList.length/2)-1]}}
</view>
</view>
</scroll-view>
</view>
@@ -505,226 +506,236 @@
flex-direction: column;
height: 100vh;
overflow: hidden;
}
.top-bg {
background: linear-gradient(16deg, rgba(234, 246, 255, 0) 0%, #c3e6ff 100%);
height: 480rpx;
width: 100%;
.top-bg {
background: linear-gradient(16deg, rgba(234, 246, 255, 0) 0%, #c3e6ff 100%);
height: 480rpx;
width: 100%;
}
.bot-bg {
// background-color: #F6F8FF;
background: linear-gradient(136deg, rgba(234, 246, 255, 0) 0%, #c3e6ff 100%);
width: 100%;
flex: 1;
}
.index-dialog-body {
position: absolute;
overflow: hidden;
left: 0;
top: 0%;
height: 100%;
width: 100%;
padding: 0;
box-sizing: border-box;
// display: flex;
// flex-direction: column;
.body-title {
height: 140rpx;
text-align: center;
font-size: 33rpx;
padding-top: 70rpx;
line-height: 46rpx;
box-sizing: border-box;
font-weight: 500;
color: #000;
position: relative;
// margin-bottom: 23rpx;
.arrow-icon {
position: absolute;
left: 36rpx;
top: 80rpx;
color: #000;
}
}
.bot-bg {
// background-color: #F6F8FF;
background: linear-gradient(136deg, rgba(234, 246, 255, 0) 0%, #c3e6ff 100%);
width: 100%;
flex: 1;
}
.index-dialog-body {
.seek-setting {
position: absolute;
z-index: 3;
right: 45rpx;
top: 68rpx;
font-size: 26rpx;
width: 140rpx;
height: 52rpx;
padding: 10rpx 0;
overflow: hidden;
left: 0;
top: 1%;
height: 102%;
width: 100%;
padding: 0;
line-height: 32rpx;
text-align: right;
padding-right: 48rpx;
.image-icon {
width: 30rpx;
height: 32rpx;
position: absolute;
right: 0;
top: 10rpx;
}
.image-icon-new {
right: 50rpx;
width: 30rpx;
height: 32rpx;
position: absolute;
top: 10rpx;
}
}
.ai-info {
padding: 0 24rpx;
height: 250rpx;
overflow: hidden;
padding-top: 72rpx;
margin-bottom: 24rpx;
position: relative;
box-sizing: border-box;
// display: flex;
// flex-direction: column;
.body-title {
height: 140rpx;
text-align: center;
font-size: 33rpx;
padding-top: 70rpx;
line-height: 46rpx;
box-sizing: border-box;
font-weight: 500;
color: #000;
position: relative;
// margin-bottom: 23rpx;
.arrow-icon {
position: absolute;
left: 36rpx;
top: 80rpx;
color: #000;
}
.image-pet {
width: 230rpx;
height: 235rpx;
position: absolute;
right: 24rpx;
top: 15rpx;
z-index: 2;
}
.seek-setting {
.image-pet-bg {
position: absolute;
padding: 0 24rpx;
box-sizing: border-box;
width: 100%;
height: 230rpx;
left: 0;
bottom: 0;
z-index: 2;
}
.ai-info-bg-box {
position: absolute;
z-index: 3;
right: 45rpx;
left: 0;
top: 68rpx;
width: 100%;
// background-color: #ccc;
padding: 0 64rpx;
height: 178rpx;
.hello-text {
height: 54rpx;
line-height: 44rpx;
font-size: 28rpx;
color: #666;
}
.info-text {
height: 44rpx;
line-height: 44rpx;
font-size: 32rpx;
color: #000;
font-weight: 600;
}
.info-btn {
width: 220rpx;
font-size: 29rpx;
height: 54rpx;
color: #fff;
background: linear-gradient(104deg, #5547f3 0%, #4e86f4 100%);
line-height: 54rpx;
text-align: center;
border-radius: 15rpx 15rpx 0 0;
position: absolute;
left: 68rpx;
bottom: 0;
}
}
}
.questions-view {
padding-left: 24rpx;
padding-right: 24rpx;
height: 184rpx;
box-sizing: border-box;
.question-row {
white-space: nowrap;
margin-bottom: 16rpx;
}
.question-item {
white-space: nowrap;
height: 66rpx;
line-height: 66rpx;
background-color: #fff;
border: 2rpx solid #e0dede;
padding: 0 16rpx;
border-radius: 11rpx;
margin-right: 16rpx;
display: inline-block;
font-size: 26rpx;
width: 140rpx;
height: 52rpx;
padding: 10rpx 0;
overflow: hidden;
line-height: 32rpx;
text-align: right;
padding-right: 48rpx;
&:last-child {
margin-right: 0;
}
}
}
.router-list {
height: 84rpx;
padding: 22rpx 30rpx 0;
background-color: #fff;
border-radius: 15rpx 15rpx 0 0;
white-space: nowrap;
box-sizing: border-box;
.btns-item {
display: inline-block;
box-sizing: border-box;
height: 62rpx;
border: 2rpx solid #e0dede;
border-radius: 15rpx;
margin-right: 16rpx;
padding: 0 20rpx 0 64rpx;
line-height: 58rpx;
font-size: 29rpx;
position: relative;
.image-icon {
width: 30rpx;
height: 32rpx;
position: absolute;
right: 0;
top: 10rpx;
width: 31rpx;
height: 31rpx;
top: 50%;
transform: translateY(-50%);
left: 24rpx;
}
.image-icon-new {
right: 50rpx;
width: 30rpx;
height: 32rpx;
position: absolute;
top: 10rpx;
&:last-child {
margin-right: 0;
}
}
}
.ai-info {
padding: 0 24rpx;
height: 250rpx;
overflow: hidden;
padding-top: 72rpx;
margin-bottom: 24rpx;
position: relative;
box-sizing: border-box;
.talking-list {
height: calc(100% - 832rpx);
padding: 12rpx 24rpx;
box-sizing: border-box;
.image-pet {
width: 230rpx;
height: 235rpx;
position: absolute;
right: 24rpx;
top: 15rpx;
z-index: 2;
}
.image-pet-bg {
position: absolute;
padding: 0 24rpx;
box-sizing: border-box;
width: 100%;
height: 230rpx;
left: 0;
bottom: 0;
z-index: 2;
}
.ai-info-bg-box {
position: absolute;
z-index: 3;
left: 0;
top: 68rpx;
width: 100%;
// background-color: #ccc;
padding: 0 64rpx;
height: 178rpx;
.hello-text {
height: 54rpx;
line-height: 44rpx;
font-size: 28rpx;
color: #666;
}
.info-text {
height: 44rpx;
line-height: 44rpx;
font-size: 32rpx;
color: #000;
font-weight: 600;
}
.info-btn {
width: 220rpx;
font-size: 29rpx;
height: 54rpx;
color: #fff;
background: linear-gradient(104deg, #5547f3 0%, #4e86f4 100%);
line-height: 54rpx;
text-align: center;
border-radius: 15rpx 15rpx 0 0;
position: absolute;
left: 68rpx;
bottom: 0;
}
}
}
.questions-view {
padding-left: 24rpx;
padding-right: 24rpx;
height: 184rpx;
box-sizing: border-box;
.question-row {
white-space: nowrap;
margin-bottom: 16rpx;
}
.question-item {
white-space: nowrap;
height: 66rpx;
line-height: 66rpx;
background-color: #fff;
border: 2rpx solid #e0dede;
padding: 0 16rpx;
border-radius: 11rpx;
margin-right: 16rpx;
display: inline-block;
font-size: 26rpx;
&:last-child {
margin-right: 0;
}
}
}
.router-list {
height: 84rpx;
padding: 22rpx 30rpx 0;
background-color: #fff;
border-radius: 15rpx 15rpx 0 0;
white-space: nowrap;
box-sizing: border-box;
.btns-item {
display: inline-block;
box-sizing: border-box;
height: 62rpx;
border: 2rpx solid #e0dede;
border-radius: 15rpx;
margin-right: 16rpx;
padding: 0 20rpx 0 64rpx;
line-height: 58rpx;
font-size: 29rpx;
position: relative;
.image-icon {
position: absolute;
width: 31rpx;
height: 31rpx;
top: 50%;
transform: translateY(-50%);
left: 24rpx;
}
&:last-child {
margin-right: 0;
}
}
}
.talking-list {
height: calc(100% - 834rpx);
padding: 12rpx 24rpx;
box-sizing: border-box;
.talking-scroll-list {
height: 100%;
}
.talking-scroll-list {
height: 100%;
}
}
}
.talking-list {
height: calc(100% - 832rpx);
padding: 12rpx 24rpx;
box-sizing: border-box;
.talking-scroll-list {
height: 100%;
}
}
</style>
+1 -1
View File
@@ -860,4 +860,4 @@
flex-direction: column;
background-color: #F6F8FF;
}
</style>
</style>
+2
View File
@@ -59,6 +59,7 @@
</view>
<!-- 4个导航 -->
<view class="navigation_div">
<!-- <scroll-view class="scroll-view" :scroll-x="true" :show-scrollbar="false"> -->
<view class="group">
<view class="item">
<image class="icon" src="@/static/images/me/study.png"></image>
@@ -77,6 +78,7 @@
<view class="title">我的报告</view>
</view>
</view>
<!-- </scroll-view> -->
</view>
<view class="cell_div">
<uv-cell-group :border="false">
+4 -3
View File
@@ -62,14 +62,15 @@
}
.fixed_search_div {
padding: calc(10rpx + var(--status-bar-height)) 15rpx 24rpx 30rpx;
padding: calc(10rpx + var(--status-bar-height)) 15rpx 24rpx 10rpx;
background: linear-gradient(90deg, #F1F7FF 0%, #D8EDFF 50%, #C3E6FF 100%);
display: flex;
align-items: center;
.back_div {
margin-right: 10rpx;
// margin-right: 10rpx;
padding: 10rpx 10rpx 10rpx 20rpx;
// background-color: red;
.back-icon {
position: relative;
width: 40rpx;
Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB