فهرست منبع

临时工姓名搜索,模糊查询默认右侧模糊

Zhouzhendong 5 سال پیش
والد
کامیت
a19ca94f9b

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

@@ -5,6 +5,7 @@ namespace App\Http\Controllers;
 use App\Imports\StoreCheckingReceiveImport;
 use App\Services\StoreCheckingReceiveService;
 use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Cache;
 use Maatwebsite\Excel\Facades\Excel;
 
 class StoreCheckingReceiveController extends Controller
@@ -28,5 +29,16 @@ class StoreCheckingReceiveController extends Controller
         ini_set('memory_limit','1526M');
         $fileSuffix = ucwords($fileSuffix);
         Excel::import(new StoreCheckingReceiveImport($isCovering),$request->file('file')->path(),null,$fileSuffix);
+        if (Cache::has('storeCheckingReceive')){
+            return Cache::pull('storeCheckingReceive');
+        }
+        return ["success"=>false, "data"=>"读取导入文件错误"];
+    }
+
+    public function show($id){
+        /** @var StoreCheckingReceiveService $service */
+        $service = app('storeCheckingReceiveService');
+        $storeCheckingReceive = $service->find($id);
+        return view('store.checkingReceive.show',compact('storeCheckingReceive'));
     }
 }

+ 1 - 2
app/Http/Controllers/TestController.php

@@ -389,8 +389,7 @@ class TestController extends Controller
     }
 
     public function test2(){
-        $a = ["a"=>1,"b"=>2];
-        dd(array_keys($a));
+        dd(strtotime("2020/9/16"));
     }
 
     /*1*/

+ 10 - 4
app/Http/Controllers/UserLaborController.php

