Pārlūkot izejas kodu

Merge branch 'master' into zengjun

ajun 5 gadi atpakaļ
vecāks
revīzija
20735d392b
34 mainītis faili ar 619 papildinājumiem un 564 dzēšanām
  1. 1 1
      app/Console/Commands/SyncBatchTask.php
  2. 13 8
      app/Http/Controllers/StationController.php
  3. 85 0
      app/Http/Controllers/StationTaskController.php
  4. 85 0
      app/Http/Controllers/StationTaskTypeController.php
  5. 2 11
      app/Http/Controllers/TestController.php
  6. 0 1
      app/Http/Controllers/api/thirdPart/haiq/StorageController.php
  7. 2 0
      app/Providers/AppServiceProvider.php
  8. 1 0
      app/Services/BatchService.php
  9. 12 1
      app/Services/StationService.php
  10. 4 3
      app/Services/StationTaskBatchService.php
  11. 7 0
      app/Station.php
  12. 10 0
      app/StationTask.php
  13. 10 0
      app/StationTaskType.php
  14. 12 0
      database/factories/StationTaskFactory.php
  15. 12 0
      database/factories/StationTaskTypeFactory.php
  16. 2 2
      database/migrations/2020_11_30_140958_create_stations_table.php
  17. 1 1
      database/migrations/2020_11_30_174327_create_station_task_commodities_table.php
  18. 38 0
      database/migrations/2020_12_03_144334_add_monitor_default_station_and_station_hardware_id_column.php
  19. 32 0
      database/migrations/2020_12_04_160314_create_station_task_types_table.php
  20. 35 0
      database/migrations/2020_12_04_175932_create_station_tasks_table.php
  21. 32 0
      database/migrations/2020_12_07_111922_add_column_handled_amount_of_station_task_commodities.php
  22. 16 0
      database/seeds/StationTaskSeeder.php
  23. 16 0
      database/seeds/StationTaskTypeSeeder.php
  24. BIN
      resources/images/demoBin.png
  25. 1 1
      resources/views/layouts/menu.blade.php
  26. 5 5
      resources/views/order/issue/index.blade.php
  27. 53 0
      resources/views/station/monitor/index.blade.php
  28. 0 520
      resources/views/station/monitor/indexl.blade.php
  29. 5 8
      resources/views/station/monitor/menu.blade.php
  30. 120 0
      resources/views/station/monitor/show.blade.php
  31. 6 1
      routes/web.php
  32. 0 0
      tests/CreatesApplication.php
  33. 0 0
      tests/TestCase.php
  34. 1 1
      tests/webApi/thirdPart/haiq/pickStation.http

+ 1 - 1
app/Console/Commands/SyncBatchTask.php

@@ -138,7 +138,7 @@ class SyncBatchTask extends Command
                 }
             }
         }
-        $this->batchService->assignTasks($batches);
+//        $this->batchService->assignTasks($batches);
 
 
         ValueStore::query()->where("name","wave_last_sync_date")->update(["value"=>Carbon::now()->subSeconds(1)->toDateTimeString()]);

+ 13 - 8
app/Http/Controllers/StationController.php

@@ -10,11 +10,18 @@ class StationController extends Controller
     /**
      * Display a listing of the resource.
      *
-     * @return \Illuminate\Http\Response
+     * @return void
      */
     public function index()
     {
-        //
+
+    }
+    public function monitorIndex()
+    {
+        $stations = Station::query()->with('type:name','parent:name')->whereHas('type',function($query){
+            $query->where('name','料箱监视器');
+        })->paginate(100);
+        return view('station.monitor.index',compact('stations'));
     }
 
     /**
@@ -38,16 +45,14 @@ class StationController extends Controller
         //
     }
 
-    /**
-     * Display the specified resource.
-     *
-     * @param  \App\Station  $station
-     * @return \Illuminate\Http\Response
-     */
     public function show(Station $station)
     {
         //
     }
+    public function monitorShow(Station $station)
+    {
+        return view('station.monitor.show',compact('station'));
+    }
 
     /**
      * Show the form for editing the specified resource.

+ 85 - 0
app/Http/Controllers/StationTaskController.php

@@ -0,0 +1,85 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\StationTask;
+use Illuminate\Http\Request;
+
+class StationTaskController extends Controller
+{
+    /**
+     * Display a listing of the resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function index()
+    {
+        //
+    }
+
+    /**
+     * Show the form for creating a new resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function create()
+    {
+        //
+    }
+
+    /**
+     * Store a newly created resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return \Illuminate\Http\Response
+     */
+    public function store(Request $request)
+    {
+        //
+    }
+
+    /**
+     * Display the specified resource.
+     *
+     * @param  \App\StationTask  $stationTask
+     * @return \Illuminate\Http\Response
+     */
+    public function show(StationTask $stationTask)
+    {
+        //
+    }
+
+    /**
+     * Show the form for editing the specified resource.
+     *
+     * @param  \App\StationTask  $stationTask
+     * @return \Illuminate\Http\Response
+     */
+    public function edit(StationTask $stationTask)
+    {
+        //
+    }
+
+    /**
+     * Update the specified resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \App\StationTask  $stationTask
+     * @return \Illuminate\Http\Response
+     */
+    public function update(Request $request, StationTask $stationTask)
+    {
+        //
+    }
+
+    /**
+     * Remove the specified resource from storage.
+     *
+     * @param  \App\StationTask  $stationTask
+     * @return \Illuminate\Http\Response
+     */
+    public function destroy(StationTask $stationTask)
+    {
+        //
+    }
+}

+ 85 - 0
app/Http/Controllers/StationTaskTypeController.php

@@ -0,0 +1,85 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\StationTaskType;
+use Illuminate\Http\Request;
+
+class StationTaskTypeController extends Controller
+{
+    /**
+     * Display a listing of the resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function index()
+    {
+        //
+    }
+
+    /**
+     * Show the form for creating a new resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function create()
+    {
+        //
+    }
+
+    /**
+     * Store a newly created resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return \Illuminate\Http\Response
+     */
+    public function store(Request $request)
+    {
+        //
+    }
+
+    /**
+     * Display the specified resource.
+     *
+     * @param  \App\StationTaskType  $stationTaskType
+     * @return \Illuminate\Http\Response
+     */
+    public function show(StationTaskType $stationTaskType)
+    {
+        //
+    }
+
+    /**
+     * Show the form for editing the specified resource.
+     *
+     * @param  \App\StationTaskType  $stationTaskType
+     * @return \Illuminate\Http\Response
+     */
+    public function edit(StationTaskType $stationTaskType)
+    {
+        //
+    }
+
+    /**
+     * Update the specified resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \App\StationTaskType  $stationTaskType
+     * @return \Illuminate\Http\Response
+     */
+    public function update(Request $request, StationTaskType $stationTaskType)
+    {
+        //
+    }
+
+    /**
+     * Remove the specified resource from storage.
+     *
+     * @param  \App\StationTaskType  $stationTaskType
+     * @return \Illuminate\Http\Response
+     */
+    public function destroy(StationTaskType $stationTaskType)
+    {
+        //
+    }
+}

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

