| | |
| | | |
| | | <div class="gas-scheduling-center"> |
| | | <div class="mode-switch"> |
| | | <el-radio-group v-model="tabPosition" class="custom-radio-group"> |
| | | <el-radio-group v-model="tabPosition" @change="handleChange" class="custom-radio-group"> |
| | | <el-radio-button label="model">大模型模式</el-radio-button> |
| | | <el-radio-button label="conversation">对话模式</el-radio-button> |
| | | </el-radio-group> |
| | |
| | | <!-- 历史建议 --> |
| | | <HistoryMessageDialog |
| | | ref="historyMessageRef" |
| | | :conversation="activeConversation" |
| | | :parentMethod="queryHistoryMessage" |
| | | @gotoManualMethod="gotoManual" |
| | | /> |
| | | </div> |
| | | |
| | | <div v-else> |
| | | <NormalConversation /> |
| | | <NormalConversation |
| | | :data="defaultMessage" |
| | | /> |
| | | </div> |
| | | </div> |
| | | |
| | |
| | | import {round} from "lodash-es"; |
| | | import {ArrowUpBold} from "@element-plus/icons-vue"; |
| | | import * as authUtil from "@/utils/auth"; |
| | | import HistoryMessageList from "@/views/ai/dashboard/components/message/HistoryMessageList.vue"; |
| | | |
| | | const mqhsList = ref([ |
| | | { |
| | |
| | | const messageRef = ref() |
| | | const activeMessageList = ref<ChatMessageVO[]>([]) // 选中对话的消息列表 |
| | | const activeHistoryMessageList = ref<ChatMessageVO[]>([]) // 历史建议列表 |
| | | const activeHistoryMessageTotal = ref(0) // 历史建议总数 |
| | | const activeMessageListLoading = ref<boolean>(false) // activeMessageList 是否正在加载中 |
| | | const activeMessageListLoadingTimer = ref<any>() // activeMessageListLoading Timer 定时器。如果加载速度很快,就不进入加载中 |
| | | // 消息滚动 |
| | |
| | | const historyMessageRef = ref() |
| | | const openHistoryMessage = async () => { |
| | | // 刷新 message 列表 |
| | | await getHistoryMessageList() |
| | | historyMessageRef.value.open(activeHistoryMessageList.value, activeConversation.value) |
| | | let resDate = await historyMessageRef.value.dealDate() |
| | | await getHistoryMessageList(resDate) |
| | | historyMessageRef.value.open(activeHistoryMessageList.value, activeConversation.value, activeHistoryMessageTotal.value) |
| | | } |
| | | |
| | | const queryHistoryMessage = async (queryParams: ChatMessageVO) => { |
| | | return await getHistoryMessageList(queryParams) |
| | | } |
| | | |
| | | //切换对话模式判断 |
| | | const handleChange = async () => { |
| | | // 对话进行中,不允许切换 |
| | | if (conversationInProgress.value) { |
| | | message.alert('对话中,不允许切换!') |
| | | return false |
| | | } |
| | | } |
| | | |
| | | // 默认选中消息 |
| | | const defaultMessage = ref<ChatMessageVO>() |
| | | |
| | | const gotoManual = async (item: ChatMessageVO) => { |
| | | defaultMessage.value = item |
| | | tabPosition.value = 'conversation' |
| | | } |
| | | |
| | | // =========== 【聊天对话】相关 =========== |
| | |
| | | } |
| | | |
| | | /** 获取消息 message 列表 */ |
| | | const getHistoryMessageList = async () => { |
| | | const getHistoryMessageList = async (params: any) => { |
| | | if (activeConversationId.value === null) { |
| | | return |
| | | } |
| | | params.conversationId = activeConversationId.value |
| | | // 获取消息列表 |
| | | activeHistoryMessageList.value = await ChatMessageApi.getChatMessageListByConversationId( |
| | | activeConversationId.value |
| | | ) |
| | | if (activeHistoryMessageList.value.length > 0) { |
| | | let pageResult = await ChatMessageApi.getChatMessagePageListByConversationId(params) |
| | | activeHistoryMessageList.value = pageResult.list |
| | | activeHistoryMessageTotal.value = pageResult.total |
| | | if (activeHistoryMessageList.value != null && activeHistoryMessageList.value.length > 0) { |
| | | activeHistoryMessageList.value.forEach((message: ChatMessageVO) => { |
| | | if(message.type != 'user') { |
| | | dealResult(message) |
| | | } |
| | | }) |
| | | return activeHistoryMessageList.value |
| | | } |
| | | return pageResult |
| | | } |
| | | //处理调度推理结论 |
| | | const dealResult = (message: any) => { |
| | |
| | | const messageList = computed(() => { |
| | | if (activeMessageList.value.length > 0) { |
| | | activeMessageList.value[1].thinking = dealResultAndData(activeMessageList.value[1].content) |
| | | console.log(activeMessageList.value) |
| | | return activeMessageList.value |
| | | } |
| | | // 没有消息时,如果有 systemMessage 则展示它 |
| | |
| | | let returnValue = 0; |
| | | if(type == 'max') { |
| | | returnValue = computed(() => { |
| | | return Math.max(...tank) + 20 |
| | | return Number((Math.max(...tank) + 20).toFixed(0)) |
| | | }) |
| | | } else if(type == 'min') { |
| | | returnValue = computed(() => { |
| | | return Math.min(...tank) - 60 |
| | | return Number((Math.min(...tank) - 60).toFixed(0)) |
| | | }) |
| | | } else if(type == 'average') { |
| | | returnValue = computed(() => { |
| | |
| | | tank.forEach((item) => { |
| | | sum += item[0] |
| | | }) |
| | | return (sum / tank.length).toFixed(0); |
| | | return Number((sum / tank.length).toFixed(0)); |
| | | }) |
| | | } |
| | | return returnValue.value |
| | |
| | | |
| | | // 清理监听 |
| | | onUnmounted(() => { |
| | | console.log('stopStream') |
| | | const events = ['fullscreenchange', 'webkitfullscreenchange', 'msfullscreenchange']; |
| | | events.forEach(event => { |
| | | document.removeEventListener(event, handleFullscreenChange); |