From 9ddad348a549154e7b328f9d7dd9517d2abd330c Mon Sep 17 00:00:00 2001
From: PC-20250623MANY\Administrator <344137771@qq.com>
Date: Tue, 30 Sep 2025 09:47:25 +0800
Subject: [PATCH] 1
---
src/components/stock-list.vue | 62 +++++++++++++++++++++++++++++-
1 files changed, 59 insertions(+), 3 deletions(-)
diff --git a/src/components/stock-list.vue b/src/components/stock-list.vue
index 36a09df..2a42cf9 100644
--- a/src/components/stock-list.vue
+++ b/src/components/stock-list.vue
@@ -20,11 +20,21 @@
<div class="i_name">{{ item.name }}</div>
</van-col>
<van-col span="4" class="flex-start item_n">{{ item.nowPrice }}</van-col>
+
<van-col span="8" class="item_n">
- <div class="flex-end" style="margin-bottom: .15em;">
+ <div
+ class="flex-end"
+ style="margin-bottom: .15em;"
+ :class="{ red: item.hcrate < 0, green: item.hcrate > 0 }"
+ >
{{ item.hcrate }}
</div>
- <div class="flex-end">{{ item.hcrateP }}</div>
+ <div
+ class="flex-end"
+ :class="{ red: item.hcrate < 0, green: item.hcrate > 0 }"
+ >
+ {{ item.hcrateP }}
+ </div>
</van-col>
<div
@@ -56,6 +66,7 @@
import nPagination from "@/components/nPagination.vue";
import * as api from "@/axios/api";
import { Toast } from "vant";
+import { WhrWebSocket } from "@/utils/WhrWebSocket";
export default {
name: "stock_list",
components: {
@@ -90,9 +101,16 @@
watch: {
propOption: {
handler(val) {
+ // 根据当前股票类型连接对应的ws
+ if (val.stockType == "US")
+ this.initWebSocket("wss://usws.yanshiz.com/websocket-server");
+ else this.initWebSocket("wss://ws.acapl.net/websocket-server");
+
this.pageNum = 1;
this.getStockList();
- }
+ },
+ deep: true,
+ immediate: true
},
pageNum: {
handler(val) {
@@ -103,6 +121,7 @@
},
mounted() {
this.getStockList();
+ // this.initWebSocket();
},
methods: {
// 获取数据
@@ -151,6 +170,35 @@
} else {
Toast.fail(data.msg);
}
+ },
+ // 连接ws实时监控变动
+ initWebSocket(url) {
+ console.log("initWebSocket");
+ if (this.Trade) {
+ this.Trade.close();
+ }
+ this.Trade = new WhrWebSocket({
+ path: url,
+ onmessage: this.getTradeMessage
+ });
+
+ this.Trade.init();
+ },
+ getTradeMessage({ data }) {
+ let result = JSON.parse(data);
+ let pid = result.pid;
+ let userToUpdate = this.stockList.find(item => item.code == pid);
+ if (userToUpdate) {
+ // 更新对象数据
+ userToUpdate.nowPrice = result.last;
+ userToUpdate.hcrateP = result.pcp;
+ }
+ }
+ },
+ beforeDestroy() {
+ if (this.Trade) {
+ this.Trade.close();
+ console.log("WebSocket disconnected");
}
}
};
@@ -203,6 +251,14 @@
}
}
+ .up {
+ color: @dark_green;
+ }
+
+ .down {
+ color: @red;
+ }
+
.edit {
width: 100%;
height: 100%;
--
Gitblit v1.9.3