Commit 6737c329 authored by Merekeyev Dias's avatar Merekeyev Dias

fixed bug: after deleting the last org on the page, it returns to the previous with no data

parent 589dfa53
...@@ -9,7 +9,7 @@ interface InitialState { ...@@ -9,7 +9,7 @@ interface InitialState {
const initialState: InitialState = { const initialState: InitialState = {
currentPage: 1, currentPage: 1,
totalOrgNumber: 0, totalOrgNumber: 0,
ORG_NUMBER_PER_PAGE: 15 ORG_NUMBER_PER_PAGE: 12
} }
const mainPaginationSlice = createSlice({ const mainPaginationSlice = createSlice({
......
import React, { useState } from 'react'; import React, { useEffect, useState } from 'react';
import { useNavigate } from 'react-router'; import { useNavigate } from 'react-router';
import { useDispatch, useSelector } from 'react-redux';
import { Button, Space, Tag, Modal, Checkbox, message } from 'antd'; import { Button, Space, Tag, Modal, Checkbox, message } from 'antd';
import type { TableProps } from 'antd'; import type { TableProps } from 'antd';
import { useDispatch } from 'react-redux';
import { useDeleteOrganizationMutation } from '../../features/api/organizationApiSlice'; import { useDeleteOrganizationMutation } from '../../features/api/organizationApiSlice';
import { getStatusText, getStatusColor } from './utils';
import { addCheckedCodes, removeCheckedCodes } from '../../features/sync_btn/syncBtn'; import { addCheckedCodes, removeCheckedCodes } from '../../features/sync_btn/syncBtn';
import { setCurrentPage, setTotalOrgNumber } from '../../features/pagination/mainPagination';
import { getStatusText, getStatusColor } from './utils';
import { current } from '@reduxjs/toolkit';
export interface DataType { export interface DataType {
id: number; id: number;
...@@ -87,8 +90,12 @@ export const CheckboxColumn: React.FC<{ data: DataType }> = ({ data }) => { ...@@ -87,8 +90,12 @@ export const CheckboxColumn: React.FC<{ data: DataType }> = ({ data }) => {
}; };
export const ActionColumn: React.FC<{ data: DataType }> = ({ data }) => { export const ActionColumn: React.FC<{ data: DataType }> = ({ data }) => {
const [open, setOpen] = useState<boolean>(false);
const navigate = useNavigate(); const navigate = useNavigate();
const dispatch = useDispatch();
const [open, setOpen] = useState<boolean>(false);
const currentPage = useSelector((state: any) => state.mainPagination.currentPage);
const totalOrgNumber = useSelector((state: any) => state.mainPagination.totalOrgNumber);
const ORG_NUMBER_PER_PAGE = useSelector((state: any) => state.mainPagination.ORG_NUMBER_PER_PAGE);
const [deleteOrganization] = useDeleteOrganizationMutation(); const [deleteOrganization] = useDeleteOrganizationMutation();
const showDeleteModal = () => { const showDeleteModal = () => {
...@@ -97,10 +104,13 @@ export const ActionColumn: React.FC<{ data: DataType }> = ({ data }) => { ...@@ -97,10 +104,13 @@ export const ActionColumn: React.FC<{ data: DataType }> = ({ data }) => {
const handleDeleteModalOk = async () => { const handleDeleteModalOk = async () => {
try { try {
await deleteOrganization(data.code); await deleteOrganization(data.code).unwrap();
if (totalOrgNumber % ORG_NUMBER_PER_PAGE === 1)
dispatch(setCurrentPage(currentPage - 1));
message.success('Организация успешно удалена!'); message.success('Организация успешно удалена!');
setOpen(false); setOpen(false);
} catch (err) { } catch (err) {
console.log(err);
message.error('Произошла ошибка при удалении организации!'); message.error('Произошла ошибка при удалении организации!');
} }
}; };
......
import React, { createRef, useEffect, useState } from 'react'; import React, { createRef, useEffect } from 'react';
import { useNavigate } from 'react-router'; import { useNavigate } from 'react-router';
import { useSelector, useDispatch } from 'react-redux'; import { useSelector, useDispatch } from 'react-redux';
import { Button, message, Pagination, Space, Spin, Table } from 'antd'; import { Button, message, Pagination, Space, Spin, Table } from 'antd';
import { TableRef } from 'antd/es/table';
import { useDeleteOrganizationMutation, useGetOrganizationsQuery } from '../../features/api/organizationApiSlice'; import { useDeleteOrganizationMutation, useGetOrganizationsQuery } from '../../features/api/organizationApiSlice';
import { setCurrentPage, setTotalOrgNumber } from '../../features/pagination/mainPagination'; import { setCurrentPage, setTotalOrgNumber } from '../../features/pagination/mainPagination';
import { setDisabled } from '../../features/sync_btn/syncBtn';
import { DataType, columns } from './Columns'; import { DataType, columns } from './Columns';
import { TableRef } from 'antd/es/table';
import './Homepage.css'; import './Homepage.css';
import { setDisabled } from '../../features/sync_btn/syncBtn';
const HomePage: React.FC = () => { const HomePage: React.FC = () => {
const navigate = useNavigate(); const navigate = useNavigate();
......
...@@ -67,8 +67,8 @@ const ManageOrganization: React.FC = () => { ...@@ -67,8 +67,8 @@ const ManageOrganization: React.FC = () => {
await addNewOrganization({ ...normalizedValues, created: new Date().toISOString() }).unwrap(); await addNewOrganization({ ...normalizedValues, created: new Date().toISOString() }).unwrap();
message.success('Организация успешно добавлена!'); message.success('Организация успешно добавлена!');
dispatch(setTotalOrgNumber(totalOrgNumber + 1)); dispatch(setTotalOrgNumber(totalOrgNumber + 1));
const newTotalPages = Math.ceil((totalOrgNumber + 1) / ORG_NUMBER_PER_PAGE); const newCurrentPage = Math.ceil((totalOrgNumber + 1) / ORG_NUMBER_PER_PAGE);
dispatch(setCurrentPage(newTotalPages)); dispatch(setCurrentPage(newCurrentPage));
} }
navigate('/'); navigate('/');
} catch (err) { } catch (err) {
......
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