From 3120528bb2f06e91a3b4ec81a1fd0be02124e808 Mon Sep 17 00:00:00 2001 From: gofnnp Date: Tue, 15 Nov 2022 07:38:37 +0400 Subject: [PATCH] =?UTF-8?q?dev=20#13101=201=20=D0=BF=D1=83=D0=BD=D0=BA?= =?UTF-8?q?=D1=82=20=D1=81=D0=B4=D0=B5=D0=BB=D0=B0=D0=BD=202=20=D0=BD?= =?UTF-8?q?=D1=83=D0=B6=D0=BD=D0=BE=20=D0=B4=D0=BE=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=B0=D1=82=D1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- angular/src/app/app.constants.ts | 24 +++--- angular/src/app/app.module.ts | 4 +- .../checkbox-group.component.html | 12 +-- .../product-modal/product-modal.component.ts | 30 +++++--- .../user-data-order.component.html | 55 ++++++++++---- .../user-data-order.component.scss | 56 +++++++++++++- .../user-data-order.component.ts | 37 +++++++--- angular/src/app/interface/data.ts | 4 +- .../app/pages/account/account.component.html | 30 ++++---- .../app/pages/account/account.component.scss | 3 - .../app/pages/account/account.component.ts | 74 ++++++++++--------- .../src/app/pages/cart/cart.component.html | 2 +- angular/src/app/pages/cart/cart.component.ts | 4 +- .../pages/products/products.component.html | 9 ++- .../pages/products/products.component.scss | 15 +--- .../app/pages/products/products.component.ts | 8 +- angular/src/assets/terminal_list1.json | 14 ++++ angular/src/environments/environment.ts | 2 +- angular/src/styles.scss | 30 +++++++- 19 files changed, 283 insertions(+), 130 deletions(-) create mode 100644 angular/src/assets/terminal_list1.json diff --git a/angular/src/app/app.constants.ts b/angular/src/app/app.constants.ts index 5b65726..c1f844b 100644 --- a/angular/src/app/app.constants.ts +++ b/angular/src/app/app.constants.ts @@ -1,12 +1,12 @@ import {MainPageCode, OrderStatus, Page, PageCode, PaymentMethod} from "./interface/data"; export const PageList: Page[] = [ - { - code: PageCode.Auth, - name: 'Вход', - resName: 'auth', - onSideBar: false, - }, + // { + // code: PageCode.Auth, + // name: 'Вход', + // resName: 'auth', + // onSideBar: false, + // }, { code: PageCode.Orders, name: 'Заказы', @@ -16,12 +16,12 @@ export const PageList: Page[] = [ ]; export const PageListWithBonus: Page[] = [ - { - code: PageCode.Auth, - name: 'Вход', - resName: 'auth', - onSideBar: false, - }, + // { + // code: PageCode.Auth, + // name: 'Вход', + // resName: 'auth', + // onSideBar: false, + // }, { code: PageCode.BonusProgram, name: 'Ваша карта лояльности', diff --git a/angular/src/app/app.module.ts b/angular/src/app/app.module.ts index c5f6c43..f930f46 100644 --- a/angular/src/app/app.module.ts +++ b/angular/src/app/app.module.ts @@ -42,6 +42,7 @@ import { TreeSelectModule } from 'primeng/treeselect'; import { UserDataOrderComponent } from './components/user-data-order/user-data-order.component'; import {DropdownModule} from "primeng/dropdown"; import {SelectButtonModule} from 'primeng/selectbutton'; +import { CalendarModule } from 'primeng/calendar'; @NgModule({ declarations: [ @@ -99,7 +100,8 @@ import {SelectButtonModule} from 'primeng/selectbutton'; ListboxModule, TreeSelectModule, DropdownModule, - SelectButtonModule + SelectButtonModule, + CalendarModule ], providers: [DialogService, MessageService, MessagingService ], bootstrap: [AppComponent] diff --git a/angular/src/app/components/checkbox-group/checkbox-group.component.html b/angular/src/app/components/checkbox-group/checkbox-group.component.html index e2f7616..c2f673f 100644 --- a/angular/src/app/components/checkbox-group/checkbox-group.component.html +++ b/angular/src/app/components/checkbox-group/checkbox-group.component.html @@ -1,18 +1,20 @@ -
+
+ [disabled]="!optionIsSelected(option) && selectedOptions.length >= modifier.restrictions.maxQuantity && (modifier.restrictions.maxQuantity > 1 || !modifier.restrictions.minQuantity)" + [checked]="optionIsSelected(option)" + [type]="modifier.restrictions.maxQuantity > 1 || !modifier.restrictions.minQuantity ? 'checkbox' : 'radio'" + style="display: none" name="add_extra_option" value="{{option.id}}" id="{{option.id}}" + (change)="onToggle(option)">
diff --git a/angular/src/app/components/product-modal/product-modal.component.ts b/angular/src/app/components/product-modal/product-modal.component.ts index ac47ba5..b8fe4ba 100644 --- a/angular/src/app/components/product-modal/product-modal.component.ts +++ b/angular/src/app/components/product-modal/product-modal.component.ts @@ -27,7 +27,7 @@ export class ProductModalComponent implements OnInit { ngOnInit(): void { this.product = this.config.data.product this.modifiersGroups = this.config.data.modifiersGroups - this.modifiers = this.config.data.modifiers + this.modifiers = this.config.data.modifiers this.cartProduct = new CartProduct(this.product.id, this.product.name, this.modifiersFilter(), this.modifiers); } @@ -39,20 +39,30 @@ export class ProductModalComponent implements OnInit { return this.modifiers.filter((modifier) => modifier.groupId === modifierGroup.id) } - selectedOptions(modifier: ModifiersGroup): Modifier[]{ - return this.cartProduct.modifiers.find(cartModifier => cartModifier.id === modifier.id)?.options ?? []; + selectedOptions(modifier: ModifiersGroup): Modifier[] { + const cartModifier = this.cartProduct.modifiers.find(cartModifier => cartModifier.id === modifier.id) + if (modifier.restrictions.maxQuantity === 1 && modifier.restrictions.minQuantity === 1) { + cartModifier?.options.push(this.optionsFilter(modifier)[0]) + } + return cartModifier?.options ?? []; } - addOption(modifier: ModifiersGroup, option: Modifier){ + addOption(modifier: ModifiersGroup, option: Modifier) { const modif = this.cartProduct.modifiers.find((modif) => modif.id === modifier.id); - const optionSelectedCartIndex = modif?.options.findIndex((modif) => modif.id === option.id) - if ((optionSelectedCartIndex || optionSelectedCartIndex === 0) && optionSelectedCartIndex !== -1) { - modif?.options.splice(optionSelectedCartIndex, 1) - return + const optionSelectedCartIndex = modif?.options.findIndex((modif) => modif.id === option.id) + if (modifier.restrictions.maxQuantity === 1 && modifier.restrictions.minQuantity === 1) { + if (modif?.options) { + modif.options.length = 0 + } + } else { + if ((optionSelectedCartIndex || optionSelectedCartIndex === 0) && optionSelectedCartIndex !== -1) { + modif?.options.splice(optionSelectedCartIndex, 1) + return + } } modif?.options.push(option) } - + getIsShow(element: HTMLDivElement) { const isShow = Object.values(element.attributes).find((value) => value.name === 'isshow')?.value return isShow === 'true' @@ -67,7 +77,7 @@ export class ProductModalComponent implements OnInit { element.setAttribute('isShow', 'false') return } - element.setAttribute('isShow', 'true') + element.setAttribute('isShow', 'true') } addToCart(event: Event) { diff --git a/angular/src/app/components/user-data-order/user-data-order.component.html b/angular/src/app/components/user-data-order/user-data-order.component.html index a6b0d08..7daa548 100644 --- a/angular/src/app/components/user-data-order/user-data-order.component.html +++ b/angular/src/app/components/user-data-order/user-data-order.component.html @@ -8,28 +8,55 @@

-

- -

-

- -

-

- -

+
+

+ +

+

+ +

+

+ +

+
+ +
+
+ {{terminal.address}} + {{terminal.label}} + {{terminal.address}} +
+

+ optionLabel="title" (onChange)="changeDeliveryType($event)" [disabled]="true">

- - + +

-

+

+ + *Оплата бонусами +

+

diff --git a/angular/src/app/components/user-data-order/user-data-order.component.scss b/angular/src/app/components/user-data-order/user-data-order.component.scss index 5f6e70e..9b6293a 100644 --- a/angular/src/app/components/user-data-order/user-data-order.component.scss +++ b/angular/src/app/components/user-data-order/user-data-order.component.scss @@ -1,6 +1,7 @@ :host { .woocommerce-shipping-fields__field-wrapper { - margin-top: 8px; + margin: 8px auto 0 auto; + max-width: 400px; } @@ -64,4 +65,57 @@ } } + .terminal-list-container { + display: flex; + flex-wrap: wrap; + gap: 16px; + margin: 8px 0 16px; + + .terminal-container { + width: calc(50% - 8px); + display: flex; + flex-direction: column; + align-items: center; + gap: 8px; + border: solid #09467f 1px; + border-radius: 16px; + overflow: hidden; + padding-bottom: 16px; + opacity: .5; + text-align: center; + + &.selected { + opacity: 1; + } + + img { + width: 100%; + height: 120px; + object-fit: cover; + } + + &__name {} + + &__address { + font-size: 14px; + } + } + } + + .terminal-list-label { + margin-left: 8px; + font-size: 14px; + } + + .form-row-wide { + display: flex; + flex-direction: column; + } + + #deliveryDate { + margin-left: 8px; + margin-bottom: 4px; + display: block; + font-size: 14px; + } } \ No newline at end of file diff --git a/angular/src/app/components/user-data-order/user-data-order.component.ts b/angular/src/app/components/user-data-order/user-data-order.component.ts index 2517133..469e5dc 100644 --- a/angular/src/app/components/user-data-order/user-data-order.component.ts +++ b/angular/src/app/components/user-data-order/user-data-order.component.ts @@ -9,7 +9,9 @@ import { CartService } from 'src/app/services/cart.service'; import { environment } from "../../../environments/environment"; import { MessageService } from "primeng/api"; import { WpJsonService } from "../../services/wp-json.service"; -import { HttpClientModule } from '@angular/common/http'; +import { HttpClient, HttpClientModule } from '@angular/common/http'; +import { CookiesService } from 'src/app/services/cookies.service'; +import moment from 'moment'; @@ -27,7 +29,6 @@ export class UserDataOrderComponent implements OnInit { public hasError = false; public mainFormGroup!: FormGroup; public deliveryTypes: DeliveryType[] = []; - public minDate!: Date; public new_street!: string | null; public street!: string; public new_house!: string | null; @@ -44,12 +45,14 @@ export class UserDataOrderComponent implements OnInit { phone: null, }; public deliverData: DeliveryData = { - deliveryDate: null, + deliveryDate: moment().add(1, 'hours').toDate(), deliveryType: null, paymentMethod: paymentMethods[0], comment: '', - persons: 1, + persons: 1 }; + public terminalList!: any; + public selectedTerminal!: any; constructor( private fb: FormBuilder, @@ -59,12 +62,28 @@ export class UserDataOrderComponent implements OnInit { private cartService: CartService, private messageService: MessageService, private wpJsonService: WpJsonService, + private http: HttpClient, + private cookiesService: CookiesService, ) { } - ngOnInit(): void { - this.minDate = new Date(); + ngOnInit(): void { this._createMainForm(); + this.getTerminalList(); + this.selectedTerminal = JSON.parse(this.cookiesService.getItem('selectedTerminal') || '') + + } + + getTerminalList() { + this.http.get('./assets/terminal_list1.json').subscribe({ + next: (value) => { + this.terminalList = value + }, + error: (err) => { + console.error(err); + + } + }) } changeDeliveryType(event: any) { @@ -187,13 +206,13 @@ export class UserDataOrderComponent implements OnInit { "type": "self_delivery" } ]; - this.deliverData.deliveryType = this.deliveryTypes[0]; + this.deliverData.deliveryType = this.deliveryTypes[1]; return this.fb.group({ - // deliveryDate: [this.deliverData.deliveryDate, []], + deliveryDate: [this.deliverData.deliveryDate, []], deliveryType: [this.deliverData.deliveryType, [Validators.required]], paymentMethod: [this.deliverData.paymentMethod, [Validators.required]], // persons: [this.deliverData.persons, [Validators.required, Validators.minLength(2), Validators.maxLength(255),]], - comment: [this.deliverData.comment, [Validators.maxLength(255),]], + comment: [this.deliverData.comment, [Validators.maxLength(255),]] }); } } diff --git a/angular/src/app/interface/data.ts b/angular/src/app/interface/data.ts index fb5f529..c9d1a67 100644 --- a/angular/src/app/interface/data.ts +++ b/angular/src/app/interface/data.ts @@ -2,9 +2,9 @@ import { CartProduct } from "../models/cart-product"; export enum PageCode { - Auth, - Orders, + // Auth, BonusProgram, + Orders, RefSystem, UserData } diff --git a/angular/src/app/pages/account/account.component.html b/angular/src/app/pages/account/account.component.html index c3225cd..5fbf9d2 100644 --- a/angular/src/app/pages/account/account.component.html +++ b/angular/src/app/pages/account/account.component.html @@ -1,21 +1,17 @@

-