dev #15189 фикс мерджа

This commit is contained in:
gofnnp 2023-09-12 15:10:58 +04:00
parent 188f93e2b3
commit a8240ed0db
4 changed files with 154 additions and 118 deletions

View File

@ -7,27 +7,57 @@ import {
} from '@angular/core'; } from '@angular/core';
import { MessageService } from 'primeng/api'; import { MessageService } from 'primeng/api';
import { AppComponent } from '../app.component'; import { getTypeDevice, pwaInstalled } from 'src/app/utils';
@Directive({ @Directive({
selector: '[appDownloadApp]', selector: '[appDownloadApp]',
}) })
export class DownloadAppDirective implements OnInit { export class DownloadAppDirective implements OnInit {
public deviceType: 'ios' | 'android' | null = null;
public deferredPrompt: any;
constructor( constructor(
private messageService: MessageService, private messageService: MessageService,
public renderer: Renderer2, public renderer: Renderer2,
private el: ElementRef private el: ElementRef,
) {} ) { }
ngOnInit(): void { ngOnInit(): void {
if (AppComponent.pwaInstalled) { getTypeDevice();
if (this.deviceType === 'ios') {
this.el.nativeElement.style.display = 'block';
}
this.checkInstalled();
}
async checkInstalled(): Promise<void> {
if (window.matchMedia('(display-mode: standalone)').matches
|| await pwaInstalled()) {
this.el.nativeElement.style.display = 'none'; this.el.nativeElement.style.display = 'none';
} }
} }
@HostListener('window:beforeinstallprompt', ['$event'])
onBeforeInstallPrompt(e: any) {
e.preventDefault();
this.deferredPrompt = e;
if (this.deferredPrompt) {
this.el.nativeElement.style.display = 'block';
}
}
@HostListener('window:appinstalled', ['$event'])
onAppInstalled(e: any) {
// Prevent Chrome 67 and earlier from automatically showing the prompt
e.preventDefault();
// Stash the event so it can be triggered later.
this.deferredPrompt = e;
this.el.nativeElement.style.display = 'none';
}
@HostListener('click', ['$event']) @HostListener('click', ['$event'])
async downloadApp(event: MouseEvent) { async downloadApp(event: MouseEvent) {
if (!AppComponent.pwaPrompt) { if (!this.deferredPrompt) {
this.messageService.clear(); this.messageService.clear();
this.messageService.add({ this.messageService.add({
severity: 'error', severity: 'error',
@ -35,8 +65,8 @@ export class DownloadAppDirective implements OnInit {
}); });
return; return;
} }
AppComponent.pwaPrompt.prompt(); this.deferredPrompt.prompt();
AppComponent.pwaPrompt.userChoice.then((res: any) => { this.deferredPrompt.userChoice.then((res: any) => {
if (res.outcome === 'accepted') { if (res.outcome === 'accepted') {
this.messageService.clear(); this.messageService.clear();
this.messageService.add({ this.messageService.add({
@ -44,7 +74,8 @@ export class DownloadAppDirective implements OnInit {
summary: 'Спасибо за установку!', summary: 'Спасибо за установку!',
}); });
} }
AppComponent.pwaPrompt = null; this.deferredPrompt = null;
}); });
} }
} }

View File

@ -1,19 +1,23 @@
<h2>Ваш предыдущий заказ</h2>
<div class="info-order"> <div class="info-order">
<ng-container *ngIf="lastOrder"> <p class="flex"><span>Дата: </span>
<h2>Ваш предыдущий заказ</h2> <span *ngIf="!loading">{{(lastOrder?.transactionCreateDate | date:'dd.MM.yyyyг.') || 'Данные не найдены'}}</span>
<p class="flex"><span>Дата: </span> <ng-container *ngIf="loading">
<span class="info" *ngIf="!loading">{{lastOrder!.last_purchase_date}}</span> <ng-container
</p> *ngTemplateOutlet="spinner; context: { $implicit: 24 }"
<p class="flex"><span>На сумму: </span> ></ng-container>
<span class="info" *ngIf="!loading">{{lastOrder?.last_purchase_sum}}₽</span> </ng-container>
</p> </p>
</ng-container> <p class="flex"><span>На сумму: </span>
<ng-container *ngIf="!lastOrder"> <span *ngIf="!loading">{{lastOrder?.orderSum ? lastOrder?.orderSum + ' ₽' : 'Данные не найдены'}}</span>
<p class="flex"> <ng-container *ngIf="loading">
<span>Покупок за последние пол года не было</span> <ng-container
</p> *ngTemplateOutlet="spinner; context: { $implicit: 24 }"
</ng-container> ></ng-container>
</ng-container>
</p>
</div> </div>
<img src="./assets/970х250_3.png" alt="" width="100%" />
<a href="https://yandex.ru/profile/151770398186" target="_blank"> <a href="https://yandex.ru/profile/151770398186" target="_blank">
<button class="evaluate-order">Оценить заказ</button> <button class="evaluate-order">Оценить заказ</button>
</a> </a>

View File

@ -1,5 +1,5 @@
import { Component, Input, OnInit } from '@angular/core'; import { Component, Input, OnInit } from '@angular/core';
import { LastPurchase } from 'src/app/interface/data'; import { Purchase } from 'src/app/interface/data';
@Component({ @Component({
selector: 'app-last-order[lastOrder]', selector: 'app-last-order[lastOrder]',
@ -7,11 +7,12 @@ import { LastPurchase } from 'src/app/interface/data';
styleUrls: ['./last-order.component.scss'] styleUrls: ['./last-order.component.scss']
}) })
export class LastOrderComponent implements OnInit { export class LastOrderComponent implements OnInit {
@Input() lastOrder?: LastPurchase; @Input() lastOrder?: Purchase;
@Input() loading!: boolean; @Input() loading!: boolean;
constructor() { } constructor() { }
ngOnInit(): void { ngOnInit(): void {
} }
} }

View File

@ -1,105 +1,105 @@
<app-navbar title="Программа лояльности" [backEvent]="goBack"></app-navbar> <app-navbar title="Программа лояльности" [backEvent]="goBack"></app-navbar>
<ng-container *ngIf="authService.currentLvlPeriod"> <ng-container *ngIf="authService.currentLvlPeriod">
<div class="loyality-program"> <div class="loyality-program">
<app-accordion header="Условия начисления бонусов"> <app-accordion header="Условия начисления бонусов">
<p> <p>
Ваш текущий уровень {{ authService.userInfo?.current_level_and_cashback?.current_level ?? '--' }}, Ваш текущий уровень {{ authService.userInfo?.customer_level }},
поэтому вам начисляется {{ authService.currentLvlPeriod.percent }}% от суммы покупки. поэтому вам начисляется {{ authService.currentLvlPeriod.percent }}% от суммы покупки.
</p> </p>
<p> <p>
Смена уровня произойдет в начале следующего квартала, Смена уровня произойдет в начале следующего квартала,
{{ authService.currentPeriod[1] {{ authService.purchaseData.currentPeriod[1]
.locale("ru") .locale("ru")
.format("DD.MM.YY") }}. .format("DD.MM.YY") }}.
</p> </p>
</app-accordion> </app-accordion>
<app-accordion header="Уровни бонусной программы"> <app-accordion header="Уровни бонусной программы">
<p> <p>
Начисление Бонусных баллов происходит по дифференцированной шкале в Начисление Бонусных баллов происходит по дифференцированной шкале в
зависимости от уровня: зависимости от уровня:
</p> </p>
<ng-container
*ngFor="let item of lvlPeriods; let index = index; let last = last"
>
<ng-container *ngIf="!last">
<ul>
<span [style]="{ color: item.color }">Уровень {{ index + 1 }}</span>
<li>
Сумма покупок за прошлый квартал {{ item.start }}-{{ item.end }}
руб.
</li>
<li>Начисляемый бонус {{ item.percent }}% от суммы покупки</li>
</ul>
<br />
</ng-container>
<ng-container *ngIf="last">
<ul>
<span [style]="{ color: item.color }">Уровень {{ index + 1 }}</span>
<li>Сумма покупок за прошлый квартал — от {{ item.start }} руб.</li>
<li>Начисляемый бонус, в % от суммы покупки - {{ item.percent }}%</li>
</ul>
</ng-container>
</ng-container>
</app-accordion>
<app-accordion header="Условия «оплаты» покупки бонусами">
<p>
Участник может использовать Бонусы для «оплаты» до 100% стоимости любой
покупки.
</p>
<p>
Списание Бонусов происходит из расчета 1:1 (один Бонус дает скидку 1
российский рубль / 1 тенге / 1 белорусский рубль. Скидка, предоставляемая
Участнику при списании Бонусов, уменьшает цену товаров в заказе в
соответствии с условиями ПЛ.
</p>
<p>
Для списания Бонусов Участник должен попросить об этом в кофе-баре сети
«COFFEE LIKE» кассира до момента пробития фискального чека, после чего им
будет проверена возможность списания Бонусов.
</p>
<p>
Для всех Участников возможно списание без использования мобильного
приложения.
</p>
<p>Полученные Бонусы не подлежат обмену на денежные средства.</p>
</app-accordion>
<app-accordion header="Особые условия">
<p>
Начисленные на счет бонусы сгорают по прошествии 90 дней с момента
совершения последней покупки с начислением или списанием бонусов.
</p>
<ng-container
*ngFor="let item of lvlPeriods; let index = index; let last = last"
>
<ng-container *ngIf="!last">
<ul> <ul>
Возврат покупки, за которую бонусы были начислены: <span [style]="{ color: item.color }">Уровень {{ index + 1 }}</span>
<li> <li>
В случае, если бонусов на счету достаточно для списания, бонусы Сумма покупок за прошлый квартал {{ item.start }}-{{ item.end }}
списываются в полном ранее начисленном за возвращаемый товар объеме. руб.
</li> </li>
<li> <li>Начисляемый бонус {{ item.percent }}% от суммы покупки</li>
В случае, если бонусов на счету недостаточно, формируется минусовой
баланс.
</li>
</ul> </ul>
<br />
</ng-container>
<ng-container *ngIf="last">
<ul> <ul>
Возврат покупки, которая была оплачена бонусами: <span [style]="{ color: item.color }">Уровень {{ index + 1 }}</span>
<li> <li>Сумма покупок за прошлый квартал — от {{ item.start }} руб.</li>
В случае предъявления Участником кассового или товарного чека, сумма <li>Начисляемый бонус, в % от суммы покупки - {{ item.percent }}%</li>
бонусов, списанная для оплаты возвращаемого товара, зачисляется на счет
участника.
</li>
<li>
В случае возврата товара с применением оплаты бонусами, клиенту
возвращается денежная сумма в размере, внесенном Участником в оплату
товара при покупке, за вычетом суммы, оплаченной бонусами.
</li>
</ul> </ul>
</app-accordion> </ng-container>
</ng-container>
</app-accordion>
</div> <app-accordion header="Условия «оплаты» покупки бонусами">
<p>
Участник может использовать Бонусы для «оплаты» до 100% стоимости любой
покупки.
</p>
<p>
Списание Бонусов происходит из расчета 1:1 (один Бонус дает скидку 1
российский рубль / 1 тенге / 1 белорусский рубль. Скидка, предоставляемая
Участнику при списании Бонусов, уменьшает цену товаров в заказе в
соответствии с условиями ПЛ.
</p>
<p>
Для списания Бонусов Участник должен попросить об этом в кофе-баре сети
«COFFEE LIKE» кассира до момента пробития фискального чека, после чего им
будет проверена возможность списания Бонусов.
</p>
<p>
Для всех Участников возможно списание без использования мобильного
приложения.
</p>
<p>Полученные Бонусы не подлежат обмену на денежные средства.</p>
</app-accordion>
<app-accordion header="Особые условия">
<p>
Начисленные на счет бонусы сгорают по прошествии 90 дней с момента
совершения последней покупки с начислением или списанием бонусов.
</p>
<app-footer></app-footer> <ul>
Возврат покупки, за которую бонусы были начислены:
<li>
В случае, если бонусов на счету достаточно для списания, бонусы
списываются в полном ранее начисленном за возвращаемый товар объеме.
</li>
<li>
В случае, если бонусов на счету недостаточно, формируется минусовой
баланс.
</li>
</ul>
<ul>
Возврат покупки, которая была оплачена бонусами:
<li>
В случае предъявления Участником кассового или товарного чека, сумма
бонусов, списанная для оплаты возвращаемого товара, зачисляется на счет
участника.
</li>
<li>
В случае возврата товара с применением оплаты бонусами, клиенту
возвращается денежная сумма в размере, внесенном Участником в оплату
товара при покупке, за вычетом суммы, оплаченной бонусами.
</li>
</ul>
</app-accordion>
</div>
<app-footer></app-footer>
</ng-container> </ng-container>