#1488 Bestellbestätigung Styling angepasst, Anzeige weiterer Daten

This commit is contained in:
Andreas Schickinger
2021-03-04 15:50:55 +01:00
committed by Lorenz Hilpert
parent 83eaf8e1e8
commit 9d8eec616f
4 changed files with 165 additions and 84 deletions

View File

@@ -1,6 +1,8 @@
<div class="card">
<div>
<ui-icon class="check-icon" icon="check" size="36px"></ui-icon>
<div class="check-icon-wrapper">
<span class="icon-circle">
<ui-icon class="check-icon" icon="check" size="36px"></ui-icon>
</span>
</div>
<h1 class="order-header">Bestellbestätigung</h1>
@@ -19,7 +21,7 @@
</div>
<div class="row">
<div class="sub-row">
<div class="sub-row small">
<span class="label">Belegnummer</span>
<strong>{{ displayOrder.orderNumber }}</strong>
</div>
@@ -33,7 +35,7 @@
</div>
</div>
<div class="row">
<div class="sub-row">
<div class="sub-row small">
<span class="label">Bestelldatum</span>
<strong>{{ displayOrder.orderDate | date }}</strong>
</div>
@@ -43,12 +45,46 @@
</div>
</div>
<div class="row item-group-header">
<ui-icon
class="icon-order-type"
[size]="displayOrder.features?.orderType === 'B2B-Versand' ? '50px' : '25px'"
[icon]="
displayOrder.features?.orderType === 'Abholung'
? 'box_out'
: displayOrder.features?.orderType === 'Versand'
? 'truck'
: displayOrder.features?.orderType === 'Rücklage'
? 'shopping_bag'
: displayOrder.features?.orderType === 'B2B-Versand'
? 'truck_b2b'
: displayOrder.features?.orderType === 'Download'
? 'download'
: 'truck'
"
></ui-icon>
<div class="label">
{{ displayOrder.features?.orderType }}
</div>
</div>
<!-- <ng-container *ngIf="displayOrder.features?.orderType === 'Abholung'">
<hr />
<div class="row">
<div class="branch-label">
Filiale
</div>
<div class="branch-name">{{ displayOrder.targetBranch?.name }} | {{ displayOrder.targetBranch | branchAddress }}</div>
</div>
</ng-container> -->
<hr class="top-line" />
<ng-container *ngFor="let order of displayOrder.items">
<div class="row between">
<div class="product-name">
<img class="thumbnail" [src]="order.product?.ean | productImage: 30:50:true" />
<span class="name">{{ order.product?.name }}</span>
<a class="name" [queryParams]="{ type: 'ean' }" [routerLink]="['/product', 'details', order?.product?.ean]">{{
order?.product?.name
}}</a>
</div>
<div class="product-details">
@@ -58,28 +94,38 @@
<span class="separator">|</span>
<span class="contributors">{{ order?.product?.contributors }}</span>
</div>
<div class="delivery-row">
<!-- <span class="separator">|</span> -->
<span class="order-type">{{ order?.features?.orderType || '' }} </span>
<div class="delivery-row" *ngIf="order?.features?.orderType">
<ng-container *ngIf="order?.features?.orderType === 'Abholung'">
<span class="supplier">{{ (order?.subsetItems)[0].supplierLabel }}</span>
<span class="separator">|</span>
<span class="order-type">Abholung ab {{ (order?.subsetItems)[0]?.estimatedShippingDate | date }}</span>
</ng-container>
<ng-container *ngIf="['Versand', 'B2B-Versand', 'DIG-Versand'].indexOf(order?.features?.orderType) > -1">
<span class="supplier">{{ (order?.subsetItems)[0].supplierLabel }}</span>
<span class="separator">|</span>
<span class="order-type">Versanddatum {{ (order?.subsetItems)[0]?.estimatedShippingDate | date }}</span>
</ng-container>
</div>
</div>
<span class="quantity">{{ order.quantity }}x</span>
<span class="price">{{ order.price?.value?.value | currency: ' ' }} {{ order.price?.value?.currency }}</span>
<div class="product-price">
<span class="quantity">{{ order.quantity }}x</span>
<span class="price">{{ order.price?.value?.value | currency: ' ' }} {{ order.price?.value?.currency }}</span>
</div>
</div>
<hr />
</ng-container>
</ng-container>
</div>
<div class="footer">
<div class="overview">
<span class="promotion-points">{{ totalItemCount$ | async }} Artikel | {{ totalReadingPoints$ | async }} Lesepunkte</span>
<div class="footer">
<div class="overview">
<span class="promotion-points">{{ totalItemCount$ | async }} Artikel | {{ totalReadingPoints$ | async }} Lesepunkte</span>
<div class="price-wrapper">
<div class="total-price">Gesamtsumme {{ totalPrice$ | async | currency: ' ' }}</div>
<div class="price-info">ohne Versandkosten</div>
</div>
<div class="price-wrapper">
<div class="total-price">Gesamtsumme {{ totalPrice$ | async | currency: ' ' }} {{ totalPriceCurrency$ | async }}</div>
<div class="price-info" *ngIf="containsDeliveryOrder$ | async">ohne Versandkosten</div>
</div>
</div>
</div>

View File

