|
|
@@ -12,8 +12,8 @@ const _sfc_main = {
|
|
|
const isLoggedIn = common_vendor.ref(false);
|
|
|
const myStocks = common_vendor.ref([]);
|
|
|
const viewMode = common_vendor.ref("list");
|
|
|
- const toggleViewMode = () => {
|
|
|
- viewMode.value = viewMode.value === "list" ? "table" : "list";
|
|
|
+ const setViewMode = (mode) => {
|
|
|
+ viewMode.value = mode;
|
|
|
};
|
|
|
const indexData = common_vendor.ref({
|
|
|
stockCode: "000001",
|
|
|
@@ -84,14 +84,18 @@ const _sfc_main = {
|
|
|
return "market-sh";
|
|
|
};
|
|
|
const loadMyStocks = async () => {
|
|
|
+ console.log("[我的股票] loadMyStocks 开始执行, isLoggedIn=", isLoggedIn.value);
|
|
|
if (!isLoggedIn.value) {
|
|
|
myStocks.value = [];
|
|
|
stopAutoRefresh();
|
|
|
return;
|
|
|
}
|
|
|
try {
|
|
|
+ common_vendor.index.showLoading({ title: "加载中..." });
|
|
|
+ console.log("[我的股票] 调用 getUserStocks 接口");
|
|
|
const res = await utils_api.getUserStocks();
|
|
|
console.log("[我的股票] 服务器返回:", JSON.stringify(res));
|
|
|
+ common_vendor.index.hideLoading();
|
|
|
if (res.code === 200 && res.data) {
|
|
|
myStocks.value = res.data.map((item) => ({
|
|
|
code: item.stockCode,
|
|
|
@@ -104,8 +108,10 @@ const _sfc_main = {
|
|
|
changePercent: item.changePercent,
|
|
|
trendData: item.trendData
|
|
|
}));
|
|
|
+ console.log("[我的股票] 加载完成, 股票数量:", myStocks.value.length);
|
|
|
} else {
|
|
|
myStocks.value = [];
|
|
|
+ console.log("[我的股票] 返回数据为空");
|
|
|
}
|
|
|
await fetchIndexData();
|
|
|
if (myStocks.value.length > 0) {
|
|
|
@@ -113,7 +119,8 @@ const _sfc_main = {
|
|
|
}
|
|
|
startAutoRefresh();
|
|
|
} catch (e) {
|
|
|
- console.error("加载股票列表失败:", e);
|
|
|
+ common_vendor.index.hideLoading();
|
|
|
+ console.error("[我的股票] 加载失败:", e);
|
|
|
myStocks.value = [];
|
|
|
startAutoRefresh();
|
|
|
}
|
|
|
@@ -174,8 +181,32 @@ const _sfc_main = {
|
|
|
const goToLogin = () => {
|
|
|
common_vendor.index.navigateTo({ url: "/pages/login/login" });
|
|
|
};
|
|
|
- const handleStockClick = (stockItem, idx) => {
|
|
|
+ const handleStockClick = async (stockItem, idx) => {
|
|
|
console.log("点击股票:", stockItem.name, idx);
|
|
|
+ try {
|
|
|
+ const quoteRes = await utils_api.getStockQuotes(stockItem.code);
|
|
|
+ if (quoteRes.code === 200 && quoteRes.data && quoteRes.data.length > 0) {
|
|
|
+ const quoteData = quoteRes.data[0];
|
|
|
+ const stock = myStocks.value[idx];
|
|
|
+ if (stock) {
|
|
|
+ stock.priceChange = quoteData.priceChange;
|
|
|
+ stock.changePercent = quoteData.changePercent;
|
|
|
+ stock.currentPrice = quoteData.currentPrice;
|
|
|
+ stock.name = quoteData.stockName || stock.name;
|
|
|
+ stock.trendData = quoteData.trendData || null;
|
|
|
+ if (stock.addPrice && quoteData.currentPrice) {
|
|
|
+ const addPrice = parseFloat(stock.addPrice);
|
|
|
+ const currentPrice = parseFloat(quoteData.currentPrice);
|
|
|
+ if (addPrice > 0) {
|
|
|
+ const profit = ((currentPrice - addPrice) / addPrice * 100).toFixed(2);
|
|
|
+ stock.profitPercent = profit >= 0 ? `+${profit}%` : `${profit}%`;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (e) {
|
|
|
+ console.error("刷新股票行情失败:", e);
|
|
|
+ }
|
|
|
common_vendor.index.showToast({ title: "股票详情功能开发中", icon: "none" });
|
|
|
};
|
|
|
const removeStock = async (idx) => {
|
|
|
@@ -203,10 +234,12 @@ const _sfc_main = {
|
|
|
});
|
|
|
};
|
|
|
common_vendor.onLoad(() => {
|
|
|
+ console.log("[我的股票] onLoad 触发");
|
|
|
isLoggedIn.value = utils_auth.isLoggedIn();
|
|
|
loadMyStocks();
|
|
|
});
|
|
|
common_vendor.onShow(() => {
|
|
|
+ console.log("[我的股票] onShow 触发");
|
|
|
isLoggedIn.value = utils_auth.isLoggedIn();
|
|
|
loadMyStocks();
|
|
|
common_vendor.index.setNavigationBarTitle({ title: "量化交易大师" });
|
|
|
@@ -226,9 +259,12 @@ const _sfc_main = {
|
|
|
e: common_vendor.t(indexData.value.stockName || "上证指数"),
|
|
|
f: common_vendor.t(indexData.value.changePercent || "--"),
|
|
|
g: common_vendor.n(getIndexChangeClass(indexData.value.changePercent)),
|
|
|
- h: common_vendor.t(viewMode.value === "list" ? "📊" : "📋"),
|
|
|
- i: common_vendor.o(toggleViewMode),
|
|
|
- j: common_vendor.f(myStocks.value, (stock, index, i0) => {
|
|
|
+ h: viewMode.value === "table" ? 1 : "",
|
|
|
+ i: viewMode.value === "list" ? 1 : "",
|
|
|
+ j: common_vendor.o(($event) => setViewMode("list")),
|
|
|
+ k: viewMode.value === "table" ? 1 : "",
|
|
|
+ l: common_vendor.o(($event) => setViewMode("table")),
|
|
|
+ m: common_vendor.f(myStocks.value, (stock, index, i0) => {
|
|
|
return {
|
|
|
a: stock.code,
|
|
|
b: common_vendor.o(($event) => removeStock(index), stock.code),
|
|
|
@@ -240,9 +276,9 @@ const _sfc_main = {
|
|
|
})
|
|
|
};
|
|
|
}),
|
|
|
- k: viewMode.value === "list",
|
|
|
- l: myStocks.value.length === 0 ? 1 : "",
|
|
|
- m: common_vendor.f(myStocks.value, (stock, index, i0) => {
|
|
|
+ n: viewMode.value === "list",
|
|
|
+ o: myStocks.value.length === 0 ? 1 : "",
|
|
|
+ p: common_vendor.f(myStocks.value, (stock, index, i0) => {
|
|
|
return {
|
|
|
a: common_vendor.t(stock.name),
|
|
|
b: common_vendor.t(getMarketTag(stock.code)),
|
|
|
@@ -256,14 +292,14 @@ const _sfc_main = {
|
|
|
j: common_vendor.o(($event) => handleStockClick(stock, index), stock.code)
|
|
|
};
|
|
|
}),
|
|
|
- n: viewMode.value === "table",
|
|
|
- o: myStocks.value.length === 0 ? 1 : "",
|
|
|
- p: myStocks.value.length === 0
|
|
|
+ q: viewMode.value === "table",
|
|
|
+ r: myStocks.value.length === 0 ? 1 : "",
|
|
|
+ s: myStocks.value.length === 0
|
|
|
}, myStocks.value.length === 0 ? {} : {}, {
|
|
|
- q: !isLoggedIn.value ? 1 : "",
|
|
|
- r: !isLoggedIn.value
|
|
|
+ t: !isLoggedIn.value ? 1 : "",
|
|
|
+ v: !isLoggedIn.value
|
|
|
}, !isLoggedIn.value ? {
|
|
|
- s: common_vendor.o(goToLogin)
|
|
|
+ w: common_vendor.o(goToLogin)
|
|
|
} : {});
|
|
|
};
|
|
|
}
|