From a0e1257a40fbff71744c083c3350558d520b8fa6 Mon Sep 17 00:00:00 2001 From: Boris Voropaev Date: Fri, 24 May 2024 17:49:09 +0300 Subject: [PATCH] content --- src/app/_services/seo.service.ts | 8 +- src/app/app.component.html | 7 +- src/app/app.component.ts | 4 +- src/app/app.routes.ts | 44 +++--- .../automatization.component.html | 101 +++++++++++++ .../automatization.component.scss | 98 +++++++++++++ .../automatization.component.spec.ts | 23 +++ .../automatization.component.ts | 41 ++++++ src/app/contacts/contacts.component.html | 58 ++++++++ src/app/contacts/contacts.component.scss | 49 +++++++ src/app/contacts/contacts.component.ts | 23 +++ .../development/development.component.html | 71 +++++++++ .../development/development.component.scss | 41 ++++++ src/app/development/development.component.ts | 46 ++++++ .../img-carusel/img-carusel.component.html | 38 +++++ .../img-carusel/img-carusel.component.scss | 138 ++++++++++++++++++ .../img-carusel/img-carusel.component.spec.ts | 23 +++ src/app/img-carusel/img-carusel.component.ts | 58 ++++++++ src/app/projects/faufcs/faufcs.component.html | 57 ++++++++ src/app/projects/faufcs/faufcs.component.scss | 0 src/app/projects/faufcs/faufcs.component.ts | 26 ++++ .../projects/intergaz/intergaz.component.html | 57 ++++++++ .../projects/intergaz/intergaz.component.scss | 0 .../projects/intergaz/intergaz.component.ts | 24 +++ src/app/projects/projects.component.html | 108 ++++++++++++++ src/app/projects/projects.component.scss | 45 ++++++ src/app/projects/projects.component.ts | 21 +++ src/app/projects/scvg/scvg.component.html | 57 ++++++++ src/app/projects/scvg/scvg.component.scss | 0 src/app/projects/scvg/scvg.component.ts | 26 ++++ src/app/projects/tk023/tk023.component.html | 57 ++++++++ src/app/projects/tk023/tk023.component.scss | 0 src/app/projects/tk023/tk023.component.ts | 25 ++++ src/app/projects/tk465/tk465.component.html | 57 ++++++++ src/app/projects/tk465/tk465.component.scss | 0 src/app/projects/tk465/tk465.component.ts | 26 ++++ .../projects/vniigaz/vniigaz.component.html | 57 ++++++++ .../projects/vniigaz/vniigaz.component.scss | 0 src/app/projects/vniigaz/vniigaz.component.ts | 25 ++++ src/app/reviews/reviews.component.ts | 2 +- src/app/sites/sites.component.html | 99 +++++++++++++ src/app/sites/sites.component.scss | 63 ++++++++ src/app/sites/sites.component.ts | 42 ++++++ 43 files changed, 1713 insertions(+), 32 deletions(-) create mode 100644 src/app/automatization/automatization.component.html create mode 100644 src/app/automatization/automatization.component.scss create mode 100644 src/app/automatization/automatization.component.spec.ts create mode 100644 src/app/automatization/automatization.component.ts create mode 100644 src/app/contacts/contacts.component.html create mode 100644 src/app/contacts/contacts.component.scss create mode 100644 src/app/contacts/contacts.component.ts create mode 100644 src/app/development/development.component.html create mode 100644 src/app/development/development.component.scss create mode 100644 src/app/development/development.component.ts create mode 100644 src/app/img-carusel/img-carusel.component.html create mode 100644 src/app/img-carusel/img-carusel.component.scss create mode 100644 src/app/img-carusel/img-carusel.component.spec.ts create mode 100644 src/app/img-carusel/img-carusel.component.ts create mode 100644 src/app/projects/faufcs/faufcs.component.html create mode 100644 src/app/projects/faufcs/faufcs.component.scss create mode 100644 src/app/projects/faufcs/faufcs.component.ts create mode 100644 src/app/projects/intergaz/intergaz.component.html create mode 100644 src/app/projects/intergaz/intergaz.component.scss create mode 100644 src/app/projects/intergaz/intergaz.component.ts create mode 100644 src/app/projects/projects.component.html create mode 100644 src/app/projects/projects.component.scss create mode 100644 src/app/projects/projects.component.ts create mode 100644 src/app/projects/scvg/scvg.component.html create mode 100644 src/app/projects/scvg/scvg.component.scss create mode 100644 src/app/projects/scvg/scvg.component.ts create mode 100644 src/app/projects/tk023/tk023.component.html create mode 100644 src/app/projects/tk023/tk023.component.scss create mode 100644 src/app/projects/tk023/tk023.component.ts create mode 100644 src/app/projects/tk465/tk465.component.html create mode 100644 src/app/projects/tk465/tk465.component.scss create mode 100644 src/app/projects/tk465/tk465.component.ts create mode 100644 src/app/projects/vniigaz/vniigaz.component.html create mode 100644 src/app/projects/vniigaz/vniigaz.component.scss create mode 100644 src/app/projects/vniigaz/vniigaz.component.ts create mode 100644 src/app/sites/sites.component.html create mode 100644 src/app/sites/sites.component.scss create mode 100644 src/app/sites/sites.component.ts diff --git a/src/app/_services/seo.service.ts b/src/app/_services/seo.service.ts index ae9deb4..f7ce2c3 100644 --- a/src/app/_services/seo.service.ts +++ b/src/app/_services/seo.service.ts @@ -10,14 +10,16 @@ import { filter } from "rxjs/operators"; }) export class SEOService { constructor(private title: Title, private meta: Meta, router:Router) { + router.events .pipe( - filter((event:any)=>{return event.routerEvent}) + filter((event:any)=>event.url&&event.type == 1) ) .subscribe( (event)=>{ - console.log('Seo', event.routerEvent.url); - let data = this.seoData[event.routerEvent.url] + console.log('Seo', event); + let url = event.url + let data = this.seoData[url] if(data){ this.updateTitle(data.title); this.updateDescription(data.description); diff --git a/src/app/app.component.html b/src/app/app.component.html index dc2754a..3d32d07 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -44,9 +44,9 @@ @@ -91,8 +91,7 @@ - - + Напишите нам diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 00fba6d..b3ed8be 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -1,17 +1,17 @@ import { Component } from '@angular/core'; import { CommonModule, DatePipe, ViewportScroller } from '@angular/common'; import { RouterOutlet, NavigationEnd, Router, RouterLink, RouterLinkActive } from '@angular/router'; +import { RequestComponent } from './request/request.component'; @Component({ selector: 'app-root', standalone: true, - imports: [CommonModule, RouterOutlet, RouterLink, RouterLinkActive, DatePipe], + imports: [CommonModule, RouterOutlet, RouterLink, RouterLinkActive, DatePipe, RequestComponent], templateUrl: './app.component.html', styleUrl: './app.component.scss' }) export class AppComponent { - title = 'NIR'; dateNow?: Date; navShow = false; diff --git a/src/app/app.routes.ts b/src/app/app.routes.ts index b51f89c..840c35a 100644 --- a/src/app/app.routes.ts +++ b/src/app/app.routes.ts @@ -1,30 +1,30 @@ import { Routes } from '@angular/router'; import { HomeComponent } from './home/home.component'; import { AboutComponent } from './about/about.component'; -// import { AutomatizationComponent } from './automatization/automatization.component'; -// import { DevelopmentComponent } from './development/development.component'; -// import { SitesComponent } from './sites/sites.component'; -// import { ProjectsComponent } from './projects/projects.component'; -// import { ContactsComponent } from './contacts/contacts.component'; -// import { VniigazComponent } from './projects/vniigaz/vniigaz.component'; -// import { FaufcsComponent } from './projects/faufcs/faufcs.component'; -// import { Tk023Component } from './projects/tk023/tk023.component'; -// import { Tk465Component } from './projects/tk465/tk465.component'; -// import { ScvgComponent } from './projects/scvg/scvg.component'; -// import { IntergazComponent } from './projects/intergaz/intergaz.app.routescomponent'; +import { AutomatizationComponent } from './automatization/automatization.component'; +import { DevelopmentComponent } from './development/development.component'; +import { SitesComponent } from './sites/sites.component'; +import { ContactsComponent } from './contacts/contacts.component'; +import { ProjectsComponent } from './projects/projects.component'; +import { VniigazComponent } from './projects/vniigaz/vniigaz.component'; +import { FaufcsComponent } from './projects/faufcs/faufcs.component'; +import { Tk023Component } from './projects/tk023/tk023.component'; +import { Tk465Component } from './projects/tk465/tk465.component'; +import { ScvgComponent } from './projects/scvg/scvg.component'; +import { IntergazComponent } from './projects/intergaz/intergaz.component'; export const routes: Routes = [ {path: "", component: HomeComponent}, {path: "about", component: AboutComponent}, - // {path: "automatization", component: AutomatizationComponent}, - // {path: "development", component: DevelopmentComponent}, - // {path: "contacts", component: ContactsComponent}, - // {path: "sites", component: SitesComponent}, - // {path: "projects", component: ProjectsComponent}, - // {path:'projects/vniigaz', component: VniigazComponent}, - // {path:'projects/faufcs', component: FaufcsComponent}, - // {path:'projects/tk023', component: Tk023Component}, - // {path:'projects/tk465', component: Tk465Component}, - // {path:'projects/scvg', component: ScvgComponent}, - // {path:'projects/intergaz', component: IntergazComponent} + {path: "automatization", component: AutomatizationComponent}, + {path: "development", component: DevelopmentComponent}, + {path: "contacts", component: ContactsComponent}, + {path: "sites", component: SitesComponent}, + {path: "projects", component: ProjectsComponent}, + {path:'projects/vniigaz', component: VniigazComponent}, + {path:'projects/faufcs', component: FaufcsComponent}, + {path:'projects/tk023', component: Tk023Component}, + {path:'projects/tk465', component: Tk465Component}, + {path:'projects/scvg', component: ScvgComponent}, + {path:'projects/intergaz', component: IntergazComponent} ]; diff --git a/src/app/automatization/automatization.component.html b/src/app/automatization/automatization.component.html new file mode 100644 index 0000000..198a6b9 --- /dev/null +++ b/src/app/automatization/automatization.component.html @@ -0,0 +1,101 @@ +
+
+

Автоматизация процессов

+
+ Забирает рутину, возвращает результат +
+ + + +
+
+ +
+
+ +
+ О продукте + Преимущества + Решения + Обратная связь +
+ + + + + +
+
+

О продукте

+
Мы можем автоматизировать для вас бизнес-процессы любой сложности, от простой автогенерации документов до комплексных решений по управлению производством, АИС или ФГИС.

+ Больше не нужно заполнять отчеты, собирать рабочие группы, напоминать им о задачах и проверять комплектность документов. Мы создадим для Вас электронного секретаря, выполняющего всю скучную работу за Вас. А его обязанности зависят от Ваших пожеланий.
+
+
+

Для кого

+
    +
  • Органы государственной власти федерального, регионального и муниципального уровней
  • +
  • Межведомственные организации
  • +
  • Коммерческие компании с большим оборотом документов
  • +
+
+ +
+ + + +
+ +
+ + + + +
+
+
+
+
+
+
+
+

Функциональные преимущества

+
    +
  • Все рутинные задачи собираются в одной программе и выполняются автоматически
  • +
  • Снижается трудоемкость процессов, повышается их прозрачность и скорость
  • +
  • Мгновенный срез всех событий по проектам, документам, пользователям, их статистика и история
  • +
  • Гибкие процессы, позволяющие решать задачи с поправкой на жизненные обстоятельства
  • +
+
+ +
+ +
+
+

Решения по автоматизации

+
    +
  • Работа по процессам доступна с любого устройства и не требует дополнительных приложений
  • +
  • Мгновенный доступ к нормативно-правовым документам и справочным материалам
  • +
  • Ограничение доступа к информации по ролям участников
  • +
  • Автозаполнение полей, отчетов и документов необходимой информацией
  • +
  • Простой интерфейс, защищающий от ошибок пользователя
  • +
  • Собственная система автоматического развертывания АИС на вашем сервере
  • +
+
+
+
+
+
+
+
+ +
+ +
+ +
+ + + + + + diff --git a/src/app/automatization/automatization.component.scss b/src/app/automatization/automatization.component.scss new file mode 100644 index 0000000..5707f75 --- /dev/null +++ b/src/app/automatization/automatization.component.scss @@ -0,0 +1,98 @@ + + +.advantage-left{ + border-radius: 16px; + background-size: cover; + background-position: center; + background-image: url("/assets/img/automatization-advantage.jpg"); + aspect-ratio: 582 / 336; + align-self: flex-start; + display: flex; + flex-direction: column; + flex-wrap: wrap; + gap: 30px; + >div{ + width: calc(50% - 15px); + box-shadow: 0 0 0 30px var(--clr-gr-lt); + border-radius: 16px; + aspect-ratio: 1; + &:first-child, &:last-child{ + width: auto; + margin-bottom: auto; + background-color: var(--clr-gr-lt); + aspect-ratio: none; + flex-grow: 1; + flex-shrink: 1; + border-radius: 0; + } + } +} + +.solution-right{ + border-radius: 16px; + background-size: cover; + background-position: center; + background-image: url("/assets/img/automatization-solution.png"); + aspect-ratio: 582 / 582; + + display: flex; + flex-direction: row-reverse; + flex-wrap: wrap; + gap: 30px; + >div{ + width: 480px; + box-shadow: 0 0 0 30px #FFF; + border-radius: 16px; + aspect-ratio: 480 / 276; + &:first-child, &:last-child{ + width: auto; + margin-left: auto; + background-color: #FFF; + aspect-ratio: none; + flex-grow: 1; + flex-shrink: 1; + border-radius: 0; + } + } +} + +[id]{ + position: static; + margin-block: -80px 80px; +} + + +@media screen and (max-width: 1240px){ + .advantage-left{ + height: 70%; + } + .solution-right{ + height: 70%; + div{width: 80%}; + } +} + + +@media screen and (max-width: 1024px){ + .solution{ + flex-direction: column-reverse; + } + .solution-right{ + width: 100%; + >div{ + width: 85%; + box-shadow: 0 0 0 30px #FFF; + border-radius: 16px; + aspect-ratio: 480 / 276; + &:first-child, &:last-child{ + width: auto; + margin-left: auto; + background-color: #FFF; + aspect-ratio: none; + flex-grow: 1; + flex-shrink: 1; + border-radius: 0; + } + } + } +} \ No newline at end of file diff --git a/src/app/automatization/automatization.component.spec.ts b/src/app/automatization/automatization.component.spec.ts new file mode 100644 index 0000000..3658bb3 --- /dev/null +++ b/src/app/automatization/automatization.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AutomatizationComponent } from './automatization.component'; + +describe('AutomatizationComponent', () => { + let component: AutomatizationComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [AutomatizationComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(AutomatizationComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/automatization/automatization.component.ts b/src/app/automatization/automatization.component.ts new file mode 100644 index 0000000..e901e19 --- /dev/null +++ b/src/app/automatization/automatization.component.ts @@ -0,0 +1,41 @@ +import { Component } from '@angular/core'; +import { Router } from '@angular/router'; +import { SEOService } from '../_services/seo.service'; +import { ReviewsComponent } from '../reviews/reviews.component'; +import { RequestComponent } from '../request/request.component'; +import { ImgCaruselComponent } from '../img-carusel/img-carusel.component'; + + +@Component({ + selector: 'app-automatization', + standalone: true, + imports: [ReviewsComponent, RequestComponent, ImgCaruselComponent], + templateUrl: './automatization.component.html', + styleUrl: './automatization.component.scss' +}) +export class AutomatizationComponent { + constructor( + private router:Router, private seo:SEOService + ){} + + anchor?:string; + + anchorRouting(anchor:string){ + if(anchor==this.anchor){ + this.router.navigate([`/automatization`]).then( + ()=>this.router.navigate([`/automatization`], { fragment: anchor }) + ) + }else{ + this.anchor = anchor; + console.log(anchor) + this.router.navigateByUrl(`/automatization#${anchor}`) + } + } + + images = [ + 'assets/img/carusel/carusel-01.jpg', + 'assets/img/carusel/carusel-02.jpg', + 'assets/img/carusel/carusel-03.jpg', + 'assets/img/carusel/carusel-04.jpg', + ] +} diff --git a/src/app/contacts/contacts.component.html b/src/app/contacts/contacts.component.html new file mode 100644 index 0000000..53df47d --- /dev/null +++ b/src/app/contacts/contacts.component.html @@ -0,0 +1,58 @@ +
+
+

Контакты

+
+ ​ +
+ + + +
+
+ +
+
+ +
+ +
+

Реквизиты

+
+ Юр. адрес: 121170, г. Москва, Вн. Тер. Г. Муниципальный Округ Дорогомилово, пр-кт Кутузовский, д. 36, стр. 3, офис 222

+ ИНН: 9721017423

+ ОГРН: 5167746179090

+ Лицензия в Минцифры: №12571 +
+
+ +
+
+
+ +
+ +
diff --git a/src/app/contacts/contacts.component.scss b/src/app/contacts/contacts.component.scss new file mode 100644 index 0000000..125f6ac --- /dev/null +++ b/src/app/contacts/contacts.component.scss @@ -0,0 +1,49 @@ +.contacts{ + display: flex; + flex-direction: column; + gap: 20px; + line-height: 24px; + a{ + color: var(--clr-black); + text-decoration: none; + display: flex; + gap: 16px; + svg{ + flex-shrink: 0; + color: var(--clr-black-lt); + } + } + >div{ + flex: 1 1 0; + display: flex; + flex-direction: column; + gap: 16px; + } + .logo img{ + width: 152px; + height: 152px; + } +} +.map{ + border-radius: 16px; + overflow: hidden; +} +iframe{ + max-height: calc(50vw - 30px); +} + +@media screen and (max-width: 1240px){ + iframe{ + max-height: calc(50vw - 30px); + } +} + + +@media screen and (max-width: 1024px){ + .jumb-slogan{ + margin-block: 0; + } + iframe{ + max-height: calc(100vw - 30px); + } +} \ No newline at end of file diff --git a/src/app/contacts/contacts.component.ts b/src/app/contacts/contacts.component.ts new file mode 100644 index 0000000..24be197 --- /dev/null +++ b/src/app/contacts/contacts.component.ts @@ -0,0 +1,23 @@ +import { Component } from '@angular/core'; +import { SEOService } from '../_services/seo.service'; +import { ReviewsComponent } from '../reviews/reviews.component'; +import { RequestComponent } from '../request/request.component'; +import { ImgCaruselComponent } from '../img-carusel/img-carusel.component'; + +@Component({ + selector: 'contacts', + standalone: true, + imports: [ReviewsComponent, RequestComponent, ImgCaruselComponent], + templateUrl: './contacts.component.html', + styleUrls: ['./contacts.component.scss'] +}) +export class ContactsComponent { + + constructor(private seo:SEOService){} + + ngOnInit(){ + this.seo.updateTitle('Контакты | НИР Груп'); + this.seo.updateDescription('Тел: +7 (499) 490-04-65; E-mail: info@nirgroup.ru; Адрес: 121170, г. Москва, Кутузовский проспект, д. 36, стр. 3, офис 222'); + this.seo.updateImage('assets/img/contacts.jpg') + } +} diff --git a/src/app/development/development.component.html b/src/app/development/development.component.html new file mode 100644 index 0000000..1861b47 --- /dev/null +++ b/src/app/development/development.component.html @@ -0,0 +1,71 @@ +
+
+

Заказная разработка ПО

+
+ Создадим ПО любой сложности под любые задачи +
+ + + +
+
+ +
+
+ + + + + +
+
+

О продукте

+
Разработка программного обеспечения любой сложности. Помогаем автоматизировать бизнес-процессы, избавляем от рутинных задач, освобождаем ваше время для более важных дел.
+
+
+

Для кого

+
    +
  • Органы государственной власти федерального, регионального и муниципального уровней
  • +
  • Межведомственные организации
  • +
  • Коммерческие компании
  • +
+
+
+ + +
+ +
+ + + +
+
+

Преимущества

+
    +
  • Понимаем Ваши задачи и правильно переводим их в ТЗ
  • +
  • Профессиональная команда разработки полного цикла с опытом работы в масштабных проектах
  • +
  • Большой опыт работы в бюрократически сложных обстоятельствах
  • +
  • Широкие Best Practices в решении нетиповых задач
  • +
  • Глубокий анализ Ваших задач и процессов
  • +
  • Разработка ПО с учетом жизненных особенностей Вашей организации
  • +
  • Тесное сотрудничество на всех этапах взаимодействий
  • +
+
+
+
+
+
+
+
+
+ +
+ +
+ + diff --git a/src/app/development/development.component.scss b/src/app/development/development.component.scss new file mode 100644 index 0000000..282b4fc --- /dev/null +++ b/src/app/development/development.component.scss @@ -0,0 +1,41 @@ + + +.advantage-right{ + border-radius: 16px; + background-size: cover; + background-position: center; + background-image: url("/assets/img/development-advantage.jpg"); + aspect-ratio: 582 / 336; + + display: flex; + flex-direction: column; + align-self: flex-start; + flex-wrap: wrap; + gap: 30px; + >div{ + width: calc(50% - 15px); + box-shadow: 0 0 0 30px var(--clr-gr-lt); + border-radius: 16px; + aspect-ratio: 1; + &:first-child, &:last-child{ + width: auto; + margin-bottom: auto; + background-color: var(--clr-gr-lt); + aspect-ratio: none; + flex-grow: 1; + flex-shrink: 1; + border-radius: 0; + } + } +} + +[id]{ + position: static; + margin-block: -80px 80px; +} + +@media screen and (max-width: 1024px){ + .advantage-right{ + order: -1; + } +} \ No newline at end of file diff --git a/src/app/development/development.component.ts b/src/app/development/development.component.ts new file mode 100644 index 0000000..9abed42 --- /dev/null +++ b/src/app/development/development.component.ts @@ -0,0 +1,46 @@ +import { Component } from '@angular/core'; +import { Router } from '@angular/router'; +import { SEOService } from '../_services/seo.service'; +import { ReviewsComponent } from '../reviews/reviews.component'; +import { RequestComponent } from '../request/request.component'; +import { ImgCaruselComponent } from '../img-carusel/img-carusel.component'; + +@Component({ + selector: 'development', + standalone: true, + imports: [ReviewsComponent, RequestComponent, ImgCaruselComponent], + templateUrl: './development.component.html', + styleUrls: ['./development.component.scss'] +}) +export class DevelopmentComponent { + + constructor( + private router:Router, private seo:SEOService + ){} + + ngOnInit(){ + this.seo.updateTitle('Разработка программного обеспечения (ПО) на заказ'); + this.seo.updateDescription('Разработка ПО любой сложности под любые задачи. Помогаем автоматизировать бизнес-процессы, избавляем от рутинных задач, находим новые решения.'); + this.seo.updateImage('assets/img/development.jpg') + } + + anchor?:string; + + anchorRouting(anchor:string){ + if(anchor==this.anchor){ + this.router.navigate([`/development`]).then( + ()=>this.router.navigate([`/development`], { fragment: anchor }) + ) + }else{ + this.anchor = anchor; + this.router.navigate([`/development`], { fragment: anchor }) + } + } + + images = [ + 'assets/img/carusel/carusel-10.jpg', + 'assets/img/carusel/carusel-11.jpg', + 'assets/img/carusel/carusel-12.jpg', + 'assets/img/carusel/carusel-13.jpg', + ] +} diff --git a/src/app/img-carusel/img-carusel.component.html b/src/app/img-carusel/img-carusel.component.html new file mode 100644 index 0000000..c01420a --- /dev/null +++ b/src/app/img-carusel/img-carusel.component.html @@ -0,0 +1,38 @@ + +
+ + + + + + + + + + + + +
+ + + +
+ +
+ +
+ +
+ +
+ + + diff --git a/src/app/img-carusel/img-carusel.component.scss b/src/app/img-carusel/img-carusel.component.scss new file mode 100644 index 0000000..0ae3630 --- /dev/null +++ b/src/app/img-carusel/img-carusel.component.scss @@ -0,0 +1,138 @@ +:host{ + width: 100%; + position: relative; + display: flex; + flex-direction: column; + align-items: center; + gap: 60px +} + + + .carusel-slides{ + width: 100%; + position: relative; + mask-image: linear-gradient(to right, transparent 0%, #FFF 10%, #FFF 90%, transparent 100%);; + swiper-container{ + margin-inline: -220px; + .carusel-item{ + display: block; + width: 582px; + height: 360px; + object-fit: cover; + border-radius: 16px; + cursor: pointer; + }; + } + } + + + .carusel-mask{ + position: absolute; + left: -220px; + top: 0; + width: calc(100% + 440px); + height: 100%; + background-color: rgba(255, 255, 255, 0.63); + z-index: 1; + pointer-events: none; + // background: linear-gradient(to right, var(--clr-gr-lt) 8%, transparent 15%, transparent 85%, var(--clr-gr-lt) 92%); + } + + .carusel-navigation{ + display: flex; + justify-content: center; + gap: 20px; + .carusel-navigation-counter{ + width: auto; + top: auto; + } + button{ + position: relative; + border: none !important; + background-color: transparent !important; + left: auto; + right: auto; + padding: 0; + &::after{ + content: none !important; + } + } + } + + + .selected{ + width: 100vw; + height: 100vh; + position:fixed; + top: 0; + left: 0; + background-color: var(--clr-black-lt); + display: flex; + justify-content: center; + align-items: center; + z-index: 20; + cursor: pointer; + img{ + max-width: calc(100% - 30px); + max-height: calc(100% - 30px); + } + } + + .swiperMobile{ + display: none; + } + + @media screen and (max-width: 1240px) { + + .carusel-slides{ + + swiper-container{ + + .carusel-item{ + + width: 95%; + height: 85%; + + }; + } + } + + } + + @media screen and (max-width: 1024px) { + :host{ + gap:20px; + } + + .carusel-slides{ + mask-image:none; + height: 75vw; + swiper.swiperMobile{ + display: block; + margin-inline: 0; + height: auto; + .carusel-item{ + display: block; + width: 100%; + object-fit: cover; + border-radius: 16px; + height: auto; + border-radius: 12px; + cursor: pointer; + }; + + + } + .swiperDesktop{ + display: none; + } + } + + .selected{ + img{ + max-width: 100%; + max-height: 100%; + } + } + + } diff --git a/src/app/img-carusel/img-carusel.component.spec.ts b/src/app/img-carusel/img-carusel.component.spec.ts new file mode 100644 index 0000000..c5aec91 --- /dev/null +++ b/src/app/img-carusel/img-carusel.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ImgCaruselComponent } from './img-carusel.component'; + +describe('ImgCaruselComponent', () => { + let component: ImgCaruselComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [ImgCaruselComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(ImgCaruselComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/img-carusel/img-carusel.component.ts b/src/app/img-carusel/img-carusel.component.ts new file mode 100644 index 0000000..ea008ab --- /dev/null +++ b/src/app/img-carusel/img-carusel.component.ts @@ -0,0 +1,58 @@ +import { NgFor, NgIf } from '@angular/common'; +import { Component, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core'; + + +@Component({ + selector: 'img-carusel', + standalone: true, + imports: [NgFor, NgIf], + templateUrl: './img-carusel.component.html', + styleUrl: './img-carusel.component.scss', + schemas: [CUSTOM_ELEMENTS_SCHEMA] +}) +export class ImgCaruselComponent { + @Input() images!:string[]; + selected?: string | null; + + public config = { + slidesPerView: 3, + initialSlide: 0, + spaceBetween: 10, + centeredSlides: true, + loop: true, + pagination:{ + enabled: true, + type: 'fraction', + el:'.carusel-navigation-counter' + }, + navigation: { + nextEl: '.swiper-button-next', + prevEl: '.swiper-button-prev', + }, + keyboard: true, + mousewheel: true + }; + + public configMobile = { + slidesPerView: 1, + initialSlide: 0, + spaceBetween: 10, + centeredSlides: true, + loop: true, + pagination:{ + enabled: true, + type: 'fraction', + el:'.carusel-navigation-counter' + }, + navigation: { + nextEl: '.swiper-button-next', + prevEl: '.swiper-button-prev', + }, + keyboard: true, + mousewheel: true + }; + + select(img:string){ + this.selected = img + } +} diff --git a/src/app/projects/faufcs/faufcs.component.html b/src/app/projects/faufcs/faufcs.component.html new file mode 100644 index 0000000..59e5973 --- /dev/null +++ b/src/app/projects/faufcs/faufcs.component.html @@ -0,0 +1,57 @@ +
+
+ + + + + Все проекты + +

ФАУ «ФЦС»

+
+ Создание корпоративного сайта +
+
+
+ +
+
+ +
+
+

Описание

+
У учреждения уже имелся корпоративный сайт, выполнявший все задачи. Но функционал был настолько сложно реализован, что для выполнения простых операций с контентом требовалась помощь компании разработчика. Часть задач по процессу решалось в ручном режиме, а весь огромный массив данных был неструктурирован и хаотичен.
+
+
+

Бизнес-задача

+
Требовался корпоративный сайт, с простым и удобным конструктором контента.
+
+
+ +
+
+

ИТ-задача

+
Создание собственной платформы для сайта, на которой был реализован специфический функционал по работе с данными, а также упрощенная версия электронного документооборота с привязкой к бизнес-процессам.
+
+
+

Результат

+
Разработали конструктор сайта, сделали закрытый контур для входа в личные кабинеты сотрудников Заказчика. Создали функционал подачи заявок из внешнего контура в конкретное структурное подразделение Заказчика. Перенесли всю информацию со старого сайта на новый. Развернули и запустили новый сайт на сервере Заказчика. Создали обучающий курс по эксплуатации из 8 видеоуроков.
+
+
+ +
+ +
+ + \ No newline at end of file diff --git a/src/app/projects/faufcs/faufcs.component.scss b/src/app/projects/faufcs/faufcs.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/projects/faufcs/faufcs.component.ts b/src/app/projects/faufcs/faufcs.component.ts new file mode 100644 index 0000000..abfa102 --- /dev/null +++ b/src/app/projects/faufcs/faufcs.component.ts @@ -0,0 +1,26 @@ +import { Component } from '@angular/core'; +import { SEOService } from '../../_services/seo.service'; +import { RequestComponent } from '../../request/request.component'; +import { ImgCaruselComponent } from '../../img-carusel/img-carusel.component'; +import { RouterLink } from '@angular/router'; + +@Component({ + selector: 'faufcs', + standalone: true, + imports: [RequestComponent, ImgCaruselComponent, RouterLink], + templateUrl: './faufcs.component.html', + styleUrls: ['./faufcs.component.scss'] +}) +export class FaufcsComponent { + + constructor(private seo:SEOService){} + + images = [ + 'assets/img/faufcs/faufcs01.png', + 'assets/img/faufcs/faufcs02.png', + 'assets/img/faufcs/faufcs03.png', + 'assets/img/faufcs/faufcs04.png', + 'assets/img/faufcs/faufcs05.png', + ] +} + diff --git a/src/app/projects/intergaz/intergaz.component.html b/src/app/projects/intergaz/intergaz.component.html new file mode 100644 index 0000000..5b73925 --- /dev/null +++ b/src/app/projects/intergaz/intergaz.component.html @@ -0,0 +1,57 @@ +
+
+ + + + + Все проекты + +

ИНТЕРГАЗСЕРТ

+
+ Создание автоматизированной платрформы допуска продукции +
+
+
+ +
+
+ +
+
+

Описание

+
Рабочая информация хранилась частично в бумажном, частично в электронном виде, в нескольких местах. Их поиск и обработка замедляли все процессы и увеличивали нагрузку на сотрудников. Руководство хотело получать информацию об эффективности сотрудников и иметь на руках зафиксированные доказательства проведенных работ на случай возникновения претензий у других организаций.
+
+
+

Бизнес-задача

+
Создание единой стандартизированной базы данных по процессам оценки соответствия в системе добровольной сертификации ИНТЕРГАЗСЕРТ
+
+
+ +
+
+

ИТ-задача

+
Разработать информационную систему для сбора, регистрации и учета информации
+
+
+

Результат

+
Разработали и внедрили систему, превосходящую по своим возможностям запланированный функционал. Оказали поддержку по аккредитации данной системы в реестре отечественного ПО Минцифры.
+
+
+ +
+ +
+ + \ No newline at end of file diff --git a/src/app/projects/intergaz/intergaz.component.scss b/src/app/projects/intergaz/intergaz.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/projects/intergaz/intergaz.component.ts b/src/app/projects/intergaz/intergaz.component.ts new file mode 100644 index 0000000..4ee4ecd --- /dev/null +++ b/src/app/projects/intergaz/intergaz.component.ts @@ -0,0 +1,24 @@ +import { Component } from '@angular/core'; +import { SEOService } from '../../_services/seo.service'; +import { RequestComponent } from '../../request/request.component'; +import { ImgCaruselComponent } from '../../img-carusel/img-carusel.component'; +import { RouterLink } from '@angular/router'; + +@Component({ + selector: 'intergaz', + standalone: true, + imports: [RequestComponent, ImgCaruselComponent, RouterLink], + templateUrl: './intergaz.component.html', + styleUrls: ['./intergaz.component.scss'] +}) +export class IntergazComponent { + + constructor(private seo:SEOService){} + + images = [ + 'assets/img/intergaz/intergaz01.png', + 'assets/img/intergaz/intergaz02.png', + 'assets/img/intergaz/intergaz03.png', + 'assets/img/intergaz/intergaz04.png', + ] +} diff --git a/src/app/projects/projects.component.html b/src/app/projects/projects.component.html new file mode 100644 index 0000000..9c83d3f --- /dev/null +++ b/src/app/projects/projects.component.html @@ -0,0 +1,108 @@ +
+
+

Ключевые проекты

+
+ ​ +
+ + + +
+
+ +
+
+ + +
+
+

Уважение ко всем

+
+
+ Мы с уважением относимся к каждому клиенту и к себе. Поэтому мы работаем абсолютно прозрачно, четко укладываемся в оговоренные сроки и внимательно подходим к изучению стоящих перед Вами задач. Наша безупречная репутация сформирована восторженными отзывами клиентов. +
+
+
+
+

Наши проекты

+
+
+
+ +
+ Интернет-портал +
+

+ ТК 023 +

+ +
+
+ +
+ Корпоративный портал +
+

+ «ВНИИГАЗ-Сертификат» +

+ +
+
+ +
+ Автоматизированная платформа допуска продукции +
+

+ ЧУ СЦ «ВНИИГАЗ-Сертификат» +

+ +
+
+ +
+ Автоматизированная информационная система +
+

+ ТК 465 +

+ +
+
+ +
+ Корпоративный сайт +
+

+ ФАУ «ФЦС» +

+ +
+
+ +
+ Корпоративная система +
+

+ ИНТЕРГАЗСЕРТ +

+ +
+
+ +
+ +
+ +
\ No newline at end of file diff --git a/src/app/projects/projects.component.scss b/src/app/projects/projects.component.scss new file mode 100644 index 0000000..3ae24d7 --- /dev/null +++ b/src/app/projects/projects.component.scss @@ -0,0 +1,45 @@ +.project{ + display: flex; + flex-direction: column; + align-items: center; + height: 416px; + padding: 30px; + flex: 1 1 0; + background-color: #FFF; + flex-basis: 35%; + .project-logo{ + width: 238px; + height: 136px; + object-fit: contain; + margin-bottom: 30px; + } + + .project-type{ + margin-bottom: 10px; + text-align: center; + } + .project-name{ + text-align: center; + } + button{ + margin-top: auto; + } +} + +.projects{ + display: flex; + flex-direction: row; + flex-wrap: wrap; + background-color: var(--clr-gr); + gap: 1px; +} + +@media screen and (max-width: 1024px){ + .project{ + height: auto; + padding: 30px 0 60px 0; + button{ + margin-top: 30px; + } + } +} \ No newline at end of file diff --git a/src/app/projects/projects.component.ts b/src/app/projects/projects.component.ts new file mode 100644 index 0000000..1771d5a --- /dev/null +++ b/src/app/projects/projects.component.ts @@ -0,0 +1,21 @@ +import { Component } from '@angular/core'; +import { SEOService } from '../_services/seo.service'; +import { ReviewsComponent } from '../reviews/reviews.component'; +import { RequestComponent } from '../request/request.component'; +import { ImgCaruselComponent } from '../img-carusel/img-carusel.component'; +import { RouterLink } from '@angular/router'; + + +@Component({ + selector: 'projects', + standalone: true, + imports: [ReviewsComponent, RequestComponent, ImgCaruselComponent, RouterLink], + templateUrl: './projects.component.html', + styleUrls: ['./projects.component.scss'] +}) + +export class ProjectsComponent { + + constructor(private seo:SEOService){} + +} diff --git a/src/app/projects/scvg/scvg.component.html b/src/app/projects/scvg/scvg.component.html new file mode 100644 index 0000000..0a13771 --- /dev/null +++ b/src/app/projects/scvg/scvg.component.html @@ -0,0 +1,57 @@ +
+
+ + + + + Все проекты + +

ЧУ СЦ «ВНИИГАЗ-Сертификат»

+
+ Создание автоматизированной платформы допуска продукции +
+
+
+ +
+
+ +
+
+

Описание

+
Процесс допуска труб к эксплуатации в ПАО «Газпром» сопряжен с большим количеством обязательных тестов и процедур. У каждого этапа есть ряд требований и нормативов. Из-за непрозрачности этого процесс затягивался на продолжительные сроки. Появилось понимание, что его можно ускорить и снизить риски, связанные с человеческим фактором с помощью автоматизации.
+
+
+

Бизнес-задача

+
Оцифровать процесс оценки продукции поставщиков и создать удобную рабочую среду, единую для всех участников.
+
+
+ +
+
+

ИТ-задача

+
Разработать автоматизированную цифровую платформу для удаленного взаимодействия участников работ, рассмотрения проектов правил и тех.стандартов.
+
+
+

Результат

+
Система была разработана в срок, в последствии было проведено 4 волны модернизации. На данный момент она является основным ПО для решения вопросов допуска трубной продукции к применению на объектах ПАО «Газпром»
+
+
+ +
+ +
+ + \ No newline at end of file diff --git a/src/app/projects/scvg/scvg.component.scss b/src/app/projects/scvg/scvg.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/projects/scvg/scvg.component.ts b/src/app/projects/scvg/scvg.component.ts new file mode 100644 index 0000000..e8b64b6 --- /dev/null +++ b/src/app/projects/scvg/scvg.component.ts @@ -0,0 +1,26 @@ +import { Component } from '@angular/core'; +import { SEOService } from '../../_services/seo.service'; +import { RequestComponent } from '../../request/request.component'; +import { ImgCaruselComponent } from '../../img-carusel/img-carusel.component'; +import { RouterLink } from '@angular/router'; + + +@Component({ + selector: 'app-scvg', + standalone: true, + imports: [RequestComponent, ImgCaruselComponent, RouterLink], + templateUrl: './scvg.component.html', + styleUrls: ['./scvg.component.scss'] +}) +export class ScvgComponent { + + constructor(private seo:SEOService){} + + images = [ + 'assets/img/scvg/scvg01.png', + 'assets/img/scvg/scvg02.png', + 'assets/img/scvg/scvg03.png', + 'assets/img/scvg/scvg04.png', + 'assets/img/scvg/scvg05.png', + ] +} diff --git a/src/app/projects/tk023/tk023.component.html b/src/app/projects/tk023/tk023.component.html new file mode 100644 index 0000000..06d79c8 --- /dev/null +++ b/src/app/projects/tk023/tk023.component.html @@ -0,0 +1,57 @@ +
+
+ + + + + Все проекты + +

ТК-023

+
+ Создание интернет-портала с АИС +
+
+
+ +
+
+ +
+
+

Описание

+
Заказчику необходимо было освободить секретариат от трудозатратной рутинной деятельности. В ходе разработки регулярно добавлялись новые пожелания к логике процессов. На финальном этапе вскрылись критичные изъяны в описанных в ТЗ процессах. Что повлекло глубокую модернизацию уже готового продукта.
+
+
+

Бизнес-задача

+
Оцифровка рутинных процессов с возможностью контроля их исполнения и сбора аналитических данных.
+
+
+ +
+
+

ИТ-задача

+
Создание удобного облачного решения по автоматизации процессов с разветвленной ролевой моделью, автогенерацией требуемых документов и сбором моментальной статистики
+
+
+

Результат

+
Все оговоренные работы были выполнены к указанному сроку. Дальнейшая модернизация была проведена всего за несколько месяцев. Портал стал более функциональным за счет дополнительных возможностей. В настоящее время осуществляется техническая поддержка.
+
+
+ +
+ +
+ + \ No newline at end of file diff --git a/src/app/projects/tk023/tk023.component.scss b/src/app/projects/tk023/tk023.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/projects/tk023/tk023.component.ts b/src/app/projects/tk023/tk023.component.ts new file mode 100644 index 0000000..b0030c4 --- /dev/null +++ b/src/app/projects/tk023/tk023.component.ts @@ -0,0 +1,25 @@ +import { Component } from '@angular/core'; +import { SEOService } from '../../_services/seo.service'; +import { RequestComponent } from '../../request/request.component'; +import { ImgCaruselComponent } from '../../img-carusel/img-carusel.component'; +import { RouterLink } from '@angular/router'; + +@Component({ + selector: 'tk023', + standalone: true, + imports: [RequestComponent, ImgCaruselComponent, RouterLink], + templateUrl: './tk023.component.html', + styleUrls: ['./tk023.component.scss'] +}) +export class Tk023Component { + + constructor(private seo:SEOService){} + + images = [ + 'assets/img/tk023/tk02301.png', + 'assets/img/tk023/tk02302.png', + 'assets/img/tk023/tk02303.png', + 'assets/img/tk023/tk02304.png', + 'assets/img/tk023/tk02305.png', + ] +} diff --git a/src/app/projects/tk465/tk465.component.html b/src/app/projects/tk465/tk465.component.html new file mode 100644 index 0000000..15c6d79 --- /dev/null +++ b/src/app/projects/tk465/tk465.component.html @@ -0,0 +1,57 @@ +
+
+ + + + + Все проекты + +

ТК-465

+
+ Создание Автоматизированной Информационной Системы +
+
+
+ +
+
+ +
+
+

Описание

+
Деятельность ТК осуществлялась через стандартный офисный набор ПО и почту. С ростом рабочей нагрузки эффективность сотрудников начала стремительно снижаться, появились ошибки и запутанность процессов. Отсутствовала системность и контроль, что сказывалось на результатах.
+
+
+

Бизнес-задача

+
Автоматизация процессов деятельности ТК-465 с повышением доступности актуальной нормативно-правовой базы для участников. Упрощение работы с ТК-465 для всех заинтересованных компаний, в том числе не являющихся членами ТК
+
+
+ +
+
+

ИТ-задача

+
Создание облачной системы с гибкими процессами и сложной ролевой системой
+
+
+

Результат

+
Изначально описанные процессы не отражали реального состояния дел. В ходе разработки, совместно с Заказчиком, удалось в точности воспроизвести процессуальный ход внутри системы, уложившись в оговоренный срок.
+
+
+ +
+ +
+ + \ No newline at end of file diff --git a/src/app/projects/tk465/tk465.component.scss b/src/app/projects/tk465/tk465.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/projects/tk465/tk465.component.ts b/src/app/projects/tk465/tk465.component.ts new file mode 100644 index 0000000..d90853f --- /dev/null +++ b/src/app/projects/tk465/tk465.component.ts @@ -0,0 +1,26 @@ +import { Component } from '@angular/core'; +import { SEOService } from '../../_services/seo.service'; +import { RequestComponent } from '../../request/request.component'; +import { ImgCaruselComponent } from '../../img-carusel/img-carusel.component'; +import { RouterLink } from '@angular/router'; + +@Component({ + selector: 'app-tk465', + standalone: true, + imports: [RequestComponent, ImgCaruselComponent, RouterLink], + templateUrl: './tk465.component.html', + styleUrls: ['./tk465.component.scss'] +}) +export class Tk465Component { + + constructor(private seo:SEOService){} + + images = [ + 'assets/img/tk465/tk46501.png', + 'assets/img/tk465/tk46502.png', + 'assets/img/tk465/tk46503.png', + 'assets/img/tk465/tk46504.png', + 'assets/img/tk465/tk46505.png', + ] + +} diff --git a/src/app/projects/vniigaz/vniigaz.component.html b/src/app/projects/vniigaz/vniigaz.component.html new file mode 100644 index 0000000..6c1705c --- /dev/null +++ b/src/app/projects/vniigaz/vniigaz.component.html @@ -0,0 +1,57 @@ +
+
+ + + + + Все проекты + +

ВНИИГАЗ-Сертификат

+
+ Создание корпоративного портала +
+
+
+ +
+
+ +
+
+

Описание

+
Из-за колоссальных объемов документооборота весь процесс терял прозрачность и регулярно допускались человеческие ошибки, способные привести к серьезным последствиям. А отсутствие возможности отследить их даже в ретроспективе мешало исправлению злокачественных элементов процесса.
+
+
+

Бизнес-задача

+
Предоставить удобный доступ к данным из реестров для всех участников процесса, актуализировать имеющиеся данные и отслеживать сроки истечения документов.
+
+
+ +
+
+

ИТ-задача

+
Создание облачного решения для ведения реестров с моментальным сбором статистики и отслеживанием.
+
+
+

Результат

+
Проект был реализован за 4 месяца, с учетом дополнительных пожеланий заказчика. При переходе на систему мы конвертировали более 50 тысяч записей под новую структуру хранилища с более широким функционалом. Появились возможности многоуровневой системы фильтров и сквозной аналитики процессов.
+
+
+ +
+ +
+ \ No newline at end of file diff --git a/src/app/projects/vniigaz/vniigaz.component.scss b/src/app/projects/vniigaz/vniigaz.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/projects/vniigaz/vniigaz.component.ts b/src/app/projects/vniigaz/vniigaz.component.ts new file mode 100644 index 0000000..aaceb9c --- /dev/null +++ b/src/app/projects/vniigaz/vniigaz.component.ts @@ -0,0 +1,25 @@ +import { Component } from '@angular/core'; +import { SEOService } from '../../_services/seo.service'; +import { RequestComponent } from '../../request/request.component'; +import { ImgCaruselComponent } from '../../img-carusel/img-carusel.component'; +import { RouterLink } from '@angular/router'; + +@Component({ + selector: 'vniigaz', + standalone: true, + imports: [RequestComponent, ImgCaruselComponent, RouterLink], + templateUrl: './vniigaz.component.html', + styleUrls: ['./vniigaz.component.scss'] +}) +export class VniigazComponent { + + constructor(private seo:SEOService){} + + images = [ + 'assets/img/vniigaz/vniigaz01.png', + 'assets/img/vniigaz/vniigaz02.png', + 'assets/img/vniigaz/vniigaz03.png', + 'assets/img/vniigaz/vniigaz04.png', + ] + +} diff --git a/src/app/reviews/reviews.component.ts b/src/app/reviews/reviews.component.ts index 1283a5b..d2ce569 100644 --- a/src/app/reviews/reviews.component.ts +++ b/src/app/reviews/reviews.component.ts @@ -1,5 +1,5 @@ import { NgFor, NgIf } from '@angular/common'; -import { Component, CUSTOM_ELEMENTS_SCHEMA, ElementRef, ViewChild } from '@angular/core'; +import { Component, CUSTOM_ELEMENTS_SCHEMA, ViewChild } from '@angular/core'; @Component({ selector: 'reviews', diff --git a/src/app/sites/sites.component.html b/src/app/sites/sites.component.html new file mode 100644 index 0000000..c647dbd --- /dev/null +++ b/src/app/sites/sites.component.html @@ -0,0 +1,99 @@ +
+
+

Разработка информационно нагруженных сайтов

+
+ Удобный и безопасный сайт для работы с массивными данными и документами +
+ + + +
+
+ +
+
+ + + + + +
+
+

О продукте

+
Разрабатываем сайты на собственной платформе, способные успешно работать с большим количеством информации и документов.

+ Все данные хранятся в безопасности на вашем сервере, функционал легко адаптируется под Ваши задачи, а простота работы с контентом позволяет размещать и редактировать его, без привлечения ИТ-специалистов.
+
+
+

Для кого

+
    +
  • Органы государственной власти федерального, регионального и муниципального уровней
  • +
  • Межведомственные организации
  • +
  • Крупные и средние коммерческие компании
  • +
+
+
+ + +
+ +
+ + + + + +
+
+
+
+
+
+
+
+

Особенности платформы

+
    +
  • Возможность добавить любой стандартный и нестандартный функционал напрямую в сайт
  • +
  • Автоматическая стилизация размещаемого контента согласно вашему брендбуку
  • +
  • Простой и понятный интерфейс. Не требуется привлечение ИТ-специалиста для редактирования
  • +
  • Многоуровневая ролевая система с настраиваемыми правилами для каждой роли
  • +
  • Возможность «заморозки» сайта с сохранением всех данных
  • +
  • Локальное хранение всех данных на ваших серверах
  • +
  • Отсутствие готовых решений по взлому сайта злоумышлениками
  • +
+
+ +
+ + + + +
+
+

Функционал

+
    +
  • Встроенная работа с реестрами, документами, массивами данных
  • +
  • Удобное создание локалей многоязычных сайтов
  • +
  • Тонкая настройка учетных записей пользователей
  • +
  • Система обработки входящих заявок
  • +
  • Гибкий функционал с любым дизайном
  • +
+
+
+
+
+
+
+
+
+ +
+ +
+ + + \ No newline at end of file diff --git a/src/app/sites/sites.component.scss b/src/app/sites/sites.component.scss new file mode 100644 index 0000000..fb00666 --- /dev/null +++ b/src/app/sites/sites.component.scss @@ -0,0 +1,63 @@ + + +.advantage-left{ + border-radius: 16px; + background-size: cover; + background-position: center; + background-image: url("/assets/img/sites-features.jpg"); + aspect-ratio: 582 / 336; + align-self: center; + display: flex; + flex-direction: column; + flex-wrap: wrap; + gap: 30px; + >div{ + width: calc(50% - 15px); + box-shadow: 0 0 0 30px var(--clr-gr-lt); + border-radius: 16px; + aspect-ratio: 1; + &:first-child, &:last-child{ + width: auto; + margin-bottom: auto; + background-color: var(--clr-gr-lt); + aspect-ratio: none; + flex-grow: 1; + flex-shrink: 1; + border-radius: 0; + } + } +} + +.solution-right{ + border-radius: 16px; + background-size: cover; + background-position: center; + background-image: url("/assets/img/sites-functions.jpg"); + aspect-ratio: 582 / 336; + align-self: center; + display: flex; + flex-direction: column-reverse; + flex-wrap: wrap; + gap: 30px; + order: -1; + >div{ + width: calc(50% - 15px); + box-shadow: 0 0 0 30px #FFF; + border-radius: 16px; + aspect-ratio: 1; + &:first-child, &:last-child{ + width: auto; + margin-bottom: auto; + background-color: #FFF; + aspect-ratio: none; + flex-grow: 1; + flex-shrink: 1; + border-radius: 0; + } + } +} + +[id]{ + position: static; + margin-block: -80px 80px; +} \ No newline at end of file diff --git a/src/app/sites/sites.component.ts b/src/app/sites/sites.component.ts new file mode 100644 index 0000000..4f84db2 --- /dev/null +++ b/src/app/sites/sites.component.ts @@ -0,0 +1,42 @@ +import { Component } from '@angular/core'; +import { Router } from '@angular/router'; +import { SEOService } from '../_services/seo.service'; +import { ReviewsComponent } from '../reviews/reviews.component'; +import { RequestComponent } from '../request/request.component'; +import { ImgCaruselComponent } from '../img-carusel/img-carusel.component'; + +@Component({ + selector: 'sites', + standalone: true, + imports: [ReviewsComponent, RequestComponent, ImgCaruselComponent], + templateUrl: './sites.component.html', + styleUrls: ['./sites.component.scss'] +}) +export class SitesComponent { + + constructor( + private router:Router, private seo:SEOService + ){}; + + anchor?:string; + + anchorRouting(anchor:string){ + if(anchor==this.anchor){ + this.router.navigate([`/sites`]).then( + ()=>this.router.navigate([`/sites`], { fragment: anchor }) + ) + }else{ + this.anchor = anchor; + this.router.navigate([`/sites`], { fragment: anchor }) + } + } + + images = [ + 'assets/img/carusel/carusel-05.jpg', + 'assets/img/carusel/carusel-06.jpg', + 'assets/img/carusel/carusel-07.jpg', + 'assets/img/carusel/carusel-08.jpg', + 'assets/img/carusel/carusel-09.jpg', + ] + +}