feat(payment): 售后详细弹窗申请表单分行展示(原因/申请资料/申请说明)

This commit is contained in:
2026-10-06 18:08:02 +00:00
parent ea88499996
commit 365b2eafe5
+33 -3
View File
@@ -28,8 +28,8 @@
})(); })();
var NONCE = (window.aksrtData && window.aksrtData.restNonce) || ''; var NONCE = (window.aksrtData && window.aksrtData.restNonce) || '';
var MAX_IMAGES = 3; var MAX_IMAGES = 3;
// 不可再申请售后(工单未结束 / 已完结 / 超过时效)时的固定提示。 // 不可再申请售后(工单流转中 / 已完结 / 超过时效)时的固定提示。
var REAPPLY_BLOCKED_TEXT = '该无法再次申请售后,该订单已售后,暂不支持再次申请售后。'; var REAPPLY_BLOCKED_TEXT = '该订单当前状态暂不支持再次申请售后。';
var STATUS_LABELS = { var STATUS_LABELS = {
pending: '待审核', pending: '待审核',
@@ -190,7 +190,16 @@
html += detailRow('完成时间', String(latest.completed_at || '')); html += detailRow('完成时间', String(latest.completed_at || ''));
html += '</div>'; html += '</div>';
if (latest.reason) { // 申请表单分行展示:预置原因 / 申请资料 / 申请说明各自独立成行,
// 与上方「申请时间」等明细行同格式;老数据无 apply_form 时兜底展示融合串。
var applyForm = latest.apply_form && typeof latest.apply_form === 'object' ? latest.apply_form : null;
if (applyForm) {
html += detailRow('原因', String(applyForm.reason_label || ''));
(Array.isArray(applyForm.materials) ? applyForm.materials : []).forEach(function (material) {
html += detailRow(String((material && material.label) || ''), String((material && material.value) || ''));
});
html += detailRow('申请说明', String(applyForm.description || ''));
} else if (latest.reason) {
html += '<div class="mb10"><div class="muted-2-color em09 mb6">申请原因</div>' + html += '<div class="mb10"><div class="muted-2-color em09 mb6">申请原因</div>' +
'<div class="em09 aksrt-after-sale-reason-text">' + escapeHtml(latest.reason).replace(/\r\n|\r|\n/g, '<br>') + '</div></div>'; '<div class="em09 aksrt-after-sale-reason-text">' + escapeHtml(latest.reason).replace(/\r\n|\r|\n/g, '<br>') + '</div></div>';
} }
@@ -365,6 +374,24 @@
}); });
} }
function selectedReasonLabel(shell) {
var active = shell.querySelector('[data-aksrt-after-sale-reason].active');
return active ? String(active.getAttribute('data-aksrt-after-sale-reason') || '') : '';
}
function collectMaterials(shell) {
var materials = [];
Array.prototype.forEach.call(shell.querySelectorAll('[data-aksrt-after-sale-material]'), function (input) {
var value = String(input.value || '').trim();
if (value === '') return;
materials.push({
label: String(input.getAttribute('data-aksrt-after-sale-material') || ''),
value: value,
});
});
return materials;
}
function composeReason(shell) { function composeReason(shell) {
var parts = []; var parts = [];
var active = shell.querySelector('[data-aksrt-after-sale-reason].active'); var active = shell.querySelector('[data-aksrt-after-sale-reason].active');
@@ -413,6 +440,9 @@
}, },
body: JSON.stringify({ body: JSON.stringify({
reason: composeReason(shell), reason: composeReason(shell),
reason_label: selectedReasonLabel(shell),
materials: collectMaterials(shell),
description: reasonText,
images: collectImages(shell), images: collectImages(shell),
}), }),
}) })