@@ -2,14 +2,9 @@
@apply block box-border;
}
.check-icon {
@apply mx-auto text-green-700 pt-8;
width: 36px;
}
.card {
@apply bg-white rounded-card shadow-card;
height: calc(100vh - 45px);
@apply bg-white rounded-card shadow-card overflow-scroll;
height: calc(100vh - 420px);
}
.order-header {
@@ -20,101 +15,125 @@
@apply text-center text-lg my-0 mb-2;
}
.order-details {
@apply mt-4;
}
.check-icon-wrapper {
@apply flex flex-row justify-center;
.cta-print {
@apply bg-transparent text-brand font-bold text-xl outline-none border-none;
}
.icon-circle {
@apply mt-px-40 mb-1;
background-color: #26830c;
border-radius: 50%;
width: 34px;
}
.order-customer {
@apply font-bold text-2xl;
}
.grow {
@apply flex-grow;
.check-icon {
@apply mx-auto text-white;
width: 18px;
}
}
.row {
@apply flex flex-row items-center mx-8 my-4;
}
.sub-row {
@apply flex flex-row flex-grow items-center w-1/2;
.sub-row {
@apply flex flex-row flex-grow items-center;
width: 55%;
}
.small {
width: 45%;
}
.label {
@apply w-px-150;
width: 140px;
}
.value {
@apply ml-1;
@apply ml-4 text-right;
}
.order-customer {
@apply font-bold text-2xl;
}
.grow {
@apply flex-grow;
}
.cta-print {
@apply bg-transparent text-brand font-bold text-xl outline-none border-none;
}
}
.thumbnail {
@apply mr-2;
width: 30px;
.item-group-header {
@apply pb-0 pr-4 pt-1 text-lg font-bold;
height: 40px;
.icon-order-type {
@apply text-font-customer mr-3;
}
}
.name {
@apply font-bold whitespace-nowrap overflow-ellipsis overflow-hidden mx-2;
width: 200px;
.order-details {
@apply mt-4;
}
.product-name {
@apply flex flex-row;
.thumbnail {
@apply mr-2;
width: 30px;
}
.name {
@apply font-bold whitespace-nowrap overflow-ellipsis overflow-hidden mx-2 text-active-customer no-underline;
width: 170px;
}
}
.product-details {
@apply flex flex-col whitespace-nowrap overflow-ellipsis overflow-hidden;
width: 300px;
width: 320px;
.info-row {
@apply whitespace-nowrap overflow-ellipsis overflow-hidden;
}
.order-icon {
@apply w-px-15 text-ucla-blue;
height: 18px;
width: 35px;
}
.format {
@apply w-px-40;
}
.contributors {
@apply whitespace-nowrap overflow-ellipsis overflow-hidden;
}
}
.order-icon {
@apply w-px-15 text-ucla-blue;
height: 18px;
width: 35px;
}
.delivery-row {
.order-type {
@apply w-px-100 font-bold;
}
.separator {
@apply mx-1;
}
.format {
@apply w-px-40;
}
.order-type {
@apply w-px-100 font-bold;
}
.contributors {
@apply whitespace-nowrap overflow-ellipsis overflow-hidden;
.supplier {
@apply ml-2;
}
}
.quantity {
@apply w-px-30 text-right;
@apply w-px-30 text-right font-semibold;
}
.price {
@apply w-px-100 font-bold text-right;
}
.price-info {
@apply text-right text-sm;
}
.between {
@apply justify-between;
@apply w-px-100 font-bold text-right ml-5;
}
.footer {
@apply flex flex-col justify-center items-center h-px-100;
@apply flex flex-col justify-center items-center h-px-100 mt-4 bg-white;
.overview {
@apply flex flex-row justify-between;
@@ -128,6 +147,10 @@
.total-price {
@apply font-bold text-cta-l;
}
.price-info {
@apply text-right text-sm;
}
}
hr {
@@ -135,6 +158,10 @@ hr {
@apply bg-disabled-customer;
}
.top-line {
@apply mt-8;
.between {
@apply justify-between;
}
.separator {
@apply mx-1;
}

View File

@@ -41,9 +41,16 @@ export class CheckoutSummaryComponent {
)
);
constructor(private domainCheckoutService: DomainCheckoutService, private uiModal: UiModalService) {
// this.displayOrders$.subscribe((o) => console.log(o));
}
totalPriceCurrency$ = this.displayOrders$.pipe(map((displayOrders) => displayOrders[0]?.items[0]?.price?.value?.currency));
containsDeliveryOrder$ = this.displayOrders$.pipe(
map(
(displayOrders) =>
displayOrders.filter((o) => ['Versand', 'B2B-Versand', 'DIG-Versand'].indexOf(o.features?.orderType) > -1)?.length > 0
)
);
constructor(private domainCheckoutService: DomainCheckoutService, private uiModal: UiModalService) {}
openPrintModal(id: number) {
this.uiModal.open({

View File

@@ -6,9 +6,10 @@ import { UiIconModule } from '@ui/icon';
import { PageCheckoutPipeModule } from '../pipes/page-checkout-pipe.module';
import { ProductImageModule } from 'apps/cdn/product-image/src/public-api';
import { ModalPrinterModule } from '@modal/printer';
import { RouterModule } from '@angular/router';
@NgModule({
imports: [CommonModule, UiIconModule, PageCheckoutPipeModule, ProductImageModule, ModalPrinterModule],
imports: [CommonModule, RouterModule, UiIconModule, PageCheckoutPipeModule, ProductImageModule, ModalPrinterModule],
exports: [CheckoutSummaryComponent],
declarations: [CheckoutSummaryComponent],
})