diff --git a/frontend/dashboard/.env.development b/frontend/dashboard/.env.development index a5879907..1e59ea7f 100644 --- a/frontend/dashboard/.env.development +++ b/frontend/dashboard/.env.development @@ -4,5 +4,5 @@ PORT=8000 REACT_APP_HOST_API_URL="http://lms.test" -VITE_API_URL="https://aso-api.linksehat.dev/api/internal" -# VITE_API_URL="http://localhost:8000/api/internal" +# VITE_API_URL="https://aso-api.linksehat.dev/api/internal" +VITE_API_URL="http://localhost:8000/api/internal" diff --git a/frontend/dashboard/src/components/MoreMenu.tsx b/frontend/dashboard/src/components/MoreMenu.tsx new file mode 100644 index 00000000..90aed362 --- /dev/null +++ b/frontend/dashboard/src/components/MoreMenu.tsx @@ -0,0 +1,58 @@ +import Iconify from '@/components/Iconify'; +import MenuPopover from './MenuPopover'; +import { IconButton, MenuItem } from '@mui/material'; +import { useEffect, useState } from 'react'; + +// ---------------------------------------------------------------------- + +type Props = { + actions: React.ReactNode; +}; + +export default function MoreMenu({ actions }: Props) { + const [open, setOpen] = useState(null); + + // Close menu popover + useEffect(() => { + setOpen(null); + }, [actions]) + + const handleOpen = (event: React.MouseEvent) => { + setOpen(event.currentTarget); + }; + + const handleClose = () => { + setOpen(null); + }; + + return ( + <> + + + + + + {actions} + + + + ); +} diff --git a/frontend/dashboard/src/components/table/TableMoreMenu.tsx b/frontend/dashboard/src/components/table/TableMoreMenu.tsx index 6fe3f43e..eafaf074 100644 --- a/frontend/dashboard/src/components/table/TableMoreMenu.tsx +++ b/frontend/dashboard/src/components/table/TableMoreMenu.tsx @@ -57,4 +57,4 @@ export default function TableMoreMenu({ actions, disableRipple }: Props) {        ); -} \ No newline at end of file +} diff --git a/frontend/dashboard/src/pages/CaseManagement/LaboratoriumResult/Model/Functions.ts b/frontend/dashboard/src/pages/CaseManagement/LaboratoriumResult/Model/Functions.ts index cc674bc6..7f97102c 100644 --- a/frontend/dashboard/src/pages/CaseManagement/LaboratoriumResult/Model/Functions.ts +++ b/frontend/dashboard/src/pages/CaseManagement/LaboratoriumResult/Model/Functions.ts @@ -46,7 +46,7 @@ export const getClaimList = async ( member_id: string ): Promise => { - data.date = data.date != '' ? fDate(data.date) : ''; + data.date = data.date != '' && data.date != null ? fDate(data.date) : ''; const formData = makeFormData({...data}); diff --git a/frontend/dashboard/src/pages/Claims/Detail.tsx b/frontend/dashboard/src/pages/Claims/Detail.tsx index 546e0984..3ddf04ba 100644 --- a/frontend/dashboard/src/pages/Claims/Detail.tsx +++ b/frontend/dashboard/src/pages/Claims/Detail.tsx @@ -21,6 +21,7 @@ import FormControlLabel from '@mui/material/FormControlLabel'; import Checkbox from '@mui/material/Checkbox'; import { enqueueSnackbar } from 'notistack'; +import BenefitConfigurationList from './components/BenefitConfigurationList'; // ---------------------------------------------------------------------- @@ -43,13 +44,13 @@ export default function Detail() { .then((response) => { setCustomerData(response.data.data.customer_data); setDocumentData(response.data.data.documents); - setRequestDocumentData(response.data.data.request_documents); + setRequestDocumentData(response.data.data.request_documents); }) .catch((error) => { console.error(error); }); - }, []); + }, []); function toTitleCase(str) { return str.replace(/\w\S*/g, function(txt) { @@ -114,7 +115,7 @@ export default function Detail() { enqueueSnackbar('Something Went Wrong', { variant: 'error' }); }) } - + return ( @@ -163,7 +164,7 @@ export default function Detail() { ) : ''} {documentData ? ( - + Additional Documents @@ -175,9 +176,9 @@ export default function Detail() { {documentData?.map((documentType, index) => ( - {documentType.type === 'claim-diagnosis' ? + {documentType.type === 'claim-diagnosis' ? 'Diagnosis' - : documentType.type === 'claim-kondisi' ? + : documentType.type === 'claim-kondisi' ? 'Condition' : documentType.type === 'claim-result' ? 'Supporting Result' @@ -204,13 +205,13 @@ export default function Detail() { {requestDocumentData?.map((documentType, index) => ( - + - {documentType.type === 'claim-diagnosis' ? + {documentType.type === 'claim-diagnosis' ? 'Diagnosis' - : documentType.type === 'claim-kondisi' ? + : documentType.type === 'claim-kondisi' ? 'Condition' : documentType.type === 'claim-result' ? 'Supporting Result' @@ -272,8 +273,8 @@ export default function Detail() { ): ''} - - + + History of Hospital Care + + + + + ); +} + diff --git a/frontend/dashboard/src/pages/Claims/components/BenefitConfigurationList.tsx b/frontend/dashboard/src/pages/Claims/components/BenefitConfigurationList.tsx new file mode 100644 index 00000000..ba741ece --- /dev/null +++ b/frontend/dashboard/src/pages/Claims/components/BenefitConfigurationList.tsx @@ -0,0 +1,164 @@ +/** + * Core + * ============================================ + */ +import { useEffect, useState } from 'react'; +import { Box, Typography, Grid, MenuItem } from '@mui/material'; + +/** + * Components + * ============================================ +*/ +// - Global - +import MoreMenu from '@/components/MoreMenu'; + +/** + * Icon + * ============================================ + */ +import { EditOutlined } from '@mui/icons-material'; + +/** + * Utils, Types, Functions + * ============================================ + */ +import { BenefitConfigurationListType } from '../Model/Types'; +import { getBenefitConfigurationList } from '../Model/Functions'; +import palette from '@/theme/palette'; +import BenefitConfigurationDialog from './BenefitConfigurationDialog'; + +export default function BenefitConfigurationList() { + // State + // -------------------- + const [BenefitConfigurationList, setBenefitConfigurationList] = useState(); + const [BenefitConfigurationData, setBenefitConfigurationData] = useState(); + const [isDialogOpen, setIsDialogOpen] = useState(false); + + // Use Effect + // -------------------- + useEffect(() => { + loadDataTableData(); + }, []) + + // Load Data + // ------------------- + const loadDataTableData = async () => { + const response = await getBenefitConfigurationList(); + + setBenefitConfigurationList(response); + } + + return ( + + {/* row list */} + { + BenefitConfigurationList?.map((row, index) => { + return ( + + + + + + + {row.benefit_name} + + + + + { + setIsDialogOpen(true) + setBenefitConfigurationData(row) + }} + > + + Edit + + + } /> + + + + + + + + + {/* Amount Incurred */} + + + + + Amount Incurred + + + + + {row.amount_incurred} + + + + + + {/* Amount Approved */} + + + + + Amount Approved + + + + + {row.amount_approved} + + + + + + {/* Amount Not Approved */} + + + + + Amount Not Approved + + + + + {row.amount_not_approved} + + + + + + {/* Excess Paid* */} + + + + + Excess Paid* + + + + + {row.excess_paid} + + + + + + + + + + + ) + }) + } + + {/* Dialog */} + setIsDialogOpen(false)} /> + + ); +}