import { BubbleProps } from 'vue-element-plus-x/types/Bubble' import dayjs from 'dayjs' import { MessageItem, SubmitData, MESSAGE_STATUS } from './type' function getS4() { return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1) + '' } function getMessageTemplate(type: string, content: string, isRecommend: boolean, isThinking: boolean): MessageItem { const role = type === 'ai' ? 'ai' : 'user' const placement = role === 'ai' ? 'start' : 'end' const key = getS4() const loading = false const shape = 'corner' const variant = role === 'ai' ? 'filled' : 'outlined' const isMarkdown = false const typing = role === 'ai' ? true : false const avatar = role === 'ai' ? 'https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png' : '../../src/assets/chat-embed/avatar.png' const message: MessageItem = { isRecommend: isRecommend, key, role, placement, content, showThinkingContent: false, loading, shape, variant, isMarkdown, typing, avatar, noStyle: role === 'ai' ? true : false, statusValue: 'end', recommendations: [], avatarSize: '24px', sendTime: dayjs(new Date()).format('YYYY-MM-DD HH:mm:ss') } if (role === 'ai') { message.maxWidth = 'calc(100% - 60px)' if (isThinking) { message.thinkingContent = '' message.thinkingStatus = MESSAGE_STATUS.THINKING message.showThinkingContent = true } else { message.thinkingContent = null message.thinkingStatus = MESSAGE_STATUS.NONE message.showThinkingContent = false } } return message } const defaultMessage = getMessageTemplate('ai', '😊 您好,我是平台小助手,您可以向我提出关于平台使用问题', true, false) function createUserMessage(submitData: SubmitData): MessageItem { const message = getMessageTemplate('user', submitData.question, true, false) if (submitData.additionalData?.length) { Object.assign(message, { additionalData: submitData.additionalData, additionalDataLabel: submitData.additionalDataLabel, menuName: submitData.menuName, menuCode: submitData.menuCode }) } if (submitData.fileInfos) { message.fileInfos = submitData.fileInfos } return message } function createAiMessage(submitData: SubmitData, isThinking: boolean): MessageItem { const message = getMessageTemplate('ai', '', false, isThinking) as MessageItem return Object.assign(message, { question: submitData.question, menuName: submitData.menuName, menuCode: submitData.menuCode, askAdditionalData: submitData.additionalData }) } export { getMessageTemplate, defaultMessage, createUserMessage, createAiMessage }