Explorar o código

edit products in order, style etc

Alexander Musikhin hai 8 meses
pai
achega
8827e7dba0

+ 1 - 3
app/Http/Controllers/OrderController.php

@@ -183,8 +183,6 @@ class OrderController extends Controller
             $order->products()->sync($products);
         }
 
-
-
         return redirect()->route('order.index');
     }
 
@@ -194,7 +192,7 @@ class OrderController extends Controller
     public function show(Order $order)
     {
         $this->data['order'] = $order;
-        $this->data['products'] = Product::get()->pluck('manufacturer_name', 'article')->toArray();
+//        $this->data['products'] = Product::get()->pluck('manufacturer_name', 'article')->toArray();
         return view('orders.edit', $this->data);
     }
 

+ 3 - 2
app/Http/Controllers/ProductController.php

@@ -196,7 +196,7 @@ class ProductController extends Controller
 
         // dispatch job
         ExportCatalog::dispatch($filters , $request->user()->id);
-        Log::info('ImportCatalog job created!');
+        Log::info('ExportCatalog job created!');
 
 
         return redirect()->route('catalog.index')->with(['success' => 'Задача экспорта успешно создана!']);
@@ -218,7 +218,8 @@ class ProductController extends Controller
                 }
             });
             foreach ($result->get() as $p) {
-                $ret[$p->id] = $p->name_tz . ' (арт.' . $p->article . ', №' . $p->nomenclature_number . ', ' . $p->year . 'г., ' . $p->product_price_txt . ')';
+                $ret[$p->id] = $p->common_name;
+//                $ret[$p->id] = $p->name_tz . ' (арт.' . $p->article . ', №' . $p->nomenclature_number . ', ' . $p->year . 'г., ' . $p->product_price_txt . ')';
             }
         }
         return $ret;

+ 15 - 1
app/Models/Product.php

@@ -5,6 +5,7 @@ namespace App\Models;
 use App\Helpers\Price;
 use Illuminate\Database\Eloquent\Casts\Attribute;
 use Illuminate\Database\Eloquent\Model;
+use Illuminate\Database\Eloquent\Relations\BelongsToMany;
 use Illuminate\Database\Eloquent\SoftDeletes;
 use Illuminate\Support\Facades\DB;
 
@@ -95,9 +96,22 @@ class Product extends Model
         );
     }
 
-    public function orders()
+    public function commonName(): Attribute
+    {
+        return Attribute::make(
+            get: fn($value) => (string) $this->name_tz . ' (арт.' . $this->article . ', №' . $this->nomenclature_number . ', ' . $this->year . 'г, ' . $this->product_price_txt . ')',
+        );
+    }
+
+
+    /**
+     * @return BelongsToMany
+     */
+    public function orders(): BelongsToMany
     {
         return $this->belongsToMany(Order::class, 'order_product');
     }
 
+
+
 }

+ 2 - 0
app/Services/ExportService.php

@@ -5,6 +5,7 @@ namespace App\Services;
 use App\Helpers\DateHelper;
 use App\Models\Product;
 use Illuminate\Support\Facades\Log;
+use Illuminate\Support\Facades\Storage;
 use Illuminate\Support\Str;
 use PhpOffice\PhpSpreadsheet\IOFactory;
 use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
@@ -86,6 +87,7 @@ class ExportService
 
         $fileName = 'product_export_' . date('Y-m-d_H-i-s') . '.xlsx';
         $writer = new Xlsx($spreadsheet);
+        Storage::disk('public')->makeDirectory('export');
         $writer->save(storage_path('app/public/export') . '/' . $fileName);
 
         return $fileName;

+ 5 - 5
resources/sass/app.scss

@@ -50,11 +50,10 @@
   td {
     cursor: pointer;
   }
+}
 
-  tr:hover td {
-    background-color: #fff8ca;
-  }
-
+.maf:hover, tr:hover td {
+  background-color: #fff8ca;
 }
 
 .pagination .text-muted {
@@ -67,4 +66,5 @@
 
 .highlight {
   background-color: yellow;
-}
+}
+

+ 24 - 14
resources/views/orders/edit.blade.php

@@ -43,14 +43,25 @@
             </div>
             <div class="col-xxl-6">
                 <h4>МАФ</h4>
