Просмотр исходного кода

大小写问题引起的错误

Zhouzhendong 5 лет назад
Родитель
Сommit
52e94f4b31

+ 32 - 0
app/Http/Controllers/StoreCheckingReceiveController.php

@@ -0,0 +1,32 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\Imports\StoreCheckingReceiveImport;
+use App\Services\StoreCheckingReceiveService;
+use Illuminate\Http\Request;
+use Maatwebsite\Excel\Facades\Excel;
+
+class StoreCheckingReceiveController extends Controller
+{
+    public function mission(Request $request){
+        /** @var StoreCheckingReceiveService $service */
+        $service = app('storeCheckingReceiveService');
+
+        $params = $request->input();
+        $storeCheckingReceives = $service->paginate($params);
+        $owners = app('ownerService')->getSelection();
+        return view('store.checkingReceive.mission',compact('storeCheckingReceives','params','owners'));
+    }
+
+    public function import(Request $request){
+        $fileSuffix=$request->file('file')->getClientOriginalExtension();
+        if ($fileSuffix != 'xlsx' && $fileSuffix != 'xls' && $fileSuffix != 'csv')
+            return ['success'=>false,'data'=>'不支持该文件类型'];
+        $isCovering = $request->input('isCovering');
+        ini_set('max_execution_time',2500);
+        ini_set('memory_limit','1526M');
+        $fileSuffix = ucwords($fileSuffix);
+        Excel::import(new StoreCheckingReceiveImport($isCovering),$request->file('file')->path(),null,$fileSuffix);
+    }
+}

+ 10 - 0
app/Http/Controllers/StoreCheckingReceiveItemController.php

@@ -0,0 +1,10 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use Illuminate\Http\Request;
+
+class StoreCheckingReceiveItemController extends Controller
+{
+    //
+}

+ 6 - 0
app/Http/Controllers/TestController.php

@@ -27,6 +27,7 @@ use App\RejectedBillItem;
 use App\Services\InventoryCompareService;
 use App\Services\LogService;
 use App\Services\OrderPackageService;
+use App\Unit;
 use App\User;
 use App\Waybill;
 use Carbon\Carbon;
@@ -387,6 +388,11 @@ class TestController extends Controller
         }
     }
 
