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 |