-
-                @include('partials.input', ['name' => 'search_maf', 'title' => 'Поиск МАФ', 'value' => '',
-                    'placeholder' => 'Артикул или номер номенклатуры', 'datalist' => []])
-                @include('partials.select', ['name' => 'select_maf', 'title' => '', 'options' => [], 'multiple' => true])
-
-                <div id="selected_maf"></div>
-
-
+                <div>
+                    <input type="text" class="form-control mb-2" placeholder="Поиск номенклатуры" id="search_maf">
+                    <select id="select_maf" class="form-select mb-3" multiple></select>
+                </div>
+
+                <div id="selected_maf">
+                    @if($order)
+                        <div class="changes-message small text-warning visually-hidden">* необходимо сохранить изменения</div>
+                    @endif
+                    @if($order && $order->products)
+                        @foreach($order->products as $p)
+                            <div class="maf d-flex justify-content-between mb-1">
+                                <input type="hidden" class="visually-hidden" name="products[]" value="{{ $p->id }}">
+                                <div>{!! $p->common_name !!}</div>
+                                <i onclick="$(this).parent().remove(); $('.changes-message').removeClass('visually-hidden');" class="bi bi-trash text-danger cursor-pointer"></i>
+                            </div>
+                        @endforeach
+                    @endif
+                </div>
 
             </div>
             <div class="col-12 text-end">
@@ -83,17 +94,16 @@
         });
 
         selectMaf.on('change', function () {
-            $('#selected_maf').append('' +
-                '<div class="maf">' +
+            $('#selected_maf').append(
+                '<div class="maf  d-flex justify-content-between mb-1">' +
                 '<input type="hidden" name="products[]" value="'+ $(this).val() +'">' +
-                '<span>'+ $('#select_maf option:selected').text() +'</span> ' +
-                '<i onclick="$(this).parent().remove()" class="bi bi-trash text-danger cursor-pointer"></i>' +
+                '<div>'+ $('#select_maf option:selected').text() +'</div> ' +
+                '<i onclick="$(this).parent().remove();" class="bi bi-trash text-danger cursor-pointer"></i>' +
                 '</div>'
-
             );
             $('#select_maf').children().remove();
             $('#search_maf').val('');
-
+            $('.changes-message').removeClass('visually-hidden');
         });
 
         $('#district_id').on('change', function () {

+ 1 - 1
resources/views/partials/avatars.blade.php

@@ -1,4 +1,4 @@
-<div class="row mb-3 align-items-center">
+<div class="row mb-2 align-items-center">
     <label class="col-form-label col-md-4 text-md-end">Аватар</label>
     <div class="col-md-8 avatars-select mb-3 d-flex justify-content-start flex-wrap">
         @foreach($avatars as $avatar)

+ 1 - 1
resources/views/partials/color.blade.php

@@ -1,4 +1,4 @@
-<div class="row mb-3 align-items-center">
+<div class="row mb-2 align-items-center">
     <label for="{{ $name }}" class="col-form-label @if(!($right ?? null)) col-md-4 text-md-end @endif">
         {{ $title ?? '' }}
         @isset($required) <sup>*</sup> @endisset

+ 1 - 1
resources/views/partials/file.blade.php

@@ -1,4 +1,4 @@
-<div class="row mb-3">
+<div class="row mb-2">
     <label for="{{ $name }}" class="col-form-label @if(!($right ?? null)) col-md-4 text-md-end @endif mt-1">
         {{ $title ?? '' }}
         @isset($required) <sup>*</sup> @endisset

+ 1 - 1
resources/views/partials/input.blade.php

@@ -1,4 +1,4 @@
-<div class="row mb-3">
+<div class="row mb-2">
     <label for="{{ $name }}" class="col-form-label @if(!($right ?? null)) col-md-4 text-md-end @endif">
         {{ $title ?? '' }}
         @isset($required) <sup>*</sup> @endisset

+ 1 - 1
resources/views/partials/select.blade.php

@@ -1,4 +1,4 @@
-<div class="row mb-{{ ($mb ?? 3) }}">
+<div class="row mb-{{ ($mb ?? 2) }}">
     <label for="{{ $name }}" class="col-form-label @if(!($right ?? null)) col-md-4 text-md-end @endif mt-1">
         {{ $title }}
         @isset($required) <sup>*</sup> @endisset

+ 1 - 1
resources/views/partials/textarea.blade.php

@@ -1,4 +1,4 @@
-<div class="row mb-3">
+<div class="row mb-2">
     <label for="{{ $name }}" class="col-form-label col-md-4 text-md-end mt-1">
         {{ $title ?? '' }}
         @isset($required) <sup>*</sup> @endisset

+ 1 - 1
todo.md

@@ -8,7 +8,7 @@
 - [x] складские остатки товаров - модель, таблица
 - [ ] Добавить ответственных и привязать к району: ФИО, телефон
 - [x] заказы (площадки) - создание, отображение таблицы
-- [ ] просмотр заказа, добавление товаров в заказ
+- [x] просмотр заказа, добавление товаров в заказ
 - [ ] заказы поставщику
 - [ ] импорт площадок
 - [ ] рекламации (возможно создание рекламации на манагере, пока не скажу)