Browse Source

Merge branch 'zzd' into zengjun

zhouzhendong 4 years ago
parent
commit
e6e86bd584

+ 0 - 1
app/Exceptions/Handler.php

@@ -89,7 +89,6 @@ class Handler extends ExceptionHandler
                 return response()->json($exception->errors(),200,[],JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES);
             }
             if(strpos($exception->getMessage(),'This action is unauthorized')!==false){
-                dd(debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS));
                 return response()->view('exception.unauthorized');
             }
             if (method_exists($exception,'getStatusCode')) {

+ 45 - 0
app/Http/ApiControllers/LoginController.php

@@ -0,0 +1,45 @@
+<?php
+
+
+namespace App\Http\ApiControllers;
+
+
+use Illuminate\Http\Request;
+use Illuminate\Http\Response;
+
+class LoginController
+{
+    public function login(Request $request):Response
+    {
+        $user_name = $request->get('username','');
+        $password = $request->get('password','');
+        $user = Users::where(['username' => $user_name,'password' => $password])->first();
+        if(!$user)
+        {
+            return response()->json('用戶名或密碼錯誤!');
+        }
+        unset($user['password']);
+        //登录成功token
+        $token = $this->getJWTToken($user);
+        cache('user-'.$user['id'],$user);
+        return response()->json(['token' => $token]);
+    }
+
+    public function getJWTToken($value)
+    {
+        $time = time();
+        $payload = [
+            'iat' => $time,
+            'nbf' => $time,
+            'exp' => $time+7200,
+            'data' => [
+                'id' => $value['id'],
+                'username' => $value['user_name']
+            ]
+        ];
+        $key =  env('JWT_SECRET');
+        $alg = 'HS256';
+        $token = JWT::encode($payload,$key,$alg);
+        return $token;
+    }
+}

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

@@ -195,7 +195,8 @@ SQL;
     }
     public function test4()
     {
-        return response()->redirectTo("transport/waybill/android/waybillDispatch");
+        $unit = Unit::query()->sql();
+        dd($unit);
     }
     public function OwnerStoreFeeReportService_recordReport()
     {

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

@@ -1217,6 +1217,7 @@ SQL;
     public function shipmentAndMerge()
     {
         $this->gate("运输管理-编辑");
+        if (!\request("logistic"))$this->error("未选择承运商");
         $waybill = Waybill::query()->where("waybill_number",\request("waybill"))->whereNull("deliver_at")
             ->whereNotIn("status",["已完结","无模型"])->first();
         if (!$waybill)$this->error("运单禁止操作");
@@ -1266,7 +1267,7 @@ SQL;
                 'audit_stage'=>'合单发货',
                 'user_id'=>Auth::id(),
             ]);
-        }else $waybill->update(["deliver_at"=>date("Y-m-d H:i:s")]);
+        }else $waybill->update(["deliver_at"=>date("Y-m-d H:i:s"),"logistic"=>\request("logistic")]);
         $this->success();
     }
 

+ 1 - 3
app/Http/Kernel.php