@@ -20,13 +20,19 @@ class UserLaborController extends Controller
 {
     /**
      * Display a listing of the resource.
-     *
+     * @param Request $request
      * @return \Illuminate\Http\Response
      */
-    public function index()
+    public function index(Request $request)
     {
-        $userLabors=UserLabor::with('userDetail')->orderBy('user_id','desc')->paginate(50);
-
+        $userLabors=UserLabor::query()->with('userDetail')->orderBy('user_id','desc');
+        $full_name = $request->user_name ?? false;
+        if ($full_name){
+            $userLabors->whereHas('userDetail',function($query)use($full_name){
+                $query->where('full_name','like',$full_name."%");
+            });
+        }
+        $userLabors = $userLabors->paginate($request->paginate ?? 50);
         foreach ($userLabors as $userLabor){
             if($userLabor->userDetail){
                 $userLabor->is_relieve_facility=$userLabor->userDetail->hasDutyCheckToken();

+ 62 - 13
app/Imports/StoreCheckingReceiveImport.php

@@ -3,7 +3,9 @@
 namespace App\Imports;
 
 use App\Services\CommodityService;
+use Carbon\Carbon;
 use Illuminate\Support\Collection;
+use Illuminate\Support\Facades\Cache;
 use Maatwebsite\Excel\Concerns\ToCollection;
 use Maatwebsite\Excel\Concerns\WithHeadingRow;
 use Maatwebsite\Excel\Imports\HeadingRowFormatter;
@@ -21,8 +23,9 @@ class StoreCheckingReceiveImport implements ToCollection,WithHeadingRow
     }
 
     /**
-    * @param Collection $collection
-     * @return array
+     * @param Collection $collection
+     * @return bool
+     * @throws \Exception
     */
     public function collection(Collection $collection)
     {
@@ -31,7 +34,10 @@ class StoreCheckingReceiveImport implements ToCollection,WithHeadingRow
             "货主","SKU","商品名称","条码","数量","生产日期","失效日期","批号","唯一码"
         ];
         foreach ($header as $str){
-            if (!($row[$str] ?? false)) return ["success"=>false, "data"=>"表头不存在“".$str."”"];
+            if (!($row[$str] ?? false)){
+                Cache::put("storeCheckingReceive",["success"=>false, "data"=>"表头不存在“".$str."”"],86400);
+                return false;
+            }
         }
         $owner_name = null;
         $items = [];
@@ -45,13 +51,31 @@ class StoreCheckingReceiveImport implements ToCollection,WithHeadingRow
                 array_push($errors,($index+2)." 行:条码或数量不存在");
                 continue;
             }
-            if ($item["生产日期"] && !(strtotime($item["生产日期"]) ? true : false)){
-                array_push($errors,($index+2)." 行:生产日期格式错误");
-                continue;
+            if ($item["生产日期"]){
+                if (is_numeric($item["生产日期"])){
+                    $diff = intval($item["生产日期"]);
+                    $today=new Carbon('1900-01-01');
+                    $day = $today->addDays($diff-2);
+                    $item["生产日期"] = $day;
+                }else{
+                    if (!(strtotime($item["生产日期"]) ? true : false)){
+                        array_push($errors,($index+2)." 行:生产日期格式错误");
+                        continue;
+                    }
+                }
             }
             if ($item["失效日期"] && !(strtotime($item["失效日期"]) ? true : false)){
-                array_push($errors,($index+2)." 行:失效日期格式错误");
-                continue;
+                if (is_numeric($item["失效日期"])){
+                    $diff = intval($item["失效日期"]);
+                    $today=new Carbon('1900-01-01');
+                    $day = $today->addDays($diff-2);
+                    $item["失效日期"] = $day;
+                }else{
+                    if (!(strtotime($item["失效日期"]) ? true : false)){
+                        array_push($errors,($index+2)." 行:失效日期格式错误");
+                        continue;
+                    }
+                }
             }
             $isUniqueCommodity = isset($commodities[$item["条码"]]);
             if ($isUniqueCommodity){
@@ -64,6 +88,7 @@ class StoreCheckingReceiveImport implements ToCollection,WithHeadingRow
                 }
             }
             array_push($items,[
+                "bin_number" => $item["格口号"],
                 "imported_amount" => $item["数量"],
                 "produced_at" => $item["生产日期"],
                 "invalid_at" => $item["失效日期"],
@@ -82,9 +107,11 @@ class StoreCheckingReceiveImport implements ToCollection,WithHeadingRow
                 array_push($barcodes,$item["条码"]);
             }
         }
-
         //不存在货主
-        if (!$owner_name) return ["success"=>false, "data"=>"货主为空,不允许录入,至少为一行标明货主!"];
+        if (!$owner_name){
+            Cache::put("storeCheckingReceive",["success"=>false, "data"=>"货主为空,不允许录入,至少为一行标明货主!"],86400);
+            return false;
+        }
 
         //使用条码获取商品ID
         $commodityBarCodes = app('commodityBarcodeService')->getCommodities($barcodes);
@@ -130,7 +157,7 @@ class StoreCheckingReceiveImport implements ToCollection,WithHeadingRow
         $barcodes = [];
         /** @var CommodityService $commodityService */
         $commodityService = app('commodityService');
-        $commodities = $commodityService->get(["owner_id"=>$owner->id,"sku"=>$skuParam]);
+        if (count($skuParam) > 0)$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;
@@ -153,6 +180,7 @@ class StoreCheckingReceiveImport implements ToCollection,WithHeadingRow
         //未找到商品录入商品
         $commodities = [];
         $skuParam = [];
+        $barcodes = [];
         foreach ($skus as $sku => $arr){
             $data = &$items[$arr[0]];
             array_push($commodities,[
@@ -163,8 +191,8 @@ class StoreCheckingReceiveImport implements ToCollection,WithHeadingRow
             ]);
             array_push($skuParam, $sku);
         }
-        $commodityService->insert($commodities);
-        $commodities = $commodityService->get(["owner_id"=>$owner->id,"sku"=>$skuParam]);
+        if (count($commodities) > 0)$commodityService->insert($commodities);
+        if (count($skuParam) > 0)$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;
@@ -182,5 +210,26 @@ class StoreCheckingReceiveImport implements ToCollection,WithHeadingRow
             }
             unset($skus[$commodity->sku]);
         }
+        if (count($barcodes) > 0) app('commodityBarcodeService')->insert($barcodes);
+
+        if (count($items) < 1){
+            Cache::put("storeCheckingReceive",["success"=>false, "errors"=>$errors],86400);
+            return false;
+        }
+        $storeCheckingReceive = app('storeCheckingReceiveService')->create([
+            "owner_id" => $owner->id,
+            "created_at" => date('Y-m-d H:i:s'),
+            'status' => "已导入",
+        ]);
+        $storeCheckingReceive->owner_name = $owner_name;
+
+        foreach ($items as &$item){
+            $item["store_checking_receive_id"] = $storeCheckingReceive->id;
+        }
+
+        app('storeCheckingReceiveItemService')->insert($items);
+
+        Cache::put("storeCheckingReceive",["success"=>true,"data"=>$storeCheckingReceive,"errors"=>$errors],86400);
+        return true;
     }
 }

