push rasad front on new repo

This commit is contained in:
2026-01-18 14:32:49 +03:30
commit 4fe6e70525
2139 changed files with 303150 additions and 0 deletions

View File

@@ -0,0 +1,182 @@
import React, { useEffect, useState } from "react";
import { Button, TextField } from "@mui/material";
import { useDispatch } from "react-redux";
import axios from "axios";
import { RiSearchLine } from "react-icons/ri";
import {
DRAWER,
LOADING_END,
LOADING_START,
} from "../../../../lib/redux/slices/appSlice";
import { getRoleFromUrl } from "../../../../utils/getRoleFromUrl";
import { Grid } from "../../../../components/grid/Grid";
import ResponsiveTable from "../../../../components/responsive-table/ResponsiveTable";
import { formatTime } from "../../../../utils/formatTime";
import { CityIncreaseHatchingOperation } from "../city-increase-hatching-operation/CityIncreaseHatchingOperation";
import { CityIncreaseHatchingSubmitDiffrence } from "../city-increase-hatching-submit-diffrence/CityIncreaseHatchingSubmitDiffrence";
export const CityIncreaseHatching = ({ state }) => {
const dispatch = useDispatch();
const handleTextChange = (event) => {
setTextValue(event.target.value);
};
const [data, setData] = useState([]);
const [totalRows, setTotalRows] = useState(0);
const [perPage, setPerPage] = useState(10);
const [textValue, setTextValue] = useState("");
const [page, setPage] = useState(1);
const [tableData, setTableData] = useState([]);
const fetchApiData = async (page) => {
dispatch(LOADING_START());
const response = await axios.get(
`hatching-increase-request/?search=filter&value=${textValue}&role=${getRoleFromUrl()}&page=${page}&page_size=${perPage}`
);
dispatch(LOADING_END());
setData(response.data.results);
setTotalRows(response.data.count);
};
const handlePageChange = (page) => {
fetchApiData(page);
setPage(page);
};
const handlePerRowsChange = (perRows) => {
setPerPage(perRows);
setPage(1);
};
const updateTable = () => {
fetchApiData(page !== 0 ? page : 1);
};
useEffect(() => {
const d = data?.map((item, i) => {
return [
page === 1 ? i + 1 : i + perPage * (page - 1) + 1,
`${item?.hatching?.poultry?.unitName} (${item?.hatching?.poultry?.user?.mobile})`,
item?.hatching?.licenceNumber,
item?.hatching?.poultry?.breedingUniqueId,
item?.hatchingQuantity?.toLocaleString(),
item?.hatchingKillQuantity?.toLocaleString(),
item?.hatchingLosses?.toLocaleString(),
item?.hatchingLeftOver?.toLocaleString(),
item?.quantity?.toLocaleString(),
`${item?.registererName} (${item?.registererMobile})`,
formatTime(item?.date),
item?.message,
<CityIncreaseHatchingOperation
key={i}
updateTable={updateTable}
item={item}
/>,
];
});
setTableData(d);
}, [data, state]);
useEffect(() => {
fetchApiData(1);
}, [dispatch, perPage, state]);
const handleSubmit = async (event) => {
event.preventDefault();
dispatch(LOADING_START());
try {
const response = await axios.get(
`hatching-increase-request/?role=${getRoleFromUrl()}&search=filter&value=${textValue}&page=${1}&page_size=${perPage}`
);
setData(response.data.results);
setTotalRows(response.data.count);
dispatch(LOADING_END());
} catch (error) {
console.error("Error fetching data:", error);
}
};
return (
<Grid container xs={12} justifyContent="center" alignItems="center" gap={2}>
<Grid
container
xs={12}
justifyContent="start"
alignItems="center"
gap={2}
>
{getRoleFromUrl() !== "KillHouse" && (
<Grid>
<Button
variant="contained"
onClick={() => {
dispatch(
DRAWER({
right: !(window.innerWidth <= 600),
bottom: window.innerWidth <= 600,
content: (
<CityIncreaseHatchingSubmitDiffrence
updateTable={updateTable}
/>
),
title: "افزایش جوجه ریزی",
})
);
}}
>
افزایش جوجه ریزی
</Button>
</Grid>
)}
<Grid>
<form onSubmit={handleSubmit}>
<TextField
id="outlined-basic"
size="small"
label="جستجو"
variant="outlined"
style={{ width: 250 }}
onChange={handleTextChange}
/>
<Button
// disabled={!textValue}
type="submit"
onClick={handleSubmit}
endIcon={<RiSearchLine />}
>
جستجو
</Button>
</form>
</Grid>
</Grid>
<ResponsiveTable
data={tableData}
columns={[
"ردیف",
"مرغدار",
"شماره مجوز جوجه ریزی",
"شناسه یکتا فارم",
"حجم جوجه ریزی",
"حجم کشتار",
"حجم تلفات",
"مانده در سالن",
"حجم افزایشی",
"ثبت کننده",
"تاریخ ثبت",
"پیغام",
"عملیات",
]}
handlePageChange={handlePageChange}
totalRows={totalRows}
page={page}
perPage={perPage}
handlePerRowsChange={handlePerRowsChange}
title="افزایش حجم جوجه ریزی"
/>
</Grid>
);
};