@@ -43,9 +43,7 @@ class Kernel extends HttpKernel
         ],
 
         'api' => [
-            LogPostRequest::class,
-//            'throttle:60,1',
-            'bindings',
+            //'bindings', //隐性转换参数为数据库模型 先在API中去除此中间件
         ],
         'apiLocal' => [
             LogPostRequest::class,

+ 59 - 47
app/Providers/AppServiceProvider.php

@@ -124,13 +124,14 @@ use App\Services\weight\HaoChuangWeightService;
 use App\Services\weight\HengLiWeightService;
 use App\Services\PrintPartService;
 use App\Services\PrintTemplateService;
+use Illuminate\Database\Eloquent\Builder;
 use Illuminate\Queue\Events\JobFailed;
 use Illuminate\Queue\Events\JobProcessed;
-use Illuminate\Queue\Events\JobProcessing;
 use Illuminate\Support\Facades\Queue;
 use Illuminate\Support\Facades\Schema;
 use Illuminate\Support\Facades\View;
 use Illuminate\Support\ServiceProvider;
+use Laravel\Tinker\TinkerServiceProvider;
 use Ramsey\Uuid\Uuid;
 use Illuminate\Support\Facades\Validator;
 use App\Services\SupplierService;
@@ -199,51 +200,11 @@ class AppServiceProvider extends ServiceProvider
      */
     public function boot()
     {
-        $this->loadingService();
-        $this->registerObserver();
-        //
-        Schema::defaultStringLength(191);
-        Queue::failing(function (JobFailed $event) {
-            (new Controller())->log(__METHOD__, 'EventError_', json_encode($event));
-            $payload = $event->job->payload();
-            $displayName = $payload['displayName'];
-            //快递信息同步失败计数
-            /** @var  $logisticSyncRecordService  LogisticSyncRecordService*/
-            $logisticSyncRecordService = app("LogisticSyncRecordService");
-            if ($logisticSyncRecordService->isLogisticSyncJob($displayName)) {
-                $logisticSyncRecordService->logisticSyncRecord($displayName, 'failed_count');
-            }
-        });
-        //扩展身份证验证规则
-        Validator::extend('identity_cards', function($attribute, $value, $parameters) {
-            return preg_match('/(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)|(^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}$)/', $value);
-        });
-        View::share('pageUuid',Uuid::uuid4());
-
-        \Illuminate\Database\Query\Builder::macro('sql', function () {
-            $bindings = $this->getBindings();
-            $sql = str_replace('?',"'%s'",$this->toSql());
-            return vsprintf($sql, $bindings);
-        });
-
-        \Illuminate\Database\Eloquent\Builder::macro('sql', function(){
-            return ($this->getQuery()->sql());
-        });
-
-        Queue::before(function (JobProcessing $event) {
-
-        });
-        //任务成功后的回调
-        Queue::after(function (JobProcessed $event) {
-            //快递信息同步成功计数
-            $payload = $event->job->payload();
-            $displayName = $payload['displayName'];
-            /** @var  $logisticSyncRecordService  LogisticSyncRecordService*/
-            $logisticSyncRecordService = app("LogisticSyncRecordService");
-            if ($logisticSyncRecordService->isLogisticSyncJob($displayName)) {
-                $logisticSyncRecordService->logisticSyncRecord($displayName, 'succeed_count');
-            }
-        });
+        $this->loadingService();    //加载服务
+        $this->registerObserver();  //注册监听器
+        $this->registerProvider();  //注册可选择的服务提供者
+        $this->appendExtension();   //追加扩展
+        $this->someTask();          //一些任务
     }
 
     private function loadingService(){
@@ -285,7 +246,6 @@ class AppServiceProvider extends ServiceProvider
         app()->singleton('InventoryCompareService', InventoryCompareService::class);
         app()->singleton('InventoryDailyLogService', InventoryDailyLogService::class);
         app()->singleton('JDDeliveryService',JDDeliveryService::class);
-        app()->singleton('LaborCompanyService',LaborCompanyService::class);
         app()->singleton('LaborReportsCountingRecordService', LaborReportsCountingRecordService::class);
         app()->singleton('LogService', LogService::class);
         app()->singleton('LogisticAliJiSuApiService',LogisticAliJiSuApiService::class);
@@ -422,4 +382,56 @@ class AppServiceProvider extends ServiceProvider
         Menu::observe(MenuObserver::class);
         Authority::observe(AuthorityObserver::class);
     }
+
+    private function registerProvider()
+    {
+        if(env('APP_ENV')!='production'){
+            $this->app->register(\Barryvdh\Debugbar\ServiceProvider::class);
+            $this->app->register(TinkerServiceProvider::class);
+        }
+    }
+
+    private function appendExtension()
+    {
+        Schema::defaultStringLength(191);
+        //扩展身份证验证规则
+        Validator::extend('identity_cards', function($attribute, $value, $parameters) {
+            return preg_match('/(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)|(^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}$)/', $value);
+        });
+        View::share('pageUuid',Uuid::uuid4());
+        \Illuminate\Database\Query\Builder::macro('sql', function () {
+            $bindings = $this->getBindings();
+            $sql = str_replace('?',"'%s'",$this->toSql());
+            return vsprintf($sql, $bindings);
+        });
+        Builder::macro('sql', function(){
+            return ($this->getQuery()->sql());
+        });
+    }
+
+    private function someTask()
+    {
+        Queue::failing(function (JobFailed $event) {
+            (new Controller())->log(__METHOD__, 'EventError_', json_encode($event));
+            $payload = $event->job->payload();
+            $displayName = $payload['displayName'];
+            //快递信息同步失败计数
+            /** @var  $logisticSyncRecordService  LogisticSyncRecordService*/
+            $logisticSyncRecordService = app("LogisticSyncRecordService");
+            if ($logisticSyncRecordService->isLogisticSyncJob($displayName)) {
+                $logisticSyncRecordService->logisticSyncRecord($displayName, 'failed_count');
+            }
+        });
+        //任务成功后的回调
+        Queue::after(function (JobProcessed $event) {
+            //快递信息同步成功计数
+            $payload = $event->job->payload();
+            $displayName = $payload['displayName'];
+            /** @var  $logisticSyncRecordService  LogisticSyncRecordService*/
+            $logisticSyncRecordService = app("LogisticSyncRecordService");
+            if ($logisticSyncRecordService->isLogisticSyncJob($displayName)) {
+                $logisticSyncRecordService->logisticSyncRecord($displayName, 'succeed_count');
+            }
+        });
+    }
 }

