diff --git a/beike/Admin/Http/Controllers/CategoryController.php b/beike/Admin/Http/Controllers/CategoryController.php index 4149bab0..cb7979c4 100644 --- a/beike/Admin/Http/Controllers/CategoryController.php +++ b/beike/Admin/Http/Controllers/CategoryController.php @@ -4,7 +4,7 @@ namespace Beike\Admin\Http\Controllers; use Beike\Admin\Http\Requests\CategoryRequest; use Beike\Admin\Http\Resources\CategoryResource; -use Beike\Admin\Repositories\CategoryRepo; +use Beike\Repositories\CategoryRepo; use Beike\Models\Category; use Beike\Admin\Services\CategoryService; use Beike\Repositories\ProductRepo; @@ -63,7 +63,7 @@ class CategoryController extends Controller $data = [ 'category' => $category ?? new Category(), 'descriptions' => $descriptions ?? null, - 'categories' => CategoryRepo::flatten(locale()), + 'categories' => \Beike\Admin\Repositories\CategoryRepo\CategoryRepo::flatten(locale()), '_redirect' => $this->getRedirect(), ]; @@ -76,4 +76,11 @@ class CategoryController extends Controller (new CategoryService())->createOrUpdate($request->all(), $category); return redirect($this->getRedirect())->with('success', 'Category created successfully'); } + + public function autocomplete(Request $request) + { + $categories = CategoryRepo::autocomplete($request->get('name') ?? ''); + + return json_success('获取成功!', $categories); + } } diff --git a/beike/Admin/Http/Controllers/ProductController.php b/beike/Admin/Http/Controllers/ProductController.php index c3af1fb0..a34e287f 100644 --- a/beike/Admin/Http/Controllers/ProductController.php +++ b/beike/Admin/Http/Controllers/ProductController.php @@ -114,4 +114,12 @@ class ProductController extends Controller return json_success('获取成功', $name); } + + + public function autocomplete(Request $request) + { + $products = ProductRepo::autocomplete($request->get('name') ?? ''); + + return json_success('获取成功!', $products); + } } diff --git a/beike/Admin/Repositories/CategoryRepo.php b/beike/Admin/Repositories/CategoryRepo.php index 00b12260..bbffebaf 100644 --- a/beike/Admin/Repositories/CategoryRepo.php +++ b/beike/Admin/Repositories/CategoryRepo.php @@ -36,14 +36,4 @@ class CategoryRepo ]); } - - public static function getName($id) - { - $category = Category::query()->find($id); - - if ($category) { - return $category->description->name; - } - return ''; - } } diff --git a/beike/Admin/Routes/admin.php b/beike/Admin/Routes/admin.php index 7e9a2709..b13536c5 100644 --- a/beike/Admin/Routes/admin.php +++ b/beike/Admin/Routes/admin.php @@ -16,6 +16,9 @@ Route::prefix($adminName) Route::post('forgotten/send_code', [ForgottenController::class, 'sendVerifyCode'])->name('forgotten.send_code'); Route::post('forgotten/password', [ForgottenController::class, 'changePassword'])->name('forgotten.password'); + Route::get('categories/autocomplete', [Controllers\CategoryController::class, 'autocomplete'])->name('categories.autocomplete'); + Route::get('products/autocomplete', [Controllers\ProductController::class, 'autocomplete'])->name('products.autocomplete'); + Route::middleware('admin_auth:' . \Beike\Models\AdminUser::AUTH_GUARD) ->group(function () { Route::get('/', [Controllers\HomeController::class, 'index'])->name('home.index'); diff --git a/beike/Repositories/CategoryRepo.php b/beike/Repositories/CategoryRepo.php index ac7204b4..f1c5c893 100644 --- a/beike/Repositories/CategoryRepo.php +++ b/beike/Repositories/CategoryRepo.php @@ -91,5 +91,15 @@ class CategoryRepo return $results; } + + public static function getName($id) + { + $category = Category::query()->find($id); + + if ($category) { + return $category->description->name; + } + return ''; + } } diff --git a/beike/Shop/Http/Controllers/CategoryController.php b/beike/Shop/Http/Controllers/CategoryController.php index 916b9b72..3bb0bce6 100644 --- a/beike/Shop/Http/Controllers/CategoryController.php +++ b/beike/Shop/Http/Controllers/CategoryController.php @@ -26,11 +26,4 @@ class CategoryController extends Controller return view('category', $data); } - - public function autocomplete(Request $request) - { - $categories = CategoryRepo::autocomplete($request->get('name') ?? ''); - - return json_success('获取成功!', $categories); - } } diff --git a/beike/Shop/Http/Controllers/ProductController.php b/beike/Shop/Http/Controllers/ProductController.php index 7f4d501a..555b5d1a 100644 --- a/beike/Shop/Http/Controllers/ProductController.php +++ b/beike/Shop/Http/Controllers/ProductController.php @@ -18,11 +18,4 @@ class ProductController extends Controller return view('product', $data); } - - public function autocomplete(Request $request) - { - $products = ProductRepo::autocomplete($request->get('name') ?? ''); - - return json_success('获取成功!', $products); - } } diff --git a/beike/Shop/Routes/shop.php b/beike/Shop/Routes/shop.php index 2965dad8..3cf021dc 100644 --- a/beike/Shop/Routes/shop.php +++ b/beike/Shop/Routes/shop.php @@ -31,11 +31,9 @@ Route::prefix('/') Route::post('carts/select', [CartController::class, 'select'])->name('carts.select'); Route::delete('carts/{cart}', [CartController::class, 'destroy'])->name('carts.destroy'); - Route::get('categories/autocomplete', [CategoryController::class, 'autocomplete'])->name('categories.autocomplete'); Route::get('categories', [CategoryController::class, 'index'])->name('categories.index'); Route::get('categories/{category}', [CategoryController::class, 'show'])->name('categories.show'); - Route::get('products/autocomplete', [ProductController::class, 'autocomplete'])->name('products.autocomplete'); Route::get('products/{product}', [ProductController::class, 'show'])->name('products.show'); diff --git a/public/build/beike/admin/css/design.css b/public/build/beike/admin/css/design.css index 487b530e..16cde12b 100644 --- a/public/build/beike/admin/css/design.css +++ b/public/build/beike/admin/css/design.css @@ -301,39 +301,43 @@ body.page-design .autocomplete-group-wrapper .item-group-wrapper { body.page-design .autocomplete-group-wrapper .item-group-wrapper .item { overflow: hidden; position: relative; - padding: 5px 19px 5px 26px; - margin-bottom: 1px; + 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:before { - content: "\f0c9"; - font-family: "fontawesome"; - position: absolute; - left: 6px; - top: 50%; - margin-top: -10px; - color: #999; +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 { - height: 19px; - overflow: hidden; - display: block; font-size: 12px; - display: -webkit-box; + overflow: hidden; text-overflow: ellipsis; - -webkit-line-clamp: 1; - -webkit-box-orient: vertical; - word-break: break-all; + white-space: nowrap; } body.page-design .autocomplete-group-wrapper .item-group-wrapper .item i { - position: absolute; - right: 6px; - top: 50%; - margin-top: -8px; + 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; +} .file-manager-box .layui-layer-title { background-color: #293042; diff --git a/resources/beike/admin/css/design/app.scss b/resources/beike/admin/css/design/app.scss index d8c4808e..774825dc 100644 --- a/resources/beike/admin/css/design/app.scss +++ b/resources/beike/admin/css/design/app.scss @@ -367,39 +367,47 @@ body.page-design { .item { overflow: hidden; position: relative; - padding: 5px 19px 5px 26px; - margin-bottom: 1px; + padding: 5px 8px; + margin-bottom: 4px; background: #fff; border: 1px solid #eee; cursor: move; - &:before { - content: "\f0c9"; - font-family: "fontawesome"; - position: absolute; - left: 6px; - top: 50%; - margin-top: -10px; - color: #999; + display: flex; + align-items: center; // flex-start | center + justify-content: space-between; // flex-end | center | space-between + &:hover { + border-color: #aaa; + } + + div { + display: flex; + line-height: 1; + width: calc(100% - 16px); + align-items: center; // flex-start | center + + i { + margin-right: 4px; + } } span { - height: 19px; - overflow: hidden; - display: block; font-size: 12px; - display: -webkit-box; - text-overflow: ellipsis; - -webkit-line-clamp: 1; - -webkit-box-orient: vertical; - word-break: break-all; + overflow: hidden; + text-overflow:ellipsis; + white-space: nowrap; } i { - position: absolute; - right: 6px; - top: 50%; - margin-top: -8px; - cursor: pointer; + // position: absolute; + color: #999; + font-weight: 400; + &.right { + cursor: pointer; + + &:hover { + color: #222; + } + } } } } diff --git a/resources/beike/admin/views/pages/design/builder/component/link_selector.blade.php b/resources/beike/admin/views/pages/design/builder/component/link_selector.blade.php index bff6036f..8abd2e0e 100644 --- a/resources/beike/admin/views/pages/design/builder/component/link_selector.blade.php +++ b/resources/beike/admin/views/pages/design/builder/component/link_selector.blade.php @@ -14,6 +14,7 @@ :visible.sync="linkDialog.show" class="link-dialog-box" :append-to-body="true" + :close-on-click-modal="false" @open="linkDialogOpen" @closed="linkDialogClose" width="460px"> @@ -211,7 +212,7 @@ const self = this; this.link.value = ''; this.querySearch(this.keyword, null, function (data) { - self.linkDialog.data = data; + self.linkDialog.data = data.data; }) }, @@ -273,13 +274,12 @@ null; } - $.ajax({ - url: url + encodeURIComponent(keyword) + (all ? '&all=all' : ''), - dataType: 'json', - beforeSend: function() { self.loading = true;; }, - complete: function() { self.loading = false; }, - success: function (json) {if (json) {cb(json)}} - }); + this.loading = true; + + $http.get(url + encodeURIComponent(keyword), null, {hload: true}).then((res) => { + if (res) {cb(res)}; + this.loading = false; + }).finally(() => {this.loading = false}); }, linksNewBack() { @@ -321,10 +321,6 @@ null; } - // beforeSend: function() { self.loading = true;; }, - - // complete: function() { self.loading = false; }, - // this.loading = true; $http.get(url, null, {hload: true}).then((res) => { if (res.data) { self.name = res.data; diff --git a/resources/beike/admin/views/pages/design/builder/component/text_i18n.blade.php b/resources/beike/admin/views/pages/design/builder/component/text_i18n.blade.php index 67519ed0..dcc490d0 100644 --- a/resources/beike/admin/views/pages/design/builder/component/text_i18n.blade.php +++ b/resources/beike/admin/views/pages/design/builder/component/text_i18n.blade.php @@ -2,7 +2,7 @@
- @{{ item.name }} + @{{ item.name }}
diff --git a/resources/beike/admin/views/pages/design/module/tab_product.blade.php b/resources/beike/admin/views/pages/design/module/tab_product.blade.php index b103bbfd..ba71b92a 100644 --- a/resources/beike/admin/views/pages/design/module/tab_product.blade.php +++ b/resources/beike/admin/views/pages/design/module/tab_product.blade.php @@ -48,8 +48,11 @@ :options="{animation: 330}" >
- ${item.name} - +
+ + ${item.name} +
+
@@ -120,7 +123,7 @@ Vue.component('module-editor-tab-product', { return; } - $http.get('products/autocomplete', {name: keyword}, null).then((res) => { + $http.get('products/autocomplete?name=' + encodeURIComponent(keyword)).then((res) => { cb(res); }) }, @@ -144,7 +147,7 @@ Vue.component('module-editor-tab-product', { handleTabsEdit(targetName, action) { if (action === 'add') { - this.module.tabs.push({title: languagesFill('标题'), products: []}); + this.module.tabs.push({title: languagesFill('Tab ' + (this.module.tabs.length + 1)), products: []}); this.editableTabsValue = this.module.tabs.length - 1 + ''; } @@ -166,7 +169,7 @@ setTimeout(() => { background_color: '' }, floor: languagesFill(''), - tabs: [{title: languagesFill('标题'), products: []}], + tabs: [{title: languagesFill('Tab 1'), products: []}], title: languagesFill('模块标题'), }