dev #15189 фикс мерджа
This commit is contained in:
parent
188f93e2b3
commit
a8240ed0db
@ -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;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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>
|
||||||
|
|||||||
@ -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 {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user