|
|
@ -8,14 +8,13 @@ import { marked } from 'marked'; // 引入marked库 |
|
|
|
import katex from 'katex'; // 引入 KaTeX 库 |
|
|
|
import 'katex/dist/katex.min.css'; // 引入 KaTeX 样式 |
|
|
|
|
|
|
|
const { getQueryVariable } = useUserInfo() |
|
|
|
// 假设 getSessionId 已经正确定义 |
|
|
|
const { getSessionId } = useUserInfo() |
|
|
|
const { getQueryVariable,getSessionId,fetchUserInfo,loading,isReady } = useUserInfo() |
|
|
|
const errorMsg = ref('') |
|
|
|
|
|
|
|
const isTokenValid = ref(false) |
|
|
|
const fnGetToken = () => { |
|
|
|
localStorage.setItem('localToken', decodeURIComponent(String(getQueryVariable('token')))) |
|
|
|
console.log(localStorage.getItem('localToken')); |
|
|
|
// console.log(localStorage.getItem('localToken')); |
|
|
|
} |
|
|
|
setTimeout(() => { |
|
|
|
fnGetToken() |
|
|
@ -24,11 +23,20 @@ setTimeout(() => { |
|
|
|
// 验证 token |
|
|
|
const validateToken = async () => { |
|
|
|
const token = localStorage.getItem('localToken') |
|
|
|
console.log('token',token); |
|
|
|
// console.log('token', token); |
|
|
|
if (!token) { |
|
|
|
console.error('未找到 token,请重新登录') |
|
|
|
errorMsg.value = '用户未登录' |
|
|
|
return false |
|
|
|
} |
|
|
|
// 如果token验证通过,获取权限 |
|
|
|
await fetchUserInfo(); |
|
|
|
console.log('loading', loading.value); |
|
|
|
if(!isReady.value){ |
|
|
|
errorMsg.value = 'token 验证失败' |
|
|
|
return false |
|
|
|
} |
|
|
|
|
|
|
|
return true |
|
|
|
} |
|
|
|
// 创建新对话 |
|
|
@ -246,9 +254,6 @@ onMounted(async () => { |
|
|
|
// 再验证 token |
|
|
|
const isValid = await validateToken() |
|
|
|
isTokenValid.value = isValid |
|
|
|
if (!isValid) { |
|
|
|
console.error('Token 验证失败,请重新登录') |
|
|
|
} |
|
|
|
}) |
|
|
|
</script> |
|
|
|
<template> |
|
|
@ -301,7 +306,7 @@ onMounted(async () => { |
|
|
|
</div> |
|
|
|
<!-- 未登录覆盖层 --> |
|
|
|
<div v-if="!isTokenValid" class="overlay"> |
|
|
|
<div class="overlay-content">用户未登录</div> |
|
|
|
<div class="overlay-content">{{errorMsg}}</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</template> |
|
|
@ -311,32 +316,44 @@ onMounted(async () => { |
|
|
|
table { |
|
|
|
border-color: black |
|
|
|
} |
|
|
|
|
|
|
|
/* 使用更具体的选择器 */ |
|
|
|
.message-bubble .message-content .thinking-content { |
|
|
|
color: #c8c4c4; |
|
|
|
font-style: italic; |
|
|
|
} |
|
|
|
|
|
|
|
/* 新增表格样式 */ |
|
|
|
.message-bubble .message-content table { |
|
|
|
border-collapse: collapse; /* 合并边框 */ |
|
|
|
width: 100%; /* 表格宽度为 100% */ |
|
|
|
border-collapse: collapse; |
|
|
|
/* 合并边框 */ |
|
|
|
width: 100%; |
|
|
|
/* 表格宽度为 100% */ |
|
|
|
} |
|
|
|
|
|
|
|
.message-bubble .message-content th, |
|
|
|
.message-bubble .message-content td { |
|
|
|
border: 1px solid #e0e0e0; /* 单元格边框 */ |
|
|
|
padding: 8px; /* 单元格内边距 */ |
|
|
|
text-align: left; /* 文本左对齐 */ |
|
|
|
border: 1px solid #e0e0e0; |
|
|
|
/* 单元格边框 */ |
|
|
|
padding: 8px; |
|
|
|
/* 单元格内边距 */ |
|
|
|
text-align: left; |
|
|
|
/* 文本左对齐 */ |
|
|
|
} |
|
|
|
|
|
|
|
.message-bubble .message-content th { |
|
|
|
background-color: #f1f3f5; /* 表头背景颜色 */ |
|
|
|
background-color: #f1f3f5; |
|
|
|
/* 表头背景颜色 */ |
|
|
|
} |
|
|
|
|
|
|
|
/* 其他样式保持不变 */ |
|
|
|
.message-item.bot { |
|
|
|
justify-content: flex-start; /* 让机器人消息靠左对齐 */ |
|
|
|
text-align: left; /* 新增:设置文本左对齐 */ |
|
|
|
justify-content: flex-start; |
|
|
|
/* 让机器人消息靠左对齐 */ |
|
|
|
text-align: left; |
|
|
|
/* 新增:设置文本左对齐 */ |
|
|
|
} |
|
|
|
|
|
|
|
.chat-container { |
|
|
|
display: flex; |
|
|
|
flex-direction: column; |
|
|
@ -547,7 +564,4 @@ table{ |
|
|
|
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); |
|
|
|
text-align: center; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</style> |