Merge branch 'feature/flag-log-status' into staging

This commit is contained in:
Iqbal
2026-05-05 14:35:21 +07:00
37 changed files with 812 additions and 263 deletions

View File

@@ -14,7 +14,7 @@ type DialogConfirmationType = {
setOpenDialog: any;
onSubmit?: void;
approve: string;
requestLog: DetailFinalLogType|undefined;
requestLog: DetailFinalLogType|undefined;
}
export default function DialogConfirmation({requestLog, setOpenDialog, openDialog, approve, onSubmit} : DialogConfirmationType ) {
@@ -29,7 +29,7 @@ export default function DialogConfirmation({requestLog, setOpenDialog, openDialo
// icdCodes: requestLog?.diagnosis.length ? requestLog.diagnosis.map(diagnosis => ({ value: diagnosis.id, label: diagnosis.name })) : []
icdCodes: requestLog?.diagnosis
});
const [error, setError] = useState(false);
const [icdOptions, setIcdOptions] = useState([
@@ -73,10 +73,10 @@ export default function DialogConfirmation({requestLog, setOpenDialog, openDialo
}
const handleSubmit = () => {
if (formData.type_of_member == "" && requestLog?.corporate_id == 5) { // corporate vale
if (formData.type_of_member == "" && requestLog?.view_type_member) { // corporate vale
setError(true);
alert('Silakan pilih Type Of Member sebelum mengirimkan data.');
}
}
else {
axios
.post(`customer-service/request/final-log`, formData)
@@ -121,10 +121,12 @@ export default function DialogConfirmation({requestLog, setOpenDialog, openDialo
<Typography variant='subtitle2' sx={style1} gutterBottom>Member ID</Typography>
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.member_id}</Typography>
</Stack>
<Stack direction='row' spacing={2} sx={marginBottom1}>
<Typography variant='subtitle2' sx={style1} gutterBottom>Member Of Type</Typography>
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.type_of_member}</Typography>
</Stack>
{requestLog?.view_type_member ? (
<Stack direction='row' spacing={2} sx={marginBottom1}>
<Typography variant='subtitle2' sx={style1} gutterBottom>Member Of Type</Typography>
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.type_of_member}</Typography>
</Stack>
):('')}
<Stack direction='row' spacing={2} sx={marginBottom1}>
<Typography variant='subtitle2' sx={style1} gutterBottom>Policy Number</Typography>
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.policy_number}</Typography>
@@ -189,24 +191,26 @@ export default function DialogConfirmation({requestLog, setOpenDialog, openDialo
)}
/>
</Stack>
<Stack direction='row' spacing={2} sx={marginBottom2}>
<Typography variant='subtitle2' sx={style1} gutterBottom>Type Of Member*</Typography>
<Select
fullWidth
value={formData.type_of_member}
onChange={(e) => handleChange('type_of_member', e.target.value)}
variant="outlined"
displayEmpty
required
error={error}
>
<MenuItem value="" disabled>
Type Member
</MenuItem>
<MenuItem value="OMT">OMT</MenuItem>
<MenuItem value="Non OMT">Non OMT</MenuItem>
</Select>
</Stack>
{requestLog?.view_type_member ? (
<Stack direction='row' spacing={2} sx={marginBottom2}>
<Typography variant='subtitle2' sx={style1} gutterBottom>Type Of Member</Typography>
<Select
fullWidth
value={formData.type_of_member}
onChange={(e) => handleChange('type_of_member', e.target.value)}
variant="outlined"
displayEmpty
required
error={error}
>
<MenuItem value="" disabled>
Type Member
</MenuItem>
<MenuItem value="OMT">OMT</MenuItem>
<MenuItem value="Non OMT">Non OMT</MenuItem>
</Select>
</Stack>
):('')}
</Card>
</Grid>
<DialogActions>

View File

@@ -14,7 +14,7 @@ type DialogConfirmationType = {
openDialog: boolean;
setOpenDialog: any;
onSubmit?: void;
requestLog: DetailFinalLogType|undefined;
requestLog: DetailFinalLogType|undefined;
}
export default function DialogEditFinalLOG({requestLog, setOpenDialog, openDialog, onSubmit} : DialogConfirmationType ) {
@@ -28,11 +28,14 @@ export default function DialogEditFinalLOG({requestLog, setOpenDialog, openDialo
catatan: requestLog?.catatan,
icdCodes: requestLog?.diagnosis,
reason: requestLog?.reason,
type_of_member: requestLog?.type_of_member
type_of_member: requestLog?.type_of_member,
organization_id: requestLog?.organization_id || 0,
edit: true
});
const [error, setError] = useState(false);
const [icdOptions, setIcdOptions] = useState([
{ value: '-', label: '-' }
]);
@@ -48,9 +51,9 @@ export default function DialogEditFinalLOG({requestLog, setOpenDialog, openDialo
.catch((error) => {
console.error('Error fetching ICD options:', error);
});
}, []); // useEffect dijalankan hanya sekali saat komponen dimount
useEffect(() => {
setFormData({
discharge_date: requestLog?.discharge_date|| '',
@@ -61,7 +64,11 @@ export default function DialogEditFinalLOG({requestLog, setOpenDialog, openDialo
icdCodes: requestLog?.diagnosis|| [],
reason: requestLog?.reason|| '',
type_of_member: requestLog?.type_of_member|| '',
organization_id: requestLog?.organization_id || 0,
edit: true
});
setIdProvider(requestLog?.organization_id || 0);
}, [requestLog]);
@@ -93,13 +100,13 @@ export default function DialogEditFinalLOG({requestLog, setOpenDialog, openDialo
console.error('Error fetching ICD options:', error);
});
}
const handleSubmit = () => {
if (formData.type_of_member == "" && requestLog?.corporate_id == 5) {
if (formData.type_of_member == "" && requestLog?.view_type_member) {
setError(true);
alert('Silakan pilih Type Of Member sebelum mengirimkan data.');
}
}
else if (isReasonSelected && formData.reason !== '') {
axios
.post(`customer-service/request/final-log`, formData)
@@ -117,7 +124,7 @@ export default function DialogEditFinalLOG({requestLog, setOpenDialog, openDialo
alert('Silakan pilih alasan sebelum mengirimkan data.');
}
}
const style1 = {
color: '#919EAB',
width: '30%'
@@ -140,12 +147,15 @@ export default function DialogEditFinalLOG({requestLog, setOpenDialog, openDialo
invoice_no: requestLog?.invoice_no ?? '',
catatan: requestLog?.catatan ?? '',
icdCodes: requestLog?.diagnosis ?? [],
reason: requestLog?.reason ?? '',
reason: requestLog?.reason ?? '',
type_of_member: requestLog?.type_of_member ?? '',
organization_id: requestLog?.organization_id || 0,
edit: true
});
};
const [isReasonSelected, setIsReasonSelected] = useState(true);
const handleCloseDialog = () => {
setOpenDialog(false);
resetForm();
@@ -156,11 +166,33 @@ export default function DialogEditFinalLOG({requestLog, setOpenDialog, openDialo
{ value: 'endorsement', label: 'Endorsement' },
{ value: 'renewal', label: 'Renewal' },
{ value: 'wrong_setting', label: 'Wrong Setting' },
{ value: 'approval', label: 'Approval' },
// Add more options as needed
];
// console.log(formData.type_of_member)
const [providers, setProviders] = useState([]);
const [idProvider, setIdProvider] = useState(0);
useEffect(() => {
axios
.get('/organizations')
.then((res) => {
setProviders(res.data.data || []);
})
.catch((err) => console.error(err));
}, []);
useEffect(() => {
if (requestLog?.organization_id) {
console.log(requestLog?.organization_id);
setIdProvider(requestLog.organization_id);
console.log(idProvider);
}
}, [requestLog]);
const getContent = () => (
<Stack spacing={1} marginTop={2}>
<Typography variant="subtitle2">Are you sure to edit this final log ?</Typography>
@@ -193,6 +225,26 @@ export default function DialogEditFinalLOG({requestLog, setOpenDialog, openDialo
</Card>
<Card sx={{padding:2, marginTop:2}} >
<Stack direction="row" spacing={2} sx={marginBottom2}>
<Typography variant="subtitle2" sx={style1} gutterBottom>
Provider
</Typography>
<Autocomplete
options={providers}
getOptionLabel={(option) => option.name?.trim() || '-'}
value={providers.find((item) => item.id == idProvider) || null}
onChange={(event, newValue) => {
const id = newValue?.id || 0;
setIdProvider(id);
handleChange('organization_id', id);
}}
renderInput={(params) => (
<TextField {...params} label="Provider" fullWidth />
)}
fullWidth
/>
</Stack>
<Stack direction='row' spacing={2} sx={marginBottom2}>
<Typography variant='subtitle2' sx={style1} gutterBottom>Invoice Provider</Typography>
<TextField
@@ -213,24 +265,26 @@ export default function DialogEditFinalLOG({requestLog, setOpenDialog, openDialo
onChange={(e) => handleChange('billing_no', e.target.value)}
/>
</Stack>
<Stack direction='row' spacing={2} sx={marginBottom2}>
<Typography variant='subtitle2' sx={style1} gutterBottom>Type Of Member*</Typography>
<Select
fullWidth
value={formData.type_of_member}
onChange={(e) => handleChange('type_of_member', e.target.value)}
variant="outlined"
displayEmpty
required
error={error}
>
<MenuItem value="" disabled>
Type Member
</MenuItem>
<MenuItem value="OMT">OMT</MenuItem>
<MenuItem value="Non OMT">Non OMT</MenuItem>
</Select>
</Stack>
{requestLog?.view_type_member ? (
<Stack direction='row' spacing={2} sx={marginBottom2}>
<Typography variant='subtitle2' sx={style1} gutterBottom>Type Of Member</Typography>
<Select
fullWidth
value={formData.type_of_member}
onChange={(e) => handleChange('type_of_member', e.target.value)}
variant="outlined"
displayEmpty
required
error={error}
>
<MenuItem value="" disabled>
Type Member
</MenuItem>
<MenuItem value="OMT">OMT</MenuItem>
<MenuItem value="Non OMT">Non OMT</MenuItem>
</Select>
</Stack>
):('')}
<Stack direction='row' spacing={2} sx={marginBottom2}>
<Typography variant='subtitle2' sx={style1} gutterBottom>Discharge Date</Typography>
<TextField

View File

@@ -49,6 +49,8 @@ import { LoadingButton } from '@mui/lab';
import { makeFormData } from '@/utils/jsonToFormData';
import TextField from '@mui/material/TextField';
import { fPostFormat } from '@/utils/formatTime';
import { parse } from 'date-fns';
@@ -86,32 +88,29 @@ import { format } from 'date-fns';
export default function Detail() {
//dari hospital portal
const [dischargeDate, setDischargeDate] = useState<string>(format(new Date(), "yyyy MMM d HH:mm:ss"));
const [serviceOptions, setServiceOptions] = useState([
{ value: '-', label: '-' }
]);
const [specialisOptions, setSpecialisOptions] = useState([
{ value: '-', label: '-' }
]);
useEffect(() => {
axios.get('service-member/'+1)
.then((response) => {
setServiceOptions(response.data);
}).catch((error) => {
console.error('Error fetching ICD options:', error);
});
// const [dischargeDate, setDischargeDate] = useState<string>(format(new Date(), "yyyy MMM d HH:mm:ss"));
const [dischargeDate, setDischargeDate] = useState<Date | null>(null)
axios.get('specialis')
.then((response) => {
setSpecialisOptions(response.data);
}).catch((error) => {
console.error('Error fetching ICD options:', error);
});
}, []);
// const [serviceOptions, setServiceOptions] = useState([
// { value: '-', label: '-' }
// ]);
// const [specialisOptions, setSpecialisOptions] = useState([
// { value: '-', label: '-' }
// ]);
const [serviceOptions, setServiceOptions] = useState<
{ value: string; label: string }[]
>([])
const [specialisOptions, setSpecialisOptions] = useState<
{ value: number; label: string }[]
>([])
const [serviceCode, setServiceCode] = useState<string>("");
const [idSpecialities, setIdSpecialities] = useState("");
const [idSpecialities, setIdSpecialities] = useState<number | null>(null)
const [inputDppj, setInputDppj] = useState("");
const [requestLog, setRequestLog] = useState<DetailFinalLogType>();
function submitRequestFinalLog() {
if(dischargeDate == '')
{
@@ -127,7 +126,7 @@ function submitRequestFinalLog() {
//cek dpjp
if(!inputDppj)
{
enqueueSnackbar('DPPJ', { variant: 'warning' });
enqueueSnackbar('DPJP', { variant: 'warning' });
return false;
}
setSubmitLoading(true);
@@ -136,10 +135,11 @@ function submitRequestFinalLog() {
// result_files: fileHasilPenunjangs,
// diagnosa_files: fileDiagnosas,
// kondisi_files: fileKondisis,
request_logs_id: requestLog?.id,
discharge_date: fPostFormat(dischargeDate, 'yyyy-MM-dd HH:mm:ss'),
service_code: serviceCode,
spescialis_id: idSpecialities,
dppj: inputDppj,
dppj: inputDppj
});
axios
.post('/request-final-log', formData)
@@ -163,7 +163,7 @@ function submitRequestFinalLog() {
const navigate = useNavigate();
const { themeStretch } = useSettings();
const [requestLog, setRequestLog] = useState<DetailFinalLogType>();
const [isReversal, setIsReversal] = useState(false);
const [submitLoading, setSubmitLoading] = useState(false);
@@ -199,6 +199,24 @@ function submitRequestFinalLog() {
});
}
useEffect(() => {
if (!requestLog?.id_member) return
axios.get('service-member/'+ (requestLog?.id_member ?? null))
.then((response) => {
setServiceOptions(response.data);
}).catch((error) => {
console.error('Error fetching ICD options:', error);
});
axios.get('specialis')
.then((response) => {
setSpecialisOptions(response.data);
}).catch((error) => {
console.error('Error fetching ICD options:', error);
});
}, [requestLog?.id_member]);
const updateApproval = async () => {
setSubmitLoading(true);
axios
@@ -335,6 +353,40 @@ function submitRequestFinalLog() {
);
};
useEffect(() => {
if (requestLog?.discharge_date) {
setDischargeDate(
parse(
requestLog.discharge_date,
'yyyy-MM-dd HH:mm:ss',
new Date()
)
)
}
}, [requestLog?.discharge_date])
useEffect(() => {
if (!requestLog) return
setServiceCode(requestLog.service_code ?? '')
setIdSpecialities(requestLog.specialitiesID ?? null)
setInputDppj(requestLog.dppj ?? '')
}, [requestLog])
const selectedService = useMemo(
() =>
serviceOptions.find(
(o) => String(o.value) === String(serviceCode)
) || null,
[serviceOptions, serviceCode]
)
console.log(serviceOptions);
console.log(serviceCode);
const selectedSpecialis = useMemo(
() =>
specialisOptions.find(
(o) => Number(o.value) === Number(idSpecialities)
) || null,
[specialisOptions, idSpecialities]
)
return (
<Page title='Detail'>
<Container maxWidth={themeStretch ? false : 'xl'}>
@@ -352,7 +404,7 @@ function submitRequestFinalLog() {
Detail
</Typography>
</Grid>
{requestLog?.status_final_log != 'requested' ? (
{requestLog?.status_final_log != 'approved' ? (
<Grid item xs={6} sx={{ display: 'flex', placeContent: 'end' }}>
<MoreMenu
actions={
@@ -385,10 +437,12 @@ function submitRequestFinalLog() {
<Typography variant='subtitle2' sx={style1} gutterBottom>Member ID</Typography>
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.member_id}</Typography>
</Stack>
<Stack direction='row' spacing={2} sx={marginBottom1}>
<Typography variant='subtitle2' sx={style1} gutterBottom>Type Of Member</Typography>
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.type_of_member}</Typography>
</Stack>
{requestLog?.view_type_member ? (
<Stack direction='row' spacing={2} sx={marginBottom1}>
<Typography variant='subtitle2' sx={style1} gutterBottom>Type Of Member</Typography>
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.type_of_member}</Typography>
</Stack>
):('')}
<Stack direction='row' spacing={2} sx={marginBottom1}>
<Typography variant='subtitle2' sx={style1} gutterBottom>Policy Number</Typography>
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.policy_number}</Typography>
@@ -440,7 +494,7 @@ function submitRequestFinalLog() {
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.specialities_id ? requestLog?.specialities_id : '-'}</Typography>
</Stack>
<Stack direction='row' spacing={2} sx={marginBottom1}>
<Typography variant='subtitle2' sx={style1} gutterBottom>DPPJ</Typography>
<Typography variant='subtitle2' sx={style1} gutterBottom>DPJP</Typography>
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.dppj ? requestLog?.dppj : '-'}</Typography>
</Stack>
<Stack direction='row' spacing={2} sx={marginBottom1}>
@@ -529,7 +583,7 @@ function submitRequestFinalLog() {
{/* Kolom Service Type */}
<Stack spacing={2} sx={{ flex: 1 }}>
<Typography variant="subtitle1">Tipe Service </Typography>
<Autocomplete
{/* <Autocomplete
id="service_type"
options={serviceOptions}
getOptionLabel={(option) => option.label || ""}
@@ -540,7 +594,17 @@ function submitRequestFinalLog() {
renderInput={(params) => (
<TextField {...params} label='Tipe Service' fullWidth />
)}
/>
/> */}
<Autocomplete
options={serviceOptions}
value={selectedService}
getOptionLabel={(o) => o.label}
isOptionEqualToValue={(o, v) => o.value === v.value}
onChange={(_, v) => setServiceCode(v?.value ?? '')}
renderInput={(params) => (
<TextField {...params} label="Tipe Service" fullWidth />
)}
/>
<FormHelperText style={{ color: "red" }}></FormHelperText>
</Stack>
</Stack>
@@ -549,7 +613,7 @@ function submitRequestFinalLog() {
<Stack direction="row" spacing={2}>
<Stack spacing={2} sx={{ width: '100%' }}>
<Typography variant='subtitle1'>Spesialis </Typography>
<Autocomplete
{/* <Autocomplete
id='specialities'
options={specialisOptions}
getOptionLabel={(option) => option.label || ''}
@@ -560,6 +624,16 @@ function submitRequestFinalLog() {
renderInput={(params) => (
<TextField {...params} label="Spesialis" fullWidth />
)}
/> */}
<Autocomplete
options={specialisOptions}
value={selectedSpecialis}
getOptionLabel={(o) => o.label}
isOptionEqualToValue={(o, v) => o.value === v.value}
onChange={(_, v) => setIdSpecialities(v?.value ?? null)}
renderInput={(params) => (
<TextField {...params} label="Spesialis" fullWidth />
)}
/>
<FormHelperText style={{ color: 'red' }}></FormHelperText>
</Stack>
@@ -567,12 +641,12 @@ function submitRequestFinalLog() {
<Stack direction="row" spacing={2}>
<Stack spacing={2} sx={{ width: '100%' }}>
<Typography variant='subtitle1'>DPPJ </Typography>
<Typography variant='subtitle1'>DPJP </Typography>
<TextField
id='dppj'
variant='outlined'
value={inputDppj}
placeholder="DPPJ"
placeholder="DPJP"
onChange={(event) => {
setInputDppj(event.target.value);
}}
@@ -1203,7 +1277,7 @@ function submitRequestFinalLog() {
{requestLog?.status_final_log == 'requested' ? (
<Grid item xs={12} md={12}>
<Stack direction="row" padding={4} sx={{ justifyContent: 'space-between' }}>
<Stack direction="row" padding={4} spacing={2} sx={{ justifyContent: 'flex-end' }}>
<>
<div>
<Button

View File

@@ -35,6 +35,12 @@ export type DetailFinalLogType = {
id : number,
code : string,
member_id : string,
view_type_member : any,
organization_id : any,
id_member : string,
service_code : string,
specialitiesID : any,
dppj : any,
invoice_no : string,
billing_no : string,
provider : string,

View File

@@ -16,7 +16,7 @@ type DialogConfirmationType = {
setOpenDialog: any;
onSubmit?: void;
approve: string;
requestLog: DetailRequestLogType|undefined;
requestLog: DetailRequestLogType|undefined;
}
export default function DialogConfirmation({requestLog, setOpenDialog, openDialog, approve, onSubmit} : DialogConfirmationType ) {
@@ -55,10 +55,10 @@ export default function DialogConfirmation({requestLog, setOpenDialog, openDialo
}));
handleSubmit();
};
const handleSubmit = () => {
if (formData.type_of_member == "" && requestLog?.corporate_id == 5) {
if (formData.type_of_member == "" && requestLog?.view_type_member) {
setError(true);
alert('Silakan pilih Type Of Member sebelum mengirimkan data.');
} else {
@@ -121,7 +121,7 @@ export default function DialogConfirmation({requestLog, setOpenDialog, openDialo
handleChange('keterangan', `${formData.keterangan}\n`);
}
};
const getContent = () => (
<Stack spacing={1} marginTop={2}>
@@ -132,10 +132,12 @@ export default function DialogConfirmation({requestLog, setOpenDialog, openDialo
<Typography variant='subtitle2' sx={style1} gutterBottom>Member ID</Typography>
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.member_id}</Typography>
</Stack>
<Stack direction='row' spacing={2} sx={marginBottom1}>
<Typography variant='subtitle2' sx={style1} gutterBottom>Type of Member</Typography>
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.type_of_member}</Typography>
</Stack>
{requestLog?.view_type_member ? (
<Stack direction='row' spacing={2} sx={marginBottom1}>
<Typography variant='subtitle2' sx={style1} gutterBottom>Type of Member</Typography>
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.type_of_member}</Typography>
</Stack>
):('')}
<Stack direction='row' spacing={2} sx={marginBottom1}>
<Typography variant='subtitle2' sx={style1} gutterBottom>Policy Number</Typography>
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.policy_number}</Typography>
@@ -206,24 +208,26 @@ export default function DialogConfirmation({requestLog, setOpenDialog, openDialo
onChange={(e) => handleChange('penempatan_kamar', e.target.value)}
/>
</Stack>
<Stack direction='row' spacing={2} sx={marginBottom2}>
<Typography variant='subtitle2' sx={style1} gutterBottom>Type Of Member*</Typography>
<Select
fullWidth
value={formData.type_of_member}
onChange={(e) => handleChange('type_of_member', e.target.value)}
variant="outlined"
displayEmpty
required
error={error}
>
<MenuItem value="" disabled>
Type Member
</MenuItem>
<MenuItem value="OMT">OMT</MenuItem>
<MenuItem value="Non OMT">Non OMT</MenuItem>
</Select>
</Stack>
{requestLog?.view_type_member ? (
<Stack direction='row' spacing={2} sx={marginBottom2}>
<Typography variant='subtitle2' sx={style1} gutterBottom>Type Of Member</Typography>
<Select
fullWidth
value={formData.type_of_member}
onChange={(e) => handleChange('type_of_member', e.target.value)}
variant="outlined"
displayEmpty
required
error={error}
>
<MenuItem value="" disabled>
Type Member
</MenuItem>
<MenuItem value="OMT">OMT</MenuItem>
<MenuItem value="Non OMT">Non OMT</MenuItem>
</Select>
</Stack>
):('')}
</Card>
</Grid>
<DialogActions>
@@ -234,7 +238,7 @@ export default function DialogConfirmation({requestLog, setOpenDialog, openDialo
<Button color="error" variant="contained" onClick={() => handleApprove()}>Decline</Button>
) }
</DialogActions>
</Stack>
);

View File

@@ -17,7 +17,7 @@ type DialogConfirmationType = {
openDialog: boolean;
setOpenDialog: any;
onSubmit?: void;
requestLog: DetailRequestLogType|undefined;
requestLog: DetailRequestLogType|undefined;
}
export default function DialogEditInformation({requestLog, setOpenDialog, openDialog, onSubmit} : DialogConfirmationType ) {
@@ -34,7 +34,7 @@ export default function DialogEditInformation({requestLog, setOpenDialog, openDi
const [error, setError] = useState(false);
const [isReasonSelected, setIsReasonSelected] = useState(true);
useEffect(() => {
// Update formData setiap kali requestLog berubah
setFormData({
@@ -65,10 +65,10 @@ export default function DialogEditInformation({requestLog, setOpenDialog, openDi
}));
handleSubmit();
};
const handleSubmit = () => {
if (formData.type_of_member == "" && requestLog?.corporate_id == 5) {
if (formData.type_of_member == "" && requestLog?.view_type_member) {
setError(true);
alert('Silakan pilih Type Of Member sebelum mengirimkan data.');
} else if (isReasonSelected && formData.reason !== '') {
@@ -88,7 +88,7 @@ export default function DialogEditInformation({requestLog, setOpenDialog, openDi
alert('Silakan pilih alasan sebelum mengirimkan data.');
}
}
const style1 = {
@@ -114,7 +114,7 @@ export default function DialogEditInformation({requestLog, setOpenDialog, openDi
penempatan_kamar: requestLog?.penempatan_kamar ?? '',
reason: requestLog?.reason ?? '',
type_of_member: requestLog?.type_of_member ?? ''
});
};
@@ -201,24 +201,26 @@ export default function DialogEditInformation({requestLog, setOpenDialog, openDi
onChange={(e) => handleChange('penempatan_kamar', e.target.value)}
/>
</Stack>
<Stack direction='row' spacing={2} sx={marginBottom2}>
<Typography variant='subtitle2' sx={style1} gutterBottom>Type Of Member*</Typography>
<Select
fullWidth
value={formData.type_of_member}
onChange={(e) => handleChange('type_of_member', e.target.value)}
variant="outlined"
displayEmpty
required
error={error}
>
<MenuItem value="" disabled>
Type Member
</MenuItem>
<MenuItem value="OMT">OMT</MenuItem>
<MenuItem value="Non OMT">Non OMT</MenuItem>
</Select>
</Stack>
{requestLog?.view_type_member ? (
<Stack direction='row' spacing={2} sx={marginBottom2}>
<Typography variant='subtitle2' sx={style1} gutterBottom>Type Of Member</Typography>
<Select
fullWidth
value={formData.type_of_member}
onChange={(e) => handleChange('type_of_member', e.target.value)}
variant="outlined"
displayEmpty
required
error={error}
>
<MenuItem value="" disabled>
Type Member
</MenuItem>
<MenuItem value="OMT">OMT</MenuItem>
<MenuItem value="Non OMT">Non OMT</MenuItem>
</Select>
</Stack>
):('')}
<Stack direction='row' spacing={2} sx={marginBottom2}>
<Typography variant='subtitle2' sx={style1} gutterBottom>Reason*</Typography>
<Autocomplete

View File

@@ -116,10 +116,12 @@ export default function Detail() {
<Typography variant='subtitle2' sx={style1} gutterBottom>Member ID</Typography>
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.member_id}</Typography>
</Stack>
<Stack direction='row' spacing={2} sx={marginBottom1}>
<Typography variant='subtitle2' sx={style1} gutterBottom>Type Of Member</Typography>
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.type_of_member}</Typography>
</Stack>
{requestLog?.view_type_member ? (
<Stack direction='row' spacing={2} sx={marginBottom1}>
<Typography variant='subtitle2' sx={style1} gutterBottom>Type Of Member</Typography>
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.type_of_member}</Typography>
</Stack>
):('')}
<Stack direction='row' spacing={2} sx={marginBottom1}>
<Typography variant='subtitle2' sx={style1} gutterBottom>Policy Number</Typography>
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.policy_number}</Typography>
@@ -162,7 +164,7 @@ export default function Detail() {
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.specialities_id ? requestLog?.specialities_id : '-'}</Typography>
</Stack>
<Stack direction='row' spacing={2} sx={marginBottom1}>
<Typography variant='subtitle2' sx={style1} gutterBottom>DPPJ</Typography>
<Typography variant='subtitle2' sx={style1} gutterBottom>DPJP</Typography>
<Typography variant='subtitle2' sx={style2} gutterBottom>{requestLog?.dppj ? requestLog?.dppj : '-'}</Typography>
</Stack>
</Card>
@@ -192,7 +194,7 @@ export default function Detail() {
</Grid>
{requestLog?.status == 'requested' || requestLog?.status == 'canceled' || requestLog?.status == 'waiting_billing' ? (
<Grid item xs={12} md={12}>
<Stack direction="row" padding={4} sx={{ justifyContent: 'space-between' }}>
<Stack direction="row" padding={4} spacing={2} sx={{ justifyContent: 'flex-end' }}>
<>
<div>
<Button

View File

@@ -39,6 +39,7 @@ export type file = {
export type DetailRequestLogType = {
id : number,
code : string,
view_type_member : any,
member_id : string,
policy_number : string,
name : string,