Browse Source

Merge branch 'milestone-20251031-简版功能开发' of http://39.101.133.168:8807/qimaohong/deepChartVueApp into milestone-20251031-简版功能开发

dongqian/feature-20251022181325-deepmate简版
宋杰 3 weeks ago
parent
commit
ed2b5d269c
  1. 4
      .hbuilderx/launch.json
  2. 2
      api/tcpConnection.js
  3. 3
      pages.json
  4. 17
      pages/deepExploration/MainForceActions.vue
  5. 147
      pages/deepExploration/deepExploration.vue
  6. 46
      pages/deepExploration/stockSelectDetail.vue
  7. 16
      pages/deepMate/deepMate.vue
  8. BIN
      static/deepExploration-images/1.png
  9. BIN
      static/deepExploration-images/2.png
  10. BIN
      static/deepExploration-images/3.png
  11. BIN
      static/deepExploration-images/4.png
  12. BIN
      static/deepExploration-images/history.png
  13. BIN
      static/deepExploration-images/icon1.png
  14. BIN
      static/deepExploration-images/icon2.png
  15. BIN
      static/deepExploration-images/icon3.png
  16. BIN
      static/deepExploration-images/icon4.png
  17. BIN
      static/deepExploration-images/kLineAll.png
  18. BIN
      static/deepExploration-images/notice.png
  19. BIN
      static/deepExploration-images/search.png
  20. 185
      static/images/welcomeRobot.svg

4
.hbuilderx/launch.json

@ -2,9 +2,9 @@
"version" : "1.0",
"configurations" : [
{
"customPlaygroundType" : "local",
"customPlaygroundType" : "device",
"packageName" : "io.dcloud.HBuilder",
"playground" : "custom",
"playground" : "standard",
"type" : "uni-app:app-android"
}
]

2
api/tcpConnection.js

@ -6,7 +6,7 @@
*/
// 引用TCP插件
const TCPSocket = uni.requireNativePlugin('Aimer-TCPPlugin');
// const TCPSocket = uni.requireNativePlugin('Aimer-TCPPlugin');
// const TCPSocket = uni.requireNativePlugin("Aimer-TCPPlugin");
// TCP连接配置

3
pages.json

