add organization functionality

parent 255213c5
...@@ -16,8 +16,7 @@ interface Organization { ...@@ -16,8 +16,7 @@ interface Organization {
export const apiSlice = createApi({ export const apiSlice = createApi({
reducerPath: 'api', reducerPath: 'api',
baseQuery: async (args, api, extraOptions) => { baseQuery: fetchBaseQuery({
const baseQuery = fetchBaseQuery({
baseUrl: "http://77.243.80.217:8080/esutd/api/organizations", baseUrl: "http://77.243.80.217:8080/esutd/api/organizations",
prepareHeaders: (headers, { getState }) => { prepareHeaders: (headers, { getState }) => {
const state = getState() as RootState; const state = getState() as RootState;
...@@ -27,27 +26,24 @@ export const apiSlice = createApi({ ...@@ -27,27 +26,24 @@ export const apiSlice = createApi({
headers.set("Authorization", `Bearer ${accessToken}`); headers.set("Authorization", `Bearer ${accessToken}`);
} }
headers.set("Content-Type", "application/json");
headers.set("Accept", "application/json"); headers.set("Accept", "application/json");
return headers; return headers;
}, },
}); }),
const result = await baseQuery(args, api, extraOptions);
return result;
},
tagTypes: ["organizations"], tagTypes: ["organizations"],
endpoints: (builder) => ({ endpoints: (builder) => ({
getOrganizations: builder.query<Organization[], void>({ // получить информацию getOrganizations: builder.query<Organization[], void>({
query: () => '/list', query: () => '/list',
providesTags: ["organizations"], // для управления кэшем или инвалидации данных в системе управления состоянием providesTags: ["organizations"],
}), }),
getOrganization: builder.query<Organization, string>({ getOrganization: builder.query<Organization, string>({
query: (orgId) => `/info?id=${orgId}`, query: (orgId) => `/info?id=${orgId}`,
}), }),
addNewOrganization: builder.mutation<Organization, Partial<Organization>>({ // изменение данных addNewOrganization: builder.mutation<Organization, Partial<Organization>>({
query: (initialOrg) => ({ query: (initialOrg) => ({
url: '/add', url: '/save', // Ensure the endpoint is correct
method: 'POST', method: 'POST',
body: initialOrg, body: initialOrg,
}), }),
......
...@@ -3,7 +3,7 @@ import { createSlice } from "@reduxjs/toolkit"; ...@@ -3,7 +3,7 @@ import { createSlice } from "@reduxjs/toolkit";
const initialState = { const initialState = {
currentPage: 1, currentPage: 1,
totalOrgNumber: 0, totalOrgNumber: 0,
ORG_NUMBER_PER_PAGE: 15 ORG_NUMBER_PER_PAGE: 8
} }
const mainPaginationSlice = createSlice({ const mainPaginationSlice = createSlice({
......
...@@ -13,7 +13,7 @@ interface AddValues { ...@@ -13,7 +13,7 @@ interface AddValues {
organization_code: string; organization_code: string;
organization_name: string; organization_name: string;
password: string; password: string;
status: number; // Change this line status: string;
} }
...@@ -30,13 +30,15 @@ const AddPage: React.FC = () => { ...@@ -30,13 +30,15 @@ const AddPage: React.FC = () => {
const onFinish = async (values: AddValues) => { const onFinish = async (values: AddValues) => {
const newValues = { const newValues = {
...values, ...values,
status: values.status, // Since it's now a number status: values.status === 'active' ? 2 : values.status === 'blocked' ? 1 : 0,
deleted: null, deleted: null,
created: new Date().toISOString(), created: new Date().toISOString(),
}; };
console.log("Sending data:", newValues);
try { try {
await addNewOrganization(newValues).unwrap(); // get data from promise await addNewOrganization(newValues).unwrap();
message.success('Организация успешно добавлена!'); message.success('Организация успешно добавлена!');
dispatch(setTotalOrgNumber(totalOrgNumber + 1)); dispatch(setTotalOrgNumber(totalOrgNumber + 1));
const newTotalPages = Math.ceil((totalOrgNumber + 1) / ORG_NUMBER_PER_PAGE); const newTotalPages = Math.ceil((totalOrgNumber + 1) / ORG_NUMBER_PER_PAGE);
...@@ -44,6 +46,7 @@ const AddPage: React.FC = () => { ...@@ -44,6 +46,7 @@ const AddPage: React.FC = () => {
navigate('/'); navigate('/');
} catch (err) { } catch (err) {
message.error('Произошла ошибка при добавлении организации!'); message.error('Произошла ошибка при добавлении организации!');
console.error(err);
} }
}; };
...@@ -53,7 +56,7 @@ const AddPage: React.FC = () => { ...@@ -53,7 +56,7 @@ const AddPage: React.FC = () => {
<Form <Form
layout="vertical" layout="vertical"
name="organization_form" name="organization_form"
initialValues={{ status: 2 }} // Change this line initialValues={{ status: 'active' }}
onFinish={onFinish} onFinish={onFinish}
className='form' className='form'
> >
...@@ -70,7 +73,7 @@ const AddPage: React.FC = () => { ...@@ -70,7 +73,7 @@ const AddPage: React.FC = () => {
<Item <Item
label="Код организации" label="Код организации"
name="organization_code" name="code"
rules={[ rules={[
{ required: true, message: 'Пожалуйста, введите код организации!' }, { required: true, message: 'Пожалуйста, введите код организации!' },
{ pattern: /^[a-zA-Z0-9-_]+$/, message: 'Код организации должен содержать только английские буквы, цифры, символы "-" и "_"' } { pattern: /^[a-zA-Z0-9-_]+$/, message: 'Код организации должен содержать только английские буквы, цифры, символы "-" и "_"' }
...@@ -81,7 +84,7 @@ const AddPage: React.FC = () => { ...@@ -81,7 +84,7 @@ const AddPage: React.FC = () => {
<Item <Item
label="Наименование организации" label="Наименование организации"
name="organization_name" name="name"
rules={[{ required: true, message: 'Пожалуйста, введите наименование организации!' }]} rules={[{ required: true, message: 'Пожалуйста, введите наименование организации!' }]}
> >
<Input maxLength={128} placeholder='Максимальная длина: 128 символов' /> <Input maxLength={128} placeholder='Максимальная длина: 128 символов' />
......
...@@ -41,7 +41,7 @@ const HomePage: React.FC = () => { ...@@ -41,7 +41,7 @@ const HomePage: React.FC = () => {
if (isLoading) { if (isLoading) {
table = <Spin /> table = <Spin />
} else if (isSuccess) { } else if (isSuccess) {
table = <Table dataSource={paginatedData(orgs)} columns={columns} pagination={false} /> table = <Table dataSource={paginatedData(orgs)} columns={columns} pagination={false} rowKey="id" />
} else if (isError) { } else if (isError) {
console.log(error) console.log(error)
table = <div>{error.toString()}</div> table = <div>{error.toString()}</div>
......
export const getStatusText = (status: number) => { export const getStatusText = (status: number) => {
switch (status) { switch (status) {
case 0: return "удален"; case 0: return "Удален";
case 1: return "заблокирован"; case 1: return "Заблокирован";
case 2: return "активен"; case 2: return "Активен";
default: return "неизвестно"; default: return "Неизвестно";
} }
} }
......
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