diff --git a/App.vue b/App.vue
index f714d78..98a46aa 100644
--- a/App.vue
+++ b/App.vue
@@ -1,71 +1,32 @@
\ No newline at end of file
+/* 每个页面公共css */
+page {
+ background-color: #F3F4F6;
+ font-family: 'Inter', 'Noto Sans SC', sans-serif;
+ --brand-color: #064e3b;
+ --brand-light: #10B981;
+}
+
+/* 通用工具类 */
+.bg-white { background-color: #ffffff; }
+.rounded-2xl { border-radius: 32rpx; }
+.shadow-sm { box-shadow: 0 2rpx 6rpx rgba(0,0,0,0.05); }
+.flex-row { display: flex; flex-direction: row; }
+.flex-col { display: flex; flex-direction: column; }
+.items-center { align-items: center; }
+.justify-between { justify-content: space-between; }
+
diff --git a/main.js b/main.js
index c1caf36..1366a39 100644
--- a/main.js
+++ b/main.js
@@ -13,8 +13,17 @@ app.$mount()
// #ifdef VUE3
import { createSSRApp } from 'vue'
+import api from './utils/api'
+
+console.log('🚀 应用启动,导入api模块')
+
export function createApp() {
const app = createSSRApp(App)
+
+ // 全局注册api
+ app.config.globalProperties.$api = api
+ console.log('✅ api已全局注册为 $api')
+
return {
app
}
diff --git a/pages/index/index.vue b/pages/index/index.vue
index 8172ffc..4e148a2 100644
--- a/pages/index/index.vue
+++ b/pages/index/index.vue
@@ -18,17 +18,17 @@
¥
- {{ assetData.totalValue.toLocaleString('zh-CN', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) }}
+ {{ (assetData.totalValue || 0).toLocaleString('zh-CN', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) }}
今日账面变动
- {{ assetData.todayProfit >= 0 ? '+' : '' }}¥{{ assetData.todayProfit.toLocaleString('zh-CN', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) }}
+ {{ (assetData.todayProfit || 0) >= 0 ? '+' : '' }}¥{{ (assetData.todayProfit || 0).toLocaleString('zh-CN', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) }}
历史总变动
- {{ assetData.totalReturnRate >= 0 ? '+' : '' }}{{ assetData.totalReturnRate }}%
+ {{ (assetData.totalReturnRate || 0) >= 0 ? '+' : '' }}{{ assetData.totalReturnRate || 0 }}%
@@ -75,11 +75,11 @@
当前估值
- ¥ {{ holding.value.toLocaleString('zh-CN', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) }}
+ ¥ {{ (holding.value || 0).toLocaleString('zh-CN', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) }}
历史总变动
- {{ holding.returnRate >= 0 ? '+' : '' }}{{ holding.returnRate }}%
+ {{ (holding.returnRate || 0) >= 0 ? '+' : '' }}{{ holding.returnRate || 0 }}%
@@ -107,9 +107,11 @@ const holdings = ref([]);
// 从后端API获取资产数据的函数
const fetchAssetData = async () => {
try {
+ console.log('开始获取资产数据...');
const response = await api.assets.getAssetData();
if (response.code === 200) {
assetData.value = response.data;
+ console.log('资产数据获取成功');
}
} catch (error) {
console.error('获取资产数据失败:', error);
@@ -119,17 +121,23 @@ const fetchAssetData = async () => {
// 从后端API获取持仓组合数据的函数
const fetchHoldingsData = async () => {
try {
+ console.log('开始获取持仓数据...');
const response = await api.assets.getHoldings();
if (response.code === 200) {
- holdings.value = response.data;
+ // 处理响应数据结构,获取 items 数组
+ holdings.value = response.data.items || [];
+ console.log('持仓数据获取成功,items数量:', holdings.value.length);
+ console.log('持仓数据:', holdings.value);
}
} catch (error) {
console.error('获取持仓数据失败:', error);
}
};
-// 页面加载时获取数据
+// 页面加载时检查登录状态
onMounted(async () => {
+ console.log('首页加载,开始加载数据...');
+
await Promise.all([
fetchAssetData(),
fetchHoldingsData()
@@ -143,10 +151,6 @@ const goConfig = () => {
const goDetail = (holdingId) => {
uni.navigateTo({ url: `/pages/detail/detail?id=${holdingId}` });
};
-
-const goStrategies = () => {
- uni.switchTab({ url: '/pages/strategies/strategies' });
-};
\ No newline at end of file
diff --git a/utils/api.js b/utils/api.js
index b5cecc9..32d3346 100644
--- a/utils/api.js
+++ b/utils/api.js
@@ -2,12 +2,225 @@
* API工具类 - 统一封装后端API请求
*/
+console.log('📦 api.js 模块加载成功')
+
// API基础URL
-const BASE_URL = 'https://api.assetmanager.com';
+const BASE_URL = 'https://localhost:7040/';
// 请求超时时间
const TIMEOUT = 10000;
+// 登录锁,防止并发登录
+let loginLock = null;
+
+/**
+ * 获取微信登录码
+ * @returns {Promise} - 返回微信登录码
+ */
+const getWechatCode = () => {
+ return new Promise((resolve, reject) => {
+ uni.login({
+ provider: 'weixin',
+ success: (res) => {
+ if (res.code) {
+ console.log('📱 微信登录码获取成功:', res.code);
+ resolve(res.code);
+ } else {
+ console.error('📱 微信登录码获取失败:', res.errMsg);
+ reject(new Error(`微信登录码获取失败: ${res.errMsg}`));
+ }
+ },
+ fail: (err) => {
+ console.error('📱 微信登录失败:', err);
+ reject(new Error(`微信登录失败: ${err.errMsg}`));
+ }
+ });
+ });
+};
+
+/**
+ * 执行微信登录
+ * @returns {Promise