|
|
@ -185,10 +185,40 @@ import { useEmotionStore } from '@/store/emotion'; // 导入Pinia store |
|
|
|
import { useAudioStore } from '@/store/audio.js'; // 导入音频store |
|
|
|
import { Howl, Howler } from 'howler'; // 导入音频播放库 |
|
|
|
import { reactive } from 'vue'; |
|
|
|
import { marked } from 'marked'; // 引入marked库 |
|
|
|
// 使用Pinia store |
|
|
|
const emotionStore = useEmotionStore(); |
|
|
|
const audioStore = useAudioStore(); |
|
|
|
|
|
|
|
// 处理refuse数据的函数 |
|
|
|
function processRefuseMessage(refuseData) { |
|
|
|
if (!refuseData) return '未知错误'; |
|
|
|
|
|
|
|
// 如果refuse数据包含Markdown格式,进行转换 |
|
|
|
try { |
|
|
|
// 配置marked选项 |
|
|
|
marked.setOptions({ |
|
|
|
breaks: true, // 支持换行符转换为 <br> |
|
|
|
gfm: true, // 启用 GitHub Flavored Markdown |
|
|
|
sanitize: false, // 不清理 HTML |
|
|
|
smartLists: true, // 智能列表 |
|
|
|
smartypants: true, // 智能标点符号 |
|
|
|
xhtml: false, // 不使用 XHTML 输出 |
|
|
|
}); |
|
|
|
|
|
|
|
// 将Markdown转换为HTML |
|
|
|
const htmlContent = marked(refuseData); |
|
|
|
|
|
|
|
// 移除HTML标签,只保留纯文本用于ElMessage显示 |
|
|
|
const tempDiv = document.createElement('div'); |
|
|
|
tempDiv.innerHTML = htmlContent; |
|
|
|
return tempDiv.textContent || tempDiv.innerText || refuseData; |
|
|
|
} catch (error) { |
|
|
|
console.error('处理refuse消息时出错:', error); |
|
|
|
return refuseData; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 组件引用 |
|
|
|
const marketTemperatureRef = ref(null); // 引用市场温度计组件 |
|
|
|
const emoEnergyConverterRef = ref(null) |
|
|
@ -726,6 +756,11 @@ async function handleSendMessage(input) { |
|
|
|
console.log("发送内容:", input); |
|
|
|
|
|
|
|
// 检查用户输入内容是否为空 |
|
|
|
if (!input || !input.trim()) { |
|
|
|
ElMessage.warning("输入内容不能为空"); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
if (input.trim()) { |
|
|
|
const userMessage = reactive({ sender: 'user', text: input }); |
|
|
|
messages.value.push(userMessage); |
|
|
@ -791,7 +826,7 @@ async function handleSendMessage(input) { |
|
|
|
emotionStore.updateActiveStockConclusion(conclusionResponse.data); |
|
|
|
} |
|
|
|
} else { |
|
|
|
ElMessage.error(parsedData.refuse); |
|
|
|
ElMessage.error(processRefuseMessage(parsedData.refuse)); |
|
|
|
} |
|
|
|
} catch (error) { |
|
|
|
ElMessage.error('请求工作流接口失败,请检查网络连接'); |
|
|
@ -800,7 +835,7 @@ async function handleSendMessage(input) { |
|
|
|
isRotating.value = false; |
|
|
|
} |
|
|
|
} else { |
|
|
|
ElMessage.error(parsedData.refuse); |
|
|
|
ElMessage.error(processRefuseMessage(parsedData.refuse)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
@ -848,10 +883,10 @@ async function fetchData(code, market, stockName, queryText) { |
|
|
|
// 将股票数据添加到store中 |
|
|
|
emotionStore.addStock(stockData); |
|
|
|
} else { |
|
|
|
ElMessage.error(stockDataResponse.refuse); |
|
|
|
ElMessage.error(processRefuseMessage(stockDataResponse.refuse)); |
|
|
|
} |
|
|
|
} catch (error) { |
|
|
|
ElMessage.error(stockDataResponse.refuse); |
|
|
|
ElMessage.error(processRefuseMessage(stockDataResponse?.refuse || '请求失败,请检查网络连接')); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|