// 订单明细页面JavaScript class OrderListManager { constructor() { // 统一从 AppUtils.resolveUserId() 解析 this.userId = AppUtils.resolveUserId(); if (!this.userId) { alert("未获取到用户ID,请重新登录"); // 可选:location.href = "login.html"; return; } this.lastId = null; this.pageSize = 10; this.hasMore = true; this.loading = false; this.currentRefundOrderId = null; this.init(); } init() { this.bindEvents(); this.displayUserId(); this.loadOrderList(); } bindEvents() { // 加载更多按钮事件 document.getElementById("loadMoreBtn").addEventListener("click", () => { this.loadOrderList(); }); // 退单弹窗事件 document.getElementById("cancelRefund").addEventListener("click", () => { this.hideRefundModal(); }); document.getElementById("confirmRefund").addEventListener("click", () => { this.processRefund(); }); // 点击弹窗外部关闭 document.getElementById("refundModal").addEventListener("click", (e) => { if (e.target.id === "refundModal") { this.hideRefundModal(); } }); } displayUserId() { const userIdElement = document.getElementById("userIdDisplay"); if (userIdElement && this.userId) { userIdElement.textContent = `用户ID: ${AppUtils.obfuscateUserId(this.userId)}`; } } async loadOrderList() { if (this.loading || !this.hasMore) return; this.loading = true; this.showLoading(); try { const requestData = { userId: this.userId, lastId: this.lastId, pageSize: this.pageSize }; // 调用后端API const response = await fetch( AppConfig.sPayMallUrl + "/api/v1/alipay/query_user_order_list", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(requestData) } ); const result = await response.json(); if (result.code === "0000" && result.data) { this.renderOrderList(result.data.orderList, this.lastId === null); this.hasMore = result.data.hasMore; this.lastId = result.data.lastId; // 更新加载更多按钮状态 this.updateLoadMoreButton(); } else { this.showError("加载订单列表失败: " + (result.info || "未知错误")); } } catch (error) { console.error("加载订单列表出错:", error); this.showError("网络错误,请稍后重试"); } finally { this.loading = false; this.hideLoading(); } } renderOrderList(orders, isFirstLoad = false) { const orderListElement = document.getElementById("orderList"); const emptyStateElement = document.getElementById("emptyState"); if (isFirstLoad) { orderListElement.innerHTML = ""; } if (orders && orders.length > 0) { emptyStateElement.style.display = "none"; orders.forEach((order) => { const orderElement = this.createOrderElement(order); orderListElement.appendChild(orderElement); }); } else if (isFirstLoad) { emptyStateElement.style.display = "block"; } } createOrderElement(order) { const orderDiv = document.createElement("div"); orderDiv.className = "order-item"; orderDiv.innerHTML = `