+    public function test2(){
+        $a = ["a"=>1,"b"=>2];
+        dd(array_keys($a));
+    }
+
     /*1*/
     function socket(Request $request)
     {/**/

+ 186 - 0
app/Imports/StoreCheckingReceiveImport.php

@@ -0,0 +1,186 @@
+<?php
+
+namespace App\Imports;
+
+use App\Services\CommodityService;
+use Illuminate\Support\Collection;
+use Maatwebsite\Excel\Concerns\ToCollection;
+use Maatwebsite\Excel\Concerns\WithHeadingRow;
+use Maatwebsite\Excel\Imports\HeadingRowFormatter;
+
+HeadingRowFormatter::default('none');
+class StoreCheckingReceiveImport implements ToCollection,WithHeadingRow
+{
+    /** @var bool $isOverride
+     *  是否覆盖
+     */
+    protected $isOverride;
+    public function __construct($isOverride)
+    {
+        $this->isOverride=$isOverride ? true : false;
+    }
+
+    /**
+    * @param Collection $collection
+     * @return array
+    */
+    public function collection(Collection $collection)
+    {
+        $row = $collection->first();
+        $header = [
+            "货主","SKU","商品名称","条码","数量","生产日期","失效日期","批号","唯一码"
+        ];
+        foreach ($header as $str){
+            if (!($row[$str] ?? false)) return ["success"=>false, "data"=>"表头不存在“".$str."”"];
+        }
+        $owner_name = null;
+        $items = [];
+        $errors = [];
+        $commodities = [];
+        $barcodes = [];
+        //去重 筛选 错误
+        foreach ($collection as $index => $item){
+            if (!$owner_name && $item["货主"]) $owner_name = $item["货主"];
+            if (!$item["条码"] || !$item["数量"] || !is_numeric($item["数量"])){
+                array_push($errors,($index+2)." 行:条码或数量不存在");
+                continue;
+            }
+            if ($item["生产日期"] && !(strtotime($item["生产日期"]) ? true : false)){
+                array_push($errors,($index+2)." 行:生产日期格式错误");
+                continue;
+            }
+            if ($item["失效日期"] && !(strtotime($item["失效日期"]) ? true : false)){
+                array_push($errors,($index+2)." 行:失效日期格式错误");
+                continue;
+            }
+            $isUniqueCommodity = isset($commodities[$item["条码"]]);
+            if ($isUniqueCommodity){
+                $line = &$items[$commodities[$item["条码"]]];
+                if ($line["produced_at"] == $item["生产日期"] && $line["invalid_at"] == $item["失效日期"]
+                    && $line["batch_code"] == $item["批号"] && $line["unique_code"] == $item["唯一码"]) {
+                    $line["imported_amount"] += $item["数量"];
+                    array_push($errors, ($index + 2) . " 行:重复数据已合并数量");
+                    continue;
+                }
+            }
+            array_push($items,[
+                "imported_amount" => $item["数量"],
+                "produced_at" => $item["生产日期"],
+                "invalid_at" => $item["失效日期"],
+                "batch_code" => $item["批号"],
+                "unique_code" => $item["唯一码"],
+                "SKU" => $item["SKU"],
+                "商品名称" => $item["商品名称"],
+                "条码" => $item["条码"],
+                "lineno" => $index+2,
+            ]);
+            if ($isUniqueCommodity){
+                if (is_array($commodities[$item["条码"]])) array_push($commodities[$item["条码"]], count($items)-1);
+                else $commodities[$item["条码"]] = [$commodities[$item["条码"]], count($items)-1];
+            }else{
+                $commodities[$item["条码"]] = count($items)-1 ;
+                array_push($barcodes,$item["条码"]);
+            }
+        }
+
+        //不存在货主
+        if (!$owner_name) return ["success"=>false, "data"=>"货主为空,不允许录入,至少为一行标明货主!"];
+
+        //使用条码获取商品ID
+        $commodityBarCodes = app('commodityBarcodeService')->getCommodities($barcodes);
+        foreach ($commodityBarCodes as $barcode){
+            if (!is_array($commodities[$barcode->code])){
+                $commodities[$barcode->code] = [$commodities[$barcode->code]];
+            }
+            foreach ($commodities[$barcode->code] as $index){
+                $items[$index]["commodity_id"] = $barcode->commodity_id;
+                unset($items[$index]["SKU"]);
+                unset($items[$index]["商品名称"]);
+                unset($items[$index]["条码"]);
+                unset($items[$index]["lineno"]);
+            }
+            unset($commodities[$barcode->code]);
+        }
+
+        $owner = app('ownerService')->firstOrCreate(["name"=>$owner_name],["name"=>$owner_name, "code"=>$owner_name]);
+
+        //填充商品ID,未找到项流转下一步,空SKU删除该行并返回错误
+        $skus = [];
+        $skuParam = [];
+        foreach ($commodities as $key => $value){
+            if (!is_array($value)){
+                $value = [$value];
+            }
+            foreach ($value as $i => $index){
+                if (!$items[$index]["SKU"]){
+                    array_push($errors, ($items[$index]["lineno"]) . " 行:条码未找到商品时SKU不得为空");
+                    unset($items[$index]);
+                    if ($i == count($value)-1) unset($commodities[$key]);
+                    continue;
+                }
+                if (isset($skus[$items[$index]["SKU"]])) array_push($skus, $index);
+                else{
+                    $skus[$items[$index]["SKU"]] = [$index];
+                    array_push($skuParam,$items[$index]["SKU"]);
+                }
+            }
+        }
+
+        //使用货主+SKU获取商品ID,将条码补录
+        $barcodes = [];
+        /** @var CommodityService $commodityService */
+        $commodityService = app('commodityService');
+        $commodities = $commodityService->get(["owner_id"=>$owner->id,"sku"=>$skuParam]);
+        foreach ($commodities as $commodity){
+            foreach ($skus[$commodity->sku] as $i => $index){
+                $items[$index]["commodity_id"] = $commodity->id;
+                if ($i == 0){
+                    array_push($barcodes,[
+                        "code" => $items[$index]["条码"],
+                        "commodity_id" => $commodity->id,
+                        "created_at" => date('Y-m-d H:i:s')
+                    ]);
+                }
+                unset($items[$index]["SKU"]);
+                unset($items[$index]["商品名称"]);
+                unset($items[$index]["条码"]);
+                unset($items[$index]["lineno"]);
+            }
+            unset($skus[$commodity->sku]);
+        }
+        if (count($barcodes) > 0) app('commodityBarcodeService')->insert($barcodes);
+
+        //未找到商品录入商品
+        $commodities = [];
+        $skuParam = [];
+        foreach ($skus as $sku => $arr){
+            $data = &$items[$arr[0]];
+            array_push($commodities,[
+                "name" => $data["商品名称"],
+                "sku" => $data["SKU"],
+                "owner_id" => $owner->id,
+                "created_at" => date('Y-m-d H:i:s'),
+            ]);
+            array_push($skuParam, $sku);
+        }
+        $commodityService->insert($commodities);
+        $commodities = $commodityService->get(["owner_id"=>$owner->id,"sku"=>$skuParam]);
+        foreach ($commodities as $commodity){
+            foreach ($skus[$commodity->sku] as $i => $index){
+                $items[$index]["commodity_id"] = $commodity->id;
+                if ($i == 0){
+                    array_push($barcodes,[
+                        "code" => $items[$index]["条码"],
+                        "commodity_id" => $commodity->id,
+                        "created_at" => date('Y-m-d H:i:s')
+                    ]);
+                }
+                unset($items[$index]["SKU"]);
+                unset($items[$index]["商品名称"]);
+                unset($items[$index]["条码"]);
+                unset($items[$index]["lineno"]);
+            }
+            unset($skus[$commodity->sku]);
+        }
+    }
+}

+ 3 - 1
app/Jobs/MeasuringMachineQueue.php

@@ -39,7 +39,9 @@ class MeasuringMachineQueue implements ShouldQueue
         if ($this->measuringMachine->updated_at<Carbon::now()->subMinutes(30)){
             $this->measuringMachine->status="离线";
             $this->measuringMachine->save();
-            $package=OrderPackage::with('owner','paperBox','measuringMachine')->
+            $package=OrderPackage::with(['order'=>function($query){
+                $query->with('owner','logistic');
+            },'paperBox','measuringMachine'])->
             where('measuring_machine_id',$this->measuringMachine->id)->orderBy('id','DESC')->first();
             if (!$package){
                 $package=new OrderPackage();

+ 1 - 1
app/OracleDOCASNDetail.php

@@ -15,6 +15,6 @@ class OracleDOCASNDetail extends Model
         return OracleBasSKU::query()->where(['sku'=>$this->sku,'customerId'=>$this->customerId])->get();
     }
     public function oracleDocAsnHeader(){
-        return $this->belongsTo('App\OracleDOCAsnHeader','asnno','asnno');
+        return $this->belongsTo('App\OracleDOCASNHeader','asnno','asnno');
     }
 }

+ 0 - 1
app/OracleDOCASNHeader.php

@@ -7,7 +7,6 @@ use Illuminate\Database\Eloquent\Model;
 
 class OracleDOCASNHeader extends Model
 {
-    //
     use ModelTimeFormat;
     protected $connection="oracle";
     protected $table="Doc_ASN_Header";

+ 9 - 0
app/Providers/AppServiceProvider.php

@@ -3,6 +3,8 @@
 namespace App\Providers;
 
 use App\Http\Controllers\Controller;
+use App\Services\CommodityBarcodeService;
+use App\Services\CommodityService;
 use App\Services\InventoryCompareService;
 use App\Services\OracleDOCOrderHeaderService;
 use App\Services\OrderIssuePerformanceService;
@@ -22,8 +24,11 @@ use App\Services\ProcessStatisticService;
 use App\Services\RejectedBillItemService;
 use App\Services\RejectedBillService;
 use App\Services\ShopService;
+use App\Services\StoreCheckingReceiveItemService;
+use App\Services\StoreCheckingReceiveService;
 use App\Services\WaybillFinancialService;
 use App\Services\WeighExceptedService;
+use App\StoreCheckingReceiveItem;
 use Illuminate\Queue\Events\JobFailed;
 use Illuminate\Support\Facades\Queue;
 use Illuminate\Support\Facades\Schema;
@@ -95,5 +100,9 @@ class AppServiceProvider extends ServiceProvider
         app()->singleton('oracleDocOrderHeaderService',OracleDOCOrderHeaderService::class);
         app()->singleton('rejectedBillService',RejectedBillService::class);
         app()->singleton('rejectedBillItemService',RejectedBillItemService::class);
+        app()->singleton('storeCheckingReceiveService',StoreCheckingReceiveService::class);
+        app()->singleton('storeCheckingReceiveItemService',StoreCheckingReceiveItemService::class);
+        app()->singleton('commodityBarcodeService',CommodityBarcodeService::class);
+        app()->singleton('commodityService',CommodityService::class);
     }
 }