+ 6 - 1
app/Providers/RouteServiceProvider.php

@@ -16,6 +16,11 @@ class RouteServiceProvider extends ServiceProvider
      */
     protected $namespace = 'App\Http\Controllers';
 
+    /**
+     * @var string
+     */
+    protected $apinamespace = 'App\Http\ApiControllers';
+
     /**
      * Define your route model bindings, pattern filters, etc.
      *
@@ -69,7 +74,7 @@ class RouteServiceProvider extends ServiceProvider
     {
         Route::prefix('api')
              ->middleware('api')
-             ->namespace($this->namespace)
+             ->namespace($this->apinamespace)
              ->group(base_path('routes/api.php'));
         Route::prefix('apiLocal')
              ->middleware('apiLocal')

+ 0 - 25
bootstrap/cache/packages.php

@@ -1,22 +1,4 @@
 <?php return array (
-  'barryvdh/laravel-debugbar' => 
-  array (
-    'providers' => 
-    array (
-      0 => 'Barryvdh\\Debugbar\\ServiceProvider',
-    ),
-    'aliases' => 
-    array (
-      'Debugbar' => 'Barryvdh\\Debugbar\\Facade',
-    ),
-  ),
-  'beyondcode/laravel-dump-server' => 
-  array (
-    'providers' => 
-    array (
-      0 => 'BeyondCode\\DumpServer\\DumpServerServiceProvider',
-    ),
-  ),
   'facade/ignition' => 
   array (
     'providers' => 
@@ -57,13 +39,6 @@
       'Horizon' => 'Laravel\\Horizon\\Horizon',
     ),
   ),
-  'laravel/tinker' => 
-  array (
-    'providers' => 
-    array (
-      0 => 'Laravel\\Tinker\\TinkerServiceProvider',
-    ),
-  ),
   'laravel/ui' => 
   array (
     'providers' => 

+ 36 - 45
bootstrap/cache/services.php

@@ -23,27 +23,24 @@
     19 => 'Illuminate\\Translation\\TranslationServiceProvider',
     20 => 'Illuminate\\Validation\\ValidationServiceProvider',
     21 => 'Illuminate\\View\\ViewServiceProvider',
-    22 => 'Barryvdh\\Debugbar\\ServiceProvider',
-    23 => 'BeyondCode\\DumpServer\\DumpServerServiceProvider',
-    24 => 'Facade\\Ignition\\IgnitionServiceProvider',
-    25 => 'Fideloper\\Proxy\\TrustedProxyServiceProvider',
-    26 => 'Intervention\\Image\\ImageServiceProvider',
-    27 => 'Laravel\\Horizon\\HorizonServiceProvider',
-    28 => 'Laravel\\Tinker\\TinkerServiceProvider',
-    29 => 'Laravel\\Ui\\UiServiceProvider',
-    30 => 'Maatwebsite\\Excel\\ExcelServiceProvider',
-    31 => 'Carbon\\Laravel\\ServiceProvider',
-    32 => 'NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider',
-    33 => 'Oursdreams\\Export\\ExportServiceProvider',
-    34 => 'Overtrue\\LaravelPinyin\\ServiceProvider',
-    35 => 'Te7aHoudini\\LaravelTrix\\LaravelTrixServiceProvider',
-    36 => 'Yajra\\Oci8\\Oci8ServiceProvider',
-    37 => 'App\\Providers\\AppServiceProvider',
-    38 => 'App\\Providers\\AuthServiceProvider',
-    39 => 'App\\Providers\\BroadcastServiceProvider',
-    40 => 'App\\Providers\\EventServiceProvider',
-    41 => 'App\\Providers\\HorizonServiceProvider',
-    42 => 'App\\Providers\\RouteServiceProvider',
+    22 => 'Facade\\Ignition\\IgnitionServiceProvider',
+    23 => 'Fideloper\\Proxy\\TrustedProxyServiceProvider',
+    24 => 'Intervention\\Image\\ImageServiceProvider',
+    25 => 'Laravel\\Horizon\\HorizonServiceProvider',
+    26 => 'Laravel\\Ui\\UiServiceProvider',
+    27 => 'Maatwebsite\\Excel\\ExcelServiceProvider',
+    28 => 'Carbon\\Laravel\\ServiceProvider',
+    29 => 'NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider',
+    30 => 'Oursdreams\\Export\\ExportServiceProvider',
+    31 => 'Overtrue\\LaravelPinyin\\ServiceProvider',
+    32 => 'Te7aHoudini\\LaravelTrix\\LaravelTrixServiceProvider',
+    33 => 'Yajra\\Oci8\\Oci8ServiceProvider',
+    34 => 'App\\Providers\\AppServiceProvider',
+    35 => 'App\\Providers\\AuthServiceProvider',
+    36 => 'App\\Providers\\BroadcastServiceProvider',
+    37 => 'App\\Providers\\EventServiceProvider',
+    38 => 'App\\Providers\\HorizonServiceProvider',
+    39 => 'App\\Providers\\RouteServiceProvider',
   ),
   'eager' => 
   array (
@@ -57,26 +54,24 @@
     7 => 'Illuminate\\Pagination\\PaginationServiceProvider',
     8 => 'Illuminate\\Session\\SessionServiceProvider',
     9 => 'Illuminate\\View\\ViewServiceProvider',
-    10 => 'Barryvdh\\Debugbar\\ServiceProvider',
-    11 => 'BeyondCode\\DumpServer\\DumpServerServiceProvider',
-    12 => 'Facade\\Ignition\\IgnitionServiceProvider',
-    13 => 'Fideloper\\Proxy\\TrustedProxyServiceProvider',
-    14 => 'Intervention\\Image\\ImageServiceProvider',
-    15 => 'Laravel\\Horizon\\HorizonServiceProvider',
-    16 => 'Laravel\\Ui\\UiServiceProvider',
-    17 => 'Maatwebsite\\Excel\\ExcelServiceProvider',
-    18 => 'Carbon\\Laravel\\ServiceProvider',
-    19 => 'NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider',
-    20 => 'Oursdreams\\Export\\ExportServiceProvider',
-    21 => 'Overtrue\\LaravelPinyin\\ServiceProvider',
-    22 => 'Te7aHoudini\\LaravelTrix\\LaravelTrixServiceProvider',
-    23 => 'Yajra\\Oci8\\Oci8ServiceProvider',
-    24 => 'App\\Providers\\AppServiceProvider',
-    25 => 'App\\Providers\\AuthServiceProvider',
-    26 => 'App\\Providers\\BroadcastServiceProvider',
-    27 => 'App\\Providers\\EventServiceProvider',
-    28 => 'App\\Providers\\HorizonServiceProvider',
-    29 => 'App\\Providers\\RouteServiceProvider',
+    10 => 'Facade\\Ignition\\IgnitionServiceProvider',
+    11 => 'Fideloper\\Proxy\\TrustedProxyServiceProvider',
+    12 => 'Intervention\\Image\\ImageServiceProvider',
+    13 => 'Laravel\\Horizon\\HorizonServiceProvider',
+    14 => 'Laravel\\Ui\\UiServiceProvider',
+    15 => 'Maatwebsite\\Excel\\ExcelServiceProvider',
+    16 => 'Carbon\\Laravel\\ServiceProvider',
+    17 => 'NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider',
+    18 => 'Oursdreams\\Export\\ExportServiceProvider',
+    19 => 'Overtrue\\LaravelPinyin\\ServiceProvider',
+    20 => 'Te7aHoudini\\LaravelTrix\\LaravelTrixServiceProvider',
+    21 => 'Yajra\\Oci8\\Oci8ServiceProvider',
+    22 => 'App\\Providers\\AppServiceProvider',
+    23 => 'App\\Providers\\AuthServiceProvider',
+    24 => 'App\\Providers\\BroadcastServiceProvider',
+    25 => 'App\\Providers\\EventServiceProvider',
+    26 => 'App\\Providers\\HorizonServiceProvider',
+    27 => 'App\\Providers\\RouteServiceProvider',
   ),
   'deferred' => 
   array (
@@ -185,7 +180,6 @@
     'translation.loader' => 'Illuminate\\Translation\\TranslationServiceProvider',
     'validator' => 'Illuminate\\Validation\\ValidationServiceProvider',
     'validation.presence' => 'Illuminate\\Validation\\ValidationServiceProvider',
-    'command.tinker' => 'Laravel\\Tinker\\TinkerServiceProvider',
   ),
   'when' => 
   array (
@@ -225,8 +219,5 @@
     'Illuminate\\Validation\\ValidationServiceProvider' => 
     array (
     ),
-    'Laravel\\Tinker\\TinkerServiceProvider' => 
-    array (
-    ),
   ),
 );

+ 4 - 2
composer.json

@@ -37,7 +37,6 @@
     },
     "require-dev": {
         "barryvdh/laravel-debugbar": "^3.2",
-        "beyondcode/laravel-dump-server": "^1.0",
         "filp/whoops": "^2.0",
         "fzaninotto/faker": "^1.4",
         "mockery/mockery": "^1.0",
@@ -55,7 +54,10 @@
     },
     "extra": {
         "laravel": {
-            "dont-discover": []
+            "dont-discover": [
+                "barryvdh/laravel-debugbar",
+                "laravel/tinker"
+            ]
         }
     },
     "autoload": {

+ 1 - 72
composer.lock

@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "4c4342ce6a1481f75fbca7b9c6f7fcde",
+    "content-hash": "0569fe65bebd55bd7e10b338e8c5c98d",
     "packages": [
         {
             "name": "bacon/bacon-qr-code",
@@ -8029,77 +8029,6 @@
             ],
             "time": "2021-06-14T14:29:26+00:00"
         },
-        {
-            "name": "beyondcode/laravel-dump-server",
-            "version": "1.7.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/beyondcode/laravel-dump-server.git",
-                "reference": "e27c7b942ab62f6ac7168359393d328ec5215b89"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/beyondcode/laravel-dump-server/zipball/e27c7b942ab62f6ac7168359393d328ec5215b89",
-                "reference": "e27c7b942ab62f6ac7168359393d328ec5215b89",
-                "shasum": "",
-                "mirrors": [
-                    {
-                        "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
-                        "preferred": true
-                    }
-                ]
-            },
-            "require": {
-                "illuminate/console": "5.6.*|5.7.*|5.8.*|^6.0|^7.0|^8.0",
-                "illuminate/http": "5.6.*|5.7.*|5.8.*|^6.0|^7.0|^8.0",
-                "illuminate/support": "5.6.*|5.7.*|5.8.*|^6.0|^7.0|^8.0",
-                "php": ">=7.2.5",
-                "symfony/var-dumper": "^5.0"
-            },
-            "require-dev": {
-                "larapack/dd": "^1.0",
-                "phpunit/phpunit": "^7.0|^9.3"
-            },
-            "type": "library",
-            "extra": {
-                "laravel": {
-                    "providers": [
-                        "BeyondCode\\DumpServer\\DumpServerServiceProvider"
-                    ]
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "BeyondCode\\DumpServer\\": "src"
-                },
-                "files": [
-                    "helpers.php"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Marcel Pociot",
-                    "email": "marcel@beyondco.de",
-                    "homepage": "https://beyondco.de",
-                    "role": "Developer"
-                }
-            ],
-            "description": "Symfony Var-Dump Server for Laravel",
-            "homepage": "https://github.com/beyondcode/laravel-dump-server",
-            "keywords": [
-                "beyondcode",
-                "laravel-dump-server"
-            ],
-            "support": {
-                "issues": "https://github.com/beyondcode/laravel-dump-server/issues",
-                "source": "https://github.com/beyondcode/laravel-dump-server/tree/1.7.0"
-            },
-            "time": "2020-12-15T10:57:43+00:00"
-        },
         {
             "name": "doctrine/instantiator",
             "version": "1.4.0",

+ 7 - 0
config/api.php

@@ -68,4 +68,11 @@ return [
     https://wcs.baoshi56.com/api/thirdPart/haochuang/sorting/process
     https://wcs.baoshi56.com/api/thirdPart/haochuang/sorting/done
      **/
