Browse Source

Merge branch 'zzd' of ssh://was.baoshi56.com:10022/var/git/bswas

LD 4 years ago
parent
commit
55858f2961

+ 5 - 3
app/Http/Controllers/Auth/LoginController.php

@@ -9,6 +9,7 @@ use Illuminate\Http\RedirectResponse;
 use Illuminate\Http\Request;
 use Illuminate\Http\Response;
 use Illuminate\Support\Facades\Auth;
+use Illuminate\Support\Facades\Session;
 use Illuminate\Support\Facades\Validator;
 use Illuminate\Validation\ValidationException;
 
@@ -33,7 +34,6 @@ class LoginController extends Controller
      * @var string
      */
     protected $redirectTo = '/control/panel/menu';
-//    protected $redirectTo = '/rejected/index/general';
 
     /**
      * Create a new controller instance.
@@ -59,6 +59,8 @@ class LoginController extends Controller
      */
     public function login(Request $request)
     {
+        $redirectTo = $request->session()->get("url.intended");
+        if (!$redirectTo)$redirectTo = $this->redirectTo;
         $rule = [
             $this->username() => 'required|string',
             'password' => 'required|string',
@@ -79,14 +81,14 @@ class LoginController extends Controller
             if($request['is_json']){
                 return ['success'=>false,'message'=>'登录请求过于频繁'];
             }
-            return $this->sendLockoutResponse($request);
+            $this->sendLockoutResponse($request);
         }
 
         if ($this->attemptLogin($request)) {
             if(env('DB_USERNAME')!='developer')
                 app('LogService')->log(__METHOD__,__FUNCTION__,'',Auth::user()['id']);
             if($request['is_json']){
-                return ['success'=>true,'url'=>url($this->redirectTo),'menus'=>app("MenuService")->getVisibleFunctionList()];
+                return ['success'=>true,'url'=>url($redirectTo),'menus'=>app("MenuService")->getVisibleFunctionList()];
             }
             return $this->sendLoginResponse($request)->header('Cache-Control','no-store');
         }

+ 15 - 0
app/Http/Controllers/StorageController.php

@@ -107,6 +107,21 @@ class StorageController extends Controller
         $this->success(["need"=>$models[0]->maximum,"material_box_model_id"=>$models[0]->material_box_model_id,"commodity_id"=>$item->commodity_id]);
     }
 
+    /**
+     * 检查ASN可上架总数
+     */
+    public function checkAsnAmount()
+    {
+        $sql = <<<sql
+SELECT sum(fmqty) amount FROM DOC_ASN_DETAILS LEFT JOIN BAS_SKU ON DOC_ASN_DETAILS.CUSTOMERID = BAS_SKU.CUSTOMERID AND DOC_ASN_DETAILS.SKU = BAS_SKU.SKU
+LEFT JOIN TSK_TASKLISTS ON DOC_ASN_DETAILS.ASNNO = TSK_TASKLISTS.DOCNO AND DOC_ASN_DETAILS.ASNLINENO = TSK_TASKLISTS.DOCLINENO
+WHERE ASNNO = ? AND (ALTERNATE_SKU1 = ? OR ALTERNATE_SKU2 = ? OR ALTERNATE_SKU3 = ?)
+  AND TASKPROCESS = '00' AND TASKTYPE = 'PA'
+sql;
+        $task = DB::connection("oracle")->selectOne(DB::raw($sql),[request("asn"),request("barCode"),request("barCode"),request("barCode")]);
+        $this->success($task->amount ?? 0);
+    }
+
     /**
      * 重置缓存架指定格口
      */

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

@@ -127,6 +127,7 @@ use PhpMyAdmin\Server\Status\Data;
 use PhpParser\Node\Stmt\DeclareDeclare;
 use Ramsey\Collection\Collection;
 use Symfony\Component\ErrorHandler\Error\FatalError;
+use Symfony\Component\HttpFoundation\Cookie;
 use Zttp\Zttp;
 
 class TestController extends Controller
@@ -144,29 +145,9 @@ class TestController extends Controller
     {
         return call_user_func([$this, $method], $request);
     }
-    public function test1($nums,$target)
-    {
-        $map=[];
-        foreach ($nums as $index=>$val){
-            $complement=$target-$val;
-            if(array_key_exists($complement,$map))return [$map[$complement],$index];
-            if ($val==$target)return [$index];
-            $map[$val]=$index;
-            if ($val<$target){
-                $temp = $nums;
-                unset($temp[$index]);
-                $arr = $this->test1($temp,$target-$val);
-                if ($arr) {
-                    $arr[] = $index;
-                    return $arr;
-                }
-            }
-        }
-        return null;
-    }
     public function test()
     {
-        dd($this->test1([1,2,3,4,5,6,7],28));
+        dd(explode("/","/register"));
     }
     public function orderCreateBill()
     {

+ 33 - 5
app/Http/Middleware/Authenticate.php

@@ -3,20 +3,48 @@
 namespace App\Http\Middleware;
 
 use Closure;
+use Illuminate\Auth\AuthenticationException;
 use Illuminate\Auth\Middleware\Authenticate as Middleware;
+use Illuminate\Http\Request;
 
 class Authenticate extends Middleware
 {
+    /**
+     * To provide a route whitelist
+     *
+     * 因为middleware的特性,将白名单挂载在middleware中而非config中
+     *
+     * @var array|string[]
+     */
+    protected array $whiteList = [
+
+    ];
+
+    /**
+     * Handle an incoming request.
+     *
+     * @param  Request  $request
+     * @param  Closure  $next
+     * @param  string[]  ...$guards
+     * @return mixed
+     *
+     * @throws AuthenticationException
+     */
+    public function handle($request, Closure $next, ...$guards)
+    {
+        if (array_search($request->getPathInfo(),$this->whiteList)===false)
+            $this->authenticate($request, $guards);
+        return $next($request);
+    }
+
     /**
      * Get the path the user should be redirected to when they are not authenticated.
      *
-     * @param  \Illuminate\Http\Request  $request
+     * @param  Request  $request
      * @return string
      */
-    protected function redirectTo($request)
+    protected function redirectTo($request) :string
     {
-        if ( $request->expectsJson()) {
-            return route('login');
-        }
+        return "/login";
     }
 }

+ 52 - 0
app/Jobs/CacheShelfTaskJob.php

@@ -0,0 +1,52 @@
+<?php
+
+namespace App\Jobs;
+
+use App\Services\ForeignHaiRoboticsService;
+use App\StationTaskMaterialBox;
+use Illuminate\Bus\Queueable;
+use Illuminate\Contracts\Queue\ShouldQueue;
+use Illuminate\Foundation\Bus\Dispatchable;
+use Illuminate\Queue\InteractsWithQueue;
+use Illuminate\Support\Collection;
+use Illuminate\Support\Facades\Cache;
+
+class CacheShelfTaskJob implements ShouldQueue
+{
+    use Dispatchable, InteractsWithQueue, Queueable;
+
+    protected string $key;
+    protected int $count;
+    /**
+     * Create a new job instance.
+     *
+     * @return void
+     */
+    public function __construct(string $key,int $count)
+    {
+        $this->count = $count;
+        $this->key = $key;
+    }
+
+    /**
+     * Execute the job.
+     *
+     * @return void
+     */
+    public function handle()
+    {
+        /** @var ForeignHaiRoboticsService $service */
+        $service = app("ForeignHaiRoboticsService");
+        if (!Cache::has($this->key))return;
+        /** @var Collection $task */
+        list($task,$location) = Cache::get($this->key);
+        if ($this->count!==$task->count())return;
+        $dataToPost = $service->makeJson_move_multi($task, '缓存架入立架', $location);
+        $controlSuccess = $service->controlHaiRobot($dataToPost,$task,'缓存架入立架');
+        $tIds = [];
+        $task->each(function ($t)use(&$tIds){$tIds[] = $t->id;});
+        StationTaskMaterialBox::query()->where("id",$tIds)
+            ->where("status","待处理")->update(['status' => $controlSuccess ? '处理中' : '异常']);
+        Cache::forget($this->key);
+    }
+}

+ 2 - 2
app/Services/CacheShelfService.php

@@ -59,7 +59,7 @@ class   CacheShelfService
             $query->whereNotNull("material_box_id")->orderByDesc("updated_at");
         }])->where('code', $locCode)->first();
         //站存在 站为缓存架2 站为蓝灯状态
-        if ($station && $station->parent_id==7){
+        if (app("StationService")->isHalfBoxLocation($station)){
             if (!Storage::query()->where("station_id",$station->id)->whereNotNull("material_box_id")->first())return ['success' => false, 'errMsg' => "任务执行中,不允许灭灯"];
             if (!app("StorageService")->checkStorage($station)){
                 $this->lightUp($station->code,'0','1',["title"=>"上架失败,联系管理员"]);
@@ -114,7 +114,7 @@ class   CacheShelfService
             'station_taskable_id' => $stationTaskMaterialBox['id']
         ]);
 
-        $bool = $this->foreignHaiRoboticsService->putBinToStore_fromCacheShelf($stationTaskMaterialBox, $station['code']);
+        $bool = $this->foreignHaiRoboticsService->putBinToStore_fromCacheShelf($stationTaskMaterialBox, $station);
         return $bool ? ['success' => true] : ['success' => false];
     }
 

+ 25 - 7
app/Services/ForeignHaiRoboticsService.php

@@ -6,12 +6,14 @@ namespace App\Services;
 
 use App\Exceptions\ErrorException;
 use App\Exceptions\Exception;
+use App\Jobs\CacheShelfTaskJob;
 use App\MaterialBox;
 use App\Station;
 use App\StationTask;
 use App\StationTaskMaterialBox;
 use Carbon\Carbon;
 use Illuminate\Support\Collection;
+use Illuminate\Support\Facades\Cache;
 use Illuminate\Support\Facades\DB;
 use Illuminate\Support\Facades\Http;
 use App\Traits\ServiceAppAop;
@@ -80,10 +82,10 @@ class ForeignHaiRoboticsService
         ]];
     }
 
-    private function makeJson_move_multi(
+    public function makeJson_move_multi(
         Collection $taskMaterialBoxes,
         string $modeName,
-        string $fromLocation='',
+        Collection $fromLocation=null,
         Collection $toLocations=null,
         $groupId=''
         , $priority=10
@@ -97,8 +99,8 @@ class ForeignHaiRoboticsService
             return [
                 "taskCode"  =>$taskMaterialBox['id'].'_'.$timestampSuffix,
                 "binCode"   => $taskMaterialBox['materialBox']['code'],
-                "fromLocCode" => $fromLocation??'',
-                "toLocCode" => $toLocations[$i],
+                "fromLocCode" => $fromLocation ? $fromLocation[$i] : '',
+                "toLocCode" => $toLocations ? $toLocations[$i] : '',
             ];
         });
         return [[
@@ -147,7 +149,7 @@ class ForeignHaiRoboticsService
         $dataToPost=$this->makeJson_move_multi(
             $taskMaterialBoxes,
             $mode,
-            '',
+            null,
             $toLocations,
             $groupIdPrefix
         );
@@ -317,13 +319,29 @@ class ForeignHaiRoboticsService
 
     /** 缓存架入立架 料箱 任务
      * @param StationTaskMaterialBox|null $stationTaskMaterialBox
-     * @param string|null $formLocation
+     * @param Station|\stdClass|null $station
      * @return bool
      * @throws ErrorException
      */
     public function putBinToStore_fromCacheShelf(?StationTaskMaterialBox $stationTaskMaterialBox,
-                                                 string $formLocation): bool
+                                                 $station): bool
     {
+        $formLocation = $station->code;
+        if ($station && $station->parent_id){
+            //缓存标记 推入延时队列 等待三秒决定是否执行
+            $key = "cacheShelfTask_".$station->parent_id;
+            if (Cache::has($key)){
+                $arr = Cache::get($key);
+                $task = $arr["task"]->add($stationTaskMaterialBox);
+                $location = $arr["location"]->add($formLocation);
+            }else{
+                $task = collect([$stationTaskMaterialBox]);
+                $location = collect([$formLocation]);
+            }
+            Cache::forever($key,compact("task","location"));
+            CacheShelfTaskJob::dispatch($task->count())->delay(now()->addSeconds(config("haiRou.cacheShelf.callAwait")));
+            return true;
+        }
         $dataToPost=$this->makeJson_move(collect([$stationTaskMaterialBox]), '缓存架入立架', $formLocation, '');
 
         $controlSuccess = $this->controlHaiRobot($dataToPost,collect([$stationTaskMaterialBox]),'缓存架入立架');

+ 12 - 0
app/Services/StationService.php

@@ -104,4 +104,16 @@ class StationService
         return Station::query()->where("code",substr($mirrorLocation,2))->first();
     }
 
+    /**
+     * 是否为半箱缓存架位置
+     *
+     * @param Station|null|\stdClass $station
+     * @return bool
+     */
+    public function isHalfBoxLocation(?Station $station):bool
+    {
+        if (!$station)return false;
+        return $station->parent_id==7;
+    }
+
 }

+ 3 - 2
app/Services/StorageService.php

@@ -162,7 +162,7 @@ class StorageService
                     "task_id" => $taskMaterialBox->id,
                     "status" => 1,
                 ]);//标记事务完成
-                app("ForeignHaiRoboticsService")->putBinToStore_fromCacheShelf($taskMaterialBox,$station->code); //呼叫机器人入库
+                app("ForeignHaiRoboticsService")->putBinToStore_fromCacheShelf($taskMaterialBox,$station); //呼叫机器人入库
                 DB::commit();
                 DB::connection("oracle")->commit();
                 return true;
@@ -233,7 +233,8 @@ class StorageService
                 $model = CommodityMaterialBoxModel::query()->select("maximum")->where("commodity_id",$commodityId)
                     ->where("material_box_model_id",$modelId)->first();
                 if (!$model)CommodityMaterialBoxModel::query()->create(["commodity_id"=>$commodityId,"material_box_model_id"=>$modelId,"maximum"=>$amount]);
-                if ($model && $model->maximum < $amount)$model->update(["maximum"=>$amount]);
+                if ($model && $model->maximum < $amount)CommodityMaterialBoxModel::query()->select("maximum")->where("commodity_id",$commodityId)
+                    ->where("material_box_model_id",$modelId)->update(["maximum"=>$amount]);
             }
             DB::commit();
             LogService::log(__CLASS__,"库存增加",$storage->toJson()."  |  ".json_encode([$stationId, $boxId, $commodityId, $amount, $modelId]));

+ 8 - 0
config/haiRou.php

@@ -2,4 +2,12 @@
 
 return [
     "波次防重叠时间_秒" => 1800,
+
+    /*
+     * cache shelf relating config
+     */
+    "cacheShelf" => [
+        /* call await time/second */
+        "callAwait" => 3,
+    ],
 ];

+ 0 - 4
public/t.php

@@ -1,4 +0,0 @@
-<?php
-
-eval('$a='.'3+1;');
-var_dump($a);

+ 5 - 8
resources/views/maintenance/role/index.blade.php

@@ -185,16 +185,13 @@
                     if (id==this.selectedRole)return;
                     this.selectedRole=id;
                     window.tempTip.postBasicRequest("{{url('maintenance/role/loadRelevance')}}",{id:id},res=>{
-                        if (res.authorities.length>0){
-                            let nodes = document.getElementById("authority").getElementsByTagName("INPUT");
-                            for (let i=0;i<nodes.length;i++){
-                                let checked = this._includes(res.authorities,nodes[i].value);
-                                if (nodes[i].checked!==checked)nodes[i].checked = checked;
-                            }
+                        let nodes = document.getElementById("authority").getElementsByTagName("INPUT");
+                        for (let i=0;i<nodes.length;i++){
+                            let checked = this._includes(res.authorities,nodes[i].value);
+                            if (nodes[i].checked!==checked)nodes[i].checked = checked;
                         }
                         this.check.owner = res.owners;
                         this.check.userWorkGroup = res.userWorkGroups;
-                        //$("#authority .up").slideDown();
                     });
                 },
                 _includes(arr,id){
@@ -266,4 +263,4 @@
             },
         });
     </script>
-@stop
+@stop

+ 53 - 81
resources/views/store/inStorage/cacheRackStorage.blade.php

