潘志宝
2025-06-13 124f894f4e08fd63eae8c7a85babbc19f2cc1829
src/views/ai/dashboard/zhuanlu/index.vue
@@ -62,7 +62,7 @@
    <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>
@@ -164,12 +164,15 @@
        <!-- 历史建议 -->
        <HistoryMessageDialog
          ref="historyMessageRef"
          :conversation="activeConversation"
          :parentMethod="queryHistoryMessage"
          @gotoManualMethod="gotoManual"
        />
      </div>
      <div v-else>
        <NormalConversation />
        <NormalConversation
          :data="defaultMessage"
        />
      </div>
    </div>
@@ -265,6 +268,7 @@
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([
  {
@@ -548,6 +552,7 @@
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 定时器。如果加载速度很快,就不进入加载中
// 消息滚动
@@ -573,8 +578,30 @@
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'
}
// =========== 【聊天对话】相关 ===========
@@ -671,22 +698,23 @@
}
/** 获取消息 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) => {
@@ -709,7 +737,6 @@
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 则展示它
@@ -1143,11 +1170,11 @@
  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(() => {
@@ -1155,7 +1182,7 @@
      tank.forEach((item) => {
        sum += item[0]
      })
      return (sum / tank.length).toFixed(0);
      return Number((sum / tank.length).toFixed(0));
    })
  }
  return returnValue.value
@@ -1582,6 +1609,7 @@
// 清理监听
onUnmounted(() => {
  console.log('stopStream')
  const events = ['fullscreenchange', 'webkitfullscreenchange', 'msfullscreenchange'];
  events.forEach(event => {
    document.removeEventListener(event, handleFullscreenChange);