Merge branch 'wangyi/feature-20251022162725-启动页登录注册' of http://39.101.133.168:8807/qimaohong/deepChartVueApp into dongqian/feature-20251022181325-deepmate简版
wangyi/feature-20251022162725-启动页登录注册
-
9.hbuilderx/launch.json
-
198components/DeepMate.vue
-
385components/MarketOverview.vue
-
192components/footerBar-cn.vue
-
52components/footerBar.vue
-
55components/login-prompt.vue
-
13manifest.json
-
102pages/deepMate/deepMate.vue
-
695pages/home/home.vue
-
499pages/start/Registration/Registration.vue
-
134pages/start/components/login-prompt/login-prompt.vue
-
1341pages/start/login/list.js
-
536pages/start/login/login.vue
-
BINstatic/flag/ad.png
-
BINstatic/flag/ae.png
-
BINstatic/flag/af.png
-
BINstatic/flag/ag.png
-
BINstatic/flag/ai.png
-
BINstatic/flag/al.png
-
BINstatic/flag/am.png
-
BINstatic/flag/an.png
-
BINstatic/flag/ao.png
-
BINstatic/flag/aq.png
-
BINstatic/flag/ar.png
-
BINstatic/flag/as.png
-
BINstatic/flag/at.png
-
BINstatic/flag/au.png
-
BINstatic/flag/aw.png
-
BINstatic/flag/ax.png
-
BINstatic/flag/az.png
-
BINstatic/flag/ba.png
-
BINstatic/flag/bb.png
-
BINstatic/flag/bd.png
-
BINstatic/flag/be.png
-
BINstatic/flag/bf.png
-
BINstatic/flag/bg.png
-
BINstatic/flag/bh.png
-
BINstatic/flag/bi.png
-
BINstatic/flag/bj.png
-
BINstatic/flag/bl.png
-
BINstatic/flag/bm.png
-
BINstatic/flag/bn.png
-
BINstatic/flag/bo.png
-
BINstatic/flag/bq.png
-
BINstatic/flag/br.png
-
BINstatic/flag/bs.png
-
BINstatic/flag/bt.png
-
BINstatic/flag/bv.png
-
BINstatic/flag/bw.png
-
BINstatic/flag/by.png
-
BINstatic/flag/bz.png
-
BINstatic/flag/ca.png
-
BINstatic/flag/cc.png
-
BINstatic/flag/cd.png
-
BINstatic/flag/cf.png
-
BINstatic/flag/cg.png
-
BINstatic/flag/ch.png
-
BINstatic/flag/ci.png
-
BINstatic/flag/ck.png
-
BINstatic/flag/cl.png
-
BINstatic/flag/cm.png
-
BINstatic/flag/cn.png
-
BINstatic/flag/co.png
-
BINstatic/flag/cr.png
-
BINstatic/flag/cu.png
-
BINstatic/flag/cv.png
-
BINstatic/flag/cw.png
-
BINstatic/flag/cx.png
-
BINstatic/flag/cy.png
-
BINstatic/flag/cz.png
-
BINstatic/flag/de.png
-
BINstatic/flag/dj.png
-
BINstatic/flag/dk.png
-
BINstatic/flag/dm.png
-
BINstatic/flag/do.png
-
BINstatic/flag/dz.png
-
BINstatic/flag/ec.png
-
BINstatic/flag/ee.png
-
BINstatic/flag/eg.png
-
BINstatic/flag/eh.png
-
BINstatic/flag/er.png
-
BINstatic/flag/es.png
-
BINstatic/flag/et.png
-
BINstatic/flag/eu.png
-
BINstatic/flag/fi.png
-
BINstatic/flag/fj.png
-
BINstatic/flag/fk.png
-
BINstatic/flag/fm.png
-
BINstatic/flag/fo.png
-
BINstatic/flag/fr.png
-
BINstatic/flag/ga.png
-
BINstatic/flag/gb-eng.png
-
BINstatic/flag/gb-nir.png
-
BINstatic/flag/gb-sct.png
-
BINstatic/flag/gb-wls.png
-
BINstatic/flag/gb.png
-
BINstatic/flag/gd.png
-
BINstatic/flag/ge.png
-
BINstatic/flag/gf.png
-
BINstatic/flag/gg.png
@ -0,0 +1,9 @@ |
|||||
|
{ |
||||
|
"version" : "1.0", |
||||
|
"configurations" : [ |
||||
|
{ |
||||
|
"playground" : "standard", |
||||
|
"type" : "uni-app:app-ios" |
||||
|
} |
||||
|
] |
||||
|
} |
||||
@ -0,0 +1,198 @@ |
|||||
|
<template> |
||||
|
<view class="deepmate"> |
||||
|
<view class="deepmate-container"> |
||||
|
<view class="deepmate-header"> |
||||
|
<view class="title-container"> |
||||
|
<view class="title-left"> |
||||
|
<text class="deepmate-title">DeepMate</text> |
||||
|
<text class="deepmate-subtitle">您的市场最佳顾问~</text> |
||||
|
</view> |
||||
|
<view class="title-right"> |
||||
|
<image class="deepmate-icon" src="https://d31zlh4on95l9h.cloudfront.net/images/7faa683450cc071bcc746fea8191ff6b.png" mode="aspectFit"></image> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
<view class="deepmate-content"> |
||||
|
<view class="deepmate-hotspots"> |
||||
|
<view class="deepmate-question"> |
||||
|
<text class="question-text">今日股票策略晨报</text> |
||||
|
</view> |
||||
|
<view class="hotspot-item"> |
||||
|
<text>热门股票分析</text> |
||||
|
</view> |
||||
|
<view class="hotspot-item"> |
||||
|
<text>行业趋势预测</text> |
||||
|
</view> |
||||
|
<view class="hotspot-item"> |
||||
|
<text>市场风险提示</text> |
||||
|
</view> |
||||
|
<view class="hotspot-item"> |
||||
|
<text>投资策略建议</text> |
||||
|
</view> |
||||
|
<view class="hotspot-item"> |
||||
|
<text>财经新闻解读</text> |
||||
|
</view> |
||||
|
</view> |
||||
|
<view class="deepmate-action"> |
||||
|
<input class="stock-input" type="text" placeholder="请输入股票代码/名称,获取AI洞察" /> |
||||
|
<view class="send-button-container"> |
||||
|
<image class="send-button" src="https://d31zlh4on95l9h.cloudfront.net/images/3da018821a5c82b06a1d6ddc81b960ac.png" mode="aspectFit"></image> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
export default { |
||||
|
name: 'DeepMate', |
||||
|
data() { |
||||
|
return { |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style> |
||||
|
/* DeepMate样式 */ |
||||
|
.deepmate-container { |
||||
|
background-color: #ffe6e6; |
||||
|
border-radius: 10px; |
||||
|
padding: 15px 15px 15px 15px; |
||||
|
margin: 0; |
||||
|
width: 100%; |
||||
|
box-sizing: border-box; |
||||
|
overflow: hidden; |
||||
|
} |
||||
|
|
||||
|
.deepmate-header { |
||||
|
margin-bottom: 10px; |
||||
|
} |
||||
|
|
||||
|
.title-container { |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
justify-content: space-between; |
||||
|
width: 100%; |
||||
|
} |
||||
|
|
||||
|
.title-left { |
||||
|
width: 50%; |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
} |
||||
|
|
||||
|
.title-right { |
||||
|
width: 50%; |
||||
|
display: flex; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
} |
||||
|
|
||||
|
.deepmate-title { |
||||
|
font-size: 18px; |
||||
|
font-weight: bold; |
||||
|
color: #ff4d4f; |
||||
|
display: block; |
||||
|
} |
||||
|
|
||||
|
.deepmate-icon { |
||||
|
width: 50px; |
||||
|
height: 50px; |
||||
|
margin-left: 0; |
||||
|
} |
||||
|
|
||||
|
.deepmate-subtitle { |
||||
|
font-size: 12px; |
||||
|
color: #666; |
||||
|
display: block; |
||||
|
margin-top: 5px; |
||||
|
} |
||||
|
|
||||
|
.deepmate-hotspots { |
||||
|
margin: 10px 0; |
||||
|
background-color: #ffffff; |
||||
|
border-radius: 10px; |
||||
|
padding: 10px; |
||||
|
} |
||||
|
|
||||
|
.deepmate-question { |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
margin-bottom: 10px; |
||||
|
padding-left: 10px; |
||||
|
position: relative; |
||||
|
} |
||||
|
|
||||
|
.deepmate-question:before { |
||||
|
content: ""; |
||||
|
position: absolute; |
||||
|
left: 0; |
||||
|
top: 0; |
||||
|
bottom: 0; |
||||
|
width: 4px; |
||||
|
background-color: #ff4d4f; |
||||
|
border-radius: 2px; |
||||
|
} |
||||
|
|
||||
|
.question-text { |
||||
|
font-size: 16px; |
||||
|
font-weight: bold; |
||||
|
color: #333; |
||||
|
} |
||||
|
|
||||
|
.hotspot-item { |
||||
|
background-color: #f5f5f5; |
||||
|
padding: 8px 12px; |
||||
|
border-radius: 6px; |
||||
|
margin-bottom: 8px; |
||||
|
} |
||||
|
|
||||
|
.hotspot-item text { |
||||
|
font-size: 14px; |
||||
|
color: #333; |
||||
|
} |
||||
|
|
||||
|
.deepmate-action { |
||||
|
display: flex; |
||||
|
justify-content: space-between; |
||||
|
align-items: center; |
||||
|
background-color: #ff4d4f; |
||||
|
padding: 8px 15px; |
||||
|
border-radius: 25px; |
||||
|
margin-top: 10px; |
||||
|
border: none; |
||||
|
} |
||||
|
|
||||
|
.stock-input { |
||||
|
flex: 1; |
||||
|
height: 36px; |
||||
|
font-size: 14px; |
||||
|
color: #ffffff; |
||||
|
padding: 0 10px; |
||||
|
border: none; |
||||
|
background-color: transparent; |
||||
|
} |
||||
|
|
||||
|
.stock-input::placeholder { |
||||
|
color: rgba(255, 255, 255, 0.8); |
||||
|
} |
||||
|
|
||||
|
.send-button-container { |
||||
|
display: flex; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
width: 36px; |
||||
|
height: 36px; |
||||
|
background-color: #ffffff; |
||||
|
border-radius: 50%; |
||||
|
margin-left: 10px; |
||||
|
} |
||||
|
|
||||
|
.send-button { |
||||
|
width: 20px; |
||||
|
height: 20px; |
||||
|
} |
||||
|
</style> |
||||
@ -0,0 +1,385 @@ |
|||||
|
<template> |
||||
|
<view> |
||||
|
<!-- 第一行:白色背景,标题和按钮 --> |
||||
|
<view class="market-header"> |
||||
|
<text class="section-title">今日市场概览</text> |
||||
|
<text class="more-btn" @click="showMarketSelector">{{ buttonText }}</text> |
||||
|
</view> |
||||
|
|
||||
|
<!-- 第二行:灰色圆角背景,市场数据 --> |
||||
|
<view class="market-content"> |
||||
|
<!-- 默认显示图片 --> |
||||
|
<view class="selected-market" v-if="!showForexMarket"> |
||||
|
<image class="market-image" src="https://d31zlh4on95l9h.cloudfront.net/images/dee46373b5593d5f315d91675a38fb61.png" mode="widthFix"></image> |
||||
|
</view> |
||||
|
|
||||
|
<!-- 外汇市场样式 --> |
||||
|
<view class="selected-market" v-if="showForexMarket"> |
||||
|
<view class="forex-market"> |
||||
|
<!-- 上部分:三个汇率容器 --> |
||||
|
<view class="forex-rates"> |
||||
|
<view class="forex-rate-item up"> |
||||
|
<text class="forex-pair">美元/日元</text> |
||||
|
<text class="forex-value">151.13</text> |
||||
|
<text class="forex-change">+1.62%</text> |
||||
|
</view> |
||||
|
<view class="forex-rate-item down"> |
||||
|
<text class="forex-pair">美元/韩元</text> |
||||
|
<text class="forex-value">1424.900</text> |
||||
|
<text class="forex-change">-2.92%</text> |
||||
|
</view> |
||||
|
<view class="forex-rate-item up"> |
||||
|
<text class="forex-pair">美元/英镑</text> |
||||
|
<text class="forex-value">0.730</text> |
||||
|
<text class="forex-change">+2.92%</text> |
||||
|
</view> |
||||
|
</view> |
||||
|
|
||||
|
<!-- 中部分:智能解读标题 --> |
||||
|
<view class="forex-analysis-title"> |
||||
|
<text class="analysis-title">智能解读</text> |
||||
|
</view> |
||||
|
|
||||
|
<!-- 下部分:智能解读内容 --> |
||||
|
<view class="forex-analysis-content"> |
||||
|
<view class="analysis-icon-container"> |
||||
|
<image class="analysis-brain-icon" src="https://d31zlh4on95l9h.cloudfront.net/images/8f35e54c52412467101370aa70d8fdb2.png" mode="aspectFit"></image> |
||||
|
</view> |
||||
|
<view class="analysis-items"> |
||||
|
<view class="analysis-item"> |
||||
|
<text class="analysis-dot orange"></text> |
||||
|
<text class="analysis-text">今日市场情报: 偏乐观</text> |
||||
|
</view> |
||||
|
<view class="analysis-item"> |
||||
|
<text class="analysis-dot blue"></text> |
||||
|
<text class="analysis-text">市场风险评级: 需警惕潜在风险</text> |
||||
|
</view> |
||||
|
<view class="analysis-item"> |
||||
|
<text class="analysis-dot green"></text> |
||||
|
<text class="analysis-text">早盘解析: 今日高开, 芯片、稀土、公共</text> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
|
||||
|
<!-- 市场选择对话框 --> |
||||
|
<uni-popup ref="marketPopup" type="center" :mask-click="true" @change="popupChange"> |
||||
|
<view class="market-dialog"> |
||||
|
<view class="dialog-title"> |
||||
|
<text>选择市场</text> |
||||
|
</view> |
||||
|
<view class="market-list"> |
||||
|
<view class="market-option" v-for="(market, index) in marketOptions" :key="index" @click="selectMarket(market.id)"> |
||||
|
<view class="market-flag"> |
||||
|
<image :src="market.flag" mode="aspectFit" class="flag-image"></image> |
||||
|
</view> |
||||
|
<view class="market-name-container"> |
||||
|
<text class="market-option-name">{{ market.name }}</text> |
||||
|
</view> |
||||
|
<view class="market-checkbox"> |
||||
|
<radio :checked="selectedMarket === market.id" color="#4080ff" /> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
<view class="dialog-buttons"> |
||||
|
<button class="confirm-btn" @click="confirmMarketSelection">确认</button> |
||||
|
</view> |
||||
|
</view> |
||||
|
</uni-popup> |
||||
|
</view> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
export default { |
||||
|
name: 'MarketOverview', |
||||
|
data() { |
||||
|
return { |
||||
|
selectedMarket: 'forex', |
||||
|
tempSelectedMarket: 'forex', // 临时选择,确认后才会应用 |
||||
|
previousMarket: null, |
||||
|
buttonText: '切换市场', |
||||
|
showSelector: false, |
||||
|
showForexMarket: false, // 默认不显示外汇市场内容 |
||||
|
marketOptions: [ |
||||
|
{ id: 'forex', name: '外汇市场', flag: '/static/c2.png', value: '+1.62%', trend: 'up' } |
||||
|
], |
||||
|
marketData: { |
||||
|
'forex': { |
||||
|
name: '外汇市场', |
||||
|
value: '+1.62%', |
||||
|
trend: 'up', |
||||
|
indicators: [ |
||||
|
{ name: '美元/日元', value: '151.13 +1.62%', trend: 'up' }, |
||||
|
{ name: '美元/韩元', value: '1424.900 -2.92%', trend: 'down' }, |
||||
|
{ name: '美元/英镑', value: '0.79 +2.92%', trend: 'up' } |
||||
|
] |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
methods: { |
||||
|
showMarketSelector() { |
||||
|
// 切换显示外汇市场内容 |
||||
|
this.showForexMarket = !this.showForexMarket; |
||||
|
// 更新按钮文本 |
||||
|
this.buttonText = this.showForexMarket ? '外汇市场' : '切换市场'; |
||||
|
}, |
||||
|
popupChange(e) { |
||||
|
// 对话框关闭时,如果没有确认,则恢复原来的选择 |
||||
|
if (!e.show && this.tempSelectedMarket !== this.selectedMarket) { |
||||
|
this.tempSelectedMarket = this.selectedMarket; |
||||
|
} |
||||
|
}, |
||||
|
selectMarket(marketId) { |
||||
|
// 临时选择市场,不立即应用 |
||||
|
this.tempSelectedMarket = marketId; |
||||
|
}, |
||||
|
confirmMarketSelection() { |
||||
|
// 确认选择,应用市场选择并关闭对话框 |
||||
|
this.selectedMarket = this.tempSelectedMarket; |
||||
|
this.showSelector = false; |
||||
|
this.$refs.marketPopup.close(); |
||||
|
}, |
||||
|
getSelectedMarketName() { |
||||
|
if (!this.selectedMarket) return ''; |
||||
|
return this.marketData[this.selectedMarket].name; |
||||
|
}, |
||||
|
getSelectedMarketValue() { |
||||
|
if (!this.selectedMarket) return ''; |
||||
|
return this.marketData[this.selectedMarket].value; |
||||
|
}, |
||||
|
getSelectedMarketTrend() { |
||||
|
if (!this.selectedMarket) return ''; |
||||
|
return this.marketData[this.selectedMarket].trend; |
||||
|
}, |
||||
|
getSelectedMarketIndicators() { |
||||
|
if (!this.selectedMarket) return []; |
||||
|
return this.marketData[this.selectedMarket].indicators; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style> |
||||
|
/* 市场概览样式 */ |
||||
|
.market-header { |
||||
|
display: flex; |
||||
|
justify-content: space-between; |
||||
|
align-items: center; |
||||
|
padding: 10px 15px; |
||||
|
background-color: #ffffff; |
||||
|
} |
||||
|
|
||||
|
.section-title { |
||||
|
font-size: 16px; |
||||
|
font-weight: bold; |
||||
|
color: #333; |
||||
|
} |
||||
|
|
||||
|
.more-btn { |
||||
|
font-size: 14px; |
||||
|
color: #4080ff; |
||||
|
} |
||||
|
|
||||
|
.market-content { |
||||
|
margin: 0 0 15px; |
||||
|
background-color: #f5f7fa; |
||||
|
border-radius: 8px; |
||||
|
overflow: hidden; |
||||
|
} |
||||
|
|
||||
|
/* 外汇市场样式 */ |
||||
|
.forex-market { |
||||
|
padding: 15px; |
||||
|
} |
||||
|
|
||||
|
.forex-rates { |
||||
|
display: flex; |
||||
|
justify-content: space-between; |
||||
|
gap: 10px; |
||||
|
margin-bottom: 15px; |
||||
|
} |
||||
|
|
||||
|
.forex-rate-item { |
||||
|
width: 30%; |
||||
|
padding: 10px; |
||||
|
border-radius: 6px; |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
align-items: center; |
||||
|
} |
||||
|
|
||||
|
.forex-rate-item.up { |
||||
|
background-color: rgba(82, 196, 26, 0.1); |
||||
|
border: 1px solid #52c41a; |
||||
|
} |
||||
|
|
||||
|
.forex-rate-item.down { |
||||
|
background-color: rgba(245, 34, 45, 0.1); |
||||
|
border: 1px solid #f5222d; |
||||
|
} |
||||
|
|
||||
|
.forex-pair { |
||||
|
font-size: 12px; |
||||
|
color: #666; |
||||
|
margin-bottom: 5px; |
||||
|
} |
||||
|
|
||||
|
.forex-value { |
||||
|
font-size: 16px; |
||||
|
font-weight: bold; |
||||
|
color: #333; |
||||
|
margin-bottom: 5px; |
||||
|
} |
||||
|
|
||||
|
.forex-change { |
||||
|
font-size: 12px; |
||||
|
color: #52c41a; |
||||
|
} |
||||
|
|
||||
|
.forex-rate-item.down .forex-change { |
||||
|
color: #f5222d; |
||||
|
} |
||||
|
|
||||
|
.forex-analysis-title { |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
margin-bottom: 10px; |
||||
|
border-left: 3px solid #f5222d; |
||||
|
padding-left: 8px; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
.analysis-title { |
||||
|
font-size: 14px; |
||||
|
font-weight: bold; |
||||
|
color: #333; |
||||
|
} |
||||
|
|
||||
|
.forex-analysis-content { |
||||
|
display: flex; |
||||
|
background-color: #fff; |
||||
|
border-radius: 6px; |
||||
|
padding: 12px; |
||||
|
} |
||||
|
|
||||
|
.analysis-icon-container { |
||||
|
width: 40px; |
||||
|
height: 40px; |
||||
|
margin-right: 10px; |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
justify-content: center; |
||||
|
align-self: center; |
||||
|
} |
||||
|
|
||||
|
.analysis-brain-icon { |
||||
|
width: 100%; |
||||
|
height: 100%; |
||||
|
} |
||||
|
|
||||
|
.analysis-items { |
||||
|
flex: 1; |
||||
|
} |
||||
|
|
||||
|
.analysis-item { |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
margin-bottom: 8px; |
||||
|
} |
||||
|
|
||||
|
.analysis-item:last-child { |
||||
|
margin-bottom: 0; |
||||
|
} |
||||
|
|
||||
|
.analysis-dot { |
||||
|
width: 8px; |
||||
|
height: 8px; |
||||
|
border-radius: 50%; |
||||
|
margin-right: 8px; |
||||
|
} |
||||
|
|
||||
|
.analysis-dot.orange { |
||||
|
background-color: #fa8c16; |
||||
|
} |
||||
|
|
||||
|
.analysis-dot.blue { |
||||
|
background-color: #1890ff; |
||||
|
} |
||||
|
|
||||
|
.analysis-dot.green { |
||||
|
background-color: #52c41a; |
||||
|
} |
||||
|
|
||||
|
.analysis-text { |
||||
|
font-size: 12px; |
||||
|
color: #333; |
||||
|
line-height: 1.4; |
||||
|
} |
||||
|
|
||||
|
/* 市场选择对话框样式 */ |
||||
|
.market-dialog { |
||||
|
width: 300px; |
||||
|
background-color: #fff; |
||||
|
border-radius: 10px; |
||||
|
overflow: hidden; |
||||
|
} |
||||
|
|
||||
|
.dialog-title { |
||||
|
padding: 15px; |
||||
|
text-align: center; |
||||
|
border-bottom: 1px solid #eee; |
||||
|
} |
||||
|
|
||||
|
.market-list { |
||||
|
max-height: 300px; |
||||
|
overflow-y: auto; |
||||
|
} |
||||
|
|
||||
|
.market-option { |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
padding: 12px 15px; |
||||
|
border-bottom: 1px solid #f5f5f5; |
||||
|
} |
||||
|
|
||||
|
.market-flag { |
||||
|
width: 24px; |
||||
|
height: 24px; |
||||
|
margin-right: 10px; |
||||
|
} |
||||
|
|
||||
|
.flag-image { |
||||
|
width: 100%; |
||||
|
height: 100%; |
||||
|
border-radius: 50%; |
||||
|
} |
||||
|
|
||||
|
.market-name-container { |
||||
|
flex: 1; |
||||
|
} |
||||
|
|
||||
|
.market-option-name { |
||||
|
font-size: 14px; |
||||
|
color: #333; |
||||
|
} |
||||
|
|
||||
|
.dialog-buttons { |
||||
|
padding: 10px 15px 15px; |
||||
|
display: flex; |
||||
|
justify-content: center; |
||||
|
} |
||||
|
|
||||
|
.confirm-btn { |
||||
|
width: 80%; |
||||
|
height: 40px; |
||||
|
line-height: 40px; |
||||
|
text-align: center; |
||||
|
background-color: #4080ff; |
||||
|
color: #fff; |
||||
|
border-radius: 20px; |
||||
|
font-size: 14px; |
||||
|
} |
||||
|
</style> |
||||
@ -0,0 +1,192 @@ |
|||||
|
<template> |
||||
|
<view class="static-footer-bar" :style="{ 'padding-bottom': safeAreaInsets.bottom + 'px' }"> |
||||
|
<view class="static-footer-li" @click="tabChange(1)"> |
||||
|
<image src="../static/footBar-image/home.png" class="static-footer-li-icon" v-if="type != 'home'"></image> |
||||
|
<image src="../static/footBar-image/home-selected.png" class="static-footer-li-icon" v-if="type == 'home'"></image> |
||||
|
<view :class="type == 'home' ? 'static-footer-li-title1' : 'static-footer-li-title'"> |
||||
|
首页</view> |
||||
|
</view> |
||||
|
<view class="static-footer-li" @click="tabChange(2)"> |
||||
|
<image src="../static/footBar-image/marketSituation.png" class="static-footer-li-icon" v-if="type != 'marketSituation'"> |
||||
|
</image> |
||||
|
<image src="../static/footBar-image/marketSituation-selected.png" class="static-footer-li-icon" |
||||
|
v-if="type == 'marketSituation'"></image> |
||||
|
<view :class="type == 'marketSituation' ? 'static-footer-li-title1' : 'static-footer-li-title'"> |
||||
|
行情</view> |
||||
|
</view> |
||||
|
<view class="static-footer-li static-footer-li-special" @click="tabChange(3)"> |
||||
|
<image src="../static/footBar-image/deepMate.png" class="static-footer-li-icon static-footer-li-icon-special" v-if="type != 'deepMate'"></image> |
||||
|
<image src="../static/footBar-image/deepMate-selected.png" class="static-footer-li-icon static-footer-li-icon-special" v-if="type == 'deepMate'"> |
||||
|
</image> |
||||
|
<view :class="type == 'deepMate' ? 'static-footer-li-title1' : 'static-footer-li-title'"> |
||||
|
DeepMate</view> |
||||
|
</view> |
||||
|
<view class="static-footer-li" @click="tabChange(4)"> |
||||
|
<image src="../static/footBar-image/deepExploration.png" class="static-footer-li-icon" v-if="type != 'deepExploration'"> |
||||
|
</image> |
||||
|
<image src="../static/footBar-image/deepExploration-selected.png" class="static-footer-li-icon" |
||||
|
v-if="type == 'deepExploration'"></image> |
||||
|
<view :class="type == 'deepExploration' ? 'static-footer-li-title1' : 'static-footer-li-title'"> |
||||
|
深度探索</view> |
||||
|
</view> |
||||
|
<view class="static-footer-li" @click="tabChange(5)"> |
||||
|
<image src="../static/footBar-image/member.png" class="static-footer-li-icon" v-if="type != 'member'"></image> |
||||
|
<image src="../static/footBar-image/member-selected.png" class="static-footer-li-icon" v-if="type == 'member'"></image> |
||||
|
<view :class="type == 'member' ? 'static-footer-li-title1' : 'static-footer-li-title'"> |
||||
|
我的</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</template> |
||||
|
|
||||
|
<script setup> |
||||
|
import { computed, onMounted } from 'vue' |
||||
|
|
||||
|
// 定义 props |
||||
|
const props = defineProps({ |
||||
|
type: { |
||||
|
type: String, |
||||
|
default: '' |
||||
|
} |
||||
|
}) |
||||
|
|
||||
|
// 计算属性:获取安全区域 |
||||
|
const safeAreaInsets = computed(() => { |
||||
|
// 获取系统信息中的安全区域 |
||||
|
const systemInfo = uni.getSystemInfoSync() |
||||
|
return { |
||||
|
bottom: systemInfo.safeAreaInsets?.bottom || 0 |
||||
|
} |
||||
|
}) |
||||
|
|
||||
|
// 方法:标签切换 |
||||
|
const tabChange = (value) => { |
||||
|
// console.log(value) |
||||
|
if (value == 1) { //首页 |
||||
|
uni.redirectTo({ |
||||
|
url: '/pages/home/home', |
||||
|
animationType: 'fade-in' |
||||
|
}) |
||||
|
} else if (value == 2) { //行情 |
||||
|
uni.redirectTo({ |
||||
|
url: '/pages/home/marketSituation', |
||||
|
animationType: 'fade-in' |
||||
|
}) |
||||
|
} else if (value == 3) { //DeepMate |
||||
|
uni.redirectTo({ |
||||
|
url: '/pages/deepMate/deepMate', |
||||
|
animationType: 'fade-in' |
||||
|
}) |
||||
|
} else if (value == 4) { //深度探索 |
||||
|
if (props.type == 'deepExploration') return; |
||||
|
uni.redirectTo({ |
||||
|
url: '/pages/home/deepExploration', |
||||
|
animationType: 'fade-in' |
||||
|
}) |
||||
|
} else if (value == 5) { //我的 |
||||
|
if (props.type == 'member') return; |
||||
|
uni.redirectTo({ |
||||
|
url: '/pages/home/member', |
||||
|
animationType: 'fade-in' |
||||
|
}) |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// 生命周期 |
||||
|
onMounted(() => { |
||||
|
// 组件挂载后的逻辑 |
||||
|
}) |
||||
|
</script> |
||||
|
|
||||
|
<style scoped> |
||||
|
.static-footer-bar { |
||||
|
width: 100%; |
||||
|
height: 120rpx; |
||||
|
border-top: 1px solid #E2E2E2; |
||||
|
background: #fff; |
||||
|
position: relative; |
||||
|
} |
||||
|
|
||||
|
.static-footer-li { |
||||
|
display: inline-block; |
||||
|
width: 20%; |
||||
|
height: 100%; |
||||
|
text-align: center; |
||||
|
position: relative; |
||||
|
transform: translateY(-12rpx); |
||||
|
} |
||||
|
|
||||
|
.static-footer-li-icon { |
||||
|
width: 46rpx; |
||||
|
height: 46rpx; |
||||
|
margin: 12rpx 0; |
||||
|
} |
||||
|
|
||||
|
/* 中间导航项的特殊样式 */ |
||||
|
.static-footer-li-special { |
||||
|
position: relative; |
||||
|
z-index: 10; |
||||
|
} |
||||
|
|
||||
|
.static-footer-li-icon-special { |
||||
|
width: 95rpx !important; |
||||
|
height: 95rpx !important; |
||||
|
margin: 0rpx 0 !important; |
||||
|
border-radius: 50rpx; |
||||
|
box-shadow: 0 6rpx 20rpx rgba(0, 0, 0, 0.2); |
||||
|
transform: translateY(-12rpx); |
||||
|
transition: all 0.3s ease; |
||||
|
} |
||||
|
|
||||
|
.static-footer-li-title { |
||||
|
width: 100%; |
||||
|
height: 40rpx; |
||||
|
line-height: 40rpx; |
||||
|
font-size: 24rpx; |
||||
|
text-align: center; |
||||
|
margin-top: -20rpx; |
||||
|
color: gray; |
||||
|
} |
||||
|
|
||||
|
.static-footer-li-title1 { |
||||
|
width: 100%; |
||||
|
height: 40rpx; |
||||
|
line-height: 40rpx; |
||||
|
font-size: 24rpx; |
||||
|
text-align: center; |
||||
|
margin-top: -20rpx; |
||||
|
color: black; |
||||
|
} |
||||
|
|
||||
|
.unreadNum { |
||||
|
position: absolute; |
||||
|
right: 15%; |
||||
|
background-color: #f00; |
||||
|
color: #fff; |
||||
|
font-size: 24rpx; |
||||
|
padding: 0 6rpx; |
||||
|
height: 36rpx; |
||||
|
line-height: 36rpx; |
||||
|
min-width: 36rpx; |
||||
|
border-radius: 18rpx; |
||||
|
z-index: 9; |
||||
|
} |
||||
|
|
||||
|
.taskNew { |
||||
|
position: absolute; |
||||
|
right: 15%; |
||||
|
height: 30rpx; |
||||
|
z-index: 9; |
||||
|
} |
||||
|
|
||||
|
.homeWorkUnRead { |
||||
|
position: absolute; |
||||
|
right: 30%; |
||||
|
top: 10%; |
||||
|
background-color: #f00; |
||||
|
color: #fff; |
||||
|
height: 12rpx; |
||||
|
width: 12rpx; |
||||
|
border-radius: 6rpx; |
||||
|
z-index: 9; |
||||
|
} |
||||
|
</style> |
||||
@ -1,134 +0,0 @@ |
|||||
<template> |
|
||||
<view class="login-prompt" v-if="showPrompt"> |
|
||||
<view class="mask" :class="{ 'mask-show': showAnimation }" @click="hide"></view> |
|
||||
<view class="prompt-content" :class="{ 'slide-up': showAnimation }"> |
|
||||
<text class="prompt-title">登录以获得更好的体验</text> |
|
||||
<button class="login-btn" @click="goLogin">登录(推荐)</button> |
|
||||
<button class="visitor-btn" @click="continueAsVisitor">以访客身份继续</button> |
|
||||
</view> |
|
||||
</view> |
|
||||
</template> |
|
||||
|
|
||||
<script setup> |
|
||||
import { ref, nextTick } from 'vue'; |
|
||||
|
|
||||
// 定义响应式数据 |
|
||||
const showPrompt = ref(false); |
|
||||
const showAnimation = ref(false); |
|
||||
|
|
||||
// 显示弹窗 |
|
||||
const show = () => { |
|
||||
showPrompt.value = true; |
|
||||
// 在下一帧触发动画 |
|
||||
nextTick(() => { |
|
||||
setTimeout(() => { |
|
||||
showAnimation.value = true; |
|
||||
}, 10); |
|
||||
}); |
|
||||
}; |
|
||||
|
|
||||
// 隐藏弹窗 |
|
||||
const hide = () => { |
|
||||
showAnimation.value = false; |
|
||||
// 等待动画结束后再隐藏 |
|
||||
setTimeout(() => { |
|
||||
showPrompt.value = false; |
|
||||
}, 300); |
|
||||
}; |
|
||||
|
|
||||
// 跳转到登录页面 |
|
||||
const goLogin = () => { |
|
||||
uni.navigateTo({ |
|
||||
url: '/pages/login/login' |
|
||||
}); |
|
||||
hide(); |
|
||||
}; |
|
||||
|
|
||||
// 以访客身份继续 |
|
||||
const continueAsVisitor = () => { |
|
||||
// 设置访客模式 |
|
||||
uni.setStorageSync('visitorMode', true); |
|
||||
hide(); |
|
||||
}; |
|
||||
|
|
||||
// 暴露方法给外部使用 |
|
||||
defineExpose({ |
|
||||
show, |
|
||||
hide |
|
||||
}); |
|
||||
</script> |
|
||||
|
|
||||
<style scoped> |
|
||||
.login-prompt { |
|
||||
position: fixed; |
|
||||
top: 0; |
|
||||
left: 0; |
|
||||
right: 0; |
|
||||
bottom: 0; |
|
||||
z-index: 999; |
|
||||
} |
|
||||
|
|
||||
.mask { |
|
||||
position: absolute; |
|
||||
top: 0; |
|
||||
left: 0; |
|
||||
right: 0; |
|
||||
bottom: 0; |
|
||||
background-color: rgba(0, 0, 0, 0.8); |
|
||||
opacity: 0; |
|
||||
transition: opacity 0.3s ease; |
|
||||
} |
|
||||
|
|
||||
.mask.mask-show { |
|
||||
opacity: 1; |
|
||||
} |
|
||||
|
|
||||
.prompt-content { |
|
||||
position: absolute; |
|
||||
bottom: 0; |
|
||||
left: 0; |
|
||||
right: 0; |
|
||||
height: 300rpx; |
|
||||
border-radius: 20rpx 20rpx 0 0; |
|
||||
background-color: white; |
|
||||
padding: 20rpx 30rpx; |
|
||||
transform: translateY(100%); |
|
||||
transition: transform 0.3s ease; |
|
||||
box-shadow: 0 -4px 20px rgba(0, 0, 0, 0.3); |
|
||||
} |
|
||||
|
|
||||
.prompt-content.slide-up { |
|
||||
transform: translateY(0); |
|
||||
} |
|
||||
|
|
||||
.prompt-title { |
|
||||
display: block; |
|
||||
text-align: left; |
|
||||
font-size: 28rpx; |
|
||||
font-weight: 700; |
|
||||
color: #333; |
|
||||
margin-top: 10rpx; |
|
||||
margin-bottom: 30rpx; |
|
||||
} |
|
||||
|
|
||||
.login-btn { |
|
||||
width: 100%; |
|
||||
height: 80rpx; |
|
||||
background-color:rgb(35, 84, 230); |
|
||||
color: white; |
|
||||
font-size: 32rpx; |
|
||||
line-height: 80rpx; |
|
||||
border-radius: 40rpx; |
|
||||
margin-bottom: 20rpx; |
|
||||
} |
|
||||
|
|
||||
.visitor-btn { |
|
||||
width: 100%; |
|
||||
height: 80rpx; |
|
||||
background-color: #f5f5f5; |
|
||||
color: #333; |
|
||||
font-size: 32rpx; |
|
||||
line-height: 80rpx; |
|
||||
border-radius: 40rpx; |
|
||||
} |
|
||||
</style> |
|
||||
1341
pages/start/login/list.js
File diff suppressed because it is too large
View File
|
After Width: 100 | Height: 70 | Size: 2.1 KiB |
|
After Width: 100 | Height: 50 | Size: 170 B |
|
After Width: 100 | Height: 67 | Size: 2.6 KiB |
|
After Width: 100 | Height: 67 | Size: 2.0 KiB |
|
After Width: 100 | Height: 50 | Size: 1.3 KiB |
|
After Width: 100 | Height: 71 | Size: 1.7 KiB |
|
After Width: 100 | Height: 50 | Size: 122 B |
|
After Width: 100 | Height: 67 | Size: 610 B |
|
After Width: 100 | Height: 67 | Size: 1.4 KiB |
|
After Width: 100 | Height: 100 | Size: 6.0 KiB |
|
After Width: 100 | Height: 63 | Size: 991 B |
|
After Width: 100 | Height: 50 | Size: 2.0 KiB |
|
After Width: 100 | Height: 67 | Size: 133 B |
|
After Width: 100 | Height: 50 | Size: 1.1 KiB |
|
After Width: 100 | Height: 67 | Size: 658 B |
|
After Width: 100 | Height: 65 | Size: 279 B |
|
After Width: 100 | Height: 50 | Size: 451 B |
|
After Width: 100 | Height: 50 | Size: 741 B |
|
After Width: 100 | Height: 67 | Size: 791 B |
|
After Width: 100 | Height: 60 | Size: 367 B |
|
After Width: 100 | Height: 87 | Size: 168 B |
|
After Width: 100 | Height: 67 | Size: 560 B |
|
After Width: 100 | Height: 60 | Size: 106 B |
|
After Width: 100 | Height: 60 | Size: 303 B |
|
After Width: 100 | Height: 60 | Size: 1.3 KiB |
|
After Width: 100 | Height: 67 | Size: 169 B |
|
After Width: 100 | Height: 67 | Size: 6.2 KiB |
|
After Width: 100 | Height: 50 | Size: 2.0 KiB |
|
After Width: 100 | Height: 50 | Size: 2.3 KiB |
|
After Width: 100 | Height: 68 | Size: 1.4 KiB |
|
After Width: 100 | Height: 67 | Size: 159 B |
|
After Width: 100 | Height: 70 | Size: 2.0 KiB |
|
After Width: 100 | Height: 50 | Size: 553 B |
|
After Width: 100 | Height: 67 | Size: 4.0 KiB |
|
After Width: 100 | Height: 73 | Size: 260 B |
|
After Width: 100 | Height: 67 | Size: 172 B |
|
After Width: 100 | Height: 50 | Size: 1.4 KiB |
|
After Width: 100 | Height: 67 | Size: 5.6 KiB |
|
After Width: 100 | Height: 50 | Size: 765 B |
|
After Width: 100 | Height: 50 | Size: 1.3 KiB |
|
After Width: 100 | Height: 75 | Size: 796 B |
|
After Width: 100 | Height: 67 | Size: 554 B |
|
After Width: 100 | Height: 67 | Size: 354 B |
|
After Width: 100 | Height: 100 | Size: 172 B |
|
After Width: 100 | Height: 67 | Size: 165 B |
|
After Width: 100 | Height: 50 | Size: 1.9 KiB |
|
After Width: 100 | Height: 67 | Size: 517 B |
|
After Width: 100 | Height: 67 | Size: 482 B |
|
After Width: 100 | Height: 67 | Size: 763 B |
|
After Width: 100 | Height: 67 | Size: 158 B |
|
After Width: 100 | Height: 60 | Size: 109 B |
|
After Width: 100 | Height: 50 | Size: 793 B |
|
After Width: 100 | Height: 59 | Size: 1.0 KiB |
|
After Width: 100 | Height: 67 | Size: 633 B |
|
After Width: 100 | Height: 50 | Size: 1.5 KiB |
|
After Width: 100 | Height: 67 | Size: 1.6 KiB |
|
After Width: 100 | Height: 67 | Size: 394 B |
|
After Width: 100 | Height: 60 | Size: 106 B |
|
After Width: 100 | Height: 67 | Size: 1.1 KiB |
|
After Width: 100 | Height: 76 | Size: 200 B |
|
After Width: 100 | Height: 50 | Size: 1.2 KiB |
|
After Width: 100 | Height: 67 | Size: 700 B |
|
After Width: 100 | Height: 67 | Size: 891 B |
|
After Width: 100 | Height: 67 | Size: 2.5 KiB |
|
After Width: 100 | Height: 64 | Size: 158 B |
|
After Width: 100 | Height: 67 | Size: 1.1 KiB |
|
After Width: 100 | Height: 50 | Size: 656 B |
|
After Width: 100 | Height: 50 | Size: 1.4 KiB |
|
After Width: 100 | Height: 67 | Size: 1.7 KiB |
|
After Width: 100 | Height: 50 | Size: 1.3 KiB |
|
After Width: 100 | Height: 67 | Size: 1.4 KiB |
|
After Width: 100 | Height: 61 | Size: 186 B |
|
After Width: 100 | Height: 50 | Size: 1.8 KiB |
|
After Width: 100 | Height: 50 | Size: 2.2 KiB |
|
After Width: 100 | Height: 53 | Size: 595 B |
|
After Width: 100 | Height: 73 | Size: 260 B |
|
After Width: 100 | Height: 67 | Size: 165 B |
|
After Width: 100 | Height: 75 | Size: 109 B |
|
After Width: 100 | Height: 60 | Size: 99 B |
|
After Width: 100 | Height: 50 | Size: 545 B |
|
After Width: 100 | Height: 60 | Size: 468 B |
|
After Width: 100 | Height: 60 | Size: 5.6 KiB |
|
After Width: 100 | Height: 50 | Size: 545 B |
|
After Width: 100 | Height: 60 | Size: 1.5 KiB |
|
After Width: 100 | Height: 67 | Size: 750 B |
|
After Width: 100 | Height: 67 | Size: 738 B |
|
After Width: 100 | Height: 67 | Size: 306 B |