+ 4 - 2
app/Services/StoreCheckingReceiveItemService.php

@@ -2,10 +2,12 @@
 
 namespace App\Services; 
 
+use App\StoreCheckingReceiveItem;
+
 Class StoreCheckingReceiveItemService
 { 
-    public function insert(){
-
+    public function insert(array $params){
+        return StoreCheckingReceiveItem::query()->insert($params);
     }
 
 }

+ 12 - 0
app/Services/StoreCheckingReceiveService.php

@@ -30,4 +30,16 @@ Class StoreCheckingReceiveService
         return $query->paginate($params['paginate'] ?? 50);
     }
 
+
+    public function create(array $params){
+        return StoreCheckingReceive::query()->create($params);
+    }
+
+    public function find($id){
+        return StoreCheckingReceive::query()->with(['storeCheckingReceiveItems'=>function($query){
+            $query->with(['commodity'=>function($builder){
+                $builder->with('barcodes');
+            }]);
+        }])->find($id);
+    }
 }

+ 1 - 1
app/Services/common/QueryService.php

@@ -60,7 +60,7 @@ Class QueryService
                     $isExecute = true;
                 }
                 if ($rule === 'like'){
-                    $query = $query->where($tableName.$column,'like',$value.$params[$param].$value);
+                    $query = $query->where($tableName.$column,'like',$value.$params[$param].$value.'%');
                     $isExecute = true;
                 }
                 if ($rule === 'multi'){

+ 3 - 0
app/StoreCheckingReceive.php

@@ -16,4 +16,7 @@ class StoreCheckingReceive extends Model
     public function owner(){
         return $this->hasOne('App\Owner','id','owner_id');
     }
+    public function storeCheckingReceiveItems(){
+        return $this->hasMany('App\StoreCheckingReceiveItem','store_checking_receive_id','id');
+    }
 }

+ 2 - 2
database/migrations/2020_09_16_090458_create_checking_store_receive_items_table.php → database/migrations/2020_09_16_090458_create_store_checking_receive_items_table.php

@@ -23,8 +23,8 @@ class CreateStoreCheckingReceiveItemsTable extends Migration
             $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->date('produced_at')->nullable()->comment('生产日期');
+            $table->date('invalid_at')->nullable()->comment('失效日期');
             $table->string('batch_code')->nullable()->comment('批号');
             $table->string('unique_code')->nullable()->comment('唯一码');
         });

+ 16 - 2
resources/views/maintenance/userLabor/index.blade.php

@@ -10,6 +10,7 @@
             @if(Session::has('successTip'))
                 <div class="alert alert-success h1">{{Session::get('successTip')}}</div>
             @endif
+            <div id="form_div"></div>
             <div class="modal fade" id="workRecord" tabindex="-1" role="dialog" aria-hidden="true">
                 <div class="modal-dialog">
                     <div class="modal-content" style="width: 800px">
@@ -89,8 +90,8 @@
                 </tr>
                 <tr v-for="(userLabor,i) in userLabors">
                     <td>@{{ i+1 }}</td>
-                    <td class="text-muted" v-if="userLabor.user_detail">@{{userLabor.user_detail.full_name}}</td>
-                    <td v-if="userLabor.user_detail">@{{userLabor.user_detail.mobile_phone}}</td>
+                    <td class="text-muted"><span v-if="userLabor.user_detail">@{{userLabor.user_detail.full_name}}</span></td>
+                    <td><span v-if="userLabor.user_detail">@{{userLabor.user_detail.mobile_phone}}</span></td>
                     <td><u class="text-info" style="cursor:pointer" @click="show(userLabor.user_id)">查看详情</u></td>
                     <td>
                         @can('临时工-编辑')
@@ -115,6 +116,7 @@
 @endsection
 
 @section('lastScript')
