first commit
This commit is contained in:
215
src/Pages/Cooperatives.tsx
Normal file
215
src/Pages/Cooperatives.tsx
Normal file
@@ -0,0 +1,215 @@
|
||||
import { useEffect, useState } from "react";
|
||||
import { useApiRequest } from "../utils/useApiRequest";
|
||||
import { Grid } from "../components/Grid/Grid";
|
||||
import Table from "../components/Table/Table";
|
||||
import { useNavigate, useParams } from "@tanstack/react-router";
|
||||
import { Popover } from "../components/PopOver/PopOver";
|
||||
import { Tooltip } from "../components/Tooltip/Tooltip";
|
||||
import Button from "../components/Button/Button";
|
||||
import { useModalStore } from "../context/zustand-store/appStore";
|
||||
import { ChildOrganizations } from "../partials/cooperatives/ChildOrganizations";
|
||||
import { COOPERATIVE_LIST } from "../routes/paths";
|
||||
import { TableButton } from "../components/TableButton/TableButton";
|
||||
import { CooperativesDashboardDetails } from "../partials/cooperatives/CooperativesDashboardDetails";
|
||||
import { AddActivityType } from "../partials/cooperatives/AddActivityType";
|
||||
import ShowMoreInfo from "../components/ShowMoreInfo/ShowMoreInfo";
|
||||
import ShowStringList from "../components/ShowStringList/ShowStringList";
|
||||
|
||||
export default function Cooperatives() {
|
||||
const { openModal } = useModalStore();
|
||||
const [pagesInfo, setPagesInfo] = useState({ page: 1, page_size: 10 });
|
||||
const [cooperativesTableData, setCooperativesTableData] = useState([]);
|
||||
const { id, name } = useParams({ strict: false });
|
||||
const navigate = useNavigate();
|
||||
|
||||
const { data: cooperativesData, refetch } = useApiRequest({
|
||||
api: `herd/web/api/v1/rancher_org_link/org_linked_rancher_list${
|
||||
id ? `?org_id=${id}` : ""
|
||||
}`,
|
||||
method: "get",
|
||||
params: {
|
||||
...pagesInfo,
|
||||
},
|
||||
queryKey: [id ? "unioncooperatives" : "cooperatives", pagesInfo],
|
||||
});
|
||||
|
||||
const { data: cooperativesDashboardData } = useApiRequest({
|
||||
api: `herd/web/api/v1/rancher_org_link/${id}/org_ranchers_quota_dashboard/`,
|
||||
method: "get",
|
||||
queryKey: [id ? "unionCooperativeDashboard" : "cooperativeDashboard"],
|
||||
enabled: !!id,
|
||||
});
|
||||
|
||||
useEffect(() => {
|
||||
if (cooperativesData?.results) {
|
||||
const formattedData = cooperativesData.results.map(
|
||||
(item: any, i: number) => {
|
||||
return [
|
||||
pagesInfo.page === 1
|
||||
? i + 1
|
||||
: i + pagesInfo.page_size * (pagesInfo.page - 1) + 1,
|
||||
item?.name || "-",
|
||||
item?.province || "-",
|
||||
item?.city || "-",
|
||||
item?.rancher_count || 0,
|
||||
item?.herd_count || 0,
|
||||
item?.livestock_count || 0,
|
||||
item?.org_service_area?.length ? (
|
||||
<ShowMoreInfo key={i} title="محدوده فعالیت">
|
||||
<Grid
|
||||
container
|
||||
column
|
||||
className="gap-2 p-2 justify-start items-start w-full"
|
||||
>
|
||||
<ShowStringList
|
||||
showSearch={false}
|
||||
strings={item.org_service_area.map(
|
||||
(city: any) => city.name
|
||||
)}
|
||||
/>
|
||||
</Grid>
|
||||
</ShowMoreInfo>
|
||||
) : (
|
||||
"-"
|
||||
),
|
||||
item?.org_purchase_policy === "INTERNAL_ONLY"
|
||||
? "بر اساس تعاونی"
|
||||
: item?.org_purchase_policy === "CROSS_COOP"
|
||||
? "برای کل استان"
|
||||
: "-",
|
||||
<Popover key={i}>
|
||||
<Tooltip title="دامداران تعاونی" position="right">
|
||||
<Button
|
||||
variant="view"
|
||||
page="cooperative_ranchers"
|
||||
access="Show-Cooperative-Ranchers"
|
||||
onClick={() => {
|
||||
const path =
|
||||
COOPERATIVE_LIST +
|
||||
"/ranchers/" +
|
||||
item?.id +
|
||||
"/" +
|
||||
item?.name;
|
||||
navigate({ to: path });
|
||||
}}
|
||||
/>
|
||||
</Tooltip>
|
||||
<Tooltip title="تعریف نوع فعالیت" position="right">
|
||||
<Button
|
||||
variant="set"
|
||||
page="cooperatives"
|
||||
access="Set-Cooperative-Activity-Type"
|
||||
onClick={() => {
|
||||
openModal({
|
||||
title: `تعریف نوع فعالیت ${item?.name || ""}`,
|
||||
content: (
|
||||
<AddActivityType getData={refetch} item={item} />
|
||||
),
|
||||
});
|
||||
}}
|
||||
/>
|
||||
</Tooltip>
|
||||
</Popover>,
|
||||
|
||||
<Tooltip title="زیرمجموعه ها" position="right">
|
||||
<Button
|
||||
variant="detail"
|
||||
page="cooperatives"
|
||||
access="Show-Child-Organizations"
|
||||
onClick={() => {
|
||||
openModal({
|
||||
title: `زیرمجموعه های ${item?.name || ""}`,
|
||||
content: (
|
||||
<ChildOrganizations
|
||||
orgId={item?.id}
|
||||
orgName={item?.name || ""}
|
||||
/>
|
||||
),
|
||||
isFullSize: true,
|
||||
});
|
||||
}}
|
||||
/>
|
||||
</Tooltip>,
|
||||
];
|
||||
}
|
||||
);
|
||||
setCooperativesTableData(formattedData);
|
||||
}
|
||||
}, [cooperativesData, pagesInfo, openModal, navigate, refetch]);
|
||||
|
||||
return (
|
||||
<Grid container column className="gap-4 mt-2">
|
||||
{id && (
|
||||
<Grid isDashboard>
|
||||
<Table
|
||||
isDashboard
|
||||
title="خلاصه اطلاعات"
|
||||
noPagination
|
||||
noSearch
|
||||
columns={[
|
||||
"تعداد کل سهمیه ها",
|
||||
"مجموع وزن سهمیه ها (کیلوگرم)",
|
||||
"مجموع وزن توزیع شده (کیلوگرم)",
|
||||
"مجموع وزن باقیمانده (کیلوگرم)",
|
||||
"مجموع وزن فروش رفته (کیلوگرم)",
|
||||
"مجموع وزن ورود به انبار (کیلوگرم)",
|
||||
"جزئیات",
|
||||
]}
|
||||
rows={[
|
||||
[
|
||||
cooperativesDashboardData?.quotas_summary?.total_quotas?.toLocaleString() ||
|
||||
0,
|
||||
cooperativesDashboardData?.quotas_summary?.total_amount?.toLocaleString() ||
|
||||
0,
|
||||
cooperativesDashboardData?.quotas_summary?.total_distributed?.toLocaleString() ||
|
||||
0,
|
||||
cooperativesDashboardData?.quotas_summary?.remaining_amount?.toLocaleString() ||
|
||||
0,
|
||||
cooperativesDashboardData?.quotas_summary?.sold_amount?.toLocaleString() ||
|
||||
0,
|
||||
cooperativesDashboardData?.quotas_summary?.inventory_received?.toLocaleString() ||
|
||||
0,
|
||||
<TableButton
|
||||
size="small"
|
||||
key="details"
|
||||
onClick={() => {
|
||||
openModal({
|
||||
title: "جزئیات",
|
||||
content: <CooperativesDashboardDetails orgId={id} />,
|
||||
isFullSize: true,
|
||||
});
|
||||
}}
|
||||
>
|
||||
جزئیات
|
||||
</TableButton>,
|
||||
],
|
||||
]}
|
||||
/>
|
||||
</Grid>
|
||||
)}
|
||||
|
||||
<Table
|
||||
className="mt-2"
|
||||
onChange={(e) => {
|
||||
setPagesInfo(e);
|
||||
}}
|
||||
count={cooperativesData?.count || 10}
|
||||
isPaginated
|
||||
title={id ? `تعاونی های ${name}` : "تعاونی ها"}
|
||||
columns={[
|
||||
"ردیف",
|
||||
"نام",
|
||||
"استان",
|
||||
"شهر",
|
||||
"تعداد دامدار",
|
||||
"تعداد گله",
|
||||
"تعداد دام",
|
||||
"محدوده فعالیت",
|
||||
"محدودیت دریافت نهاده",
|
||||
"عملیات",
|
||||
]}
|
||||
rows={cooperativesTableData}
|
||||
/>
|
||||
</Grid>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user