"use client"; import { useResultStore } from "@/common/stores/useResultStore"; import { StockOpnameRes } from "@/common/types/stockOpname"; import { Button, Pagination, Skeleton, Spacer, Spinner } from "@nextui-org/react" import { useQuery } from "@tanstack/react-query"; import { useSearchParams } from "next/navigation"; import { useRouter } from "next/navigation"; import styles from "./table.module.css" import clsxm from "@/common/libs/clsxm"; import DetailRow from "./DetailRow"; import { useDebounce } from "usehooks-ts"; import getClientCredential from "@/common/libs/getClientCredential"; import { SHOWING_SELECTIONS } from "@/common/constants/result"; import Link from "next/link"; import { useState } from "react"; import moment from "moment"; const Table = () => { const credential = getClientCredential() const params = useSearchParams() const router = useRouter() const page = params.get('page') ?? '1' const { filter: { company, search, show } } = useResultStore() const debouncedSearch = useDebounce(search, 500) const stockOpnames = useQuery({ queryKey: ['stockOpnames', company, debouncedSearch, page, show], queryFn: async () => { const searchParams = new URLSearchParams() if (!company) return null searchParams.set('companyId', company) const showValue = SHOWING_SELECTIONS.find((item) => item.key === show)?.value || '' searchParams.set('show', showValue); if (debouncedSearch) searchParams.set('search', debouncedSearch) searchParams.set('page', page); return await fetch(`/api/stock-opname?${searchParams}`) .then(res => res.json()) }, }) const { filter } = useResultStore() const [exportLoad, setExportLoad] = useState(false) const exportResult = async () => { setExportLoad(true) const response = await fetch(`/api/stock-opname/export?companyId=${filter.company}`) const buffer = await response.arrayBuffer() console.log({ type: response.headers.get('type') }); const blob = new Blob([buffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }) const url = window.URL.createObjectURL(blob) const a = document.createElement('a') a.href = url a.download = `export_${moment().format('MM_DD_HH_ss')}.xlsx` document.body.appendChild(a) a.click() document.body.removeChild(a) setExportLoad(false) } return ( <>
{stockOpnames.data?.result.map((stockOpname: StockOpnameRes['result']) => ( <> ))} {stockOpnames.data?.result.length === 0 && ( )} {stockOpnames.isLoading && ( )}
STATUS NAMA PRODUK TIM HITUNG 1 TIM HITUNG 2 TIM HITUNG 3 TIM VERIFIKASI ON-HAND QTY GUDANG SELISIH
{stockOpname.isDifferent ? 'Selisih' : 'Aman'}
{stockOpname.itemCode ? `[${stockOpname.itemCode}] ` : ''} {stockOpname.name} {stockOpname.barcode ? ` [${stockOpname.barcode}]` : ''} {credential?.team == 'VERIFICATION' && typeof stockOpname.quantity.COUNT1 === 'number' ? stockOpname.quantity.COUNT1 : '-'} {credential?.team == 'VERIFICATION' && typeof stockOpname.quantity.COUNT2 === 'number' ? stockOpname.quantity.COUNT2 : '-'} {credential?.team == 'VERIFICATION' && typeof stockOpname.quantity.COUNT3 === 'number' ? stockOpname.quantity.COUNT3 : '-'} {credential?.team == 'VERIFICATION' && typeof stockOpname.quantity.VERIFICATION === 'number' ? stockOpname.quantity.VERIFICATION : '-'} {credential?.team == 'VERIFICATION' ? stockOpname.onhandQty : '-'} {credential?.team == 'VERIFICATION' ? stockOpname.differenceQty : '-'}
Belum ada data untuk ditampilkan
{Array.from({ length: 6 }, (_, i) => ( ))}
router.push(`?page=${page}`)} />
) } export default Table