Przeglądaj źródła

update

tags/Baseline_180220205_Frontend
MSI\derek 11 miesięcy temu
rodzic
commit
1f9459ab5d
1 zmienionych plików z 65 dodań i 66 usunięć
  1. +65
    -66
      src/components/ExpenseSearch/CreateExpenseModal.tsx

+ 65
- 66
src/components/ExpenseSearch/CreateExpenseModal.tsx Wyświetl plik

@@ -1,30 +1,33 @@
import React, { useCallback, useState } from 'react';
import {
import React, { useCallback, useState } from "react";
import {
Modal,
Box,
Typography,
Button,
Box,
Typography,
Button,
SxProps,
CardContent,
CardActions,
Card
} from '@mui/material';
import { useTranslation } from 'react-i18next';
import { FormProvider, SubmitHandler, useForm } from 'react-hook-form';
Card,
} from "@mui/material";
import { useTranslation } from "react-i18next";
import { FormProvider, SubmitHandler, useForm } from "react-hook-form";
import { Check, Close } from "@mui/icons-material";
import { ProjectResult } from '@/app/api/projects';
import { CreateNewExpense, PostExpenseData } from '@/app/api/projectExpenses/actions';
import ExpenseTable from './ExpenseTable';
import dayjs from 'dayjs';
import { INPUT_DATE_FORMAT } from '@/app/utils/formatUtil';
import { ProjectResult } from "@/app/api/projects";
import {
CreateNewExpense,
PostExpenseData,
} from "@/app/api/projectExpenses/actions";
import ExpenseTable from "./ExpenseTable";
import dayjs from "dayjs";
import { INPUT_DATE_FORMAT } from "@/app/utils/formatUtil";

interface Props {
isOpen: boolean,
onClose: () => void
projects: ProjectResult[]
isOpen: boolean;
onClose: () => void;
projects: ProjectResult[];
}

const modalSx: SxProps= {
const modalSx: SxProps = {
position: "absolute",
top: "50%",
left: "50%",
@@ -32,77 +35,73 @@ const modalSx: SxProps= {
width: { xs: "calc(100% - 2rem)", sm: "90%" },
maxHeight: "90%",
maxWidth: 1400,
bgcolor: 'background.paper',
bgcolor: "background.paper",
};

type postData = {
data: PostExpenseData[]
}
const CreateExpenseModal: React.FC<Props> = ({isOpen, onClose, projects}) => {
const { t } = useTranslation()
data: PostExpenseData[];
};
const CreateExpenseModal: React.FC<Props> = ({ isOpen, onClose, projects }) => {
const { t } = useTranslation();
const formProps = useForm<postData>();

const onSubmit = useCallback<SubmitHandler<postData>>(
(data) => {
const _data = data.data
try {
const postData: PostExpenseData[] = _data.map(item => {
return ({
const onSubmit = useCallback<SubmitHandler<postData>>((data) => {
const _data = data.data;
try {
const postData: PostExpenseData[] = _data.map((item) => {
return {
expenseNo: item.expenseNo,
issueDate: dayjs(item.issueDate).format(INPUT_DATE_FORMAT),
amount: item.amount,
projectId: projects.find(p => p.code === item.projectCode)!.id,
projectId: projects.find((p) => p.code === item.projectCode)!.id,
projectCode: item.projectCode,
remarks: (item.remarks && item.remarks.length > 0) ? (item.remarks) : undefined,
})}
)
console.log(postData)
} catch (error) {
console.log(error)
}
remarks:
item.remarks && item.remarks.length > 0 ? item.remarks : undefined,
};
});
console.log(postData);
} catch (error) {
console.log(error);
}
, [])
}, []);

return (
<FormProvider {...formProps}>
<Modal
open={isOpen}
onClose={onClose}
>
<Modal open={isOpen} onClose={onClose}>
<Card sx={modalSx}>
<CardContent
component="form"
onSubmit={formProps.handleSubmit(onSubmit)}
>
<Typography variant="overline" display="block" marginBlockEnd={1}>
{t("Invoice Creation")}
</Typography>
<Box
sx={{
display: 'flex',
justifyContent: 'center',
marginBlock: 2,
}}
{t("Invoice Creation")}
</Typography>
<Box
sx={{
display: "flex",
justifyContent: "center",
marginBlock: 2,
}}
>
<ExpenseTable projects={projects} />
</Box>
<CardActions sx={{ justifyContent: "flex-end" }}>
<Button
variant="outlined"
startIcon={<Close />}
onClick={onClose}
>
<ExpenseTable projects={projects}/>
</Box>
<CardActions sx={{ justifyContent: "flex-end" }}>
<Button
variant="outlined"
startIcon={<Close />}
onClick={onClose}
>
{t("Cancel")}
</Button>
<Button variant="contained" startIcon={<Check />} type="submit">
{t("Save")}
</Button>
</CardActions>
{t("Cancel")}
</Button>
<Button variant="contained" startIcon={<Check />} type="submit">
{t("Save")}
</Button>
</CardActions>
</CardContent>
</Card>
</Modal>
</FormProvider>
</FormProvider>
);
};

export default CreateExpenseModal;
export default CreateExpenseModal;

Ładowanie…
Anuluj
Zapisz