+    <script type="text/javascript" src="{{asset('js/queryForm/queryForm200914.js')}}"></script>
     <script>
         new Vue({
             el:"#list",
@@ -130,6 +132,18 @@
                 processDailyParticipants:[],
                 userDutyChecks:[],
             },
+            mounted(){
+                let data=[
+                   [
+                       {name: 'user_name', type: 'input', tip: '姓名:可在左侧增加百分号(%)进行模糊搜索', placeholder: '姓名'},
+                   ]
+                ];
+                this.form = new query({
+                    el: "#form_div",
+                    condition: data,
+                });
+                this.form.init();
+            },
             methods:{
                 show(user_id){
                     window.open("{{url('maintenance/userLabor')}}/"+user_id);

+ 2 - 5
resources/views/store/checkingReceive/menu.blade.php

@@ -4,12 +4,9 @@
             <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>
+                        <a class="nav-link" href="{{url('store/checkReceive/mission')}}" :class="{active:isActive('',4)}">任务</a>
                     </li> @endcan
+                {{$slot}}
             </ul>
         </div>
     </div>

+ 67 - 23
resources/views/store/checkingReceive/mission.blade.php

@@ -11,16 +11,19 @@
         <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>
+                    <button type="button" id="popover" class="btn btn-danger"
+                            data-container="body" data-toggle="popover" data-placement="bottom"
+                            :data-content="popoverContent" data-html="true">
+                        部分数据导入失败
+                    </button>
+                    <div class="mt-5">
+                        <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>
-                    <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>
@@ -31,7 +34,7 @@
 
     <div id="form_div"></div>
     <div class="ml-2">
-        <button class="btn btn-sm btn-outline-info" data-toggle="modal" data-target="#import">导入</button>
+        <button class="btn btn-sm btn-outline-info" @click="openImport()">导入</button>
     </div>
 
     <label for="all" class="d-none" id="cloneCheckAll">
@@ -45,13 +48,18 @@
                 <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>
+            <td>@{{ storeCheckingReceive.id }}</td>
+            <td>@{{ storeCheckingReceive.owner_name }}</td>
+            <td>@{{ storeCheckingReceive.status }}</td>
+            <td>@{{ storeCheckingReceive.is_receive_diff }}</td>
+            <td>@{{ storeCheckingReceive.asn }}</td>
+            <td>@{{ storeCheckingReceive.is_asn_diff }}</td>
+            <td>@{{ storeCheckingReceive.created_at }}</td>
+            <td>
+                @can('入库管理-盘收一体-盘收')<a target="_blank" :href="'{{url('store/checkReceive/mission')}}/'+storeCheckingReceive.id">
+                    <button class="btn btn-sm btn-outline-success">盘收</button>
+                </a>@endcan
+            </td>
         </tr>
     </table>
     {{$storeCheckingReceives->appends($params)->links()}}
@@ -82,11 +90,9 @@
                 checkData:[],
                 sum:Number('{{$storeCheckingReceives->total()}}'),
                 excel : {
-                    isCovering:'',
                     file : null,
                 },
-
-
+                popoverContent:'',
             },
             mounted(){
                 $('#container').removeClass('d-none');
@@ -109,6 +115,7 @@
                     {name:'cloneCheckAll',customization:true,type:'checkAll',column:'id',
                         dom:$('#cloneCheckAll').removeClass('d-none'), neglect: true},
                     {name:'index',value: '序号', neglect: true},
+                    {name:'id',value: 'ID', neglect: true},
                     {name:'owner_name',value: '货主'},
                     {name:'status',value: '状态'},
                     {name:'is_receive_diff',value: '收货差异'},
@@ -141,6 +148,10 @@
                 getFile(e){
                     this.excel.file = e.target.files[0];
                 },
+                openImport(){
+                    $("#popover").attr('hidden','hidden');
+                    $('#import').modal('show');
+                },
                 importMission(){
                     if (!this.excel.file){
                         tempTip.setDuration(3000);
@@ -149,16 +160,49 @@
                         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=>{
+                        if (res.data.success){
+                            let receive = res.data.data;
+                            let storeCheckingReceive = {
+                                id:receive.id,owner_name:receive.owner_name,created_at:receive.created_at,
+                                status:receive.status,is_receive_diff:receive.is_receive_diff,asn:receive.asn,
+                                is_asn_diff:receive.is_asn_diff
+                            };
+                            this.storeCheckingReceives.unshift(storeCheckingReceive);
+                            console.log(this.storeCheckingReceives);
+                            if (res.data.errors.length < 1) $("#import").modal('hide');
+                            else this.writeErrorText(res.data.errors);
 
-                    }).catch(err=>{
-
+                            tempTip.setDuration(2000);
+                            tempTip.setIndex(1099);
+                            tempTip.showSuccess("任务导入成功");
+                            return true;
+                        }
+                        if (res.data.errors && res.data.errors.length > 0){
+                            this.writeErrorText(res.data.errors)
+                            return true;
+                        }
+                        tempTip.setDuration(3000);
+                        tempTip.setIndex(1099);
+                        tempTip.show(res.data.data);
+                    }).catch(err=> {
+                        tempTip.setDuration(3000);
+                        tempTip.show("网络错误:"+err);
                     })
+                },
+                writeErrorText(errors){
+                    let content = '';
+                    for (let i in errors){
+                        content += errors[i]+"</br>";
+                    }
+                    this.popoverContent = content;
+                    setTimeout(function () {
+                        $("#popover").removeAttr('hidden').popover('show');
+                    },0);
                 }
             },
         });

