| | |
| | | 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) => { |
| | |
| | | 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) => { |