+ 17 - 0
app/Services/CommodityBarcodeService.php

@@ -0,0 +1,17 @@
+<?php 
+
+namespace App\Services; 
+
+use App\CommodityBarcode;
+
+Class CommodityBarcodeService
+{ 
+    public function getCommodities(array $codes){
+        return CommodityBarcode::query()->select('code','commodity_id')->whereIn('code',$codes)->get();
+    }
+
+    public function insert(array $params){
+        return CommodityBarcode::query()->insert($params);
+    }
+
+}

+ 15 - 0
app/Services/CommodityService.php

@@ -15,4 +15,19 @@ Class CommodityService
         return Commodity::query()->updateOrCreate($param);
     }
 
+    public function get(array $params){
+        $query = Commodity::query();
+        if ($params["owner_id"] ?? false){
+            $query->where("owner_id", $params["owner_id"]);
+        }
+        if ($params["sku"] ?? false){
+            if (!is_array($params["sku"]))$params["sku"] = [$params["sku"]];
+            $query->whereIn('sku', $params["sku"]);
+        }
+        return $query->get();
+    }
+
+    public function insert(array $params){
+        return Commodity::query()->insert($params);
+    }
 }

+ 11 - 0
app/Services/StoreCheckingReceiveItemService.php

@@ -0,0 +1,11 @@
+<?php 
+
+namespace App\Services; 
+
+Class StoreCheckingReceiveItemService
+{ 
+    public function insert(){
+
+    }
+
+}

