Skip to content

Commit

Permalink
feat: 添加反馈弹窗
Browse files Browse the repository at this point in the history
  • Loading branch information
ryan committed Mar 4, 2025
1 parent 766aeb1 commit 99d0909
Show file tree
Hide file tree
Showing 11 changed files with 459 additions and 33 deletions.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,277 @@
// pages/components/feedback/index.js
Component({

/**
* 组件的属性列表
*/
properties: {
isShowFeedback: {
type: Boolean,
value: false
},
feedbackRecordId: {
type: String,
value: ''
},
feedbackType: {
type: String,
value: ''
},
botId: {
type: String,
value: ''
},
input: {
type: String,
value: ""
},
aiAnswer: {
type: String,
value: ''
}
},

/**
* 组件的初始数据
*/
data: {
upVote: [
{
"selected": false,
"value": "准确有效"
},
{
"selected": false,
"value": "回答全面"
},
{
"selected": false,
"value": "立场正确"
},
{
"selected": false,
"value": "格式规范"
},
{
"selected": false,
"value": "专业性强"
},
{
"selected": false,
"value": "富有创意"
},
{
"selected": false,
"value": "表达清晰"
},
{
"selected": false,
"value": "值得信赖"
},
{
"selected": false,
"value": "高效"
},
{
"selected": false,
"value": "满意"
}
],
downVote: [
{
"selected": false,
"value": "理解错误"
},
{
"selected": false,
"value": "未识别问题"
},
{
"selected": false,
"value": "事实错误"
},
{
"selected": false,
"value": "推理错误"
},
{
"selected": false,
"value": "内容不完整"
},
{
"selected": false,
"value": "不专业"
},
{
"selected": false,
"value": "违法有害"
},
{
"selected": false,
"value": "格式错误"
},
{
"selected": false,
"value": "乱码"
},
{
"selected": false,
"value": "内容重复"
}
],
score: 5,
message: ""
},
observers:{
"feedbackType":function (value) {
this.setData({score:value==='upvote'?5:1})
}
},
/**
* 组件的方法列表
*/
methods: {
reset: function () {
this.setData({
upVote: [
{
"selected": false,
"value": "准确有效"
},
{
"selected": false,
"value": "回答全面"
},
{
"selected": false,
"value": "立场正确"
},
{
"selected": false,
"value": "格式规范"
},
{
"selected": false,
"value": "专业性强"
},
{
"selected": false,
"value": "富有创意"
},
{
"selected": false,
"value": "表达清晰"
},
{
"selected": false,
"value": "值得信赖"
},
{
"selected": false,
"value": "高效"
},
{
"selected": false,
"value": "满意"
}
],
downVote: [
{
"selected": false,
"value": "理解错误"
},
{
"selected": false,
"value": "未识别问题"
},
{
"selected": false,
"value": "事实错误"
},
{
"selected": false,
"value": "推理错误"
},
{
"selected": false,
"value": "内容不完整"
},
{
"selected": false,
"value": "不专业"
},
{
"selected": false,
"value": "违法有害"
},
{
"selected": false,
"value": "格式错误"
},
{
"selected": false,
"value": "乱码"
},
{
"selected": false,
"value": "内容重复"
}
],
score: 5,
message: ""
})
},
onChangeScore: function (e) {
const { score } = e.currentTarget.dataset
this.setData({ score })
},
onSelect: function (e) {
const { item } = e.currentTarget.dataset
const newArr = [...this.data.feedbackType === 'upvote' ? this.data.upVote : this.data.downVote]
const [selectedItem] = newArr.filter(i => i.value === item.value)
selectedItem.selected = !selectedItem.selected
if (this.data.feedbackType === 'upvote') {
this.setData({ upVote: newArr })
} else {
this.setData({ downVote: newArr })
}

},
inputChange: function (e) {
const value = e.detail.value
this.setData({ message: value })
},
closeShowFeedback: function () {
this.triggerEvent('close')
},
submitFeedback: async function () {
const res = await wx.cloud.extend.AI.bot.sendFeedback({
userFeedback: {
botId: this.data.botId,
recordId: this.data.feedbackRecordId,
comment: this.data.message,
rating: this.data.score,
tags: this.data.feedbackType === 'upvote' ? this.data.upVote.filter(item => item.selected).map(item => item.value) : this.data.downVote.filter(item => item.selected).map(item => item.value),
aiAnswer: this.data.aiAnswer,
input: this.data.input,
type: this.data.feedbackType === 'upvote' ? "upvote" : 'downvote',
},
botId: this.data.botId
});
if (res.status === 'success') {
wx.showToast({
title: "感谢反馈",
icon: "success",
});
} else {
wx.showToast({
title: "反馈失败",
icon: "fail",
});
}
this.reset();
// console.log(res)
this.triggerEvent("close")
}
}
})
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"component": true,
"usingComponents": {}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<view class="feedback-modal" wx:if="{{isShowFeedback}}">
<view class="feedback">
<view class="feedback-header">
感谢您的宝贵反馈,我们会不断改进服务
</view>
<view class="feedback-body">
<view class="item-box">
<view class="item-title">评分</view>
<view style="display: flex; gap: 14rpx;">
<block wx:for="{{[1,2,3,4,5]}}" wx:key="*this">
<image src="{{item<=score?'./imgs/star-highlight.svg':'./imgs/star.svg'}}" mode="aspectFill" class="star" bind:touchend="onChangeScore" data-score="{{item}}" />
</block>
</view>
</view>
<view class="item-box">
<view class="item-title">回答内容</view>
<view>
<block wx:for="{{feedbackType==='upvote'?upVote:downVote}}" wx:key="value">
<view class="{{item.selected?'vote-item-highlight':'vote-item-normal'}}" bind:tap="onSelect" data-item="{{item}}">{{item.value}}</view>
</block>
</view>
</view>
<view class="item-box">
<view class="item-title">反馈建议</view>
<view>
<textarea value="{{message}}" class="feedback-textarea" maxlength="140" bindinput="inputChange"/>
</view>
</view>
</view>
<view class="feedback-footer">
<view class="btn-cancel" bind:tap="closeShowFeedback">取消</view>
<view class="btn-submit" bind:tap="submitFeedback">提交反馈</view>
</view>
</view>
</view>
Loading

0 comments on commit 99d0909

Please sign in to comment.