стили

This commit is contained in:
PotapovaA 2026-05-21 12:39:42 +03:00
parent b580e38117
commit 499664511a
11 changed files with 61 additions and 42 deletions

View File

@ -1,9 +1,9 @@
import api from './client'; import api from './client';
export const FormsSheetApi = { export const FormsSheetApi = {
get(form, sheetName) { get(formId, sheetName) {
return api return api
.get(`/form/${4}/sheet/${sheetName}`) .get(`/form/${formId}/sheet/${sheetName}`)
// .get(`/forms/${form}/sheet/${sheetName}`) // .get(`/forms/${form}/sheet/${sheetName}`)
.then((r) => r.data); .then((r) => r.data);
}, },

View File

@ -7,6 +7,9 @@ export const TasksApi = {
getSheets(taskId) { getSheets(taskId) {
return api.get(`/form/${taskId}/sheets`).then((r) => r.data); return api.get(`/form/${taskId}/sheets`).then((r) => r.data);
}, },
getById(formId){
return api.get(`/form/${formId}`).then((r) => r.data);
},
getTaskStages(taskId) { getTaskStages(taskId) {
return api.get(`/tasks/${taskId}/stages`).then((r) => r.data); return api.get(`/tasks/${taskId}/stages`).then((r) => r.data);
}, },

View File

@ -50,6 +50,7 @@ export const AppRoutes = () => {
<Route path="/new-table" element={<NewTablePage />} /> <Route path="/new-table" element={<NewTablePage />} />
<Route path="/tables-new" element={<TablesTest />} /> <Route path="/tables-new" element={<TablesTest />} />
<Route path="/tables/:form/:sheetName" element={<NewFormTablePage />} /> <Route path="/tables/:form/:sheetName" element={<NewFormTablePage />} />
<Route path="/table/form/:formId/form-type/:formType/:sheetName" element={<NewFormTablePage />} />
</Route> </Route>
</Route> </Route>
</Routes> </Routes>

View File

@ -20,8 +20,8 @@ import {
getTablePaperStyles, getTablePaperStyles,
} from './constants/tableConfig'; } from './constants/tableConfig';
const RealtimeTable = ({ form, sheetName }) => { const RealtimeTable = ({ formType, formId, sheetName }) => {
const { data, setData } = useRealtimeData(form, sheetName); const { data, setData } = useRealtimeData(formId, sheetName);
const [isLoading, setIsLoading] = useState(true); const [isLoading, setIsLoading] = useState(true);
const [globalFilter, setGlobalFilter] = useState(''); const [globalFilter, setGlobalFilter] = useState('');
const [showColumnFilters, setShowColumnFilters] = useState(false); const [showColumnFilters, setShowColumnFilters] = useState(false);
@ -51,18 +51,18 @@ const RealtimeTable = ({ form, sheetName }) => {
useEffect(() => { useEffect(() => {
const loadConfig = async () => { const loadConfig = async () => {
try { try {
const { config } = await import(`./constants/${form}/${sheetName}.js`); const { config } = await import(`./constants/${formType}/${sheetName}.js`);
// Make sure config.configData has the expected structure // Make sure config.configData has the expected structure
setColumnsConfig(config.config); setColumnsConfig(config.config);
} catch (error) { } catch (error) {
console.error(`Failed to load data for ${form}/${sheetName}:`, error); console.error(`Failed to load data for ${formType}/${sheetName}:`, error);
setColumnsConfig({ columns: [], colors: {} }); setColumnsConfig({ columns: [], colors: {} });
} }
}; };
loadConfig(); loadConfig();
}, [form, sheetName]); }, [formType, sheetName]);
const columns = useMemo(() => { const columns = useMemo(() => {
if (!columnsConfig || !columnsConfig.columns) return []; if (!columnsConfig || !columnsConfig.columns) return [];

View File

@ -1,17 +1,17 @@
export const BASE_TABLE_CONFIG = { export const BASE_TABLE_CONFIG = {
muiTableRowProps: { muiTableRowProps: {
sx: { height: '5rem' }, sx: { height: "5rem" },
}, },
enableExpanding: true, enableExpanding: true,
enableStickyHeader: true, enableStickyHeader: true,
enableColumnPinning: true, enableColumnPinning: true,
enableEditing: true, enableEditing: true,
editDisplayMode: 'cell', editDisplayMode: "cell",
renderTopToolbar: false, renderTopToolbar: false,
renderBottomToolbar: false, renderBottomToolbar: false,
layoutMode: 'grid-no-grow', layoutMode: "grid-no-grow",
enablePagination: false, enablePagination: false,
memoMode: 'cells', memoMode: "cells",
autoResetHiddenColumns: false, autoResetHiddenColumns: false,
autoResetSortBy: false, autoResetSortBy: false,
autoResetAll: false, autoResetAll: false,
@ -19,12 +19,12 @@ export const BASE_TABLE_CONFIG = {
enableColumnResizing: true, enableColumnResizing: true,
enableGlobalFilter: true, enableGlobalFilter: true,
enableColumnFilter: true, enableColumnFilter: true,
globalFilterFn: 'contains', globalFilterFn: "contains",
filterFromLeafRows: true, filterFromLeafRows: true,
positionGlobalFilter: 'left', positionGlobalFilter: "left",
positionPinning: { left: 0, right: 0 }, positionPinning: { left: 0, right: 0 },
defaultColumn: { filterFn: 'contains' }, defaultColumn: { filterFn: "contains" },
columnResizeMode: 'onChange', columnResizeMode: "onChange",
localization: { localization: {
noRecordsToDisplay: <span>Нет данных для отображения</span>, noRecordsToDisplay: <span>Нет данных для отображения</span>,
}, },
@ -32,23 +32,25 @@ export const BASE_TABLE_CONFIG = {
export const getTableHeadCellStyles = () => ({ export const getTableHeadCellStyles = () => ({
sx: { sx: {
whiteSpace: 'auto', whiteSpace: "auto",
wordBreak: 'normal', wordBreak: "normal",
boxSizing: 'border-box', boxSizing: "border-box",
minHeight: '3rem', minHeight: "3rem",
maxHeight: '3rem', maxHeight: "3rem",
border: '1px solid #E6E6E6', border: "1px solid #E6E6E6",
fontSize: '11px', fontSize: "11px",
fontFamily: 'Calibri, Arial, sans-serif', fontFamily: "Calibri, Arial, sans-serif",
}, },
}); });
export const getTablePaperStyles = () => ({ export const getTablePaperStyles = () => ({
sx: { sx: {
boxShadow: 'none', boxShadow: "none",
border: '1px solid #d1d1d1', border: "1px solid #d1d1d1",
height: '100%', height: "100%",
display: 'flex', display: "flex",
flexDirection: 'column', flexDirection: "column",
}, },
}); });
export const rowHeight = 32;

View File

@ -11,7 +11,6 @@ export const useTableScale = (tableRef, isLoading) => {
}, [sizeMult]); }, [sizeMult]);
const tableScaleStyle = useMemo( const tableScaleStyle = useMemo(
() => ({ () => ({
transform: `scale(${sizeMult})`, transform: `scale(${sizeMult})`,

View File

@ -2,7 +2,7 @@ import { useState, useEffect, useCallback } from "react";
import { dataMock } from "../../mocks/mockTable"; import { dataMock } from "../../mocks/mockTable";
import { FormsSheetApi } from "../../api/form_sheet"; import { FormsSheetApi } from "../../api/form_sheet";
const useRealtimeData = (form, sheetName) => { const useRealtimeData = (formId, sheetName) => {
const [data, setData] = useState([]); const [data, setData] = useState([]);
const formatedToSubRows = useCallback((depth, oldData) => { const formatedToSubRows = useCallback((depth, oldData) => {
@ -26,7 +26,7 @@ const useRealtimeData = (form, sheetName) => {
useEffect(() => { useEffect(() => {
const loadInitialData = async () => { const loadInitialData = async () => {
const res = await FormsSheetApi.get(form, sheetName); const res = await FormsSheetApi.get(formId, sheetName);
const mockData = res.result; const mockData = res.result;
const maxDepth = mockData.reduce((prev, current) => { const maxDepth = mockData.reduce((prev, current) => {
return prev.depth > current.depth ? prev : current; return prev.depth > current.depth ? prev : current;

View File

@ -17,8 +17,9 @@ const TablesList = ({
}; };
const renderTableCard = (table) => { const renderTableCard = (table) => {
console.log(table) //пока нет ручки
const path = `${basePath}/${table.id}`; formInfo = {form_type_code: 'FORM_2', id: 4}
const path = `${basePath}/form/${formInfo.id}/form-type/${formInfo.form_type_code}/${table.sheet}`;
return ( return (
<TableCard <TableCard

View File

@ -95,7 +95,7 @@ export const TaskCardComponent = ({
onAddForExport, onAddForExport,
}) => { }) => {
const navigate = useNavigate(); const navigate = useNavigate();
const { id, title, name, start_date, end_date, tables_count, ssp, form_type_code } = taskForm; const { id, title, name, start_date, end_date, tables_count, org_unit, form_type_code } = taskForm;
const [isEditModalOpen, setEditModalOpen] = useState(false); const [isEditModalOpen, setEditModalOpen] = useState(false);
const [editedTitle, setEditedTitle] = useState(''); const [editedTitle, setEditedTitle] = useState('');
@ -228,14 +228,13 @@ export const TaskCardComponent = ({
{formattedDateRange} {formattedDateRange}
</IconWithContent> </IconWithContent>
<IconWithContent icon={<UserIcon />}> <IconWithContent icon={<UserIcon />}>
{/* <Chip>{ssp.title}</Chip> */} <Chip>{org_unit.title}</Chip>
</IconWithContent> </IconWithContent>
<IconWithContent icon={<TableIcon />}> <IconWithContent icon={<TableIcon />}>
Таблиц: {tables_count} Таблиц: {tables_count}
</IconWithContent> </IconWithContent>
</CardBody> </CardBody>
{exportMode && ( {exportMode && (
<div> <div>
{isChecked ? ( {isChecked ? (

View File

@ -22,13 +22,11 @@ const TableInfo = () => {
}; };
export default function NewTablePage() { export default function NewTablePage() {
const { form, sheetName } = useParams() const { formId, formType, sheetName } = useParams()
console.log(form, sheetName)
useEffect(() => {
}, [form, sheetName])
return ( return (
<> <>
<RealtimeTable form={form} sheetName={sheetName} /> <RealtimeTable formType={formType} formId={formId} sheetName={sheetName} />
</> </>
); );
} }

View File

@ -68,7 +68,6 @@ export default function TaskPage() {
toast.error( toast.error(
error?.response?.data?.detail || 'Ошибка получения данных задачи', error?.response?.data?.detail || 'Ошибка получения данных задачи',
); );
setTask(null);
} finally { } finally {
setIsLoading(false); setIsLoading(false);
} }
@ -79,6 +78,23 @@ export default function TaskPage() {
} }
}, [id]); }, [id]);
useEffect(() => {
const getFormInfo = async () => {
setIsLoading(true);
try {
// TasksApi.
} catch (error) {
} finally {
setIsLoading(false);
}
};
if (Number.isFinite(id)) {
getFormInfo();
}
}, [id]);
const handleCreateProject = (projectData) => { const handleCreateProject = (projectData) => {
}; };