!92 Optimize the checkout process

* wip
* wip
* wip
* wip
* wip
* wip
* Optimize the checkout process
This commit is contained in:
pushuo 2023-05-10 10:37:27 +00:00 committed by Edward Yang
parent 0b6609b419
commit b595085b7e
18 changed files with 153 additions and 89 deletions

View File

@ -100,8 +100,12 @@
$http.post(`/stripe/capture`, this.form).then((res) => {
layer.msg(res.message)
console.log(res)
location = "{{ shop_route('account.order.show', ['number' => $order->number]) }}"
@if (current_customer())
location = "{{ shop_route('account.order.show', ['number' => $order->number]) }}"
@else
location = "{{ shop_route('checkout.success', ['order_number' => $order->number]) }}"
@endif
})
});
}

View File

@ -71,6 +71,8 @@
color: #333;
display: flex;
text-decoration: none;
// 文字强制换行
// word-break: break-all;
i {
margin-right: 7px;

View File

@ -11,7 +11,7 @@
@endpush
@section('page-title-right')
<button type="button" class="btn btn-lg btn-primary submit-form" form="app">{{ __('common.save') }}</button>
<button type="button" class="btn btn-lg btn-primary submit-form">{{ __('common.save') }}</button>
@endsection
@section('content')
@ -197,7 +197,7 @@
</select>
</div>
<div role="button" class="border d-flex justify-content-center align-items-center border-dashed bg-light wh-40 me-2 bg-white" @click="batchSettingVariantImage">
<img :src="thumbnail(variablesBatch.image)" class="img-fluid" v-if="variablesBatch.image">
<img :src="thumbnail(variablesBatch.image)" class="img-fluid" v-if="variablesBatch.image" style="max-height: 40px;">
<i class="bi bi-plus fs-3 text-muted" v-else></i>
</div>
<input type="text" class="form-control me-2 bg-white" v-model="variablesBatch.model" placeholder="{{ __('admin/product.model') }}">
@ -236,7 +236,7 @@
<div class="position-absolute top-0 end-0">
<button class="btn btn-danger btn-sm wh-20 p-0" @click="removeSkuImages(skuIndex, index)" type="button"><i class="bi bi-trash"></i></button>
</div>
<img :src="thumbnail(image)" class="img-fluid">
<img :src="thumbnail(image)" class="img-fluid" style="max-height: 40px;">
<input type="hidden" class="form-control" v-model="sku.images[index]" :name="'skus[' + skuIndex + '][images][]'"
placeholder="image">
</div>
@ -497,6 +497,17 @@
@push('footer')
<script>
$('.submit-form').on('click', function () {
// 关闭多规格提交 清空 variables
if (!app.editing.isVariable) {
app.source.variables = [];
}
setTimeout(() => {
$(`form#app`).find('button[type="submit"]')[0].click();
}, 0);
})
var app = new Vue({
el: '#app',
data: {

View File

@ -79,6 +79,8 @@ return [
'batch_setting' => 'Batch setting',
'show_all' => 'View all',
'get_more' => 'Get More',
'view_more' => 'View more',
'view_details' => 'Check Details',
'id' => 'ID',
'created_at' => 'Created At',

View File

@ -22,21 +22,21 @@ return [
'has_no_permission' => 'No tiene permiso para acceder a esta página, comuníquese con el administrador de su sistema.',
// header
'home' => 'Administrar Inicio',
'order' => 'Gestión de pedidos',
'rma' => 'Gestión del servicio postventa',
'rma_reason' => 'Gestión de motivos de devolución',
'home' => 'Página delantera',
'order' => 'Pedidos',
'rma' => 'servicio postventa',
'rma_reason' => 'Motivos de devolución',
'product' => 'gestión de mercancías',
'brand' => 'gestión de la marca',
'attribute' => 'attribute',
'attribute_group' => 'attribute group',
'category' => 'Gestión de clasificaciones',
'customer_group' => 'Gestión de grupos de clientes',
'category' => 'Clasificaciones',
'customer_group' => 'Grupos de clientes',
'customer' => 'gestión de clientes',
'page' => 'Gestión de contenido',
'page' => 'Contenido',
'page_category' => 'Page Category',
'setting' => 'ajustes del sistema',
'plugin' => 'Gestión de complementos',
'setting' => 'Configuración',
'plugin' => 'Enchufar',
'admin_user' => 'usuario de fondo',
'admin_role' => 'rol del usuario',
'region' => 'Agrupación regional',
@ -44,13 +44,13 @@ return [
'tax_class' => 'gestión fiscal',
'currency' => 'administración del dinero',
'language' => 'manejo de idiomas',
'zone' => 'Gestión de provincia',
'zone' => 'Provincia',
'country' => 'Administración del Estado',
'file_manager' => 'administrador de archivos',
'access_frontend' => 'Visita la recepción',
// sidebar
'settings_index' => 'ajustes del sistema',
'settings_index' => 'Configuración',
'admin_users_index' => 'usuario de fondo',
'plugins_index' => 'Lista de complementos',
'regions_index' => 'Agrupación regional',
@ -74,7 +74,7 @@ return [
'customers_index' => 'Lista de clientes',
'customer_groups_index' => 'grupo de clientes',
'countries_index' => 'Administración del Estado',
'zones_index' => 'Gestión de provincia',
'zones_index' => 'Provincia',
'update_nav' => 'actualizar',
'update_title' => 'Buscar una nueva versión de BeikeShop, ya sea para actualizar ahora',
'update_new_version' => 'última versión',

View File

@ -22,28 +22,28 @@ return [
'has_no_permission' => 'Vous n\'êtes pas autorisé à accéder à cette page, veuillez contacter l\'administrateur système. ',
// header
'home' => 'Gérer la page d\'accueil',
'order' => 'gestion des commandes',
'home' => 'Page Garde',
'order' => 'Commandes',
'rma' => 'gestion du service après-vente',
'rma_reason' => 'Gestion des motifs de retour',
'product' => 'gestion des produits',
'product' => 'Produits',
'brand' => 'gestion de la marque',
'attribute' => 'attribute',
'attribute_group' => 'attribute group',
'category' => 'gestion des catégories',
'customer_group' => 'gestion des groupes de clients',
'customer' => 'gestion des clients',
'page' => 'gestion de contenu',
'category' => 'Catégories',
'customer_group' => 'Groupes de clients',
'customer' => 'Clients',
'page' => 'Article',
'page_category' => 'Page Category',
'setting' => 'paramètres système',
'plugin' => 'gestion des plugins',
'setting' => 'Installation',
'plugin' => 'Plugins',
'admin_user' => 'utilisateur principal',
'admin_role' => 'rôle d\'utilisateur',
'region' => 'groupement de régions',
'tax_rate' => 'gestion des taux d\'imposition',
'tax_class' => 'gestion des taxes',
'currency' => 'gestion des devises',
'language' => 'gestion des langues',
'tax_rate' => 'Taux d\'imposition',
'tax_class' => 'Taxes',
'currency' => 'Devises',
'language' => 'Langues',
'zone' => 'gestion de la province',
'country' => 'gestion pays',
'file_manager' => 'gestionnaire de fichiers',
@ -56,15 +56,15 @@ return [
'regions_index' => 'groupement de régions',
'tax_rates_index' => 'paramètres du taux d\'imposition',
'tax_classes_index' => 'catégorie de taxe',
'currencies_index' => 'gestion des devises',
'languages_index' => 'gestion des langues',
'currencies_index' => 'Devises',
'languages_index' => 'Langues',
'design_index' => 'Décoration de la maison',
'pages_index' => 'gestion des articles',
'pages_index' => 'Articles',
'page_categories_index' => 'Classement des articles',
'design_footer_index' => 'décoration du pied de page',
'design_menu_index' => 'Configuration navigation',
'categories_index' => 'catégorie de produit',
'products_index' => 'gestion des produits',
'products_index' => 'Produits',
'products_trashed' => 'corbeille',
'customers_trashed' => 'corbeille',
'brands_index' => 'marque du produit',
@ -74,7 +74,7 @@ return [
'customers_index' => 'liste de clients',
'customer_groups_index' => 'groupe de clients',
'countries_index' => 'Gestion des pays',
'zones_index' => 'gestion des provinces',
'zones_index' => 'Provinces',
'update_nav' => 'mettre à jour',
'update_title' => 'Trouver une nouvelle version de BeikeShop, si mettre à jour maintenant',
'update_new_version' => 'dernière version',

View File

@ -23,20 +23,20 @@ return [
// header
'home' => 'Gestisci casa',
'order' => 'Gestione degli ordini',
'rma' => 'Gestione del servizio post vendita',
'rma_reason' => 'Gestione del motivo di reso',
'product' => 'gestione delle merci',
'order' => 'Degli ordini',
'rma' => 'Del servizio post vendita',
'rma_reason' => 'Del motivo di reso',
'product' => 'Merce',
'brand' => 'gestione del marchio',
'attribute' => 'attribute',
'attribute_group' => 'attribute group',
'category' => 'Gestione della classificazione',
'customer_group' => 'Gestione del gruppo di clienti',
'customer' => 'gestione dei clienti',
'page' => 'Gestione dei contenuti',
'category' => 'Della classificazione',
'customer_group' => 'Gruppo di clienti',
'customer' => 'Cliente',
'page' => 'Dei contenuti',
'page_category' => 'Page Category',
'setting' => 'Impostazioni di sistema',
'plugin' => 'Gestione dei plugin',
'setting' => 'Impostare',
'plugin' => 'Dei plugin',
'admin_user' => 'utente in background',
'admin_role' => 'ruolo utente',
'region' => 'Raggruppamento regionale',
@ -44,13 +44,13 @@ return [
'tax_class' => 'gestione fiscale',
'currency' => 'gestione del denaro',
'language' => 'gestione della lingua',
'zone' => 'Gestione provinciale',
'country' => 'Gestione statale',
'zone' => 'Provinciale',
'country' => 'Statale',
'file_manager' => 'gestore di file',
'access_frontend' => 'Visita la reception',
// sidebar
'settings_index' => 'Impostazioni di sistema',
'settings_index' => 'Impostare',
'admin_users_index' => 'utente in background',
'plugins_index' => 'Elenco dei plugin',
'regions_index' => 'Raggruppamento regionale',
@ -69,12 +69,12 @@ return [
'customers_trashed' => 'cestino',
'brands_index' => 'marchio del prodotto',
'orders_index' => 'Lista degli ordini',
'rmas_index' => 'Gestione post vendita',
'rmas_index' => 'Post vendita',
'rma_reasons_index' => 'Motivo post vendita',
'customers_index' => 'Elenco clienti',
'customer_groups_index' => 'Gruppo di clienti',
'countries_index' => 'Gestione statale',
'zones_index' => 'Gestione provinciale',
'countries_index' => 'Statale',
'zones_index' => 'Provinciale',
'update_nav' => 'aggiorna',
'update_title' => 'Trova una nuova versione di BeikeShop, se aggiornare ora',
'update_new_version' => 'ultima versione',

View File

@ -22,44 +22,44 @@ return [
'has_no_permission' => 'У вас нет разрешения на доступ к этой странице, обратитесь к системному администратору.',
// header
'home' => 'Управление домашней страницей',
'order' => 'управление заказами',
'rma' => 'управление послепродажным обслуживанием',
'home' => 'титульная страница',
'order' => 'заказами',
'rma' => 'послепродажным обслуживанием',
'rma_reason' => 'Управление причинами возврата',
'product' => 'управление продуктом',
'brand' => 'управление брендом',
'product' => 'продуктом',
'brand' => 'брендом',
'attribute' => 'attribute',
'attribute_group' => 'attribute group',
'category' => 'управление категориями',
'customer_group' => 'управление группой клиентов',
'customer' => 'управление клиентами',
'page' => 'управление контентом',
'category' => 'категориями',
'customer_group' => 'группой клиентов',
'customer' => 'клиентами',
'page' => 'контентом',
'page_category' => 'Page Category',
'setting' => 'системные настройки',
'plugin' => 'управление плагинами',
'setting' => 'настраивать',
'plugin' => 'плагинами',
'admin_user' => 'бэкенд-пользователь',
'admin_role' => 'роль пользователя',
'region' => 'группировка регионов',
'tax_rate' => 'управление налоговой ставкой',
'tax_class' => 'управление налогами',
'currency' => 'управление валютой',
'language' => 'управление языком',
'zone' => 'управление провинциями',
'country' => 'управление страной',
'tax_rate' => 'налоговой ставкой',
'tax_class' => 'налогами',
'currency' => 'валютой',
'language' => 'языком',
'zone' => 'провинциями',
'country' => 'страной',
'file_manager' => 'файловый менеджер',
'access_frontend' => 'Доступ к внешнему интерфейсу',
// sidebar
'settings_index' => 'системные настройки',
'settings_index' => 'настраивать',
'admin_users_index' => 'фоновый пользователь',
'plugins_index' => 'список плагинов',
'regions_index' => 'группировка регионов',
'tax_rates_index' => 'настройки ставки налога',
'tax_classes_index' => 'налоговая категория',
'currencies_index' => 'управление валютой',
'languages_index' => 'управление языками',
'currencies_index' => 'валютой',
'languages_index' => 'языками',
'design_index' => 'Украшение дома',
'pages_index' => 'управление статьями',
'pages_index' => 'статьями',
'page_categories_index' => 'Классификация статей',
'design_footer_index' => 'украшение нижнего колонтитула',
'design_menu_index' => 'Конфигурация навигации',

Binary file not shown.

View File

@ -10,7 +10,7 @@
*/
return [
'product_total' => '品总数',
'product_total' => '品总数',
'customer_view' => '用户访问量',
'order_total' => '订单量',
'customer_new' => '新增用户',

View File

@ -78,6 +78,8 @@ return [
'batch_setting' => '批量设置',
'show_all' => '查看所有',
'get_more' => '获取更多',
'view_more' => '查看更多',
'view_details' => '查看详情',
'id' => 'ID',
'created_at' => '创建时间',

View File

@ -18,8 +18,8 @@ return [
'login' => '登录',
'already' => '已经是我们的客户了?',
'description' => '已经是我们的客户了?',
'email' => '邮',
'email_address' => '邮地址',
'email' => '邮',
'email_address' => '邮地址',
'password' => '密码',
'forget_password' => '忘记密码',
'new' => '新账号',

View File

@ -78,6 +78,8 @@ return [
'batch_setting' => '批量設置',
'show_all' => '查看所有',
'get_more' => '獲取更多',
'view_more' => '查看更多',
'view_details' => '查看詳情',
'id' => 'ID',
'created_at' => '創建時間',

View File

@ -31,7 +31,7 @@
<span class="name">@{{ address.name }}</span>
<span class="phone">@{{ address.phone }}</span>
</div>
<div class="zipcode">@{{ address.zipcode }}</div>
<div class="zipcode" style="min-height: 20px">@{{ address.zipcode }}</div>
<div class="address-info">@{{ address.country }} @{{ address.zone }} @{{ address.city }}
@{{ address.address_1 }}</div>
<div class="address-bottom">

View File

@ -148,7 +148,7 @@
}
$http.post('/checkout/confirm').then((res) => {
location = 'orders/' + res.number + '/success?type=create'
location = 'orders/' + res.number + '/pay?type=create'
})
});

View File

@ -5,7 +5,7 @@
@section('content')
<div class="container">
<div class="row mt-5 mb-5 justify-content-center">
<div class="col-12 col-md-9">@include('shared.steps', ['steps' => 4])</div>
<div class="col-12 col-md-9">@include('shared.steps', ['steps' => 3])</div>
</div>
<div class="col-12">

View File

@ -9,17 +9,20 @@
<div class="card-body">
<div class="text-center">
<div class="text-success mb-3">
<i class="bi bi-check-circle" style="font-size: 50px"></i>
<i class="bi bi-check-circle" style="font-size: 60px"></i>
</div>
<div class="checkout-success__header__title">
<h1>{{ __('shop/checkout.checkout_success_title') }}</h1>
</div>
</div>
<div class="checkout-success__body">
<div class="mt-3">
<div class="card mb-4 order-head">
<div class="mt-4">
<div class="card mb-2 order-head">
<div class="card-header d-flex align-items-center justify-content-between">
<h6 class="card-title">{{ __('shop/account.order.order_info.order_details') }}</h6>
<h5 class="card-title">{{ __('shop/account.order.order_info.order_details') }}</h5>
@if (current_customer())
<a class="btn btn-sm btn-primary" href="{{ shop_route('account.order.show', $order->number) }}">{{ __('common.view_more') }}</a>
@endif
</div>
<div class="card-body">
<div class="bg-light p-2 table-responsive">
@ -46,6 +49,48 @@
</div>
</div>
</div>
<div class="card">
<div class="card-header"><h5 class="card-title">{{ __('order.address_info') }}</h5></div>
<div class="card-body">
<table class="table">
<thead class="">
<tr>
<th>{{ __('order.shipping_address') }}</th>
<th>{{ __('order.payment_address') }}</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div>{{ __('address.name') }}{{ $order->shipping_customer_name }} ({{ $order->shipping_telephone }})</div>
<div>
{{ __('address.address') }}
{{ $order->shipping_address_1 }}
{{ $order->shipping_address_2 }}
{{ $order->shipping_city }}
{{ $order->shipping_zone }}
{{ $order->shipping_country }}
</div>
<div>{{ __('address.post_code') }}{{ $order->shipping_zipcode }}</div>
</td>
<td>
<div>{{ __('address.name') }}{{ $order->payment_customer_name }} ({{ $order->payment_telephone }})</div>
<div>
{{ __('address.address') }}
{{ $order->payment_address_1 }}
{{ $order->payment_address_2 }}
{{ $order->payment_city }}
{{ $order->payment_zone }}
{{ $order->payment_country }}
</div>
<div>{{ __('address.post_code') }}{{ $order->payment_zipcode }}</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>

View File

@ -1,18 +1,14 @@
<div class="steps-wrap">
<div class="{{ $steps == 1 || $steps == 2 || $steps == 3 || $steps == 4 ? 'active':'' }}">
<div class="{{ $steps == 1 || $steps == 2 || $steps == 3 ? 'active':'' }}">
<div class="number-wrap"><span class="number">1</span></div>
<span class="title">{{ __('shop/steps.cart') }}</span>
</div>
<div class="{{ $steps == 2 || $steps == 3 || $steps == 4 ? 'active':'' }}">
<div class="{{ $steps == 2 || $steps == 3 ? 'active':'' }}">
<div class="number-wrap"><span class="number">2</span></div>
<span class="title">{{ __('shop/steps.checkout') }}</span>
</div>
<div class="{{ $steps == 3 || $steps == 4 ? 'active':'' }}">
<div class="{{ $steps == 3 ? 'active':'' }}">
<div class="number-wrap"><span class="number">3</span></div>
<span class="title">{{ __('shop/steps.submitted_successfully') }}</span>
</div>
<div class="{{ $steps == 4 ? 'active':'' }}">
<div class="number-wrap"><span class="number">4</span></div>
<span class="title">{{ __('shop/steps.payment') }}</span>
</div>
</div>