6 Commits

  1. 2491
      common/stockTimeInformation.js
  2. 8
      components/IndexCard.vue
  3. 108
      pages/marketSituation/marketDetail.vue
  4. 60
      pages/marketSituation/marketOverview.vue
  5. 4
      pages/marketSituation/marketSituation.vue

2491
common/stockTimeInformation.js
File diff suppressed because it is too large
View File

8
components/IndexCard.vue

@ -12,8 +12,8 @@
<view class="price-info"> <view class="price-info">
<text class="current-price" :style="{ color: priceColor }">{{ currentPrice }}</text> <text class="current-price" :style="{ color: priceColor }">{{ currentPrice }}</text>
<view class="change-info"> <view class="change-info">
<text class="change-amount" :style="{ color: priceColor }">{{ changeAmount }}</text>
<text class="change-percent" :style="{ color: priceColor }">{{ changePercent }}</text>
<text class="change-amount" :style="{ color: priceColor }">{{ judgeSymbol(changeAmount) }}</text>
<text class="change-percent" :style="{ color: priceColor }">{{ judgeSymbol(changePercent) }}</text>
</view> </view>
</view> </view>
@ -63,6 +63,10 @@ const props = defineProps({
}, },
}); });
const judgeSymbol = (num) => {
return num[0] === "-" ? num : "+" + num;
};
const getMarketFlag = (market) => { const getMarketFlag = (market) => {
let imagePath; let imagePath;

108
pages/marketSituation/marketDetail.vue

@ -48,7 +48,7 @@
</view> </view>
<view class="stock-cell change-column"> <view class="stock-cell change-column">
<text class="stock-change" :class="item.isRising ? 'rising' : 'falling'"> <text class="stock-change" :class="item.isRising ? 'rising' : 'falling'">
{{ item.changePercent }}
{{ judgeSymbol(item.changePercent) }}
</text> </text>
</view> </view>
</view> </view>
@ -79,107 +79,6 @@ const sortType = ref(""); // 排序类型:'price' 或 'change'
const sortOrder = ref("desc"); // 'asc' 'desc' const sortOrder = ref("desc"); // 'asc' 'desc'
const regionalGroupArray = ref([]); const regionalGroupArray = ref([]);
//
const stockList = ref([
{
stockName: "Telecommunication",
stockCode: "888607",
price: 1349.47,
change: "+7.67%",
isRising: true,
},
{
stockName: "Other",
stockCode: "888607",
price: 1349.47,
change: "+6.67%",
isRising: true,
},
{
stockName: "Consumer Discretio...",
stockCode: "888610",
price: 1349.47,
change: "+5.67%",
isRising: true,
},
{
stockName: "Telecommunication",
stockCode: "888607",
price: 1349.47,
change: "+4.67%",
isRising: true,
},
{
stockName: "Other",
stockCode: "888611",
price: 1359.47,
change: "+3.67%",
isRising: true,
},
{
stockName: "Consumer Discretio...",
stockCode: "888610",
price: 1349.47,
change: "+2.67%",
isRising: true,
},
{
stockName: "Telecommunication",
stockCode: "888607",
price: 1349.47,
change: "+1.67%",
isRising: true,
},
{
stockName: "Other",
stockCode: "888611",
price: 1009.98,
change: "-1.67%",
isRising: false,
},
{
stockName: "Consumer Discretio...",
stockCode: "888610",
price: 1009.98,
change: "-0.67%",
isRising: false,
},
{
stockName: "Telecommunication",
stockCode: "888607",
price: 1009.98,
change: "-0.67%",
isRising: false,
},
{
stockName: "Other",
stockCode: "888611",
price: 1009.98,
change: "-1.67%",
isRising: false,
},
{
stockName: "Consumer Discretio...",
stockCode: "888610",
price: 1009.98,
change: "-4.67%",
isRising: false,
},
{
stockName: "Consumer Discretio...",
stockCode: "888610",
price: 1009.98,
change: "-3.67%",
isRising: false,
},
{
stockName: "Consumer Discretio...",
stockCode: "888610",
price: 1009.98,
change: "-3.67%",
isRising: false,
},
]);
// //
const contentTopPosition = computed(() => { const contentTopPosition = computed(() => {
@ -206,6 +105,10 @@ const sortedStockList = computed(() => {
return list; return list;
}); });
const judgeSymbol = (num) => {
return num[0] === "-" ? num : "+" + num;
};
const getRegionalGroupList = async () => { const getRegionalGroupList = async () => {
try { try {
const result = await getRegionalGroupListAPI({ const result = await getRegionalGroupListAPI({
@ -348,7 +251,6 @@ const sendTcpMessage = (command) => {
break; break;
} }
if (!messageData) { if (!messageData) {
return; return;
} else { } else {
try { try {

60
pages/marketSituation/marketOverview.vue

@ -6,10 +6,10 @@
<scroll-view class="content_scroll" scroll-y="true" :style="{ top: contentTopPosition + 'px' }"> <scroll-view class="content_scroll" scroll-y="true" :style="{ top: contentTopPosition + 'px' }">
<view class="content"> <view class="content">
<view class="map"> <view class="map">
<view class="INDU">道琼斯{{ INDU.value }}</view>
<view class="NDX">纳斯达克{{ NDX.value }}</view>
<view class="HSI">恒生指数{{ HSI.value }}</view>
<view class="CN">上证指数{{ CN.value }}</view>
<view class="INDU">道琼斯{{ judgeSymbol(INDU.value) }}</view>
<view class="NDX">纳斯达克{{ judgeSymbol(NDX.value) }}</view>
<view class="HSI">恒生指数{{ judgeSymbol(HSI.value) }}</view>
<view class="CN">上证指数{{ judgeSymbol(CN.value) }}</view>
<image src="/static/marketSituation-image/map.png" mode="widthFix"></image> <image src="/static/marketSituation-image/map.png" mode="widthFix"></image>
</view> </view>
<view class="global_index"> <view class="global_index">
@ -65,7 +65,7 @@ const headerHeight = ref(0); // 动态计算的header高度
const isWarnTextOverflow = ref(false); // warn const isWarnTextOverflow = ref(false); // warn
const INDU = ref({ stockName: "道琼斯", stockCode: "INDU", value: "" }); const INDU = ref({ stockName: "道琼斯", stockCode: "INDU", value: "" });
const NDX = ref({stockName: "纳斯达克",stockCode: "NDX",value: ""});
const NDX = ref({ stockName: "纳斯达克", stockCode: "513300", value: "" });
const HSI = ref({ stockName: "恒生指数", stockCode: "HSI", value: "" }); const HSI = ref({ stockName: "恒生指数", stockCode: "HSI", value: "" });
const CN = ref({ stockName: "上证指数", stockCode: "1A0001", value: "" }); const CN = ref({ stockName: "上证指数", stockCode: "1A0001", value: "" });
@ -86,6 +86,10 @@ const warnTextClass = computed(() => {
const globalIndexArray = ref([]); const globalIndexArray = ref([]);
const judgeSymbol = (num) => {
return num[0] === "-" ? num : "+" + num;
};
// //
const onSearchInput = (e) => { const onSearchInput = (e) => {
searchValue.value = e.detail.value; searchValue.value = e.detail.value;
@ -369,6 +373,27 @@ const parseStockData = (message) => {
changePercent: ((100 * (stockDataArray[item.stockCode][0].current_price - stockDataArray[item.stockCode][0].pre_close)) / stockDataArray[item.stockCode][0].pre_close).toFixed(2) + "%", changePercent: ((100 * (stockDataArray[item.stockCode][0].current_price - stockDataArray[item.stockCode][0].pre_close)) / stockDataArray[item.stockCode][0].pre_close).toFixed(2) + "%",
isRising: stockDataArray[item.stockCode][0].current_price - stockDataArray[item.stockCode][0].pre_close >= 0, isRising: stockDataArray[item.stockCode][0].current_price - stockDataArray[item.stockCode][0].pre_close >= 0,
})); }));
if (stockDataArray[INDU.value.stockCode][0]) {
INDU.value.value = ((100 * (stockDataArray[INDU.value.stockCode][0].current_price - stockDataArray[INDU.value.stockCode][0].pre_close)) / stockDataArray[INDU.value.stockCode][0].pre_close).toFixed(2) + "%";
} else {
console.log("INDU不存在");
}
if (stockDataArray[NDX.value.stockCode][0]) {
NDX.value.value = ((100 * (stockDataArray[NDX.value.stockCode][0].current_price - stockDataArray[NDX.value.stockCode][0].pre_close)) / stockDataArray[NDX.value.stockCode][0].pre_close).toFixed(2) + "%";
} else {
console.log("NDX不存在");
}
if (stockDataArray[HSI.value.stockCode][0]) {
HSI.value.value = ((100 * (stockDataArray[HSI.value.stockCode][0].current_price - stockDataArray[HSI.value.stockCode][0].pre_close)) / stockDataArray[HSI.value.stockCode][0].pre_close).toFixed(2) + "%";
} else {
console.log("HSI不存在");
}
if (stockDataArray[CN.value.stockCode][0]) {
CN.value.value = ((100 * (stockDataArray[CN.value.stockCode][0].current_price - stockDataArray[CN.value.stockCode][0].pre_close)) / stockDataArray[CN.value.stockCode][0].pre_close).toFixed(2) + "%";
} else {
console.log("CN不存在");
}
} }
} else if ((typeof message === "string" && message.includes('{"count')) || isMorePacket.batch_real_time) { } else if ((typeof message === "string" && message.includes('{"count')) || isMorePacket.batch_real_time) {
if (typeof message === "string" && message.includes('{"count')) { if (typeof message === "string" && message.includes('{"count')) {
@ -415,6 +440,27 @@ const parseStockData = (message) => {
changePercent: ((100 * (stockDataArray[item.stockCode][0].current_price - stockDataArray[item.stockCode][0].pre_close)) / stockDataArray[item.stockCode][0].pre_close).toFixed(2) + "%", changePercent: ((100 * (stockDataArray[item.stockCode][0].current_price - stockDataArray[item.stockCode][0].pre_close)) / stockDataArray[item.stockCode][0].pre_close).toFixed(2) + "%",
isRising: stockDataArray[item.stockCode][0].current_price - stockDataArray[item.stockCode][0].pre_close >= 0, isRising: stockDataArray[item.stockCode][0].current_price - stockDataArray[item.stockCode][0].pre_close >= 0,
})); }));
if (stockDataArray[INDU.value.stockCode][0]) {
INDU.value.value = ((100 * (stockDataArray[INDU.value.stockCode][0].current_price - stockDataArray[INDU.value.stockCode][0].pre_close)) / stockDataArray[INDU.value.stockCode][0].pre_close).toFixed(2) + "%";
} else {
console.log("INDU不存在");
}
if (stockDataArray[NDX.value.stockCode][0]) {
NDX.value.value = ((100 * (stockDataArray[NDX.value.stockCode][0].current_price - stockDataArray[NDX.value.stockCode][0].pre_close)) / stockDataArray[NDX.value.stockCode][0].pre_close).toFixed(2) + "%";
} else {
console.log("NDX不存在");
}
if (stockDataArray[HSI.value.stockCode][0]) {
HSI.value.value = ((100 * (stockDataArray[HSI.value.stockCode][0].current_price - stockDataArray[HSI.value.stockCode][0].pre_close)) / stockDataArray[HSI.value.stockCode][0].pre_close).toFixed(2) + "%";
} else {
console.log("HSI不存在");
}
if (stockDataArray[CN.value.stockCode][0]) {
CN.value.value = ((100 * (stockDataArray[CN.value.stockCode][0].current_price - stockDataArray[CN.value.stockCode][0].pre_close)) / stockDataArray[CN.value.stockCode][0].pre_close).toFixed(2) + "%";
} else {
console.log("CN不存在");
}
} }
} else { } else {
// JSON // JSON
@ -906,8 +952,8 @@ watch(headerHeight, (newHeight) => {
.global_index_title { .global_index_title {
margin-left: 20rpx; margin-left: 20rpx;
font-size: 40rpx; font-size: 40rpx;
font-weight: 100;
color: #333333;
font-weight: bold;
color: black;
align-items: center; align-items: center;
} }

4
pages/marketSituation/marketSituation.vue

@ -496,8 +496,8 @@ watch(headerHeight, (newHeight) => {
} }
.scroll_indicator image { .scroll_indicator image {
width: 20rpx;
height: 20rpx;
width: 30rpx;
height: 30rpx;
opacity: 0.5; opacity: 0.5;
} }

Loading…
Cancel
Save