+ 33 - 0
app/Services/StoreCheckingReceiveService.php

@@ -0,0 +1,33 @@
+<?php 
+
+namespace App\Services; 
+
+use App\Services\common\QueryService;
+use App\StoreCheckingReceive;
+use Illuminate\Database\Eloquent\Builder;
+
+Class StoreCheckingReceiveService
+{
+    /**
+     * @param Builder $query
+     * @param array $params
+     * @return Builder
+     */
+    private function conditionQuery(Builder $query,array $params){
+        $columnQueryRules=[
+            'created_at_start' => ['alias' => 'created_at' , 'startDate' => ' 00:00:00'],
+            'created_at_end' => ['alias' => 'created_at' , 'endDate' => ' 23:59:59'],
+            'owner_id' => ['multi' => ','],
+            'id' => ['multi' => ',']
+        ];
+        return app(QueryService::class)->query($params,$query,$columnQueryRules);
+    }
+
+    public function paginate(array $params){
+        $query = StoreCheckingReceive::query();
+        $query->with('owner');
+        $query = $this->conditionQuery($query, $params);
+        return $query->paginate($params['paginate'] ?? 50);
+    }
+
+}

+ 19 - 0
app/StoreCheckingReceive.php

@@ -0,0 +1,19 @@
+<?php
+
+namespace App;
+
+use App\Traits\ModelTimeFormat;
+use Illuminate\Database\Eloquent\Model;
+
+class StoreCheckingReceive extends Model
+{
+    use ModelTimeFormat;
+    public $timestamps=false;
+    protected $fillable=[
+        'owner_id','created_at','status','is_receive_diff','asn','is_asn_diff'
+    ];
+
+    public function owner(){
+        return $this->hasOne('App\Owner','id','owner_id');
+    }
+}

+ 24 - 0
app/StoreCheckingReceiveItem.php

@@ -0,0 +1,24 @@
+<?php
+
+namespace App;
+
+use App\Traits\ModelTimeFormat;
+use Illuminate\Database\Eloquent\Model;
+
+class StoreCheckingReceiveItem extends Model
+{
+    use ModelTimeFormat;
+    public $timestamps=false;
+    protected $fillable=[
+        "store_checking_receive_id","bin_number","commodity_id","imported_amount","counted_amount",
+        "asn_amount","imported_diff_amount","asn_diff_amount",
+        "produced_at","invalid_at","batch_code","unique_code"
+    ];
+
+    public function commodity(){
+        return $this->hasOne('App\Commodity','id','commodity_id')->select('id','name','sku');
+    }
+    public function storeCheckingReceive(){
+        return $this->belongsTo('App\StoreCheckingReceive','store_checking_receive_id','id');
+    }
+}

