fix(messages): 赞/踩逻辑保存展示

This commit is contained in:
dong.ai
2025-12-11 16:21:11 +08:00
parent 45dfabf987
commit a54de06f43
2 changed files with 36 additions and 37 deletions

View File

@@ -47,7 +47,7 @@
@scroll="handleScroll"
>
<div class="message-text" v-for="(item, index) in messageList" :key="index">
<messages :messageData="item" :suggestions="suggestions" @getMinWindow="minimizeWindow" :isFirstMessage="item.isFirstMessage"></messages>
<messages :messageData="item" @update:messageData="val=> $set(messageList, index, val)" :suggestions="suggestions" @getMinWindow="minimizeWindow" :isFirstMessage="item.isFirstMessage"></messages>
</div>
<div class="message-suggestions" v-if="messageList.length > 0 && messageList[messageList.length-1].textCompleted">
<div class="suggestion-item" v-for="(item, index) in suggestions" :key="index">

View File

@@ -40,8 +40,9 @@
<!-- /踩图标区域 - 仅在文本加载完成后显示 -->
<div v-if="showFeedbackIcons && !isFirstMessage" style="margin-top: 8px;">
<el-tooltip class="item" effect="dark" content="点赞" placement="bottom">
<img :src="isLike ? require('@/assets/images/case/zan-yes.svg') : require('@/assets/images/case/zan.svg')"
@click="toggleStar" alt="zan" class="zan_img">
<!-- 修改为根据 isLike 值判断状态使用 == 而不是 === -->
<img :src="messageData.isLike == 1 ? require('@/assets/images/case/zan-yes.svg') : require('@/assets/images/case/zan.svg')"
@click="toggleStar(1)" alt="zan" class="zan_img">
</el-tooltip>
<el-popover placement="bottom" trigger="manual" v-model="caiDialogShow">
<div class="feedback-class">
@@ -57,9 +58,10 @@
<div style="text-align: right; margin: 0">
<el-button style="margin-top: 10px;" type="primary" size="mini" @click="handleSure">确定</el-button>
</div>
<!-- 修改为根据 isLike 值判断状态使用 == 而不是 === -->
<img slot="reference"
:src="isDislike ? require('@/assets/images/case/cai-yes.svg') : require('@/assets/images/case/cai.svg')"
@click="toggleSecondIcon" alt="cai" class="zan_img" style="margin-left:10px">
:src="messageData.isLike == -1 ? require('@/assets/images/case/cai-yes.svg') : require('@/assets/images/case/cai.svg')"
@click="toggleStar(-1)" alt="cai" class="zan_img" style="margin-left:10px">
</el-popover>
</div>
@@ -130,8 +132,6 @@ export default {
typingTimer: null,
typingSpeed: 30, // 毫秒/字符
showAllCaseRefers: false,
isLike: false, // 添加赞状态
isDislike: false, // 控制踩状态
caiDialogShow: false,
tagList: [
{ name: '回答不准确' },
@@ -184,37 +184,36 @@ export default {
},
},
methods: {
// 赞
toggleStar() {
// 点击第一个图标时,激活它并取消第二个图标的激活状态
this.isLike = !this.isLike;
this.isDislike = false;
let params = {
docId: this.messageData.docId,
likeStatus: this.isLike ? "1" : "",
}
likeMsg(params).then(res => {
console.log(res);
})
},
// 踩
toggleSecondIcon() {
this.feedbackText = null
let params = {
docId: this.messageData.docId,
likeStatus: !this.isDislike ? "-1" : ''
}
likeMsg(params).then(res => {
console.log(res);
})
// 点击第二个图标时,激活它并取消第一个图标的激活状态
this.isDislike = !this.isDislike;
this.isLike = false;
if (this.isDislike) {
this.caiDialogShow = true
toggleStar(type) {
// type: 1 表示赞,-1 表示踩0 表示取消
let newIsLike = 0;
if (type === 1 && this.messageData.isLike == 1) {
newIsLike = 0;
} else if (type === -1 && this.messageData.isLike == -1) {
newIsLike = 0;
this.caiDialogShow = false;
} else {
this.caiDialogShow = false
newIsLike = type;
if (type === -1) {
this.caiDialogShow = true;
} else {
this.caiDialogShow = false;
}
}
let params = {
docId: this.messageData.docId,
likeStatus: newIsLike === 0 ? '0' : newIsLike.toString(),
}
likeMsg(params).then(res => {
if(res.status ==200){
// 更新状态
this.$set(this.messageData, 'isLike', newIsLike)
this.$emit('update:messageData', this.messageData)
}
})
},
// 标签选择
handleTag(item) {
@@ -547,4 +546,4 @@ export default {
.tag-class:first-child {
margin-left: 0;
}
</style>
</style>