@@ -11,53 +11,46 @@
                     </div>
                     <div class="form-group row">
                         <label for="asn" class="col-sm-2 col-3 text-right">ASN号:</label>
-                        <div tabindex="0" @focus="()=>{this.focus='asn'}" @keydown="enterVal($event,'asn')" class="form-control col-8 overflow-hidden" :contenteditable="!isOnlyKeyboardEnter" :class="errors.asn ? 'is-invalid' : ''"
-                             id="asn" @blur="checkAsn($event,'asn')"><span>@{{ info.asn ? info.asn : (focus=='asn' ? '' : '只需填写后几位,自动补充') }}</span></div>
+                        <input type="text" class="form-control col-8" id="asn"  placeholder="只需填写后几位,自动补充"
+                               :class="errors.asn ? 'is-invalid' : ''" @keydown.enter="enterVal($event)" v-model="info.asn" @blur="checkAsn()">
                         <span class="invalid-feedback offset-3" role="alert" v-if="errors.asn">
                             <strong>@{{ errors.asn[0] }}</strong>
                         </span>
                     </div>
                     <div class="form-group row">
                         <label for="ide" class="col-sm-2 col-3 text-right">料箱号:</label>
-                        <div tabindex="0" @focus="()=>{this.focus='ide'}" @keydown="enterVal($event,'ide')" class="form-control col-8 overflow-hidden" :contenteditable="!isOnlyKeyboardEnter" :class="errors.ide ? 'is-invalid' : ''"
-                             id="ide" @blur="checkIde($event,'ide')"><span>@{{ info.ide ? info.ide : (focus=='ide' ? '' : '只需填写后几位,自动补充') }}</span></div>
+                        <input type="text" class="form-control col-8" id="ide" placeholder="只需填写后几位,自动补充"
+                               :class="errors.ide ? 'is-invalid' : ''" v-model="info.ide" @blur="checkIde()" @keydown.enter="enterVal($event)">
                         <span class="invalid-feedback offset-3" role="alert" v-if="errors.ide">
                             <strong>@{{ errors.ide[0] }}</strong>
                         </span>
                     </div>
-                    <div class="form-group row">
+                    <div class="input-group row">
                         <label for="barCode" class="col-sm-2 col-3 text-right">条码:</label>
-                        <div tabindex="0" @keydown="enterVal($event,'barCode')" class="form-control col-8 overflow-hidden" :contenteditable="!isOnlyKeyboardEnter" :class="errors.barCode ? 'is-invalid' : ''"
-                             id="barCode" @blur="changeInfo($event,'barCode')"><span>@{{ info.barCode }}</span></div>
+                        <input type="text" class="form-control rounded col-sm-5 col-8 ml-sm-1 ml-2" id="barCode"
+                               :class="errors.barCode ? 'is-invalid' : ''" v-model="info.barCode" @keydown.enter="enterVal($event)">
+                        <div class="input-group-append mt-sm-0 mt-4">
+                            <span class="input-group-text d-none d-sm-block">@数量</span>
+                            <label for="amount" class="d-sm-none col-4 text-right">数量:</label>
+                            <span class="input-group-text p-0 border-0">
+                                <input class="form-control" type="number" step="1" min="1" id="amount"
+                                       :class="errors.amount ? 'is-invalid' : ''" v-model="info.amount" @keydown.enter="enterVal($event)">
+                            </span>
+                        </div>
                         <span class="invalid-feedback offset-3" role="alert" v-if="errors.barCode">
                             <strong>@{{ errors.barCode[0] }}</strong>
                         </span>
                     </div>
-                    <div class="form-group row">
-                        <label for="amount" class="col-sm-2 col-3 text-right">数量:</label>
-                        <div tabindex="0" @keydown="enterVal($event,'amount')" class="form-control col-8 overflow-hidden"
-                             :class="errors.amount ? 'is-invalid' : ''" @blur="changeInfo($event,'amount')" id="amount" type="number"
-                             :contenteditable="!isOnlyKeyboardEnter" ><span>@{{ info.amount }}</span></div>
-                        <span class="invalid-feedback offset-3" role="alert" v-if="errors.amount">
-                            <strong>@{{ errors.amount[0] }}</strong>
-                        </span>
-                    </div>
                     <div class="input-group row mt-5">
                         <button type="submit" id="submit" class="btn btn-success offset-2 col-8" @click="checkInfo()">提交</button>
                     </div>
-                    <div class="row offset-2 col-8">
-                        <div class="custom-control custom-checkbox mt-2 d-sm-none">
-                            <input type="checkbox" class="custom-control-input" id="customCheck" v-model="isOnlyKeyboardEnter">
-                            <label class="custom-control-label" for="customCheck">隐藏虚拟键盘</label>
-                        </div>
-                    </div>
                 </div>
             </div>
             <div class="card col-md-5 col-sm-12">
                 <div class="card-body">
                     <div class="mt-1 text-center">
                         <button class="btn btn-primary" @click="submitBox()">为选中格口手动补充料箱</button>
-                        <button class="btn btn-sm btn-info text-white" @click="reverse()">反选</button>
+                        <button class="btn btn-sm btn-info text-white" @click="reverse()">全选/反选</button>
                     </div>
                     <div class="mt-2 h-75">
                         <div class="w-100 h-100 text-center" style="cursor: pointer">
@@ -111,11 +104,13 @@
                 errors:{},
                 shelfOccupy:{},
                 selectedBox:{},
-                isAndroid:false,
-                isOnlyKeyboardEnter:false,
                 element:[
                     "asn","ide","barCode","amount","submit"
                 ],
+                oldInfo:{
+                    asn:"",
+                    barCode:""
+                },
             },
             mounted(){
                 if (navigator.userAgent.indexOf("Android")!==-1)this.isAndroid = true;
@@ -176,22 +171,6 @@
                     if (turn) window.addEventListener("click",this.codeFocus);
                     else window.removeEventListener("click",this.codeFocus);
                 },
-                codeBlur(){
-                    if (this.info.asn && this.info.ide && !this.info.amount){
-                        //this.globalClick(false);
-                        window.tempTip.inputVal('请输入数量:',(amount)=>{
-                            this.$set(this.info,'amount',amount);
-                            if (this.info.asn && this.info.ide && this.info.barCode && this.info.amount)this.checkInfo();
-                            //this.globalClick();
-                        });
-                    }
-                },
-                changeInfo(e,type){
-                    if (this.isOnlyKeyboardEnter)return;
-                    let str = e.target.innerText;
-                    if (e.target.firstChild.nodeType===3)e.target.firstChild.remove();
-                    this.$set(this.info,type,str);
-                },
                 checkInfo(){
                     let error = {};
                     if (!this.info.asn)error.asn = ["ASN号必填"];
@@ -204,6 +183,10 @@
                     this._exeTask();
                 },
                 _exeTask(){
+                    if ((this.oldInfo.asn && this.oldInfo.asn!==this.info.asn)||(this.oldInfo.barCode && this.oldInfo.barCode!==this.info.barCode))
+                        this.info.available = undefined;
+                    this.oldInfo.asn=this.info.asn;
+                    this.oldInfo.barCode=this.info.barCode;
                     window.tempTip.postBasicRequest("{{url('store/inStorage/putShelf')}}",this.info,res=>{
                         if (!res.maximum){
                             window.tempTip.inputVal('商品首入,请输入预估最大可放入数:',(maximum)=>{
@@ -211,7 +194,26 @@
                                 window.tempTip.postBasicRequest("{{url('store/inStorage/setMaximum')}}",res,()=>{});
                             });
                         }
-                        this.info = {};
+                        if (this.info.available === undefined){
+                            window.tempTip.postBasicRequest("{{url('store/inStorage/checkAsnAmount')}}",this.info,res=>{
+                                if (res && res>0){
+                                    this.info.amount = '';
+                                    this.info.available = res;
+                                    document.getElementById("amount").focus();
+                                }else{
+                                    this.info = {};
+                                    document.getElementById("asn").focus();
+                                }
+                            });
+                        }else{
+                            if (this.info.available>0){
+                                this.info.amount = '';
+                                document.getElementById("amount").focus();
+                            }else{
+                                this.info = {};
+                                document.getElementById("asn").focus();
+                            }
+                        }
                         this.errors = {};
                         return "缓存架上架成功!";
                     });
@@ -226,17 +228,13 @@
                     this.before.asn = 'ASN'+yy+mm+dd+'000';
                     this.before.ide = 'IDE000000';
                 },
-                checkAsn(e,type){
-                    this.focus = "";
-                    this.changeInfo(e,type);
+                checkAsn(){
                     if(!this.info.asn)return;
                     let len = this.info.asn.length;
                     if (len<13)this.info.asn = this.before.asn.substr(0,13-len)+this.info.asn;
                     if (!this.info.ide)document.getElementById("ide").focus();
                 },
-                checkIde(e,type){
-                    this.focus = "";
-                    this.changeInfo(e,type);
+                checkIde(){
                     if(!this.info.ide)return;
                     let len = this.info.ide.length;
                     if (len<10)this.info.ide = this.before.ide.substr(0,10-len)+this.info.ide;
@@ -251,39 +249,13 @@
                         this.$set(this.selectedBox,ideCode,this.selectedBox[ideCode] ? !this.selectedBox[ideCode] : true);
                     });
                 },
-                enterVal(e,type){
-                    /*if (e.keyCode === 8 && this.info[type] && this.isOnlyKeyboardEnter){this.$set(this.info,type,this.info[type].slice(0,-1));return;}
-                    if (type === 'amount'){
-                        if((e.keyCode>=48 && e.keyCode<=57) || (e.keyCode>=96 && e.keyCode<=105)){
-                            if (!this.isOnlyKeyboardEnter)return;
-                            if (this.info[type])this.$set(this.info,type,this.info[type] += e.key);
-                            else this.$set(this.info,type,e.key);
-                        }else e.preventDefault();
-                        return;
-                    }
-                    if (!this.isOnlyKeyboardEnter)return;
-                    if ((e.keyCode<48 || e.keyCode>105) || (e.keyCode>57 && e.keyCode<65) || (e.keyCode>90 && e.keyCode<96))return;
-                    if (this.info[type])this.$set(this.info,type,this.info[type] += e.key);
-                    else this.$set(this.info,type,e.key);*/
-                    if (e.keyCode===13){
-                        let index = this.element.indexOf(type)+1;
-                        let element = document.getElementById(this.element[index]);
-                        if (element)element.focus();
-                        e.preventDefault();
-                        return false;
-                    }
-                    if (!this.isOnlyKeyboardEnter)return;
-                    if (e.keyCode === 8 && this.info[type]){this.$set(this.info,type,this.info[type].slice(0,-1));return;}
-                    if (e.key.length>1)return;
-                    if (e.key.match(/[a-zA-Z0-9\-]/g)===null)return;
-                    if (type === 'amount'){
-                        if (e.key.match(/[0-9]/g)===null)return;
-                        if (this.info.maximum && Number((this.info[type] ? this.info[type] : '0')+e.key)>this.info.maximum) return;
-                    }
-                    if (this.info[type])this.$set(this.info,type,this.info[type] += e.key);
-                    else this.$set(this.info,type,e.key);
-                    this.downSign();
-                }
+                enterVal(e){
+                    let index = this.element.indexOf(e.target.id)+1;
+                    let element = document.getElementById(this.element[index]);
+                    if (element)element.focus();
+                    e.preventDefault();
+                    return false;
+                },
             },
         });
     </script>

+ 18 - 52
resources/views/store/inStorage/halfChestStorage.blade.php

@@ -12,36 +12,32 @@
                     </div>
                     <div class="form-group row">
                         <label for="asn" class="col-sm-2 col-3 text-right">ASN号:</label>
-                        <div tabindex="0" @focus="()=>{this.focus='asn'}" @keydown="enterVal($event,'asn')" class="form-control col-8 overflow-hidden"
-                             :contenteditable="!isOnlyKeyboardEnter" :class="errors.asn ? 'is-invalid' : ''"
-                             id="asn" @blur="checkAsn($event,'asn')"><span>@{{ info.asn ? info.asn : (focus=='asn' ? '' : '只需填写后几位,自动补充') }}</span></div>
+                        <input type="text" class="form-control col-8" id="asn" placeholder="只需填写后几位,自动补充"
+                             @change="downSign()" :class="errors.asn ? 'is-invalid' : ''" @keydown.enter="enterVal($event)" v-model="info.asn" @blur="checkAsn()">
                         <span class="invalid-feedback offset-3" role="alert" v-if="errors.asn">
                             <strong>@{{ errors.asn[0] }}</strong>
                         </span>
                     </div>
                     <div class="form-group row">
                         <label for="station" class="col-sm-2 col-3 text-right">库位:</label>
-                        <div tabindex="0" @focus="()=>{this.focus='station'}" @keydown="enterVal($event,'station')" class="form-control col-8 overflow-hidden"
-                             :contenteditable="!isOnlyKeyboardEnter" :class="errors.station ? 'is-invalid' : ''"
-                             id="station" @blur="checkMaximum($event,'station')"><span>@{{ info.station ? info.station : (focus=='station' ? '' : '扫描货架条码') }}</span></div>
+                        <input type="text" class="form-control col-8" id="station" placeholder="扫描货架条码"
+                               :class="errors.station ? 'is-invalid' : ''" v-model="info.station" @blur="checkMaximum()" @keydown.enter="enterVal($event)">
                         <span class="invalid-feedback offset-3" role="alert" v-if="errors.station">
                             <strong>@{{ errors.station[0] }}</strong>
                         </span>
                     </div>
                     <div class="form-group row">
                         <label for="barCode" class="col-sm-2 col-3 text-right">条码:</label>
-                        <div tabindex="0" @focus="()=>{this.focus='barCode'}" @keydown="enterVal($event,'barCode')" class="form-control col-8 overflow-hidden"
-                             :contenteditable="!isOnlyKeyboardEnter" :class="errors.barCode ? 'is-invalid' : ''"
-                             id="barCode" @blur="checkMaximum($event,'barCode')"><span>@{{ info.barCode ? info.barCode : (focus=='barCode' ? '' : '扫描商品条码') }}</span></div>
+                        <input type="text" class="form-control col-8" id="barCode" placeholder="扫描商品条码"
+                               @change="downSign()" :class="errors.barCode ? 'is-invalid' : ''" v-model="info.barCode" @blur="checkMaximum()" @keydown.enter="enterVal($event)">
                         <span class="invalid-feedback offset-3" role="alert" v-if="errors.barCode">
                             <strong>@{{ errors.barCode[0] }}</strong>
                         </span>
                     </div>
                     <div class="form-group row">
                         <label for="amount" class="col-sm-2 col-3 text-right">数量:</label>
-                        <div tabindex="0" @focus="()=>{this.focus='amount'}" @keydown="enterVal($event,'amount')" class="form-control col-8 overflow-hidden"
-                             :contenteditable="!isOnlyKeyboardEnter" :class="errors.amount ? 'is-invalid' : ''"
-                             id="amount" @blur="checkMaximum($event,'amount')"><span>@{{ info.amount ? info.amount : (focus=='amount' ? '' : (info.maximum!==undefined ? '最大可上:'+info.maximum : '')) }}</span></div>
+                        <input type="number" class="form-control col-8" id="amount"
+                               @keydown.enter="enterVal($event)" :class="errors.amount ? 'is-invalid' : ''" @blur="checkMaximum()" v-model="info.amount" :placeholder="info.maximum!==undefined ? '最大可上:'+info.maximum : ''" :max="info.maximum" step="1">
                         <span class="invalid-feedback offset-3" role="alert" v-if="errors.amount">
                             <strong>@{{ errors.amount[0] }}</strong>
                         </span>
@@ -49,12 +45,6 @@
                     <div class="input-group row mt-5">
                         <button type="submit" id="submit" class="btn btn-success offset-2 col-8" @click="checkInfo()">提交</button>
                     </div>
-                    <div class="row offset-2 col-8">
-                        <div class="custom-control custom-checkbox mt-2 d-sm-none">
-                            <input type="checkbox" class="custom-control-input" id="customCheck" v-model="isOnlyKeyboardEnter">
-                            <label class="custom-control-label" for="customCheck">隐藏虚拟键盘</label>
-                        </div>
-                    </div>
                 </div>
             </div>
             <div class="modal fade" tabindex="-1" role="dialog" id="modal">