@@ -142,17 +142,8 @@ class TestController extends Controller
     }
 
     public function test4(){
-        $order = Order::query()->whereHas("packages",function ($query){
-            /** @var Builder $query */
-            $query->whereHas("commodities",function ($query){
-                /** @var Builder $query */
-                $query->whereHas("commodity",function ($query){
-                    /** @var Builder $query */
-                    $query->whereNotNull("name");
-                });
-            });
-        })->first();
-        OrderCreateInstantBill::dispatch($order);
+        $arr=[['id'=>3],['id'=>33],];
+        dd(data_get($arr,'*.id'));
     }
     public function t($a)
     {

+ 0 - 1
app/Http/Controllers/api/thirdPart/haiq/StorageController.php

@@ -5,7 +5,6 @@ namespace App\Http\Controllers\api\thirdPart\haiq;
 
 
 use App\Services\ForeignHaiRoboticsService;
-use App\Services\LogService;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Http;
 

+ 2 - 0
app/Providers/AppServiceProvider.php

@@ -4,6 +4,7 @@ namespace App\Providers;
 
 use App\Http\Controllers\Controller;
 use App\Services\AuthorityService;
+use App\Services\BatchService;
 use App\Services\CacheService;
 use App\Services\CommodityService;
 use App\Services\common\BatchUpdateService;
@@ -125,6 +126,7 @@ class AppServiceProvider extends ServiceProvider
     }
 
     private function loadingService(){
+        app()->singleton('BatchService',BatchService::class);
         app()->singleton('CacheService',CacheService::class);
         app()->singleton('UserService',UserService::class);
         app()->singleton('AuthorityService',AuthorityService::class);

+ 1 - 0
app/Services/BatchService.php

@@ -43,6 +43,7 @@ Class BatchService
     {
         $this->stationTaskBatchService=app('StationTaskBatchService');
         $stationTaskBatches=$this->stationTaskBatchService->createByBatches($batches);
+
     }
 
 }

+ 12 - 1
app/Services/StationService.php

@@ -16,7 +16,7 @@ class StationService
      * @return Station
      * @throws Exception
      */
-    public function getDefaultStation(string $typeName):Station{
+    function getDefaultStation(string $typeName):Station{
         $station= Cache::remember('StationType_default_name_'.$typeName,config('rarelyChange'), function ()use($typeName) {
             $stationType= StationType::query()->where('name',$typeName)->orderBy('id')->get('id')->first();
             if(!$stationType) throw new Exception('指定站类型获取不到');
@@ -25,4 +25,15 @@ class StationService
         if(!$station)throw new Exception('默认站获取不到');
         return $station;
     }
+
+    function broadcast($station_id, $json_data){
+        //...
+        //event(new BroadcastToStation($station_id,$json_data))
+    }
+
+    function broadcastBinMonitor($station_id, ){
+        //...
+        //$this->broadcast($station_id, $json_data)
+    }
+
 }

+ 4 - 3
app/Services/StationTaskBatchService.php

@@ -38,7 +38,8 @@ class StationTaskBatchService
         $station=$this->stationService->getDefaultStation('料箱出货口');
         $id_stationMissionBatchType=$this->stationTaskBatchTypeService->firstByWhere('name','U型线分捡');
 
-        foreach ($batches as &$batch){
+        $batches_handled=[];
+        foreach ($batches as $batch){
             if ($batch['status']=='未处理'){
                 $stationMissionBatches_toCreate->push([
                     'batch_id'=>$batch['id'],
@@ -46,10 +47,10 @@ class StationTaskBatchService
                     'station_mission_batch_type_id'=> $id_stationMissionBatchType,
                     'status'=>'待处理'
                 ]);
-                $batch = '已处理';
+                $batches_handled[]=$batch;
             }
         }
-        $this->batchService->updateWhereIn('id',data_get($batches,'*.id'),['status'=>'处理中']);
+        $this->batchService->updateWhereIn('id',data_get($batches_handled,'*.id'),['status'=>'处理中']);
         $this->insert($stationMissionBatches_toCreate->toArray());
         return $stationMissionBatches_toCreate;
     }

+ 7 - 0
app/Station.php

@@ -7,4 +7,11 @@ use Illuminate\Database\Eloquent\Model;
 class Station extends Model
 {
     protected $fillable=['name', 'code', 'station_type_id','sequence','parent_id'];
+
+    public function type(){
+        return $this->belongsTo(StationType::class,'station_type_id');
+    }
+    public function parent(){
+        return $this->belongsTo(Station::class,'parent_id','id');
+    }
 }

+ 10 - 0
app/StationTask.php

@@ -0,0 +1,10 @@
+<?php
+
+namespace App;
+
+use Illuminate\Database\Eloquent\Model;
+
+class StationTask extends Model
+{
+    protected $fillable = ['station_id', 'station_type_id'];
+}

+ 10 - 0
app/StationTaskType.php

@@ -0,0 +1,10 @@
+<?php
+
+namespace App;
+
+use Illuminate\Database\Eloquent\Model;
+
+class StationTaskType extends Model
+{
+    //
+}

+ 12 - 0
database/factories/StationTaskFactory.php

@@ -0,0 +1,12 @@
+<?php
+
+/** @var \Illuminate\Database\Eloquent\Factory $factory */
+
+use App\StationTask;
+use Faker\Generator as Faker;
+
+$factory->define(StationTask::class, function (Faker $faker) {
+    return [
+        //
+    ];
+});

+ 12 - 0
database/factories/StationTaskTypeFactory.php

@@ -0,0 +1,12 @@
+<?php
+
+/** @var \Illuminate\Database\Eloquent\Factory $factory */
+
+use App\StationTaskType;
+use Faker\Generator as Faker;
+
+$factory->define(StationTaskType::class, function (Faker $faker) {
+    return [
+        //
+    ];
+});

+ 2 - 2
database/migrations/2020_11_30_140958_create_stations_table.php

@@ -19,13 +19,13 @@ class CreateStationsTable extends Migration
             $table->id();
             $table->integer('parent_id')->index()->nullable();
             $table->string('name')->index()->nullable();
-            $table->string('code')->index()->nullable()->comment('机器编码');
+            $table->string('code')->unique()->nullable()->comment('机器编码');
             $table->integer('station_type_id')->index();
             $table->integer('sequence')->index()->nullable();
             $table->timestamps();
         });
         $stationType= StationType::query()->firstOrCreate(['name'=>'料箱出货口']);
