Wire product cat/tag archives to settings-driven sort and AJAX paging, seller product options/video/params editing, revenue withdraw form and order review submit — finishing remaining shop frontend gaps after buy-path.
115 lines
3.3 KiB
JavaScript
115 lines
3.3 KiB
JavaScript
/**
|
|
* Creator revenue / withdraw form.
|
|
*
|
|
* @package AKSRT
|
|
*/
|
|
(function () {
|
|
"use strict";
|
|
|
|
var page = document.querySelector("[data-aksrt-revenue-page]");
|
|
if (!page || !window.aksrtData) return;
|
|
|
|
function restBase() {
|
|
return ((aksrtData.siteUrl || "").replace(/\/$/, "")) + "/wp-json/aksrt/v1";
|
|
}
|
|
|
|
function rest(path, method, body) {
|
|
var opts = {
|
|
method: method || "GET",
|
|
credentials: "same-origin",
|
|
headers: { "X-WP-Nonce": aksrtData.restNonce || "" },
|
|
};
|
|
if (body !== undefined) {
|
|
opts.headers["Content-Type"] = "application/json";
|
|
opts.body = JSON.stringify(body);
|
|
}
|
|
return fetch(restBase() + path, opts).then(function (r) {
|
|
return r.json();
|
|
});
|
|
}
|
|
|
|
var form = page.querySelector("[data-aksrt-withdraw-form]");
|
|
var msg = page.querySelector("[data-aksrt-withdraw-msg]");
|
|
var balanceEl = page.querySelector("[data-aksrt-revenue-balance]");
|
|
var list = page.querySelector("[data-aksrt-withdraw-list]");
|
|
|
|
if (!form) return;
|
|
|
|
form.addEventListener("submit", function (e) {
|
|
e.preventDefault();
|
|
var fd = new FormData(form);
|
|
var amount = Number(fd.get("amount") || 0);
|
|
var method = String(fd.get("method") || "alipay");
|
|
var account = String(fd.get("account_info") || "").trim();
|
|
var min = Number(page.getAttribute("data-min-amount") || 50);
|
|
if (amount < min) {
|
|
if (msg) {
|
|
msg.hidden = false;
|
|
msg.textContent = "最低提现金额为 " + min;
|
|
}
|
|
return;
|
|
}
|
|
if (!account) {
|
|
if (msg) {
|
|
msg.hidden = false;
|
|
msg.textContent = "请填写收款账户信息";
|
|
}
|
|
return;
|
|
}
|
|
|
|
var btn = form.querySelector('button[type="submit"]');
|
|
if (btn) {
|
|
btn.disabled = true;
|
|
btn.textContent = "提交中...";
|
|
}
|
|
|
|
rest("/shop/frontend/revenue/withdraw", "POST", {
|
|
amount: amount,
|
|
method: method,
|
|
account_info: account,
|
|
})
|
|
.then(function (result) {
|
|
if (btn) {
|
|
btn.disabled = false;
|
|
btn.textContent = "提交提现申请";
|
|
}
|
|
if (!result || !result.success) {
|
|
if (msg) {
|
|
msg.hidden = false;
|
|
msg.textContent = (result && result.message) || "提现失败";
|
|
}
|
|
return;
|
|
}
|
|
if (msg) {
|
|
msg.hidden = false;
|
|
msg.textContent = result.message || "提现申请已提交";
|
|
}
|
|
if (balanceEl && result.data && typeof result.data.balance !== "undefined") {
|
|
balanceEl.textContent = "¥" + Number(result.data.balance).toFixed(2);
|
|
}
|
|
if (list && result.data) {
|
|
var item = document.createElement("div");
|
|
item.className = "aksrt-revenue-page__item";
|
|
item.innerHTML =
|
|
"<div><strong>¥" +
|
|
Number(result.data.amount || amount).toFixed(2) +
|
|
"</strong><span>" +
|
|
method +
|
|
"</span></div><div><span>pending</span><time>just now</time></div>";
|
|
list.insertBefore(item, list.firstChild);
|
|
}
|
|
form.reset();
|
|
})
|
|
.catch(function () {
|
|
if (btn) {
|
|
btn.disabled = false;
|
|
btn.textContent = "提交提现申请";
|
|
}
|
|
if (msg) {
|
|
msg.hidden = false;
|
|
msg.textContent = "网络错误";
|
|
}
|
|
});
|
|
});
|
|
})();
|