/** * Jio withdraw history modal (split from credits.js). * * @package Jio */ (function () { "use strict"; function initWithdrawHistory() { var modal = document.querySelector('[data-jio-withdraw-history-modal]'); if (!modal || modal.dataset.jioWithdrawHistoryInitialized === '1') return; modal.dataset.jioWithdrawHistoryInitialized = '1'; var list = modal.querySelector('[data-jio-withdraw-history-list]'); var pagination = modal.querySelector('[data-jio-withdraw-history-pagination]'); var statusLabels = { pending: '待处理', processing: '处理中', completed: '已完成', rejected: '已拒绝' }; var currentPage = 1; var loading = false; function text(value) { return value === null || value === undefined ? '' : String(value); } function appendText(parent, value, className) { var node = document.createElement('span'); if (className) node.className = className; node.textContent = text(value); parent.appendChild(node); return node; } function formatGrossAmount(value) { return text(value).replace(/\.00$/, ''); } function formatNetAmount(value) { return text(value); } function renderItems(items) { if (!list) return; list.textContent = ''; if (!Array.isArray(items) || !items.length) { var empty = document.createElement('div'); empty.className = 'uc-transactions__empty'; var emptyText = document.createElement('p'); emptyText.textContent = '暂无提现记录'; empty.appendChild(emptyText); list.appendChild(empty); return; } items.forEach(function (item) { var status = text(item && item.status).toLowerCase(); var row = document.createElement('div'); row.className = 'uc-withdraw-history__item'; var badge = appendText(row, statusLabels[status] || status, 'badg badg-sm uc-withdraw-history__status'); badge.classList.add(status === 'rejected' ? 'c-red' : (status === 'completed' ? 'c-green' : 'c-blue')); var gross = text(item && (item.gross_amount || item.amount)); var net = text(item && item.amount); var amount = document.createElement('span'); amount.className = 'uc-withdraw-history__amount em12'; amount.appendChild(document.createTextNode(formatGrossAmount(gross))); if (net !== '') { var netText = document.createElement('span'); netText.className = 'uc-withdraw-history__net'; netText.textContent = '(实际到账:' + formatNetAmount(net) + '元)'; amount.appendChild(netText); } row.appendChild(amount); var number = document.createElement('span'); number.className = 'uc-withdraw-history__number muted-2-color em09'; var numberLabel = document.createElement('span'); numberLabel.textContent = '订单号:'; number.appendChild(numberLabel); var code = document.createElement('code'); code.textContent = text(item && item.withdrawal_number); number.appendChild(code); row.appendChild(number); appendText(row, text(item && item.created_at), 'uc-withdraw-history__meta muted-2-color em09'); list.appendChild(row); }); } function renderPagination(page, maxPages) { if (!pagination) return; pagination.textContent = ''; if (maxPages <= 1) return; function addButton(label, target, disabled, current) { var button = document.createElement('button'); button.type = 'button'; button.className = 'uc-withdraw-history__page' + (current ? ' is-current' : ''); button.textContent = label; button.disabled = !!disabled; if (current) button.setAttribute('aria-current', 'page'); button.dataset.jioWithdrawHistoryPage = String(target); pagination.appendChild(button); } addButton('上一页', page - 1, page <= 1, false); for (var index = 1; index <= maxPages; index += 1) addButton(String(index), index, false, index === page); addButton('下一页', page + 1, page >= maxPages, false); } function loadPage(page) { if (loading || !list) return; loading = true; list.textContent = '加载中…'; var rest = (window.jioData && (window.jioData.restUrl || window.jioData.apiUrl)) || ''; if (!rest) { list.textContent = '记录加载失败,请重试'; loading = false; return; } var url = rest.replace(/\/$/, '') + '/earnings/withdrawals?page=' + encodeURIComponent(Math.max(1, page)) + '&per_page=10'; fetch(url, { credentials: 'same-origin', headers: { 'X-WP-Nonce': (window.jioData && (window.jioData.restNonce || window.jioData.nonce)) || '' } }).then(function (response) { return response.json().then(function (payload) { if (!response.ok || !payload || !Array.isArray(payload.items)) throw new Error('withdraw-history-load-failed'); currentPage = Math.max(1, parseInt(payload.page, 10) || 1); var maxPages = Math.max(1, parseInt(payload.max_pages, 10) || 1); renderItems(payload.items); renderPagination(currentPage, maxPages); }); }).catch(function () { list.textContent = '记录加载失败,请重试'; if (pagination) pagination.textContent = ''; }).finally(function () { loading = false; }); } function open() { modal.hidden = false; document.body.classList.add('uc-modal-open'); loadPage(1); } function close() { modal.hidden = true; document.body.classList.remove('uc-modal-open'); } document.querySelectorAll('[data-jio-withdraw-history-open]').forEach(function (btn) { btn.addEventListener('click', function (e) { e.preventDefault(); open(); }); }); modal.querySelectorAll('[data-jio-withdraw-history-close]').forEach(function (btn) { btn.addEventListener('click', function (e) { e.preventDefault(); close(); }); }); if (pagination) { pagination.addEventListener('click', function (e) { var button = e.target.closest('[data-jio-withdraw-history-page]'); if (!button || button.disabled) return; e.preventDefault(); loadPage(parseInt(button.dataset.jioWithdrawHistoryPage || '1', 10) || 1); }); } } jQuery(document).off("auto_fun.jio-withdraw-history").on("auto_fun.jio-withdraw-history", initWithdrawHistory); })();