feat(shop): complete storefront archive, seller edit, revenue

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.
This commit is contained in:
2026-07-12 10:38:02 +08:00
parent 5a8f08db8a
commit f3db6c89cc
17 changed files with 1024 additions and 248 deletions
+37 -6
View File
@@ -280,16 +280,47 @@
return;
}
// Review — jump to product if possible
// Review submit modal
var reviewBtn = event.target.closest("[data-aksrt-order-review]");
if (reviewBtn) {
var reviewOrder = reviewBtn.getAttribute("data-aksrt-order-review");
var card = reviewBtn.closest("[data-aksrt-order-card]");
var productLink = card ? card.querySelector("a[href*='product']") : null;
if (productLink && productLink.href) {
window.location.href = productLink.href + (productLink.href.indexOf("#") >= 0 ? "" : "#reviews");
} else {
showToast("请到商品详情页评价");
var productId = 0;
if (card) {
var firstItem = card.querySelector("[data-product-id]");
if (firstItem) productId = Number(firstItem.getAttribute("data-product-id") || 0);
}
if (!productId) {
// try parse from item title block dataset if present
var any = card ? card.querySelector(".aksrt-orders-page__card-item") : null;
if (any && any.getAttribute("data-product-id")) {
productId = Number(any.getAttribute("data-product-id") || 0);
}
}
if (!reviewOrder) return;
var content = window.prompt("请输入评价内容(可选)", "好评!");
if (content === null) return;
var rating = window.prompt("商品评分 1-5", "5");
var r = Math.max(1, Math.min(5, parseInt(rating || "5", 10) || 5));
reviewBtn.disabled = true;
request("/shop/frontend/orders/" + reviewOrder + "/review", {
product_id: productId,
content: content || "好评!",
rating_product: r,
rating_service: r,
rating_shipping: r
}).then(function (result) {
reviewBtn.disabled = false;
if (!result || !result.success) {
showToast((result && result.message) || "评价失败");
return;
}
showToast(result.message || "评价已提交");
updateCardStatus(findOrderCard(reviewOrder), "completed", "已完成");
}).catch(function () {
reviewBtn.disabled = false;
showToast("网络错误");
});
return;
}