Compare commits

...

6 Commits

Author SHA1 Message Date
liqianjin c86d9a8087 v1 修改完成 2023-05-30 14:19:00 +08:00
liqianjin 1b9973bf07 v1 修改完成 2023-05-30 13:36:15 +08:00
liqianjin ca750f0354 v1 修改完成 2023-05-30 12:09:00 +08:00
liqianjin ee5c8757f2 v1 修改完成 2023-05-30 12:07:10 +08:00
liqianjin d9cc12396d v1 修改完成 2023-05-30 12:05:39 +08:00
liqianjin 66d08c1654 v1 修改完成 2023-05-30 11:56:47 +08:00
26 changed files with 269 additions and 46411 deletions

2
.env
View File

@ -1,7 +1,7 @@
APP_NAME='wyyl'
APP_ENV=
APP_KEY=base64:PItUypiY6FmV8oQTVIcIHyNQJAuuS36FmEs8exQbYAw=
APP_DEBUG=true
APP_DEBUG=false
APP_LOG_LEVEL=
APP_URL=http://43.153.17.83

3
.gitignore vendored
View File

@ -1,3 +1,6 @@
/node_modules/
/vendor/
.idea
/public/build/beike/*
/public/install/css/*
mix-manifest.json

View File

@ -25,7 +25,9 @@ class InquiryRepo
public static function getList(): LengthAwarePaginator
{
$builder = Inquiry::query()->with([
'productsku',
'productsku', 'productsku.product','productsku.product' => function ($query) {
$query->with(['description']);
},
])->orderByDesc('updated_at');
return $builder->paginate(perPage());

View File

@ -79,6 +79,7 @@ class Header extends Component
['name' => trans('admin/common.customer'), 'route' => 'customers.index', 'code' => 'Customer'],
['name' => trans('admin/common.page'), 'route' => 'pages.index', 'code' => 'Page'],
['name' => trans('admin/common.setting'), 'route' => 'settings.index', 'code' => 'Setting'],
['name' => trans('admin/common.inquiry'), 'route' => 'inquiry.index', 'code' => 'Inquiry'],
];
return hook_filter('admin.header_menus', $menus);

View File

@ -69,6 +69,11 @@ class Sidebar extends Component
foreach ($routes as $route) {
$this->addLink($route, $this->equalRoute($route['route']), (bool) ($route['blank'] ?? false), $route['hide_mobile'] ?? 0);
}
} elseif (Str::startsWith($routeName, $this->getInquirySubPrefix())) {
$routes = $this->getInquirySubRoutes();
foreach ($routes as $route) {
$this->addLink($route, $this->equalRoute($route['route']), (bool) ($route['blank'] ?? false), $route['hide_mobile'] ?? 0);
}
}
return view('admin::components.sidebar');
@ -157,6 +162,16 @@ class Sidebar extends Component
return hook_filter('admin.sidebar.page.prefix', $prefix);
}
/**
* 获取后台寻盘子页面路由前缀列表
*/
private function getInquirySubPrefix()
{
$prefix = ['inquiry.'];
return hook_filter('admin.sidebar.page.prefix', $prefix);
}
/**
* 获取后台系统设置子页面路由前缀列表
*/
@ -243,6 +258,19 @@ class Sidebar extends Component
return hook_filter('admin.sidebar.pages_routes', $routes);
}
/**
* 获取寻盘管理子页面路由
* @return mixed
*/
public function getInquirySubRoutes()
{
$routes = [
['route' => 'inquiry.index', 'icon' => 'fa fa-tachometer-alt'],
];
return hook_filter('admin.sidebar.pages_routes', $routes);
}
/**
* 获取系统设置子页面路由
* @return mixed

View File

@ -24,7 +24,8 @@ class InquiryDetail extends JsonResource
public function toArray($request): array
{
$productsku = $this->productsku;
$product = $productsku->product;
$description = $product->description;
return [
'id' => $this->id,
'product_sku_id' => $this->product_sku_id,
@ -32,6 +33,15 @@ class InquiryDetail extends JsonResource
'email' => $this->email,
'content' => $this->content,
'product_sku_sku' => $productsku->sku,
'product_name' => $description->name ?? '',
'product_images' => array_map(function ($image) {
return [
'preview' => image_resize($image, 500, 500),
'popup' => image_resize($image, 800, 800),
'thumb' => image_resize($image, 150, 150),
];
}, $product->images ?? []),
'product_id' => $productsku->product_id,
'created_at' => time_format($this->created_at),
'updated_at' => time_format($this->updated_at),
];

View File

@ -52,8 +52,8 @@ class ProductDetail extends JsonResource
'skus' => SkuDetail::collection($this->skus)->jsonSerialize(),
'in_wishlist' => $this->inCurrentWishlist->id ?? 0,
'active' => (bool) $this->active,
'price_setting' => $this->price_setting ?? '',
'numPrices' => numPricesDetail::collection($this->numprices)->jsonSerialize() ?? '',
'price_setting' => $this->price_setting ?? '',
'numPrices' => NumPricesDetail::collection($this->numprices)->jsonSerialize() ?? '',
];
}

View File

@ -49,6 +49,8 @@ class ProductSimple extends JsonResource
'origin_price_format' => currency_format($masterSku->origin_price),
'category_id' => $this->category_id ?? null,
'in_wishlist' => $this->inCurrentWishlist->id ?? 0,
'price_setting' => $this->price_setting ?? '',
'numprices' => NumPricesDetail::collection($this->numprices)->jsonSerialize() ?? '',
'images' => array_map(function ($item) {
return image_resize($item, 400, 400);

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,649 +0,0 @@
@charset "UTF-8";
/**
* @copyright 2022 beikeshop.com - All Rights Reserved.
* @link https://beikeshop.com
* @Author pu shuo <pushuo@guangda.work>
* @Date 2022-08-09 10:53:07
* @LastEditTime 2022-09-16 19:07:03
*/
@font-face {
font-family: "iconfont";
src: url("/fonts/design/iconfont.woff") format("woff"), url("/fonts/design/iconfont.ttf") format("truetype"); /* chrome、firefox、opera、Safari, Android, iOS 4.2+*/
}
body.page-design {
background-color: #fff;
padding: 0;
margin: 0;
font-size: 14px;
height: 100vh;
overflow: hidden;
}
body.page-design .iconfont {
font-family: "iconfont" !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-webkit-text-stroke-width: 0;
-moz-osx-font-smoothing: grayscale;
}
body.page-design [class*=" el-icon-"], body.page-design [class^=el-icon-] {
font-weight: 600;
}
body.page-design .el-tabs__header {
margin-bottom: 0;
}
body.page-design .tag {
margin: 8px 0;
color: #777;
font-size: 12px;
}
body.page-design .icon-rank {
cursor: move;
}
body.page-design .design-box {
display: flex;
height: 100vh;
}
body.page-design .design-box .design-head {
display: flex;
align-items: center;
justify-content: space-between;
}
body.page-design .design-box .design-head > div {
flex: 1;
height: 40px;
color: #fff;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
background-color: #0072ff;
text-align: center;
font-size: 0.8rem;
transition: all 0.2s ease-in-out;
border-right: 1px solid #5692ff;
}
body.page-design .design-box .design-head > div:last-of-type {
border-right: none;
}
body.page-design .design-box .design-head > div i {
margin-right: 7px;
}
body.page-design .design-box .design-head > div:hover {
background-color: #005bcc;
}
body.page-design .design-box .sidebar-edit-wrap {
width: 300px;
background-color: #fff;
border-right: 1px solid #eee;
}
body.page-design .design-box .sidebar-edit-wrap .module-edit {
padding: 0 10px 14px;
overflow-y: auto;
height: 100%;
}
body.page-design .design-box .sidebar-edit-wrap .module-edit .module-editor-row {
height: 47px;
line-height: 47px;
background-color: #f5f5f5;
padding: 0 20px;
margin: 0 -14px 14px;
font-size: 16px;
color: #212121;
}
body.page-design .design-box .sidebar-edit-wrap .module-edit .module-edit-group {
margin-bottom: 20px;
}
body.page-design .design-box .sidebar-edit-wrap .module-edit .module-edit-group:last-of-type {
border-bottom: none;
}
body.page-design .design-box .sidebar-edit-wrap .module-edit .module-edit-group .module-edit-title {
margin-bottom: 10px;
position: relative;
padding-left: 6px;
display: flex;
justify-content: space-between;
}
body.page-design .design-box .sidebar-edit-wrap .module-edit .module-edit-group .module-edit-title:before {
content: "";
position: absolute;
left: 0;
top: 3px;
width: 2px;
height: 14px;
background: #0072ff;
}
body.page-design .design-box .sidebar-edit-wrap .modules-list {
background: #e6e9ec;
height: 100%;
overflow-y: auto;
padding: 0 3px 30px;
}
body.page-design .design-box .sidebar-edit-wrap .module-list {
text-align: center;
padding: 4px;
cursor: pointer;
}
body.page-design .design-box .sidebar-edit-wrap .module-list .module-info {
background: #fff;
color: #556068;
transition: all 0.25s ease-in-out;
}
body.page-design .design-box .sidebar-edit-wrap .module-list .module-info:hover {
color: #0072ff;
box-shadow: 0 6px 23px rgba(0, 0, 0, 0.2);
}
body.page-design .design-box .sidebar-edit-wrap .module-list .icon {
padding: 12px 0 7px;
height: 36px;
display: flex;
justify-content: center;
align-items: center;
}
body.page-design .design-box .sidebar-edit-wrap .module-list .icon .img-icon {
width: 36px;
height: 36px;
}
body.page-design .design-box .sidebar-edit-wrap .module-list .icon .img-icon img {
max-width: 100%;
max-height: auto;
}
body.page-design .design-box .sidebar-edit-wrap .module-list .icon i {
font-size: 26px;
}
body.page-design .design-box .sidebar-edit-wrap .module-list .name {
font-size: 12px;
height: 27px;
overflow: hidden;
}
body.page-design .design-box .preview-iframe {
flex: 1;
}
body.page-design .pb-images-selector {
border: 1px solid #eee;
margin-bottom: 10px;
border-radius: 2px;
}
body.page-design .pb-images-selector:hover {
border-color: #ddd;
}
body.page-design .pb-images-selector:hover .selector-head {
background: #eee;
}
body.page-design .pb-images-selector .pb-images-selector-add {
width: 100%;
margin-top: 16px;
padding: 10px 20px;
}
body.page-design .pb-images-selector .selector-head {
display: flex;
align-items: center;
background-color: #f5f5f5;
padding: 4px 10px;
cursor: pointer;
justify-content: space-between;
}
body.page-design .pb-images-selector .selector-head > div.left {
display: flex;
align-items: center;
}
body.page-design .pb-images-selector .selector-head > div.left i {
margin-right: 10px;
}
body.page-design .pb-images-selector .selector-head > div.left img {
width: 24px;
}
body.page-design .pb-images-selector .selector-head > div.right {
display: flex;
align-items: center;
}
body.page-design .pb-images-selector .selector-head > div.right i {
color: #999;
font-size: 20px;
}
body.page-design .pb-images-selector .selector-head > div.right .remove-item {
margin-right: 8px;
padding-right: 8px;
position: relative;
}
body.page-design .pb-images-selector .selector-head > div.right .remove-item:after {
content: "";
border-right: 1px solid #ccc;
position: absolute;
right: 1px;
top: 20%;
height: 60%;
}
body.page-design .pb-images-selector .selector-head > div.right .remove-item i {
font-size: 15px;
}
body.page-design .pb-images-selector .pb-images-list {
padding: 7px;
padding-bottom: 8px;
position: relative;
display: none;
}
body.page-design .pb-images-selector .pb-images-list.active {
display: block;
}
body.page-design .pb-images-selector .pb-images-list .remove-item {
margin-top: 20px;
background: #ffc8c8;
color: #c70000;
z-index: 9;
height: 20px;
line-height: 20px;
padding: 5px 10px;
text-align: center;
cursor: pointer;
}
body.page-design .pb-images-selector .pb-images-list .remove-item i {
font-size: 14px;
}
body.page-design .pb-images-selector .pb-images-list .pb-image-selector {
cursor: pointer;
min-width: 50px;
min-height: 50px;
}
body.page-design .pb-images-selector .pb-images-list .pb-images-btns button {
margin-left: 0 !important;
padding: 9px 10px;
}
body.page-design .pb-images-selector .pb-images-list .el-input-group__prepend {
padding: 0 10px;
}
body.page-design .module-editor-tab-product-template .tab-info {
margin-top: 10px;
padding: 10px;
background: #f2f2f2;
border-radius: 6px;
}
body.page-design .module-editor-tab-product-template .manufacturer-list > div {
margin-bottom: 10px;
border: 1px solid #f4f4f4;
padding: 5px;
border-radius: 6px;
background: #f4f4f4;
padding-bottom: 8px;
position: relative;
}
body.page-design .module-editor-tab-product-template .manufacturer-list > div:hover .remove-btn {
display: block;
}
body.page-design .module-editor-tab-product-template .manufacturer-list > div .remove-btn {
position: absolute;
display: none;
top: 0;
right: 0;
background: red;
color: #fff;
z-index: 9;
padding: 0 2px;
cursor: pointer;
border-radius: 0 0 0 4px;
}
body.page-design .module-editor-tab-product-template .manufacturer-list > div .remove-btn:hover {
background: #c70000;
}
body.page-design .module-editor-tab-product-template .add-category {
display: flex;
justify-content: flex-end;
}
body.page-design .module-editor-tab-product-template .manufacturers .module-edit-group {
margin-top: 5px;
}
body.page-design .module-editor-tab-product-template .tab-edit-category > .el-tabs__header > .el-tabs__nav-wrap .el-tabs__item {
padding: 0 10px !important;
}
body.page-design .module-editor-tab-product-template .autocomplete-group-wrapper .item-group-wrapper {
background: #fff;
}
body.page-design .autocomplete-group-wrapper .inline-input {
margin-bottom: 10px;
width: 100%;
}
body.page-design .autocomplete-group-wrapper .item-group-wrapper {
padding: 10px;
min-height: 230px;
overflow: auto;
background-color: #f5f5f5;
border-radius: 6px;
}
body.page-design .autocomplete-group-wrapper .item-group-wrapper .item {
overflow: hidden;
position: relative;
padding: 5px 8px;
margin-bottom: 4px;
background: #fff;
border: 1px solid #eee;
cursor: move;
display: flex;
align-items: center;
justify-content: space-between;
}
body.page-design .autocomplete-group-wrapper .item-group-wrapper .item:hover {
border-color: #aaa;
}
body.page-design .autocomplete-group-wrapper .item-group-wrapper .item div {
display: flex;
line-height: 1;
width: calc(100% - 16px);
align-items: center;
}
body.page-design .autocomplete-group-wrapper .item-group-wrapper .item div i {
margin-right: 4px;
}
body.page-design .autocomplete-group-wrapper .item-group-wrapper .item span {
font-size: 12px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
body.page-design .autocomplete-group-wrapper .item-group-wrapper .item i {
color: #999;
font-weight: 400;
}
body.page-design .autocomplete-group-wrapper .item-group-wrapper .item i.right {
cursor: pointer;
}
body.page-design .autocomplete-group-wrapper .item-group-wrapper .item i.right:hover {
color: #222;
}
.footer-link-item {
padding: 6px 10px;
background: #f5f5f5;
margin-bottom: 10px;
position: relative;
}
.footer-link-item:hover .remove-item {
display: block;
}
.footer-link-item .icon-rank {
position: absolute;
top: 11px;
left: 10px;
z-index: 9;
}
.footer-link-item .link-selector-wrap > .title {
padding-left: 20px;
}
.footer-link-item .remove-item {
position: absolute;
display: none;
top: 0;
right: 0;
background: red;
color: #fff;
z-index: 9;
padding: 0 4px;
cursor: pointer;
border-radius: 0 0 0 4px;
}
.footer-link-item .remove-item:hover {
background: #c70000;
}
.file-manager-box .layui-layer-title {
background-color: #293042;
color: #fff;
border-color: #404e72;
}
.file-manager-box .layui-layer-ico {
background: url("/image/close.png") no-repeat;
background-size: cover;
background-position: center center;
}
.link-selector-wrap > .title {
margin-bottom: 6px;
position: relative;
font-size: 12px;
}
.link-selector-wrap > .title i {
margin-right: 4px;
color: #0072ff;
}
.link-selector-wrap .selector-type {
position: relative;
outline: none;
}
.link-selector-wrap .selector-type .title {
border: 1px solid #eee;
padding: 6px 16px 6px 6px;
font-size: 12px;
cursor: pointer;
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
border-radius: 2px;
background-color: #fff;
}
.link-selector-wrap .selector-type .title:hover {
border-color: #ddd;
}
.link-selector-wrap .selector-type .title:before {
content: "\f282";
font-family: "bootstrap-icons";
position: absolute;
right: 10px;
top: 8px;
}
.link-selector-wrap .selector-type .selector-content {
position: absolute;
z-index: 999;
top: calc(100% + 2px);
border-radius: 2px;
left: 0;
width: 100%;
background-color: #fff;
box-shadow: 0 3px 10px rgba(0, 0, 0, 0.25);
display: none;
}
.link-selector-wrap .selector-type .selector-content.active {
display: block;
}
.link-selector-wrap .selector-type .selector-content > div {
padding: 6px 10px;
cursor: pointer;
}
.link-selector-wrap .selector-type .selector-content > div:hover {
background-color: #e0fcf6;
}
.link-dialog-box .el-dialog__header {
padding: 0;
}
.link-dialog-box .el-dialog__header .el-dialog__headerbtn {
top: 14px;
font-size: 20px;
}
.link-dialog-box .el-dialog__header .el-dialog__headerbtn i {
color: #fff;
}
.link-dialog-box .el-dialog__body {
padding-bottom: 10px;
}
.link-dialog-box .el-dialog__footer .el-button {
padding: 10px 20px;
min-width: 80px;
}
.link-dialog-box .link-dialog-header {
padding: 10px 20px;
background-color: #409eff;
}
.link-dialog-box .link-dialog-header .title {
font-weight: bold;
color: #fff;
font-size: 16px;
}
.link-dialog-box .link-dialog-header div.input-with-select {
margin-top: 16px;
display: flex;
align-items: center;
}
.link-dialog-box .link-dialog-header div.input-with-select input {
height: 34px;
border: none;
border-radius: 4px 0 0 4px;
flex: 1;
padding: 0 10px;
outline: none;
}
.link-dialog-box .link-dialog-header div.input-with-select button {
color: #333;
border: none;
background-color: #eee;
height: 34px;
line-height: 36px;
border-radius: 0 4px 4px 0;
padding: 0 14px;
overflow: hidden;
}
.link-dialog-box .link-dialog-content .product-search {
margin: -30px -20px 10px;
padding: 6px 20px;
text-align: left;
background-color: #f3f4f7;
display: flex;
justify-content: space-between;
align-items: center;
}
.link-dialog-box .link-dialog-content .product-search > a {
border: 1px solid #ccc;
background-color: #fff;
padding: 0 10px;
border-radius: 4px;
height: 26px;
line-height: 26px;
color: #333;
text-decoration: none;
}
.link-dialog-box .link-dialog-content .product-search .el-input-group__append {
background-color: #0072ff;
color: #fff;
margin-top: -1px;
}
.link-dialog-box .link-dialog-content .product-info {
height: 340px;
}
.link-dialog-box .link-dialog-content .product-info .product-info-title {
background-color: #dee1e9;
display: flex;
justify-content: space-between;
padding: 6px 20px 6px 38px;
text-align: left;
color: #30344f;
font-size: 14px;
}
.link-dialog-box .link-dialog-content .product-info .product-list {
padding-left: 0;
list-style: none;
margin-top: 4px;
margin-bottom: 0;
height: 314px;
overflow-y: auto;
}
.link-dialog-box .link-dialog-content .product-info .product-list.static {
height: 340px;
}
.link-dialog-box .link-dialog-content .product-info .product-list li {
display: flex;
justify-content: space-between;
align-items: center;
padding: 5px 10px;
border-bottom: 1px solid #eee;
}
.link-dialog-box .link-dialog-content .product-info .product-list li:not(.no-status) {
cursor: pointer;
}
.link-dialog-box .link-dialog-content .product-info .product-list li:not(.no-status):hover {
background-color: #e0fcf6;
}
.link-dialog-box .link-dialog-content .product-info .product-list li .left {
flex: 1;
display: flex;
align-items: center;
margin-right: 20px;
}
.link-dialog-box .link-dialog-content .product-info .product-list li .left .checkbox-plus {
margin-right: 12px;
flex: 0 0 14px;
height: 14px;
border: 1px solid #ddd;
border-radius: 50%;
display: flex;
position: relative;
justify-content: center;
align-items: center;
}
.link-dialog-box .link-dialog-content .product-info .product-list li .left .checkbox-plus:not(.no-status) {
cursor: pointer;
}
.link-dialog-box .link-dialog-content .product-info .product-list li .left .checkbox-plus:before {
content: "";
width: 10px;
height: 10px;
background-color: #0072ff;
border-radius: 50%;
display: none;
}
.link-dialog-box .link-dialog-content .product-info .product-list li .left .checkbox-plus.active {
border-color: #0072ff;
box-shadow: 0px 0px 4px #0072ff;
}
.link-dialog-box .link-dialog-content .product-info .product-list li .left .checkbox-plus.active:before {
display: block;
}
.link-dialog-box .link-dialog-content .product-info .product-list li .left .checkbox-plus.no-status {
background-color: #ddd;
}
.link-dialog-box .link-dialog-content .product-info .product-list li .left > div {
display: -webkit-box;
text-overflow: ellipsis;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
word-break: break-all;
overflow: hidden;
}
.link-dialog-box .link-dialog-content .product-info .product-list li .right {
border: 1px solid #ddd;
border-radius: 2px;
padding: 2px 6px;
color: #aaa;
font-size: 12px;
background-color: #fff;
}
.link-dialog-box .link-dialog-content .product-info .product-list li .right.ok {
color: #52c41a;
border-color: #b7eb8f;
}
.link-dialog-box .link-dialog-content .product-info .product-list li img {
width: 46px;
margin-right: 10px;
}
.link-dialog-box .link-dialog-content .product-info-no {
text-align: center;
font-size: 14px;
}
.link-dialog-box .link-dialog-content .product-info-no > div {
display: block;
}
.link-dialog-box .link-dialog-content .product-info-no .icon {
margin: 50px 0 20px;
}
.link-dialog-box .link-dialog-content .product-info-no .icon i {
font-size: 100px;
color: #8c8c8c;
}
.link-dialog-box .link-dialog-content .product-info-no .no-text {
font-size: 16px;
}
.link-dialog-box .link-dialog-content .product-info-no a {
color: #0072ff;
text-decoration: underline;
}
.link-dialog-box .el-dialog__footer {
background-color: #f6f6f6;
padding: 10px 20px;
}

View File

@ -1,273 +0,0 @@
@charset "UTF-8";
/**
* @copyright 2022 beikeshop.com - All Rights Reserved.
* @link https://beikeshop.com
* @Author pu shuo <pushuo@guangda.work>
* @Date 2022-08-02 19:19:52
* @LastEditTime 2022-09-16 19:06:56
*/
[v-cloak] {
display: none;
}
body.page-filemanager {
height: 100vh;
overflow: hidden;
font-size: 12px;
-webkit-user-select: none;
-moz-user-select: none;
user-select: none; /* CSS3属性 */
}
body.page-filemanager [class*=" el-icon-"], body.page-filemanager [class^=el-icon-] {
font-weight: 600;
}
body.page-filemanager .filemanager-wrap {
display: flex;
height: 100vh;
position: relative;
}
body.page-filemanager .filemanager-wrap .filemanager-navbar {
width: 20%;
background-color: #293042;
overflow-y: auto;
}
body.page-filemanager .filemanager-wrap .filemanager-navbar::-webkit-scrollbar {
width: 2px;
}
body.page-filemanager .filemanager-wrap .filemanager-navbar::-webkit-scrollbar-thumb {
background: #409EFF;
}
body.page-filemanager .filemanager-wrap .filemanager-navbar::-webkit-scrollbar-track {
background: transparent;
}
body.page-filemanager .filemanager-wrap .filemanager-navbar .el-tree {
background-color: transparent;
}
body.page-filemanager .filemanager-wrap .filemanager-navbar .el-tree .el-tree-node__content {
color: #eee;
}
body.page-filemanager .filemanager-wrap .filemanager-navbar .el-tree .el-tree-node__content:hover {
background-color: #434d66;
}
body.page-filemanager .filemanager-wrap .filemanager-navbar .el-tree--highlight-current .el-tree-node.is-current > .el-tree-node__content {
background-color: #434d66;
color: #fff;
border-left: 2px solid #409EFF;
}
body.page-filemanager .filemanager-wrap .filemanager-navbar .tree-wrap .el-tree-node.is-current > .el-tree-node__content .right {
display: block;
}
body.page-filemanager .filemanager-wrap .filemanager-navbar .tree-wrap .el-tree-node__content {
height: 32px;
background-color: transparent;
}
body.page-filemanager .filemanager-wrap .filemanager-navbar .tree-wrap .el-tree-node__content:hover .right {
display: block;
}
body.page-filemanager .filemanager-wrap .filemanager-navbar .tree-wrap .custom-tree-node {
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
}
body.page-filemanager .filemanager-wrap .filemanager-navbar .tree-wrap .custom-tree-node .right {
display: none;
}
body.page-filemanager .filemanager-wrap .filemanager-navbar .tree-wrap .custom-tree-node .right span {
margin-right: 6px;
}
body.page-filemanager .filemanager-wrap .filemanager-navbar .tree-wrap .custom-tree-node .right span:hover {
color: #409EFF;
}
body.page-filemanager .filemanager-wrap .filemanager-divider {
top: 0;
width: 4px;
cursor: col-resize;
}
body.page-filemanager .filemanager-wrap .filemanager-divider:hover {
background: #409EFF;
}
body.page-filemanager .filemanager-wrap .filemanager-content {
flex: 1;
display: flex;
flex-direction: column;
justify-content: space-between;
}
body.page-filemanager .filemanager-wrap .filemanager-content .content-head {
height: 56px;
position: relative;
display: flex;
background-color: #fff;
align-items: center;
justify-content: space-between;
padding: 0 16px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04);
}
body.page-filemanager .filemanager-wrap .filemanager-content .content-head .left a {
margin-right: 36px;
}
body.page-filemanager .filemanager-wrap .filemanager-content .content-head .left a:not(.is-disabled) {
color: #17191c;
}
body.page-filemanager .filemanager-wrap .filemanager-content .content-head .left a.is-disabled i {
color: #a6d2ff;
}
body.page-filemanager .filemanager-wrap .filemanager-content .content-head .left a i {
color: #409EFF;
font-weight: 600;
}
@media (max-width: 768px) {
body.page-filemanager .filemanager-wrap .filemanager-content .content-head {
height: 140px;
display: block;
}
body.page-filemanager .filemanager-wrap .filemanager-content .content-head .left {
margin-bottom: 5px;
}
body.page-filemanager .filemanager-wrap .filemanager-content .content-head .left a {
margin-right: 25px;
}
}
body.page-filemanager .filemanager-wrap .filemanager-content .content-center {
height: calc(100% - 56px);
background: #f7f9fc;
padding: 16px 6px;
overflow-y: auto;
align-content: flex-start;
}
body.page-filemanager .filemanager-wrap .filemanager-content .content-center::-webkit-scrollbar {
width: 4px;
height: 1px;
}
body.page-filemanager .filemanager-wrap .filemanager-content .content-center::-webkit-scrollbar-thumb {
border-radius: 2px;
background: #409EFF;
}
body.page-filemanager .filemanager-wrap .filemanager-content .content-center::-webkit-scrollbar-track {
background: transparent;
}
body.page-filemanager .filemanager-wrap .filemanager-content .content-center .image-list {
display: inline-block;
background: #fff;
margin: 0 8px 16px;
box-shadow: 0 0 2px 1px rgba(0, 0, 0, 0.07);
cursor: pointer;
}
body.page-filemanager .filemanager-wrap .filemanager-content .content-center .image-list .img {
width: 137px;
height: 137px;
display: flex;
align-items: center;
justify-content: center;
}
body.page-filemanager .filemanager-wrap .filemanager-content .content-center .image-list .img img {
max-width: 100%;
max-height: 100%;
}
body.page-filemanager .filemanager-wrap .filemanager-content .content-center .image-list.active {
outline: 1px solid #409EFF;
}
body.page-filemanager .filemanager-wrap .filemanager-content .content-center .image-list .text {
border-top: 1px solid #eee;
font-size: 12px;
width: 137px;
padding: 6px 8px;
display: flex;
align-items: center;
justify-content: space-between;
}
body.page-filemanager .filemanager-wrap .filemanager-content .content-center .image-list .text span {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
body.page-filemanager .filemanager-wrap .filemanager-content .content-center .image-list .text .el-icon-check {
color: #409EFF;
font-size: 18px;
}
body.page-filemanager .filemanager-wrap .filemanager-content .content-footer {
height: 56px;
padding: 0 16px;
background-color: #fff;
display: flex;
box-shadow: 0 -2px 4px rgba(0, 0, 0, 0.04);
align-items: center;
justify-content: space-between;
}
@media (max-width: 768px) {
body.page-filemanager .filemanager-wrap .filemanager-content .content-footer {
height: 120px;
padding: 0;
}
body.page-filemanager .filemanager-wrap .filemanager-content .content-footer .el-pagination {
white-space: inherit;
padding: 0;
text-align: center;
}
body.page-filemanager .filemanager-wrap .filemanager-content .content-footer .el-pagination__jump {
margin: 0;
margin-top: 10px;
}
}
body.page-filemanager .upload-wrap .el-dialog__body {
padding-top: 10px;
}
body.page-filemanager .upload-wrap .upload-image {
height: 200px;
overflow-y: auto;
}
body.page-filemanager .upload-wrap .upload-image .list {
background-color: #f2f2f2;
padding: 6px 10px;
border-radius: 4px;
margin-bottom: 8px;
font-size: 12px;
}
body.page-filemanager .upload-wrap .upload-image .list .info {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 6px;
}
body.page-filemanager .upload-wrap .upload-image .list .name {
color: #111111;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
body.page-filemanager .upload-wrap .upload-image .list .status {
white-space: nowrap;
}
body.page-filemanager .upload-wrap .el-progress-bar__outer {
background-color: #ccc;
}
body.page-filemanager .photos-upload {
overflow: hidden;
}
body.page-filemanager .photos-upload .el-upload {
width: 100%;
display: block;
margin-bottom: 10px;
}
body.page-filemanager .photos-upload .el-loading-spinner {
top: 35%;
}
body.page-filemanager .photos-upload .el-upload-dragger {
width: 100%;
height: auto;
background-color: transparent;
transition: all 0.3s ease-in-out;
}
body.page-filemanager .photos-upload .el-upload-dragger:hover {
border-color: #8874d8;
}
body.page-filemanager .photos-upload .el-upload-dragger .el-icon-upload {
margin: 10px 0;
}
body.page-filemanager .photos-upload .el-upload-dragger .el-upload__text {
margin-bottom: 10px;
color: #aaa;
}
body.page-filemanager .photos-upload input[type=file] {
display: none;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,121 +0,0 @@
/**
* @copyright 2022 beikeshop.com - All Rights Reserved.
* @link https://beikeshop.com
* @Author pu shuo <pushuo@guangda.work>
* @Date 2022-08-26 14:38:13
* @LastEditTime 2022-09-19 09:59:48
*/
body .install-box {
background-color: #f3f6f8;
display: flex;
margin: auto;
height: 100%;
}
body .install-box > .aside-wrap {
width: 30%;
max-width: 460px;
background-color: #fff;
padding: 40px 20px 40px 30px;
display: flex;
flex-direction: column;
justify-content: space-between;
overflow-y: auto;
}
@media (max-width: 768px) {
body .install-box > .aside-wrap {
padding: 20px;
}
}
body .install-box > .content {
flex: 1;
padding: 40px 60px;
overflow-y: auto;
}
body .install-box .language-switch .form-select {
width: auto;
}
/**
* @copyright 2022 beikeshop.com - All Rights Reserved.
* @link https://beikeshop.com
* @Author pu shuo <pushuo@guangda.work>
* @Date 2022-09-16 11:38:13
* @LastEditTime 2022-09-19 09:59:42
*/
.aside-wrap .logo img {
max-width: 180px;
}
.aside-wrap .steps-wrap ul {
padding-left: 0;
list-style: none;
}
.aside-wrap .steps-wrap ul li {
margin-bottom: 30px;
font-size: 16px;
color: #333;
display: flex;
align-items: center;
justify-content: space-between;
}
.aside-wrap .steps-wrap ul li .left {
display: flex;
align-items: center;
}
.aside-wrap .steps-wrap ul li .right {
display: none;
}
.aside-wrap .steps-wrap ul li span.index {
width: 40px;
flex: 0 0 40px;
height: 40px;
border: 2px solid #ddd;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
margin-right: 14px;
color: #666;
}
.aside-wrap .steps-wrap ul li.success {
color: #999;
}
.aside-wrap .steps-wrap ul li.success span.index {
background-color: #5dca86;
border-color: #5dca86;
color: #fff;
}
.aside-wrap .steps-wrap ul li.success span.index i {
font-size: 24px;
}
.aside-wrap .steps-wrap ul li.ing {
color: #fd560f;
}
.aside-wrap .steps-wrap ul li.ing span.index {
border-color: #fd560f;
color: #fd560f;
}
.aside-wrap .steps-wrap ul li.ing span.index i {
font-size: 24px;
}
.aside-wrap .steps-wrap ul li.ing .right {
display: block;
}
.aside-wrap .steps-wrap ul li.ing .right i {
font-size: 24px;
line-height: 1;
}
/**
* @copyright 2022 beikeshop.com - All Rights Reserved.
* @link https://beikeshop.com
* @Author pu shuo <pushuo@guangda.work>
* @Date 2022-08-22 10:31:45
* @LastEditTime 2022-09-19 09:59:36
*/
.install-1 .welcome-img {
max-width: 400px;
margin: 60px 0;
}
.install-1 .guide-text {
max-width: 500px;
}

View File

@ -1,11 +0,0 @@
{
"/build/beike/admin/js/app.js": "/build/beike/admin/js/app.js",
"/build/beike/shop/default/js/app.js": "/build/beike/shop/default/js/app.js",
"/build/beike/shop/default/css/app.css": "/build/beike/shop/default/css/app.css",
"/build/beike/shop/default/css/bootstrap.css": "/build/beike/shop/default/css/bootstrap.css",
"/build/beike/admin/css/filemanager.css": "/build/beike/admin/css/filemanager.css",
"/build/beike/admin/css/app.css": "/build/beike/admin/css/app.css",
"/build/beike/admin/css/bootstrap.css": "/build/beike/admin/css/bootstrap.css",
"/build/beike/admin/css/design.css": "/build/beike/admin/css/design.css",
"/install/css/app.css": "/install/css/app.css"
}

View File

@ -8,7 +8,7 @@
<x-admin-alert type="danger" msg="{{ $errors->first('error') }}" class="mt-4" />
@endif
<div class="card">
<div id="tax-classes-app" class="card">
<div class="card-body h-min-600">
{{-- <div class="d-flex justify-content-between mb-4">--}}
{{-- <a href="{{ admin_route('pages.create') }}" class="btn btn-primary">{{ __('common.add') }}</a>--}}
@ -18,7 +18,8 @@
<thead>
<tr>
<th>ID</th>
<th>{{ __('common.sku') }}</th>
<th>{{ __('admin/product.products_img') }}</th>
<th>{{ __('admin/product.products_name') }}-{{ __('common.sku') }}</th>
<th>{{ __('common.contacts') }}</th>
<th>{{ __('common.email') }}</th>
<th>{{ __('common.content') }}</th>
@ -30,14 +31,17 @@
</thead>
<tbody>
@if (count($pages_format))
@foreach ($pages_format as $page)
@foreach ($pages_format as $pageKey=>$page)
<tr>
<td>{{ $page['id'] }}</td>
<td>
<div >{{ $page['product_sku_sku'] ?? '' }}</div>
<div class="wh-60 border d-flex justify-content-between align-items-center"><img src="{{ $page['product_images'][0]['preview'] ?? 'image/placeholder.png' }}" class="img-fluid"></div>
</td>
<td>
<div title="">{{ $page['contacts'] ?? '' }}</div><!-- <a class="text-dark" href="{/{ shop_route('pages.show', $page['id']) }}" target="_blank">{/{ $page['title_format'] ?? '' }}</a> -->
<div ><a class="text-dark" href="{{ shop_route('products.show', $page['product_id']) }}" target="_blank">{{ $page['product_name'] ?? '' }}-{{ $page['product_sku_sku'] ?? '' }}</a></div>
</td>
<td>
<div title="">{{ $page['contacts'] ?? '' }}</div><!-- -->
</td>
{{-- <td class="{{ $page['active'] ? 'text-success' : 'text-secondary' }}">--}}
{{-- {{ $page['active'] ? __('common.enable') : __('common.disable') }}--}}
@ -52,8 +56,8 @@
<td>{{ $page['updated_at'] }}</td>
@hook('admin.page.list.column_value')
<td class="text-end">
{{-- <a href="{{ admin_route('pages.edit', [$page['id']]) }}"--}}
{{-- class="btn btn-outline-secondary btn-sm">{{ __('common.edit') }}</a>--}}
<button @click="checkedCreate('edit', {{$pageKey}})"
class="btn btn-outline-secondary btn-sm">{{ __('common.view') }}</button>
<button class="btn btn-outline-danger btn-sm delete-btn" type='button'
data-id="{{ $page['id'] }}">{{ __('common.delete') }}</button>
@hook('admin.page.list.action')
@ -70,6 +74,72 @@
{{ $pages->links('admin::vendor/pagination/bootstrap-4') }}
</div>
<el-dialog title="{{ __('admin/page.inquiry') }}" :visible.sync="dialog.show" width="870px"
@close="closeCustomersDialog('form')" :close-on-click-modal="false">
<el-descriptions class="margin-top" :column="2" :size="size" border>
<el-descriptions-item>
<template slot="label">
<i class="el-icon-user"></i>
{{ __('admin/product.products_img') }}
</template>
<div class="wh-100 border d-flex justify-content-between align-items-center">
<img :src="dialog.form.product_images.length !== 0 ? dialog.form.product_images[0].preview : 'image/placeholder.png'" class="img-fluid">
</div>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
<i class="el-icon-user"></i>
{{ __('admin/product.products_name') }}-{{ __('common.sku') }}
</template>
<a class="text-dark" href="/products/@{{ dialog.form.product_id }}" target="_blank">@{{ dialog.form.product_name }}-@{{ dialog.form.product_sku_sku}}</a>
</el-descriptions-item>
</el-descriptions>
<el-descriptions class="margin-top" :column="2" :size="size" border>
<el-descriptions-item>
<template slot="label">
<i class="el-icon-tickets"></i>
{{ __('common.contacts') }}
</template>
@{{ dialog.form.contacts }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
<i class="el-icon-mobile-phone"></i>
{{ __('common.email') }}
</template>
@{{ dialog.form.email }}
</el-descriptions-item>
</el-descriptions>
<el-descriptions class="margin-top" :column="1" :size="size" border>
<el-descriptions-item>
<template slot="label">
<i class="el-icon-tickets"></i>
{{ __('common.content') }}
</template>
@{{ dialog.form.content }}
</el-descriptions-item>
</el-descriptions>
<el-descriptions class="margin-top" :column="2" :size="size" border>
<el-descriptions-item>
<template slot="label">
<i class="el-icon-location-outline"></i>
{{ __('common.created_at') }}
</template>
@{{ dialog.form.created_at }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
<i class="el-icon-location-outline"></i>
{{ __('common.updated_at') }}
</template>
@{{ dialog.form.updated_at }}
</el-descriptions-item>
</el-descriptions>
</el-dialog>
</div>
@hook('admin.page.list.content.footer')
@ -77,6 +147,95 @@
@push('footer')
<script>
new Vue({
el: '#tax-classes-app',
data: {
size: '',
currencies: @json($pages_format ?? []),
dialog: {
show: false,
index: null,
type: 'add',
form: {
product_images: [],
product_id: '',
product_name: '',
product_sku_sku: '',
contacts: '',
email: '',
content: '',
created_at: '',
updated_at: '',
},
},
rules: {
name: [{required: true,message: '{{ __('common.error_required', ['name' => __('common.name')]) }}', trigger: 'blur'}, ],
code: [{required: true,message: '{{ __('common.error_required', ['name' => __('currency.code')]) }}', trigger: 'blur'}, ],
value: [{required: true,message: '{{ __('common.error_required', ['name' => __('currency.value')]) }}',trigger: 'blur'}, ],
decimal_place: [{required: true,message: '{{ __('common.error_required', ['name' => __('currency.decimal_place')]) }}',trigger: 'blur'}, ],
}
},
methods: {
checkedCreate(type, index) {
this.dialog.show = true
this.dialog.type = type
this.dialog.index = index
if (type == 'edit') {
this.dialog.form = JSON.parse(JSON.stringify(this.currencies[index]))
}
},
addFormSubmit(form) {
const self = this;
const type = this.dialog.type == 'add' ? 'post' : 'put';
const url = this.dialog.type == 'add' ? 'currencies' : 'currencies/' + this.dialog.form.id;
this.$refs[form].validate((valid) => {
if (!valid) {
this.$message.error('{{ __('common.error_form') }}');
return;
}
$http[type](url, this.dialog.form).then((res) => {
this.$message.success(res.message);
if (this.dialog.type == 'add') {
this.currencies.push(res.data)
} else {
this.currencies[this.dialog.index] = res.data
}
this.dialog.show = false
})
});
},
deleteCustomer(id, index) {
const self = this;
this.$confirm('{{ __('common.confirm_delete') }}', '{{ __('common.text_hint') }}', {
confirmButtonText: '{{ __('common.confirm') }}',
cancelButtonText: '{{ __('common.cancel') }}',
type: 'warning'
}).then(() => {
$http.delete('currencies/' + id).then((res) => {
this.$message.success(res.message);
self.currencies.splice(index, 1)
})
}).catch(()=>{})
},
closeCustomersDialog(form) {
// this.$refs[form].resetFields();
Object.keys(this.dialog.form).forEach(key => this.dialog.form[key] = '')
// this.dialog.show = false
}
}
})
$('.delete-btn').click(function(event) {
const id = $(this).data('id');
const self = $(this);

View File

@ -34,6 +34,8 @@ return [
'customer_group' => 'Customer Groups',
'customer' => 'Customers',
'page' => 'Content',
'inquiry' => 'Inquiry',
'page_category' => 'Page Category',
'setting' => 'Settings',
'plugin' => 'Plugin',
@ -61,6 +63,8 @@ return [
'regions_index' => 'Regions',
'tax_rates_index' => 'Tax Rates',
'pages_index' => 'Articles',
'inquiry_index' => 'Inquiry',
'page_categories_index' => 'Catalogs',
'tax_classes_index' => 'Tax Classes',
'currencies_index' => 'Currencies',

View File

@ -11,6 +11,8 @@
return [
'products_index' => 'Index',
'products_name' => 'Products Name',
'products_img' => 'Products Image',
'products_create' => 'Create',
'products_show' => 'Detail',
'products_update' => 'Edit',

View File

@ -34,6 +34,7 @@ return [
'customer_group' => '客户组管理',
'customer' => '客户管理',
'page' => '文章管理',
'inquiry' => '询盘管理',
'page_category' => '文章分类',
'setting' => '系统设置',
'plugin' => '插件管理',
@ -65,6 +66,7 @@ return [
'languages_index' => '语言管理',
'design_index' => '首页装修',
'pages_index' => '文章管理',
'inquiry_index' => '询盘管理',
'page_categories_index' => '文章分类',
'design_footer_index' => '页尾装修',
'design_menu_index' => '导航配置',

View File

@ -11,6 +11,8 @@
return [
'products_index' => '商品列表',
'products_name' => '商品名称',
'products_img' => '商品图片',
'products_create' => '创建商品',
'products_show' => '商品详情',
'products_update' => '更新商品',

4
themes/.gitignore vendored
View File

@ -1,2 +1,2 @@
#*
#!default
/*
!/default

View File

@ -9,10 +9,9 @@
<script src="{{ asset('vendor/swiper/swiper-bundle.min.js') }}"></script>
<script src="{{ asset('vendor/zoom/jquery.zoom.min.js') }}"></script>
<link rel="stylesheet" href="{{ asset('vendor/swiper/swiper-bundle.min.css') }}">
<!-- 引入样式 -->
<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
<!-- 引入组件库 -->
<script src="https://unpkg.com/element-ui/lib/index.js"></script>
<script src="{{ asset('vendor/element-ui/2.15.6/js.js') }}"></script>
<link rel="stylesheet" href="{{ asset('vendor/element-ui/2.15.6/css.css') }}">
@endpush
@section('content')
@ -184,7 +183,11 @@
</div>
</div>
<!-- 弹出层 -->
<el-dialog title="Inquiry" :visible.sync="centerDialogVisable" width="400px" center>
<el-dialog title="Inquiry" :visible.sync="centerDialogVisable" width="700px" center>
<div class="root" style="
display: flex;">
<div class="left" style="
flex: 4;">
<el-form :model="registerForm" ref="registerForm" label-width="90px" :rules="rules">
<!-- 弹出层歌手名列 -->
<el-form-item prop="contacts" label="Contacts" size="mini">
@ -210,9 +213,28 @@
<el-input v-model="registerForm.email" placeholder="E-mail"></el-input>
</el-form-item>
<el-form-item prop="content" label="Content" size="mini">
<el-input v-model="registerForm.content" placeholder="Content" type="textarea"></el-input>
<el-input v-model="registerForm.content" placeholder="Content" type="textarea" :rows="10" ></el-input>
</el-form-item>
</el-form>
</div>
<div class="right" style="
flex: 2;
display: flex;
align-items: center;
}">
<div class="product" style="
margin: -35px 10px 0 10px;">
<div class="product-image">
<img :src="images.length ? images[0].preview : '{{ asset('image/placeholder.png') }}'" class="img-fluid">
</div>
<div class="product-info" style="
margin: 5px 5px 0 5px;">
<div class="product-name">{{ $product['name'] }}</div>
</div>
</div>
</div>
</div>
<!-- 取消,确定按钮点击事件 -->
<span slot="footer">
{{-- <el-button size="mini" @click="centerDialogVisable = false">Cancel</el-button>--}}

View File

@ -21,7 +21,11 @@
data-bs-toggle="tooltip"
data-bs-placement="top"
title="{{ __('shop/products.add_to_cart') }}"
onclick="bk.addCart({sku_id: '{{ $product['sku_id'] }}'}, this)">
@if ($product['price_setting'] === 'num')
onclick="bk.addCart({sku_id: '{{ $product['sku_id'] }}',quantity: {{$product['numprices'][0]['num']}} }, this)">
@else
onclick="bk.addCart({sku_id: '{{ $product['sku_id'] }}'}, this)">
@endif
<i class="bi bi-cart"></i>
</button>
</div>
@ -39,8 +43,12 @@
</div>
<!--yt修改-->
<div class="product-price">
<span class="price-new">1 pieces</span>
<span style="color:#aaa;margin-left:4px">(Min Order)</span>
@if ($product['price_setting'] === 'num')
<span class="price-new">{{$product['numprices'][0]['num']}} pieces</span>
@else
<span class="price-new">1 pieces</span>
@endif
<span style="color:#aaa;margin-left:4px">(Min Order)</span>
</div>
@if (request('style_list') == 'list')
@ -60,4 +68,4 @@
</div>
@endif
</div>
</div>
</div>