import DesktopView from '@/core/components/views/DesktopView'; import MobileView from '@/core/components/views/MobileView'; import Menu from '@/lib/auth/components/Menu'; import { EllipsisVerticalIcon, MagnifyingGlassIcon, } from '@heroicons/react/24/outline'; import ImageNext from 'next/image'; import { useEffect } from 'react'; import { useRouter } from 'next/router'; import { useQuery } from 'react-query'; import _, { forEach } from 'lodash-contrib'; import Spinner from '@/core/components/elements/Spinner/Spinner'; import Manifest from '@/lib/treckingAwb/component/Manifest'; import { useState } from 'react'; import Pagination from '@/core/components/elements/Pagination/Pagination'; import Link from 'next/link'; import TransactionStatusBadge from '@/lib/transaction/components/TransactionStatusBadge'; const { listShipments } = require('../api/listShipment'); const Shipments = () => { const router = useRouter(); const { q = '', page = 1, status = null } = router.query; const [paramStatus, setParamStatus] = useState(status); const limit = 15; const query = { q: q, status: paramStatus, offset: (page - 1) * limit, limit, }; const [inputQuery, setInputQuery] = useState(q); const queryString = _.toQuery(query); const { data: shipments } = useQuery('shipments' + queryString, () => listShipments({ query: queryString }) ); const [idAWB, setIdAWB] = useState(null); const pageCount = Math.ceil(shipments?.pickingTotal / limit); let pageQuery = _.omit(query, ['limit', 'offset', 'context']); pageQuery = _.pickBy(pageQuery, _.identity); pageQuery = _.toQuery(pageQuery); const closePopup = () => { setIdAWB(null); }; const handleSubmit = async (e) => { e.preventDefault(); router.push(`${router.pathname}?q=${inputQuery}`); }; const filterStatus = async (status) => { if (status === paramStatus) { setParamStatus(null); } else { setParamStatus(status); } }; useEffect(() => { const resetQuery = () => { const newQuery = { status: paramStatus || undefined, q: '', page: 1, }; router.push({ pathname: router.pathname, query: newQuery, }); }; if (paramStatus !== status) { resetQuery(); } }, [paramStatus]); return ( <>
setInputQuery(e.target.value)} />
{shipments?.pickings.map((shipment) => (

Kurir :{' '} {shipment.carrierName || '-'}

No. Resi : {shipment.trackingNumber || '-'}

{shipment?.status === 'completed' && (

Pesanan Tiba

)} {shipment?.status === 'shipment' && (

Sedang Dikirim

)} {shipment?.status === 'pending' && (

Pending

)}

No. Transaksi

{shipment.saleOrder.name}

{shipment.date}

))}

Pengiriman

Detail Pengiriman

setInputQuery(e.target.value)} />
{!shipments && ( )} {shipments && shipments?.pickings?.length == 0 && ( )} {shipments?.pickings.map((shipment) => ( ))}
Tanggal No. Resi No. Dokumen Sales Order Purchase Order Expedisi Status
Tidak ada transaksi
{shipment.date || '-'} {shipment.trackingNumber || '-'} {shipment.name || '-'} {shipment.saleOrder.name || '-'} {shipment.saleOrder.clientOrderRef || '-'} {shipment.carrierName || '-'}
); }; const CardStatus = ({ device, paramStatus, shipments, filterStatus }) => { const status = [`pending`, `shipment`, `completed`]; return ( <> {status.map((value) => { const statusData = getStatusLabel(device, value, shipments); if (device === 'desktop') { return (
filterStatus(value)} >

{statusData.label}

{statusData.image}

{statusData.shipCount} Pesanan

); } else { return (
filterStatus(value)} > {statusData.image}

{statusData.label}

{' '} {statusData.shipCount} {'>'}

); } })} ); }; const getStatusLabel = (device, status, shipments) => { let images = null; switch (status) { case 'pending': if (device === 'desktop') { images = (
); } else { images = (
); } return { label: 'Pending', shipCount: shipments?.summary?.pendingCount, image: images, }; case 'shipment': if (device === 'desktop') { images = (
); } else { images = (
); } return { label: 'Pengiriman', shipCount: shipments?.summary?.shipmentCount, image: images, }; case 'completed': if (device === 'desktop') { images = (
); } else { images = (
); } return { label: 'Pesanan Tiba', shipCount: shipments?.summary?.completedCount, image: images, }; default: return 'Status Tidak Dikenal'; } }; export default Shipments;