-        $station= Station::query()->firstOrCreate(['code'=>'BIN-OUT01']);
+        $station= Station::query()->firstOrCreate(['code'=>'BIN-OUT01','station_type_id'=>$stationType['id']]);
         $station['sequence']=1;
         $station['station_type_id']=$stationType['id'];
         $station->save();

+ 1 - 1
database/migrations/2020_11_30_174327_create_station_task_commodities_table.php

@@ -20,7 +20,7 @@ class CreateStationTaskCommoditiesTable extends Migration
             $table->integer('commodity_id')->index();
             $table->integer('amount')->default(0);
             $table->integer('order_id')->index();
-            $table->enum('status',['待处理','挂起','处理中','完成','异常','取消'])->index();  //联合索引
+            $table->enum('status',['待处理','挂起','处理中','完成','异常','取消'])->index();  //联合索引
             $table->index(['station_id','material_box_id','status'],'station_task_commodities_s_m_s_index');
             $table->timestamps();
         });

+ 38 - 0
database/migrations/2020_12_03_144334_add_monitor_default_station_and_station_hardware_id_column.php

@@ -0,0 +1,38 @@
+<?php
+
+use App\Station;
+use App\StationType;
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class AddMonitorDefaultStationAndStationHardwareIdColumn extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('stations', function (Blueprint $table) {
+            $table->string('remark')->nullable();
+        });
+        $stationType= StationType::query()->firstOrCreate(['name'=>'料箱监视器']);
+        $station= Station::query()->firstOrCreate(['name'=>'料箱监视器01']);
+        $station['sequence']=1;
+        $station['station_type_id']=$stationType['id'];
+        $station->save();
+    }
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('stations', function (Blueprint $table) {
+            $table->dropColumn('remark');
+        });
+    }
+}

+ 32 - 0
database/migrations/2020_12_04_160314_create_station_task_types_table.php

@@ -0,0 +1,32 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class CreateStationTaskTypesTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('station_task_types', function (Blueprint $table) {
+            $table->id();
+            $table->string('name')->index();
+            $table->timestamps();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('station_task_types');
+    }
+}

+ 35 - 0
database/migrations/2020_12_04_175932_create_station_tasks_table.php

@@ -0,0 +1,35 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class CreateStationTasksTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('station_tasks', function (Blueprint $table) {
+            $table->id();
+            $table->integer('station_id');
+            $table->integer('station_type_id')->nullable()->index();
+            $table->enum('status',['待处理','挂起','处理中','完成','异常','取消'])->index();
+            $table->index('station_id','station_type_id','status');
+            $table->timestamps();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('station_tasks');
+    }
+}

+ 32 - 0
database/migrations/2020_12_07_111922_add_column_handled_amount_of_station_task_commodities.php

@@ -0,0 +1,32 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class AddColumnHandledAmountOfStationTaskCommodities extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('station_task_commodities', function (Blueprint $table) {
+            $table->integer('handled_amount')->default(0);
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('station_task_commodities', function (Blueprint $table) {
+            $table->dropColumn('handled_amount');
+        });
+    }
+}

+ 16 - 0
database/seeds/StationTaskSeeder.php

@@ -0,0 +1,16 @@
+<?php
+
+use Illuminate\Database\Seeder;
+
+class StationTaskSeeder extends Seeder
+{
+    /**
+     * Run the database seeds.
+     *
+     * @return void
+     */
+    public function run()
+    {
+        //
+    }
+}

+ 16 - 0
database/seeds/StationTaskTypeSeeder.php

@@ -0,0 +1,16 @@
+<?php
+
+use Illuminate\Database\Seeder;
+
+class StationTaskTypeSeeder extends Seeder
+{
+    /**
+     * Run the database seeds.
+     *
+     * @return void
+     */
+    public function run()
+    {
+        //
+    }
+}

BIN
resources/images/demoBin.png


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

@@ -1,4 +1,4 @@
-<div class="collapse navbar-collapse" id="navbarSupportedContent">
+<div class="collapse navbar-collapse nav1" id="navbarSupportedContent">
     <!-- Left Side Of Navbar -->
     <ul class="navbar-nav mr-auto nav-tabs nav font-weight-bold" id="nav1" style="padding-top: 10px">
         @can('退货管理')

+ 5 - 5
resources/views/order/issue/index.blade.php

@@ -22,21 +22,21 @@
                     @cannot('订单管理-问题件-客户不可见')
                         <span class="ml-1">
                         <button type="button" class="btn btn-outline-dark btn-sm form-control-sm   tooltipTarget" @click="endOrderIssue" :class="[checkData.length>0?'btn-dark text-light':'']">
-                            完结
+                            批量完结
                         </button>
                     </span>
                     @endcannot
                     @can('订单管理-问题件-删除')
                         <span class="ml-1">
                         <button type="button" class="btn btn-outline-dark btn-sm form-control-sm  tooltipTarget" @click="batchDeleteOrderIssue">
-                            删除
+                            批量删除
                         </button>
                     </span>
                     @endcan
                     @can('订单管理-问题件-编辑')
                         <span class="ml-1">
                         <button type="button" class="btn btn-outline-dark btn-sm form-control-sm  tooltipTarget" @click="batchStoreLogsModel">
-                            修改
+                            批量处理说明
                         </button>
                     </span>
                     @endcan
@@ -47,13 +47,13 @@
                     </span>
                     <span class="ml-1">
                         <button type="button" class="btn btn-outline-dark btn-sm form-control-sm  tooltipTarget" @click="importdispose">
-                            导入处理
+                            批量导入处理
                         </button>
                     </span>
                     @can('订单管理-问题件-财务确认')
                     <span class="ml-1">
                         <button type="button" class="btn btn-outline-dark btn-sm form-control-sm  tooltipTarget" @click="financeConfirm">
-                            财务确认
+                            批量财务确认
                         </button>
                     </span>
                     @endcan

+ 53 - 0
resources/views/station/monitor/index.blade.php

