|
|
@ -37,6 +37,7 @@ import voiceNoActive from "../assets/img/homePage/tail/voice-no-active.png"; |
|
|
|
import sendBtn from "../assets/img/homePage/tail/send.png"; |
|
|
|
import msgBtn from "../assets/img/homePage/tail/msg.png"; |
|
|
|
import feedbackBtn from "../assets/img/Feedback/feedbackBtn.png"; |
|
|
|
import back from "../assets/img/Feedback/back.png"; |
|
|
|
import AiEmotion from "./AiEmotion.vue"; |
|
|
|
import HistoryRecord from "./components/HistoryRecord.vue"; |
|
|
|
|
|
|
@ -333,8 +334,8 @@ const isAnnouncementVisible = ref(false); |
|
|
|
// Token规则提示框相关 |
|
|
|
const tokenRuleDialogVisible = ref(false); |
|
|
|
const hasShownTokenRule = ref({ |
|
|
|
AIchat: sessionStorage.getItem('hasShownTokenRule_AIchat') === 'true', |
|
|
|
AiEmotion: sessionStorage.getItem('hasShownTokenRule_AiEmotion') === 'true' |
|
|
|
AIchat: sessionStorage.getItem("hasShownTokenRule_AIchat") === "true", |
|
|
|
AiEmotion: sessionStorage.getItem("hasShownTokenRule_AiEmotion") === "true", |
|
|
|
}); |
|
|
|
|
|
|
|
// 关闭Token规则提示框 |
|
|
@ -351,25 +352,29 @@ const handleGlobalClick = () => { |
|
|
|
}; |
|
|
|
|
|
|
|
onMounted(() => { |
|
|
|
document.addEventListener('click', handleGlobalClick); |
|
|
|
document.addEventListener("click", handleGlobalClick); |
|
|
|
}); |
|
|
|
|
|
|
|
// 在组件卸载时移除事件监听器 |
|
|
|
onUnmounted(() => { |
|
|
|
document.removeEventListener('click', handleGlobalClick); |
|
|
|
document.removeEventListener("click", handleGlobalClick); |
|
|
|
}); |
|
|
|
|
|
|
|
// 检查是否需要显示Token规则提示框(从其他页面跳转过来时) |
|
|
|
const checkTokenRuleOnPageLoad = () => { |
|
|
|
const activeTab = sessionStorage.getItem('activeTabAI'); |
|
|
|
const fromExternalPage = sessionStorage.getItem('fromExternalPage'); |
|
|
|
|
|
|
|
if (fromExternalPage === 'true' && activeTab && !hasShownTokenRule.value[activeTab]) { |
|
|
|
const activeTab = sessionStorage.getItem("activeTabAI"); |
|
|
|
const fromExternalPage = sessionStorage.getItem("fromExternalPage"); |
|
|
|
|
|
|
|
if ( |
|
|
|
fromExternalPage === "true" && |
|
|
|
activeTab && |
|
|
|
!hasShownTokenRule.value[activeTab] |
|
|
|
) { |
|
|
|
tokenRuleDialogVisible.value = true; |
|
|
|
hasShownTokenRule.value[activeTab] = true; |
|
|
|
sessionStorage.setItem(`hasShownTokenRule_${activeTab}`, 'true'); |
|
|
|
sessionStorage.setItem(`hasShownTokenRule_${activeTab}`, "true"); |
|
|
|
// 清除标记,避免重复显示 |
|
|
|
sessionStorage.removeItem('fromExternalPage'); |
|
|
|
sessionStorage.removeItem("fromExternalPage"); |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
@ -954,6 +959,10 @@ const expandHistory = () => { |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
const feedbackBack = () => { |
|
|
|
dataStore.isFeedback = false; |
|
|
|
}; |
|
|
|
|
|
|
|
const backToHome = () => { |
|
|
|
if (isMobile.value) { |
|
|
|
console.log("用户是移动端"); |
|
|
@ -979,12 +988,12 @@ const backToHome = () => { |
|
|
|
"http://121.89.234.155:8807/hljw/homepage?menu=999999991"; |
|
|
|
} else { |
|
|
|
window.parent.postMessage( |
|
|
|
{ |
|
|
|
type: 'NAVIGATE_TO_HOMEPAGE', |
|
|
|
menu: '999999991' |
|
|
|
}, |
|
|
|
'*' |
|
|
|
) |
|
|
|
{ |
|
|
|
type: "NAVIGATE_TO_HOMEPAGE", |
|
|
|
menu: "999999991", |
|
|
|
}, |
|
|
|
"*" |
|
|
|
); |
|
|
|
} |
|
|
|
// window.parent.location.href = window.parent.document.referrer |
|
|
|
} |
|
|
@ -1143,7 +1152,7 @@ const goChange = async () => { |
|
|
|
onMounted(async () => { |
|
|
|
// 检查是否需要显示Token规则提示框 |
|
|
|
checkTokenRuleOnPageLoad(); |
|
|
|
|
|
|
|
|
|
|
|
throttledJudgeDevice(); |
|
|
|
// 禁用全局触摸滚动 |
|
|
|
touchmoveHandlerRef = touchmoveHandler; |
|
|
@ -1205,8 +1214,6 @@ onMounted(async () => { |
|
|
|
sessionStorage.removeItem("activeLevel"); |
|
|
|
sessionStorage.setItem("rechargeFlag", "0"); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
onUnmounted(() => { |
|
|
@ -1257,8 +1264,8 @@ onUnmounted(() => { |
|
|
|
v-if="!dataStore.isFeedback" |
|
|
|
class="main-container" |
|
|
|
:class="{ |
|
|
|
collapsed: historyRecordRef?.isCollapsed && !isMobile, |
|
|
|
unCollapsed: !historyRecordRef?.isCollapsed && !isMobile, |
|
|
|
collapsed: !isMobile && historyRecordRef?.isCollapsed, |
|
|
|
unCollapsed: !isMobile && !historyRecordRef?.isCollapsed, |
|
|
|
}" |
|
|
|
> |
|
|
|
<!-- AI小财神头部: logo 次数 公告 --> |
|
|
@ -1478,10 +1485,15 @@ onUnmounted(() => { |
|
|
|
> |
|
|
|
<el-header class="homepage-head"> |
|
|
|
<!-- logo --> |
|
|
|
<!-- <div class="homepage-logo"> |
|
|
|
<img :src="logo" alt="图片加载失败" class="logo1" /> |
|
|
|
<img :src="madeInHL" alt="图片加载失败" class="logo2" /> |
|
|
|
</div> --> |
|
|
|
<div class="homepage-logo"> |
|
|
|
<img |
|
|
|
:src="back" |
|
|
|
alt="返回按钮" |
|
|
|
class="backToHomeImg" |
|
|
|
@click="feedbackBack" |
|
|
|
/> |
|
|
|
<!-- <img :src="madeInHL" alt="图片加载失败" class="logo2" /> --> |
|
|
|
</div> |
|
|
|
|
|
|
|
<div class="homepage-right-group"> |
|
|
|
<div class="count-badge" @click="showCount"> |
|
|
@ -1659,6 +1671,7 @@ onUnmounted(() => { |
|
|
|
v-model="confirmDialogVisible" |
|
|
|
:width="isMobile ? '60%' : '30%'" |
|
|
|
:show-close="false" |
|
|
|
:align-center="isMobile" |
|
|
|
> |
|
|
|
<div class="confirmDialogTitle">兑换</div> |
|
|
|
<div class="confirmDialogContent"> |
|
|
@ -1679,6 +1692,7 @@ onUnmounted(() => { |
|
|
|
:width="isMobile ? '60%' : '30%'" |
|
|
|
:show-close="false" |
|
|
|
class="changeSuccessDialog" |
|
|
|
:align-center="isMobile" |
|
|
|
> |
|
|
|
<div class="changeSuccessDialogTitle">兑换成功</div> |
|
|
|
<div class="changeSuccessDialogContent"> |
|
|
@ -1687,27 +1701,45 @@ onUnmounted(() => { |
|
|
|
</el-dialog> |
|
|
|
|
|
|
|
<!-- Token规则提示框 --> |
|
|
|
<div v-if="tokenRuleDialogVisible" class="tokenRuleDialog" @click="closeTokenRuleDialog"> |
|
|
|
<div |
|
|
|
v-if="tokenRuleDialogVisible" |
|
|
|
class="tokenRuleDialog" |
|
|
|
@click="closeTokenRuleDialog" |
|
|
|
> |
|
|
|
<div class="tokenRuleDialogContent" @click.stop> |
|
|
|
<div class="tokenRuleDialogClose" @click="closeTokenRuleDialog"> |
|
|
|
<el-icon><Close /></el-icon> |
|
|
|
</div> |
|
|
|
<div class="tokenRuleDialogTitle">Token规则</div> |
|
|
|
|
|
|
|
|
|
|
|
<div class="tokenRuleSection"> |
|
|
|
<div class="tokenRuleSectionTitle">Token消耗规则</div> |
|
|
|
<div class="tokenRuleItem">• 在"夺宝奇兵大模型"、"AI情绪大模型"中搜索股票,若搜索成功,内容正常生成,则会消耗1Token</div> |
|
|
|
<div class="tokenRuleItem">• 在"夺宝奇兵大模型"、"AI情绪大模型"中搜索股票,若搜索有误,无法生成内容,则不会消耗Token</div> |
|
|
|
<div class="tokenRuleItem">• 搜索同一只股票,产出内容相同时,只扣除1Token</div> |
|
|
|
<div class="tokenRuleItem">• "夺宝奇兵"和"AI小财神"中Token是互通的</div> |
|
|
|
<div class="tokenRuleItem"> |
|
|
|
• |
|
|
|
在"夺宝奇兵大模型"、"AI情绪大模型"中搜索股票,若搜索成功,内容正常生成,则会消耗1Token |
|
|
|
</div> |
|
|
|
<div class="tokenRuleItem"> |
|
|
|
• |
|
|
|
在"夺宝奇兵大模型"、"AI情绪大模型"中搜索股票,若搜索有误,无法生成内容,则不会消耗Token |
|
|
|
</div> |
|
|
|
<div class="tokenRuleItem"> |
|
|
|
• 搜索同一只股票,产出内容相同时,只扣除1Token |
|
|
|
</div> |
|
|
|
<div class="tokenRuleItem"> |
|
|
|
• "夺宝奇兵"和"AI小财神"中Token是互通的 |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
<div class="tokenRuleSection"> |
|
|
|
<div class="tokenRuleSectionTitle">Token兑换规则</div> |
|
|
|
<div class="tokenRuleItem">• 点击右上角"获取Token",即可进入Token兑换页进行金币兑换Token</div> |
|
|
|
<div class="tokenRuleItem">• 金币兑换Token的比例为:1金币=1Token;一经兑换,不予退还</div> |
|
|
|
<div class="tokenRuleItem"> |
|
|
|
• 点击右上角"获取Token",即可进入Token兑换页进行金币兑换Token |
|
|
|
</div> |
|
|
|
<div class="tokenRuleItem"> |
|
|
|
• 金币兑换Token的比例为:1金币=1Token;一经兑换,不予退还 |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
<div class="tokenRuleNote"> |
|
|
|
注意:报告生成过程中,请耐心等待,在此期间请勿进行页面刷新操作,以免导致报告生成进程中断 |
|
|
|
</div> |
|
|
@ -1770,6 +1802,12 @@ onUnmounted(() => { |
|
|
|
padding: 0 6%; |
|
|
|
} |
|
|
|
|
|
|
|
.backToHomeImg { |
|
|
|
width: 40px; |
|
|
|
height: 40px; |
|
|
|
margin-left: 10px; |
|
|
|
} |
|
|
|
|
|
|
|
@media (max-width: 768px) { |
|
|
|
.tab-container { |
|
|
|
gap: 15px; |
|
|
@ -1832,22 +1870,6 @@ body { |
|
|
|
/* -webkit-overflow-scrolling: touch; */ |
|
|
|
} |
|
|
|
|
|
|
|
.main-container { |
|
|
|
flex: 1; |
|
|
|
transition: margin-left 0.3s ease; |
|
|
|
display: flex; |
|
|
|
flex-direction: column; |
|
|
|
overflow: hidden; |
|
|
|
} |
|
|
|
|
|
|
|
.main-container.unCollapsed { |
|
|
|
margin-left: 300px; /* 为历史记录组件留出空间 */ |
|
|
|
} |
|
|
|
/* 当历史记录组件折叠时调整主容器边距 */ |
|
|
|
.main-container.collapsed { |
|
|
|
margin-left: 3%; |
|
|
|
} |
|
|
|
|
|
|
|
.zhezhao { |
|
|
|
width: 100%; |
|
|
|
height: 100%; |
|
|
@ -1856,23 +1878,30 @@ body { |
|
|
|
position: fixed; |
|
|
|
} |
|
|
|
|
|
|
|
/* 移动端适配 */ |
|
|
|
@media (max-width: 768px) { |
|
|
|
.homepage { |
|
|
|
background-image: url("https://d31zlh4on95l9h.cloudfront.net/images/90d31d7052e729c63acb9e2cb94d1307.png"); |
|
|
|
} |
|
|
|
@media (min-width: 769px) { |
|
|
|
.main-container { |
|
|
|
/* margin-left: 280px; */ |
|
|
|
flex: 1; |
|
|
|
transition: margin-left 0.3s ease; |
|
|
|
display: flex; |
|
|
|
flex-direction: column; |
|
|
|
overflow: hidden; |
|
|
|
} |
|
|
|
.main-container.unCollapsed { |
|
|
|
margin-left: 280px; |
|
|
|
margin-left: 300px; /* 为历史记录组件留出空间 */ |
|
|
|
} |
|
|
|
|
|
|
|
/* 当历史记录组件折叠时调整主容器边距 */ |
|
|
|
.main-container.collapsed { |
|
|
|
margin-left: 40px; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/* 移动端适配 */ |
|
|
|
@media (max-width: 768px) { |
|
|
|
.homepage { |
|
|
|
background-image: url("https://d31zlh4on95l9h.cloudfront.net/images/90d31d7052e729c63acb9e2cb94d1307.png"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
.homepage .el-container { |
|
|
|
height: 100%; |
|
|
|
flex-direction: column; |
|
|
@ -1932,10 +1961,10 @@ body { |
|
|
|
|
|
|
|
.homepage-right-group { |
|
|
|
display: flex; |
|
|
|
gap: 8px; |
|
|
|
/* gap: 8px; */ |
|
|
|
align-items: center; |
|
|
|
margin-left: auto; |
|
|
|
margin-right: 20px; |
|
|
|
margin-right: 5px; |
|
|
|
} |
|
|
|
|
|
|
|
.homepage-right-group .action-btn { |
|
|
@ -2536,7 +2565,7 @@ body { |
|
|
|
justify-content: center; |
|
|
|
align-items: center; |
|
|
|
position: fixed; |
|
|
|
bottom: 15%; |
|
|
|
bottom: 20%; |
|
|
|
color: white; |
|
|
|
z-index: 9999; |
|
|
|
} |
|
|
@ -2580,12 +2609,10 @@ body { |
|
|
|
font-size: 20px; |
|
|
|
font-weight: bold; |
|
|
|
text-align: center; |
|
|
|
margin-bottom: 20px; |
|
|
|
width: 100%; |
|
|
|
} |
|
|
|
|
|
|
|
.tokenRuleSection { |
|
|
|
margin-bottom: 15px; |
|
|
|
width: 100%; |
|
|
|
} |
|
|
|
|
|
|
@ -2600,7 +2627,6 @@ body { |
|
|
|
color: white; |
|
|
|
font-size: 16px; |
|
|
|
line-height: 1.5; |
|
|
|
margin-bottom: 6px; |
|
|
|
} |
|
|
|
|
|
|
|
.tokenRuleNote { |
|
|
@ -2611,44 +2637,44 @@ body { |
|
|
|
color: white; |
|
|
|
font-size: 14px; |
|
|
|
line-height: 1.5; |
|
|
|
margin-top: 15px; |
|
|
|
text-align: center; |
|
|
|
word-wrap: break-word; |
|
|
|
overflow-wrap: break-word; |
|
|
|
} |
|
|
|
|
|
|
|
@media (max-width: 768px) { |
|
|
|
|
|
|
|
.tokenRuleDialog { |
|
|
|
bottom: 20%; |
|
|
|
} |
|
|
|
.tokenRuleDialogContent { |
|
|
|
width: 90vw; |
|
|
|
width: 80vw; |
|
|
|
padding: 15px 20px; |
|
|
|
max-height: 80vh; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.tokenRuleDialogTitle { |
|
|
|
font-size: 18px; |
|
|
|
margin-bottom: 15px; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.tokenRuleSectionTitle { |
|
|
|
font-size: 14px; |
|
|
|
margin-bottom: 6px; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.tokenRuleItem { |
|
|
|
font-size: 14px; |
|
|
|
font-size: 13px; |
|
|
|
line-height: 1.4; |
|
|
|
margin-bottom: 5px; |
|
|
|
word-wrap: break-word; |
|
|
|
overflow-wrap: break-word; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.tokenRuleNote { |
|
|
|
font-size: 12px; |
|
|
|
padding: 10px; |
|
|
|
margin-top: 12px; |
|
|
|
line-height: 1.4; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.tokenRuleDialogClose { |
|
|
|
width: 20px; |
|
|
|
height: 20px; |
|
|
@ -2656,6 +2682,29 @@ body { |
|
|
|
} |
|
|
|
|
|
|
|
@media (max-width: 768px) { |
|
|
|
.logo1 { |
|
|
|
max-width: 110px; |
|
|
|
width: 25vw; |
|
|
|
} |
|
|
|
|
|
|
|
.homepage-right-group { |
|
|
|
gap: 10px; |
|
|
|
} |
|
|
|
|
|
|
|
.homepage-right-group .action-btn { |
|
|
|
height: 30px; |
|
|
|
} |
|
|
|
|
|
|
|
.count-number { |
|
|
|
top: 10px; |
|
|
|
font-size: 12px; |
|
|
|
} |
|
|
|
|
|
|
|
.backImg { |
|
|
|
width: 40px; |
|
|
|
height: auto; |
|
|
|
} |
|
|
|
|
|
|
|
.action-btn { |
|
|
|
height: 21px; |
|
|
|
} |
|
|
@ -2782,8 +2831,6 @@ body { |
|
|
|
.changeSuccessDialogContent { |
|
|
|
font-size: 1rem; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
</style> |
|
|
|
|
|
|
|