- PaymentOrchestrator 统一返回 mode + code_url/payment_url/form_html/jsapi_params
- 支付宝:当面付二维码 / 电脑网站支付 / H5;微信:Native / H5 / JSAPI(WechatOpenid 静默授权)
- 易支付:PC mapi 二维码,移动端自动提交表单
- 删除旧键 alipay_payment_type / wechat_payment_type / epay_device 与 redirect/qr_content 字段
- 新增 pay-cashier.js,移除 window.open,订单状态接口改为 /pay/order/{n}
- 拆分 credits.js(affiliate / withdraw-history)至 1000 行以内
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
164 lines
6.2 KiB
JavaScript
164 lines
6.2 KiB
JavaScript
/**
|
|
* AKSRT withdraw history modal (split from credits.js).
|
|
*
|
|
* @package AKSRT
|
|
*/
|
|
(function () {
|
|
"use strict";
|
|
|
|
function initWithdrawHistory() {
|
|
var modal = document.querySelector('[data-aksrt-withdraw-history-modal]');
|
|
if (!modal || modal.dataset.aksrtWithdrawHistoryInitialized === '1') return;
|
|
modal.dataset.aksrtWithdrawHistoryInitialized = '1';
|
|
var list = modal.querySelector('[data-aksrt-withdraw-history-list]');
|
|
var pagination = modal.querySelector('[data-aksrt-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.aksrtWithdrawHistoryPage = 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.aksrtData && (window.aksrtData.restUrl || window.aksrtData.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.aksrtData && (window.aksrtData.restNonce || window.aksrtData.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-aksrt-withdraw-history-open]').forEach(function (btn) {
|
|
btn.addEventListener('click', function (e) { e.preventDefault(); open(); });
|
|
});
|
|
modal.querySelectorAll('[data-aksrt-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-aksrt-withdraw-history-page]');
|
|
if (!button || button.disabled) return;
|
|
e.preventDefault();
|
|
loadPage(parseInt(button.dataset.aksrtWithdrawHistoryPage || '1', 10) || 1);
|
|
});
|
|
}
|
|
}
|
|
|
|
jQuery(document).off("auto_fun.aksrt-withdraw-history").on("auto_fun.aksrt-withdraw-history", initWithdrawHistory);
|
|
})();
|