+ 49 - 0
database/migrations/2020_09_15_141310_create_store_checking_receives_table.php

@@ -0,0 +1,49 @@
+<?php
+
+use App\Authority;
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class CreateStoreCheckingReceivesTable extends Migration
+{
+
+    protected $authNames=[
+        "入库管理-盘收一体",
+        "入库管理-盘收一体-任务",
+        "入库管理-盘收一体-盘收",
+    ];
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('store_checking_receives', function (Blueprint $table) {
+            $table->id();
+            $table->bigInteger('owner_id')->index()->comment('外键货主');
+            $table->timestamp('created_at')->index()->comment('创建时间');
+            $table->enum('status',['已导入','清点中','已清点','已入库'])->default('已导入')->comment('状态');
+            $table->enum('is_receive_diff',['是','否'])->nullable()->comment('接收差异');
+            $table->string('asn')->nullable()->comment('asn单号');
+            $table->enum('is_asn_diff',['是','否'])->nullable()->comment('ASN差异');
+        });
+        foreach ($this->authNames as $name){
+            if(!Authority::query()->where('name',$name)->first())(new Authority(['name'=>$name,'alias_name'=>$name]))->save();
+        }
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('store_checking_receives');
+        foreach ($this->authNames as $name){
+            Authority::query()->where('name',$name)->delete();
+        }
+    }
+}

+ 42 - 0
database/migrations/2020_09_16_090458_create_checking_store_receive_items_table.php

@@ -0,0 +1,42 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class CreateStoreCheckingReceiveItemsTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('store_checking_receive_items', function (Blueprint $table) {
+            $table->id();
+            $table->bigInteger('store_checking_receive_id')->comment('外键任务');
+            $table->integer('bin_number')->nullable()->comment('格口号');
+            $table->bigInteger('commodity_id')->index()->comment('外键商品');
+            $table->integer('imported_amount')->nullable()->comment('导入数量');
+            $table->integer('counted_amount')->nullable()->comment('实盘数量');
+            $table->integer('asn_amount')->nullable()->comment('ASN数量');
+            $table->integer('imported_diff_amount')->nullable()->comment('导入差异');
+            $table->integer('asn_diff_amount')->nullable()->comment('ASN差异');
+            $table->timestamp('produced_at')->nullable()->comment('生产日期');
+            $table->timestamp('invalid_at')->nullable()->comment('失效日期');
+            $table->string('batch_code')->nullable()->comment('批号');
+            $table->string('unique_code')->nullable()->comment('唯一码');
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('store_checking_receive_items');
+    }
+}

+ 1 - 1
resources/views/layouts/menu.blade.php

@@ -7,7 +7,7 @@
                     <span class="fa fa-recycle" style="color: #721b6e"></span>
                     退货管理</a></li> @endcan
         @can('入库管理')
-            <li class="nav-item"><a href="{{url("store/fast/create")}}" class="nav-link"
+            <li class="nav-item"><a href="{{url("store/checkReceive/mission")}}" class="nav-link"
                                     :class="{active:isActive('store',1)}">
                     <span class="fa fa-sign-in" style="color: #721b25"></span>
                     入库管理</a></li>

+ 16 - 0
resources/views/store/checkingReceive/menu.blade.php

@@ -0,0 +1,16 @@
+<div id="nav2">
+    <div class="container-fluid nav3">
+        <div class="card menu-third" >
+            <ul class="nav nav-pills">
+                @can('入库管理-盘收一体-任务')
+                    <li class="nav-item">
+                        <a class="nav-link" href="{{url('store/checkReceive/mission')}}" :class="{active:isActive('checkReceive',2)}">任务</a>
+                    </li> @endcan
+                @can('入库管理-盘收一体-盘收')
+                    <li class="nav-item">
+                        <a class="nav-link" href="{{url('store/fast')}}" :class="{active:isActive('',3)}">记录</a>
+                    </li> @endcan
+            </ul>
+        </div>
+    </div>
+</div>

+ 166 - 0
resources/views/store/checkingReceive/mission.blade.php