+ 191 - 0
resources/views/store/checkingReceive/show.blade.php

@@ -0,0 +1,191 @@
+@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')
+                @can('入库管理-盘收一体-盘收')
+                <li class="nav-item">
+                    <a class="nav-link" href="{{URL::current()}}" :class="{active:isActive('mission',3)}">盘收</a>
+                </li>@endcan
+            @endcomponent
+        </span>
+        <div class="row m-2 card">
+            <div class="card-body col-12">
+                <div class="col-12">
+                    <p class="text-muted small" v-if="inputMode=='regular'">常规:可输入效期,相同条码记录不会合并</p>
+                    <p class="text-muted small" v-if="inputMode=='increasing'">逐一扫描:处理单一重复商品,每扫一次对应隔口总数量自动递增,扫到不同条码会提示</p>
+                    <p class="text-muted small" v-if="inputMode=='multiIncreasing'">边扫边分:处理多种商品,自动将扫到的不同条码数量递增到各自隔口号</p>
+                    <ul class="nav nav-tabs mb-4 mt-n3">
+                        <li class="nav-item"><a style="cursor: pointer" class="nav-link text-primary" :class="inputMode=='regular'?'active':''"
+                            @click="switchMenu('regular')">常规</a></li>
+                        <li class="nav-item"><a style="cursor: pointer" class="nav-link text-primary" :class="inputMode=='increasing'?'active':''"
+                            @click="switchMenu('increasing')">逐一扫描</a></li>
+                        <li class="nav-item"><a style="cursor: pointer" class="nav-link text-primary" :class="inputMode=='multiIncreasing'?'active':''"
+                            @click="switchMenu('multiIncreasing')">边扫边分</a></li>
+                    </ul>
+                </div>
+                <div class="col-12 row">
+                    <div class="col-6">
+                        <div v-if="inputMode=='regular'">
+                            <div class="btn btn-sm btn-outline-primary">手动输入</div>
+                            <div class="btn btn-sm btn-outline-danger">扫描输入</div>
+                        </div>
+                        <input type="text" id="barcode" class="form-control" placeholder="扫入条码"
+                               {{--:disabled="status.barcodeDisable" @focusin="focusOutDocument" @focusout="focusDocument" v-model="inputting.barcode"--}}>
+
+                        <div v-if="inputMode=='regular'">
+                        <div class="card-title">生产日期:</div>
+                        <input type="date" class="form-control mb-2"
+                               {{--v-model="inputting.produce_date" @focusin="focusOutDocument" @focusout="focusDocument" @keyup="oninputEnter"--}}>
+
+                        <div class="card-title">失效日期:</div>
+                        <input type="date" class="form-control mb-2"
+                               {{--v-model="inputting.valid_date" @focusin="focusOutDocument" @focusout="focusDocument" @keyup="oninputEnter"--}}>
+                        </div>
+                    </div>
+                    <div class="col-6">
+                        <div class="card-title" id="amountLabel">手动输入数量:</div>
+                        <div class="input-group mt-n2 mb-2">
+                            <input type="number" id="amount" style='height: 40px;font-size: 1.6em;color:blue;font-weight: bolder;padding: 3px;text-align: center' class="form-control" placeholder=""
+                                   {{--:disabled="status.amountDisable" v-model="inputting.amount" @focusin="focusOutDocument" @focusout="focusDocument" @keyup="oninputEnter"--}}>
+                        </div>
+
+                        <div class="card-title">格口号:</div>
+                        <input type="number" id="bin" class="form-control mt-n2 mb-2" style='height: 80px;font-size: 5em;color:red;font-weight: bolder;padding: 3px;text-align: center'
+                               {{--v-model="inputting.bin" :disabled="status.binDisable" @focusin="focusOutDocument" @focusout="focusDocument" @keyup="oninputEnter"--}}>
+
+                        <div v-if="inputMode=='regular'">
+                            <div class="card-title">批次号:</div>
+                            <input type="text" class="form-control mb-2"
+                                   {{--v-model="inputting.batch_number" @focusin="focusOutDocument" @focusout="focusDocument" @keyup="oninputEnter"--}}>
+                        </div>
+                    </div>
+                    <div class="col-12" v-if="commitButtonVisible && inputMode=='regular'" >
+                        <button class="btn btn-success btn form-control" {{--@click="commitGoods"--}}>确定</button>
+                    </div>
+                </div>
+                <p class="card-text text-muted mt-3 mb-n3 text-center">已完成:</p>
+                <hr>
+                <table class="table table-sm  table-striped" {{--v-if="goodses.length>0"--}}>
+                    <tr>
+                        <th>隔口号</th>
+                        <th>数量</th>
+                        <th>条码</th>
+                        <th>生产日期</th>
+                        <th>失效日期</th>
+                        <th>批次号</th>
+                        <th>操作</th>
+                    </tr>
+                    {{--<tr v-for="goods in goodses">
+                        <td>@{{ goods.bin }}</td>
+                        <td>@{{ goods.amount }}</td>
+                        <td>@{{ goods.barcode }}</td>
+                        <td>@{{ goods.produce_date }}</td>
+                        <td>@{{ goods.valid_date }}</td>
+                        <td>@{{ goods.batch_number }}</td>
+                        <td><button class="btn btn-outline-danger btn-sm" @click="removeGoods($event,goods.barcode)">删</button></td>
+                    </tr>--}}
+                </table>
+                <hr>
+                <span class="btn btn-outline-success btn form-control" style="cursor: pointer">确定生成该批盘收</span>
+            </div>
+        </div>
+        <div class="ml-2 mt-2">
+            <button class="btn btn-sm btn-outline-dark">导出</button>
+            <button class="btn btn-sm btn-outline-danger">重新清点</button>
+            <button class="btn btn-sm btn-outline-success">匹配ASN单据</button>
+        </div>
+        <div class="row text-primary ml-1 mr-2 mt-1 mb-1 w-100" style="background-color: #c3e3b5">
+            <span class="ml-1">任务ID: <b class="text-dark">@{{ storeCheckingReceive.id }}</b></span>
+            <span class="ml-3">货主: <b class="text-dark">@{{ storeCheckingReceive.owner_name }}</b></span>
+            <span class="ml-3">创建时间: <b class="text-dark">@{{ storeCheckingReceive.created_at }}</b></span>
+            <span class="ml-3">ASN号: <b class="text-dark">@{{ storeCheckingReceive.asn }}</b></span>
+        </div>
+        <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="(storeCheckingReceiveItem,i) in storeCheckingReceiveItems">
+                <td>@{{ i+1 }}</td>
+                <td>@{{ storeCheckingReceiveItem.id }}</td>
+                <td>@{{ storeCheckingReceiveItem.bin_number }}</td>
+                <td>@{{ storeCheckingReceiveItem.commodity_name }}</td>
+                <td>
+                    <span v-for="commodity_barcode in storeCheckingReceiveItem.commodity_barcodes">
+                        <small>@{{ commodity_barcode.code }}</small><br>
+                    </span>
+                </td>
+                <td>@{{ storeCheckingReceiveItem.imported_amount }}</td>
+                <td>@{{ storeCheckingReceiveItem.counted_amount }}</td>
+                <td>@{{ storeCheckingReceiveItem.asn_amount }}</td>
+                <td>@{{ storeCheckingReceiveItem.imported_diff_amount }}</td>
+                <td>@{{ storeCheckingReceiveItem.asn_diff_amount }}</td>
+                <td>@{{ storeCheckingReceiveItem.produced_at }}</td>
+                <td>@{{ storeCheckingReceiveItem.invalid_at }}</td>
+                <td>@{{ storeCheckingReceiveItem.batch_code }}</td>
+                <td>@{{ storeCheckingReceiveItem.unique_code }}</td>
+            </tr>
+        </table>
+    </div>
+@stop
+
+@section('lastScript')
+<script type="text/javascript" src="{{asset('js/queryForm/header200826b.js')}}"></script>
+<script>
+    new Vue({
+        el:"#container",
+        data:{
+            storeCheckingReceive:{id:'{{$storeCheckingReceive->id}}',owner_name:'{{$storeCheckingReceive->owner ? $storeCheckingReceive->owner->name : ''}}',
+                                created_at:'{{$storeCheckingReceive->created_at}}',asn:'{{$storeCheckingReceive->asn}}'},
+            storeCheckingReceiveItems:[
+                @foreach($storeCheckingReceive->storeCheckingReceiveItems as $storeCheckingReceiveItem)
+                {id:'{{$storeCheckingReceiveItem->id}}',bin_number:'{{$storeCheckingReceiveItem->bin_number}}',
+                commodity_name:"{{$storeCheckingReceiveItem->commodity ? $storeCheckingReceiveItem->commodity->name : ''}}",
+                commodity_barcodes:{!! $storeCheckingReceiveItem->commodity ? ($storeCheckingReceiveItem->commodity->barcodes ? $storeCheckingReceiveItem->commodity->barcodes : []) : [] !!},
+                imported_amount:'{{$storeCheckingReceiveItem->imported_amount}}',counted_amount:'{{$storeCheckingReceiveItem->counted_amount}}',
+                asn_amount:'{{$storeCheckingReceiveItem->asn_amount}}',imported_diff_amount:'{{$storeCheckingReceiveItem->imported_diff_amount}}',
+                asn_diff_amount:'{{$storeCheckingReceiveItem->asn_diff_amount}}',produced_at:'{{$storeCheckingReceiveItem->produced_at}}',
+                invalid_at:'{{$storeCheckingReceiveItem->invalid_at}}',batch_code:'{{$storeCheckingReceiveItem->batch_code}}',
+                unique_code:'{{$storeCheckingReceiveItem->unique_code}}'}
+                @endforeach
+            ],
+            inputMode : 'regular',
+            commitButtonVisible:false,
+        },
+        mounted(){
+            $('#container').removeClass('d-none');
+            $(".tooltipTarget").tooltip({'trigger':'hover'});
+            let column = [
+                {name:'index',value: '序号', neglect: true},
+                {name:'id',value: 'ID', neglect: true},
+                {name:'bin_number',value: '格口号'},
+                {name:'commodity_name',value: '商品名'},
+                {name:'commodity_barcode',value: '商品条码'},
+                {name:'imported_amount',value: '导入数量', neglect: true},
+                {name:'counted_amount',value: '实盘数量', neglect: true},
+                {name:'asn_amount',value: 'ASN数量', neglect: true},
+                {name:'imported_diff_amount',value: '导入差异数', neglect: true},
+                {name:'asn_diff_amount',value: 'ASN差异数', neglect: true},
+                {name:'produced_at',value: '生产日期'},
+                {name:'invalid_at',value: '有效期'},
+                {name:'batch_code',value: '批次号'},
+                {name:'unique_code',value: '唯一码'},
+            ];
+            let header = new Header({
+                el: "#header",
+                column: column,
+                data: this.storeCheckingReceiveItems,
+                restorationColumn: 'id',
+            });
+            header.init();
+        },
+        methods:{
+            switchMenu(menuName){
+                this.inputMode = menuName;
+            }
+        },
+    });
+</script>
+@stop

+ 1 - 0
routes/web.php

@@ -227,6 +227,7 @@ Route::group(['prefix'=>'store'],function(){
     Route::group(['prefix'=>'checkReceive'],function(){
         Route::group(['prefix'=>'mission'],function(){
             Route::post('import','StoreCheckingReceiveController@import');
+            Route::get('{id}','StoreCheckingReceiveController@show');
         });
         Route::get('mission','StoreCheckingReceiveController@mission');
     });