Browse Source

Merge branch 'milestone-20250909-周更新分支' of http://39.101.133.168:8807/hongxilin/AIxiaocaishen into hongxilin/feature-20250909152728-样式修复

milestone-20250909-周更新分支
no99 6 days ago
parent
commit
f93bc8799b
  1. 32
      src/views/DBQBmodel.vue
  2. 30
      src/views/Emotionsmodel.vue
  3. 1
      src/views/Selectmodel.vue
  4. 107
      src/views/components/emoEnergyConverter.vue
  5. 49
      src/views/homePage.vue

32
src/views/DBQBmodel.vue

@ -135,7 +135,7 @@ const closeNoPermissionDialog = () => {
<style scoped> <style scoped>
.homepage { .homepage {
/* background-image: url("@/assets/img/DBQBmodel/bg.png"); */ /* background-image: url("@/assets/img/DBQBmodel/bg.png"); */
/* width: 100vw; */
width: 100%;
min-height: 100vh; min-height: 100vh;
background-size: cover; background-size: cover;
background-position: center; background-position: center;
@ -143,6 +143,7 @@ const closeNoPermissionDialog = () => {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
overflow-x: hidden;
} }
/* 顶部标题图 */ /* 顶部标题图 */
@ -156,12 +157,14 @@ const closeNoPermissionDialog = () => {
} }
.bottom-icon { .bottom-icon {
/* width: 100%; */
width: 100%;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
position: absolute; position: absolute;
bottom: 10vh; bottom: 10vh;
left: 0;
right: 0;
margin: 0 auto;
align-items: center; align-items: center;
} }
@ -209,6 +212,22 @@ const closeNoPermissionDialog = () => {
border: none; border: none;
padding: 0; padding: 0;
cursor: pointer; cursor: pointer;
animation: breathing 3s ease-in-out infinite;
}
@keyframes breathing {
0% {
transform: scale(1);
opacity: 0.8;
}
50% {
transform: scale(1.1);
opacity: 1;
}
100% {
transform: scale(1);
opacity: 0.8;
}
} }
.btn-item img { .btn-item img {
@ -224,6 +243,8 @@ const closeNoPermissionDialog = () => {
align-items: center; align-items: center;
position: fixed; position: fixed;
bottom: 15%; bottom: 15%;
left: 0;
right: 0;
/* margin: auto auto; */ /* margin: auto auto; */
color: white; color: white;
} }
@ -254,6 +275,11 @@ const closeNoPermissionDialog = () => {
/* 手机适配 - 小屏幕时保持纵向排列 */ /* 手机适配 - 小屏幕时保持纵向排列 */
@media screen and (max-width: 768px) { @media screen and (max-width: 768px) {
.homepage {
width: 100%;
overflow-x: hidden;
}
.top-icon { .top-icon {
margin-top: 12%; margin-top: 12%;
width: 90%; width: 90%;

30
src/views/Emotionsmodel.vue

@ -147,16 +147,19 @@ const closeNoPermissionDialog = () => {
width: 20vw; width: 20vw;
min-width: 300px; min-width: 300px;
height: auto; height: auto;
position: absolute;
top: 10vh;
/* position: absolute; */
/* top: 10vh; */
} }
.bottom-icon { .bottom-icon {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
position: absolute;
/* position: absolute;
bottom: 0vh; bottom: 0vh;
left: 0;
right: 0;
margin: 0 auto; */
} }
/* 四维体系整体容器修复 */ /* 四维体系整体容器修复 */
@ -198,6 +201,22 @@ const closeNoPermissionDialog = () => {
border: none; border: none;
cursor: pointer; cursor: pointer;
transition: transform 0.3s ease; transition: transform 0.3s ease;
animation: breathing 3s ease-in-out infinite;
}
@keyframes breathing {
0% {
transform: scale(1);
opacity: 0.8;
}
50% {
transform: scale(1.1);
opacity: 1;
}
100% {
transform: scale(1);
opacity: 0.8;
}
} }
.btn-item:hover { .btn-item:hover {
@ -216,6 +235,8 @@ const closeNoPermissionDialog = () => {
align-items: center; align-items: center;
position: fixed; position: fixed;
bottom: 15%; bottom: 15%;
left: 0;
right: 0;
/* margin: auto auto; */ /* margin: auto auto; */
color: white; color: white;
} }
@ -255,6 +276,7 @@ const closeNoPermissionDialog = () => {
@media (max-width: 768px) { @media (max-width: 768px) {
.homepage { .homepage {
min-height: 100vh; min-height: 100vh;
width: 100%;
background-image: url("@/assets/img/DBQBmodel/手机背景.png"); background-image: url("@/assets/img/DBQBmodel/手机背景.png");
background-size: cover; background-size: cover;
background-position: center; background-position: center;
@ -263,11 +285,13 @@ const closeNoPermissionDialog = () => {
flex-direction: column; flex-direction: column;
justify-content: space-evenly; justify-content: space-evenly;
align-items: center; align-items: center;
overflow-x: hidden;
} }
.top-icon { .top-icon {
width: 80vw; width: 80vw;
margin-top: -1vh; margin-top: -1vh;
scale: 0.8;
} }
.sub-title { .sub-title {

1
src/views/Selectmodel.vue

@ -187,6 +187,7 @@ const goToEmotionsmodel = () => {
height: 150px; height: 150px;
width: 100%; width: 100%;
background-image: url("@/assets/img/Selectmodel/-s-夺宝奇兵logo.png"); background-image: url("@/assets/img/Selectmodel/-s-夺宝奇兵logo.png");
scale: 0.8;
} }
.btn-ai { .btn-ai {

107
src/views/components/emoEnergyConverter.vue

@ -5,7 +5,6 @@
<script setup> <script setup>
import { ref, onMounted, onBeforeUnmount, toRef, reactive } from 'vue' import { ref, onMounted, onBeforeUnmount, toRef, reactive } from 'vue'
import { useLanguage } from '@/utils/languageService' import { useLanguage } from '@/utils/languageService'
import { ElMessage } from 'element-plus'
import * as echarts from 'echarts' import * as echarts from 'echarts'
// import { text } from 'stream/consumers' // import { text } from 'stream/consumers'
// import { start } from 'repl' // import { start } from 'repl'
@ -20,8 +19,8 @@ let markLineRegions = reactive([])
const dataMax = ref(null) const dataMax = ref(null)
// //
function getNameTop(min, max, regionMin, regionMax, regionMiidle) { function getNameTop(min, max, regionMin, regionMax, regionMiidle) {
max = Math.min(max, regionMax)
min = Math.max(min, regionMin)
// max = Math.min(max, regionMax)
// min = Math.max(min, regionMin)
// console.log( // console.log(
// 'min', // 'min',
@ -40,10 +39,10 @@ function getNameTop(min, max, regionMin, regionMax, regionMiidle) {
const chartHeight = qxnlzhqEchartsInstance.getHeight() const chartHeight = qxnlzhqEchartsInstance.getHeight()
const topHeight = 40 const topHeight = 40
const bottomHeight = 60 const bottomHeight = 60
const dataZoomHeight = 20
const noHeight = topHeight + bottomHeight + dataZoomHeight
// console.log('%', ((max - Number(regionMiidle)) / (max - min)) * (chartHeight - noHeight))
// console.log(chartHeight)
const xDateFontSize = window.innerHeight > 769 ? 12 + 5 : 9 + 5
const noHeight = topHeight + bottomHeight + xDateFontSize
console.log('%', ((max - Number(regionMiidle)) / (max - min)) * (chartHeight - noHeight))
console.log('chartHeight', chartHeight)
// 60: x20: // 60: x20:
return ((max - Number(regionMiidle)) / (max - min)) * (chartHeight - noHeight) return ((max - Number(regionMiidle)) / (max - min)) * (chartHeight - noHeight)
// return 2.84 // return 2.84
@ -105,14 +104,16 @@ const generateGraphics = (min, max) => {
right: region.right, right: region.right,
top: top:
window.innerWidth > 769 window.innerWidth > 769
? 40 - 6 + getNameTop(min, max, regionMin, regionMax, safeY)
: 40 - 3 + getNameTop(min, max, regionMin, regionMax, safeY),
? 40 + getNameTop(min, max, regionMin, regionMax, safeY) - 6
: 40 + getNameTop(min, max, regionMin, regionMax, safeY) - 4.5,
// top: 40, // top: 40,
style: { style: {
text: region.name, text: region.name,
fill: region.fontColor, fill: region.fontColor,
fontSize: window.innerWidth > 769 ? 12 : 9, fontSize: window.innerWidth > 769 ? 12 : 9,
fontWeight: 'bold'
fontWeight: 'bold',
// 使
textVerticalAlign: 'middle'
}, },
z: 2 z: 2
}) })
@ -349,13 +350,21 @@ function initQXNLZHEcharts(kline, qxnlzhqData) {
} }
let markLineMax = Math.max( let markLineMax = Math.max(
Math.ceil(dataMax * 1.02),
qxnlzhqData.yl > 0 ? qxnlzhqData.yl : Math.ceil(dataMax * 1.02),
stopProfitPrice * 1.02
dataMax * 1.02,
stopProfitPrice * 1.02,
qxnlzhqData.cc,
qxnlzhqData.dd,
qxnlzhqData.gg,
qxnlzhqData.ht,
qxnlzhqData.js,
qxnlzhqData.qs,
qxnlzhqData.tp,
qxnlzhqData.yl,
qxnlzhqData.zc
) )
markLineRegions = regions.filter((region) => { markLineRegions = regions.filter((region) => {
return region.max < markLineMax
return region.max <= markLineMax
}) })
console.log('markLineMax', markLineMax, 'markLineRegions', markLineRegions) console.log('markLineMax', markLineMax, 'markLineRegions', markLineRegions)
@ -866,7 +875,8 @@ function initQXNLZHEcharts(kline, qxnlzhqData) {
borderColor: 'white' borderColor: 'white'
}, },
textStyle: { textStyle: {
color: 'white'
color: 'white',
fontSize: window.innerWidth > 769 ? 12 : 9
} }
}, },
{ {
@ -916,34 +926,67 @@ function initQXNLZHEcharts(kline, qxnlzhqData) {
// //
show: true, show: true,
color: 'white', color: 'white',
fontSize: window.innerWidth > 769 ? 12 : 9
fontSize: window.innerWidth > 769 ? 12 : 9,
formatter: function (value) {
return parseFloat(value.toFixed(2)).toString()
}
}, },
axisTick: { axisTick: {
// 线 // 线
show: true, show: true,
color: 'white' color: 'white'
}, },
min:
qxnlzhqData.dd < stopLossPrice * 0.98
? Math.floor(qxnlzhqData.dd)
: Math.floor(stopLossPrice * 0.98),
max: Math.round(
Math.max(
Math.ceil(dataMax * 1.02),
qxnlzhqData.yl > 0 ? qxnlzhqData.yl : Math.ceil(dataMax * 1.02),
stopProfitPrice * 1.02
)
// min:
// qxnlzhqData.dd < stopLossPrice * 0.98
// ? Math.floor(qxnlzhqData.dd)
// : Math.floor(stopLossPrice * 0.98),
// max: Math.round(
// Math.max(
// Math.ceil(dataMax * 1.02),
// qxnlzhqData.yl > 0 ? qxnlzhqData.yl : Math.ceil(dataMax * 1.02),
// stopProfitPrice * 1.02
// )
// )
min: Math.min(qxnlzhqData.dd, stopLossPrice * 0.98),
max: Math.max(
dataMax * 1.02,
stopProfitPrice * 1.02,
qxnlzhqData.cc,
qxnlzhqData.dd,
qxnlzhqData.gg,
qxnlzhqData.ht,
qxnlzhqData.js,
qxnlzhqData.qs,
qxnlzhqData.tp,
qxnlzhqData.yl,
qxnlzhqData.zc
) )
}, },
// //
// graphic: generateGraphics(
// qxnlzhqData.dd < stopLossPrice * 0.98
// ? Math.floor(qxnlzhqData.dd)
// : Math.floor(stopLossPrice * 0.98),
// Math.max(
// Math.ceil(dataMax * 1.02),
// qxnlzhqData.yl > 0 ? qxnlzhqData.yl : Math.ceil(dataMax * 1.02),
// stopProfitPrice * 1.02
// )
// ),
graphic: generateGraphics( graphic: generateGraphics(
qxnlzhqData.dd < stopLossPrice * 0.98
? Math.floor(qxnlzhqData.dd)
: Math.floor(stopLossPrice * 0.98),
Math.min(qxnlzhqData.dd, stopLossPrice * 0.98),
Math.max( Math.max(
Math.ceil(dataMax * 1.02),
qxnlzhqData.yl > 0 ? qxnlzhqData.yl : Math.ceil(dataMax * 1.02),
stopProfitPrice * 1.02
dataMax * 1.02,
stopProfitPrice * 1.02,
qxnlzhqData.cc,
qxnlzhqData.dd,
qxnlzhqData.gg,
qxnlzhqData.ht,
qxnlzhqData.js,
qxnlzhqData.qs,
qxnlzhqData.tp,
qxnlzhqData.yl,
qxnlzhqData.zc
) )
), ),
series: [ series: [

49
src/views/homePage.vue

@ -343,6 +343,23 @@ const closeTokenRuleDialog = () => {
tokenRuleDialogVisible.value = false; tokenRuleDialogVisible.value = false;
}; };
// 使
// 便
const handleGlobalClick = () => {
if (tokenRuleDialogVisible.value) {
tokenRuleDialogVisible.value = false;
}
};
onMounted(() => {
document.addEventListener('click', handleGlobalClick);
});
//
onUnmounted(() => {
document.removeEventListener('click', handleGlobalClick);
});
// Token // Token
const checkTokenRuleOnPageLoad = () => { const checkTokenRuleOnPageLoad = () => {
const activeTab = sessionStorage.getItem("activeTabAI"); const activeTab = sessionStorage.getItem("activeTabAI");
@ -1682,8 +1699,8 @@ onUnmounted(() => {
</el-dialog> </el-dialog>
<!-- Token规则提示框 --> <!-- Token规则提示框 -->
<div v-if="tokenRuleDialogVisible" class="tokenRuleDialog">
<div class="tokenRuleDialogContent">
<div v-if="tokenRuleDialogVisible" class="tokenRuleDialog" @click="closeTokenRuleDialog">
<div class="tokenRuleDialogContent" @click.stop>
<div class="tokenRuleDialogClose" @click="closeTokenRuleDialog"> <div class="tokenRuleDialogClose" @click="closeTokenRuleDialog">
<el-icon><Close /></el-icon> <el-icon><Close /></el-icon>
</div> </div>
@ -1691,30 +1708,16 @@ onUnmounted(() => {
<div class="tokenRuleSection"> <div class="tokenRuleSection">
<div class="tokenRuleSectionTitle">Token消耗规则</div> <div class="tokenRuleSectionTitle">Token消耗规则</div>
<div class="tokenRuleItem">
"夺宝奇兵大模型""AI情绪大模型"中搜索股票若搜索成功内容正常生成则会消耗1Token
</div>
<div class="tokenRuleItem">
"夺宝奇兵大模型""AI情绪大模型"中搜索股票若搜索有误无法生成内容则不会消耗Token
</div>
<div class="tokenRuleItem">
搜索同一只股票产出内容相同时只扣除1次Token
</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>
<div class="tokenRuleSection"> <div class="tokenRuleSection">
<div class="tokenRuleSectionTitle">Token兑换规则</div> <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>
<div class="tokenRuleNote"> <div class="tokenRuleNote">
@ -1830,7 +1833,7 @@ body {
/* height: var(--app-height, 100vh); */ /* height: var(--app-height, 100vh); */
height: var(--app-height, 100vh); height: var(--app-height, 100vh);
margin: 0 auto; margin: 0 auto;
background-image: url("https://d31zlh4on95l9h.cloudfront.net/images/2dc3c13a74100b906e809d26b66db211.png");
background-image: url("https://d31zlh4on95l9h.cloudfront.net/images/98c8230d386012c9f1e70bf05a30de5e.png");
background-size: 100% 100%; background-size: 100% 100%;
background-repeat: no-repeat; background-repeat: no-repeat;
background-position: center; background-position: center;

Loading…
Cancel
Save