этапы

This commit is contained in:
PotapovaA 2026-06-25 11:20:29 +03:00
parent cc766238f2
commit 3f9595928e
10 changed files with 75 additions and 22 deletions

View File

@ -1,4 +1,4 @@
import api from './client'; import api from "./client";
export const FormsSheetApi = { export const FormsSheetApi = {
get(formId, sheetName, params) { get(formId, sheetName, params) {
@ -9,7 +9,10 @@ export const FormsSheetApi = {
export(formId, sheetName, params = {}) { export(formId, sheetName, params = {}) {
return api.get(`export/form/${formId}/sheet/${sheetName}`, { return api.get(`export/form/${formId}/sheet/${sheetName}`, {
params, params,
responseType: 'blob', responseType: "blob",
}); });
}, },
getExpenseItem(itemId) {
return api.get(`/expense-item/${itemId}`).then((r) => r.data);
},
}; };

View File

@ -151,7 +151,7 @@ const RealtimeTable = ({ formType, formId, sheetName, direction }) => {
if (isPinned) { if (isPinned) {
const colId = table.getState().columnPinning.left[index]; const colId = table.getState().columnPinning.left[index];
const column = table.getColumn(colId); const column = table.getColumn(colId);
return column.columnDef.size; return column?.getSize() ?? 150;
} }
const allCols = [...table.getLeftVisibleLeafColumns(), ...table.getCenterVisibleLeafColumns()] const allCols = [...table.getLeftVisibleLeafColumns(), ...table.getCenterVisibleLeafColumns()]
return allCols[index]?.getSize() ?? 150; return allCols[index]?.getSize() ?? 150;
@ -243,7 +243,6 @@ const RealtimeTable = ({ formType, formId, sheetName, direction }) => {
toast.error('Ошибка редактирования ячейки'); toast.error('Ошибка редактирования ячейки');
} }
}, [dataEditingCells, editingCell]); }, [dataEditingCells, editingCell]);
console.log(editingCell)
useEffect(() => { useEffect(() => {
if (table && data && columns.length !== 0) { if (table && data && columns.length !== 0) {

View File

@ -137,7 +137,9 @@ const AuditLogsPage = () => {
return ( return (
<PageContainer> <PageContainer>
<HeaderSwitch /> <HeaderSwitch />
<Box display="flex" justifyContent="space-between"> <Box sx={{
display: "flex", justifyContent: "space-between"
}} >
<SwitchUserSsp /> <SwitchUserSsp />
</Box> </Box>

View File

@ -118,8 +118,7 @@ const AuditLogsTable = ({
size: 250, size: 250,
Cell: ({ row }) => ( Cell: ({ row }) => (
<Typography> <Typography>
{getRussianNamesForType(row.original.action) || {getRussianNamesForType(row.original.action) }
row.original.event_type}
</Typography> </Typography>
), ),
enableColumnActions: false, enableColumnActions: false,

View File

@ -1,21 +1,19 @@
export const DEFAULT_ACTIONS = { export const DEFAULT_ACTIONS = {
ROW_CREATE: 'Создание строки', ROW_CREATE: 'Создание строки',
ROW_DELETE: 'Удаление строки', ROW_DELETE: 'Удаление строки',
ACCESS_WINDOW_CHANGE: 'Изменение окна доступа',
ACCESS_EXTEND: 'Расширение доступа', ACCESS_EXTEND: 'Расширение доступа',
ACCESS_WINDOW_CHANGE: 'Изменение окна доступа',
USER_ROLE_CHANGE: 'Изменение роли пользователя', USER_ROLE_CHANGE: 'Изменение роли пользователя',
CREATE_TASK: 'Создание задачи', CREATE_TASK: 'Создание задачи',
UPDATE_TASK: 'Обновление задачи', UPDATE_TASK: 'Обновление задачи',
DELETE_TASK: 'Удаление задачи', DELETE_TASK: 'Удаление задачи',
USER_CREATE: 'Создание пользователя', USER_CREATE: 'Создание пользователя',
LOGIN: 'Вход в систему',
USER_ACCESS_GRANTED: 'Предоставление доступа к ССП/РФ', USER_ACCESS_GRANTED: 'Предоставление доступа к ССП/РФ',
USER_ACCESS_REVOKED: 'Отмена доступа к ССП/РФ', USER_ACCESS_REVOKED: 'Отмена доступа к ССП/РФ',
VSP_CREATE: 'Создание ВСП', VSP_CREATE: 'Создание ВСП',
}; };
export const ENTITY_RUSSIAN_NAMES = { export const ENTITY_RUSSIAN_NAMES = {
LOGIN: 'Вход в систему',
ROW: 'строки', ROW: 'строки',
PROJECT: 'проекта', PROJECT: 'проекта',
TABLE: 'таблицы', TABLE: 'таблицы',
@ -26,6 +24,7 @@ export const ENTITY_RUSSIAN_NAMES = {
USER_ACCESS: 'доступа к ССП/РФ', USER_ACCESS: 'доступа к ССП/РФ',
USER: 'пользователя', USER: 'пользователя',
ACCESS_WINDOW: 'окна доступа', ACCESS_WINDOW: 'окна доступа',
ACCESS: 'окна доступа',
USER_ROLE: 'роли пользователя', USER_ROLE: 'роли пользователя',
VSP: 'ВСП', VSP: 'ВСП',
}; };
@ -38,6 +37,7 @@ export const ACTION_RUSSIAN_NAMES = {
GET: 'Получение', GET: 'Получение',
GRANTED: 'Предоставление', GRANTED: 'Предоставление',
REVOKED: 'Отмена', REVOKED: 'Отмена',
EXTEND: 'Расширение',
}; };
export const getRussianNamesForType = (name) => { export const getRussianNamesForType = (name) => {

View File

@ -56,11 +56,15 @@ export const EVENT_CONFIGS = {
}, },
ROW_CREATE: { ROW_CREATE: {
sheet: "Лист", sheet: "Лист",
expense_item_id: 'Статья расходов' expense_item_id: 'Статья расходов',
form_id: 'Информация о задаче',
direction: 'Направление',
}, },
ROW_DELETE: { ROW_DELETE: {
sheet: "Лист", sheet: "Лист",
expense_item_id: 'Статья расходов' expense_item_id: 'Статья расходов',
form_id: 'Информация о задаче',
direction: 'Направление',
}, },
PROJECT_CREATE: { PROJECT_CREATE: {
"name": "Название", "name": "Название",
@ -71,5 +75,11 @@ export const EVENT_CONFIGS = {
"name": "Название", "name": "Название",
"year": "Год", "year": "Год",
"org_unit_id": "СПП/РФ", "org_unit_id": "СПП/РФ",
} },
ACCESS_EXTEND:{
form_id: 'Информация о задаче',
closes_at_after: 'Дата закрытия',
closes_at_before: 'Дата открытия',
phase_name: 'Названия этапа'
},
}; };

View File

@ -1,8 +1,10 @@
import { DictVspApi } from '../../../../api/dict-vsp'; import { DictVspApi } from '../../../../api/dict-vsp';
import { FormsSheetApi } from '../../../../api/form_sheet';
import { FormsApi } from '../../../../api/forms';
import { SspApi } from '../../../../api/ssp'; import { SspApi } from '../../../../api/ssp';
import { TasksApi } from '../../../../api/tasks'; import { TasksApi } from '../../../../api/tasks';
import { UsersApi } from '../../../../api/users'; import { UsersApi } from '../../../../api/users';
import { ROLES_ID_RUSSIAN_NAME, SHEET_NAME } from '../../../../constants'; import { DIRECTION_TRANSLATE, FROM_TYPE_TRANSLATE, ROLES_ID_RUSSIAN_NAME, SHEET_NAME } from '../../../../constants';
export const VALUE_TRANSFORMERS = { export const VALUE_TRANSFORMERS = {
Роль: transformRole, Роль: transformRole,
@ -14,6 +16,9 @@ export const VALUE_TRANSFORMERS = {
'Создана для СПП/РФ': transformSspsDict, 'Создана для СПП/РФ': transformSspsDict,
'Лист': transformSheet, 'Лист': transformSheet,
'СПП/РФ': transformSsp, 'СПП/РФ': transformSsp,
'Статья расходов': transformExpense,
'Информация о задаче': transformForm,
'Направление': transformDirection
}; };
export function transformRole(value) { export function transformRole(value) {
@ -83,3 +88,33 @@ export async function transformSspsDict(ssps) {
export function transformSheet(value) { export function transformSheet(value) {
return SHEET_NAME[value] || 'Лист не найден'; return SHEET_NAME[value] || 'Лист не найден';
} }
export async function transformExpense(itemId) {
if (!itemId) {
return 'нет информации'
}
const res = await FormsSheetApi.getExpenseItem(itemId);
const expense = res.result;
return expense.name;
}
export async function transformForm(formId) {
if (!formId) {
return 'нет информации'
}
const res = await FormsApi.getForm(formId);
const form = res.result;
const formInfo = {
'название': FROM_TYPE_TRANSLATE[form.form_type_code],
'ССП/РФ': form.org_unit.title,
'Год': form.year,
}
return formInfo
}
export function transformDirection(direction){
if (!direction){
return '-';
}
return DIRECTION_TRANSLATE[direction];
}

View File

@ -95,7 +95,9 @@ const TableFooter = ({
</FormControl> </FormControl>
</Box> </Box>
<Stack direction="row" spacing={2} alignItems="center"> <Stack sx={{
direction: "row", spacing: 2, alignItems: "center"
}}>
<Pagination <Pagination
count={Math.max(1, totalPages)} count={Math.max(1, totalPages)}
page={page + 1} page={page + 1}

View File

@ -142,7 +142,7 @@ function DictVspPage() {
<DictVspInfo /> <DictVspInfo />
{/* <HeaderSwitch /> */} {/* <HeaderSwitch /> */}
<PageContainer> <PageContainer>
<Stack alignItems={'stretch'} width="100%"> <Stack sx={{ alignItems: 'stretch' }} width="100%">
<Box width="100%"> <Box width="100%">
{user.role_id !== ROLES_NAME_ID.executor_rf && ( {user.role_id !== ROLES_NAME_ID.executor_rf && (
<DictVspFilters <DictVspFilters

View File

@ -106,9 +106,12 @@ function DictsNavigatorPage() {
</FeatureList> </FeatureList>
<PrimaryButton height={'2.75rem'} onClick={handleNavigateToVSP}> <PrimaryButton height={'2.75rem'} onClick={handleNavigateToVSP}>
<Stack <Stack
spacing={'.25rem'} sx={{
direction={'row'} spacing: '.25rem',
alignItems={'center'} direction: 'row',
alignItems: 'center',
}}
> >
<TransitionSvg /> <TransitionSvg />
<p>Открыть справочник объектов</p> <p>Открыть справочник объектов</p>