Commit cb5ab658 authored by Merekeyev Dias's avatar Merekeyev Dias

fixed resend btn

parent 35b4e88a
...@@ -22,8 +22,8 @@ const HomePage: React.FC = () => { ...@@ -22,8 +22,8 @@ const HomePage: React.FC = () => {
const ORG_NUMBER_PER_PAGE = useSelector((state: any) => state.mainPagination.ORG_NUMBER_PER_PAGE); const ORG_NUMBER_PER_PAGE = useSelector((state: any) => state.mainPagination.ORG_NUMBER_PER_PAGE);
const syncBtnState = useSelector((state: any) => state.syncBtn.disabled); const syncBtnState = useSelector((state: any) => state.syncBtn.disabled);
const checkedCodes = useSelector((state: any) => state.syncBtn.checkedCodes); const checkedCodes = useSelector((state: any) => state.syncBtn.checkedCodes);
const [isSyncLoading, setIsSyncLoading] = useState(false); const [isSyncLoading, setIsSyncLoading] = useState<boolean>(false);
const [isTableLoading, setIsTableLoading] = useState(false); const [isTableLoading, setIsTableLoading] = useState<boolean>(false);
const handleAddClick = () => { const handleAddClick = () => {
navigate("/add"); navigate("/add");
...@@ -84,7 +84,8 @@ const HomePage: React.FC = () => { ...@@ -84,7 +84,8 @@ const HomePage: React.FC = () => {
useEffect(() => { useEffect(() => {
if (isGetLoading) { if (isGetLoading) {
setIsTableLoading(true); setIsTableLoading(true);
} else if (isGetSuccess) { }
if (isGetSuccess) {
setIsTableLoading(false); setIsTableLoading(false);
dispatch(setTotalOrgNumber(orgs.length)); dispatch(setTotalOrgNumber(orgs.length));
} }
......
...@@ -29,10 +29,10 @@ const ManageOrganization: React.FC = () => { ...@@ -29,10 +29,10 @@ const ManageOrganization: React.FC = () => {
const isEdit = Boolean(id); const isEdit = Boolean(id);
const totalOrgNumber = useSelector((state: any) => state.mainPagination.totalOrgNumber); const totalOrgNumber = useSelector((state: any) => state.mainPagination.totalOrgNumber);
const ORG_NUMBER_PER_PAGE = useSelector((state: any) => state.mainPagination.ORG_NUMBER_PER_PAGE); const ORG_NUMBER_PER_PAGE = useSelector((state: any) => state.mainPagination.ORG_NUMBER_PER_PAGE);
const [isBtnLoading, setIsBtnLoading] = useState(false); const [isBtnLoading, setIsBtnLoading] = useState<boolean>(false);
const { data, isLoading: isGetLoading, isError: isGetError } = useGetOrganizationQuery(id!, { skip: !isEdit }); const { data, isLoading: isGetLoading, isError: isGetError } = useGetOrganizationQuery(id!, { skip: !isEdit });
const { data: organizations } = useGetOrganizationsQuery(); const { data: organizations } = useGetOrganizationsQuery();
const [ editOrganization ] = useEditOrganizationMutation(); const [ editOrganization, {isLoading: isEditLoading, isSuccess: isEditSuccess, isError: isEditError} ] = useEditOrganizationMutation();
useEffect(() => { useEffect(() => {
if (data) { if (data) {
...@@ -60,10 +60,15 @@ const ManageOrganization: React.FC = () => { ...@@ -60,10 +60,15 @@ const ManageOrganization: React.FC = () => {
return; return;
} }
setIsBtnLoading(true);
await editOrganization({ ...normalizedValues }).unwrap(); await editOrganization({ ...normalizedValues }).unwrap();
setIsBtnLoading(false); navigate('/');
};
useEffect(() => {
if (isEditLoading) {
setIsBtnLoading(true);
}
if (isEditSuccess) {
if (isEdit) { if (isEdit) {
message.success('Организация успешно обновлена!'); message.success('Организация успешно обновлена!');
} else { } else {
...@@ -72,8 +77,12 @@ const ManageOrganization: React.FC = () => { ...@@ -72,8 +77,12 @@ const ManageOrganization: React.FC = () => {
const newCurrentPage = Math.ceil((totalOrgNumber + 1) / ORG_NUMBER_PER_PAGE); const newCurrentPage = Math.ceil((totalOrgNumber + 1) / ORG_NUMBER_PER_PAGE);
dispatch(setCurrentPage(newCurrentPage)); dispatch(setCurrentPage(newCurrentPage));
} }
navigate('/'); setIsBtnLoading(false);
}; }
if (isEditError) {
setIsBtnLoading(false);
}
}, [isEditLoading, isEditSuccess, isEditError, dispatch])
if (isEdit && isGetLoading) return <div>Loading...</div>; if (isEdit && isGetLoading) return <div>Loading...</div>;
if (isEdit && isGetError) return <div>Error loading organization data</div>; if (isEdit && isGetError) return <div>Error loading organization data</div>;
......
import React, { useState } from 'react'; import React, { useEffect, useState } from 'react';
import { Button, Tag, Modal, message } from 'antd'; import { Button, Tag, Modal, message } from 'antd';
import type { TableProps } from 'antd'; import type { TableProps } from 'antd';
import dayjs from 'dayjs'; import dayjs from 'dayjs';
import { getStatusText, getStatusColor, openXMLInNewPage, downloadXML } from './utils'; import { getStatusText, getStatusColor, openXMLInNewPage, downloadXML } from './utils';
import { useLazyResendRequestQuery } from '@/store/api/requestApi';
import styles from './RequestPage.module.css'; import styles from './RequestPage.module.css';
export interface DataType { export interface DataType {
...@@ -124,52 +125,62 @@ export const columns: TableProps<DataType>['columns'] = [ ...@@ -124,52 +125,62 @@ export const columns: TableProps<DataType>['columns'] = [
{ {
width: '1%', width: '1%',
align: 'center', align: 'center',
render: (_, record) => { render: (_, record) => (
return (
<ResendColumn <ResendColumn
data={record} data={record}
disabled={record.status !== 2}
/> />
) )
} }
} ];
]
export const ResendColumn: React.FC<{ data: DataType }> = ({ data }) => { export const ResendColumn: React.FC<{ data: DataType, disabled: boolean }> = ({ data, disabled }) => {
const [open, setOpen] = useState<boolean>(false); const [open, setOpen] = useState<boolean>(false);
const [isBtnLoading, setIsBtnLoading] = useState<boolean>(false);
const [resendRequest, { isLoading, isSuccess }] = useLazyResendRequestQuery();
const showResendModal = () => { const showResendModal = () => {
setOpen(true); setOpen(true);
}; };
const handleResendModalOk = async () => { const handleResendModalOk = async () => {
try { await resendRequest(data.id);
// await resendRequest().unwrap();
message.success('Запрос успешно переотправлен!');
setOpen(false);
} catch (err) {
message.error('Произошла ошибка при переотправке запроса!');
}
}; };
const handleResendModalCancel = () => { const handleResendModalCancel = () => {
setOpen(false); setOpen(false);
}; };
useEffect(() => {
if (isLoading) {
setIsBtnLoading(true);
}
if (isSuccess) {
message.success('Запрос успешно переотправлен!');
setOpen(false);
setIsBtnLoading(false);
}
}, [isLoading, isSuccess]);
return ( return (
<> <>
<Button <Button
onClick={showResendModal} onClick={showResendModal}
icon={<span className='material-icons text-blue text-125'>mail</span>} icon={<span className='material-icons text-blue text-125'>mail</span>}
type='text' type='text'
disabled={disabled}
/> />
<Modal <Modal
open={open} open={open}
title={`Вы уверены, что хотите переотправить запрос с id ${data.id}?`} title={`Вы уверены, что хотите переотправить запрос с id ${data.id}?`}
onCancel={handleResendModalCancel} onCancel={handleResendModalCancel}
onOk={handleResendModalOk} onOk={handleResendModalOk}
okButtonProps={{
loading: isBtnLoading
}}
> >
<p>Подтвердите переотправку запроса.</p> <p>Подтвердите переотправку запроса.</p>
</Modal> </Modal>
</> </>
) );
} };
\ No newline at end of file \ No newline at end of file
...@@ -29,8 +29,8 @@ const RequestPage: React.FC = () => { ...@@ -29,8 +29,8 @@ const RequestPage: React.FC = () => {
dayjs(DEFAULT_DATES.startDate, DATE_FORMAT), dayjs(DEFAULT_DATES.startDate, DATE_FORMAT),
dayjs(DEFAULT_DATES.endDate, DATE_FORMAT), dayjs(DEFAULT_DATES.endDate, DATE_FORMAT),
]); ]);
const [method, setMethod] = useState(''); const [method, setMethod] = useState<string>('');
const [isTableLoading, setIsTableLoading] = useState(false); const [isTableLoading, setIsTableLoading] = useState<boolean>(false);
const handlePaginationChange = (page: number) => { const handlePaginationChange = (page: number) => {
dispatch(setCurrentPage(page)); dispatch(setCurrentPage(page));
...@@ -125,12 +125,14 @@ const RequestPage: React.FC = () => { ...@@ -125,12 +125,14 @@ const RequestPage: React.FC = () => {
useEffect(() => { useEffect(() => {
if (isLoading) { if (isLoading) {
setIsTableLoading(true); setIsTableLoading(true);
} else if (isSuccess) { }
if (isSuccess) {
setIsTableLoading(false); setIsTableLoading(false);
setData(reqs.list); setData(reqs.list);
dispatch(setTotalReqNumber(reqs.list.length)); dispatch(setTotalReqNumber(reqs.list.length));
setDates([dayjs(min), dayjs(max)]); setDates([dayjs(min), dayjs(max)]);
} else if (isError) { }
if (isError) {
setIsTableLoading(false); setIsTableLoading(false);
} }
}, [isLoading, isSuccess, isError, reqs, dispatch, min, max]); }, [isLoading, isSuccess, isError, reqs, dispatch, min, max]);
......
...@@ -3,7 +3,7 @@ import { RootState } from '@/main'; ...@@ -3,7 +3,7 @@ import { RootState } from '@/main';
import { notification } from 'antd'; import { notification } from 'antd';
const baseQuery = fetchBaseQuery({ const baseQuery = fetchBaseQuery({
baseUrl: 'http://77.243.80.217:8080/esutd/api', baseUrl: 'http://77.243.80.217/esutd/api',
prepareHeaders: (headers, { getState }) => { prepareHeaders: (headers, { getState }) => {
const accessToken = (getState() as RootState).auth.token; const accessToken = (getState() as RootState).auth.token;
......
...@@ -30,7 +30,7 @@ export const requestApiSlice = apiSlice.injectEndpoints({ ...@@ -30,7 +30,7 @@ export const requestApiSlice = apiSlice.injectEndpoints({
endpoints: (builder) => ({ endpoints: (builder) => ({
getRequests: builder.query<RequestsResponse, void>({ getRequests: builder.query<RequestsResponse, void>({
query: () => `requests/list?pageNumber=${getRequestsParams.pageNumber}&pageSize=${getRequestsParams.pageSize}`, query: () => `requests/list?pageNumber=${getRequestsParams.pageNumber}&pageSize=${getRequestsParams.pageSize}`,
providesTags: ["requests"], providesTags: [{ type: "requests", id: "REQ_LIST" }],
}), }),
addNewRequest: builder.mutation<Request, Partial<Request>>({ addNewRequest: builder.mutation<Request, Partial<Request>>({
query: (initialReq) => ({ query: (initialReq) => ({
...@@ -38,11 +38,11 @@ export const requestApiSlice = apiSlice.injectEndpoints({ ...@@ -38,11 +38,11 @@ export const requestApiSlice = apiSlice.injectEndpoints({
method: 'POST', method: 'POST',
body: initialReq, body: initialReq,
}), }),
invalidatesTags: ["requests"], invalidatesTags: [{ type: "requests", id: "REQ_LIST" }],
}), }),
resendRequest: builder.query({ resendRequest: builder.query({
query: (reqId) => `requests/resent?id=${reqId}`, query: (reqId) => `requests/resent?id=${reqId}`,
providesTags: ['requests'] providesTags: (_, __, arg) => [{ type: "requests", id: arg }]
}) })
}) })
}) })
...@@ -50,5 +50,5 @@ export const requestApiSlice = apiSlice.injectEndpoints({ ...@@ -50,5 +50,5 @@ export const requestApiSlice = apiSlice.injectEndpoints({
export const { export const {
useAddNewRequestMutation, useAddNewRequestMutation,
useGetRequestsQuery, useGetRequestsQuery,
useResendRequestQuery useLazyResendRequestQuery
} = requestApiSlice; } = requestApiSlice;
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment