feat: add category page to ocenka

This commit is contained in:
2025-07-09 10:40:47 +03:00
parent 6c0a6f4a27
commit 6fbb3ffbfa
10 changed files with 292 additions and 56 deletions

View File

@@ -1,3 +1,5 @@
import { OcenkaCategory } from '@/views';
export default function OcenkaPage() { export default function OcenkaPage() {
return <div>Ocenka</div>; return <OcenkaCategory />;
} }

View File

@@ -66,6 +66,7 @@ export const baseMenu: TMenu = [
}, },
{ {
name: 'Оценка', name: 'Оценка',
link: ROUTES.OCENKA,
children: [ children: [
{ {
name: 'По ситуации', name: 'По ситуации',
@@ -269,6 +270,7 @@ export const baseMenu: TMenu = [
}, },
{ {
name: 'Юрист', name: 'Юрист',
link: ROUTES.JURIST,
children: [ children: [
{ {
name: 'Решение споров', name: 'Решение споров',

View File

@@ -1,30 +1,36 @@
import { ROUTES } from '@shared/const/route'; import { ROUTES } from '@shared/const/route';
export const linksData = { export const linksData = [
blockA: [ {
{ name: 'Автотехническая', link: ROUTES.EXPERTIZA_AUTOTECH }, block: [
{ name: 'Трасологическая', link: ROUTES.EXPERTIZA_TRASOLOGIA }, { name: 'Автотехническая', link: ROUTES.EXPERTIZA_AUTOTECH },
{ name: 'Оценочная', link: ROUTES.EXPERTIZA_OCENKI }, { name: 'Трасологическая', link: ROUTES.EXPERTIZA_TRASOLOGIA },
{ name: 'Пожарно-техническая', link: ROUTES.EXPERTIZA_POZHAR }, { name: 'Оценочная', link: ROUTES.EXPERTIZA_OCENKI },
{ name: 'Товароведческая', link: ROUTES.EXPERTIZA_TOVAR }, { name: 'Пожарно-техническая', link: ROUTES.EXPERTIZA_POZHAR },
{ { name: 'Товароведческая', link: ROUTES.EXPERTIZA_TOVAR },
name: 'Рецензирование и проверка экспертизы', {
link: ROUTES.EXPERTIZA_RECENZII, name: 'Рецензирование и проверка экспертизы',
}, link: ROUTES.EXPERTIZA_RECENZII,
], },
blockB: [ ],
{ name: 'Документарная', link: ROUTES.EXPERTIZA_DOCUMENT }, },
{ name: 'Бухгалтерская', link: ROUTES.EXPERTIZA_BUHGALTER }, {
{ name: 'Финансово-экономическая', link: ROUTES.EXPERTIZA_FINANS }, block: [
{ name: 'Земле-устроительная', link: ROUTES.EXPERTIZA_ZEM_STROY }, { name: 'Документарная', link: ROUTES.EXPERTIZA_DOCUMENT },
{ name: 'Кадастровая', link: ROUTES.EXPERTIZA_KADASTR }, { name: 'Бухгалтерская', link: ROUTES.EXPERTIZA_BUHGALTER },
{ name: 'Строительно-техническая', link: ROUTES.EXPERTIZA_STROIT }, { name: 'Финансово-экономическая', link: ROUTES.EXPERTIZA_FINANS },
], { name: 'Земле-устроительная', link: ROUTES.EXPERTIZA_ZEM_STROY },
blockC: [ { name: 'Кадастровая', link: ROUTES.EXPERTIZA_KADASTR },
{ name: 'Компьютерно-техническая', link: ROUTES.EXPERTIZA_COPMPUTER }, { name: 'Строительно-техническая', link: ROUTES.EXPERTIZA_STROIT },
{ name: 'Почерковедческая', link: ROUTES.EXPERTIZA_POCHERK }, ],
{ name: 'Судебно-биологическая', link: undefined }, },
{ name: 'Судебно-психологическая', link: undefined }, {
{ name: 'Технико-криминалистическая', link: ROUTES.EXPERTIZA_TECH_CRIM }, block: [
], { name: 'Компьютерно-техническая', link: ROUTES.EXPERTIZA_COPMPUTER },
}; { name: 'Почерковедческая', link: ROUTES.EXPERTIZA_POCHERK },
{ name: 'Судебно-биологическая', link: undefined },
{ name: 'Судебно-психологическая', link: undefined },
{ name: 'Технико-криминалистическая', link: ROUTES.EXPERTIZA_TECH_CRIM },
],
},
];

View File

@@ -12,33 +12,17 @@ function ExpertiseCategory() {
<section className={s.Container}> <section className={s.Container}>
<h2 className={s.Header}>Судебная экспертиза</h2> <h2 className={s.Header}>Судебная экспертиза</h2>
<div className={s.Grid}> <div className={s.Grid}>
<div className={s.Block}> {linksData.map(({ block }, index) => (
<ul className={s.List}> <div key={index} className={s.Block}>
{linksData.blockA.map(({ name, link }, index) => ( <ul className={s.List}>
<li key={index} className={s.ListItem}> {block.map(({ name, link }, idx) => (
{link ? <Link href={link}>{name}</Link> : name} <li key={idx} className={s.ListItem}>
</li> {link ? <Link href={link}>{name}</Link> : name}
))} </li>
</ul> ))}
</div> </ul>
<div className={s.Block}> </div>
<ul className={s.List}> ))}
{linksData.blockB.map(({ name, link }, index) => (
<li key={index} className={s.ListItem}>
{link ? <Link href={link}>{name}</Link> : name}
</li>
))}
</ul>
</div>
<div className={s.Block}>
<ul className={s.List}>
{linksData.blockC.map(({ name, link }, index) => (
<li key={index} className={s.ListItem}>
{link ? <Link href={link}>{name}</Link> : name}
</li>
))}
</ul>
</div>
</div> </div>
</section> </section>
<Partners /> <Partners />

View File

@@ -16,3 +16,6 @@ export * from './expertise/tech-crim';
export * from './expertise/tovar'; export * from './expertise/tovar';
export * from './expertise/trasologia'; export * from './expertise/trasologia';
export * from './expertise/zem-stroy'; export * from './expertise/zem-stroy';
//Ocenka
export * from './ocenka/category';

View File

@@ -0,0 +1 @@
export * from './ui';

View File

@@ -0,0 +1,14 @@
import { ROUTES } from '@shared/const/route';
export const PAGE_NAME = 'Оценка';
export const breadcrumbData = [
{
name: 'Оценка',
path: ROUTES.EXPERTIZA,
},
{
name: PAGE_NAME,
path: '',
},
];

View File

@@ -0,0 +1,112 @@
import { ROUTES } from '@shared/const/route';
export const linksData = [
{
title: 'По ситуации',
block: [
{ name: 'Независимая оценка', link: ROUTES.OCENKA_NEZAVISIM },
{ name: 'Оценка для опеки', link: ROUTES.OCENKA_OPEKA },
{ name: 'Оценка для нотариуса', link: ROUTES.OCENKA_NOTARIUS },
{
name: 'Оценка для вступления в наследство',
link: ROUTES.OCENKA_NASLEDSTVO,
},
{ name: 'Оценка для страхования', link: ROUTES.OCENKA_STRAHOVANIE },
{
name: 'Оценка для определения стоимости ущерба',
link: ROUTES.OCENKA_USCHERB,
},
{ name: 'Оценка имущества при разводе', link: ROUTES.OCENKA_RAZVOD },
{ name: 'Оценка недвижимости для суда', link: ROUTES.OCENKA_SUD },
{
name: 'Оценка для внесения в уставный капитал',
link: ROUTES.OCENKA_USTAV_KAPITAL,
},
{ name: 'Оценка для ипотеки', link: ROUTES.OCENKA_IPOTEKA },
{ name: 'Оценка для банка', link: ROUTES.OCENKA_BANK },
{
name: 'Оценка имущества для банкротства',
link: ROUTES.OCENKA_BANKROTSTV,
},
],
},
{
title: 'Жилая недвижимость',
block: [
{ name: 'Оценка квартиры', link: ROUTES.OCENKA_KVARTIRA },
{ name: 'Оценка жилого дома', link: ROUTES.OCENKA_DOM },
{ name: 'Оценка земельного участка', link: ROUTES.OCENKA_UCHASTOK },
{ name: 'Оценка гаража', link: ROUTES.OCENKA_GARAZH },
{ name: 'Оценка ущерба недвижимости', link: ROUTES.OCENKA_NEDVIGA },
{ name: 'Оценка ущерба от залива', link: ROUTES.OCENKA_ZATOPLENIE },
{ name: 'Оценка ущерба от пожара', link: ROUTES.OCENKA_POZHAR },
],
},
{
title: 'Коммерческая недвижимость',
block: [
{ name: 'Оценка стоимости арендной ставки', link: ROUTES.OCENKA_ARENDA },
{ name: 'Оценка здания', link: ROUTES.OCENKA_ZDANIE },
{ name: 'Оценка земель', link: ROUTES.OCENKA_ZEMLYA },
{ name: 'Оценка нежилого помещения', link: ROUTES.OCENKA_POMESCHENIE },
{ name: 'Оценка офиса', link: ROUTES.OCENKA_OFFICE },
{ name: 'Оценка сооружений', link: ROUTES.OCENKA_SOORUZHENIE },
{
name: 'Оценка незавершенного строительства',
link: ROUTES.OCENKA_NEZAV_STROIT,
},
],
},
{
title: 'Имущество',
block: [
{ name: 'Оценка недвижимости', link: ROUTES.OCENKA_NEDVIGA },
{ name: 'Оценка машин и оборудования', link: ROUTES.OCENKA_MASHINES },
{ name: 'Оценка спецтехники', link: ROUTES.OCENKA_SPECTECHNIKA },
{ name: 'Оценка нематериальных активов', link: ROUTES.OCENKA_ACTIVES },
{ name: 'Оценка стоимости предприятия', link: ROUTES.OCENKA_BUSINESS },
{ name: 'Оценка ценных бумаг', link: ROUTES.OCENKA_CENN_BUMAGI },
{
name: 'Экспертиза и рецензирование отчета об оценке',
link: ROUTES.OCENKA_RECINSIA_OTCHETA,
},
],
},
{
title: 'Ипотека',
block: [
{
name: 'Оценка для ипотеки в Сбербанке',
link: ROUTES.OCENKA_IPOTEKA_SBER,
},
{
name: 'Оценка для ипотеки в банке ВТБ',
link: ROUTES.OCENKA_IPOTEKA_VTB,
},
],
},
{
title: 'Транспорт',
block: [
{ name: 'Оценка ущерба в ДТП', link: ROUTES.OCENKA_DTP },
{
name: 'Оценка УТС утраты товарной стоимости',
link: ROUTES.OCENKA_UTS,
},
{
name: 'Оценка рыночной стоимости автомобиля',
link: ROUTES.OCENKA_RYNOCHNAYA,
},
{ name: 'Оценка автомобиля для суда', link: ROUTES.OCENKA_AUTO_SUD },
{ name: 'Оценка мотоциклов и мототехники', link: ROUTES.OCENKA_MOTO },
{
name: 'Оценка морских и речных судов',
link: ROUTES.OCENKA_PLAVSREDSTV,
},
{
name: 'Оценка воздушных судов и летательных аппаратов',
link: ROUTES.OCENKA_VOZDUSHNYH_SUDOV,
},
],
},
];

View File

@@ -0,0 +1,78 @@
.Container {
margin: 0 auto;
max-width: rem(1540px);
display: flex;
flex-direction: column;
gap: 0px;
padding: 10px;
@include iftablet {
padding: 20px;
}
@include iflaptop {
padding: 28px;
}
@include ifdesktop {
padding: 40px;
}
}
.Header {
font-family: $font-roboto;
font-weight: 500;
font-size: 32px;
line-height: 130%;
color: $color-text;
margin-bottom: 40px;
}
.Grid {
display: grid;
grid-template-columns: auto;
gap: 40px 0;
@include iftablet {
grid-template-columns: repeat(3, 1fr);
}
}
.Block {
display: block;
.Title {
font-family: $font-roboto;
font-weight: 500;
font-size: 24px;
line-height: 130%;
color: $color-text;
margin-bottom: 20px;
}
.List {
display: flex;
flex-direction: column;
gap: 10px;
list-style-type: disc;
margin-left: 16px;
}
.ListItem {
font-family: $font-roboto;
font-weight: 400;
font-size: 16px;
line-height: 130%;
color: $color-text;
list-style: unset;
a {
color: $color-green;
}
a:hover {
color: $color-green-hover;
text-decoration: underline;
}
}
}

View File

@@ -0,0 +1,34 @@
import s from './styles.module.scss';
import { breadcrumbData } from './model/breadcrums';
import { Breadcrumbs } from '@/widgets';
import Link from 'next/link';
import { Partners } from '@/feature/article';
import { linksData } from './model/links';
function OcenkaCategory() {
return (
<>
<Breadcrumbs breadcrumbs={breadcrumbData} />
<section className={s.Container}>
<h2 className={s.Header}>Услуги оценки имущества и бизнеса</h2>
<div className={s.Grid}>
{linksData.map(({ title, block }, index) => (
<div key={index} className={s.Block}>
<h3 className={s.Title}>{title}</h3>
<ul className={s.List}>
{block.map(({ name, link }, idx) => (
<li key={idx} className={s.ListItem}>
{link ? <Link href={link}>{name}</Link> : name}
</li>
))}
</ul>
</div>
))}
</div>
</section>
<Partners />
</>
);
}
export { OcenkaCategory };