Pesanan Saya (Dropshipper)
Riwayat Pesanan Dropship
Buat Pesanan Baru

Memuat pesanan Anda...

const STATUS_CONFIG = { waiting_payment: { label: 'Menunggu Pembayaran', badge: 'bg-warning text-dark', icon: 'fa-clock' }, processing: { label: 'Diproses Gudang', badge: 'bg-info text-dark', icon: 'fa-box' }, picking: { label: 'Gudang: Picking', badge: 'bg-info text-dark', icon: 'fa-hand-paper' }, packing: { label: 'Gudang: Packing', badge: 'bg-primary', icon: 'fa-box-open' }, shipped: { label: 'Sedang Dikirim', badge: 'bg-primary', icon: 'fa-shipping-fast' }, completed: { label: 'Pesanan Selesai', badge: 'bg-success', icon: 'fa-check-circle' }, cancelled: { label: 'Pesanan Dibatalkan', badge: 'bg-secondary', icon: 'fa-times-circle' } }; async function loadMyOrders(page = 1) { currentPage = page; const container = document.getElementById('orders-container'); container.innerHTML = '

Memuat pesanan Anda...

'; let qs = `?page=${page}&per_page=10`; if (currentStatusFilter) qs += `&status=${encodeURIComponent(currentStatusFilter)}`; const res = await api('GET', '/api/orders' + qs); if (!res || !res.data) { container.innerHTML = '
Gagal mengambil daftar pesanan.
'; return; } const orders = res.data; const meta = res.meta || { page: 1, per_page: 10, total: orders.length, total_pages: 1 }; if (!orders.length) { container.innerHTML = `
Belum Ada Pesanan

Anda belum memiliki transaksi pesanan pada kategori ini.

Mulai Belanja Produk
`; document.getElementById('info-paging').textContent = '0 Pesanan'; document.getElementById('pagination').innerHTML = ''; return; } container.innerHTML = orders.map(o => renderOrderCard(o)).join(''); const from = (meta.page - 1) * meta.per_page + 1; const to = Math.min(meta.page * meta.per_page, meta.total); document.getElementById('info-paging').textContent = `Menampilkan ${from}–${to} dari ${meta.total} Pesanan`; let pagHtml = ''; for (let p = 1; p <= meta.total_pages; p++) { pagHtml += `
  • ${p}
  • `; } document.getElementById('pagination').innerHTML = pagHtml; } function renderOrderCard(o) { const cfg = STATUS_CONFIG[o.status] || { label: o.status, badge: 'bg-secondary', icon: 'fa-info-circle' }; const dateStr = o.created_at ? new Date(o.created_at).toLocaleDateString('id-ID', { day:'2-digit', month:'short', year:'numeric', hour:'2-digit', minute:'2-digit' }) : '—'; const items = o.items || []; const itemsHtml = items.length ? items.map(item => { const rawImg = item.image_url || item.product_image || item.image || (item.product && item.product.images && item.product.images[0] ? (item.product.images[0].path || item.product.images[0].image_url) : null); const imgSrc = rawImg ? (rawImg.startsWith('http') ? rawImg : API_BASE + '/' + rawImg.replace(/^\//, '')) : null; return `
    ${imgSrc ? `` : ``}
    ${escHtml(item.product_name || item.product?.name || 'Produk Dropship')}
    SKU: ${escHtml(item.sku || '—')} ${(item.variant_name || item.variant?.name) ? '• Variasi: '+escHtml(item.variant_name || item.variant?.name) : ''}
    ${item.qty} x ${formatRupiah(item.unit_price || 0)}
    ${formatRupiah((item.unit_price || 0) * (item.qty || 1))}
    `; }).join('') : '
    Informasi produk terlampir
    '; let actionButtons = `Detail Pesanan`; if (o.status === 'waiting_payment') { actionButtons += `Upload Bukti Bayar`; } if (o.status === 'shipped' && o.tracking_number) { actionButtons += ``; } if (o.status === 'completed') { actionButtons += `Ajukan Retur`; } return `
    No. Order: ${escHtml(o.no_order)} ${dateStr}
    ${cfg.label}
    Penerima Customer: ${escHtml(o.ship_name || o.dropshipper_name || '—')} (${escHtml(o.ship_phone || '—')})
    ${escHtml([o.ship_address, o.ship_city, o.ship_postal].filter(Boolean).join(', '))}
    ${itemsHtml}
    `; } function filterStatus(el, status) { document.querySelectorAll('#status-pills .nav-link').forEach(l => l.classList.remove('active')); el.classList.add('active'); currentStatusFilter = status; loadMyOrders(1); } function copyResi(resi) { navigator.clipboard.writeText(resi); showToast(`Nomor resi ${resi} berhasil disalin!`); } function escHtml(s) { return String(s || '').replace(/&/g,'&').replace(//g,'>').replace(/"/g,'"'); } loadMyOrders(1);