| | |
| | | import { ElMessage } from 'element-plus'; |
| | | import type { ComputedRef, Ref } from 'vue'; |
| | | import type { ComputedRef } from 'vue'; |
| | | import { computed, nextTick, ref } from 'vue'; |
| | | import useClipboard from 'vue-clipboard3'; |
| | | // import useClipboard from 'vue-clipboard3'; |
| | | import { onClickOutside, useClipboard } from '@vueuse/core'; |
| | | import type { ChatMessage } from '../model/types'; |
| | | import { AnswerState, AnswerType, RoleEnum } from '../model/types'; |
| | | import { SetHistoryAnswerState } from '/@/api/ai/chat'; |
| | | import { useClickOther } from '/@/hooks/useClickOther'; |
| | | import { onClickOutside } from '@vueuse/core'; |
| | | import { chatDisplayMode } from '/@/stores/chatRoom'; |
| | | import { isSharePage } from '/@/stores/chatRoom'; |
| | | |
| | | export type AssistantContentOptOption = { |
| | | sendChatMessage: any; |
| | |
| | | |
| | | export const useAssistantContentOpt = (option: AssistantContentOptOption) => { |
| | | const { sendChatMessage, displayMessageList } = option; |
| | | const { toClipboard } = useClipboard(); |
| | | const { copy } = useClipboard(); |
| | | const preQuestion = ref(null); |
| | | |
| | | const copyClick = (item) => { |
| | |
| | | text = item.content.values; |
| | | } |
| | | ElMessage.success('复制成功'); |
| | | toClipboard(text); |
| | | copy(text); |
| | | }; |
| | | |
| | | const likeClick = async (item) => { |
| | |
| | | answer_state: toSetState, |
| | | }); |
| | | item.state = toSetState; |
| | | |
| | | }; |
| | | |
| | | const unLikeClick = async (item) => { |
| | |
| | | answer_state: toSetState, |
| | | }); |
| | | item.state = toSetState; |
| | | |
| | | |
| | | }; |
| | | const feedbackPosition = ref({ |
| | | x: 0, |
| | |
| | | if (!displayMessageList.value || displayMessageList.value.length === 0) return false; |
| | | const last = displayMessageList.value.at(-1); |
| | | const isShow = last?.role === RoleEnum.assistant && last?.content?.values && last.content?.askMoreList?.length > 0; |
| | | return isShow && chatDisplayMode.value ==='default'; |
| | | return isShow && !isSharePage; |
| | | }); |
| | | |
| | | const showFixQuestion = (item) => { |
| | | const isShow = item?.role === RoleEnum.assistant && item?.content?.values && item.content?.origin?.err_json?.fix_question; |
| | | const isShow = item?.role === RoleEnum.assistant && item.content?.origin?.sample_question?.length > 0; |
| | | return isShow; |
| | | }; |
| | | const askMoreClick = (item) => { |
| | |
| | | }; |
| | | |
| | | const fixQuestionClick = (item, originData) => { |
| | | if (!item.question) return; |
| | | preQuestion.value = originData?.question; |
| | | if (!item) return; |
| | | // preQuestion.value = originData?.question; |
| | | try { |
| | | sendChatMessage({ |
| | | type: AnswerType.Text, |
| | | values: item.question, |
| | | values: item, |
| | | }); |
| | | } finally { |
| | | preQuestion.value = null; |
| | | // preQuestion.value = null; |
| | | } |
| | | }; |
| | | |