Commit cb5ab658 authored by Merekeyev Dias's avatar Merekeyev Dias

fixed resend btn

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