优化修改个人信息和页尾配置
This commit is contained in:
parent
c93b3cf643
commit
944b50969b
|
|
@ -1,6 +1,7 @@
|
||||||
/node_modules
|
/node_modules
|
||||||
/public/hot
|
/public/hot
|
||||||
/public/storage
|
/public/storage
|
||||||
|
/public/upload/avatar
|
||||||
/storage/*.key
|
/storage/*.key
|
||||||
/vendor
|
/vendor
|
||||||
.env
|
.env
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,4 @@
|
||||||
<?php
|
<?php
|
||||||
/*
|
|
||||||
* @copyright 2022 opencart.cn - All Rights Reserved.
|
|
||||||
* @link https://www.guangdawangluo.com
|
|
||||||
* @Author PS <pushuo@opencart.cn>
|
|
||||||
* @Date 2022-08-10 15:05:22
|
|
||||||
* @LastEditTime 2022-08-10 15:17:43
|
|
||||||
*/
|
|
||||||
/**
|
/**
|
||||||
* AccountController.php
|
* AccountController.php
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ class EditRequest extends FormRequest
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'name' => 'required',
|
'name' => 'required',
|
||||||
'email' => 'required|email:rfc,dns|unique:customers,email',
|
// 'email' => 'required|email:rfc,dns|unique:customers,email',
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ use Illuminate\Support\Facades\View;
|
||||||
use Illuminate\Support\Facades\Config;
|
use Illuminate\Support\Facades\Config;
|
||||||
use Illuminate\Support\ServiceProvider;
|
use Illuminate\Support\ServiceProvider;
|
||||||
use Beike\Shop\View\Components\AccountSidebar;
|
use Beike\Shop\View\Components\AccountSidebar;
|
||||||
|
use Beike\Shop\View\Components\Alert;
|
||||||
|
|
||||||
class ShopServiceProvider extends ServiceProvider
|
class ShopServiceProvider extends ServiceProvider
|
||||||
{
|
{
|
||||||
|
|
@ -83,6 +84,7 @@ class ShopServiceProvider extends ServiceProvider
|
||||||
{
|
{
|
||||||
$this->loadViewComponentsAs('shop', [
|
$this->loadViewComponentsAs('shop', [
|
||||||
'sidebar' => AccountSidebar::class,
|
'sidebar' => AccountSidebar::class,
|
||||||
|
'alert' => Alert::class,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Beike\Shop\View\Components;
|
||||||
|
|
||||||
|
use Illuminate\View\Component;
|
||||||
|
|
||||||
|
class Alert extends Component
|
||||||
|
{
|
||||||
|
public string $type;
|
||||||
|
public string $msg;
|
||||||
|
|
||||||
|
public function __construct(string $type, string $msg)
|
||||||
|
{
|
||||||
|
$this->type = $type;
|
||||||
|
$this->msg = $msg;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function render()
|
||||||
|
{
|
||||||
|
return view('components.alert');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -618,11 +618,6 @@ footer .footer-content a {
|
||||||
footer .footer-content a:hover {
|
footer .footer-content a:hover {
|
||||||
color: #fd560f;
|
color: #fd560f;
|
||||||
}
|
}
|
||||||
@media (min-width: 768px) {
|
|
||||||
footer .footer-content .footer-content-left {
|
|
||||||
width: 76%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
footer .footer-content .logo {
|
footer .footer-content .logo {
|
||||||
max-width: 150px;
|
max-width: 150px;
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
|
|
|
||||||
|
|
@ -81,7 +81,7 @@
|
||||||
</div>
|
</div>
|
||||||
</el-collapse-item>
|
</el-collapse-item>
|
||||||
@for ($i = 1; $i <= 3; $i++)
|
@for ($i = 1; $i <= 3; $i++)
|
||||||
<el-collapse-item title="链接栏{{ $i }}" name="top_link{{ $i }}">
|
<el-collapse-item title="链接栏{{ $i }}" name="footer-content-link{{ $i }}">
|
||||||
<div class="module-edit-group">
|
<div class="module-edit-group">
|
||||||
<div class="module-edit-title">配置标题</div>
|
<div class="module-edit-title">配置标题</div>
|
||||||
<text-i18n v-model="form.content.link{{ $i }}.title"></text-i18n>
|
<text-i18n v-model="form.content.link{{ $i }}.title"></text-i18n>
|
||||||
|
|
@ -97,7 +97,7 @@
|
||||||
<el-tooltip class="icon-rank" effect="dark" content="拖动排序" placement="left">
|
<el-tooltip class="icon-rank" effect="dark" content="拖动排序" placement="left">
|
||||||
<i class="el-icon-rank"></i>
|
<i class="el-icon-rank"></i>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
<link-selector :hide-types="['product', 'category']" :show-text="true" v-model="form.content.link{{ $i }}.links[index]"></link-selector>
|
<link-selector :hide-types="['product', 'category', 'brand']" :show-text="true" v-model="form.content.link{{ $i }}.links[index]"></link-selector>
|
||||||
<div class="remove-item" @click="removeLink('link{{ $i }}', index)"><i class="iconfont"></i></div>
|
<div class="remove-item" @click="removeLink('link{{ $i }}', index)"><i class="iconfont"></i></div>
|
||||||
</div>
|
</div>
|
||||||
</draggable>
|
</draggable>
|
||||||
|
|
@ -106,7 +106,7 @@
|
||||||
</el-collapse-item>
|
</el-collapse-item>
|
||||||
@endfor
|
@endfor
|
||||||
|
|
||||||
<el-collapse-item title="联系我们" name="top_contact">
|
<el-collapse-item title="联系我们" name="footer-content-contact">
|
||||||
<div class="module-edit-group">
|
<div class="module-edit-group">
|
||||||
<div class="module-edit-title">联系电话</div>
|
<div class="module-edit-title">联系电话</div>
|
||||||
<el-input placeholder="联系电话" size="small" v-model="form.content.contact.telephone"></el-input>
|
<el-input placeholder="联系电话" size="small" v-model="form.content.contact.telephone"></el-input>
|
||||||
|
|
@ -121,7 +121,7 @@
|
||||||
</div>
|
</div>
|
||||||
</el-collapse-item>
|
</el-collapse-item>
|
||||||
|
|
||||||
<el-collapse-item title="版权/图片" name="bottom_copyright">
|
<el-collapse-item title="版权/图片" name="footer-bottom">
|
||||||
<div class="module-edit-group">
|
<div class="module-edit-group">
|
||||||
<div class="module-edit-title">版权设置</div>
|
<div class="module-edit-title">版权设置</div>
|
||||||
<rich-text-i18n v-model="form.bottom.copyright"></rich-text-i18n>
|
<rich-text-i18n v-model="form.bottom.copyright"></rich-text-i18n>
|
||||||
|
|
|
||||||
|
|
@ -50,12 +50,6 @@ footer {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.footer-content-left {
|
|
||||||
@media (min-width: 768px) {
|
|
||||||
width: 76%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.logo {
|
.logo {
|
||||||
max-width: 150px;
|
max-width: 150px;
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@
|
||||||
{{ method_field('put') }}
|
{{ method_field('put') }}
|
||||||
|
|
||||||
@if (session('success'))
|
@if (session('success'))
|
||||||
@include('shared.form-msg', ['msg' => session('success')])
|
<x-shop-alert type="success" msg="{{ session('success') }}" class="mt-4"/>
|
||||||
@endif
|
@endif
|
||||||
|
|
||||||
<div class="bg-light rounded-3 p-4 mb-4" style="background: #f6f9fc;">
|
<div class="bg-light rounded-3 p-4 mb-4" style="background: #f6f9fc;">
|
||||||
|
|
@ -40,7 +40,8 @@
|
||||||
<div class="ps-3">
|
<div class="ps-3">
|
||||||
<label class="btn btn-light shadow-sm bg-body mb-2" data-toggle="tooltip" title="Change your avatar">
|
<label class="btn btn-light shadow-sm bg-body mb-2" data-toggle="tooltip" title="Change your avatar">
|
||||||
<i class="bi bi-arrow-repeat"></i> 修改头像
|
<i class="bi bi-arrow-repeat"></i> 修改头像
|
||||||
<input type="file" class="d-none" id="update-btn" name="avatar" accept="image/*">
|
<input type="file" class="d-none" id="update-btn" name="" accept="image/*">
|
||||||
|
<input type="hidden" id="avatar-input" name="avatar" value="{{ $customer->avatar }}">
|
||||||
</label>
|
</label>
|
||||||
<div class="p mb-0 fs-ms text-muted">上传JPG或PNG图片。建议300 x 300。</div>
|
<div class="p mb-0 fs-ms text-muted">上传JPG或PNG图片。建议300 x 300。</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -49,16 +50,18 @@
|
||||||
<div class="row gx-4 gy-3">
|
<div class="row gx-4 gy-3">
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<label class="form-label">名称</label>
|
<label class="form-label">名称</label>
|
||||||
<input class="form-control" type="text" name="name" value="{{ $customer->name }}">
|
<input class="form-control {{ $errors->has('name') ? 'is-invalid' : '' }}" type="text" name="name" value="{{ old('name', $customer->name ?? '') }}">
|
||||||
|
@if ($errors->has('name'))
|
||||||
|
<span class="invalid-feedback" role="alert">{{ $errors->first('name') }}</span>
|
||||||
|
@endif
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<label class="form-label">邮箱</label>
|
<label class="form-label">邮箱</label>
|
||||||
<input class="form-control" type="email" name="email" value="{{ $customer->email }}">
|
<input class="form-control {{ $errors->has('email') ? 'is-invalid' : '' }}" type="email" name="email" value="{{ old('name', $customer->email ?? '') }}">
|
||||||
|
@if ($errors->has('email'))
|
||||||
|
<span class="invalid-feedback" role="alert">{{ $errors->first('email') }}</span>
|
||||||
|
@endif
|
||||||
</div>
|
</div>
|
||||||
{{-- <div class="col-sm-6">
|
|
||||||
<label class="form-label">密码</label>
|
|
||||||
<input class="form-control" type="password" placeholder="留空则保持原密码不变" name="password" value="">
|
|
||||||
</div> --}}
|
|
||||||
<div class="col-12 mt-4">
|
<div class="col-12 mt-4">
|
||||||
<button class="btn btn-primary mt-sm-0" type="submit">提交</button>
|
<button class="btn btn-primary mt-sm-0" type="submit">提交</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -148,14 +151,15 @@
|
||||||
height: 200,
|
height: 200,
|
||||||
});
|
});
|
||||||
initialAvatarURL = avatar.src;
|
initialAvatarURL = avatar.src;
|
||||||
avatar.src = canvas.toDataURL();
|
// avatar.src = canvas.toDataURL();
|
||||||
canvas.toBlob(function (blob) {
|
canvas.toBlob(function (blob) {
|
||||||
var formData = new FormData();
|
var formData = new FormData();
|
||||||
|
|
||||||
formData.append('file', blob, 'avatar.png');
|
formData.append('file', blob, 'avatar.png');
|
||||||
formData.append('type', 'avatar');
|
formData.append('type', 'avatar');
|
||||||
$http.post('{{ shop_route('file.store') }}', formData).then(res => {
|
$http.post('{{ shop_route('file.store') }}', formData).then(res => {
|
||||||
console.log(res);
|
$('#avatar').attr('src', res.data.url);
|
||||||
|
$('#avatar-input').val(res.data.value)
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
<div class="alert alert-success alert-dismissible">
|
||||||
|
<i class="bi bi-check-circle-fill"></i>
|
||||||
|
{{ $msg }}
|
||||||
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
||||||
|
</div>
|
||||||
|
|
@ -22,44 +22,41 @@
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="footer-content">
|
<div class="footer-content">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-12 col-md-4">
|
<div class="col-12 col-md-3">
|
||||||
<div class="footer-content-left">
|
<div class="footer-content-left">
|
||||||
<div class="logo"><a href="http://"><img
|
<div class="logo"><a href="http://"><img
|
||||||
src="{{ image_origin($footer_content['content']['intro']['logo']) }}" class="img-fluid"></a></div>
|
src="{{ image_origin($footer_content['content']['intro']['logo']) }}" class="img-fluid"></a></div>
|
||||||
<div class="text">{!! $footer_content['content']['intro']['text'][$locale] ?? '' !!}</div>
|
<div class="text">{!! $footer_content['content']['intro']['text'][$locale] ?? '' !!}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-lg-8">
|
|
||||||
<div class="row">
|
@for ($i = 1; $i <= 3; $i++)
|
||||||
@for ($i = 1; $i <= 3; $i++)
|
@php
|
||||||
@php
|
$link = $footer_content['content']['link' . $i];
|
||||||
$link = $footer_content['content']['link' . $i];
|
@endphp
|
||||||
@endphp
|
<div class="col-6 col-sm footer-content-link{{ $i }}">
|
||||||
<div class="col-6 col-sm">
|
<h6 class="text-uppercase text-dark mb-3">{{ $link['title'][$locale] }}</h6>
|
||||||
<h6 class="text-uppercase text-dark mb-3">{{ $link['title'][$locale] }}</h6>
|
<ul class="list-unstyled">
|
||||||
<ul class="list-unstyled">
|
@foreach ($link['links'] as $item)
|
||||||
@foreach ($link['links'] as $item)
|
<li><a href="{{ type_route($item['type'], $item['value']) }}"
|
||||||
<li><a href="{{ type_route($item['type'], $item['value']) }}"
|
@if (isset($item['new_window']) && $item['new_window']) target="_blank" @endif>{{ $item['text'][$locale] }}</a></li>
|
||||||
@if (isset($item['new_window']) && $item['new_window']) target="_blank" @endif>{{ $item['text'][$locale] }}</a></li>
|
@endforeach
|
||||||
@endforeach
|
</ul>
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
@endfor
|
|
||||||
<div class="col-6 col-sm">
|
|
||||||
<h6 class="text-uppercase text-dark mb-3">联系我们</h6>
|
|
||||||
<ul class="list-unstyled">
|
|
||||||
@if ($footer_content['content']['contact']['email'])
|
|
||||||
<li>{{ $footer_content['content']['contact']['email'] }}</li>
|
|
||||||
@endif
|
|
||||||
@if ($footer_content['content']['contact']['telephone'])
|
|
||||||
<li>{{ $footer_content['content']['contact']['telephone'] }}</li>
|
|
||||||
@endif
|
|
||||||
@if ($footer_content['content']['contact']['address'])
|
|
||||||
<li>{{ $footer_content['content']['contact']['address'] }}</li>
|
|
||||||
@endif
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
@endfor
|
||||||
|
<div class="col-12 col-md-3 footer-content-contact">
|
||||||
|
<h6 class="text-uppercase text-dark mb-3">联系我们</h6>
|
||||||
|
<ul class="list-unstyled">
|
||||||
|
@if ($footer_content['content']['contact']['email'])
|
||||||
|
<li><i class="bi bi-envelope-fill"></i> {{ $footer_content['content']['contact']['email'] }}</li>
|
||||||
|
@endif
|
||||||
|
@if ($footer_content['content']['contact']['telephone'])
|
||||||
|
<li><i class="bi bi-telephone-fill"></i> {{ $footer_content['content']['contact']['telephone'] }}</li>
|
||||||
|
@endif
|
||||||
|
@if ($footer_content['content']['contact']['address'])
|
||||||
|
<li><i class="bi bi-geo-alt-fill"></i> {{ $footer_content['content']['contact']['address'] }}</li>
|
||||||
|
@endif
|
||||||
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue