|
@@ -6,7 +6,14 @@
|
|
|
<askCom :item="item"/>
|
|
|
</template>
|
|
|
<template v-else>
|
|
|
- <answerCom :item="item"/>
|
|
|
+ <answerCom
|
|
|
+ :item="item"
|
|
|
+ :goodMap="state.goodMap"
|
|
|
+ :badMap="state.badMap"
|
|
|
+ @onGood="onGood"
|
|
|
+ @onBad="onBad"
|
|
|
+ @onNormal="onNormal"
|
|
|
+ />
|
|
|
</template>
|
|
|
</template>
|
|
|
</div>
|
|
@@ -43,6 +50,7 @@ import audioCom from './component/audio/index.vue'
|
|
|
import {get, post, ssePost} from './dify/base'
|
|
|
import {useRouter} from "vue-router";
|
|
|
import {YMDHms} from "@/utils/czr-util";
|
|
|
+import {updateFeedback} from "@/views/smart-ask-answer/assistant/dify/share";
|
|
|
|
|
|
const emit = defineEmits(['getText'])
|
|
|
const router = useRouter()
|
|
@@ -62,7 +70,9 @@ const state: any = reactive({
|
|
|
type: 'answer',
|
|
|
welcome: true,
|
|
|
},
|
|
|
- ]
|
|
|
+ ],
|
|
|
+ goodMap: new Map(),
|
|
|
+ badMap: new Map(),
|
|
|
})
|
|
|
const ref_text = ref()
|
|
|
const ref_chatMsg = ref()
|
|
@@ -78,7 +88,8 @@ const onSend = () => {
|
|
|
state.chats.push(ask)
|
|
|
const answer = reactive({
|
|
|
type: 'answer',
|
|
|
- content: ''
|
|
|
+ content: '',
|
|
|
+ messageId: ''
|
|
|
})
|
|
|
state.chats.push(answer)
|
|
|
ssePost(`/installed-apps/${window.czrConfig.dify.appId}/chat-messages`, {
|
|
@@ -100,6 +111,7 @@ const onSend = () => {
|
|
|
state.params.conversation_id = messageEnd.conversation_id
|
|
|
post(`/installed-apps/${window.czrConfig.dify.appId}/conversations/${state.params.conversation_id}/name`, {body: {auto_generate: false, name: YMDHms(new Date())}})
|
|
|
}
|
|
|
+ answer.messageId = messageEnd.message_id
|
|
|
state.params.parent_message_id = messageEnd.message_id
|
|
|
state.loading = false
|
|
|
},
|
|
@@ -140,10 +152,6 @@ const initChat = () => {
|
|
|
type: 'answer',
|
|
|
welcome: true,
|
|
|
},
|
|
|
- {
|
|
|
- type: 'answer',
|
|
|
- content: 'asdasd',
|
|
|
- },
|
|
|
]
|
|
|
}
|
|
|
})
|
|
@@ -151,6 +159,37 @@ const initChat = () => {
|
|
|
const setText = (text: string) => {
|
|
|
state.text = text
|
|
|
}
|
|
|
+const onGood = (item) => {
|
|
|
+ updateFeedback({
|
|
|
+ url: `/messages/${item.messageId}/feedbacks`,
|
|
|
+ body: {rating: 'like'},
|
|
|
+ }, true, window.czrConfig.dify.appId).then((res: any) => {
|
|
|
+ if (res.result === 'success') {
|
|
|
+ state.goodMap.set(item.messageId, item)
|
|
|
+ }
|
|
|
+ })
|
|
|
+}
|
|
|
+const onBad = (item) => {
|
|
|
+ updateFeedback({
|
|
|
+ url: `/messages/${item.messageId}/feedbacks`,
|
|
|
+ body: {rating: 'dislike'},
|
|
|
+ }, true, window.czrConfig.dify.appId).then((res: any) => {
|
|
|
+ if (res.result === 'success') {
|
|
|
+ state.badMap.set(item.messageId, item)
|
|
|
+ }
|
|
|
+ })
|
|
|
+}
|
|
|
+const onNormal = (item) => {
|
|
|
+ updateFeedback({
|
|
|
+ url: `/messages/${item.messageId}/feedbacks`,
|
|
|
+ body: {rating: null},
|
|
|
+ }, true, window.czrConfig.dify.appId).then((res: any) => {
|
|
|
+ if (res.result === 'success') {
|
|
|
+ state.badMap.delete(item.messageId)
|
|
|
+ state.goodMap.delete(item.messageId)
|
|
|
+ }
|
|
|
+ })
|
|
|
+}
|
|
|
onMounted(() => {
|
|
|
initChat()
|
|
|
ref_text.value.addEventListener('input', (e) => {
|