feat(消息界面): 添加AI回答反馈功能(点赞/点踩)

This commit is contained in:
yangzhe 2025-11-27 11:11:03 +08:00
parent df685e91d9
commit ead74baecb
1 changed files with 103 additions and 2 deletions

View File

@ -151,7 +151,12 @@
src="/static/common/images/avatar_ai.png" src="/static/common/images/avatar_ai.png"
mode="scaleToFill" mode="scaleToFill"
/> />
<view class="message-content"> <view
class="message-content"
:class="{
'message-content-width': !message.isLoading,
}"
>
<!-- 加载动画 --> <!-- 加载动画 -->
<view v-if="message.isLoading" class="loading-dots"> <view v-if="message.isLoading" class="loading-dots">
<view class="dot"></view> <view class="dot"></view>
@ -161,6 +166,39 @@
<!-- 正常消息内容 --> <!-- 正常消息内容 -->
<markdown-viewer v-else :content="message.message" /> <markdown-viewer v-else :content="message.message" />
</view> </view>
<!-- 回答反馈点赞/点踩 -->
<view v-if="!message.isLoading" class="feedback-container">
<view class="feedback-box">
<view
class="feedback-btn"
@click.stop="handleFeedback(message, true)"
>
<u-icon
:name="
message.isHelp === true ? 'thumb-up-fill' : 'thumb-up'
"
size="32"
:color="message.isHelp === true ? '#4370fe' : '#bfbfbf'"
></u-icon>
</view>
<view class="feedback-divider"></view>
<view
class="feedback-btn"
@click.stop="handleFeedback(message, false)"
>
<u-icon
:name="
message.isHelp === false
? 'thumb-down-fill'
: 'thumb-down'
"
size="32"
:color="message.isHelp === false ? '#4370fe' : '#bfbfbf'"
></u-icon>
</view>
</view>
</view>
</view> </view>
</block> </block>
</view> </view>
@ -616,6 +654,12 @@ export default {
this.isLoadingMore = false; this.isLoadingMore = false;
this.noMoreData = false; this.noMoreData = false;
//
this.handleGetConversationDetail();
},
//
handleGetConversationDetail() {
this.$u.api this.$u.api
.GetConversationDetail({ .GetConversationDetail({
"Item1.Id": this.currentConversationId, "Item1.Id": this.currentConversationId,
@ -770,6 +814,24 @@ export default {
} }
}); });
}, },
// /
handleFeedback(message, isHelp) {
// id
console.log("thumb-up", message.id);
this.$u.api
.ModifyStatus({
id: message.id,
isHelp: isHelp,
})
.then((res) => {
if (res.succeed) {
this.$u.toast("操作成功");
//
this.handleGetConversationDetail();
}
});
},
}, },
}; };
</script> </script>
@ -1046,6 +1108,7 @@ export default {
.message-left { .message-left {
justify-content: flex-start; justify-content: flex-start;
flex-wrap: wrap; /* 允许反馈区换行到消息下方 */
.ai-avatar { .ai-avatar {
width: 64rpx; width: 64rpx;
@ -1058,7 +1121,7 @@ export default {
.message-content { .message-content {
background-color: #ffffff; background-color: #ffffff;
max-width: 70%; // width: 70%;
padding: 20rpx 24rpx; padding: 20rpx 24rpx;
border-radius: 0 16rpx 16rpx 16rpx; border-radius: 0 16rpx 16rpx 16rpx;
font-size: 28rpx; font-size: 28rpx;
@ -1137,6 +1200,44 @@ export default {
} }
} }
} }
.message-content-width {
width: 70%;
}
/* 回答反馈容器,跟随左侧消息,右下角对齐 */
.feedback-container {
width: 70%;
margin-left: 80rpx; /* 头像宽度64rpx + 间距16rpx */
display: flex;
justify-content: flex-end;
margin-top: 16rpx;
}
.feedback-box {
display: flex;
align-items: center;
background-color: #ffffff;
padding: 4rpx 12rpx;
border-radius: 20rpx;
box-shadow: 0 6rpx 20rpx rgba(0, 0, 0, 0.08);
}
.feedback-btn {
width: 60rpx;
height: 60rpx;
display: flex;
align-items: center;
justify-content: center;
}
.feedback-divider {
width: 2rpx;
height: 36rpx;
margin: 0 8rpx;
background-color: #e9edf7;
border-radius: 2rpx;
}
} }
.message-right { .message-right {