@@ -0,0 +1,53 @@
+
+@extends('layouts.app')
+@section('title')监视器 - 站管理@endsection
+
+@section('content')
+    <span id="nav2">
+        @component('station.menu')@endcomponent
+        @component('station.monitor.menu')@endcomponent
+    </span>
+    <div class="container-fluid">
+        <div class="card">
+            <div class="card-body">
+                @if(Session::has('successTip'))
+                    <div class="alert alert-success h1">{{Session::get('successTip')}}</div>
+                @endif
+                <table class="table table-striped table-sm" id="list">
+                    <tr>
+                        <th>设备ID</th>
+                        <th>显示器名称</th>
+                        <th>父级设备</th>
+                        <th>硬件ID</th>
+                        <th>备注</th>
+                        <th>录入时间</th>
+                    </tr>
+                    <tr v-for="station in stations">
+                        <td class="text-muted">@{{station.id}}</td>
+                        <td>
+                            <a :href="'{{url('station/monitor/')}}'+'/'+station.id" target="_blank">
+                                <button class="btn btn-outline-info" >@{{station.name}}</button>
+                            </a>
+                        </td>
+                        <td>@{{station.parent?station.parent.name:''}}</td>
+                        <td>@{{station.code}}</td>
+                        <td>@{{station.remark}}</td>
+                        <td class="text-muted">@{{station.created_at}}</td>
+                    </tr>
+                </table>
+                {{$stations->links()}}
+            </div>
+        </div>
+    </div>
+@endsection
+
+@section('lastScript')
+    <script>
+        new Vue({
+            el:"#list",
+            data:{
+                stations:{!! json_encode($stations->toArray()['data'])??'""' !!},
+            },
+        });
+    </script>
+@endsection

+ 0 - 520
resources/views/station/monitor/indexl.blade.php

