// Checkout Page JavaScript - 完全重写版本 // 全局状态 const checkoutState = { cartItems: [], // 购物车商品 addresses: [], // 用户地址列表 selectedAddress: null, // 选中的地址 coupons: [], // 可用优惠券 selectedCoupon: null, // 选中的优惠券 orderNotes: '', // 订单备注 checkoutType: 'cart', // 结算类型:'cart'(购物车) 或 'buynow'(立即购买) paymentMethod: 'wechat', // 支付方式:'wechat'(微信) 或 'alipay'(支付宝) paymentTimer: null, // 支付轮询定时器 countdownTimer: null, // 倒计时定时器 }; $(document).ready(function() { initCheckoutPage(); }); function initCheckoutPage() { const pageStartTime = Date.now(); console.log('\n=== 结算页面加载开始 ==='); // 检查结算类型 const urlParams = new URLSearchParams(window.location.search); const type = urlParams.get('type'); const productId = urlParams.get('product_id'); const skuId = urlParams.get('sku_id'); const quantity = urlParams.get('quantity'); // 绑定事件(立即绑定,不等待数据加载) bindCheckoutEvents(); // 并行加载所有数据,提升页面加载速度 console.log('🚀 开始并行加载所有数据...'); console.log('⏱️ 请求开始时间:', new Date().toLocaleTimeString()); let dataPromise; if (type === 'buynow' && productId) { // 立即购买模式 checkoutState.checkoutType = 'buynow'; console.log(' [1/3] 发起商品详情 API 请求...'); dataPromise = loadBuyNowProduct(productId, skuId, quantity); } else { // 购物车结算模式 checkoutState.checkoutType = 'cart'; console.log(' [1/3] 发起购物车 API 请求...'); dataPromise = loadCartItems(); } // 并行加载地址和商品数据 console.log(' [2/3] 发起地址 API 请求...'); const addressPromise = loadAddresses(); console.log(' [3/3] 所有并行请求已发起!'); console.log('⏱️ 请求发起时间:', new Date().toLocaleTimeString()); // 等待主要数据加载完成(地址和商品) Promise.all([addressPromise, dataPromise]) .then(() => { const pageLoadTime = Date.now() - pageStartTime; console.log(`\n✅ 页面主要内容加载完成`); console.log(` 总耗时: ${pageLoadTime}ms`); console.log(` 完成时间: ${new Date().toLocaleTimeString()}`); console.log(` 说明: 由于地址和商品并行加载,总耗时 ≈ max(地址耗时, 商品耗时)\n`); // 异步加载优惠券(不阻塞页面显示) // 使用 setTimeout 让页面先渲染,然后再加载优惠券 setTimeout(() => { loadCoupons(); }, 0); }) .catch(error => { const pageLoadTime = Date.now() - pageStartTime; console.error(`❌ 页面加载失败 (耗时: ${pageLoadTime}ms):`, error); }); } // 加载立即购买的商品 function loadBuyNowProduct(productId, skuId, quantity) { const startTime = Date.now(); console.log(' → 商品详情 API: 请求中...'); // 显示加载状态 $('#goodsList').html(`
加载中...
加载中...
购物车是空的
去逛逛暂无收货地址
暂无可用优惠券
正在生成二维码...