Browse Source

Merge branch 'hongxilin'

hongxilin
no99 3 months ago
parent
commit
1e21b806a5
  1. 43
      src/store/userPermissionCode.js
  2. 56
      src/views/chat.vue

43
src/store/userPermissionCode.js

@ -4,6 +4,16 @@ import { permissionAPI } from '../api/sword'
// 封装成一个普通的组合式函数
export const useUserInfo = () => {
// 修正所有权限变量拼写 (ss→s)
const brainPermission = ref(0) // 删除 < 和 number 之间的空格
const swordPermission = ref(0)
const pricePermission = ref(0)
const timePermission = ref(0)
const aibullPermission = ref(0)
const aiGnbullPermission = ref(0)
const airadarPermission = ref(0)
const aiGoldMarketList = ref([]) // 移除字符串数组类型
const userRole = ref('')
const loading = ref(false)
const isReady = ref(false)
@ -11,9 +21,9 @@ export const useUserInfo = () => {
const getQueryVariable = (variable) => {
const query = window.location.search.substring(1)
console.log('query', query)
// console.log('query', query)
const vars = query.split('&')
console.log('vars', vars)
// console.log('vars', vars)
for (let i = 0; i < vars.length; i++) {
const pair = vars[i].split('=')
if (pair[0] === variable) {
@ -23,7 +33,7 @@ export const useUserInfo = () => {
return ''
}
const getSessionId = (sessionID,data) => {
const getSessionId = (sessionID, data) => {
const query = data
const vars = query.split(',')
// console.log('vars', vars)
@ -48,16 +58,24 @@ export const useUserInfo = () => {
const fetchUserInfo = async () => {
getAppToken.value = localStorage.getItem('localToken')
? String(localStorage.getItem('localToken'))
? String(localStorage.getItem('localToken'))
: ''
loading.value = true
try {
const requestParams = {
...{ token: getAppToken.value || '' }
}
// 修正拼写错误
const res = await permissionAPI(requestParams)
// 更新状态,移除类型断言
const res = await permissionAPI(requestParams) // 修复API名称拼写
// 修复所有权限变量的拼写错误
brainPermission.value = res.data.brainExpireStatus // 注意:原变量名存在拼写错误,建议改为 brainPermission
swordPermission.value = res.data.swordExpireStatus // 同上
pricePermission.value = res.data.stockForecastExpireStatus // 同上
timePermission.value = res.data.spaceForecastExpireStatus // 同上
aibullPermission.value = res.data.aibullExpireStatus // 同上
aiGnbullPermission.value = res.data.aigoldBullExpireStatus // 同上
airadarPermission.value = res.data.airadarExpireStatus // 同上
aiGoldMarketList.value = res.data.marketList
userRole.value = res.data.userRole
isReady.value = true
} catch (err) {
@ -76,11 +94,20 @@ export const useUserInfo = () => {
onMounted(() => {
})
// 修复返回对象中的拼写错误 (最终残留错误)
return {
userRole,
loading,
isReady,
// 修正返回属性名拼写
brainPermission, // 从 brainPerssion 修正
swordPermission,
pricePermission,
timePermission,
aibullPermission,
aiGnbullPermission,
airadarPermission,
aiGoldMarketList,
init,
fetchUserInfo,
getQueryVariable,

56
src/views/chat.vue

@ -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
}
//
@ -251,9 +259,6 @@ onMounted(async () => {
// token
const isValid = await validateToken()
isTokenValid.value = isValid
if (!isValid) {
console.error('Token 验证失败,请重新登录')
}
})
</script>
<template>
@ -306,42 +311,54 @@ onMounted(async () => {
</div>
<!-- 未登录覆盖层 -->
<div v-if="!isTokenValid" class="overlay">
<div class="overlay-content">用户未登录</div>
<div class="overlay-content">{{errorMsg}}</div>
</div>
</div>
</template>
<style scoped>
table{
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;
@ -552,7 +569,4 @@ table{
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
text-align: center;
}
</style>
Loading…
Cancel
Save