feat: add category page to ocenka
This commit is contained in:
@@ -1,3 +1,5 @@
|
|||||||
|
import { OcenkaCategory } from '@/views';
|
||||||
|
|
||||||
export default function OcenkaPage() {
|
export default function OcenkaPage() {
|
||||||
return <div>Ocenka</div>;
|
return <OcenkaCategory />;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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: 'Решение споров',
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
import { ROUTES } from '@shared/const/route';
|
import { ROUTES } from '@shared/const/route';
|
||||||
|
|
||||||
export const linksData = {
|
export const linksData = [
|
||||||
blockA: [
|
{
|
||||||
|
block: [
|
||||||
{ name: 'Автотехническая', link: ROUTES.EXPERTIZA_AUTOTECH },
|
{ name: 'Автотехническая', link: ROUTES.EXPERTIZA_AUTOTECH },
|
||||||
{ name: 'Трасологическая', link: ROUTES.EXPERTIZA_TRASOLOGIA },
|
{ name: 'Трасологическая', link: ROUTES.EXPERTIZA_TRASOLOGIA },
|
||||||
{ name: 'Оценочная', link: ROUTES.EXPERTIZA_OCENKI },
|
{ name: 'Оценочная', link: ROUTES.EXPERTIZA_OCENKI },
|
||||||
@@ -12,7 +13,9 @@ export const linksData = {
|
|||||||
link: ROUTES.EXPERTIZA_RECENZII,
|
link: ROUTES.EXPERTIZA_RECENZII,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
blockB: [
|
},
|
||||||
|
{
|
||||||
|
block: [
|
||||||
{ name: 'Документарная', link: ROUTES.EXPERTIZA_DOCUMENT },
|
{ name: 'Документарная', link: ROUTES.EXPERTIZA_DOCUMENT },
|
||||||
{ name: 'Бухгалтерская', link: ROUTES.EXPERTIZA_BUHGALTER },
|
{ name: 'Бухгалтерская', link: ROUTES.EXPERTIZA_BUHGALTER },
|
||||||
{ name: 'Финансово-экономическая', link: ROUTES.EXPERTIZA_FINANS },
|
{ name: 'Финансово-экономическая', link: ROUTES.EXPERTIZA_FINANS },
|
||||||
@@ -20,11 +23,14 @@ export const linksData = {
|
|||||||
{ name: 'Кадастровая', link: ROUTES.EXPERTIZA_KADASTR },
|
{ name: 'Кадастровая', link: ROUTES.EXPERTIZA_KADASTR },
|
||||||
{ name: 'Строительно-техническая', link: ROUTES.EXPERTIZA_STROIT },
|
{ name: 'Строительно-техническая', link: ROUTES.EXPERTIZA_STROIT },
|
||||||
],
|
],
|
||||||
blockC: [
|
},
|
||||||
|
{
|
||||||
|
block: [
|
||||||
{ name: 'Компьютерно-техническая', link: ROUTES.EXPERTIZA_COPMPUTER },
|
{ name: 'Компьютерно-техническая', link: ROUTES.EXPERTIZA_COPMPUTER },
|
||||||
{ name: 'Почерковедческая', link: ROUTES.EXPERTIZA_POCHERK },
|
{ name: 'Почерковедческая', link: ROUTES.EXPERTIZA_POCHERK },
|
||||||
{ name: 'Судебно-биологическая', link: undefined },
|
{ name: 'Судебно-биологическая', link: undefined },
|
||||||
{ name: 'Судебно-психологическая', link: undefined },
|
{ name: 'Судебно-психологическая', link: undefined },
|
||||||
{ name: 'Технико-криминалистическая', link: ROUTES.EXPERTIZA_TECH_CRIM },
|
{ name: 'Технико-криминалистическая', link: ROUTES.EXPERTIZA_TECH_CRIM },
|
||||||
],
|
],
|
||||||
};
|
},
|
||||||
|
];
|
||||||
|
|||||||
@@ -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) => (
|
||||||
|
<div key={index} className={s.Block}>
|
||||||
<ul className={s.List}>
|
<ul className={s.List}>
|
||||||
{linksData.blockA.map(({ name, link }, index) => (
|
{block.map(({ name, link }, idx) => (
|
||||||
<li key={index} className={s.ListItem}>
|
<li key={idx} className={s.ListItem}>
|
||||||
{link ? <Link href={link}>{name}</Link> : name}
|
{link ? <Link href={link}>{name}</Link> : name}
|
||||||
</li>
|
</li>
|
||||||
))}
|
))}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div className={s.Block}>
|
|
||||||
<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 />
|
||||||
|
|||||||
@@ -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';
|
||||||
|
|||||||
1
src/views/ocenka/category/index.ts
Normal file
1
src/views/ocenka/category/index.ts
Normal file
@@ -0,0 +1 @@
|
|||||||
|
export * from './ui';
|
||||||
14
src/views/ocenka/category/model/breadcrums.ts
Normal file
14
src/views/ocenka/category/model/breadcrums.ts
Normal 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: '',
|
||||||
|
},
|
||||||
|
];
|
||||||
112
src/views/ocenka/category/model/links.ts
Normal file
112
src/views/ocenka/category/model/links.ts
Normal 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,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
];
|
||||||
78
src/views/ocenka/category/styles.module.scss
Normal file
78
src/views/ocenka/category/styles.module.scss
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
34
src/views/ocenka/category/ui.tsx
Normal file
34
src/views/ocenka/category/ui.tsx
Normal 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 };
|
||||||
Reference in New Issue
Block a user