@ -295,7 +295,8 @@
"navigationStyle": "custom",
"disableSwipeBack": true,
"titleNView": false,
"bounce": false
"bounce": false,
"pageOrientation": "auto"
}
},
{

17
pages/deepExploration/MainForceActions.vue

@ -7,7 +7,7 @@
<view class="search">
<input v-model="searchName" class="searchInput" type="text" placeholder="请输入股票名称、股票代码"
placeholder-style="color: #A6A6A6; font-size: 22rpx;" />
placeholder-style="color: #A6A6A6; font-size: 28rpx;" />
<image @click="searchStock" class="seachIcon" src="/static/deepExploration-images/search.png"
mode="aspectFill"></image>
</view>
@ -41,6 +41,7 @@
<qiun-data-charts type="candle" :opts="opts" :chartData="chartData" :disableScroll="true"
:ontouch="true" :onzoom="true" :key="chartKey" />
</view>
<image src="/static/deepExploration-images/kLineAll.png" mode="aspectFill"></image>
</view>
</view>
<view class="txt">
@ -549,7 +550,6 @@
onMounted(async () => {
iSMT.value = uni.getSystemInfoSync().statusBarHeight
getUserInfo()
await getServerData() //
await handleModels()
unwatch = watch(
@ -635,6 +635,7 @@
.searchInput {
color: #111;
width: 100%;
}
}
@ -767,8 +768,17 @@
}
.graph_content {
position: relative;
min-height: 500rpx;
image{
position: absolute;
bottom: 20rpx;
right: 30rpx;
width: 48rpx;
height: 48rpx;
}
.charts-box {
width: 100%;
height: 100%;
@ -791,9 +801,10 @@
}
text {
margin-left: 5rpx;
background-color: #FFFFFF;
color: #000000;
padding: 0 22rpx;
padding: 5rpx 22rpx;
border-radius: 22rpx;
font-size: 28rpx;
font-weight: 400;

147
pages/deepExploration/deepExploration.vue

@ -15,7 +15,7 @@
<!-- 四大功能模块 -->
<view class="select">
<view class="selectItem" @click="toMain('主力追踪')">
<image class="img" src="/static/deepExploration-images/icon3.png" mode="aspectFill"></image>
<image class="img" src="/static/deepExploration-images/icon1.png" mode="aspectFill"></image>
<view class="txt">主力追踪</view>
</view>
<view class="selectItem" @click="toMain('主力雷达')">
@ -23,7 +23,7 @@
<view class="txt">主力雷达</view>
</view>
<view class="selectItem" @click="toMain('主力解码')">
<image class="img" src="/static/deepExploration-images/icon1.png" mode="aspectFill"></image>
<image class="img" src="/static/deepExploration-images/icon3.png" mode="aspectFill"></image>
<view class="txt">主力解码</view>
</view>
<view class="selectItem" @click="toMain('主力资金流')">
@ -45,66 +45,78 @@
</view>
</view>
<view class="stockSelection_content">
<view class="selectionItem" @click="viewAll">
<view class="header">
<view class="left">
<image src="/static/deepExploration-images/plus.png" mode="aspectFill"></image>
<text>抄底卖顶</text>
</view>
<view class="right">
<image src="/static/deepExploration-images/Americle.png" mode="aspectFill"></image>
<text>美股</text>
</view>
</view>
<view class="content">
<view class="contentTitle">
<view class="contentTitle_name">股票名称</view>
<view class="contentTitle_close">最新收盘价</view>
<view class="contentTitle_price">选股价格</view>
</view>
<view class="contentItem">
<view class="row" v-for="(item, index) in stockData" :key="index">
<view class="nameItem">{{ item.tscode }}</view>
<view class="closeItem">{{ item.close }}</view>
<view class="priceItem">{{ item.preClose }}</view>
</view>
</view>
</view>
</view>
</view>
<view class="stockSelection_content">
<view class="selectionItem" @click="viewAll">
<view class="header">
<view class="left">
<image src="/static/deepExploration-images/plus.png" mode="aspectFill"></image>
<text>波段行情</text>
</view>
<view class="right">
<image src="/static/deepExploration-images/Americle.png" mode="aspectFill"></image>
<text>美股</text>
</view>
</view>
<view class="content">
<view class="contentTitle">
<view class="contentTitle_name">股票名称</view>
<view class="contentTitle_close">最新收盘价</view>
<view class="contentTitle_price">选股价格</view>
</view>
<view class="contentItem">
<view class="row" v-for="(item, index) in stockDataByName" :key="index">
<view class="nameItem">{{ item.tscode }}</view>
<view class="closeItem">{{ item.close }}</view>
<view class="priceItem">{{ item.preClose }}</view>
</view>
</view>
</view>
</view>
</view>
</view>
<footerBar class="static-footer" :type="type"></footerBar>
</view>
<view class="stockSelection_content">
<view class="selectionItem">
<view class="header">
<view class="left">
<image
src="/static/deepExploration-images/plus.png"
mode="aspectFill"
></image>
<text>抄底卖顶</text>
</view>
<view class="right">
<image
src="/static/deepExploration-images/Americle.png"
mode="aspectFill"
></image>
<text>美股</text>
</view>
</view>
<view class="content">
<view class="contentTitle">
<view class="contentTitle_name">股票名称</view>
<view class="contentTitle_close">最新收盘价</view>
<view class="contentTitle_price">选股价格</view>
</view>
<view class="contentItem">
<view class="row" v-for="(item, index) in stockData" :key="index">
<view class="nameItem">{{ item.tscode }}{{ item.stockName }}</view>
<view class="closeItem">{{ item.close }}</view>
<view class="priceItem">{{ item.preClose }}</view>
</view>
</view>
</view>
</view>
</view>
<view class="stockSelection_content">
<view class="selectionItem">
<view class="header">
<view class="left">
<image
src="/static/deepExploration-images/plus.png"
mode="aspectFill"
></image>
<text>波段行情</text>
</view>
<view class="right">
<image
src="/static/deepExploration-images/Americle.png"
mode="aspectFill"
></image>
<text>美股</text>
</view>
</view>
<view class="content">
<view class="contentTitle">
<view class="contentTitle_name">股票名称</view>
<view class="contentTitle_close">最新收盘价</view>
<view class="contentTitle_price">选股价格</view>
</view>
<view class="contentItem">
<view class="row" v-for="(item, index) in stockDataByName" :key="index">
<view class="nameItem">{{ item.tscode }}{{ item.stockName }}</view>
<view class="closeItem">{{ item.close }}</view>
<view class="priceItem">{{ item.preClose }}</view>
</view>
</view>
</view>
</view>
</view>
</view>
<footerBar class="static-footer" :type="type"></footerBar>
</view>
</template>
<script setup>
@ -207,6 +219,7 @@
if (Array.isArray(list) && list.length) {
const mapped = list.map(item => ({
tscode: item.tsCode ?? item.tscode ?? item.code ?? '',
stockName: item.stockName ?? item.name ?? '',
close: item.close ?? item.lastClose ?? '',
preClose: item.preClose ?? item.preclose ?? item.prevClose ?? ''
}))
@ -248,6 +261,7 @@
if (Array.isArray(list) && list.length) {
const mapped = list.map(item => ({
tscode: item.tsCode ?? item.tscode ?? item.code ?? '',
stockName: item.stockName ?? item.name ?? '',
close: item.close ?? item.lastClose ?? '',
preClose: item.preClose ?? item.preclose ?? item.prevClose ?? ''
}))
@ -363,17 +377,18 @@
}
.viewAll {
display: flex;
align-items: center;
justify-content: center;
background-color: #000000;
border-radius: 10rpx;
padding: 6rpx 20rpx;
padding: 10rpx 20rpx;
color: #ffffff;
font-family: "PingFang SC";
font-size: 24rpx;
font-style: normal;
font-weight: 100;
font-weight: 500;
line-height: 29rpx;
height: 40rpx;
width: 140rpx;
}
}

46
pages/deepExploration/stockSelectDetail.vue

@ -156,19 +156,22 @@
if (Array.isArray(list)) list = sortByPctDesc(list)
if (Array.isArray(list) && list.length) {
strategyData.value = list.map(item => ({
name: item.tsCode ?? item.tscode ?? '',
stockCode: item.tsCode ?? item.tscode ?? '',
latest: item.close ?? '',
name: item.stockName ?? item.name ?? item.tsName ?? item.tsname ?? item.secName ?? '',
stockCode: item.tsCode ?? item.tscode ?? item.code ?? item.symbol ?? '',
latest: item.close ?? item.lastClose ?? '',
increase: formatPctChg(item.pctChg),
decrease: item.change ?? '',
previousClose: item.preClose ?? item.preclose ?? '',
volume: item.vol ?? '',
turnover: item.amount ?? '',
openingPrice: item.open ?? '',
highestPrice: item.high ?? '',
lowestPrice: item.low ?? ''
decrease: item.change ?? item.chg ?? '',
previousClose: item.preClose ?? item.preclose ?? item.prevClose ?? '',
volume: item.vol ?? item.volume ?? '',
turnover: item.amount ?? item.turnover ?? '',
openingPrice: item.open ?? item.openPrice ?? '',
highestPrice: item.high ?? item.highPrice ?? '',
lowestPrice: item.low ?? item.lowPrice ?? ''
}))
console.log(`按名称(${apiName})加载成功,条数:`, strategyData.value.length, '首项:', strategyData.value[0])
if (!strategyData.value[0]?.name) {
console.warn('名称字段未命中,原始keys示例:', Object.keys(list[0] || {}))
}
} else {
console.warn('getStrategyByName 返回空列表或结构不匹配', raw)
}
@ -203,19 +206,22 @@
if (Array.isArray(list)) list = sortByPctDesc(list)
if (Array.isArray(list) && list.length) {
strategyData.value = list.map(item => ({
name: item.tsCode ?? item.tscode ?? '',
stockCode: item.tsCode ?? item.tscode ?? '',
latest: item.close ?? '',
name: item.stockName ?? item.name ?? item.tsName ?? item.tsname ?? item.secName ?? '',
stockCode: item.tsCode ?? item.tscode ?? item.code ?? item.symbol ?? '',
latest: item.close ?? item.lastClose ?? '',
increase: formatPctChg(item.pctChg),
decrease: item.change ?? '',
previousClose: item.preClose ?? item.preclose ?? '',
volume: item.vol ?? '',
turnover: item.amount ?? '',
openingPrice: item.open ?? '',
highestPrice: item.high ?? '',
lowestPrice: item.low ?? ''
decrease: item.change ?? item.chg ?? '',
previousClose: item.preClose ?? item.preclose ?? item.prevClose ?? '',
volume: item.vol ?? item.volume ?? '',
turnover: item.amount ?? item.turnover ?? '',
openingPrice: item.open ?? item.openPrice ?? '',
highestPrice: item.high ?? item.highPrice ?? '',
lowestPrice: item.low ?? item.lowPrice ?? ''
}))
console.log('stockSelectDetail 加载成功(已按涨幅降序),条数:', strategyData.value.length, '首项:', strategyData.value[0])
if (!strategyData.value[0]?.name) {
console.warn('名称字段未命中,原始keys示例:', Object.keys(list[0] || {}))
}
} else {
console.warn('stockSelectDetail 接口返回空列表或结构不匹配', raw)
}

16
pages/deepMate/deepMate.vue

@ -1226,23 +1226,23 @@ async function itemClick(item) {
/* min-height: 20rpx; */
/* border-radius: 20rpx; */
padding: 40rpx;
margin-top: 20rpx;
margin-top: 10rpx;
margin-bottom: 10rpx;
/* box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.05); */
}
.welcome-section {
/* 灰色卡片(recommend-card)之后展示背景图 */
margin-top: 2rem;
margin-top: 40rpx;
display: flex;
align-items: center;
justify-content: center;
background: url("https://d31zlh4on95l9h.cloudfront.net/images/eca84d9fb54712cb3bc6c6174773b83b.svg");
background: url("/static/images/welcomeRobot.svg");
background-repeat: no-repeat;
background-position: center top;
/* 放在容器顶部,正好在灰色卡片下方 */
background-size: 80% auto;
/* 缩放以适配宽度 */
background-position: center center;
/* 居中显示,避免顶部被裁剪 */
background-size: contain;
/* 保证整张图片完整展示 */
height: 460rpx;
/* 提供可视高度,让背景图可见 */
}
@ -1558,7 +1558,7 @@ async function itemClick(item) {
inset: 0;
/* 顶部、底部、左、右都贴合容器 */
width: 100%;
height: 81%;
height: 83%;
border-radius: 15rpx;
z-index: 1;
/* 在灰底之上、内容之下 */

BIN
static/deepExploration-images/1.png

Before

Width: 750  |  Height: 198  |  Size: 35 KiB

After

Width: 750  |  Height: 198  |  Size: 36 KiB

BIN
static/deepExploration-images/2.png

Before

Width: 750  |  Height: 198  |  Size: 36 KiB

After

Width: 750  |  Height: 198  |  Size: 38 KiB

BIN
static/deepExploration-images/3.png

Before

Width: 750  |  Height: 198  |  Size: 37 KiB

After

Width: 750  |  Height: 198  |  Size: 38 KiB

BIN
static/deepExploration-images/4.png

Before

Width: 750  |  Height: 198  |  Size: 35 KiB

After

Width: 750  |  Height: 198  |  Size: 35 KiB

BIN
static/deepExploration-images/history.png

Before

Width: 16  |  Height: 15  |  Size: 797 B

After

Width: 32  |  Height: 30  |  Size: 2.3 KiB

BIN
static/deepExploration-images/icon1.png

Before

Width: 40  |  Height: 40  |  Size: 1.9 KiB

After

Width: 80  |  Height: 80  |  Size: 3.9 KiB

BIN
static/deepExploration-images/icon2.png

Before

Width: 40  |  Height: 40  |  Size: 2.6 KiB

After

Width: 80  |  Height: 80  |  Size: 6.9 KiB

BIN
static/deepExploration-images/icon3.png

Before

Width: 40  |  Height: 40  |  Size: 1.7 KiB

After

Width: 80  |  Height: 80  |  Size: 4.6 KiB

BIN
static/deepExploration-images/icon4.png

Before

Width: 40  |  Height: 40  |  Size: 1.5 KiB

After

Width: 80  |  Height: 80  |  Size: 3.4 KiB

BIN
static/deepExploration-images/kLineAll.png

After

Width: 48  |  Height: 48  |  Size: 1.6 KiB

BIN
static/deepExploration-images/notice.png

Before

Width: 18  |  Height: 18  |  Size: 523 B

After

Width: 36  |  Height: 36  |  Size: 1.1 KiB

BIN
static/deepExploration-images/search.png

Before

Width: 16  |  Height: 16  |  Size: 522 B

After

Width: 32  |  Height: 32  |  Size: 1.0 KiB

185
static/images/welcomeRobot.svg
File diff suppressed because it is too large
View File

Loading…
Cancel
Save