diff --git a/sdk/userSocket.ts b/sdk/userSocket.ts index 5e5f3db..d1f2cca 100644 --- a/sdk/userSocket.ts +++ b/sdk/userSocket.ts @@ -112,27 +112,34 @@ export class UserSdk { // 拼接 Token const separator = baseUrl.includes('?') ? '&' : '?'; this.url = `${baseUrl}${separator}token=${this.token}`; + + console.log('[UserSdk] 初始化:', { + url: this.url.replace(/token=[^&]+/, 'token=***'), + autoReconnect: this.autoReconnect, + reconnectInterval: this.reconnectInterval, + maxReconnectAttempts: this.maxReconnectAttempts, + }); } // 连接 public connect() { if (this.ws) { - console.warn("UserSdk: WebSocket already connected or connecting"); + console.warn('[UserSdk] 已连接或正在连接,跳过'); return; } try { - console.log(`UserSdk: Connecting to ${this.url}...`); + console.log('[UserSdk] 正在连接...', this.url.replace(/token=[^&]+/, 'token=***')); this.ws = new WebSocket(this.url); this.ws.onopen = (event: Event) => { - console.log("UserSdk: Connected"); + console.log('[UserSdk] 已连接'); this.reconnectAttempts = 0; this.listeners.connect.forEach(cb => cb(event)); }; this.ws.onclose = (event: CloseEvent) => { - console.log(`UserSdk: Disconnected (Code: ${event.code})`); + console.log('[UserSdk] 已断开', { code: event.code, reason: event.reason, wasClean: event.wasClean }); this.ws = null; this.listeners.disconnect.forEach(cb => cb(event)); @@ -142,7 +149,7 @@ export class UserSdk { }; this.ws.onerror = (event: Event) => { - console.error("UserSdk: Error", event); + console.error('[UserSdk] WebSocket 错误', event); this.listeners.error.forEach(cb => cb(event)); }; @@ -152,18 +159,19 @@ export class UserSdk { const msg = JSON.parse(raw) as UserMsg; this.handleMessage(msg); } catch (e) { - console.error("UserSdk: Failed to parse message", event.data); + console.error('[UserSdk] 消息解析失败', event.data, e); } }; } catch (e) { - console.error("UserSdk: Connection failed", e); + console.error('[UserSdk] 连接失败', e); if (this.autoReconnect) this.handleReconnect(); } } // 断开连接 public disconnect() { + console.log('[UserSdk] 主动断开连接'); this.isExplicitClose = true; if (this.ws) { this.ws.close(); @@ -175,31 +183,35 @@ export class UserSdk { private handleMessage(msg: UserMsg) { switch (msg.type) { case 'welcome': + console.log('[UserSdk] 收到 welcome', msg.msg ?? msg); this.listeners.welcome.forEach(cb => cb(msg)); break; case 'order_update': + console.log('[UserSdk] 收到 order_update', msg.data); this.listeners.order.forEach(cb => cb(msg.data)); break; case 'position_update': + console.log('[UserSdk] 收到 position_update', msg.data); this.listeners.position.forEach(cb => cb(msg.data)); break; case 'balance_update': + console.log('[UserSdk] 收到 balance_update', msg.data); this.listeners.balance.forEach(cb => cb(msg.data)); break; default: - console.warn("UserSdk: Unknown message type", msg); + console.warn('[UserSdk] 未知消息类型', msg); } } // 重连逻辑 private handleReconnect() { if (this.reconnectAttempts >= this.maxReconnectAttempts) { - console.error("UserSdk: Max reconnect attempts reached"); + console.error('[UserSdk] 已达最大重连次数', this.maxReconnectAttempts); return; } this.reconnectAttempts++; - console.log(`UserSdk: Reconnecting in ${this.reconnectInterval}ms (Attempt ${this.reconnectAttempts})...`); + console.log('[UserSdk] 重连中...', { attempt: this.reconnectAttempts, max: this.maxReconnectAttempts, delayMs: this.reconnectInterval }); setTimeout(() => { this.connect(); }, this.reconnectInterval); diff --git a/src/api/category.ts b/src/api/category.ts index d2cac4b..2e3413a 100644 --- a/src/api/category.ts +++ b/src/api/category.ts @@ -230,7 +230,6 @@ export async function getPmTagMain(): Promise { const res = await get<{ code: number; data: GetPmTagCatalogData; msg: string }>( '/pmTagCatalog/getPmTagCatalogPublic' ) - console.log('[getPmTagCatalogPublic] 原始响应:', JSON.stringify(res, null, 2)) let raw: PmTagCatalogItem[] = [] const d = res.data if (d && typeof d === 'object' && !Array.isArray(d)) { diff --git a/src/components/TradeComponent.vue b/src/components/TradeComponent.vue index 988ebff..f4abdbd 100644 --- a/src/components/TradeComponent.vue +++ b/src/components/TradeComponent.vue @@ -1684,7 +1684,6 @@ const showDepositForBuy = computed(() => !canAffordBuy.value) /** Buy 模式且余额不足时显示 Deposit,否则显示 Buy Yes/No */ const deposit = () => { - console.log('Depositing amount:', amount.value) // 实际应用中,这里应该调用存款API } @@ -1731,7 +1730,6 @@ async function submitOrder() { return } const uid = userStore?.user?.ID ?? 0 - console.log('[submitOrder] 用户信息: user=', userStore.user, 'uid=', uid) const userIdNum = typeof uid === 'number' ? uid @@ -1739,7 +1737,6 @@ async function submitOrder() { ? parseInt(String(uid), 10) : 0 if (!Number.isFinite(userIdNum) || userIdNum <= 0) { - console.warn('[submitOrder] 用户信息异常: user=', userStore.user, 'uid=', uid) orderError.value = t('trade.userError') return } diff --git a/src/components/WithdrawDialog.vue b/src/components/WithdrawDialog.vue index a2bdfba..fcc32a6 100644 --- a/src/components/WithdrawDialog.vue +++ b/src/components/WithdrawDialog.vue @@ -194,9 +194,6 @@ async function submitWithdraw() { submitting.value = true try { await new Promise((r) => setTimeout(r, 800)) - const dest = - destinationType.value === 'wallet' ? connectedAddress.value : customAddress.value.trim() - console.log('Withdraw', { amount: amount.value, network: selectedNetwork.value, to: dest }) emit('success') close() } finally { diff --git a/src/stores/user.ts b/src/stores/user.ts index 25d9f6b..00be991 100644 --- a/src/stores/user.ts +++ b/src/stores/user.ts @@ -75,12 +75,8 @@ export const useUserStore = defineStore('user', () => { balance.value = formatUsdcBalance(String(avail)) } }) - sdk.onConnect(() => { - console.log('[UserStore] UserSocket 已连接') - }) - sdk.onDisconnect(() => { - console.log('[UserStore] UserSocket 已断开') - }) + sdk.onConnect(() => {}) + sdk.onDisconnect(() => {}) sdk.onError((e) => { console.error('[UserStore] UserSocket 错误:', e) }) @@ -161,7 +157,6 @@ export const useUserStore = defineStore('user', () => { if (!headers) return try { const res = await getUserInfo(headers) - console.log('[fetchUserInfo] 接口响应:', JSON.stringify(res, null, 2)) const data = res.data as Record | undefined // 接口返回 data.userInfo 或 data.user,取实际用户对象;若仍含 userInfo 则再取一层 let u = (data?.userInfo ?? data?.user ?? data) as Record diff --git a/src/views/EventMarkets.vue b/src/views/EventMarkets.vue index c4e0a09..0cd4039 100644 --- a/src/views/EventMarkets.vue +++ b/src/views/EventMarkets.vue @@ -348,11 +348,15 @@ function generateDataForMarket(baseChance: number, range: string): [number, numb function generateAllData(): ChartSeriesItem[] { const range = selectedTimeRange.value - return markets.value.map((market) => { + const list = markets.value + return list.map((market, i) => { const chance = marketChance(market) - const name = (market.question || 'Market').slice(0, 32) + const base = (market.question || 'Market').slice(0, 32) + const baseName = base + (base.length >= 32 ? '…' : '') + // 确保图例 name 唯一,否则 ECharts 会合并导致左右切换箭头不显示 + const name = list.length > 1 ? `${baseName} (${i + 1}/${list.length})` : baseName return { - name: name + (name.length >= 32 ? '…' : ''), + name, data: generateDataForMarket(chance || 20, range), } }) @@ -432,7 +436,7 @@ function buildOption(seriesArr: ChartSeriesItem[], containerWidth?: number) { itemGap: 12, }, grid: { - left: 16, + left: 8, right: 48, top: 40, bottom: isMobile ? 44 : 28, @@ -458,6 +462,15 @@ function initChart() { chartInstance = echarts.init(chartContainerRef.value) const w = chartContainerRef.value.clientWidth chartInstance.setOption(buildOption(chartData.value, w)) + + // 数据打印,便于分析 + console.log('[EventMarkets] 数据分析:', { + marketsCount: markets.value.length, + chartSeriesCount: chartData.value.length, + containerWidth: w, + legendData: chartData.value.map((s) => ({ name: s.name, nameLen: s.name.length, points: s.data.length })), + eventDetail: eventDetail.value ? { title: eventDetail.value.title, id: eventDetail.value.ID } : null, + }) } function updateChartData() { @@ -556,7 +569,6 @@ function onTradeSubmit(payload: { marketId?: string }) { // 可在此调用下单 API,payload 含 marketId(当前市场) - console.log('Trade submit', payload) } const toastStore = useToastStore() diff --git a/src/views/Home.vue b/src/views/Home.vue index ffa5eca..a83eff0 100644 --- a/src/views/Home.vue +++ b/src/views/Home.vue @@ -612,7 +612,6 @@ async function loadEvents(page: number, append: boolean, keyword?: string) { }) } catch (e) { if (!append) eventList.value = [] - console.warn('getPmEventList failed', e) } } diff --git a/src/views/Login.vue b/src/views/Login.vue index bb049c4..d2be0f2 100644 --- a/src/views/Login.vue +++ b/src/views/Login.vue @@ -64,7 +64,6 @@ const connectWithWallet = async () => { }) const walletAddress = accounts[0] - console.log('Connected to wallet with account:', walletAddress) if (!walletAddress || !/^0x[0-9a-fA-F]{40}$/.test(walletAddress)) { throw new Error('Invalid wallet address format. Please check your wallet connection.') diff --git a/src/views/TradeDetail.vue b/src/views/TradeDetail.vue index e4394c8..c4b4db8 100644 --- a/src/views/TradeDetail.vue +++ b/src/views/TradeDetail.vue @@ -296,6 +296,23 @@ async function loadEventDetail() { }) if (res.code === 0 || res.code === 200) { eventDetail.value = res.data ?? null + // 单个市场详情数据打印,便于分析 + const ev = eventDetail.value + console.log('[TradeDetail] 单个市场详情:', { + id: ev?.ID ?? ev?.id, + title: ev?.title, + slug: ev?.slug, + volume: ev?.volume, + endDate: ev?.endDate, + marketsCount: ev?.markets?.length ?? 0, + firstMarket: ev?.markets?.[0] + ? { + question: ev.markets[0].question, + outcomePrices: ev.markets[0].outcomePrices, + marketId: ev.markets[0].marketId, + } + : null, + }) } else { detailError.value = res.msg || t('error.loadFailed') eventDetail.value = null @@ -791,7 +808,7 @@ function buildOption(chartData: [number, number][], containerWidth?: number) { axisPointer: { animation: false }, }, grid: { - left: 48, + left: 8, right: 48, top: 16, bottom: isMobile ? 44 : 28,