import { DatatablePrimeV2 } from '@/components/Datatables-v2' import { Label } from '@/components/Label' import { Belakang } from '@/components/Layouts' import { Judul } from '@/components/TextCustom' import { TagihanDelete, TagihanList } from '@/services/pengajuan-tagihan/tagihan-service' import { JenisTagihanList } from '@/services/referensi/jenisTagihan-service' import { Formik } from 'formik' import moment from 'moment' import Head from 'next/head' import { useRouter } from 'next/router' import { Button } from 'primereact/button' import { Calendar } from 'primereact/calendar' import { Card } from 'primereact/card' import { Column } from 'primereact/column' import { DataTable } from 'primereact/datatable' import { Dropdown } from 'primereact/dropdown' import { InputText } from 'primereact/inputtext' import { Toast } from 'primereact/toast' import React, { useEffect, useRef, useState } from 'react' export default function PengajuanTagihan() { const toast = useRef(null) const [data, setData] = useState([]) const [dialogDelete, setDialogDelete] = useState({ visible: false }) const [expandedRows, setExpandedRows] = useState(null) const [ddJenisTagihan, setDdJenisTagihan] = useState([]) const [search, setSearch] = useState({}) const router = useRouter() const [loading, setLoading] = useState(false) const [refresh, setRefresh] = useState(0) // DATATABLE const [sort, setSort] = useState([]) const [orderDir, setOrderDir] = useState('desc') const [orderCol, setOrderCol] = useState(2) const [first, setFirst] = useState(0) const [page, setPage] = useState(0) const [length, setLength] = useState(10) const [totalRecords, setTotalRecords] = useState(0) useEffect(() => { JenisTagihanList().then((res) => setDdJenisTagihan(res.data)) }, []) useEffect(() => { setLoading(true) let params = { draw: page, start: first, length: length, order_col: orderCol, order_dir: orderDir, } const { no_spp, jenis_tagihan, tanggal_input } = search params.no_spp = no_spp ? no_spp : '' params.jenis_tagihan = jenis_tagihan ? jenis_tagihan : '' params.tanggal_input = tanggal_input ? moment(tanggal_input).format('YYYY-MM-DD') : '' TagihanList(params).then((res) => { setData(res.data) setLoading(false) setTotalRecords( res.recordsFiltered === 1 ? 1 : res.recordsFiltered < 1 ? res.recordsFiltered : res.recordsFiltered ) }) }, [page, first, length, orderCol, orderDir, refresh, search]) const editTagihan = (data) => { if (data.tanggal_kirim === '-' && data.detail.length > 0) { router.push({ pathname: '/pengajuan-tagihan/draft/[draft]', query: { draft: data.tagihan_id } }) } else if (data.tanggal_kirim === '-') { router.push({ pathname: '/pengajuan-tagihan/force-close/[force]', query: { force: data.tagihan_id } }) } else { router.push({ pathname: '/pengajuan-tagihan/ditolak/[ditolak]', query: { ditolak: data.tagihan_id } }) } } const deleteTagihan = () => { TagihanDelete({ ref_id: dialogDelete.ref_id }).then((res) => { if (res.status === 'success') { setRefresh(Math.random) setDialogDelete({ visible: false }) toast.current.show({ severity: 'success', detail: res.message, closable: false, }) } else { setDialogDelete({ visible: false }) toast.current.show({ severity: 'error', detail: res.message, closable: false, }) } }) } const actionBodyTemplate = (rowData) => { return (
) } const bodyTanggal = (rowData) => { return rowData.tanggal_spp !== '-' ? ( moment(rowData.tanggal_spp).format('DD MMMM YYYY') ) : ( ) } const datatableDetail = (data) => { return ( ) } const expandRow = { expandedRows: expandedRows, onRowToggle: (e) => setExpandedRows(e.data), responsiveLayout: 'scroll', rowExpansionTemplate: (e) => datatableDetail(e.detail), dataKey: 'no_spp', } const Pencarian = ( { const tempTanggalInput = values.tanggal_input values.tanggal_input && Object.assign(values, { tanggal_input: moment(values.tanggal_input).format('YYYY-MM-D') }) setSearch(values) values.tanggal_input = tempTanggalInput }} > {({ values, handleChange, handleSubmit }) => { return (
) }}
) const bodyStatus = (rowData) => { let status if (rowData.tahapan === 6) { status = } else if (rowData.penolakan === true || rowData.pernah_ditolak === true) { status = } else { status = '-' } return status } const allowExpansion = (rowData) => { return rowData.detail.length > 0 } return ( <> Pengajuan Tagihan Pengajuan Tagihan {Pencarian}
{ setSort(e.multiSortMeta) if (e.multiSortMeta.length > 0) { switch (e.multiSortMeta[0].field) { case 'no_spp': setOrderCol(0) break case 'nama_tagihan': setOrderCol(1) break case 'tanggal': setOrderCol(2) break } switch (e.multiSortMeta[0].order) { case -1: setOrderDir('desc') break case 1: setOrderDir('asc') break } } }} setFirst={setFirst} setLength={setLength} setPage={setPage} sort={sort} totalRecords={totalRecords} page={page} expandRow={expandRow} >
) }