()
| 994 | } |
| 995 | |
| 996 | function renderBatchProfiles() { |
| 997 | const wrap = document.getElementById("billing-batch-wrap"); |
| 998 | const summary = document.getElementById("billing-batch-summary"); |
| 999 | const tbody = document.getElementById("billing-batch-table"); |
| 1000 | if (!wrap || !summary || !tbody) return; |
| 1001 | |
| 1002 | if (!billingBatchProfiles.length) { |
| 1003 | wrap.style.display = "none"; |
| 1004 | tbody.innerHTML = ""; |
| 1005 | summary.textContent = ""; |
| 1006 | return; |
| 1007 | } |
| 1008 | |
| 1009 | wrap.style.display = ""; |
| 1010 | summary.textContent = `已识别 ${billingBatchProfiles.length} 条资料,点击“填充”可写入下方表单。`; |
| 1011 | tbody.innerHTML = billingBatchProfiles.map((item, index) => { |
| 1012 | const parsed = item.parsed || {}; |
| 1013 | const address = parsed.raw_address || [ |
| 1014 | parsed.address_line1, |
| 1015 | parsed.address_city, |
| 1016 | parsed.address_state, |
| 1017 | parsed.postal_code, |
| 1018 | ].filter(Boolean).join(", "); |
| 1019 | return ` |
| 1020 | <tr> |
| 1021 | <td>${index + 1}</td> |
| 1022 | <td class="bind-mask">${escapeHtml(maskCardNumber(parsed.card_number))}</td> |
| 1023 | <td>${escapeHtml(formatExpiryInput(parsed.exp_month, parsed.exp_year) || "-")}</td> |
| 1024 | <td>${escapeHtml(parsed.cvv ? "***" : "-")}</td> |
| 1025 | <td>${escapeHtml(parsed.country_code || "-")}</td> |
| 1026 | <td>${escapeHtml(address || "-")}</td> |
| 1027 | <td><button type="button" class="btn btn-secondary btn-sm" onclick="fillFromBatchProfile(${index})">填充</button></td> |
| 1028 | </tr> |
| 1029 | `; |
| 1030 | }).join(""); |
| 1031 | } |
| 1032 | |
| 1033 | function parseBatchBillingText() { |
| 1034 | const text = getInputValue("billing-paste-text"); |
no test coverage detected