@@ -0,0 +1,166 @@
+@extends('layouts.app')
+@section('title')盘收一体-任务@endsection
+
+@section('content')
+<div id="container" class="d-none container-fluid">
+    <span>
+        @component('store.menu')@endcomponent
+        @component('store.checkingReceive.menu')@endcomponent
+    </span>
+    <div class="modal fade" id="import" tabindex="-1" role="dialog" aria-hidden="true">
+        <div class="modal-dialog modal-dialog-centered modal-lg" role="document">
+            <div class="modal-content">
+                <div class="modal-body" style="text-align:center;height: 150px">
+                    <div class="custom-control custom-checkbox mt-2 mb-3">
+                        <input type="checkbox" class="custom-control-input" id="isCovering" v-model="excel.isCovering">
+                        <label class="custom-control-label" for="isCovering">覆盖原有已存在信息</label>
+                    </div>
+                    <label>
+                        <input name="file" hidden type="file" class="col-5" id="excelFile" @change="getFile($event)"
+                               accept=".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel">
+                    </label>
+                    <button class="btn btn-dark col-5" @click="$('#excelFile').trigger('click');">选择Excel文件</button><br>
+                    <small class="text-primary">@{{ excel.file ? excel.file.name : '' }}</small>
+                </div>
+                <div class="modal-footer">
+                    <button class="col-12 btn btn-success" @click="importMission()">开始导入</button>
+                </div>
+            </div>
+        </div>
+    </div>
+
+    <div id="form_div"></div>
+    <div class="ml-2">
+        <button class="btn btn-sm btn-outline-info" data-toggle="modal" data-target="#import">导入</button>
+    </div>
+
+    <label for="all" class="d-none" id="cloneCheckAll">
+        <input id="all" type="checkbox" @click="checkAll($event)">全选
+    </label>
+    <table class="table table-sm text-nowrap table-bordered d-none" id="headerRoll"></table>
+    <table class="table table-striped table-sm text-nowrap table-hover mt-1" id="headerParent">
+        <tr id="header"></tr>
+        <tr v-for="(storeCheckingReceive,i) in storeCheckingReceives">
+            <td>
+                <label><input class="checkItem" type="checkbox" :value="storeCheckingReceives.id" v-model="checkData" /></label>
+            </td>
+            <td>@{{ i+1 }}</td>
+            <td>@{{ storeCheckingReceives.owner_name }}</td>
+            <td>@{{ storeCheckingReceives.status }}</td>
+            <td>@{{ storeCheckingReceives.is_receive_diff }}</td>
+            <td>@{{ storeCheckingReceives.asn }}</td>
+            <td>@{{ storeCheckingReceives.is_asn_diff }}</td>
+            <td>@{{ storeCheckingReceives.created_at }}</td>
+            <td></td>
+        </tr>
+    </table>
+    {{$storeCheckingReceives->appends($params)->links()}}
+</div>
+@stop
+
+@section('lastScript')
+    <script type="text/javascript" src="{{asset('js/queryForm/header200826b.js')}}"></script>
+    <script type="text/javascript" src="{{asset('js/queryForm/queryForm200914.js')}}"></script>
+    <script>
+        let vue = new Vue({
+            el:"#container",
+            data:{
+                storeCheckingReceives:[
+                    @foreach($storeCheckingReceives as $storeCheckingReceive)
+                    {id:'{{$storeCheckingReceive->id}}',owner_name:'{{$storeCheckingReceive->owner ? $storeCheckingReceive->owner->name : ''}}',
+                        created_at:'{{$storeCheckingReceive->created_at}}',status:'{{$storeCheckingReceive->status}}',
+                        is_receive_diff:'{{$storeCheckingReceive->is_receive_diff}}',asn:'{{$storeCheckingReceive->asn}}',
+                        is_asn_diff:'{{$storeCheckingReceive->is_asn_diff}}',
+                    },
+                    @endforeach
+                ],
+                owners:[
+                    @foreach($owners as $owner)
+                    {name:'{{$owner->id}}',value:'{{$owner->name}}'},
+                    @endforeach
+                ],
+                checkData:[],
+                sum:Number('{{$storeCheckingReceives->total()}}'),
+                excel : {
+                    isCovering:'',
+                    file : null,
+                },
+
+
+            },
+            mounted(){
+                $('#container').removeClass('d-none');
+                $(".tooltipTarget").tooltip({'trigger':'hover'});
+                let _this = this;
+                let data = [[
+                    {name:'created_at_start',type:'dateTime',tip:'选择显示指定日期的起始时间'},
+                    {name:'created_at_end',type:'dateTime',tip:'选择显示指定日期的结束时间'},
+                    {name:'owner_id',type:'select_multiple_select',tip:['输入关键词快速定位下拉列表,回车确定','选择要显示的客户'],
+                        placeholder:['货主','定位或多选货主'],data:_this.owners},
+                    {name:'asn',type:'input',tip:'ASN单号:可在两侧增加百分号(%)进行模糊搜索',placeholder:'ASN单号'},
+                ]];
+
+                _this.form = new query({
+                    el:'#form_div',
+                    condition:data,
+                });
+                _this.form.init();
+                let column = [
+                    {name:'cloneCheckAll',customization:true,type:'checkAll',column:'id',
+                        dom:$('#cloneCheckAll').removeClass('d-none'), neglect: true},
+                    {name:'index',value: '序号', neglect: true},
+                    {name:'owner_name',value: '货主'},
+                    {name:'status',value: '状态'},
+                    {name:'is_receive_diff',value: '收货差异'},
+                    {name:'asn',value: 'ASN单号'},
+                    {name:'is_asn_diff',value: 'ASN差异'},
+                    {name:'created_at',value: '创建时间'},
+                    {name:'operating',value: '操作', neglect: true},
+                ];
+                setTimeout(function () {
+                    let header = new Header({
+                        el: "#header",
+                        column: column,
+                        data: _this.storeCheckingReceives,
+                        restorationColumn: 'id',
+                        vue:vue,
+                    });
+                    header.init();
+                },0);
+            },
+            methods:{
+                checkAll(event){
+                    if (event.target.checked){
+                        this.packages.forEach((el)=>{
+                            if (this.checkData.indexOf(el.id) === '-1'){
+                                this.checkData.push(el.id);
+                            }
+                        });
+                    }else this.checkData = [];
+                },
+                getFile(e){
+                    this.excel.file = e.target.files[0];
+                },
+                importMission(){
+                    if (!this.excel.file){
+                        tempTip.setDuration(3000);
+                        tempTip.setIndex(1099);
+                        tempTip.showSuccess('未选择任何文件!');
+                        return;
+                    }
+                    let formData = new FormData();
+                    formData.append("isCovering",this.excel.isCovering);
+                    formData.append("file",this.excel.file);
+                    axios.post('{{url('store/checkReceive/mission/import')}}',formData,{
+                        'Content-Type':'multipart/form-data'
+                    })
+                    .then(res=>{
+
+                    }).catch(err=>{
+
+                    })
+                }
+            },
+        });
+    </script>
+@stop

