// 订单管理JavaScript功能 document.addEventListener('DOMContentLoaded', function() { // 初始化所有模态框 const shipModal = new bootstrap.Modal(document.getElementById('shipModal')); const refundModal = new bootstrap.Modal(document.getElementById('refundModal')); const cancelModal = new bootstrap.Modal(document.getElementById('cancelModal')); // 当前操作的订单ID let currentOrderId = null; // 显示发货模态框 window.showShipModal = function(orderId, orderSn) { currentOrderId = orderId; document.getElementById('shipOrderSn').value = orderSn; shipModal.show(); }; // 显示退款模态框 window.showRefundModal = function(orderId, orderSn) { currentOrderId = orderId; document.getElementById('refundOrderSn').value = orderSn; refundModal.show(); }; // 显示取消模态框 window.showCancelModal = function(orderId, orderSn) { currentOrderId = orderId; document.getElementById('cancelOrderSn').value = orderSn; cancelModal.show(); }; // 处理发货表单提交 document.getElementById('shipForm').addEventListener('submit', function(e) { e.preventDefault(); if (!currentOrderId) { showAlert('错误', '订单ID不能为空', 'danger'); return; } const formData = new FormData(this); const submitBtn = this.querySelector('button[type="submit"]'); // 显示加载状态 const originalText = submitBtn.innerHTML; submitBtn.innerHTML = ' 处理中...'; submitBtn.disabled = true; fetch(`/admin/orders/${currentOrderId}/ship`, { method: 'POST', body: formData }) .then(response => response.json()) .then(data => { if (data.success) { showAlert('成功', '发货成功!', 'success'); shipModal.hide(); setTimeout(() => { location.reload(); }, 1000); } else { showAlert('错误', data.message || '发货失败', 'danger'); } }) .catch(error => { console.error('Error:', error); showAlert('错误', '网络请求失败', 'danger'); }) .finally(() => { // 恢复按钮状态 submitBtn.innerHTML = originalText; submitBtn.disabled = false; }); }); // 处理退款表单提交 document.getElementById('refundForm').addEventListener('submit', function(e) { e.preventDefault(); if (!currentOrderId) { showAlert('错误', '订单ID不能为空', 'danger'); return; } const formData = new FormData(this); const submitBtn = this.querySelector('button[type="submit"]'); // 显示加载状态 const originalText = submitBtn.innerHTML; submitBtn.innerHTML = ' 处理中...'; submitBtn.disabled = true; fetch(`/admin/orders/${currentOrderId}/refund`, { method: 'POST', body: formData }) .then(response => response.json()) .then(data => { if (data.success) { showAlert('成功', '退款成功!', 'success'); refundModal.hide(); setTimeout(() => { location.reload(); }, 1000); } else { showAlert('错误', data.message || '退款失败', 'danger'); } }) .catch(error => { console.error('Error:', error); showAlert('错误', '网络请求失败', 'danger'); }) .finally(() => { // 恢复按钮状态 submitBtn.innerHTML = originalText; submitBtn.disabled = false; }); }); // 处理取消表单提交 document.getElementById('cancelForm').addEventListener('submit', function(e) { e.preventDefault(); if (!currentOrderId) { showAlert('错误', '订单ID不能为空', 'danger'); return; } const formData = new FormData(this); const submitBtn = this.querySelector('button[type="submit"]'); // 显示加载状态 const originalText = submitBtn.innerHTML; submitBtn.innerHTML = ' 处理中...'; submitBtn.disabled = true; fetch(`/admin/orders/${currentOrderId}/cancel`, { method: 'POST', body: formData }) .then(response => response.json()) .then(data => { if (data.success) { showAlert('成功', '订单取消成功!', 'success'); cancelModal.hide(); setTimeout(() => { location.reload(); }, 1000); } else { showAlert('错误', data.message || '取消失败', 'danger'); } }) .catch(error => { console.error('Error:', error); showAlert('错误', '网络请求失败', 'danger'); }) .finally(() => { // 恢复按钮状态 submitBtn.innerHTML = originalText; submitBtn.disabled = false; }); }); // 通用提示函数 function showAlert(title, message, type) { // 创建提示框 const alertDiv = document.createElement('div'); alertDiv.className = `alert alert-${type} alert-dismissible fade show position-fixed`; alertDiv.style.cssText = 'top: 20px; right: 20px; z-index: 9999; min-width: 300px;'; alertDiv.innerHTML = ` ${title} ${message} `; document.body.appendChild(alertDiv); // 3秒后自动关闭 setTimeout(() => { if (alertDiv.parentNode) { alertDiv.parentNode.removeChild(alertDiv); } }, 3000); } }); // 旋转动画CSS(如果需要) if (!document.querySelector('#admin-orders-style')) { const style = document.createElement('style'); style.id = 'admin-orders-style'; style.textContent = ` .spin { animation: spin 1s linear infinite; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } `; document.head.appendChild(style); }