ソースを参照

添加Supplier:model controller factory view route seeder

ajun 5 年 前
コミット
0224273fbc

+ 39 - 0
app/Filters/SupplierFilters.php

@@ -0,0 +1,39 @@
+<?php
+
+
+namespace App\Filters;
+
+
+use Illuminate\Http\Request;
+
+class SupplierFilters
+{
+    protected $request;
+    protected $queryBuilder;
+    protected $filters = [];
+    protected $array_filter;
+    protected $params = [
+        'name','contact_man','phone','invoice_title','bank','bank_account','opening_bank'
+    ];
+    public function __construct(Request $request)
+    {
+        $this->request = $request;
+    }
+
+    public function apply($builder)
+    {
+        $this->queryBuilder = $builder;
+        $filters = array_filter($this->request->only($this->filters));
+        foreach ($filters as $filter => $value) {
+            if (method_exists($this, $filter)) {
+                $this->$filter($value, $this->queryBuilder);
+            }
+        }
+        $this->afterApply();
+        return $this->queryBuilder;
+    }
+    private function afterApply()
+    {
+
+    }
+}

+ 30 - 0
app/Http/Controllers/SupplierController.php

@@ -0,0 +1,30 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\Filters\SupplierFilters;
+use App\Supplier;
+use Illuminate\Http\Request;
+
+class SupplierController extends Controller
+{
+    public function index(Request $request,SupplierFilters $filters)
+    {
+
+    }
+
+    public function storeApi(Request $request)
+    {
+
+    }
+
+    public function updateApi(Request $request)
+    {
+
+    }
+
+    public function destroyApi($id)
+    {
+
+    }
+}

+ 26 - 0
app/Supplier.php

@@ -0,0 +1,26 @@
+<?php
+
+namespace App;
+
+use App\Traits\ModelTimeFormat;
+use Illuminate\Database\Eloquent\Model;
+
+use App\Traits\LogModelChanging;
+use Illuminate\Database\Eloquent\Relations\BelongsToMany;
+
+class Supplier extends Model
+{
+    use LogModelChanging;
+    use ModelTimeFormat;
+    protected $fillable = ['name','contact_man','phone','invoice_title','bank','bank_account','opening_bank'];
+
+    public function material():BelongsToMany
+    {
+        return $this->belongsToMany(Material::class,'material_supplier','supplier_id','material_id','id','material_id');
+    }
+
+    public function scopeFilter($query,$filters)
+    {
+        return $filters->apply($query);
+    }
+}

+ 20 - 0
database/factories/SupplierFactory.php

@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * @var Factory $factory
+ */
+
+use App\Supplier;
+use Faker\Generator as Faker;
+use \Illuminate\Database\Eloquent\Factory;
+$factory->define(Supplier::class, function (Faker $faker) {
+    return [
+        'name' => $faker->userName,
+        'contact_man' => $faker->bankAccountNumber,
+        'phone' => $faker->phoneNumber,
+        'invoice_title' => $faker->jobTitle,
+        'bank' => $faker->domainName,
+        'bank_account' => $faker->bankAccountNumber,
+        'opening_bank' => $faker->address
+    ];
+});

+ 39 - 0
database/migrations/2021_02_02_141649_create_suppliers_table.php

@@ -0,0 +1,39 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class CreateSuppliersTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('suppliers', function (Blueprint $table) {
+            $table->id();
+            $table->string('name',30)->comment('名称');
+            $table->string('contact_man',30)->comment('联系人');
+            $table->string('phone')->comment('电话');
+            $table->string('invoice_title')->comment('发票抬头');
+            $table->string('bank',30)->comment('账户银行');
+            $table->string('bank_account',50)->comment('收款账户');
+            $table->string('opening_bank',50)->comment('开户行');
+            $table->timestamps();
+            $table->softDeletes();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('suppliers');
+    }
+}

+ 31 - 0
database/migrations/2021_02_02_142307_create_table_material_supplier.php

@@ -0,0 +1,31 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class CreateTableMaterialSupplier extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('material_supplier', function (Blueprint $table) {
+            $table->bigInteger('material_id');
+            $table->bigInteger('supplier_id');
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('material_supplier');
+    }
+}

+ 17 - 0
database/seeds/SupplierSeeder.php

@@ -0,0 +1,17 @@
+<?php
+
+use Illuminate\Database\Seeder;
+
+class SupplierSeeder extends Seeder
+{
+    /**
+     * Run the database seeds.
+     *
+     * @return void
+     */
+    public function run()
+    {
+        $params = factory(\App\Supplier::class)->times(100)->make()->toArray();
+        \App\Supplier::query()->insert($params);
+    }
+}

+ 0 - 0
resources/views/maintenance/supplier/_create.blade.php


+ 0 - 0
resources/views/maintenance/supplier/_edit.blade.php


+ 0 - 0
resources/views/maintenance/supplier/_table.blade.php


+ 36 - 0
resources/views/maintenance/supplier/index.blade.php

@@ -0,0 +1,36 @@
+@extends('layouts.app')
+@section('title','供应商')
+@section('content')
+    <nav class="nav2">
+        @component('maintenance.menu')@endcomponent
+    </nav>
+    <div class="container-fluid d-none" id="supplier">
+        <div class="card">
+            @include('maintenance.supplier._create')
+            @include('maintenance.supplier._edit')
+            <div class="card-body">
+                <div class="row pull-left m-1">
+                    <button class="btn btn-outline-info mb-1 mr-3" @click="store"><span class="fa fa-plus"></span>&nbsp;新&nbsp;&nbsp;增</button>
+                </div>
+                @include('maintenance.supplier._table')
+            </div>
+        </div>
+    </div>
+@endsection
+
+@section('lastScript')
+    <script>
+        new Vue({
+            el:'#supplier',
+            data:{
+
+            },
+            mounted(){
+
+            },
+            methods:{
+
+            }
+        })
+    </script>
+@endsection

+ 8 - 0
routes/apiLocal.php

@@ -122,3 +122,11 @@ Route::group(['prefix' => 'ownerMaterial'],function(){
     Route::post('update','OwnerMaterialController@updateApi');
     Route::delete('{id}','OwnerMaterialController@destroyApi');
 });
+
+/** 供应商 */
+Route::group(['prefix' => 'supplier'],function(){
+    Route::post('store','OwnerMaterialController@storeApi');
+    Route::post('update','OwnerMaterialController@updateApi');
+    Route::delete('{id}','OwnerMaterialController@destroyApi');
+});
+

+ 2 - 0
routes/web.php

@@ -200,6 +200,8 @@ Route::group(['prefix'=>'maintenance'],function(){
     Route::get('material','MaterialController@index');;
     /** 项目耗材 */
     Route::get('ownerMaterial','OwnerMaterialController@index');
+    /** 供应商 */
+    Route::get('supplier','SupplierController@index');
 
     Route::get('syncRedisLogs','LogController@syncRedisLogs');
     Route::resource('log', 'LogController');