(silent = false)
| 2590 | } |
| 2591 | |
| 2592 | async function loadBindCardTasks(silent = false) { |
| 2593 | const tbody = document.getElementById("bind-card-task-table"); |
| 2594 | if (!tbody) return; |
| 2595 | if (bindTaskLoadPromise) { |
| 2596 | if (!silent) { |
| 2597 | toast.info("列表正在刷新,请稍候...", 1800); |
| 2598 | } |
| 2599 | return bindTaskLoadPromise; |
| 2600 | } |
| 2601 | |
| 2602 | const runner = async () => { |
| 2603 | isLoadingBindTaskList = true; |
| 2604 | if (!silent) { |
| 2605 | setButtonLoading("refresh-bind-task-btn", "刷新中...", true); |
| 2606 | } |
| 2607 | try { |
| 2608 | const params = new URLSearchParams({ |
| 2609 | page: String(bindTaskState.page), |
| 2610 | page_size: String(bindTaskState.pageSize), |
| 2611 | }); |
| 2612 | if (bindTaskState.status) params.set("status", bindTaskState.status); |
| 2613 | if (bindTaskState.search) params.set("search", bindTaskState.search); |
| 2614 | |
| 2615 | const data = await api.get(`/payment/bind-card/tasks?${params.toString()}`, { |
| 2616 | timeoutMs: 45000, |
| 2617 | retry: silent ? 0 : 1, |
| 2618 | requestKey: "payment:bind-task-list", |
| 2619 | cancelPrevious: true, |
| 2620 | silentNetworkError: silent, |
| 2621 | silentTimeoutError: silent, |
| 2622 | priority: silent ? "low" : "normal", |
| 2623 | }); |
| 2624 | const tasks = data?.tasks || []; |
| 2625 | |
| 2626 | if (!tasks.length) { |
| 2627 | tbody.innerHTML = ` |
| 2628 | <tr> |
| 2629 | <td colspan="8"><div class="empty-state">暂无绑卡任务</div></td> |
| 2630 | </tr> |
| 2631 | `; |
| 2632 | return; |
| 2633 | } |
| 2634 | |
| 2635 | tbody.innerHTML = tasks.map((task) => ` |
| 2636 | <tr> |
| 2637 | <td>${task.id}</td> |
| 2638 | <td>${escapeHtml(task.account_email || "-")}</td> |
| 2639 | <td>${String(task.plan_type || "-").toUpperCase()}</td> |
| 2640 | <td><span class="bind-task-badge ${escapeHtml(task.status || "")}">${escapeHtml(getTaskStatusText(task.status))}</span></td> |
| 2641 | <td> |
| 2642 | <a class="bind-task-url" href="${escapeHtml(task.checkout_url || "#")}" target="_blank" rel="noopener noreferrer" title="${escapeHtml(task.checkout_url || "")}"> |
| 2643 | ${escapeHtml(task.checkout_url || "-")} |
| 2644 | </a> |
| 2645 | </td> |
| 2646 | <td>${escapeHtml(task.checkout_source || "-")}</td> |
| 2647 | <td>${formatBeijingDateTime(task.created_at)}</td> |
| 2648 | <td> |
| 2649 | <div class="bind-task-actions"> |
no test coverage detected