+ 4 - 0
resources/views/store/menu.blade.php

@@ -2,6 +2,10 @@
 <div class="container-fluid nav2" id="nav2">
     <div class="card">
         <ul class="nav nav-pills">
+            @can('入库管理-盘收一体')
+                <li class="nav-item">
+                    <a class="nav-link"  href="{{url('store/checkReceive/mission')}}" :class="{active:isActive('checkReceive',2)}">盘收一体</a>
+                </li> @endcan
             @can('入库管理-快速入库')
                 <li class="nav-item">
                     <a class="nav-link"  href="{{url('store/fast/create')}}" :class="{active:isActive('fast',2)}">快速入库</a>

+ 12 - 2
routes/web.php

@@ -211,15 +211,25 @@ Route::resource('package','PackageController');
 
 /** 入库 */
 Route::group(['prefix'=>'store'],function(){
-    Route::resource('fast/storeItem','StoreItemsController');
+    Route::group(['prefix'=>'fast'],function() {
+        Route::resource('storeItem','StoreItemsController');
+    });
     Route::resource('fast','StoreController');
-//    Route::get('fast/index','StoreController@index');
+
     /** 盲收 */
     Route::group(['prefix'=>'blindReceive'],function(){
         Route::get('/', function () { return view('store.blindReceive.index');});
         Route::get('excels', 'StoreBlindReceiveController@index');
         Route::post('excels/apiStore', 'StoreBlindReceiveController@apiStore');
     });
+
+    /** 盘收 */
+    Route::group(['prefix'=>'checkReceive'],function(){
+        Route::group(['prefix'=>'mission'],function(){
+            Route::post('import','StoreCheckingReceiveController@import');
+        });
+        Route::get('mission','StoreCheckingReceiveController@mission');
+    });
 });
 
 /** 二次加工 */