|
@@ -12,6 +12,9 @@ const _sfc_main = {
|
|
|
const isLoggedIn = common_vendor.ref(false);
|
|
const isLoggedIn = common_vendor.ref(false);
|
|
|
const myStocks = common_vendor.ref([]);
|
|
const myStocks = common_vendor.ref([]);
|
|
|
const viewMode = common_vendor.ref("list");
|
|
const viewMode = common_vendor.ref("list");
|
|
|
|
|
+ const isLoading = common_vendor.ref(false);
|
|
|
|
|
+ const lastLoadTime = common_vendor.ref(0);
|
|
|
|
|
+ const CACHE_DURATION = 5e3;
|
|
|
const setViewMode = (mode) => {
|
|
const setViewMode = (mode) => {
|
|
|
viewMode.value = mode;
|
|
viewMode.value = mode;
|
|
|
};
|
|
};
|
|
@@ -83,15 +86,30 @@ const _sfc_main = {
|
|
|
return "market-cy";
|
|
return "market-cy";
|
|
|
return "market-sh";
|
|
return "market-sh";
|
|
|
};
|
|
};
|
|
|
- const loadMyStocks = async () => {
|
|
|
|
|
- console.log("[我的股票] loadMyStocks 开始执行, isLoggedIn=", isLoggedIn.value);
|
|
|
|
|
|
|
+ const loadMyStocks = async (forceRefresh = false) => {
|
|
|
|
|
+ console.log("[我的股票] loadMyStocks 开始执行, isLoggedIn=", isLoggedIn.value, "forceRefresh=", forceRefresh);
|
|
|
if (!isLoggedIn.value) {
|
|
if (!isLoggedIn.value) {
|
|
|
myStocks.value = [];
|
|
myStocks.value = [];
|
|
|
stopAutoRefresh();
|
|
stopAutoRefresh();
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
|
|
+ if (isLoading.value) {
|
|
|
|
|
+ console.log("[我的股票] 正在加载中,跳过");
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ const now = Date.now();
|
|
|
|
|
+ if (!forceRefresh && myStocks.value.length > 0 && now - lastLoadTime.value < CACHE_DURATION) {
|
|
|
|
|
+ console.log("[我的股票] 使用缓存数据,只刷新行情");
|
|
|
|
|
+ await fetchIndexData();
|
|
|
|
|
+ await refreshAllQuotes();
|
|
|
|
|
+ startAutoRefresh();
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
try {
|
|
try {
|
|
|
- common_vendor.index.showLoading({ title: "加载中..." });
|
|
|
|
|
|
|
+ isLoading.value = true;
|
|
|
|
|
+ if (myStocks.value.length === 0 || forceRefresh) {
|
|
|
|
|
+ common_vendor.index.showLoading({ title: "加载中..." });
|
|
|
|
|
+ }
|
|
|
console.log("[我的股票] 调用 getUserStocks 接口");
|
|
console.log("[我的股票] 调用 getUserStocks 接口");
|
|
|
const res = await utils_api.getUserStocks();
|
|
const res = await utils_api.getUserStocks();
|
|
|
console.log("[我的股票] 服务器返回:", JSON.stringify(res));
|
|
console.log("[我的股票] 服务器返回:", JSON.stringify(res));
|
|
@@ -108,6 +126,7 @@ const _sfc_main = {
|
|
|
changePercent: item.changePercent,
|
|
changePercent: item.changePercent,
|
|
|
trendData: item.trendData
|
|
trendData: item.trendData
|
|
|
}));
|
|
}));
|
|
|
|
|
+ lastLoadTime.value = Date.now();
|
|
|
console.log("[我的股票] 加载完成, 股票数量:", myStocks.value.length);
|
|
console.log("[我的股票] 加载完成, 股票数量:", myStocks.value.length);
|
|
|
} else {
|
|
} else {
|
|
|
myStocks.value = [];
|
|
myStocks.value = [];
|
|
@@ -121,8 +140,12 @@ const _sfc_main = {
|
|
|
} catch (e) {
|
|
} catch (e) {
|
|
|
common_vendor.index.hideLoading();
|
|
common_vendor.index.hideLoading();
|
|
|
console.error("[我的股票] 加载失败:", e);
|
|
console.error("[我的股票] 加载失败:", e);
|
|
|
- myStocks.value = [];
|
|
|
|
|
|
|
+ if (myStocks.value.length === 0) {
|
|
|
|
|
+ myStocks.value = [];
|
|
|
|
|
+ }
|
|
|
startAutoRefresh();
|
|
startAutoRefresh();
|
|
|
|
|
+ } finally {
|
|
|
|
|
+ isLoading.value = false;
|
|
|
}
|
|
}
|
|
|
};
|
|
};
|
|
|
const refreshAllQuotes = async () => {
|
|
const refreshAllQuotes = async () => {
|
|
@@ -236,12 +259,17 @@ const _sfc_main = {
|
|
|
common_vendor.onLoad(() => {
|
|
common_vendor.onLoad(() => {
|
|
|
console.log("[我的股票] onLoad 触发");
|
|
console.log("[我的股票] onLoad 触发");
|
|
|
isLoggedIn.value = utils_auth.isLoggedIn();
|
|
isLoggedIn.value = utils_auth.isLoggedIn();
|
|
|
- loadMyStocks();
|
|
|
|
|
|
|
+ loadMyStocks(true);
|
|
|
});
|
|
});
|
|
|
common_vendor.onShow(() => {
|
|
common_vendor.onShow(() => {
|
|
|
console.log("[我的股票] onShow 触发");
|
|
console.log("[我的股票] onShow 触发");
|
|
|
|
|
+ const wasLoggedIn = isLoggedIn.value;
|
|
|
isLoggedIn.value = utils_auth.isLoggedIn();
|
|
isLoggedIn.value = utils_auth.isLoggedIn();
|
|
|
- loadMyStocks();
|
|
|
|
|
|
|
+ if (wasLoggedIn !== isLoggedIn.value) {
|
|
|
|
|
+ loadMyStocks(true);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ loadMyStocks(false);
|
|
|
|
|
+ }
|
|
|
common_vendor.index.setNavigationBarTitle({ title: "量化交易大师" });
|
|
common_vendor.index.setNavigationBarTitle({ title: "量化交易大师" });
|
|
|
});
|
|
});
|
|
|
common_vendor.onHide(() => {
|
|
common_vendor.onHide(() => {
|