@@ -101,8 +91,6 @@
                 errors:{},
                 ov:{},//溢出减量数值
                 checkSign:false,
-                isAndroid:true,
-                isOnlyKeyboardEnter:false,
                 element:[
                     "asn","station","barCode","amount","submit"
                 ],
@@ -171,7 +159,8 @@
                 },
                 _exeTask(){
                     window.tempTip.postBasicRequest("{{url('store/inStorage/acquireBox')}}",this.info,()=>{
-                        this.info = {};
+                        //this.info = {};
+                        this.info.amount = '';
                         this.errors = {};
                         return "上架成功!";
                     });
@@ -185,15 +174,7 @@
                     dd = dd <10 ? '0'+dd : dd.toString();
                     this.before.asn = 'ASN'+yy+mm+dd+'000';
                 },
-                changeInfo(e,type){
-                    if (this.isOnlyKeyboardEnter || !type)return;
-                    let str = e.target.innerText;
-                    if (e.target.firstChild.nodeType===3)e.target.firstChild.remove();
-                    this.$set(this.info,type,str);
-                },
-                checkAsn(e,type){
-                    this.changeInfo(e,type);
-                    this.focus = "";
+                checkAsn(){
                     if(!this.info.asn)return;
                     let len = this.info.asn.length;
                     if (len<13)this.info.asn = this.before.asn.substr(0,13-len)+this.info.asn;
@@ -202,9 +183,7 @@
                 downSign(){
                     this.checkSign = false;
                 },
-                checkMaximum(e,type){
-                    this.changeInfo(e,type);
-                    this.focus = "";
+                checkMaximum(){
                     if (!this.info.asn || !this.info.barCode || this.checkSign)return;
                     window.tempTip.postBasicRequest("{{url('store/inStorage/checkMaximum')}}",this.info,res=>{
                         this.info.maximum = res.maximum;
@@ -216,25 +195,12 @@
                     });
                     this.checkSign = true;
                 },
-                enterVal(e,type){
-                    if (e.keyCode===13){
-                        let index = this.element.indexOf(type)+1;
-                        let element = document.getElementById(this.element[index]);
-                        if (element)element.focus();
-                        e.preventDefault();
-                        return false;
-                    }
-                    if (!this.isOnlyKeyboardEnter)return;
-                    if (e.keyCode === 8 && this.info[type]){this.$set(this.info,type,this.info[type].slice(0,-1));return;}
-                    if (e.key.length>1)return;
-                    if (e.key.match(/[a-zA-Z0-9\-]/g)===null)return;
-                    if (type === 'amount'){
-                        if (e.key.match(/[0-9]/g)===null)return;
-                        if (this.info.maximum && Number((this.info[type] ? this.info[type] : '0')+e.key)>this.info.maximum) return;
-                    }
-                    if (this.info[type])this.$set(this.info,type,this.info[type] += e.key);
-                    else this.$set(this.info,type,e.key);
-                    this.downSign();
+                enterVal(e){
+                    let index = this.element.indexOf(e.target.id)+1;
+                    let element = document.getElementById(this.element[index]);
+                    if (element)element.focus();
+                    e.preventDefault();
+                    return false;
                 }
             },
         });

+ 846 - 889
routes/web.php

@@ -13,922 +13,879 @@ use Illuminate\Support\Facades\Auth;
 | contains the "web" middleware group. Now create something great!
 |
 */
-
-Route::get('/', function () {
-    return redirect('login');
-});
-
-Route::any('test/{method}', 'TestController@method'); //测试
-
-/** 称重广播 */
-Route::post('package/weigh/measureMonitor/speech','MeasureMonitorController@speech');
-
+//auth组件的一些注册路由
 Auth::routes();
 
-Route::get('/home', 'HomeController@index')->name('home');
-Route::get('/homeTemp', 'HomeController@home');
-
-/** 密码 */
-Route::group(['prefix'=>'password'],function(){
-    Route::get('change', 'Auth\PasswordController@change');
-    Route::post('update', 'Auth\PasswordController@update');
-});
-
-/** 全局 */
-Route::get('denied',function (){return view('exception.authority');});
-Route::post('getMenu','MenuController@get');
-/** 基础设置 */
-Route::group(['prefix'=>'maintenance'],function(){
-    /** 菜单 */
-    Route::get('menu', 'MenuController@index');
-    Route::group(['prefix'=>"menu"],function (){
-        Route::post('update', 'MenuController@update');
-        Route::post('save', 'MenuController@save');
-        Route::post('sort', 'MenuController@sort');
-        Route::post('delete', 'MenuController@delete');
-    });
-
-    /** 权限 */
-    Route::get('authority', 'AuthorityController@index');
-    Route::group(['prefix'=>"authority"],function (){
-        Route::post('store', 'AuthorityController@store');
-        Route::post('update', 'AuthorityController@update');
-        Route::post('destroy', 'AuthorityController@destroy');
-    });
-    /** 权限 */
-    Route::get('role', 'AuthorityController@index');
-    Route::group(['prefix'=>"role"],function (){
-        Route::post('save', 'RoleController@save');
-        Route::post('loadRelevance', 'RoleController@loadRelevance');
-        Route::post('destroy', 'RoleController@destroy');
-        Route::post('saveAuthority', 'RoleController@saveAuthority');
-        Route::post('saveOwner', 'RoleController@saveOwner');
-        Route::post('saveUserWorkGroup', 'RoleController@saveUserWorkGroup');
-    });
-
-    /** 商品 */
-    Route::group(['prefix'=>'commodity'],function(){
-        /** 导出 */
-        Route::group(['prefix'=>'import'],function(){
-            Route::post('excel', 'CommodityController@importExcel');
-        });
-        Route::get('import', 'CommodityController@import');
-        Route::post('syncWMS','CommodityController@syncWMS');
-        Route::post('isExist','CommodityController@isExist');
-    });
-    /** 货主 */
-    Route::group(['prefix'=>'owner'],function (){
-        Route::post("get","OwnerController@get");
-        Route::post("apiStore","OwnerController@apiStore");
-        Route::get('recycle','OwnerController@recycle');
-        Route::post('restoreSelected', 'OwnerController@restoreSelected');
-    });
-    /** 教程 */
-    Route::group(['prefix'=>'tutorial'],function(){
-        Route::post('showContent/{id}', 'TutorialController@showContent');
-    });
-    /** 临时工 */
-    Route::group(['prefix'=>'userLabor'],function(){
-        Route::post('getWorkRecord', 'UserLaborController@getWorkRecord');
-        Route::post('getClockRecord', 'UserLaborController@getClockRecord');
-        Route::post('relieve', 'UserLaborController@relieve');
-        Route::post('conversion', 'UserLaborController@conversion');
-    });
-    /** 纸箱 */
-    Route::group(['prefix'=>'paperBox'],function(){
-        /** 首页 */
-        Route::group(['prefix'=>'index'],function(){
-            Route::get('model', 'PaperBoxController@indexModel');
-            Route::get('owner', 'PaperBoxController@indexOwner');
-        });
-        /** excel */
-        Route::group(['prefix'=>'excel'],function(){
-            Route::post('import','PaperBoxController@import');
-            Route::get('goImport',function (){return view('maintenance.paperBox.import');});
-        });
-    });
-    /** 计费模型 */
-    Route::group(['prefix'=>'priceModel'],function() {
-        Route::group(['prefix'=>'waybillPriceModel'],function(){
+/*
+ * 需要认证的路由
+ * */
+Route::group(['middleware'=>'auth'],function ($route){
+    /** @var Route $route */
+    $route->get('/home', 'HomeController@index')->name('home');
+    /** 密码 */
+    $route->group(['prefix'=>'password'],function(){
+        Route::get('change', 'Auth\PasswordController@change');
+        Route::post('update', 'Auth\PasswordController@update');
+    });
+    /** 全局 */
+    $route->get('denied',function (){return view('exception.authority');});
+    $route->post('getMenu','MenuController@get');
+    /** 基础设置 */
+    $route->group(['prefix'=>'maintenance'],function(){
+        /** 菜单 */
+        Route::get('menu', 'MenuController@index');
+        Route::group(['prefix'=>"menu"],function (){
+            Route::post('update', 'MenuController@update');
+            Route::post('save', 'MenuController@save');
+            Route::post('sort', 'MenuController@sort');
+            Route::post('delete', 'MenuController@delete');
+        });
+        /** 权限 */
+        Route::get('authority', 'AuthorityController@index');
+        Route::group(['prefix'=>"authority"],function (){
+            Route::post('store', 'AuthorityController@store');
+            Route::post('update', 'AuthorityController@update');
+            Route::post('destroy', 'AuthorityController@destroy');
+        });
+        /** 权限 */
+        Route::get('role', 'AuthorityController@index');
+        Route::group(['prefix'=>"role"],function (){
+            Route::post('save', 'RoleController@save');
+            Route::post('loadRelevance', 'RoleController@loadRelevance');
+            Route::post('destroy', 'RoleController@destroy');
+            Route::post('saveAuthority', 'RoleController@saveAuthority');
+            Route::post('saveOwner', 'RoleController@saveOwner');
+            Route::post('saveUserWorkGroup', 'RoleController@saveUserWorkGroup');
+        });
+        /** 商品 */
+        Route::group(['prefix'=>'commodity'],function(){
+            /** 导出 */
+            Route::group(['prefix'=>'import'],function(){
+                Route::post('excel', 'CommodityController@importExcel');
+            });
+            Route::get('import', 'CommodityController@import');
+            Route::post('syncWMS','CommodityController@syncWMS');
+            Route::post('isExist','CommodityController@isExist');
+        });
+        /** 货主 */
+        Route::group(['prefix'=>'owner'],function (){
+            Route::post("get","OwnerController@get");
+            Route::post("apiStore","OwnerController@apiStore");
+            Route::get('recycle','OwnerController@recycle');
+            Route::post('restoreSelected', 'OwnerController@restoreSelected');
+        });
+        /** 教程 */
+        Route::group(['prefix'=>'tutorial'],function(){
+            Route::post('showContent/{id}', 'TutorialController@showContent');
+        });
+        /** 临时工 */
+        Route::group(['prefix'=>'userLabor'],function(){
+            Route::post('getWorkRecord', 'UserLaborController@getWorkRecord');
+            Route::post('getClockRecord', 'UserLaborController@getClockRecord');
+            Route::post('relieve', 'UserLaborController@relieve');
+            Route::post('conversion', 'UserLaborController@conversion');
+        });
+        /** 纸箱 */
+        Route::group(['prefix'=>'paperBox'],function(){
+            /** 首页 */
+            Route::group(['prefix'=>'index'],function(){
+                Route::get('model', 'PaperBoxController@indexModel');
+                Route::get('owner', 'PaperBoxController@indexOwner');
+            });
             /** excel */
             Route::group(['prefix'=>'excel'],function(){
-                Route::get('goImport',function (){return view('maintenance.priceModel.waybillPriceModel.import');});
+                Route::post('import','PaperBoxController@import');
+                Route::get('goImport',function (){return view('maintenance.paperBox.import');});
             });
-            Route::get('cities/{province_id}','WaybillPriceModelController@getCities');
         });
-        Route::resource('waybillPriceModel','WaybillPriceModelController');
-
-        Route::group(['prefix'=>'storage'],function(){
-            Route::get('create','PriceModelController@storageCreate');
-            Route::post('store','PriceModelController@storageStore');
-            Route::get('{id}/edit','PriceModelController@storageEdit');
-            Route::delete("{id}","PriceModelController@storageDestroy");
-            Route::post('update','PriceModelController@storageUpdate');
-        });
-        Route::get('storage','PriceModelController@storageIndex');
-
-        Route::group(['prefix'=>'operation'],function(){
-            Route::get('create','PriceModelController@operationCreate');
-            Route::post('getItems','PriceModelController@getItems');
-            Route::post('updateItem','PriceModelController@updateItem');
-            Route::post('createItem','PriceModelController@createItem');
-            Route::post('getFeatures','PriceModelController@getFeatures');
-            Route::post('addFeature','PriceModelController@addFeature');
-            Route::post('getFeature','PriceModelController@getFeature');
-            Route::delete('{id}','PriceModelController@operationDestroy');
-            Route::get('{id}/edit','PriceModelController@operationEdit');
-            Route::post('{id}/edit','PriceModelController@operationUpdate');
-        });
-        Route::get('operation','PriceModelController@operationIndex');
-        Route::post('operation','PriceModelController@operationStore');
-
-        Route::group(['prefix'=>'express'],function(){
-            Route::get('create','PriceModelController@expressCreate');
-            Route::post('getDetail','PriceModelController@expressGetDetail');
-            Route::post('import','PriceModelController@expressImport');
-            Route::post('updateDetail','PriceModelController@expressUpdateDetail');
-            Route::post('destroyDetail','PriceModelController@expressDestroyDetail');
-            Route::delete('{id}','PriceModelController@expressDestroy');
-            Route::get('{id}/edit','PriceModelController@expressEdit');
-            Route::post('{id}/edit','PriceModelController@expressUpdate');
-            Route::get('export/{id}','PriceModelController@expressExport');
-        });
-        Route::get('express','PriceModelController@expressIndex');
-        Route::post('express','PriceModelController@expressStore');
-
-        Route::group(['prefix'=>'logistic'],function(){
-            Route::get('create','PriceModelController@logisticCreate');
-            Route::delete('{id}','PriceModelController@logisticDestroy');
-            Route::get('{id}/edit','PriceModelController@logisticEdit');
-            Route::post('{id}/edit','PriceModelController@logisticUpdate');
-            Route::post('getDetail','PriceModelController@logisticGetDetail');
-            Route::post('import','PriceModelController@logisticImport');
-            Route::post('updateDetail','PriceModelController@logisticUpdateDetail');
-            Route::post('destroyDetail','PriceModelController@logisticDestroyDetail');
-            Route::get('export/{id}','PriceModelController@logisticExport');
-        });
-        Route::get('logistic','PriceModelController@logisticIndex');
-        Route::post('logistic','PriceModelController@logisticStore');
-
-        Route::group(['prefix'=>'directLogistic'],function(){
-            Route::get('create','PriceModelController@directLogisticCreate');
-            Route::delete('{id}','PriceModelController@directLogisticDestroy');
-            Route::get('{id}/edit','PriceModelController@directLogisticEdit');
-            Route::post('{id}/edit','PriceModelController@directLogisticUpdate');
-            Route::post('getDetail','PriceModelController@directLogisticGetDetail');
-            Route::post('import','PriceModelController@directLogisticImport');
-            Route::post('updateDetail','PriceModelController@directLogisticUpdateDetail');
-            Route::post('destroyDetail','PriceModelController@directLogisticDestroyDetail');
-        });
-        Route::get('directLogistic','PriceModelController@directLogisticIndex');
-        Route::post('directLogistic','PriceModelController@directLogisticStore');
-
-        //api 录入计费模型
-        Route::post('apiStoreStorage','PriceModelController@apiStoreStorage');
-        Route::post('apiStoreOperation','PriceModelController@apiStoreOperation');
-        Route::post('apiStoreExpress','PriceModelController@apiStoreExpress');
-        Route::post('apiStoreLogistic','PriceModelController@apiStoreLogistic');
-        Route::post('apiStoreDirectLogistic','PriceModelController@apiStoreDirectLogistic');
-        Route::post('apiStoreSystem','PriceModelController@apiStoreSystem');
-        //api 获取计费模型
-        Route::post('apiGetStorage','PriceModelController@apiGetStorage');
-        Route::post('apiGetOperation','PriceModelController@apiGetOperation');
-        Route::post('apiGetExpress','PriceModelController@apiGetExpress');
-        Route::post('apiGetLogistic','PriceModelController@apiGetLogistic');
-        Route::post('apiGetDirectLogistic','PriceModelController@apiGetDirectLogistic');
-        //api 删除计费模型
-        Route::post('apiDelStorage','PriceModelController@apiDelStorage');
-        Route::post('apiDelOperation','PriceModelController@apiDelOperation');
-        Route::post('apiDelOperationItem','PriceModelController@apiDelOperationItem');
-        Route::post('apiDelExpress','PriceModelController@apiDelExpress');
-        Route::post('apiDelExpressItem','PriceModelController@apiDelExpressItem');
-        Route::post('apiDelLogistic','PriceModelController@apiDelLogistic');
-        Route::post('apiDelLogisticItem','PriceModelController@apiDelLogisticItem');
-        Route::post('apiDelDirectLogistic','PriceModelController@apiDelDirectLogistic');
-        Route::post('apiDelDirectLogisticItem','PriceModelController@apiDelDirectLogisticItem');
-        Route::post('apiDelSystem','PriceModelController@apiDelSystem');
-        //审核或恢复计费模型
-        Route::post('auditOrRecoverModel','PriceModelController@auditOrRecoverModel');
-        //审核对比
-        Route::post('getPriceModelAudit','PriceModelController@getPriceModelAudit');
-    });
-    Route::group(['prefix'=>'unit'],function(){
-        Route::post('getUnits','UnitController@getUnits');
-        Route::post('save','UnitController@save');
-        Route::post('sort','UnitController@sort');
-    });
-    Route::group(['prefix'=>'province'],function(){
-        Route::post('get','ProvincesController@get');
-    });
-    Route::group(['prefix'=>'city'],function(){
-        Route::post('get','CitiesController@get');
-    });
-    Route::group(['prefix'=>'carType'],function (){
-        Route::post('get','CarTypesController@get');
-        Route::post('batchInsert','CarTypesController@batchInsert');
-    });
-    Route::group(['prefix'=>'taxRate'],function (){
-        Route::post('get','TaxRateController@get');
-        Route::post('save','TaxRateController@save');
-        Route::post('destroy','TaxRateController@destroy');
-    });
-    Route::group(['prefix'=>"log"],function (){
-        Route::get("exception",'LogController@exception');
-    });
-    Route::group(['prefix'=>"logistic"],function (){
-        Route::post("get",'LogisticController@get');
-    });
-    Route::group(['prefix'=>"region"],function (){
-        Route::post("get",'RegionController@get');
-        Route::post("store",'RegionController@store');
-        Route::post("getProvinces",'RegionController@getProvinces');
-    });
-    /** 耗材 */
-    Route::get('material','MaterialController@index');
-    /** 用户 */
-    Route::group(['prefix'=>"user"],function (){
-        Route::post("resetPassword",'UserController@resetPassword');
-    });
-    /** 项目耗材 */
-    Route::group(['prefix'=>"ownerMaterial"],function (){
-        Route::get("/",'OwnerMaterialController@index');
-        Route::get('downFile','OwnerMaterialController@downFile');
-    });
-    /** 供应商 */
-    Route::get('supplier','SupplierController@index');
-    /** 系统配置 */
-    Route::get('configuration','ConfigurationController@index');
-    /** 服务商 */
-    Route::resource('facilitator','FacilitatorController');
-    /** 快递打印 */
-    Route::group(['prefix'=>'expressPrinting'],function(){
-        Route::get('/part','PrintPartController@index');
-        Route::get('/part/create','PrintPartController@create');
-        Route::group(['prefix'=>'template'],function(){
-            Route::get('/index','PrintTemplateController@index');
-            Route::get('/create','PrintTemplateController@create');
+        /** 计费模型 */
+        Route::group(['prefix'=>'priceModel'],function() {
+            Route::group(['prefix'=>'waybillPriceModel'],function(){
+                /** excel */
+                Route::group(['prefix'=>'excel'],function(){
+                    Route::get('goImport',function (){return view('maintenance.priceModel.waybillPriceModel.import');});
+                });
+                Route::get('cities/{province_id}','WaybillPriceModelController@getCities');
+            });
+            Route::resource('waybillPriceModel','WaybillPriceModelController');
+            Route::group(['prefix'=>'storage'],function(){
+                Route::get('create','PriceModelController@storageCreate');
+                Route::post('store','PriceModelController@storageStore');
+                Route::get('{id}/edit','PriceModelController@storageEdit');
+                Route::delete("{id}","PriceModelController@storageDestroy");
+                Route::post('update','PriceModelController@storageUpdate');
+            });
+            Route::get('storage','PriceModelController@storageIndex');
+            Route::group(['prefix'=>'operation'],function(){
+                Route::get('create','PriceModelController@operationCreate');
+                Route::post('getItems','PriceModelController@getItems');
+                Route::post('updateItem','PriceModelController@updateItem');
+                Route::post('createItem','PriceModelController@createItem');
+                Route::post('getFeatures','PriceModelController@getFeatures');
+                Route::post('addFeature','PriceModelController@addFeature');
+                Route::post('getFeature','PriceModelController@getFeature');
+                Route::delete('{id}','PriceModelController@operationDestroy');
+                Route::get('{id}/edit','PriceModelController@operationEdit');
+                Route::post('{id}/edit','PriceModelController@operationUpdate');
+            });
+            Route::get('operation','PriceModelController@operationIndex');
+            Route::post('operation','PriceModelController@operationStore');
+            Route::group(['prefix'=>'express'],function(){
+                Route::get('create','PriceModelController@expressCreate');
+                Route::post('getDetail','PriceModelController@expressGetDetail');
+                Route::post('import','PriceModelController@expressImport');
+                Route::post('updateDetail','PriceModelController@expressUpdateDetail');
+                Route::post('destroyDetail','PriceModelController@expressDestroyDetail');
+                Route::delete('{id}','PriceModelController@expressDestroy');
+                Route::get('{id}/edit','PriceModelController@expressEdit');
+                Route::post('{id}/edit','PriceModelController@expressUpdate');
+                Route::get('export/{id}','PriceModelController@expressExport');
+            });
+            Route::get('express','PriceModelController@expressIndex');
+            Route::post('express','PriceModelController@expressStore');
+            Route::group(['prefix'=>'logistic'],function(){
+                Route::get('create','PriceModelController@logisticCreate');
+                Route::delete('{id}','PriceModelController@logisticDestroy');
+                Route::get('{id}/edit','PriceModelController@logisticEdit');
+                Route::post('{id}/edit','PriceModelController@logisticUpdate');
+                Route::post('getDetail','PriceModelController@logisticGetDetail');
+                Route::post('import','PriceModelController@logisticImport');
+                Route::post('updateDetail','PriceModelController@logisticUpdateDetail');
+                Route::post('destroyDetail','PriceModelController@logisticDestroyDetail');
+                Route::get('export/{id}','PriceModelController@logisticExport');
+            });
+            Route::get('logistic','PriceModelController@logisticIndex');
+            Route::post('logistic','PriceModelController@logisticStore');
+
+            Route::group(['prefix'=>'directLogistic'],function(){
+                Route::get('create','PriceModelController@directLogisticCreate');
+                Route::delete('{id}','PriceModelController@directLogisticDestroy');
+                Route::get('{id}/edit','PriceModelController@directLogisticEdit');
+                Route::post('{id}/edit','PriceModelController@directLogisticUpdate');
+                Route::post('getDetail','PriceModelController@directLogisticGetDetail');
+                Route::post('import','PriceModelController@directLogisticImport');
+                Route::post('updateDetail','PriceModelController@directLogisticUpdateDetail');
+                Route::post('destroyDetail','PriceModelController@directLogisticDestroyDetail');
+            });
+            Route::get('directLogistic','PriceModelController@directLogisticIndex');
+            Route::post('directLogistic','PriceModelController@directLogisticStore');
+            //api 录入计费模型
+            Route::post('apiStoreStorage','PriceModelController@apiStoreStorage');
+            Route::post('apiStoreOperation','PriceModelController@apiStoreOperation');
+            Route::post('apiStoreExpress','PriceModelController@apiStoreExpress');
+            Route::post('apiStoreLogistic','PriceModelController@apiStoreLogistic');
+            Route::post('apiStoreDirectLogistic','PriceModelController@apiStoreDirectLogistic');
+            Route::post('apiStoreSystem','PriceModelController@apiStoreSystem');
+            //api 获取计费模型
+            Route::post('apiGetStorage','PriceModelController@apiGetStorage');
+            Route::post('apiGetOperation','PriceModelController@apiGetOperation');
+            Route::post('apiGetExpress','PriceModelController@apiGetExpress');
+            Route::post('apiGetLogistic','PriceModelController@apiGetLogistic');
+            Route::post('apiGetDirectLogistic','PriceModelController@apiGetDirectLogistic');
+            //api 删除计费模型
+            Route::post('apiDelStorage','PriceModelController@apiDelStorage');
+            Route::post('apiDelOperation','PriceModelController@apiDelOperation');
+            Route::post('apiDelOperationItem','PriceModelController@apiDelOperationItem');
+            Route::post('apiDelExpress','PriceModelController@apiDelExpress');
+            Route::post('apiDelExpressItem','PriceModelController@apiDelExpressItem');
+            Route::post('apiDelLogistic','PriceModelController@apiDelLogistic');
+            Route::post('apiDelLogisticItem','PriceModelController@apiDelLogisticItem');
+            Route::post('apiDelDirectLogistic','PriceModelController@apiDelDirectLogistic');
+            Route::post('apiDelDirectLogisticItem','PriceModelController@apiDelDirectLogisticItem');
+            Route::post('apiDelSystem','PriceModelController@apiDelSystem');
+            //审核或恢复计费模型
+            Route::post('auditOrRecoverModel','PriceModelController@auditOrRecoverModel');
+            //审核对比
+            Route::post('getPriceModelAudit','PriceModelController@getPriceModelAudit');
+        });
+        Route::group(['prefix'=>'unit'],function(){
+            Route::post('getUnits','UnitController@getUnits');
+            Route::post('save','UnitController@save');
+            Route::post('sort','UnitController@sort');
+        });
+        Route::group(['prefix'=>'province'],function(){
+            Route::post('get','ProvincesController@get');
+        });
+        Route::group(['prefix'=>'city'],function(){
+            Route::post('get','CitiesController@get');
+        });
+        Route::group(['prefix'=>'carType'],function (){
+            Route::post('get','CarTypesController@get');
+            Route::post('batchInsert','CarTypesController@batchInsert');
+        });
+        Route::group(['prefix'=>'taxRate'],function (){
+            Route::post('get','TaxRateController@get');
+            Route::post('save','TaxRateController@save');
+            Route::post('destroy','TaxRateController@destroy');
+        });
+        Route::group(['prefix'=>"log"],function (){
+            Route::get("exception",'LogController@exception');
+        });
+        Route::group(['prefix'=>"logistic"],function (){
+            Route::post("get",'LogisticController@get');
+        });
+        Route::group(['prefix'=>"region"],function (){
+            Route::post("get",'RegionController@get');
+            Route::post("store",'RegionController@store');
+            Route::post("getProvinces",'RegionController@getProvinces');
+        });
+        /** 耗材 */
+        Route::get('material','MaterialController@index');
+        /** 用户 */
+        Route::group(['prefix'=>"user"],function (){
+            Route::post("resetPassword",'UserController@resetPassword');
+        });
+        /** 项目耗材 */
+        Route::group(['prefix'=>"ownerMaterial"],function (){
+            Route::get("/",'OwnerMaterialController@index');
+            Route::get('downFile','OwnerMaterialController@downFile');
+        });
+        /** 供应商 */
+        Route::get('supplier','SupplierController@index');
+        /** 系统配置 */
+        Route::get('configuration','ConfigurationController@index');
+        /** 服务商 */
+        Route::resource('facilitator','FacilitatorController');
+        /** 快递打印 */
+        Route::group(['prefix'=>'expressPrinting'],function(){
+            Route::get('/part','PrintPartController@index');
+            Route::get('/part/create','PrintPartController@create');
+            Route::group(['prefix'=>'template'],function(){
+                Route::get('/index','PrintTemplateController@index');
+                Route::get('/create','PrintTemplateController@create');
+            });
+        });
+        Route::get('syncRedisLogs','LogController@syncRedisLogs');
+        Route::get('region', 'RegionController@index');
+        Route::get('taxRate', 'TaxRateController@index');
+        Route::resource('log', 'LogController');
+        Route::resource('user', 'UserController');
+        Route::resource('role', 'RoleController');
+        Route::resource('owner', 'OwnerController');
+        Route::resource('logistic', 'LogisticController');
+        Route::resource('qualityLabel', 'QualityLabelController');
+        Route::resource('carrier', 'CarriersController');
+        Route::resource('carType','CarTypesController');
+        Route::resource('unit','UnitController');
+        Route::resource('province','ProvincesController');
+        Route::resource('city','CitiesController');
+        Route::resource('commodity', 'CommodityController');
+        Route::resource('measuringMachine', 'MeasuringMachineController');
+        Route::resource('userWorkgroup', 'UserWorkgroupController');
+        Route::resource('laborCompany', 'LaborCompanyController');
+        Route::resource('warehouse', 'WarehouseController');
+        Route::resource('tutorial', 'TutorialController');
+        Route::resource('userLabor','UserLaborController');
+        Route::resource('paperBox', 'PaperBoxController');
+        Route::resource('userOwnerGroup', 'UserOwnerGroupController');
+        Route::resource('processMethod', 'ProcessMethodController');
+        Route::resource('feature', 'FeatureController');
+        Route::resource('mail', 'SendEmailsController');
+        Route::post('mail/addRole', 'SendEmailsController@addRole')->name('mail.addRole');
+        Route::post('mail/deleteRole', 'SendEmailsController@deleteRole')->name('mail.deleteRole');
+        Route::post('mail/updateTemplate', 'SendEmailsController@updateTemplate')->name('mail.updateTemplate');
+        Route::post('mail/updateRemark', 'SendEmailsController@updateRemark')->name('mail.updateRemark');
+        Route::post('mail/active', 'SendEmailsController@active')->name('mail.active');
+    });
+    $route->get('maintenance', function () {return view('maintenance.index');});
+    $route->group(['prefix'=>'transport'],function(){
+        /** 运单 */
+        Route::group(['prefix'=>'waybill'],function(){
+            /** 置顶 */
+            Route::group(['prefix'=>'ontop'],function(){
+                Route::post('top','WaybillController@waybillOnTop');
+                Route::post('cancel','WaybillController@cancelOnTop');
+            });
+            /** 判断 */
+            Route::group(['prefix'=>'is'],function(){
+                Route::post('waybillPriceModel','WaybillController@isWaybillPriceModel');
+            });
+            Route::post('deleteImg','WaybillController@deleteImg');
+            Route::post('seekOrder','WaybillController@seekOrder');
+            Route::post('upload','WaybillController@upload');
+            Route::get('relating',function (){return view('transport.waybill.menuWaybill');});
+            Route::get('recycle', 'WaybillController@recycle');
+            Route::post('refreshWaveHouseWeight','WaybillController@refreshWaveHouseWeight');
+            Route::get('index','WaybillController@index');
+            Route::get('delivering','WaybillController@delivering');
+            Route::any('deliveringExport','WaybillController@deliveringExport');
+            Route::post('storeCarrierBill','WaybillController@storeCarrierBill');
+            Route::post('addCounty','WaybillController@addCounty');
+            Route::any('waybillAudit','WaybillController@waybillAudit');
+            Route::any('waybillEdit/{id}','WaybillController@waybillEdit');
+            Route::any('waybillRetreatAudit','WaybillController@waybillRetreatAudit');
+            Route::any('waybillEndAudit','WaybillController@waybillEndAudit');
+            Route::any('export','WaybillController@export');
+            Route::any('waybillUpdate/{id}','WaybillController@waybillUpdate');
+            Route::post('batchUploadImages','WaybillController@batchUploadImages');
+            Route::post('dailyBilling','WaybillController@dailyBilling');
+            Route::post('countPickUpFee','WaybillController@countPickUpFee');
+            Route::resource('waybillFinancialSnapshot','WaybillFinancialSnapshotsController');
+            Route::resource('waybillFinancialExcepted','WaybillFinancialExceptedController');
+        });
+        Route::resource('waybill','WaybillController');
+    });
+    /** 运输财务 */
+    $route->group(['prefix'=>'waybillFinancialSnapshot'],function(){
+        Route::any('export','WaybillFinancialSnapshotsController@export');
+    });
+    /** 运输计费模型 */
+    $route->group(['prefix'=>'waybillPriceModel'],function(){
+        /** excel */
+        Route::group(['prefix'=>'excel'],function(){
+            Route::post('import','WaybillPriceModelController@import');
         });
     });
-
-    Route::get('syncRedisLogs','LogController@syncRedisLogs');
-    Route::get('region', 'RegionController@index');
-    Route::get('taxRate', 'TaxRateController@index');
-    Route::resource('log', 'LogController');
-    Route::resource('user', 'UserController');
-    Route::resource('role', 'RoleController');
-    Route::resource('owner', 'OwnerController');
-    Route::resource('logistic', 'LogisticController');
-    Route::resource('qualityLabel', 'QualityLabelController');
-    Route::resource('carrier', 'CarriersController');
-    Route::resource('carType','CarTypesController');
-    Route::resource('unit','UnitController');
-    Route::resource('province','ProvincesController');
-    Route::resource('city','CitiesController');
-    Route::resource('commodity', 'CommodityController');
-    Route::resource('measuringMachine', 'MeasuringMachineController');
-    Route::resource('userWorkgroup', 'UserWorkgroupController');
-    Route::resource('laborCompany', 'LaborCompanyController');
-    Route::resource('warehouse', 'WarehouseController');
-    Route::resource('tutorial', 'TutorialController');
-    Route::resource('userLabor','UserLaborController');
-    Route::resource('paperBox', 'PaperBoxController');
-    Route::resource('userOwnerGroup', 'UserOwnerGroupController');
-    Route::resource('processMethod', 'ProcessMethodController');
-    Route::resource('feature', 'FeatureController');
-    Route::resource('mail', 'SendEmailsController');
-    Route::post('mail/addRole', 'SendEmailsController@addRole')->name('mail.addRole');
-    Route::post('mail/deleteRole', 'SendEmailsController@deleteRole')->name('mail.deleteRole');
-    Route::post('mail/updateTemplate', 'SendEmailsController@updateTemplate')->name('mail.updateTemplate');
-    Route::post('mail/updateRemark', 'SendEmailsController@updateRemark')->name('mail.updateRemark');
-    Route::post('mail/active', 'SendEmailsController@active')->name('mail.active');
-
-
-
-});
-Route::get('maintenance', function () {return view('maintenance.index');});
-
-Route::group(['prefix'=>'transport'],function(){
-    /** 运单 */
-    Route::group(['prefix'=>'waybill'],function(){
-        /** 置顶 */
-        Route::group(['prefix'=>'ontop'],function(){
-            Route::post('top','WaybillController@waybillOnTop');
-            Route::post('cancel','WaybillController@cancelOnTop');
-        });
-        /** 判断 */
-        Route::group(['prefix'=>'is'],function(){
-            Route::post('waybillPriceModel','WaybillController@isWaybillPriceModel');
-        });
-        Route::post('deleteImg','WaybillController@deleteImg');
-        Route::post('seekOrder','WaybillController@seekOrder');
-        Route::post('upload','WaybillController@upload');
-        Route::get('relating',function (){return view('transport.waybill.menuWaybill');});
-        Route::get('recycle', 'WaybillController@recycle');
-        Route::post('refreshWaveHouseWeight','WaybillController@refreshWaveHouseWeight');
-        Route::get('index','WaybillController@index');
-        Route::get('delivering','WaybillController@delivering');
-        Route::any('deliveringExport','WaybillController@deliveringExport');
-        Route::post('storeCarrierBill','WaybillController@storeCarrierBill');
-        Route::post('addCounty','WaybillController@addCounty');
-        Route::any('waybillAudit','WaybillController@waybillAudit');
-        Route::any('waybillEdit/{id}','WaybillController@waybillEdit');
-        Route::any('waybillRetreatAudit','WaybillController@waybillRetreatAudit');
-        Route::any('waybillEndAudit','WaybillController@waybillEndAudit');
-        Route::any('export','WaybillController@export');
-        Route::any('waybillUpdate/{id}','WaybillController@waybillUpdate');
-        Route::post('batchUploadImages','WaybillController@batchUploadImages');
-        Route::post('dailyBilling','WaybillController@dailyBilling');
-        Route::post('countPickUpFee','WaybillController@countPickUpFee');
-        Route::resource('waybillFinancialSnapshot','WaybillFinancialSnapshotsController');
-        Route::resource('waybillFinancialExcepted','WaybillFinancialExceptedController');
-    });
-    Route::resource('waybill','WaybillController');
-
-});
-
-/** 运输财务 */
-Route::group(['prefix'=>'waybillFinancialSnapshot'],function(){
-    Route::any('export','WaybillFinancialSnapshotsController@export');
-});
-
-/** 运输计费模型 */
-Route::group(['prefix'=>'waybillPriceModel'],function(){
-    /** excel */
-    Route::group(['prefix'=>'excel'],function(){
-        Route::post('import','WaybillPriceModelController@import');
-    });
-});
-
-/** 退货明细 */
-Route::group(['prefix'=>'rejectedBill'],function(){
-    Route::post('{rejectedBill}/edit', 'RejectedBillController@edit');
-});
-Route::resource('rejectedBill', 'RejectedBillController');
-Route::any('rejectedBill/func/{func}', 'RejectedBillController@func'); //测试
-
-/** 退货 */
-Route::group(['prefix'=>'rejected'],function(){
-    /** 导出 */
-    Route::group(['prefix'=>'import'],function(){
-        Route::post('excel', 'RejectedController@importExcel');
-    });
-    /** 主页 */
-    Route::group(['prefix'=>'index'],function(){
-        Route::any('general','RejectedController@index');
-        Route::any('analyze','RejectedController@indexAnalyze');
-        Route::get('import', 'RejectedController@import');
-        Route::post('cancelCheck', 'RejectedController@cancelCheck');
-    });
-    /** 分析 */
-    Route::group(['prefix'=>'analyze'],function(){
-        Route::post('exportExcelOnParams', 'RejectedController@exportExcelOnParams');
-        Route::post('exportAllExcelOnParams', 'RejectedController@exportAllExcelOnParams');
-    });
-
-    Route::get('relating', function () {return view('rejected.relating');});
-    Route::get('recycle', 'RejectedController@recycle');
-    Route::post('ajaxCheck', 'RejectedController@ajaxCheck');
-    Route::post('ajaxCheckAll', 'RejectedController@ajaxCheckAll');
-    Route::post('ajaxFinishAll', 'RejectedController@ajaxFinishAll');
-    Route::any('export', 'RejectedController@export');
-    Route::any('exportAnalyze', 'RejectedController@exportAnalyze');
-    Route::post('ajaxGetRejected', 'RejectedController@ajaxGetRejected');
-    Route::post('changeRejectedBillRemark', 'RejectedController@changeRejectedBillRemark');
-    Route::get('importRejectedNumber','RejectedBillController@importRejectedNumber');
-});
-Route::resource('rejected', 'RejectedController');
-
-
-/** 包裹 */
-Route::group(['prefix'=>'package'],function(){
-    /** 统计 */
-    Route::group(['prefix'=>'statistics'],function(){
-        Route::any('export','WeighController@statisticsExport');
-    });
-    /** 异常 */
-    Route::group(['prefix'=>'weightExcepted'],function(){
-        Route::get('indexCreate','WeighExceptedController@indexCreate');
-        Route::get('indexIssued','WeighExceptedController@indexIssued');
-        Route::any('export/{type}','WeighExceptedController@export');
-    });
-
-    Route::any('export','WeighController@export');
-    Route::get('statistics','WeighController@statistics');
-    Route::get('relating', function () {return view('package.measureMonitor.menu');});
-
-    Route::resource('measureMonitor','MeasureMonitorController');
-
-    Route::group(['prefix'=>'measureMonitor'],function(){
-        Route::post('data','MeasureMonitorController@data');
+    /** 退货明细 */
+    $route->group(['prefix'=>'rejectedBill'],function(){
+        Route::post('{rejectedBill}/edit', 'RejectedBillController@edit');
     });
-    Route::group(['prefix' => 'weigh'], function () {
-        Route::get('statistics','WeighController@statistics');
-        /** 设备 */
-        Route::group(['prefix'=>'measureMonitor'],function(){
-            Route::post('data','MeasureMonitorController@data');
+    $route->resource('rejectedBill', 'RejectedBillController');
+    /** 退货 */
+    $route->group(['prefix'=>'rejected'],function(){
+        /** 导出 */
+        Route::group(['prefix'=>'import'],function(){
+            Route::post('excel', 'RejectedController@importExcel');
         });
+        /** 主页 */
+        Route::group(['prefix'=>'index'],function(){
+            Route::any('general','RejectedController@index');
+            Route::any('analyze','RejectedController@indexAnalyze');
+            Route::get('import', 'RejectedController@import');
+            Route::post('cancelCheck', 'RejectedController@cancelCheck');
+        });
+        /** 分析 */
+        Route::group(['prefix'=>'analyze'],function(){
+            Route::post('exportExcelOnParams', 'RejectedController@exportExcelOnParams');
+            Route::post('exportAllExcelOnParams', 'RejectedController@exportAllExcelOnParams');
+        });
+
+        Route::get('relating', function () {return view('rejected.relating');});
+        Route::get('recycle', 'RejectedController@recycle');
+        Route::post('ajaxCheck', 'RejectedController@ajaxCheck');
+        Route::post('ajaxCheckAll', 'RejectedController@ajaxCheckAll');
+        Route::post('ajaxFinishAll', 'RejectedController@ajaxFinishAll');
+        Route::any('export', 'RejectedController@export');
+        Route::any('exportAnalyze', 'RejectedController@exportAnalyze');
+        Route::post('ajaxGetRejected', 'RejectedController@ajaxGetRejected');
+        Route::post('changeRejectedBillRemark', 'RejectedController@changeRejectedBillRemark');
+        Route::get('importRejectedNumber','RejectedBillController@importRejectedNumber');
+    });
+    $route->resource('rejected', 'RejectedController');
+    /** 包裹 */
+    $route->group(['prefix'=>'package'],function(){
         /** 统计 */
         Route::group(['prefix'=>'statistics'],function(){
             Route::any('export','WeighController@statisticsExport');
         });
-        Route::resource('measureMonitor','MeasureMonitorController');
-    });
-    Route::get('weigh/index','WeighController@index');
-    Route::resource('weigh','WeighController');
-    Route::put('logistic/batchUpdate','PackageLogisticController@batchUpdate');
-    Route::any('logistic/export','PackageLogisticController@export');
-    Route::resource('logistic','PackageLogisticController');
-});
-Route::resource('package','WeighController');
-
-/** 入库 */
-Route::group(['prefix'=>'store'],function(){
-    Route::group(['prefix'=>'inStorage'],function() {
-        Route::get('index','StoreController@storage');
-        Route::get('cacheRackStorage','StoreController@cacheRackStorage');
-        Route::get('halfChestStorage','StoreController@halfChestStorage');
-        Route::post('putShelf','StorageController@putShelf');
-        Route::post('resetCacheShelf','StorageController@resetCacheShelf');
-        Route::post('setMaximum','StorageController@setMaximum');
-        Route::post('checkMaximum','StorageController@checkMaximum');
-        Route::post('overflowRevision','StorageController@overflowRevision');
-        Route::post('acquireBox','StorageController@acquireBox');
-        Route::post('syncStorage','StorageController@syncStorage');
-        Route::get('android.index',function (){if (!Auth::user())return view("store.inStorage.login");return view('store.inStorage.androidIndex');});
-        Route::post('android.login','StorageController@androidLogin');
-    });
-    Route::group(['prefix'=>'fast'],function() {
-        Route::resource('storeItem','StoreItemController');
-    });
-    Route::resource('fast',"StoreController");
-
-    /** 盲收 */
-    Route::group(['prefix'=>'blindReceive'],function(){
-        Route::get('/', function () { return view('store.blindReceive.index');});
-        Route::get('excels', 'StoreBlindReceiveController@index');
-        Route::post('excels/apiStore', 'StoreBlindReceiveController@apiStore');
-    });
-
-    /** 盘收 */
-    Route::group(['prefix'=>'checkingReceive'],function(){
-        Route::group(['prefix'=>'mission'],function(){
-            Route::post('import','StoreCheckingReceiveController@import');
-            Route::get('export','StoreCheckingReceiveController@export');
-            Route::post('resetAmount','StoreCheckingReceiveController@resetAmount');
-            Route::post('matchASN','StoreCheckingReceiveController@matchASN');
-            Route::post('receipt','StoreCheckingReceiveController@receipt');
-            Route::get('{id}','StoreCheckingReceiveController@show');
-        });
-        Route::post('updateCountedAmount','StoreCheckingReceiveController@updateCountedAmount');
-        Route::post('insertItem','StoreCheckingReceiveController@insertItem');
-        Route::get('mission','StoreCheckingReceiveController@mission');
-        Route::post('destroyItem','StoreCheckingReceiveController@destroyItem');
-    });
-
-    /** 入库预约 */
-    Route::group(['prefix'=>'deliveryAppointment'],function(){
-        Route::get('appointment','DeliveryAppointmentController@appointment');
-        Route::post('getCapacity','DeliveryAppointmentController@getCapacity');
-        Route::post('submitAppointment','DeliveryAppointmentController@submitAppointment');
-        Route::get('showAppointmentInfo','DeliveryAppointmentController@showAppointmentInfo');
-        Route::get('list','DeliveryAppointmentController@list');
-        Route::get('delivery','DeliveryAppointmentController@delivery');
-        Route::get('errMsg','DeliveryAppointmentController@errMsg');
-        Route::get('successMsg','DeliveryAppointmentController@successMsg');
-        Route::post('delivery','DeliveryAppointmentController@checkAppointment');
-        Route::post('cancel','DeliveryAppointmentController@cancel');
-        Route::post('unloading','DeliveryAppointmentController@unloading');
-        Route::post('signIn','DeliveryAppointmentController@signIn');
-        Route::any('export','DeliveryAppointmentController@export');
-        Route::post('getExhibitionList','DeliveryAppointmentController@getExhibitionList');
-        Route::post('getKey','DeliveryAppointmentController@getKey');
-        Route::get('exhibition','DeliveryAppointmentController@exhibition');
-        Route::get('qrcode',function (){
-            if(!Gate::allows('入库管理-入库预约-二维码')){ return view("exception.authority");  }
-            return view("store.deliveryAppointment.qrcode");
-        });
-        Route::group(['prefix'=>'appointment'],function(){
-            Route::post('import','DeliveryAppointmentController@import');
-        });
-        Route::get('capacityMaintenance','DeliveryAppointmentController@capacityMaintenance');
-        Route::post('updateCapacity','DeliveryAppointmentController@updateCapacity');
-        Route::post('verifyASN','DeliveryAppointmentController@verifyASN');
-        Route::post('updateAppointment','DeliveryAppointmentController@updateAppointment');
-        Route::post('qualityInspectionMark','DeliveryAppointmentController@qualityInspectionMark');
-    });
-});
-
-/** 二次加工 */
-Route::group(['prefix'=>'process'],function(){
-    /** 统计 */
-    Route::group(['prefix'=>'statistic'],function(){
-        Route::any("export",'ProcessStatisticController@export');
-    });
-
-    Route::get('relating',function (){return view('process.menuProcess');});
-    Route::get("statistic",'ProcessStatisticController@index');
-    Route::post('getDailyParticipant','ProcessController@getDailyParticipant');
-    Route::post('reject/{id}','ProcessController@reject');
-    Route::post('receive/{id}','ProcessController@receive');
-    Route::post('accomplish','ProcessController@accomplish');
-    Route::post('updateDailyOutput','ProcessController@updateDailyOutput');
-    Route::post('storeProcessDailyParticipant','ProcessController@storeProcessDailyParticipant');
-    Route::post('verifyUserName','ProcessController@verifyUserName');
-    Route::post('updateProcessDailyParticipant','ProcessController@updateProcessDailyParticipant');
-    Route::post('processDailyParticipantAudit/{id}','ProcessController@processDailyParticipantAudit');
-    Route::post('getTutorials/{id}','ProcessController@getTutorials');
-    Route::post('selectedTutorial','ProcessController@selectedTutorial');
-    Route::post('deleteTutorial','ProcessController@deleteTutorial');
-    Route::post('ownerGetTutorials/{owner_id}','ProcessController@ownerGetTutorials');
-    Route::post('rollback','ProcessController@rollback');
-    Route::get('recycle','ProcessController@recycle');
-    Route::post('recover','ProcessController@recover');
-    Route::post('audit','ProcessController@audit');
-    Route::post('processAccomplish','ProcessController@processAccomplish');
-    Route::post('checkAndAccept','ProcessController@checkAndAccept');
-    Route::post('updateUnitPrice','ProcessController@updateUnitPrice');
-    Route::post('workGroupVerify','ProcessController@workGroupVerify');
-    Route::post('accountantVerify','ProcessController@accountantVerify');
-    Route::post('updateStartDate','ProcessController@updateStartDate');
-    Route::post('updateEndDate','ProcessController@updateEndDate');
-    Route::delete('destroyDailyParticipant/{id}','ProcessController@destroyDailyParticipant');
-    Route::post('importPasteData','ProcessController@importPasteData');
-    Route::any('export','ProcessController@export');
-    Route::post('deleteProcessContent/{id}','ProcessController@deleteProcessContent');
-});
-Route::resource('process','ProcessController');
-
-
-/** 人事 */
-Route::group(['prefix'=>'personnel'],function(){
-    /** 绩效 */
-    Route::group(['prefix'=>'report'],function(){
-        Route::match(['GET','POST'],'export','CustomerController@projectReportExport');
-    });
-    Route::get('report','CustomerController@projectReport');
-    /** 打卡 */
-    Route::group(['prefix'=>'checking-in'],function(){
-        /** 打卡记录 */
-        Route::group(['prefix'=>'userDutyCheck'],function(){
-            Route::get('importAndExportClock','UserDutyCheckController@importAndExportClock');
-            Route::get('clock','UserDutyCheckController@clock');
-            Route::any('storeClock','UserDutyCheckController@storeClock');
-            Route::post('绑定临时工并进组','UserDutyCheckController@绑定临时工并进组');
-            Route::post('importGroupClock','UserDutyCheckController@importGroupClock');
-            Route::get('createUserDetail/{mobile_phone}','UserDutyCheckController@createUserDetail');
-            Route::get('updateUserLaborCompanies/{mobile_phone}','UserDutyCheckController@updateUserLaborCompanies');
-            Route::any('storeUserDetail','UserDutyCheckController@storeUserDetail');
-            Route::any('storeUpdateUserLaborCompanies','UserDutyCheckController@storeUpdateUserLaborCompanies');
+        /** 异常 */
+        Route::group(['prefix'=>'weightExcepted'],function(){
+            Route::get('indexCreate','WeighExceptedController@indexCreate');
+            Route::get('indexIssued','WeighExceptedController@indexIssued');
+            Route::any('export/{type}','WeighExceptedController@export');
         });
 
-        Route::get('goGetQRCode','QRCodeController@goGetQRCode');
-        Route::get('QRCode','QRCodeController@QRCode');
-        Route::get('importAndExportQRCode','QRCodeController@importAndExportQRCode');
-        Route::post('refreshQRCode','QRCodeController@refreshQRCode');
-        Route::get('createReplenishClock','PersonnelController@createReplenishClock');
-        Route::post('checkUserLabors','PersonnelController@checkUserLabors');
-        Route::post('storeReplenishClock','PersonnelController@storeReplenishClock');
-        Route::get('clockAudit','PersonnelController@clockAudit');
-        Route::get('missionAudit','PersonnelController@missionAudit');
-        Route::post('storeClockAudit','PersonnelController@storeClockAudit');
-        Route::post('updateDutyCheckType','PersonnelController@updateDutyCheckType');
-        Route::post('storeGroupAudit','PersonnelController@storeGroupAudit');
-        Route::post('isException','PersonnelController@isException');
-        Route::post('storeMissionAudit','PersonnelController@storeMissionAudit');
-    });
+        Route::any('export','WeighController@export');
+        Route::get('statistics','WeighController@statistics');
+        Route::get('relating', function () {return view('package.measureMonitor.menu');});
 
-    Route::get('relating',function (){return view('personnel/menuPersonnel');});
+        Route::resource('measureMonitor','MeasureMonitorController');
 
-    Route::group(['prefix'=>'discharge'],function(){
-        /** 卸货任务 */
-        Route::group(['prefix'=>'task'],function(){
-            Route::get('index','DischargeTaskController@index');
-            Route::any('export','DischargeTaskController@export');
-            Route::any('receipt','DischargeTaskController@receipt');
-        });
-        /** 结算报表 */
-        Route::group(['prefix'=>'statement'],function(){
-            Route::get('index','DischargeTaskController@statementIndex');
-            Route::any('export','DischargeTaskController@exportStatements');
+        Route::group(['prefix'=>'measureMonitor'],function(){
+            Route::post('data','MeasureMonitorController@data');
         });
-        /** 服务商  对账单*/
-        Route::group(['prefix'=>'facilitator'],function(){
-            Route::get('index','FacilitatorController@statementIndex');
-            Route::any('export','FacilitatorController@exportStatement');
-            Route::get('qrCode','FacilitatorController@getQrCode');
-            Route::group(['prefix'=> 'external'],function(){
-                Route::get('{id}/index','FacilitatorExternalController@index');
-                Route::any('{id}/export','FacilitatorExternalController@export');
+        Route::group(['prefix' => 'weigh'], function () {
+            Route::get('statistics','WeighController@statistics');
+            /** 设备 */
+            Route::group(['prefix'=>'measureMonitor'],function(){
+                Route::post('data','MeasureMonitorController@data');
+            });
+            /** 统计 */
+            Route::group(['prefix'=>'statistics'],function(){
+                Route::any('export','WeighController@statisticsExport');
             });
         });
-    });
-    /** 临时工报表 */
-    Route::group(['prefix'=>'laborReport'],function(){
-        Route::get('index','LaborReportController@index');
-        Route::post('recover','LaborReportController@recover');
-        Route::get('recycle','LaborReportController@recycle');
-        Route::post('guardClockAudit','LaborReportController@guardClockAudit');
-        Route::post('groupClockAudit','LaborReportController@groupClockAudit');
-        Route::post('addRemarkAndGroupClock','LaborReportController@addRemarkAndGroupClock');
-        Route::post('groupExport','LaborReportController@groupExport');
-        Route::post('groupExportEnsure','LaborReportController@groupExportEnsure');
-        Route::any('export','LaborReportController@export');
-        Route::post('updateLaborCompany','LaborReportController@updateLaborCompany');
-        Route::any('删除/{id}','LaborReportController@删除');
-        Route::post('changeLaborReportRemark', 'LaborReportController@changeLaborReportRemark');
-    });
-});
-
-
-
-/** 库存 */
-Route::group(['prefix'=>'inventory'],function(){
-    /** 说明 */
-    Route::group(['prefix'=>'statement'],function(){
-        /** 动库报表 */
-        Route::group(['prefix'=>'changeInventory'],function(){
-            Route::any('export','InventoryController@exportData');
-            Route::get('downLoadExcel','InventoryController@downLoadExcel');
-            Route::post('deleteExcel','InventoryController@deleteExcel');
-        });
-        Route::get('changeInventory','InventoryController@changeInventory');
-        /** 全部库存 */
-        Route::group(['prefix'=>'allInventory'],function(){
-            Route::any('export','InventoryController@exportAllInventory');
-        });
-        Route::get('allInventory','InventoryController@allInventory');
-        /** 每日记录 */
-        Route::group(['prefix'=>'dailyLog'],function(){
-            Route::any('export','InventoryController@exportDailyLog');
-            Route::post('getLoggingOwner','InventoryController@getLoggingOwner');
-            Route::post('addLoggingOwner','InventoryController@addLoggingOwner');
-        });
-        Route::get('dailyLog','InventoryController@dailyLog');
-
-        Route::get('inventoryCompare','InventoryCompareController@inventoryCompare');
-        Route::any('inventoryCompare/export','InventoryCompareController@exportInventoryCompare');
-    });
-    /** 库存盘点 */
-    Route::group(['prefix'=>'stockInventory'],function(){
-        Route::get('mission','InventoryAccountController@mission');
-        Route::any('enterStockInventory/{id}','InventoryAccountController@enterStockInventory');
-        Route::any('inventoryAccountMission/export','InventoryAccountController@exportInventoryAccountMission');
-        Route::get('mission','InventoryAccountController@mission');
-        Route::post('createStockInventoryMission','InventoryAccountController@createStockInventoryMission');
-        Route::post('searchCommodityByBarcode','InventoryAccountController@searchCommodityByBarcode');
-        Route::get('blindReceive/{id}','InventoryAccountController@enterBlindReceive');
-        Route::post('baseOnBlindReceive','InventoryAccountController@baseOnBlindReceive');
-        Route::post('batchStockByLocation','InventoryAccountController@batchStockByLocation');
-    });
-    /** 库存比对 */
-    Route::group(['prefix'=>'inventoryCompare'],function(){
-        /** excel */
-        Route::group(['prefix'=>'import'],function(){
-            Route::post('excel','InventoryCompareController@importExcel');
-        });
-    });
-
-    Route::get('syncOwners','InventoryAccountController@syncOwners');
-    Route::post('inventoryChecked','InventoryAccountController@inventoryChecked');
-    Route::any('删除盘点记录','InventoryAccountController@删除盘点记录');
-    Route::post('跳过盘点记录','InventoryAccountController@跳过盘点记录');
-    Route::post('确认盘点差异','InventoryAccountController@确认盘点差异');
-    Route::post('批量跳过或确认差异','InventoryAccountController@批量跳过或确认差异');
-    Route::get('完结盘点任务/{id}','InventoryAccountController@完结盘点任务');
-    Route::post('修改质量状态','InventoryAccountController@修改质量状态');
-    Route::post('增加系统之外的盘点记录','InventoryAccountController@增加系统之外的盘点记录');
-    Route::post('盘点选中任务','InventoryAccountController@盘点选中任务');
-    Route::post('stockInventoryEnd','InventoryAccountController@stockInventoryEnd');
-    Route::any('deleteStockInventoryMission/{id}','InventoryAccountController@deleteStockInventoryMission');
-    Route::any('stockInventoryExport','InventoryAccountController@stockInventoryExport');
-    Route::any('stockInventory','InventoryAccountController@stockInventory');
-    Route::post('searchStockInventoryRecord','InventoryAccountController@searchStockInventoryRecord');
-});
-
-
-/** 订单 */
-Route::group(['prefix'=>'order'],function(){
-    /** 主页 */
-    Route::group(['prefix'=>'index'],function(){
-        Route::get('delivering','OrderController@delivering');
-        Route::get('commodityAssign','OrderCommodityAssignController@index');
-        Route::match(['get','post'],'export','OrderController@export');
-
-        Route::group(['prefix'=>'commodityAssign'],function(){
-            Route::post('import','OrderCommodityAssignController@import');
-        });
-
-        Route::group(['prefix'=>'freeze'],function(){
-            Route::post('delFreeze','OrderFreezeController@delFreeze');
+        Route::get('weigh/index','WeighController@index');
+        Route::resource('weigh','WeighController');
+        Route::put('logistic/batchUpdate','PackageLogisticController@batchUpdate');
+        Route::any('logistic/export','PackageLogisticController@export');
+        Route::resource('logistic','PackageLogisticController');
+    });
+    $route->resource('package','WeighController');
+    /** 入库 */
+    $route->group(['prefix'=>'store'],function(){
+        Route::group(['prefix'=>'inStorage'],function() {
+            Route::get('index','StoreController@storage');
+            Route::get('cacheRackStorage','StoreController@cacheRackStorage');
+            Route::get('halfChestStorage','StoreController@halfChestStorage');
+            Route::post('putShelf','StorageController@putShelf');
+            Route::post('resetCacheShelf','StorageController@resetCacheShelf');
+            Route::post('setMaximum','StorageController@setMaximum');
+            Route::post('checkMaximum','StorageController@checkMaximum');
+            Route::post('overflowRevision','StorageController@overflowRevision');
+            Route::post('acquireBox','StorageController@acquireBox');
+            Route::post('syncStorage','StorageController@syncStorage');
+            Route::post('checkAsnAmount','StorageController@checkAsnAmount');
+            Route::get('android.index',function (){if (!Auth::user())return view("store.inStorage.login");return view('store.inStorage.androidIndex');});
+            Route::post('android.login','StorageController@androidLogin');
+        });
+        Route::group(['prefix'=>'fast'],function() {
+            Route::resource('storeItem','StoreItemController');
+        });
+        Route::resource('fast',"StoreController");
+        /** 盲收 */
+        Route::group(['prefix'=>'blindReceive'],function(){
+            Route::get('/', function () { return view('store.blindReceive.index');});
+            Route::get('excels', 'StoreBlindReceiveController@index');
+            Route::post('excels/apiStore', 'StoreBlindReceiveController@apiStore');
+        });
+        /** 盘收 */
+        Route::group(['prefix'=>'checkingReceive'],function(){
+            Route::group(['prefix'=>'mission'],function(){
+                Route::post('import','StoreCheckingReceiveController@import');
+                Route::get('export','StoreCheckingReceiveController@export');
+                Route::post('resetAmount','StoreCheckingReceiveController@resetAmount');
+                Route::post('matchASN','StoreCheckingReceiveController@matchASN');
+                Route::post('receipt','StoreCheckingReceiveController@receipt');
+                Route::get('{id}','StoreCheckingReceiveController@show');
+            });
+            Route::post('updateCountedAmount','StoreCheckingReceiveController@updateCountedAmount');
+            Route::post('insertItem','StoreCheckingReceiveController@insertItem');
+            Route::get('mission','StoreCheckingReceiveController@mission');
+            Route::post('destroyItem','StoreCheckingReceiveController@destroyItem');
+        });
+        /** 入库预约 */
+        Route::group(['prefix'=>'deliveryAppointment'],function(){
+            Route::get('appointment','DeliveryAppointmentController@appointment');
+            Route::post('getCapacity','DeliveryAppointmentController@getCapacity');
+            Route::post('submitAppointment','DeliveryAppointmentController@submitAppointment');
+            Route::get('showAppointmentInfo','DeliveryAppointmentController@showAppointmentInfo');
+            Route::get('list','DeliveryAppointmentController@list');
+            Route::post('delivery','DeliveryAppointmentController@checkAppointment');
+            Route::post('cancel','DeliveryAppointmentController@cancel');
+            Route::post('unloading','DeliveryAppointmentController@unloading');
+            Route::post('signIn','DeliveryAppointmentController@signIn');
+            Route::any('export','DeliveryAppointmentController@export');
+            Route::get('qrcode',function (){
+                if(!Gate::allows('入库管理-入库预约-二维码')){ return view("exception.authority");  }
+                return view("store.deliveryAppointment.qrcode");
+            });
+            Route::group(['prefix'=>'appointment'],function(){
+                Route::post('import','DeliveryAppointmentController@import');
+            });
+            Route::get('capacityMaintenance','DeliveryAppointmentController@capacityMaintenance');
+            Route::post('updateCapacity','DeliveryAppointmentController@updateCapacity');
+            Route::post('verifyASN','DeliveryAppointmentController@verifyASN');
+            Route::post('updateAppointment','DeliveryAppointmentController@updateAppointment');
+            Route::post('qualityInspectionMark','DeliveryAppointmentController@qualityInspectionMark');
         });
-        Route::resource('freeze','OrderFreezeController');
-    });
-    /** 创建 */
-    Route::group(['prefix'=>'create'],function(){
-        Route::post('batchComments','OrderController@batchComments');
-    });
-    /** 波次 */
-    Route::group(['prefix'=>'wave'],function(){
-        Route::get('index','WaveController@index');
-        Route::post('cancelPrinting','WaveController@cancelPrinting');
-        Route::any('exportExcel','WaveController@exportExcelOnParams');
-        Route::post('repairBatch','WaveController@repairBatch');
     });
-    /** 问题件 */
-    Route::group(['prefix'=>'issue'],function(){
-        /** 工作量 */
-        Route::group(['prefix'=>'workLoad'],function(){
-            Route::get('index','OrderIssuePerformanceController@workLoadPage');
-            Route::any('export','OrderIssuePerformanceController@exportWorkLoad');
-        });
+    /** 二次加工 */
+    $route->group(['prefix'=>'process'],function(){
+        /** 统计 */
+        Route::group(['prefix'=>'statistic'],function(){
+            Route::any("export",'ProcessStatisticController@export');
+        });
+        Route::get('relating',function (){return view('process.menuProcess');});
+        Route::get("statistic",'ProcessStatisticController@index');
+        Route::post('getDailyParticipant','ProcessController@getDailyParticipant');
+        Route::post('reject/{id}','ProcessController@reject');
+        Route::post('receive/{id}','ProcessController@receive');
+        Route::post('accomplish','ProcessController@accomplish');
+        Route::post('updateDailyOutput','ProcessController@updateDailyOutput');
+        Route::post('storeProcessDailyParticipant','ProcessController@storeProcessDailyParticipant');
+        Route::post('verifyUserName','ProcessController@verifyUserName');
+        Route::post('updateProcessDailyParticipant','ProcessController@updateProcessDailyParticipant');
+        Route::post('processDailyParticipantAudit/{id}','ProcessController@processDailyParticipantAudit');
+        Route::post('getTutorials/{id}','ProcessController@getTutorials');
+        Route::post('selectedTutorial','ProcessController@selectedTutorial');
+        Route::post('deleteTutorial','ProcessController@deleteTutorial');
+        Route::post('ownerGetTutorials/{owner_id}','ProcessController@ownerGetTutorials');
+        Route::post('rollback','ProcessController@rollback');
+        Route::get('recycle','ProcessController@recycle');
+        Route::post('recover','ProcessController@recover');
+        Route::post('audit','ProcessController@audit');
+        Route::post('processAccomplish','ProcessController@processAccomplish');
+        Route::post('checkAndAccept','ProcessController@checkAndAccept');
+        Route::post('updateUnitPrice','ProcessController@updateUnitPrice');
+        Route::post('workGroupVerify','ProcessController@workGroupVerify');
+        Route::post('accountantVerify','ProcessController@accountantVerify');
+        Route::post('updateStartDate','ProcessController@updateStartDate');
+        Route::post('updateEndDate','ProcessController@updateEndDate');
+        Route::delete('destroyDailyParticipant/{id}','ProcessController@destroyDailyParticipant');
+        Route::post('importPasteData','ProcessController@importPasteData');
+        Route::any('export','ProcessController@export');
+        Route::post('deleteProcessContent/{id}','ProcessController@deleteProcessContent');
+    });
+    $route->resource('process','ProcessController');
+    /** 人事 */
+    $route->group(['prefix'=>'personnel'],function(){
         /** 绩效 */
-        Route::group(['prefix'=>'orderIssuePerformance'],function(){
-            Route::get('index','OrderIssuePerformanceController@index');
-            Route::any('export','OrderIssuePerformanceController@export');
+        Route::group(['prefix'=>'report'],function(){
+            Route::match(['GET','POST'],'export','CustomerController@projectReportExport');
+        });
+        Route::get('report','CustomerController@projectReport');
+        /** 打卡 */
+        Route::group(['prefix'=>'checking-in'],function(){
+            /** 打卡记录 */
+            Route::group(['prefix'=>'userDutyCheck'],function(){
+                Route::get('importAndExportClock','UserDutyCheckController@importAndExportClock');
+                Route::get('clock','UserDutyCheckController@clock');
+                Route::any('storeClock','UserDutyCheckController@storeClock');
+                Route::post('绑定临时工并进组','UserDutyCheckController@绑定临时工并进组');
+                Route::post('importGroupClock','UserDutyCheckController@importGroupClock');
+                Route::get('createUserDetail/{mobile_phone}','UserDutyCheckController@createUserDetail');
+                Route::get('updateUserLaborCompanies/{mobile_phone}','UserDutyCheckController@updateUserLaborCompanies');
+                Route::any('storeUserDetail','UserDutyCheckController@storeUserDetail');
+                Route::any('storeUpdateUserLaborCompanies','UserDutyCheckController@storeUpdateUserLaborCompanies');
+            });
+            Route::get('createReplenishClock','PersonnelController@createReplenishClock');
+            Route::post('checkUserLabors','PersonnelController@checkUserLabors');
+            Route::post('storeReplenishClock','PersonnelController@storeReplenishClock');
+            Route::get('clockAudit','PersonnelController@clockAudit');
+            Route::get('missionAudit','PersonnelController@missionAudit');
+            Route::post('storeClockAudit','PersonnelController@storeClockAudit');
+            Route::post('updateDutyCheckType','PersonnelController@updateDutyCheckType');
+            Route::post('storeGroupAudit','PersonnelController@storeGroupAudit');
+            Route::post('isException','PersonnelController@isException');
+            Route::post('storeMissionAudit','PersonnelController@storeMissionAudit');
+        });
+        Route::get('relating',function (){return view('personnel/menuPersonnel');});
+        Route::group(['prefix'=>'discharge'],function(){
+            /** 卸货任务 */
+            Route::group(['prefix'=>'task'],function(){
+                Route::get('index','DischargeTaskController@index');
+                Route::any('export','DischargeTaskController@export');
+                Route::any('receipt','DischargeTaskController@receipt');
+            });
+            /** 结算报表 */
+            Route::group(['prefix'=>'statement'],function(){
+                Route::get('index','DischargeTaskController@statementIndex');
+                Route::any('export','DischargeTaskController@exportStatements');
+            });
+            /** 服务商  对账单*/
+            Route::group(['prefix'=>'facilitator'],function(){
+                Route::get('index','FacilitatorController@statementIndex');
+                Route::any('export','FacilitatorController@exportStatement');
+                Route::get('qrCode','FacilitatorController@getQrCode');
+                Route::group(['prefix'=> 'external'],function(){
+                    Route::get('{id}/index','FacilitatorExternalController@index');
+                    Route::any('{id}/export','FacilitatorExternalController@export');
+                });
+            });
         });
-
-        Route::get('index','OrderIssueController@index');
-        Route::get('create','OrderIssueController@create');
-        Route::post('store','OrderIssueController@store');
-        Route::post('batchImport','OrderIssueController@batchImport');
-        Route::get('excelImport','OrderIssueController@excelImport');
-        Route::get('edit/{id}','OrderIssueController@edit');
-        Route::get('recycle','OrderIssueController@recycleBin');
-//        Route::match(['get','post'],'export','OrderIssueController@exportOrderIssue');
-        Route::match(['get','post'],'export','OrderIssueController@exportJsonExcel');
-    });
-    /** 跟踪 */
-    Route::group(['prefix'=>'tracking'],function(){
-        Route::get('index',"OrderTrackingController@index");
-        Route::any('export',"OrderTrackingController@export");
-        Route::get('update','OrderTrackingController@updateApi');
-        Route::post('upload','OrderTrackingController@upload');
-        Route::post('destroyImg','OrderTrackingController@destroyImg');
-    });
-
-    Route::post('freeze','OrderController@freeze');
-    Route::post('freezeAll','OrderController@freezeAll');
-    Route::post('thaw','OrderController@thaw');
-    Route::post('deAllocation','OrderController@deAllocation');
-    Route::post('deAllocationAll','OrderController@deAllocationAll');
-    Route::post('resetLogisticsGetMark','OrderController@resetLogisticsGetMark');
-    Route::post('resetInterfaceReturnMark','OrderController@resetInterfaceReturnMark');
-    Route::post('createRejectedBill','OrderController@createRejectedBill');
-    Route::post('isRejectedBillExist','OrderController@isRejectedBillExist');
-});
-
-/** 结算 */
-Route::group(['prefix'=>'finance'],function(){
-    Route::group(['prefix'=>'instantBill'],function(){
-        Route::match(['GET','POST'],'export','CustomerController@financeInstantBillExport');
-    });
-    Route::get('instantBill','CustomerController@financeInstantBill');
-    Route::group(['prefix'=>'billConfirmation'],function(){
-        Route::match(['GET','POST'],'export','CustomerController@financeBillConfirmationExport');
-    });
-    Route::get('billConfirmation','CustomerController@financeBillConfirmation');
-    Route::post('updateBillReport','CustomerController@updateBillReport');
-    Route::post('billConfirm','CustomerController@billConfirm');
-    Route::group(['prefix'=>'settlementBills'],function(){
-//        Route::resource('ownerSundryFeeDetails', 'OwnerSundryFeeDetailsController', ['only' => ['index', 'create', 'store', 'update', 'edit','destroy']]);
-        Route::group(['prefix' => 'logisticFee'], function () {
-            Route::post('detail/confirmBill', 'OwnerLogisticFeeDetailController@confirmBill');
-            Route::post('report/confirmBill', 'OwnerLogisticFeeReportController@confirmBill');
-            Route::any('detail/export', 'OwnerLogisticFeeDetailController@export');
-            Route::any('report/export', 'OwnerLogisticFeeReportController@export');
-            Route::resource('detail', 'OwnerLogisticFeeDetailController', ['only' => ['index']]);
-            Route::resource('report', 'OwnerLogisticFeeReportController', ['only' => ['index']]);
-        });
-        Route::get('areaFee','SettlementBillOwnerAreaFeeController@index');
-        Route::post('areaFee/confirmBill','SettlementBillOwnerAreaFeeController@confirmBill');
-        Route::any('areaFee/confirmBill/export','SettlementBillOwnerAreaFeeController@export');
-    });
-});
-
-/** 客户 */
-Route::group(['prefix'=>'customer'],function(){
-    /** 项目 */
-    //杂项费
-    Route::group(['prefix' => 'ownerSundryFee'], function () {
-        Route::any('export','OwnerSundryFeeDetailsController@export');
-
-    });
-    Route::group(['prefix'=>'project'],function(){
+        /** 临时工报表 */
+        Route::group(['prefix'=>'laborReport'],function(){
+            Route::get('index','LaborReportController@index');
+            Route::post('recover','LaborReportController@recover');
+            Route::get('recycle','LaborReportController@recycle');
+            Route::post('guardClockAudit','LaborReportController@guardClockAudit');
+            Route::post('groupClockAudit','LaborReportController@groupClockAudit');
+            Route::post('addRemarkAndGroupClock','LaborReportController@addRemarkAndGroupClock');
+            Route::post('groupExport','LaborReportController@groupExport');
+            Route::post('groupExportEnsure','LaborReportController@groupExportEnsure');
+            Route::any('export','LaborReportController@export');
+            Route::post('updateLaborCompany','LaborReportController@updateLaborCompany');
+            Route::any('删除/{id}','LaborReportController@删除');
+            Route::post('changeLaborReportRemark', 'LaborReportController@changeLaborReportRemark');
+        });
+    });
+    /** 库存 */
+    $route->group(['prefix'=>'inventory'],function(){
+        /** 说明 */
+        Route::group(['prefix'=>'statement'],function(){
+            /** 动库报表 */
+            Route::group(['prefix'=>'changeInventory'],function(){
+                Route::any('export','InventoryController@exportData');
+                Route::get('downLoadExcel','InventoryController@downLoadExcel');
+                Route::post('deleteExcel','InventoryController@deleteExcel');
+            });
+            Route::get('changeInventory','InventoryController@changeInventory');
+            /** 全部库存 */
+            Route::group(['prefix'=>'allInventory'],function(){
+                Route::any('export','InventoryController@exportAllInventory');
+            });
+            Route::get('allInventory','InventoryController@allInventory');
+            /** 每日记录 */
+            Route::group(['prefix'=>'dailyLog'],function(){
+                Route::any('export','InventoryController@exportDailyLog');
+                Route::post('getLoggingOwner','InventoryController@getLoggingOwner');
+                Route::post('addLoggingOwner','InventoryController@addLoggingOwner');
+            });
+            Route::get('dailyLog','InventoryController@dailyLog');
+            Route::get('inventoryCompare','InventoryCompareController@inventoryCompare');
+            Route::any('inventoryCompare/export','InventoryCompareController@exportInventoryCompare');
+        });
+        /** 库存盘点 */
+        Route::group(['prefix'=>'stockInventory'],function(){
+            Route::get('mission','InventoryAccountController@mission');
+            Route::any('enterStockInventory/{id}','InventoryAccountController@enterStockInventory');
+            Route::any('inventoryAccountMission/export','InventoryAccountController@exportInventoryAccountMission');
+            Route::get('mission','InventoryAccountController@mission');
+            Route::post('createStockInventoryMission','InventoryAccountController@createStockInventoryMission');
+            Route::post('searchCommodityByBarcode','InventoryAccountController@searchCommodityByBarcode');
+            Route::get('blindReceive/{id}','InventoryAccountController@enterBlindReceive');
+            Route::post('baseOnBlindReceive','InventoryAccountController@baseOnBlindReceive');
+            Route::post('batchStockByLocation','InventoryAccountController@batchStockByLocation');
+        });
+        /** 库存比对 */
+        Route::group(['prefix'=>'inventoryCompare'],function(){
+            /** excel */
+            Route::group(['prefix'=>'import'],function(){
+                Route::post('excel','InventoryCompareController@importExcel');
+            });
+        });
+        Route::get('syncOwners','InventoryAccountController@syncOwners');
+        Route::post('inventoryChecked','InventoryAccountController@inventoryChecked');
+        Route::any('删除盘点记录','InventoryAccountController@删除盘点记录');
+        Route::post('跳过盘点记录','InventoryAccountController@跳过盘点记录');
+        Route::post('确认盘点差异','InventoryAccountController@确认盘点差异');
+        Route::post('批量跳过或确认差异','InventoryAccountController@批量跳过或确认差异');
+        Route::get('完结盘点任务/{id}','InventoryAccountController@完结盘点任务');
+        Route::post('修改质量状态','InventoryAccountController@修改质量状态');
+        Route::post('增加系统之外的盘点记录','InventoryAccountController@增加系统之外的盘点记录');
+        Route::post('盘点选中任务','InventoryAccountController@盘点选中任务');
+        Route::post('stockInventoryEnd','InventoryAccountController@stockInventoryEnd');
+        Route::any('deleteStockInventoryMission/{id}','InventoryAccountController@deleteStockInventoryMission');
+        Route::any('stockInventoryExport','InventoryAccountController@stockInventoryExport');
+        Route::any('stockInventory','InventoryAccountController@stockInventory');
+        Route::post('searchStockInventoryRecord','InventoryAccountController@searchStockInventoryRecord');
+    });
+    /** 订单 */
+    $route->group(['prefix'=>'order'],function(){
+        /** 主页 */
         Route::group(['prefix'=>'index'],function(){
-            Route::match(['GET','POST'],'export','CustomerController@projectIndexExport');
-        });
-        Route::get('index','CustomerController@projectIndex');
-        Route::get('create','CustomerController@projectCreate');
-        Route::group(['prefix'=>'area'],function(){
-            Route::match(['GET','POST'],'export','CustomerController@projectAreaExport');
-        });
-        Route::get('area','CustomerController@projectArea');
-        Route::get('{id}/edit','CustomerController@projectEdit');
-        Route::post('projectUpdate','CustomerController@projectUpdate');
-        Route::post('getOwnerPriceModel','CustomerController@getOwnerPriceModel');
-        Route::post('updateArea','CustomerController@updateArea');
-        Route::post('verify','CustomerController@verifyProject');
-        Route::post('areaReportAudit','CustomerController@areaReportAudit');
-
-        //获取现有计费模型
-        Route::post('getPriceModel','PriceModelController@getPriceModel');
-
-        //手动生成账单
-        Route::post("createReport","CustomerController@createReport");
-        Route::post("createAreaReport","CustomerController@createAreaReport");
-        //手动重置账单数据
-        Route::post("resetInstantBill","CustomerController@resetInstantBill");
-        Route::post("resetBillConfirmation","CustomerController@resetBillConfirmation");
-
-    });
-    Route::get('relating',function (){return view('customer.relating');});
-    Route::group(['prefix' => 'customer'], function () {
-        Route::get('customerLogStatus', 'CustomerLogStatusController@index');
-        Route::post('getLog', 'CustomerLogController@get');
-        Route::post('editLog', 'CustomerLogController@update');
-        Route::post('getLogStatus', 'CustomerLogStatusController@get');
-        Route::post('storeLog', 'CustomerLogController@store');
-        Route::post('relatedOwner', 'CustomerBaseController@relatedOwner');
-        Route::post('addTag', 'CustomerBaseController@addTag');
-        Route::post('delTag', 'CustomerBaseController@delTag');
-        Route::post('destroyLog', 'CustomerBaseController@destroyLog');
-        Route::group(['prefix' => 'customerLogStatus'], function () {
-            Route::post('save', 'CustomerLogStatusController@save');
-            Route::post('destroy', 'CustomerLogStatusController@destroy');
-        });
-        Route::group(['prefix' => 'customerTag'], function () {
-            Route::post('save', 'CustomerTagController@save');
-            Route::post('get', 'CustomerTagController@get');
-        });
-        Route::resource('customerTag', 'CustomerTagController',['only' => ['index',"destroy"]]);
-        Route::resource('customerLog', 'CustomerLogController', ['only' => ['index', 'show', 'create', 'store', 'update', 'edit', 'destroy']]);
-    });
-    Route::group(['prefix' => 'ownerContract'], function () {
-        Route::post('store', 'OwnerContractController@store');
-        Route::get('down', 'OwnerContractController@downFile');
-    });
-    Route::resource('customer', 'CustomerBaseController');
-
-    Route::resource('ownerSundryFeeDetails', 'OwnerSundryFeeDetailsController', ['only' => ['index', 'create', 'store', 'update', 'edit','destroy']]);
-});
-
-/** 站管理 */
-Route::group(['prefix'=>'station'],function(){
-    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'=>'cachingShelf'],function(){
-        Route::get('/index','CacheShelfController@index');
-    });
-    /** 栈规则 */
-    Route::group(['prefix'=>'rule'],function(){
-        Route::get('/index','StationRuleBatchController@index');
-    });
-});
-/** 控制台 */
-Route::group(['prefix'=>'control'],function () {
-   Route::get('panel/menu','ControlPanelController@index') ;
-});
-/** 采购管理 */
-Route::group(['prefix'=>'procurement'],function () {
-    /** 采购 */
-    Route::group(['prefix'=>'procurement'],function(){
-        Route::get('index','ProcurementController@index');
-        Route::get('create','ProcurementController@create');
-        Route::post('store','ProcurementController@store');
-        Route::post('getOwnerMaterial','ProcurementController@getOwnerMaterial');
-        Route::post('createProcurement','ProcurementController@createProcurement');
-        Route::post('createEnquiry','ProcurementController@createEnquiry');
-        Route::post('createProof','ProcurementController@createProof');
-        Route::any('procurementExport','ProcurementController@procurementExport');
-        Route::get('cancel/{id}','ProcurementController@cancel');
-        Route::post('initiateProcurement','ProcurementController@initiateProcurement');
-        Route::post('submitProcurement','ProcurementController@submitProcurement');
-        Route::post('createAnew','ProcurementController@createAnew');
+            Route::get('delivering','OrderController@delivering');
+            Route::get('commodityAssign','OrderCommodityAssignController@index');
+            Route::match(['get','post'],'export','OrderController@export');
+            Route::group(['prefix'=>'commodityAssign'],function(){
+                Route::post('import','OrderCommodityAssignController@import');
+            });
+            Route::group(['prefix'=>'freeze'],function(){
+                Route::post('delFreeze','OrderFreezeController@delFreeze');
+            });
+            Route::resource('freeze','OrderFreezeController');
+        });
+        /** 创建 */
+        Route::group(['prefix'=>'create'],function(){
+            Route::post('batchComments','OrderController@batchComments');
+        });
+        /** 波次 */
+        Route::group(['prefix'=>'wave'],function(){
+            Route::get('index','WaveController@index');
+            Route::post('cancelPrinting','WaveController@cancelPrinting');
+            Route::any('exportExcel','WaveController@exportExcelOnParams');
+            Route::post('repairBatch','WaveController@repairBatch');
+        });
+        /** 问题件 */
+        Route::group(['prefix'=>'issue'],function(){
+            /** 工作量 */
+            Route::group(['prefix'=>'workLoad'],function(){
+                Route::get('index','OrderIssuePerformanceController@workLoadPage');
+                Route::any('export','OrderIssuePerformanceController@exportWorkLoad');
+            });
+            /** 绩效 */
+            Route::group(['prefix'=>'orderIssuePerformance'],function(){
+                Route::get('index','OrderIssuePerformanceController@index');
+                Route::any('export','OrderIssuePerformanceController@export');
+            });
+            Route::get('index','OrderIssueController@index');
+            Route::get('create','OrderIssueController@create');
+            Route::post('store','OrderIssueController@store');
+            Route::post('batchImport','OrderIssueController@batchImport');
+            Route::get('excelImport','OrderIssueController@excelImport');
+            Route::get('edit/{id}','OrderIssueController@edit');
+            Route::get('recycle','OrderIssueController@recycleBin');
+            Route::match(['get','post'],'export','OrderIssueController@exportJsonExcel');
+        });
+        /** 跟踪 */
+        Route::group(['prefix'=>'tracking'],function(){
+            Route::get('index',"OrderTrackingController@index");
+            Route::any('export',"OrderTrackingController@export");
+            Route::get('update','OrderTrackingController@updateApi');
+            Route::post('upload','OrderTrackingController@upload');
+            Route::post('destroyImg','OrderTrackingController@destroyImg');
+        });
+        Route::post('freeze','OrderController@freeze');
+        Route::post('freezeAll','OrderController@freezeAll');
+        Route::post('thaw','OrderController@thaw');
+        Route::post('deAllocation','OrderController@deAllocation');
+        Route::post('deAllocationAll','OrderController@deAllocationAll');
+        Route::post('resetLogisticsGetMark','OrderController@resetLogisticsGetMark');
+        Route::post('resetInterfaceReturnMark','OrderController@resetInterfaceReturnMark');
+        Route::post('createRejectedBill','OrderController@createRejectedBill');
+        Route::post('isRejectedBillExist','OrderController@isRejectedBillExist');
+    });
+    /** 结算 */
+    $route->group(['prefix'=>'finance'],function(){
+        Route::group(['prefix'=>'instantBill'],function(){
+            Route::match(['GET','POST'],'export','CustomerController@financeInstantBillExport');
+        });
+        Route::get('instantBill','CustomerController@financeInstantBill');
+        Route::group(['prefix'=>'billConfirmation'],function(){
+            Route::match(['GET','POST'],'export','CustomerController@financeBillConfirmationExport');
+        });
+        Route::get('billConfirmation','CustomerController@financeBillConfirmation');
+        Route::post('updateBillReport','CustomerController@updateBillReport');
+        Route::post('billConfirm','CustomerController@billConfirm');
+        Route::group(['prefix'=>'settlementBills'],function(){
+            Route::group(['prefix' => 'logisticFee'], function () {
+                Route::post('detail/confirmBill', 'OwnerLogisticFeeDetailController@confirmBill');
+                Route::post('report/confirmBill', 'OwnerLogisticFeeReportController@confirmBill');
+                Route::any('detail/export', 'OwnerLogisticFeeDetailController@export');
+                Route::any('report/export', 'OwnerLogisticFeeReportController@export');
+                Route::resource('detail', 'OwnerLogisticFeeDetailController', ['only' => ['index']]);
+                Route::resource('report', 'OwnerLogisticFeeReportController', ['only' => ['index']]);
+            });
+            Route::get('areaFee','SettlementBillOwnerAreaFeeController@index');
+            Route::post('areaFee/confirmBill','SettlementBillOwnerAreaFeeController@confirmBill');
+            Route::any('areaFee/confirmBill/export','SettlementBillOwnerAreaFeeController@export');
+        });
     });
-    /** 财务 */
-    Route::group(['prefix'=>'finance'],function(){
-        Route::get('checkBill','ProcurementController@checkBill');
-        Route::get('procurementBill','ProcurementController@procurementBill');
-        Route::get('monthlyBillReport','ProcurementController@monthlyBillReport');
-        Route::post('fillInvoice','ProcurementController@fillInvoice');
-        Route::any('procurementTotalBillExport','ProcurementController@procurementTotalBillExport');
-        Route::any('procurementBillExport','ProcurementController@procurementBillExport');
-        Route::any('checkBillExport','ProcurementController@checkBillExport');
-        Route::post('costPrice','ProcurementController@costPrice');
-        Route::post('getCheckBillMonth','ProcurementController@getCheckBillMonth');
-
-
+    /** 客户 */
+    $route->group(['prefix'=>'customer'],function(){
+        /** 项目 */
+        //杂项费
+        Route::group(['prefix' => 'ownerSundryFee'], function () {
+            Route::any('export','OwnerSundryFeeDetailsController@export');
+        });
+        Route::group(['prefix'=>'project'],function(){
+            Route::group(['prefix'=>'index'],function(){
+                Route::match(['GET','POST'],'export','CustomerController@projectIndexExport');
+            });
+            Route::get('index','CustomerController@projectIndex');
+            Route::get('create','CustomerController@projectCreate');
+            Route::group(['prefix'=>'area'],function(){
+                Route::match(['GET','POST'],'export','CustomerController@projectAreaExport');
+            });
+            Route::get('area','CustomerController@projectArea');
+            Route::get('{id}/edit','CustomerController@projectEdit');
+            Route::post('projectUpdate','CustomerController@projectUpdate');
+            Route::post('getOwnerPriceModel','CustomerController@getOwnerPriceModel');
+            Route::post('updateArea','CustomerController@updateArea');
+            Route::post('verify','CustomerController@verifyProject');
+            Route::post('areaReportAudit','CustomerController@areaReportAudit');
+            //获取现有计费模型
+            Route::post('getPriceModel','PriceModelController@getPriceModel');
+            //手动生成账单
+            Route::post("createReport","CustomerController@createReport");
+            Route::post("createAreaReport","CustomerController@createAreaReport");
+            //手动重置账单数据
+            Route::post("resetInstantBill","CustomerController@resetInstantBill");
+            Route::post("resetBillConfirmation","CustomerController@resetBillConfirmation");
+        });
+        Route::get('relating',function (){return view('customer.relating');});
+        Route::group(['prefix' => 'customer'], function () {
+            Route::get('customerLogStatus', 'CustomerLogStatusController@index');
+            Route::post('getLog', 'CustomerLogController@get');
+            Route::post('editLog', 'CustomerLogController@update');
+            Route::post('getLogStatus', 'CustomerLogStatusController@get');
+            Route::post('storeLog', 'CustomerLogController@store');
+            Route::post('relatedOwner', 'CustomerBaseController@relatedOwner');
+            Route::post('addTag', 'CustomerBaseController@addTag');
+            Route::post('delTag', 'CustomerBaseController@delTag');
+            Route::post('destroyLog', 'CustomerBaseController@destroyLog');
+            Route::group(['prefix' => 'customerLogStatus'], function () {
+                Route::post('save', 'CustomerLogStatusController@save');
+                Route::post('destroy', 'CustomerLogStatusController@destroy');
+            });
+            Route::group(['prefix' => 'customerTag'], function () {
+                Route::post('save', 'CustomerTagController@save');
+                Route::post('get', 'CustomerTagController@get');
+            });
+            Route::resource('customerTag', 'CustomerTagController',['only' => ['index',"destroy"]]);
+            Route::resource('customerLog', 'CustomerLogController', ['only' => ['index', 'show', 'create', 'store', 'update', 'edit', 'destroy']]);
+        });
+        Route::group(['prefix' => 'ownerContract'], function () {
+            Route::post('store', 'OwnerContractController@store');
+            Route::get('down', 'OwnerContractController@downFile');
+        });
+        Route::resource('customer', 'CustomerBaseController');
+        Route::resource('ownerSundryFeeDetails', 'OwnerSundryFeeDetailsController', ['only' => ['index', 'create', 'store', 'update', 'edit','destroy']]);
+    });
+    /** 站管理 */
+    $route->group(['prefix'=>'station'],function(){
+        Route::get('index','StationController@monitorIndex');
+        /** 监视器 */
+        Route::group(['prefix'=>'monitor'],function(){
+            Route::get('/','StationController@monitorIndex');
+            Route::get('/index','StationController@monitorIndex');
+        });
+        /** 缓存架 */
+        Route::group(['prefix'=>'cachingShelf'],function(){
+            Route::get('/index','CacheShelfController@index');
+        });
+        /** 栈规则 */
+        Route::group(['prefix'=>'rule'],function(){
+            Route::get('/index','StationRuleBatchController@index');
+        });
+    });
+    /** 控制台 */
+    $route->group(['prefix'=>'control'],function () {
+        Route::get('panel/menu','ControlPanelController@index') ;
+    });
+    /** 采购管理 */
+    $route->group(['prefix'=>'procurement'],function () {
+        /** 采购 */
+        Route::group(['prefix'=>'procurement'],function(){
+            Route::get('index','ProcurementController@index');
+            Route::get('create','ProcurementController@create');
+            Route::post('store','ProcurementController@store');
+            Route::post('getOwnerMaterial','ProcurementController@getOwnerMaterial');
+            Route::post('createProcurement','ProcurementController@createProcurement');
+            Route::post('createEnquiry','ProcurementController@createEnquiry');
+            Route::post('createProof','ProcurementController@createProof');
+            Route::any('procurementExport','ProcurementController@procurementExport');
+            Route::get('cancel/{id}','ProcurementController@cancel');
+            Route::post('initiateProcurement','ProcurementController@initiateProcurement');
+            Route::post('submitProcurement','ProcurementController@submitProcurement');
+            Route::post('createAnew','ProcurementController@createAnew');
+        });
+        /** 财务 */
+        Route::group(['prefix'=>'finance'],function(){
+            Route::get('checkBill','ProcurementController@checkBill');
+            Route::get('procurementBill','ProcurementController@procurementBill');
+            Route::get('monthlyBillReport','ProcurementController@monthlyBillReport');
+            Route::post('fillInvoice','ProcurementController@fillInvoice');
+            Route::any('procurementTotalBillExport','ProcurementController@procurementTotalBillExport');
+            Route::any('procurementBillExport','ProcurementController@procurementBillExport');
+            Route::any('checkBillExport','ProcurementController@checkBillExport');
+            Route::post('costPrice','ProcurementController@costPrice');
+            Route::post('getCheckBillMonth','ProcurementController@getCheckBillMonth');
+        });
+        Route::get('relating',function (){return view('procurement.menuProcurement');});
+    });
+    /** 需求管理 */
+    $route->group(['prefix'=>'demand'],function (){
+        Route::get('/','DemandController@index');
     });
-    Route::get('relating',function (){return view('procurement.menuProcurement');});
 });
 
-/** 需求管理 */
-Route::group(['prefix'=>'demand'],function (){
-    Route::get('/','DemandController@index');
-});
+/*
+ * 无需认证的路由
+ * */
+Route::get('/', function () {return redirect('login');});
+Route::any('test/{method}', 'TestController@method');
+//称重广播
+Route::post('package/weigh/measureMonitor/speech','MeasureMonitorController@speech');
+//称重显示
+Route::resource('package/weigh/measureMonitor','MeasureMonitorController');
+//入库预约终端
+Route::get('store/deliveryAppointment/exhibition','DeliveryAppointmentController@exhibition');
+//入库预约预约码输入
+Route::get('store/deliveryAppointment/delivery','DeliveryAppointmentController@delivery');
+//入库预约错误页面
+Route::get('store/deliveryAppointment/errMsg','DeliveryAppointmentController@errMsg');
+//入库预约成功页面
+Route::get('store/deliveryAppointment/successMsg','DeliveryAppointmentController@successMsg');
+//入库预约展览数据
+Route::post('store/deliveryAppointment/getExhibitionList','DeliveryAppointmentController@getExhibitionList');
+//入库预约验证密匙
+Route::post('store/deliveryAppointment/getKey','DeliveryAppointmentController@getKey');
+//临时工二维码
+Route::get('personnel/checking-in/goGetQRCode','QRCodeController@goGetQRCode');
+Route::get('personnel/checking-in/QRCode','QRCodeController@QRCode');
+Route::get('personnel/checking-in/importAndExportQRCode','QRCodeController@importAndExportQRCode');
+Route::post('personnel/checking-in/refreshQRCode','QRCodeController@refreshQRCode');
+//监视器
+Route::get('station/index/{station}','StationController@monitorShow');