// mui import { Container, Grid, Stack, Typography, Card, TextField, Divider, ButtonBase, Box, IconButton, MenuItem } from '@mui/material'; // components import Page from '../../components/Page'; // utils import useSettings from '../../hooks/useSettings'; // react import { useNavigate, useParams, useLocation } from 'react-router-dom'; import { useEffect, useState, useRef } from 'react'; import axios from '../../utils/axios'; // pages import DetailTimeline from '../../pages/ClaimRequests/DetailTimeline'; import DetailStepper from '../../pages/ClaimRequests/DetailStepper'; import { format } from 'date-fns'; import ArrowBackIosIcon from '@mui/icons-material/ArrowBackIos'; import Button from '@mui/material/Button'; import AddIcon from '@mui/icons-material/Add'; import RemoveIcon from '@mui/icons-material/Remove'; import { DatePicker, LocalizationProvider } from '@mui/x-date-pickers'; import { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns'; import Iconify from '@/components/Iconify'; import { fDate, fPostFormat } from '@/utils/formatTime'; import InsertDriveFileIcon from '@mui/icons-material/InsertDriveFile'; import DownloadIcon from '@mui/icons-material/Download'; import { Dialog, DialogTitle, DialogContent, DialogActions } from '@mui/material'; import CloseIcon from '@mui/icons-material/Close'; import { fDateTimesecond } from '@/utils/formatTime'; import { makeFormData } from '@/utils/jsonToFormData'; import { enqueueSnackbar } from 'notistack'; import { BenefitData, DetailClaimRequest } from './Model/Types'; import { Delete, EditOutlined } from '@mui/icons-material'; import { fNumber } from '@/utils/formatNumber'; import palette from '@/theme/palette'; import MoreMenu from '@/components/MoreMenu'; import DialogUploadFileFinalLog from './Components/DialogUploadFileFinalLog'; import DialogDeleteFileLog from './Components/DialogDeleteFileLog'; import DialogBenefit from '../CustomerService/FinalLog/Components/DialogBenefit'; import DialogDeleteBenefit from '../CustomerService/FinalLog/Components/DialogDeleteBenefit'; import DialogEditBenefit from '../CustomerService/FinalLog/Components/DialogEditBenefit'; import DialogConfirmation from './Components/DialogConfirmation'; // ---------------------------------------------------------------------- export default function Detail() { const location = useLocation(); const queryParams = new URLSearchParams(location.search); const navigate = useNavigate(); const { themeStretch } = useSettings(); const [claimRequests, setClaimRequest] = useState(); const [openDialogSubmit, setOpenDialogSubmit] = useState(false); const { id } = useParams(); useEffect(() => { axios .get('claim-requests/detail/'+id) .then((response) => { setClaimRequest(response.data.data) }) .catch((error) => { console.error(error); }) }, [id]); function toTitleCase(str: string | null) { return str.replace(/\w\S*/g, function(txt) { return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); }); } const style1 = { color: '#919EAB', width: '30%' } const style2 = { width: '70%' } const style3 = { color: '#919EAB', width: '35%' } const marginBottom1 = { marginBottom: 1, } // Handle Add Benefit const [openDialogBenefit, setDialogBenefit] = useState(false); const [approve, setApprove] = useState(''); // Handle Delete File LOG const [pathFile, setPathFile] = useState('') const [dialogDeleteFIleLog, setDialogDeleteFileLog] = useState(false) // Handle Upload File LOG const [dialogUploadFileLog, setDialogUploadFileLog] = useState(false) // Buat total data // const totalAmountIncurred = (claimRequests?.benefit_data || []).reduce((accumulator, item) => { // return accumulator + (item.amount_incurred || 0); // }, 0); const totalAmountIncurred = claimRequests?.request_log?.total_amount_incurred; const totalAmountApproved = claimRequests?.request_log?.total_amount_approved; const totalAmountNotApproved = claimRequests?.request_log?.total_amount_not_approved const totalExcessPaid = claimRequests?.request_log?.total_excess_paid // Handle Delete Detail Benefit const [idBenefitData, setIdBenefitData] = useState(); const [openDialogDeleteBenefit, setDialogDeleteBenefit] = useState(false) // Handle Edit Detail Benefit const [openDialogEditBenefit, setDialogEditBenefit] = useState(false) const [BenefitConfigurationData, setBenefitConfigurationData] = useState(); const total = { totalAmountIncurred : totalAmountIncurred, totalAmountApproved : totalAmountApproved, totalAmountNotApproved : totalAmountNotApproved, totalExcessPaid : totalExcessPaid, } return ( navigate(-1)} sx={{cursor:'pointer'}}/> {(claimRequests && claimRequests.code ? claimRequests.code : '')} {/* Detail */} Details Provider Name {claimRequests?.provider} Member ID {claimRequests?.member_id} Policy Number {claimRequests?.policy_number} Name {claimRequests?.name} Date Of Birth {claimRequests?.date_of_birth ? fDate(claimRequests?.date_of_birth) : '-'} Marital Status {claimRequests?.marital_status} Submission Date {claimRequests?.submission_date ? fDateTimesecond(claimRequests?.submission_date) : '-'} No KTP {claimRequests?.no_identitas ? claimRequests?.no_identitas : '-'} Keterangan {claimRequests?.keterangan ? claimRequests?.keterangan : '-'} Hak Kamar Pasien {claimRequests?.hak_kamar_pasien ? claimRequests?.hak_kamar_pasien : '-'} Penempatan Kamar {claimRequests?.penempatan_kamar ? claimRequests?.penempatan_kamar : '-'} Diagnosis {claimRequests?.diagnosis?.length > 0 ? (
    {claimRequests?.diagnosis.map((diagnosisItem, index) => (
  • {diagnosisItem.code} - {diagnosisItem.name}
  • // Replace 'name' with the property you want to display ))}
) : (

No diagnosis available.

)}
{/* Service */} Service Service Type {claimRequests?.service_type} Claim Method {toTitleCase(claimRequests?.claim_method ?? '-')} {/* Document */} Document {claimRequests?.files?.map((documentType, index) => ( {documentType.original_name ? documentType.original_name : '-'} { setDialogDeleteFileLog(true) setPathFile(documentType.path) }} aria-label="delete" size="small" sx={{ marginLeft: 'auto' }}> ))} {/* Benefit */} Benefit {claimRequests?.request_log?.benefit_data?.map((item, index) => ( {item.benefit?.description} { setDialogEditBenefit(true) setIdBenefitData(item.id) setBenefitConfigurationData(item) }} > Edit { setIdBenefitData(item.id) setDialogDeleteBenefit(true) }} > Delete } /> {/* Amount Incurred */} Amount Incurred {fNumber(item.amount_incurred)} {/* Amount Approved */} Amount Approved {fNumber(item.amount_approved)} {/* Amount Not Approved */} Amount Not Approved {fNumber(item.amount_not_approved)} {/* Excess Paid* */} Excess Paid {fNumber(item.excess_paid)} {/* Keterangan* */} Keterangan {item.keterangan} ))}

{claimRequests?.request_log?.benefit_data && claimRequests?.request_log?.benefit_data.length > 0 ? ( Total Benefit {/* Amount Incurred */} Amount Incurred {totalAmountIncurred ? fNumber(totalAmountIncurred) : '0'} {/* Amount Approved */} Amount Approved {totalAmountApproved ? fNumber(totalAmountApproved) : '0'} {/* Amount Not Approved */} Amount Not Approved {totalAmountNotApproved ? fNumber(totalAmountNotApproved) : 0} {/* Excess Paid* */} Excess Paid {totalExcessPaid ? fNumber(totalExcessPaid) : 0} Biaya disetujui {totalAmountApproved ? fNumber(totalAmountApproved) : '0'} Nominal diatas 1 juta akan menunggu persetujuan senior analyst ) : ( null )}
{/* PR Buat pindahin ke componen */} {/* */} {/* Dialog Edit */} {/* Dialog Delete */} {/* Dialog Edit Detai; */} {/* */} {(claimRequests?.status === 'requested') || (claimRequests?.status === 'decline') ? (
{/* Perubahan sintaksis disini */}
) : null}
) }