Merge branch 'ui/master-diagnosis' into staging

This commit is contained in:
korospace
2023-10-26 10:18:57 +07:00
9 changed files with 207 additions and 179 deletions

View File

@@ -90,6 +90,13 @@ const navConfig = [
], ],
}, },
{
title: 'MASTER',
children: [
{ title: 'Diagnosis', path: '/master/diagnosis' },
],
},
{ {
title: 'USER MANAGEMENT', title: 'USER MANAGEMENT',
path: '/users', path: '/users',

View File

@@ -18,25 +18,24 @@ export default function Divisions() {
<HeaderBreadcrumbs <HeaderBreadcrumbs
heading={ pageTitle } heading={ pageTitle }
sx={{ px: 2 }}
links={[ links={[
{ {
name: 'Master', name: 'Master',
href: '/master/diagnosis-template', href: '/master/diagnosis',
},
{
name: 'Diagnosis Template',
href: '/master/diagnosis-template',
}, },
{ {
name: 'Diagnosis', name: 'Diagnosis',
href: '/master/diagnosis-template', href: '/master/diagnosis',
},
{
name: 'Diagnosis',
href: '/master/diagnosis',
}, },
]} ]}
/> />
<Card>
<List /> <List />
</Card>
</Page> </Page>
); );
} }

View File