@@ -1,520 +0,0 @@
-@extends('layouts.app')
-@section('title')监视器列表 - 站管理@endsection
-
-@section('content')
-    <div id="nav2">
-        @component('station.menu')@endcomponent
-        @component('station.monitor.menu')@endcomponent
-    </div>
-    <div class="container-fluid">
-        <div>
-            <div class="d-none" id="list">
-                @if(Session::has('successTip'))
-                    <div class="alert alert-success h1">{{Session::get('successTip')}}</div>
-                @endif                <div id="form_div"></div>
-                <span class="dropdown">
-                    <button class="btn btn-outline-dark btn-sm form-control-sm dropdown-toggle tooltipTarget":class="[rejectedBills_checkBoxes.length>0?'btn-dark text-light':'']"
-                            data-toggle="dropdown" title="导出所有页将会以搜索条件得到的筛选结果,将其全部记录(每一页)导出">
-                        导出Excel
-                    </button>
-                    <div class="dropdown-menu">
-                        <a class="dropdown-item" @click="exportExcel(false)" href="javascript:">导出勾选内容</a>
-                        <a class="dropdown-item" @click="exportExcel(true)" href="javascript:">导出所有页</a>
-                    </div>
-                </span>
-                @can('退货管理-编辑')
-                    {{--                                        <select name="" class="tooltipTarget form-control-sm" style="vertical-align: middle"--}}
-                    {{--                                                title="将勾选记录的入库状态设定为是或否,仅对未完结状态的记录有效" @change="setIsLoaded_batch"--}}
-                    {{--                                                :class="[rejectedBills_checkBoxes.length>0?'btn-dark':'btn-outline-dark']">--}}
-                    {{--                                            <option value="">修改入库</option>--}}
-                    {{--                                            <option value="1">设定为是</option>--}}
-                    {{--                                            <option value="0">设定为否</option>--}}
-                    {{--                                            <option value="null">无需入库</option>--}}
-                    {{--                                            <option value="2">待推单</option>--}}
-                    {{--                                        </select>--}}
-                @endcan
-                @can('退货管理-审核')
-                    <span class="btn btn-sm" @click="checkAll" style="cursor: pointer"
-                          :class="[rejectedBills_checkBoxes.length>0?'btn-dark':'btn-outline-dark']">审核</span>
-                @endcan
-                @can('退货管理-编辑')
-                    <span class="btn btn-sm" @click="finishAll" style="cursor: pointer"
-                          :class="[rejectedBills_checkBoxes.length>0?'btn-dark':'btn-outline-dark']">完结</span>
-                @endcan
-                <span class="dropdown">
-                    <button class="btn btn-outline-dark btn-sm form-control-sm dropdown-toggle tooltipTarget":class="[rejectedBills_checkBoxes.length>0?'btn-dark text-light':'']"
-                            data-toggle="dropdown" title="将勾选记录的入库状态设定为是或否,仅对未完结状态的记录有效">
-                        修改入库
-                    </button>
-                    <div class="dropdown-menu">
-                        <a class="dropdown-item" @click="setIsLoaded_batch(1)" href="javascript:">设定为是</a>
-                        <a class="dropdown-item" @click="setIsLoaded_batch(0)" href="javascript:">设定为否</a>
-                        <a class="dropdown-item" @click="setIsLoaded_batch('null')" href="javascript:">无需入库</a>
-                        <a class="dropdown-item" @click="setIsLoaded_batch(2)" href="javascript:">待推单</a>
-                        <a class="dropdown-item" @click="setIsLoaded_batch(4)" href="javascript:">待确认</a>
-                    </div>
-                </span>
-
-                @can('退货管理-编辑')
-                    <a class="btn btn-sm btn-outline-dark" href="{{url('rejected/importRejectedNumber')}}" style="cursor: pointer">导入修改</a>
-                @endcan
-                <span for="checkSelectingAll" class="d-none" id="cloneCheckAll">
-                    <input type="checkbox" class="form-control-sm tooltipTarget" title="全选"
-                           id="checkSelectingAll" @click="checkBoxAllToggle($event)">
-                </span>
-
-
-                <table class="table table-striped table-sm table-bordered table-hover text-nowrap d-none" id="headerRoll" ></table>
-                <table class="table table-striped table-sm table-bordered table-hover text-nowrap" style="background: #fff;" id="headerParent">
-                    <tr id="header"></tr>
-                    <tr v-for="(rejectedBill,i) in rejectedBills" :data-id="rejectedBill.id">
-                        <td>
-                            <input type="checkbox" v-model="rejectedBills_checkBoxes" :value="rejectedBill.id"/>
-                        </td>
-                        <td class="text-nowrap">
-{{--                            <span class="text-muted" style="opacity:0.7">@{{ i+1 }}</span> <span v-if="issueIds.includes(rejectedBill.id)" class="badge badge-pill badge-danger">问题件</span>--}}
-                            <span class="text-muted" style="opacity:0.7">@{{ i+1 }}</span> <span v-if="rejectedBill.order_issue" class="badge badge-pill badge-danger">问题件</span>
-                        </td>
-                        <td class="text-muted">
-                            <span v-if="rejectedBill.is_checked==1" class="text-success">
-                                <span class="fa fa-check-square"></span> @{{ rejectedBill.checked_numbers }}
-                            </span>
-                            <span v-else>
-                                未审核
-                            </span>
-                        </td>
-                        <td class="" :class="[rejectedBill.is_finished==1?'text-success':'text-muted']">@{{rejectedBill.is_finished | yesNo}}</td>
-                        <td class="" :class="[rejectedBill.is_loaded==1?'text-success':'text-muted']">
-                            <span v-if="rejectedBill.is_loaded==4">
-                                <button class="btn btn-sm btn-info" @click="confirmBeStored($event,rejectedBill.id)">确定入库</button>
-                            </span>
-                            <span v-else>@{{rejectedBill.is_loaded | yesNoIsLoaded}}</span>
-                        </td>
-                        <td class="text-muted">@{{rejectedBill.created_at}}</td>
-                        <td><span v-if="rejectedBill.owner">@{{rejectedBill.owner.name}}</span></td>
-                        <td>@{{rejectedBill.logistic_number_return}}</td>
-                        <td class="text-muted"><span v-if="rejectedBill.logistic">@{{rejectedBill.logistic.name}}</span></td>
-                        <td>@{{rejectedBill.order_number}}</td>
-                        <td class="text-muted">@{{rejectedBill.sender}}</td>
-                        <td class="text-muted">@{{rejectedBill.mobile_sender}}</td>
-                        <td>@{{rejectedBill.logistic_number}}</td>
-                        @cannot('退货管理-到付费用')<td class="text-muted">@{{rejectedBill.fee_collected}}</td>@endcannot
-                        @can('退货管理-查询-客户定义-爱奇艺')<td class="text-muted">@{{rejectedBill.common_01}}</td>@endcan
-                        <td class="text-muted">@{{rejectedBill.common_02}}</td>
-                        <td class="text-muted">@{{rejectedBill.goods_amount}}</td>
-                        <td colspan="8">
-                            <div class="text-center" v-if="rejectedBill.detailFolding && rejectedBill.items.length>1">
-                                <a href="javascript:;" @click="rejectedBill.detailFolding=false">@{{rejectedBill.goods_amount}}件商品,点击展开明细</a></div>
-                            <table class="table table-sm" v-else>
-                                <tr v-for="item in rejectedBill.items">
-                                    <td style="width: 140px">@{{item.barcode_goods}}</td>
-                                    <td style="width: 140px">@{{item.name_goods}}</td>
-                                    <td style="width: 30px">@{{item.amount}}</td>
-                                    <td class="text-muted">@{{item.quality_label}}</td>
-                                    <td class="text-muted">@{{item.batch_number}}</td>
-                                    <td class="text-muted">@{{item.made_at}}</td>
-                                    <td class="text-muted">@{{item.validity_at}}</td>
-                                    <td class="text-muted">@{{item.remark}}</td>
-                                </tr>
-                                <tr v-if="!rejectedBill.detailFolding && rejectedBill.items.length>1">
-                                    <td colspan="8" class="text-center">
-                                        <a href="javascript:;" @click="rejectedBill.detailFolding=true">点击收起明细</a>
-                                    </td>
-                                </tr>
-                            </table>
-                        </td>
-                        {{--                        <td class="text-muted" style="max-width: 190px">@{{rejectedBill.remark}}</td>--}}
-                        <td style="min-width:150px;">
-                            @can('退货管理-编辑备注')
-                                <textarea class="form-control form-control-sm"   :rows="rejectedBill.remark?Math.ceil(rejectedBill.remark.length/8):2"  cols=8
-                                          @change="updateRejectedBillRemark($event)" :value="rejectedBill.remark" :data_id="rejectedBill.id">@{{ rejectedBill.remark }}</textarea>
-                            @else
-                                <span>@{{rejectedBill.remark}}</span>
-                            @endcan
-                        </td>
-                        <td class="text-muted">@{{rejectedBill.operator_name}}</td>
-                        @can('退货管理-编辑')
-                            <td>
-                                <span v-if="rejectedBill.is_finished!=1">
-                                @can('退货管理-编辑')
-                                        <button class="btn btn-outline-info btn-sm tooltipTarget" @click="edit(rejectedBill.id)">改</button>
-                                    @endcan
-                                    @can('退货管理-删除')
-                                        <button
-                                            class="btn btn-outline-danger btn-sm tooltipTarget" @click="destroy(rejectedBill)">删</button>
-                                    @endcan
-                                </span>
-                                <span v-else class="text-muted">已完结</span>
-                            </td>
-                        @endcan
-                    </tr>
-                </table>
-                <div class="text-info h5 btn btn">{{$rejectedBills->count()}}/{{$rejectedBills->total()}}</div>
-                {{$rejectedBills->appends($paginateParams)->links()}}
-            </div>
-        </div>
-    </div>
-@endsection
-
-@section('lastScript')
-    <script>
-        let rejectedBills={!! $rejectedBills->toJson()!!}.data;
-        rejectedBills.forEach(function(rejectedBill){
-            rejectedBill.detailFolding=true;
-        })
-        let owners=[
-                @foreach($owners as $owner)
-            {id:'{{$owner->id}}',name:'{{$owner->name}}'},
-            @endforeach
-        ];
-        let logistics=[
-            @foreach($logistics as $logistic)
-            {!! $logistic !!},
-            @endforeach
-        ];
-        let qualityLabels=[
-                @foreach($qualityLabels as $qualityLabel)
-            {id:'{{$qualityLabel->id}}',name:'{{$qualityLabel->name}}'},
-            @endforeach
-        ];
-            @if(isset($paginateParams))
-        let paginateParams={!! json_encode($paginateParams) !!};
-            @endif
-        let total='{{$rejectedBills->total()}}';
-        let editUrl = "{{url('rejectedBill')}}/";
-        let destroyUrl = "{{url('rejectedBill')}}/";
-        let ajaxConfirmBeStoredUrl = '{{url("apiLocal/rejectedBill/apiConfirmBeStored")}}';
-        let ajaxCheckUrl = '{{url("apiLocal/rejectedBill/apiSetIsLoadedAll")}}';
-        let ajaxCheckAllURL = '{{url("rejected/ajaxCheckAll")}}';
-        let ajaxFinishAllUrl='{{url("rejected/ajaxFinishAll")}}';
-        let csrfInput='@csrf';
-    </script>
-    <script src="{{mix('js/queryForm/export.js')}}"></script>
-    <script src="{{mix('js/queryForm/queryForm.js')}}"></script>
-    <script type="text/javascript" src="{{mix('js/queryForm/header.js')}}"></script>
-    <script>
-        let vue = new Vue({
-            el:"#list",
-            data:{
-                rejectedBills:rejectedBills,
-                rejectedBills_checkBoxes:[],
-                owners:[
-                        @foreach($owners as $owner)
-                    {name:'{{$owner->id}}',value:'{{$owner->name}}'},
-                    @endforeach
-                ],
-                {{--issueIds:{!! $issueIds !!},--}}
-                logistics:[
-                        @foreach($logistics as $logistic)
-                    {name:'{{$logistic->id}}',value:'{{$logistic->name}}'},
-                    @endforeach
-                ],
-                qualityLabels:[
-                        @foreach($qualityLabels as $qualityLabel)
-                    {name:'{{$qualityLabel->id}}',value:'{{$qualityLabel->name}}'},
-                    @endforeach
-                ],
-            },
-            mounted:function(){
-                $(".tooltipTarget").tooltip({'trigger':'hover'});
-                $('#list').removeClass('d-none');
-                let data=[        ];
-                this.form=new query({
-                    el:"#form_div",
-                    condition:data
-                });
-                this.form.init();
-                let _this = this;
-                let column = [
-                    {name:'cloneCheckAll',customization:true,type:'checkAll',column:'id',
-                        dom:$('#cloneCheckAll').removeClass('d-none'), neglect: true},
-                    {name:'index',value: '序号', neglect: true},
-                    {name:'checked_numbers',value: '是否审核', neglect: true},
-                    {name: 'is_finished', value: '是否完结',neglect: true},
-                    {name: 'is_loaded', value: '是否入库', neglect: true},
-                    {name:'created_at',value: '创建时间'},
-                    {name: 'owner_name', value: '客户名称', neglect: true},
-                    {name: 'logistic_number_return', value: '退回单号'},
-                    {name: 'logistic_name', value: '退回公司', neglect: true},
-                    {name:'order_number',value: '订单号'},
-                    {name: 'sender', value: '姓名'},
-                    {name: 'mobile_sender', value: '电话'},
-                    {name: 'logistic_number', value: '原单单号'},
-                        @cannot('退货管理-到付费用'){name:'fee_collected',value: '到付费用',neglect: true},@endcannot
-                        @can('退货管理-查询-客户定义-爱奇艺'){name:'common_01',value: '寄件方省'},@endcan
-                    {name:'common_02',value: '重量'},
-                    {name:'goods_amount',value: '商品总数'},
-                    {name:'item_barcode_goods',value: '商品条码', neglect: true},
-                    {name: 'item_name_goods', value: '商品名称', neglect: true},
-                    {name: 'item_amount', value: '数量', neglect: true},
-                    {name:'item_quality_label',value: '是否正品', neglect: true},
-                    {name:'item_batch_number',value: '批次号', neglect: true},
-                    {name:'item_made_at',value: '生产日期', neglect: true},
-                    {name:'item_validity_at',value: '效期', neglect: true},
-                    {name:'item_remark',value: '备注', neglect: true},
-                    {name:'remark',value: '退单备注'},
-                    {name:'operator_name',value: '录入人'},
-                        @can('退货管理-编辑','退货管理-删除'){name:'remove',value: '操作', neglect: true},@endcan
-                ];
-                setTimeout(function () {
-                    let header = new Header({
-                        el: "#header",
-                        column: column,
-                        data: _this.rejectedBills,
-                        restorationColumn: 'id',
-                        fixedTop:($('#form_div').height())+2,
-                        offset:0.5,
-                        vue:vue,
-                        checkbox : 'rejectedBills_checkBoxes',
-                    });
-                    header.init();
-                },0);
-            },
-            watch:{
-                rejectedBills_checkBoxes:{
-                    handler(){
-                        if (this.rejectedBills_checkBoxes.length === this.rejectedBills.length){
-                            document.querySelector('#checkSelectingAll').checked = true;
-                            document.querySelector('#checkSelectingAll_temp').checked = true;
-                        }else {
-                            document.querySelector('#checkSelectingAll').checked = false;
-                            document.querySelector('#checkSelectingAll_temp').checked = false;
-                        }
-                    },
-                    deep:true
-                }
-            },
-            methods:{
-                updateRejectedBillRemark:function (e) {
-                    let target = $(e.target);
-                    let _this = this;
-                    let id = target.attr('data_id');
-                    let remark = target.val();
-                    let ajaxUrl= '{{url("rejected/changeRejectedBillRemark")}}';
-                    axios.post(ajaxUrl,{'id':id,'remark':remark}).then(function (response) {
-                        if(response.data.success){
-                            _this.updateRejectedBills(id,remark);
-                            tempTip.setDuration(2000);
-                            tempTip.showSuccess('备注修改成功');
-                        }else{
-                            tempTip.setDuration(3000);
-                            tempTip.show('备注修改失败!'+response.data.fail_info);
-                        }
-                    }).catch(function (err) {
-                        tempTip.setDuration(3000);
-                        tempTip.show('备注修改失败!网络异常:'+err);
-                    });
-
-                },
-                // 更新表格数据
-                updateRejectedBills(id,remark){
-                    this.rejectedBills.some(function(rejectedBill){
-                        if(parseInt(rejectedBill.id) === parseInt(id)){
-                            rejectedBill.remark = remark;
-                            return true;
-                        }
-                    })
-                },
-                edit(id){
-                    window.location.href=editUrl+id+"/edit";
-                    // window.open(editUrl+id+"/edit",'_blank') ;
-                },
-                destroy:function(rejectedBill){
-                    if(!confirm('确定要删除退货信息“' + rejectedBill.owner.name+':'+rejectedBill.logistic_number_return+ '”吗?')){return;}
-                    let data=this;
-                    let url = destroyUrl+rejectedBill.id;
-                    axios.delete(url,{id:rejectedBill.id})
-                        .then(function (response) {
-                            if(response.data.success){
-                                for (let i = 0; i < data.rejectedBills.length; i++) {
-                                    if (data.rejectedBills[i].id===rejectedBill.id){
-                                        data.rejectedBills.splice(i,1);
-                                        break;
-                                    }
-                                }
-                                tempTip.setDuration(1000);
-                                tempTip.showSuccess('删除退货信息"'+rejectedBill.owner.name+':'+rejectedBill.logistic_number_return+'"成功!')
-                            }else{
-                                tempTip.setDuration(1000);
-                                tempTip.show('删除退货信息"'+rejectedBill.owner.name+':'+rejectedBill.logistic_number_return+'"失败!')
-                            }
-                        })
-                        .catch(function (err) {
-                            tempTip.setDuration(3000);
-                            tempTip.show('删除退货信息失败!'+'网络错误:' + err);
-                        });
-                },
-                cancelCheckConfirmAll:function(){
-                    $('#checkConfirmingAll').tooltip('hide');
-                    setTimeout(function () {
-                        $(".tooltipTarget").tooltip({'trigger':'hover'})
-                    }, 10);
-                    this.rejectedBills.forEach(function(rejectedBill){
-                        if(rejectedBill.is_checked===-1)
-                            rejectedBill.is_checked='0';
-                    })
-                },
-                setIsLoaded_batch:function(val){
-                    let _this=this;
-                    if(_this.rejectedBills_checkBoxes.length===0){
-                        tempTip.show('没有勾选记录');
-                        $(e.target).val("");
-                        return;
-                    }
-                    let is_loaded=0;
-                    let is_loadedLabel='否';
-                    if(parseInt(val)===1){
-                        is_loaded=1;
-                        is_loadedLabel='是';
-                    }else if(parseInt(val)===2){
-                        is_loaded=2;
-                        is_loadedLabel='待推单';
-                    }else if(parseInt(val)===4){
-                        is_loaded=4;
-                        is_loadedLabel='待确认';
-                    }else if(val==="null"){
-                        is_loaded='null';
-                        is_loadedLabel='无需入库';
-                    }
-                    if(!confirm("确定要标记所有勾选入库情况为'"+is_loadedLabel+"'吗")){return;}
-                    axios.post(ajaxCheckUrl,{ids:_this.rejectedBills_checkBoxes,is_loaded:is_loaded}).then(function(response){
-                        if(response.data.success){
-                            _this.rejectedBills_checkBoxes.forEach(function(id){
-                                _this.rejectedBills.forEach(function(bill){
-                                    if(bill.id===id){
-                                        bill.is_loaded=is_loaded;
-                                    }
-                                });
-                            });
-                            tempTip.setDuration(1000);
-                            tempTip.showSuccess('修改勾选记录的入库状态成功');
-                        }else{
-                            tempTip.setDuration(2500);
-                            tempTip.show('修改勾选记录的入库状态失败,错误:'+response.data.fail_info);
-                        }
-                    }).catch(function (e) {
-                        alert('网络连接错误:'+e);
-                        tempTip.setDuration(2500);
-                        tempTip.show('审核勾选内容失败,网络连接错误:'+e);
-
-                    });
-                    $(e.target).val("")
-                },
-                checkBoxAllToggle:function(e){
-                    if (e.target.checked) {
-                        this.rejectedBills.forEach((el) => {
-                            if (!el.id) this.rejectedBills_checkBoxes.push(el.id);
-                            if (el.id && this.rejectedBills_checkBoxes.indexOf(el.id) == '-1') {
-                                this.rejectedBills_checkBoxes.push(el.id);
-                            }
-                        });
-                    } else {
-                        this.rejectedBills_checkBoxes = [];
-                    }
-                },
-                checkAll:function(){
-                    let _this=this;
-                    if(_this.rejectedBills_checkBoxes.length===0){
-                        tempTip.show('没有勾选记录');
-                        return
-                    }
-                    if(!confirm("确定要标记所有勾选内容为'已审核'吗")){return;}
-                    axios.post(ajaxCheckAllURL,{ids:_this.rejectedBills_checkBoxes}).then(function(response){
-                        if(response.data.success){
-                            response.data.rejecteds.forEach(function (rejected) {
-                                _this.rejectedBills.forEach(function(rejectedBill){
-                                    if(parseInt(rejectedBill.id)===parseInt(rejected.id)){
-                                        rejectedBill.is_checked=1;
-                                        rejectedBill.checked_numbers=rejected.checked_numbers;
-                                    }
-                                });
-                            });
-                            tempTip.setDuration(1000);
-                            tempTip.showSuccess('审核勾选内容成功');
-                        }else{
-                            tempTip.setDuration(2500);
-                            tempTip.show('审核勾选内容失败,错误:'+response.data.fail_info);
-                        }
-                    }).catch(function (e) {
-                        alert('网络连接错误:'+e);
-                        tempTip.setDuration(2500);
-                        tempTip.show('审核勾选内容失败,网络连接错误:'+e);
-                    })
-                },
-                confirmBeStored:function($e,id){
-                    let _this=this;
-                    axios.post(ajaxConfirmBeStoredUrl,{id:id}).then(function(response){
-                        if(response.data.success){
-                            _this.rejectedBills.forEach(function(rejectedBill){
-                                if(rejectedBill.id===id){
-                                    rejectedBill.is_loaded=1;
-                                }
-                            });
-                            tempTip.setDuration(1000);
-                            tempTip.showSuccess('确认入库成功');
-                        }else{
-                            tempTip.setDuration(2500);
-                            tempTip.okWindow('数据异常无法确认!请在WMS确定入库状态后,勾选该条目手动修改相应入库状态!','知道了')
-                        }
-                    }).catch(function (e) {
-                        alert('确认失败,网络连接错误:'+e);
-                        tempTip.setDuration(2500);
-                        tempTip.show('确认失败,网络连接错误:'+e);
-
-                    })
-                },
-                finishAll:function(){
-                    let _this=this;
-                    if(_this.rejectedBills_checkBoxes.length===0){
-                        tempTip.show('没有勾选记录');
-                        return
-                    }
-                    if(!confirm("确定要标记所有勾选内容为'已完结'吗")){return;}
-                    axios.post(ajaxFinishAllUrl,{ids:_this.rejectedBills_checkBoxes}).then(function(response){
-                        if(response.data.success){
-                            _this.rejectedBills.forEach(function(rejectedBill){
-                                _this.rejectedBills_checkBoxes.forEach(function (checkedId) {
-                                    if(rejectedBill.id===checkedId){
-                                        rejectedBill.is_finished=1;
-                                    }
-                                });
-                            });
-                            tempTip.setDuration(1000);
-                            tempTip.showSuccess('标记勾选内容为完结成功');
-                        }else{
-                            tempTip.setDuration(2500);
-                            tempTip.show('标记勾选内容为完结失败,错误:'+response.data.fail_info);
-                        }
-                    }).catch(function (e) {
-                        alert('网络连接错误:'+e);
-                        tempTip.setDuration(2500);
-                        tempTip.show('标记勾选内容完结失败,网络连接错误:'+e);
-                    })
-                },
-                exportExcel:function(checkAllSign){
-                    let url = '{{url('rejected/export')}}';
-                    let token='{{ csrf_token() }}';
-                    excelExport(checkAllSign,this.rejectedBills_checkBoxes,url,total,token);
-                },
-
-            },
-            filters:{
-                yesNo:function (val) {
-                    if(!val||val===0||val==='0'){return '否'}
-                    return '是'
-                },
-                yesNoIsLoaded:function (val) {
-                    switch(val){
-                        case 0:case '0':return '否';
-                        case 1:case '1':return '是';
-                        case 2:case '2':return '待推单';
-                        case 3:case '3':return '交互异常';
-                        case 4:case '4':return '待确认';
-                        case null:case 'null':return '无需入库';
-                    }
-                    return '';
-                }
-            }
-        });
-    </script>
-@endsection