+
+    'rate_limits' => [
+        // 访问频率限制,次数/分钟
+        'access' =>  env('RATE_LIMITS', '60,1'),
+        // 登录相关,次数/分钟
+        'sign' =>  env('SIGN_RATE_LIMITS', '10,1'),
+    ],
 ];

+ 9 - 2
resources/js/queryForm/queryForm.js

@@ -114,8 +114,15 @@ const query = function getQueryForm(data) {
 
     function fixed(){
        _parentNode.addClass('header-float');
-       _parentNode.css('top',0);
-       _parentNode.zIndex(95);
+        let dom = _this.appendDom ? $("#" + _this.appendDom + "") : null;
+        if (dom){
+            dom.css('top', (_parentNode.height())+'px');
+            dom.css('background', 'rgb(255, 255, 255)');
+            dom.css('position', 'sticky');
+            dom.css('z-index', 50);
+        }
+        _parentNode.css('top',0);
+        _parentNode.css('z-index',95);
     }
 
     // form fixed

+ 1 - 1
resources/views/store/inStorage/androidIndex.blade.php

@@ -20,7 +20,7 @@
         <div class="w-100 center h-75 row align-items-center justify-content-center">
             <div class="w-100">
 <!--                <a href="{{url('store/inStorage/cacheRackStorage')}}"><button class="btn btn-info w-75 text-white" style="height: 60px"><h4>整箱入库</h4></button></a>-->
-                <a href="{{url('store/handInStorage/receive')}}"><button class="btn btn-info w-75 h-25 mt-3 text-white" style="height: 60px"><h4>收货</h4></button></a>
+                <a href="{{url('store/handInStorage/receive')}}"><button class="btn btn-info w-75 h-25 text-white" style="height: 60px"><h4>收货</h4></button></a>
                 <a href="{{url('store/handInStorage/putaway')}}"><button class="btn btn-info w-75 h-25 mt-3 text-white" style="height: 60px"><h4>上架</h4></button></a>
                 <a href="{{url('store/inStorage/halfChestStorage')}}"><button class="btn btn-info w-75 h-25 mt-3 text-white" style="height: 60px"><h4>半箱入库</h4></button></a>
                 <a href="{{url('store/inStorage/boxBindShelf')}}"><button class="btn btn-info w-75 h-25 mt-3 text-white" style="height: 60px"><h4>新箱上架</h4></button></a>