@@ -7,7 +7,7 @@ import UploadIcon from '@mui/icons-material/Upload';
import CancelIcon from '@mui/icons-material/Cancel'; import CancelIcon from '@mui/icons-material/Cancel';
import HistoryIcon from '@mui/icons-material/History'; import HistoryIcon from '@mui/icons-material/History';
// hooks // hooks
import { Link, NavLink as RouterLink } from 'react-router-dom'; import { Link, NavLink as RouterLink, useNavigate } from 'react-router-dom';
import React, { ChangeEvent, Component, useEffect, useRef, useState } from 'react'; import React, { ChangeEvent, Component, useEffect, useRef, useState } from 'react';
import useSettings from '../../../hooks/useSettings'; import useSettings from '../../../hooks/useSettings';
import { useParams, useSearchParams } from 'react-router-dom'; import { useParams, useSearchParams } from 'react-router-dom';
@@ -17,8 +17,10 @@ import { LaravelPaginatedData } from '../../../@types/paginated-data';
import { Icd } from '../../../@types/diagnosis'; import { Icd } from '../../../@types/diagnosis';
import BasePagination from '../../../components/BasePagination'; import BasePagination from '../../../components/BasePagination';
import { enqueueSnackbar } from 'notistack'; import { enqueueSnackbar } from 'notistack';
import TableMoreMenu from '@/components/table/TableMoreMenu';
export default function List() { export default function List() {
const navigate = useNavigate();
const { themeStretch } = useSettings(); const { themeStretch } = useSettings();
const { diagnosis_template_id } = useParams(); const { diagnosis_template_id } = useParams();
const [searchParams, setSearchParams] = useSearchParams(); const [searchParams, setSearchParams] = useSearchParams();
@@ -44,7 +46,7 @@ export default function List() {
}, [searchParams]) }, [searchParams])
return ( return (
<form onSubmit={handleSearchSubmit} style={{ width: '100%' }}> <form onSubmit={handleSearchSubmit} style={{ width: '90%' }}>
<TextField id="search-input" ref={searchInput} label="Search" variant="outlined" fullWidth onChange={handleSearchChange} value={searchText}/> <TextField id="search-input" ref={searchInput} label="Search" variant="outlined" fullWidth onChange={handleSearchChange} value={searchText}/>
</form> </form>
); );
@@ -145,8 +147,8 @@ export default function List() {
{/* <h1>kjasndkjandskjasndkjansdkjansd</h1> */} {/* <h1>kjasndkjandskjasndkjansdkjansd</h1> */}
<Button <Button
id="import-button" id="import-button"
variant='outlined' variant='contained'
startIcon={<AddIcon />} sx={{ p: 1.8 }} startIcon={<AddIcon />} sx={{ p: 1.8, width: '200px' }}
aria-controls={createMenu ? 'basic-menu' : undefined} aria-controls={createMenu ? 'basic-menu' : undefined}
aria-haspopup="true" aria-haspopup="true"
aria-expanded={createMenu ? 'true' : undefined} aria-expanded={createMenu ? 'true' : undefined}
@@ -240,14 +242,21 @@ export default function List() {
return ( return (
<React.Fragment> <React.Fragment>
<TableRow sx={{ '& > *': { borderBottom: 'unset' } }}> <TableRow sx={{ '& > *': { borderBottom: '1' } }}>
<TableCell align="left"/>
<TableCell align="left">{row.code}</TableCell> <TableCell align="left">{row.code}</TableCell>
<TableCell align="left">{row.name}</TableCell> <TableCell align="left">{row.name}</TableCell>
<TableCell align="right"> <TableCell align="right">
{/* <Button variant="outlined" color="error" size="small">Disable</Button> */} <Stack direction="row" justifyContent="flex-end" spacing={1}>
<Link to={`/master/diagnosis/${row.id}/diagnosis-history`}> <TableMoreMenu actions={
<>
<MenuItem onClick={() => navigate(`/master/diagnosis/${row.id}/diagnosis-history`)}>
<HistoryIcon /> <HistoryIcon />
</Link> History
</MenuItem>
</>
} />
</Stack>
</TableCell> </TableCell>
</TableRow> </TableRow>
</React.Fragment> </React.Fragment>
@@ -306,17 +315,24 @@ export default function List() {
<Stack> <Stack>
<ImportForm /> <ImportForm />
<Card>
{/* The Main Table */} {/* The Main Table */}
<TableContainer component={Paper}> <TableContainer component={Paper} sx={{ px: 1, mt: 3 }}>
<Table aria-label="collapsible table"> <Table aria-label="collapsible table">
<TableBody> <colgroup>
<col width="20" />
<col width="250" />
<col width="*" />
<col width="50" />
</colgroup>
<TableHead>
<TableRow> <TableRow>
<TableCell align="left" />
<TableCell style={headStyle} align="left">Code</TableCell> <TableCell style={headStyle} align="left">Code</TableCell>
<TableCell style={headStyle} align="left">Description</TableCell> <TableCell style={headStyle} align="left">Description</TableCell>
<TableCell style={headStyle} align="right">Action</TableCell> <TableCell style={headStyle} align="right"></TableCell>
</TableRow> </TableRow>
</TableBody> </TableHead>
{dataTableIsLoading ? {dataTableIsLoading ?
( (
<TableBody> <TableBody>
@@ -344,7 +360,6 @@ export default function List() {
</TableContainer> </TableContainer>
<BasePagination paginationData={dataTableData} onPageChange={handlePageChange}/> <BasePagination paginationData={dataTableData} onPageChange={handlePageChange}/>
</Card>
</Stack> </Stack>
); );
} }

View File

@@ -48,6 +48,7 @@ export default function PlanCreate() {
return ( return (
<Page title= "Master ICD - 10"> <Page title= "Master ICD - 10">
<HeaderBreadcrumbs <HeaderBreadcrumbs
sx={{ px: 2 }}
heading={'Master ICD - 10'} heading={'Master ICD - 10'}
links={[ links={[
{ {

View File

@@ -1,6 +1,6 @@
import * as Yup from 'yup'; import * as Yup from 'yup';
import { LoadingButton } from "@mui/lab"; import { LoadingButton } from "@mui/lab";
import { Card, Grid, Stack, Typography } from "@mui/material"; import { Box, Card, Grid, Stack, Typography } from "@mui/material";
import { CorporatePlan } from "../../../../@types/corporates"; import { CorporatePlan } from "../../../../@types/corporates";
import { FormProvider, RHFSwitch, RHFTextField } from "../../../../components/hook-form"; import { FormProvider, RHFSwitch, RHFTextField } from "../../../../components/hook-form";
import { useEffect, useMemo } from 'react'; import { useEffect, useMemo } from 'react';
@@ -9,6 +9,7 @@ import { yupResolver } from '@hookform/resolvers/yup';
import { useSnackbar } from 'notistack'; import { useSnackbar } from 'notistack';
import { useNavigate, useParams } from 'react-router-dom'; import { useNavigate, useParams } from 'react-router-dom';
import axios from '../../../../utils/axios'; import axios from '../../../../utils/axios';
import palette from '@/theme/palette';
type Props = { type Props = {
isEdit: boolean; isEdit: boolean;
@@ -68,7 +69,7 @@ export default function CorporatePlanForm({ isEdit, currentCorporatePlan }: Prop
enqueueSnackbar('Division created successfully', { variant: 'success' }); enqueueSnackbar('Division created successfully', { variant: 'success' });
}) })
.then((res) => { .then((res) => {
navigate('/master/diagnosis-template', { replace: true }); navigate('/master/diagnosis', { replace: true });
}) })
.catch(({ response }) => { .catch(({ response }) => {
if (response.status === 422) { if (response.status === 422) {
@@ -88,7 +89,7 @@ export default function CorporatePlanForm({ isEdit, currentCorporatePlan }: Prop
enqueueSnackbar('Division updated successfully', { variant: 'success' }); enqueueSnackbar('Division updated successfully', { variant: 'success' });
}) })
.then((res) => { .then((res) => {
navigate('/master/diagnosis-template' , { replace: true }); navigate('/master/diagnosis' , { replace: true });
}) })
.catch(({ response }) => { .catch(({ response }) => {
enqueueSnackbar('Update Failed : '+ response.data.message, { variant: 'error' }); enqueueSnackbar('Update Failed : '+ response.data.message, { variant: 'error' });
@@ -98,12 +99,13 @@ export default function CorporatePlanForm({ isEdit, currentCorporatePlan }: Prop
return ( return (
<FormProvider methods={methods} onSubmit={handleSubmit(onSubmit)}> <FormProvider methods={methods} onSubmit={handleSubmit(onSubmit)}>
<Box sx={{ px: 2 }}>
<Grid container spacing={2}> <Grid container spacing={2}>
<Grid item xs={8}> <Grid item xs={8}>
<Card sx={{ p: 2 }}> <Card sx={{ px: 3, py: 4 }}>
<Stack spacing={3}> <Stack spacing={6}>
<Typography variant="h6">Detail</Typography> <Typography variant="h6" color={palette.light.primary.main}>Detail</Typography>
<RHFTextField name="name" label="Name" /> <RHFTextField name="name" label="Name" />
@@ -116,13 +118,8 @@ export default function CorporatePlanForm({ isEdit, currentCorporatePlan }: Prop
</Stack> </Stack>
</Card> </Card>
</Grid> </Grid>
{/* <Grid item xs={4}>
<Card sx={{ p:2 }}>
<RHFSwitch name="active" label="Active" />
</Card>
</Grid> */}
</Grid> </Grid>
</Box>
</FormProvider> </FormProvider>
); );
} }

View File

@@ -12,27 +12,26 @@ export default function Divisions() {
const { corporate_id } = useParams(); const { corporate_id } = useParams();
const pageTitle = 'Diagnosis Template'; const pageTitle = 'Diagnosis';
return ( return (
<Page title={ pageTitle }> <Page title={ pageTitle }>
<HeaderBreadcrumbs <HeaderBreadcrumbs
sx={{ px: 2 }}
heading={ pageTitle } heading={ pageTitle }
links={[ links={[
{ {
name: 'Master', name: 'Master',
href: '/master/diagnosis-template', href: '/master/diagnosis',
}, },
{ {
name: 'Diagnosis Template', name: 'Diagnosis',
href: '/master/diagnosis-template', href: '/master/diagnosis',
}, },
]} ]}
/> />
<Card>
<List /> <List />
</Card>
</Page> </Page>
); );
} }

View File

@@ -7,7 +7,7 @@ import UploadIcon from '@mui/icons-material/Upload';
import CancelIcon from '@mui/icons-material/Cancel'; import CancelIcon from '@mui/icons-material/Cancel';
import HistoryIcon from '@mui/icons-material/History'; import HistoryIcon from '@mui/icons-material/History';
// hooks // hooks
import { Link, NavLink as RouterLink } from 'react-router-dom'; import { Link, NavLink as RouterLink, useNavigate } from 'react-router-dom';
import React, { ChangeEvent, Component, useEffect, useRef, useState } from 'react'; import React, { ChangeEvent, Component, useEffect, useRef, useState } from 'react';
import useSettings from '../../../../hooks/useSettings'; import useSettings from '../../../../hooks/useSettings';
import { useParams, useSearchParams } from 'react-router-dom'; import { useParams, useSearchParams } from 'react-router-dom';
@@ -17,8 +17,11 @@ import { LaravelPaginatedData } from '../../../../@types/paginated-data';
import { Icd } from '../../../../@types/diagnosis'; import { Icd } from '../../../../@types/diagnosis';
import BasePagination from '../../../../components/BasePagination'; import BasePagination from '../../../../components/BasePagination';
import { enqueueSnackbar } from 'notistack'; import { enqueueSnackbar } from 'notistack';
import TableMoreMenu from '@/components/table/TableMoreMenu';
import { EditOutlined, FindInPageOutlined } from '@mui/icons-material';
export default function List() { export default function List() {
const navigate = useNavigate();
const { themeStretch } = useSettings(); const { themeStretch } = useSettings();
const { corporate_id } = useParams(); const { corporate_id } = useParams();
const [searchParams, setSearchParams] = useSearchParams(); const [searchParams, setSearchParams] = useSearchParams();
@@ -44,7 +47,7 @@ export default function List() {
}, [searchParams]) }, [searchParams])
return ( return (
<form onSubmit={handleSearchSubmit} style={{ width: '100%' }}> <form onSubmit={handleSearchSubmit} style={{ width: '90%' }}>
<TextField id="search-input" ref={searchInput} label="Search" variant="outlined" fullWidth onChange={handleSearchChange} value={searchText}/> <TextField id="search-input" ref={searchInput} label="Search" variant="outlined" fullWidth onChange={handleSearchChange} value={searchText}/>
</form> </form>
); );
@@ -140,16 +143,14 @@ export default function List() {
{/* <h1>kjasndkjandskjasndkjansdkjansd</h1> */} {/* <h1>kjasndkjandskjasndkjansdkjansd</h1> */}
<Button <Button
id="import-button" id="import-button"
variant='outlined' variant='contained'
startIcon={<AddIcon />} sx={{ p: 1.8 }} startIcon={<AddIcon />} sx={{ p: 1.8, width: '200px' }}
aria-controls={createMenu ? 'basic-menu' : undefined} aria-controls={createMenu ? 'basic-menu' : undefined}
aria-haspopup="true" aria-haspopup="true"
aria-expanded={createMenu ? 'true' : undefined} aria-expanded={createMenu ? 'true' : undefined}
onClick={() => navigate(`/master/diagnosis/create`)}
> >
<Link to={`/master/diagnosis-template/create`} style={{ textDecoration: 'none', color: 'blue'}}>
Create Create
</Link>
</Button> </Button>
<Menu <Menu
id="import-button" id="import-button"
@@ -211,25 +212,28 @@ export default function List() {
return ( return (
<React.Fragment> <React.Fragment>
<TableRow sx={{ '& > *': { borderBottom: 'unset' } }}> <TableRow sx={{ '& > *': { borderBottom: '1' } }}>
<TableCell align="left"/>
<TableCell align="left">{row.name}</TableCell> <TableCell align="left">{row.name}</TableCell>
<TableCell align="left">{row.description ?? '-'}</TableCell> <TableCell align="left">{row.description ?? '-'}</TableCell>
<TableCell align="center"> <TableCell align="center">
{/* <Button variant="outlined" color="error" size="small">Disable</Button> */}
<Stack direction="row" justifyContent="flex-end" spacing={1}> <Stack direction="row" justifyContent="flex-end" spacing={1}>
<Link to={`/master/diagnosis/${row.id}`}> <TableMoreMenu actions={
<Button variant="outlined" color="primary" size="small"> <>
<MenuItem onClick={() => navigate(`/master/diagnosis/${row.id}`)}>
<FindInPageOutlined />
Detail Detail
</Button> </MenuItem>
</Link> <MenuItem onClick={() => navigate(`/master/diagnosis-template/${row.id}/edit`)} >
<Link to={`/master/diagnosis-template/${row.id}/edit`}> <EditOutlined />
<Button variant="outlined" color="primary" size="small">
Edit Edit
</Button> </MenuItem>
</Link> <MenuItem onClick={() => navigate(`/master/diagnosis-template/${row.id}/diagnosis-template-history`)}>
<Link to={`/master/diagnosis-template/${row.id}/diagnosis-template-history`}>
<HistoryIcon /> <HistoryIcon />
</Link> History
</MenuItem>
</>
} />
</Stack> </Stack>
</TableCell> </TableCell>
</TableRow> </TableRow>
@@ -290,17 +294,24 @@ export default function List() {
<Stack> <Stack>
<ImportForm /> <ImportForm />
<Card>
{/* The Main Table */} {/* The Main Table */}
<TableContainer component={Paper}> <TableContainer component={Paper} sx={{ px: 1, mt: 3 }}>
<Table aria-label="collapsible table"> <Table aria-label="collapsible table">
<TableBody> <colgroup>
<col width="20" />
<col width="250" />
<col width="*" />
<col width="50" />
</colgroup>
<TableHead>
<TableRow> <TableRow>
<TableCell align="left" />
<TableCell style={headStyle} align="left">Name</TableCell> <TableCell style={headStyle} align="left">Name</TableCell>
<TableCell style={headStyle} align="left">Description</TableCell> <TableCell style={headStyle} align="left">Description</TableCell>
<TableCell style={headStyle} align="right">Action</TableCell> <TableCell style={headStyle} align="right"></TableCell>
</TableRow> </TableRow>
</TableBody> </TableHead>
{dataTableIsLoading ? {dataTableIsLoading ?
( (
<TableBody> <TableBody>
@@ -328,7 +339,6 @@ export default function List() {
</TableContainer> </TableContainer>
<BasePagination paginationData={dataTableData} onPageChange={handlePageChange}/> <BasePagination paginationData={dataTableData} onPageChange={handlePageChange}/>
</Card>
</Stack> </Stack>
); );
} }

View File

@@ -268,12 +268,12 @@ export default function Router() {
element: <MasterHospitalsCreate />, element: <MasterHospitalsCreate />,
}, },
{ {
path: 'master/diagnosis-template/create', path: 'master/diagnosis',
element: <MasterDiagnosisTemplateCreate />, element: <MasterDiagnosisTemplate />,
}, },
{ {
path: 'master/diagnosis-template', path: 'master/diagnosis/create',
element: <MasterDiagnosisTemplate />, element: <MasterDiagnosisTemplateCreate />,
}, },
{ {
path: 'master/diagnosis-template/:id/diagnosis-template-history', path: 'master/diagnosis-template/:id/diagnosis-template-history',