添加一些图片配置等

This commit is contained in:
pushuo 2022-08-12 11:37:45 +08:00
parent c76a81cdda
commit 060f10e5ac
23 changed files with 197 additions and 106 deletions

View File

@ -35,6 +35,10 @@ class CustomerController extends Controller
'customer_groups' => CustomerGroupDetail::collection(CustomerGroupRepo::list())->jsonSerialize(),
];
if ($request->expectsJson()) {
return json_success('成功', $data);
}
return view('admin::pages.customers.index', $data);
}

View File

@ -7,13 +7,13 @@ use Illuminate\View\Component;
class Image extends Component
{
public string $name;
public string $image;
public string $title;
public string $value;
public function __construct(string $name, ?string $image, ?string $value)
public function __construct(string $name, ?string $title, ?string $value)
{
$this->name = $name;
$this->image = $image ?? '';
$this->title = $title ?? '';
$this->value = $value ?? '';
}

View File

@ -2075,7 +2075,19 @@ var base = document.querySelector('base').href;
var asset = document.querySelector('meta[name="asset"]').content;
var editor_language = ((_document$querySelect = document.querySelector('meta[name="editor_language"]')) === null || _document$querySelect === void 0 ? void 0 : _document$querySelect.content) || 'zh_cn';
$(document).on('click', '.open-file-manager', function (event) {
bk.fileManagerIframe();
var _this = this;
bk.fileManagerIframe(function (images) {
if (!$(_this).find('img').length) {
$(_this).append('<img src="' + images[0].url + '" class="img-fluid">');
$(_this).find('i').remove();
} else {
$(_this).find('img').prop('src', images[0].url);
}
$(_this).next('input').val(images[0].path);
$(_this).next('input')[0].dispatchEvent(new Event('input'));
});
});
if (typeof Vue != 'undefined') {
@ -2117,7 +2129,7 @@ var tinymceInit = function tinymceInit() {
height: 400,
plugins: "link lists fullscreen table hr wordcount image imagetools code",
menubar: "",
toolbar: "undo redo | toolbarImageButton | bold italic underline strikethrough | forecolor backcolor | fontselect fontsizeselect formatselect | alignleft aligncenter alignright alignjustify | outdent indent | numlist bullist | formatpainter removeformat | charmap emoticons | preview | template link anchor table toolbarImageUrlButton | fullscreen code",
toolbar: "undo redo | toolbarImageButton | lineheight | bold italic underline strikethrough | forecolor backcolor | fontselect fontsizeselect formatselect | alignleft aligncenter alignright alignjustify | outdent indent | numlist bullist | formatpainter removeformat | charmap emoticons | preview | template link anchor table toolbarImageUrlButton | fullscreen code",
// contextmenu: "link image imagetools table",
toolbar_items_size: 'small',
image_caption: true,
@ -2166,7 +2178,6 @@ __webpack_require__.r(__webpack_exports__);
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
fileManagerIframe: function fileManagerIframe(callback) {
var base = document.querySelector('base').href;
var $this = $(this);
layer.open({
type: 2,
title: '图片管理器',
@ -2180,10 +2191,7 @@ __webpack_require__.r(__webpack_exports__);
var iframeWindow = window[layerInstance.find("iframe")[0]["name"]];
iframeWindow.callback = function (images) {
if (callback && typeof callback === "function") return callback(images);
$this.find('img').prop('src', images[0].url);
$this.next('input').val(images[0].path);
$this.next('input')[0].dispatchEvent(new Event('input'));
callback(images);
};
}
});

View File

@ -365,6 +365,10 @@ body[class^=page-account-] {
background: #FD560F;
}
.tinymce-format-p p {
margin-bottom: 0.5rem;
}
.steps-wrap {
display: flex;
justify-content: space-around;
@ -525,8 +529,8 @@ header .header-content .menu-wrap .nav-link {
padding-right: 1rem;
}
header .header-content .logo img {
max-width: 140px;
max-height: 30px;
max-width: 180px;
max-height: 50px;
}
header .header-content .right-btn .nav-link {
color: #333;
@ -634,13 +638,7 @@ footer .footer-content .text {
color: #666666;
}
footer .footer-content h6 {
font-weight: bold;
}
footer .footer-content .list-unstyled {
margin-bottom: 0;
}
footer .footer-content .list-unstyled li {
line-height: 26px;
font-size: 14px;
}
footer .footer-bottom {
height: 60px;

BIN
public/catalog/favicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -9,7 +9,16 @@ const asset = document.querySelector('meta[name="asset"]').content;
const editor_language = document.querySelector('meta[name="editor_language"]')?.content || 'zh_cn';
$(document).on('click', '.open-file-manager', function(event) {
bk.fileManagerIframe();
bk.fileManagerIframe(images => {
if (!$(this).find('img').length) {
$(this).append('<img src="' + images[0].url + '" class="img-fluid">');
$(this).find('i').remove()
} else {
$(this).find('img').prop('src', images[0].url);
}
$(this).next('input').val(images[0].path)
$(this).next('input')[0].dispatchEvent(new Event('input'));
});
});
if (typeof Vue != 'undefined') {
@ -50,7 +59,7 @@ const tinymceInit = () => {
height: 400,
plugins: "link lists fullscreen table hr wordcount image imagetools code",
menubar: "",
toolbar: "undo redo | toolbarImageButton | bold italic underline strikethrough | forecolor backcolor | fontselect fontsizeselect formatselect | alignleft aligncenter alignright alignjustify | outdent indent | numlist bullist | formatpainter removeformat | charmap emoticons | preview | template link anchor table toolbarImageUrlButton | fullscreen code",
toolbar: "undo redo | toolbarImageButton | lineheight | bold italic underline strikethrough | forecolor backcolor | fontselect fontsizeselect formatselect | alignleft aligncenter alignright alignjustify | outdent indent | numlist bullist | formatpainter removeformat | charmap emoticons | preview | template link anchor table toolbarImageUrlButton | fullscreen code",
// contextmenu: "link image imagetools table",
toolbar_items_size: 'small',
image_caption: true,

View File

@ -1,7 +1,6 @@
export default {
fileManagerIframe(callback) {
const base = document.querySelector('base').href;
const $this = $(this);
layer.open({
type: 2,
@ -15,11 +14,7 @@ export default {
success: function(layerInstance, index) {
var iframeWindow = window[layerInstance.find("iframe")[0]["name"]];
iframeWindow.callback = function(images) {
if (callback && typeof(callback) === "function") return callback(images);
$this.find('img').prop('src', images[0].url);
$this.next('input').val(images[0].path)
$this.next('input')[0].dispatchEvent(new Event('input'));
callback(images);
}
}
});

View File

@ -1,12 +1,11 @@
@if (0)
<div class="open-file-manager">
<div>
@if ($image)
<img src="{{ image_resize($image) }}" class="img-fluid">
<x-admin::form.row :title="$title">
<div class="open-file-manager bg-light wh-80 border d-flex justify-content-center align-items-center me-2 mb-2 position-relative">
@if ($value)
<img src="{{ image_resize($value) }}" class="img-fluid">
@else
<i class="bi bi-plus fs-1 text-muted"></i>
<i class="bi bi-plus fs-1 text-muted"></i>
@endif
</div>
</div>
<input type="hidden" value="{{ $value }}" name="{{ $name }}">
@endif
<input type="hidden" value="{{ $value }}" name="{{ $name }}">
{{ $slot }}
</x-admin::form.row>

View File

@ -1,12 +1,12 @@
@extends('admin::layouts.master')
@section('title', '客管理')
@section('title', '管理')
@section('content')
<div id="customer-app" class="card" v-cloak>
<div class="card-body">
<div class="d-flex justify-content-between mb-4">
<button type="button" class="btn btn-primary" @click="checkedCustomersCreate">创建</button>
<button type="button" class="btn btn-primary" @click="checkedCustomersCreate">创建</button>
</div>
<table class="table">
<thead>
@ -42,10 +42,11 @@
</tbody>
</table>
{{-- {{ $customers->links('admin::vendor/pagination/bootstrap-4') }} --}}
<el-pagination layout="prev, pager, next" background :page-size="customers.per_page" :current-page.sync="page"
:total="customers.total"></el-pagination>
</div>
<el-dialog title="创建" :visible.sync="dialogCustomers.show" width="600px"
<el-dialog title="创建" :visible.sync="dialogCustomers.show" width="600px"
@close="closeCustomersDialog('form')" :close-on-click-modal="false">
<el-form ref="form" :rules="rules" :model="dialogCustomers.form" label-width="100px">
<el-form-item label="用户名" prop="name">
@ -82,6 +83,7 @@
el: '#customer-app',
data: {
page: 1,
customers: @json($customers ?? []),
source: {
@ -110,11 +112,22 @@
}
},
beforeMount() {
watch: {
page: function() {
this.loadData();
},
},
// mounted: function() {
// },
methods: {
loadData() {
$http.get(`customers?page=${this.page}`).then((res) => {
this.customers = res.data.customers;
})
},
checkedCustomersCreate() {
this.dialogCustomers.show = true
},

View File

@ -139,6 +139,10 @@
],
static: [
{name: '个人中心', value: 'account.index'},
{name: '收藏列表', value: 'account.wishlist.index'},
{name: '历史订单', value: 'account.order.index'},
// {name: '最新商品', value: 'account.index'},
{name: '品牌列表', value: 'brands.index'},
],
link: null,
keyword: '',

View File

@ -97,7 +97,7 @@ Vue.component('rich-text-i18n', {
height: 300,
plugins: "link lists fullscreen table hr wordcount image imagetools code",
menubar: "",
toolbar: "undo redo | toolbarImageButton | bold italic underline strikethrough | forecolor backcolor | fontselect fontsizeselect | alignleft aligncenter alignright alignjustify | outdent indent | numlist bullist | formatpainter removeformat | charmap emoticons | preview | template link anchor | code",
toolbar: "undo redo | toolbarImageButton | lineheight | bold italic underline strikethrough | forecolor backcolor | fontselect fontsizeselect | alignleft aligncenter alignright alignjustify | outdent indent | numlist bullist | formatpainter removeformat | charmap emoticons | preview | template link anchor | code",
toolbar_items_size: 'small',
image_caption: true,
toolbar_mode: 'wrap',

View File

@ -186,13 +186,13 @@
watch: {},
// 组件方法
methods: {
moduleUpdated(module) {
moduleUpdated: bk.debounce(function() {
const data = this.form.modules[this.design.editingModuleIndex]
$http.post('design/builder/preview?design=1', data, {hload: true}).then((res) => {
$(previewWindow.document).find('#module-' + data.module_id).replaceWith(res);
})
},
}, 300),
addModuleButtonClicked(code) {
const sourceModule = this.source.modules.find(e => e.code == code)

View File

@ -5,53 +5,83 @@
@section('content')
<div id="plugins-app-form" class="card h-min-600">
<div class="card-body">
<h6 class="border-bottom pb-3 mb-4">基础设置</h6>
<form action="{{ admin_route('settings.store') }}" method="POST" id="app">
@csrf
<x-admin::form.row title="默认地址">
<div class="d-flex">
<div>
<select class="form-select wp-200 me-3" name="country_id" aria-label="Default select example">
@foreach ($countries as $country)
<option
value="{{ $country->id }}"
{{ $country->id == system_setting('base.country_id', '1') ? 'selected': '' }}>
{{ $country->name }}
</option>
@endforeach
</select>
<div class="help-text font-size-12 lh-base">默认国家设置</div>
</div>
<div>
<select class="form-select wp-200 zones-select" name="zone_id" aria-label="Default select example"></select>
<div class="help-text font-size-12 lh-base">默认省份设置</div>
</div>
@if (session('success'))
<x-admin-alert type="success" msg="{{ session('success') }}" class="mt-4"/>
@endif
<ul class="nav nav-tabs nav-bordered mb-5" role="tablist">
<li class="nav-item" role="presentation">
<a class="nav-link active" data-bs-toggle="tab" href="#tab-general">基础设置</a>
</li>
<li class="nav-item" role="presentation">
<a class="nav-link" data-bs-toggle="tab" href="#tab-image">图片设置</a>
</li>
</ul>
<div class="tab-content" id="myTabContent">
<div class="tab-pane fade show active" id="tab-general">
<x-admin::form.row title="默认地址">
<div class="d-flex">
<div>
<select class="form-select wp-200 me-3" name="country_id" aria-label="Default select example">
@foreach ($countries as $country)
<option
value="{{ $country->id }}"
{{ $country->id == system_setting('base.country_id', '1') ? 'selected': '' }}>
{{ $country->name }}
</option>
@endforeach
</select>
<div class="help-text font-size-12 lh-base">默认国家设置</div>
</div>
<div>
<select class="form-select wp-200 zones-select" name="zone_id" aria-label="Default select example"></select>
<div class="help-text font-size-12 lh-base">默认省份设置</div>
</div>
</div>
</x-admin::form.row>
<x-admin-form-select title="默认语言" name="locale" :value="old('locale', system_setting('base.locale', 'zh_cn'))" :options="$admin_languages" key="code" label="name">
<div class="help-text font-size-12 lh-base">默认语言设置</div>
</x-admin-form-select>
<x-admin-form-select title="默认货币" name="currency" :value="old('currency', system_setting('base.currency', 'USD'))" :options="$currencies->toArray()" key="code" label="name">
<div class="help-text font-size-12 lh-base">默认货币设置</div>
</x-admin-form-select>
<x-admin-form-input name="admin_name" title="后台目录" required value="{{ old('admin_name', system_setting('base.admin_name', 'admin')) }}">
<div class="help-text font-size-12 lh-base">管理后台目录,默认为admin</div>
</x-admin-form-input>
<x-admin-form-select title="模版主题" name="theme" :value="old('theme', system_setting('base.theme', 'default'))" :options="$themes">
<div class="help-text font-size-12 lh-base">主题模板选择</div>
</x-admin-form-select>
<x-admin-form-switch name="tax" title="启用税费" value="{{ old('tax', system_setting('base.tax', '0')) }}">
<div class="help-text font-size-12 lh-base">是否启用税费计算</div>
</x-admin-form-switch>
<x-admin-form-select title="税费地址" name="tax_address" :value="old('tax_address', system_setting('base.address', 'shipping'))" :options="$tax_address">
<div class="help-text font-size-12 lh-base">按什么地址计算税费</div>
</x-admin-form-select>
</div>
</x-admin::form.row>
<div class="tab-pane fade" id="tab-image">
<x-admin-form-image name="logo" title="网站 Logo" :value="old('logo', system_setting('base.logo', ''))">
<div class="help-text font-size-12 lh-base">网站前台显示 380*100</div>
</x-admin-form-image>
<x-admin-form-select title="默认语言" name="locale" :value="old('locale', system_setting('base.locale', 'zh_cn'))" :options="$admin_languages" key="code" label="name">
<div class="help-text font-size-12 lh-base">默认语言设置</div>
</x-admin-form-select>
<x-admin-form-select title="默认货币" name="currency" :value="old('currency', system_setting('base.currency', 'USD'))" :options="$currencies->toArray()" key="code" label="name">
<div class="help-text font-size-12 lh-base">默认货币设置</div>
</x-admin-form-select>
<x-admin-form-image name="favicon" title="favicon" :value="old('web_icon', system_setting('base.web_icon', ''))">
<div class="help-text font-size-12 lh-base">显示在浏览器选项卡上的小图标必须为PNG格式大小为32*32</div>
</x-admin-form-image>
<x-admin-form-input name="admin_name" title="后台目录" required value="{{ old('admin_name', system_setting('base.admin_name', 'admin')) }}">
<div class="help-text font-size-12 lh-base">管理后台目录,默认为admin</div>
</x-admin-form-input>
<x-admin-form-image name="placeholder" title="网站 Logo" :value="old('placeholder', system_setting('base.placeholder', ''))">
<div class="help-text font-size-12 lh-base">无图片或图片未找到时显示的占位图建议尺寸500*500</div>
</x-admin-form-image>
</div>
</div>
<x-admin-form-select title="模版主题" name="theme" :value="old('theme', system_setting('base.theme', 'default'))" :options="$themes">
<div class="help-text font-size-12 lh-base">主题模板选择</div>
</x-admin-form-select>
<x-admin-form-switch name="tax" title="启用税费" value="{{ old('tax', system_setting('base.tax', '0')) }}">
<div class="help-text font-size-12 lh-base">是否启用税费计算</div>
</x-admin-form-switch>
<x-admin-form-select title="税费地址" name="tax_address" :value="old('tax_address', system_setting('base.address', 'shipping'))" :options="$tax_address">
<div class="help-text font-size-12 lh-base">按什么地址计算税费</div>
</x-admin-form-select>
<x-admin::form.row title="">
<button type="submit" class="btn btn-primary mt-4">提交</button>

View File

@ -60,14 +60,7 @@ footer {
}
h6 {
font-weight: bold;
}
.list-unstyled {
margin-bottom: 0;
li {
line-height: 26px;
}
font-size: 14px;
}
}

View File

@ -97,6 +97,12 @@ body[class^="page-account-"] {
}
}
.tinymce-format-p {
p {
margin-bottom: 0.5rem;
}
}
.steps-wrap {
display: flex;
justify-content: space-around;

View File

@ -56,8 +56,8 @@ header {
.logo {
img {
max-width: 140px;
max-height: 30px;
max-width: 180px;
max-height: 50px;
}
}

View File

@ -13,4 +13,12 @@ return [
'login' => 'Login',
'new_account' => 'New Account',
'index' => 'Account',
'wishlist' => [
'index' => 'Wishlist',
],
'order' => [
'index' => 'Order List',
]
];

View File

@ -10,7 +10,14 @@
*/
return [
'login' => 'Login',
'new_account' => 'New Account',
'index' => '个人中心',
'login' => '登录',
'wishlist' => [
'index' => '收藏列表',
],
'order' => [
'index' => '订单列表',
]
];

View File

@ -0,0 +1,14 @@
<?php
/**
* account.php
*
* @copyright 2022 opencart.cn - All Rights Reserved
* @link http://www.guangdawangluo.com
* @author Edward Yang <yangjin@opencart.cn>
* @created 2022-08-04 10:59:15
* @modified 2022-08-04 10:59:15
*/
return [
'index' => '品牌列表',
];

View File

@ -26,7 +26,7 @@
<div class="footer-content-left">
<div class="logo"><a href="http://"><img
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 tinymce-format-p">{!! $footer_content['content']['intro']['text'][$locale] ?? '' !!}</div>
</div>
</div>
@ -38,11 +38,13 @@
<h6 class="text-uppercase text-dark mb-3">{{ $link['title'][$locale] }}</h6>
<ul class="list-unstyled">
@foreach ($link['links'] as $item)
<li>
@if ($item['link'])
<li class="lh-lg mb-2">
<a href="{{ $item['link'] }}" @if (isset($item['new_window']) && $item['new_window']) target="_blank" @endif>
{{ $item['type'] == 'custom' ? $item['text'][$locale] ?? '' : $item['text'] }}
</a>
</li>
@endif
@endforeach
</ul>
</div>
@ -51,13 +53,13 @@
<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>
<li class="lh-lg mb-2"><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>
<li class="lh-lg mb-2"><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>
<li class="lh-lg mb-2"><i class="bi bi-geo-alt-fill"></i> {{ $footer_content['content']['contact']['address'] }}</li>
@endif
</ul>
</div>

View File

@ -44,8 +44,9 @@
<div class="header-content py-3">
<div class="container navbar-expand-lg">
<div class="logo"><a href="{{ shop_route('home.index') }}"><img src="{{ asset('image/logo.png') }}"
class="img-fluid"></a></div>
<div class="logo"><a href="{{ shop_route('home.index') }}">
<img src="{{ image_origin(system_setting('base.logo')) }}" class="img-fluid"></a>
</div>
<div class="menu-wrap">
<ul class="navbar-nav mx-auto">
@foreach ($categories as $category)

View File

@ -12,7 +12,7 @@
<link rel="stylesheet" type="text/css" href="{{ asset('/build/beike/shop/default/css/bootstrap.css') }}">
<script src="{{ asset('vendor/jquery/jquery-3.6.0.min.js') }}"></script>
<script src="{{ asset('vendor/layer/3.5.1/layer.js') }}"></script>
{{-- <script src="{{ asset('vendor/bootstrap/5.1.3/js/bootstrap.bundle.min.js') }}"></script> --}}
<link rel="shortcut icon" href="{{ image_origin(system_setting('base.favicon')) }}">
<script src="{{ asset('vendor/bootstrap/5.1.3/js/bootstrap.min.js') }}"></script>
<script src="{{ asset('/build/beike/shop/default/js/app.js') }}"></script>
<link rel="stylesheet" type="text/css" href="{{ asset('/build/beike/shop/default/css/app.css') }}">

View File

@ -1,6 +1,6 @@
@extends('layout.master')
@section('body-class', 'page-pages')
@section('title', $page['title'])
@section('title', $page['meta_title'] ?: $page['title'])
@section('keywords', $page['meta_keyword'])
@section('description', $page['meta_description'])