+ 5 - 8
resources/views/station/monitor/menu.blade.php

@@ -1,15 +1,12 @@
-<div id="nav2">
-    @component('station.menu')
-    @endcomponent
-    <div class="container-fluid nav3">
-        <div class="card menu-third" >
+
+<div class="container-fluid nav3">
+    <div class="card" >
             <ul class="nav nav-pills">
                 @can('站管理-监视器')
                     <li class="nav-item">
-                        <a class="nav-link" href="{{url('inventory/statement/changeInventory?range=1')}}" :class="{active:isActive('changeInventory',3)}">监视器</a>
+                        <a class="nav-link" href="{{url('station/monitor')}}" :class="{active:isActive('',3)}">列表</a>
                     </li> @endcan
+                {{$slot}}
             </ul>
-        </div>
     </div>
 </div>
-

+ 120 - 0
resources/views/station/monitor/show.blade.php

@@ -0,0 +1,120 @@
+@extends('layouts.app')
+@section('title'){{$station->name}} - 监视器 - 站@endsection
+
+@section('content')
+    <div id="nav2">
+        @component('station.menu')
+        @endcomponent
+        @component('station.monitor.menu')
+                    <li class="nav-item">
+                        <a class="nav-link" href="{{URL::current()}}" :class="{active:isActive('{{$station->id}}',3)}">显示:{{$station->name}}</a>
+                    </li>
+        @endcomponent
+    </div>
+    <div class="container-fluid body">
+        <div class="card">
+            <div class="card-body">
+                <div class="row border" style="opacity: 0.75">
+                    <div class="col-4 text-center h3 py-2 font-weight-bold text-info">宝时云仓</div>
+                    <div class="col text-center  h3 py-2 text-muted">智能分拣</div>
+                </div>
+                <div class="row pt-3">
+                    <div class="col-4 text-center">
+                        <div class="row">
+                            <div class="col py-3 h4">
+                                波次号:
+                            </div>
+                            <div class="col py-3 h4">
+
+                            </div>
+                        </div>
+                        <div class="row">
+                            <div class="col py-3 h4">
+                            </div>
+                            <div class="col py-3 h4 text-muted">
+                                {条码}
+                            </div>
+                        </div>
+                        <div class="row">
+                            <div class="col py-3 h4">
+                                料箱号:
+                            </div>
+                            <div class="col py-3 h4">
+
+                            </div>
+                        </div>
+                        <div class="row">
+                            <div class="col py-3 h4">
+                            </div>
+                            <div class="col py-3 h4 text-muted">
+                                {条码}
+                            </div>
+                        </div>
+                        <div class="row pt-5">
+                            <div class="col"><img src="{{asset('images/demoBin.png')}}" alt="" class="img"></div>
+                        </div>
+                    </div>
+                    <div class="col text-center">
+                        <div class="row">
+                            <div class="col py-3 h4">订单号:</div>
+                            <div class="col py-3 h4">N</div>
+                        </div>
+                        <div class="row">
+                            <div class="col py-1">数量</div>
+                            <div class="col py-1">0/0</div>
+                            <div class="col py-1 text-muted">异常</div>
+                            <div class="col py-1"></div>
+                        </div>
+                        <div class="row">
+                            <div class="col py-1">
+                                <table class="table table-striped border">
+                                    <tr>
+                                        <th class="py-2">序号</th>
+                                        <th class="py-2">商品</th>
+                                        <th class="py-2">数量</th>
+                                        <th class="py-2">条码</th>
+                                    </tr>
+                                    <tr>
+                                        <td></td>
+                                        <td></td>
+                                        <td></td>
+                                        <td></td>
+                                    </tr>
+                                    <tr>
+                                        <td></td>
+                                        <td></td>
+                                        <td></td>
+                                        <td></td>
+                                    </tr>
+                                    <tr>
+                                        <td></td>
+                                        <td></td>
+                                        <td></td>
+                                        <td></td>
+                                    </tr>
+                                </table>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+@endsection
+
+@section('lastScript')
+    <script>
+        new Vue({
+            el:"#app",
+            mounted() {
+                $('.navbar,.nav1,.nav2').hide()
+                $('.nav3').on('mouseenter', function () {
+                    $('.navbar,.nav1,.nav2').show();
+                });
+                $('.body').on('mouseenter', function () {
+                    $('.navbar,.nav1,.nav2').hide();
+                });
+            }
+        });
+    </script>
+@endsection

+ 6 - 1
routes/web.php

@@ -601,7 +601,12 @@ Route::group(['prefix'=>'customer'],function(){
 
 /** 站管理 */
 Route::group(['prefix'=>'station'],function(){
-    Route::get('index',function (){return view('station.index');});
+    Route::get('index','StationController@monitorIndex');
+    Route::group(['prefix'=>'monitor'],function(){
+        Route::get('/','StationController@monitorIndex');
+        Route::get('/index','StationController@monitorIndex');
+        Route::get('/{station}','StationController@monitorShow');
+    });
 });
 /** 控制台 */
 Route::group(['prefix'=>'control'],function () {

+ 0 - 0
tests/webApi/CreatesApplication.php → tests/CreatesApplication.php


+ 0 - 0
tests/webApi/TestCase.php → tests/TestCase.php


+ 1 - 1
tests/webApi/thirdPart/haiq/pickStation.http

@@ -6,7 +6,7 @@
 ## * 'mptr' and 'fptr' create a POST request to submit a form with a text or file field (multipart/form-data);
 
 
-POST http://bswas/api/thirdPart/haiq/pickStation/processed
+POST https://was.baoshi56.com/api/thirdPart/haiq/pickStation/processed
 Content-Type: application/json
 
 {"success":true}