소스 검색

Merge branch 'zzd'

# Conflicts:
#	routes/web.php
zhouzhendong 4 년 전
부모
커밋
8c5e9e063f

+ 55 - 0
app/Console/Commands/ReceiveRecord.php

@@ -0,0 +1,55 @@
+<?php
+
+namespace App\Console\Commands;
+
+use App\RejectedBill;
+use Carbon\Carbon;
+use Illuminate\Console\Command;
+
+class ReceiveRecord extends Command
+{
+    /**
+     * The name and signature of the console command.
+     *
+     * @var string
+     */
+    protected $signature = 'record:scan';
+
+    /**
+     * The console command description.
+     *
+     * @var string
+     */
+    protected $description = 'scan rejected record status';
+
+    /**
+     * Create a new command instance.
+     *
+     * @return void
+     */
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+    public static $delayedHour = 48;
+    /**
+     * Execute the console command.
+     *
+     */
+    public function handle()
+    {
+        $delayedDateTime = Carbon::now()->subHours(self::$delayedHour)->toDateTimeString();
+        \App\ReceiveRecord::query()->where("record_at","<=",$delayedDateTime)
+            ->where("delayed",0)
+            ->update(["delayed"=>2]);
+        \App\ReceiveRecord::query()
+            ->where("record_at",">",$delayedDateTime)
+            ->where("delayed",0)
+            ->whereIn("logistic_number",RejectedBill::query()->select("logistic_number_return")
+            ->where("created_at",">",$delayedDateTime)->whereIn("logistic_number_return",
+                    \App\ReceiveRecord::query()->select("logistic_number")
+                    ->where("record_at",">",$delayedDateTime)
+                    ->where("delayed",0)))->update(["delayed"=>1]);
+    }
+}

+ 0 - 42
app/Console/Commands/RedisSubscribe.php

@@ -1,42 +0,0 @@
-<?php
-
-namespace App\Console\Commands;
-
-use Illuminate\Console\Command;
-use Illuminate\Support\Facades\Redis;
-
-class RedisSubscribe extends Command
-{
-    /**
-     * The name and signature of the console command.
-     *
-     * @var string
-     */
-    protected $signature = 'redis:subscribe';
-
-    /**
-     * The console command description.
-     *
-     * @var string
-     */
-    protected $description = 'Subscribe to a Redis channel';
-
-    /**
-     * Create a new command instance.
-     *
-     * @return void
-     */
-    public function __construct()
-    {
-        parent::__construct();
-    }
-
-    /**
-     * Execute the console command.
-     *
-     * @return mixed
-     */
-    public function handle()
-    {
-    }
-}

+ 0 - 14
app/Console/Commands/stubs/model.stub

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

+ 0 - 15
app/Console/Commands/stubs/test.controller.stub

@@ -1,15 +0,0 @@
-<?php
-
-namespace {{ namespace }};
-
-use Tests\TestCase;
-
-class {{ class }} extends TestCase
-{
-
-    public function testExample()
-    {
-    {{ class }};
-        $this->assertTrue(true);
-    }
-}

+ 0 - 37
app/Console/Commands/stubs/test.service.stub

@@ -1,37 +0,0 @@
-<?php
-
-namespace {{ namespace }};
-use App\Services\{{ serviceName }};
-use Tests\TestCase;
-use App\{{ modelNameUc }};
-use App\Traits\TestMockSubServices;
-
-class {{ class }} extends TestCase
-{
-    use TestMockSubServices;
-    /** @var {{ serviceName }} $service */
-    public $service;
-    private $data;
-    private $amount=2;
-    function setUp(): void
-    {
-        parent::setUp();
-        $this->service = app('{{ serviceName }}');
-        $this->data['{{ modelNamePlural }}']
-            = factory({{ modelNameUc }}::class, $this->amount)
-            ->create();
-    }
-
-    public function testReturned()
-    {
-        $this->assertTrue(true);
-    }
-
-    function tearDown(): void
-    {
-        {{ modelNameUc }}::query()
-            ->whereIn('id',data_get($this->data['{{ modelNamePlural }}'],'*.id')??[])
-            ->delete();
-        parent::tearDown();
-    }
-}

+ 4 - 0
app/Console/Kernel.php

@@ -10,6 +10,7 @@ use App\Console\Commands\FluxOrderFix;
 use App\Console\Commands\InventoryDailyLoggingOwner;
 use App\Console\Commands\LogExpireDelete;
 use App\Console\Commands\MakeServiceCommand;
+use App\Console\Commands\ReceiveRecord;
 use App\Console\Commands\SyncBatchTask;
 use App\Console\Commands\SyncCarrier;
 use App\Console\Commands\SyncLogCacheTask;
@@ -53,6 +54,7 @@ class  Kernel extends ConsoleKernel
         BeforeCreateOwnerReport::class,
         CreateProcurementTotalBill::class,
         SyncCarrier::class,
+        ReceiveRecord::class,
     ];
 
     /**
@@ -90,6 +92,8 @@ class  Kernel extends ConsoleKernel
         $schedule->job(new LaborApplyRecordJob(false))->dailyAt(LaborApplyService::TIME_OUT_HOUR.':00');//生成临时工派遣数据
 
         $schedule->job(new CalculationArrivedManNumJob(now()->subDays(2)->startOfDay()))->dailyAt('01:01');//生成实际到岗人数数据
+
+        $schedule->command("record:scan")->hourlyAt(1);//退件信息标记
     }
 
     /**

+ 68 - 2
app/Http/Controllers/ReceiveRecordController.php

@@ -7,16 +7,81 @@ use App\Exceptions\Exception;
 use App\Logistic;
 use App\ReceiveRecord;
 use App\Services\LogisticService;
+use App\Warehouse;
+use Illuminate\Database\Eloquent\Builder;
 use Illuminate\Database\QueryException;
-use Illuminate\Support\Facades\Log;
+use Illuminate\Http\Request;
+use Oursdreams\Export\Export;
 
 class ReceiveRecordController extends Controller
 {
     use AsyncResponse;
+
+    private function query(Request $request, Builder $builder):Builder
+    {
+        $timeSt = $request->input("record_at_start");
+        $timeEn = $request->input("record_at_end");
+        $logisticNumber = $request->input("logistic_number");
+        $delayed = $request->input("delayed");
+
+        if ($timeSt && $timeEn){
+            $builder->whereBetween("record_at",[$timeSt, $timeEn]);
+        }else{
+            if ($timeSt)$builder->where("record_at",'>=',$timeSt);
+            if ($timeEn)$builder->where("record_at",'<=',$timeEn);
+        }
+        if ($logisticNumber!==null){
+            mb_regex_encoding('utf-8');
+            $par = array_unique(preg_split('/[,, ]+/u', $logisticNumber));
+            if (count($par)!=1) $builder->whereIn("logistic_number",$par);
+            else $builder->where("logistic_number",'like',$par[0]."%");
+        }
+        if ($delayed!==null)$builder->where("delayed",$delayed);
+        return $builder;
+    }
+
+    public function index(Request $request)
+    {
+        $records = ReceiveRecord::query()->with(["logistic:id,name","warehouse:id,name"])->orderByDesc("record_at");
+        $records = $this->query($request,$records);
+        $records = $records->get();
+        $status = ReceiveRecord::DELAYED;
+        return view("rejected.receiveRecord",compact("records","status"));
+    }
+
+    public function export(Request $request)
+    {
+        $records = ReceiveRecord::query()->with(["logistic:id,name","warehouse:id,name"]);
+        if ($request->input("checkAllSign",false)){
+            $records = $this->query($request,$records);
+        }else{
+            $numbers = explode(",",$request->input("data",""));
+            $records->whereIn("logistic_number",$numbers);
+        }
+        $list = [];
+        foreach ($records->get() as $item){
+            $list[] = [
+                $item->warehouse->name ?? "未知",
+                $item->logistic_number,
+                $item->logistic->name ?? '未知',
+                $item->record_at,
+                ReceiveRecord::DELAYED[$item->delayed],
+            ];
+        }
+        return Export::make(["仓库","快递单号","快递公司","记录时间","延时标记"],$list,"退件记录");
+    }
+
+    public function record()
+    {
+        $warehouses = Warehouse::query()->select("id","name")->get();
+        return view("rejected.record",compact("warehouses"));
+    }
+
     public function receive()
     {
         $logisticNumber = \request("logisticNumber");
-        if (!$logisticNumber)$this->error("非法单号");
+        $warehouse = \request("warehouse");
+        if (!$logisticNumber || !$warehouse)$this->error("非法单号");
         /** @var LogisticService $service */
         $service = app("LogisticService");
         $name = $service->assertExpressCompany($logisticNumber);
@@ -30,6 +95,7 @@ class ReceiveRecordController extends Controller
                 "logistic_number" => $logisticNumber,
                 "logistic_id" => $logisticId,
                 "record_at" => $dateTime,
+                "warehouse_id" => $warehouse,
             ]);
             $this->success(["recordAt"=>$dateTime,"logistic"=>$logistic->name??"未知"]);
         }catch(QueryException $qe){

+ 6 - 8
app/Http/Controllers/RejectedController.php

@@ -25,9 +25,9 @@ use Illuminate\Routing\Redirector;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\Gate;
 use Illuminate\Support\Facades\Validator;
+use Illuminate\Validation\ValidationException;
 use Illuminate\View\View;
 use Maatwebsite\Excel\Facades\Excel;
-use function foo\func;
 use Oursdreams\Export\Export;
 
 class RejectedController extends Controller
@@ -53,7 +53,6 @@ class RejectedController extends Controller
         /** @var RejectedService $application */
         $application = app('RejectedService');
         $rejectedBills= $application->paginate($request);
-//        $issueIds = $application->返回有问题件的ID($request);
         $owners = $ownerService->getIntersectPermitting();
         $qualityLabels = $qualityLabelService->get();
         $logistics=$logisticService->getSelection();
@@ -228,18 +227,17 @@ class RejectedController extends Controller
     /**
      * Show the form for creating a new resource.
      *
-     * @return Application|RedirectResponse|Response|Redirector
+     * @return Application|RedirectResponse|Redirector|View
      */
     public function create()
     {
         if(!Gate::allows('退货管理-录入')){ return redirect(url('/'));}
-        $user=Auth::user();
-        $owners=Owner::all()->whereIn('id',
-            $user?app('UserService')->getPermittingOwnerIds($user):[])->sortBy('name');
+        $owners=Owner::query()->whereIn('id',app("OwnerService")->getQuery())
+            ->get()->sortBy('name');
         $logistics=Logistic::all()->sortBy('name');
         $qualityLabels=QualityLabel::all()->sortBy('name');
         $rejectedBills = RejectedBill::query()->orderByDesc('id')->whereIn('id_owner',
-            $user?app('UserService')->getPermittingOwnerIds($user):[])->limit(20)->get();
+            app("OwnerService")->getQuery())->limit(20)->get();
         foreach($rejectedBills as $bill){
             $bill['is_loaded'] = $bill['is_loaded_null'];
             $bill['isEditing'] = false;
@@ -252,12 +250,12 @@ class RejectedController extends Controller
      *
      * @param Request $request
      * @return Application|RedirectResponse|Response|Redirector
+     * @throws ValidationException
      */
     public function store(Request $request)
     {
         if(!Gate::allows('退货管理-录入')){ return redirect(url('/'));  }
         $this->validatorCreate($request->all())->validate();
-        app('LogService')->log(__METHOD__,'找不到表','247行');
         $rejected=new Rejected($request->all());
         $rejected->save();
         app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);

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

@@ -285,12 +285,18 @@ class TestController extends Controller
         return $task->get();
     }
     use Signature;
+    private static $delayedHour = 48;
     public function test(Request $request)
     {
-        /** @var LogisticService $service */
-        $service = app("LogisticService");
-        $name = $service->assertExpressCompany("adsdddddddd ");
-        dd($name);
+        $delayedDateTime = "2021-10-26 00:00:00";
+        dd(\App\ReceiveRecord::query()
+            ->where("record_at",">",$delayedDateTime)
+            ->where("delayed",0)
+            ->whereIn("logistic_number",RejectedBill::query()->select("logistic_number_return")
+                ->where("created_at",">",$delayedDateTime)->whereIn("logistic_number_return",
+                    \App\ReceiveRecord::query()->select("logistic_number")
+                        ->where("record_at",">",$delayedDateTime)
+                        ->where("delayed",0)))->sql());
         $ser = new \App\Http\Controllers\api\thirdPart\syrius\producer\OrderController();
 
         $code = "W211025000233";

+ 14 - 0
app/ReceiveRecord.php

@@ -15,14 +15,28 @@ class ReceiveRecord extends Model
         "logistic_number",
         "logistic_id",
         "record_at",
+        "warehouse_id",
+        "delayed",
     ];
 
     public $timestamps = false;
     protected $primaryKey = "logistic_number";
+    protected $keyType = "string";
+
+    const DELAYED = [
+        0 => "等待",
+        1 => "正常",
+        2 => "延时",
+    ];
 
     //快递
     public function logistic():BelongsTo
     {
         return $this->belongsTo(Logistic::class,"logistic_id","id");
     }
+    //仓库
+    public function warehouse():BelongsTo
+    {
+        return $this->belongsTo(Warehouse::class);
+    }
 }

+ 36 - 0
database/migrations/2021_10_26_104051_change_receive_records_table.php

@@ -0,0 +1,36 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class ChangeReceiveRecordsTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('receive_records', function (Blueprint $table) {
+            $table->bigInteger("warehouse_id")->comment("仓库");
+            $table->bigInteger("delayed")->default(0)->comment("延时标记");
+            $table->index(["record_at","delayed"],"receive_records_d_r");
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('receive_records', function (Blueprint $table) {
+            $table->dropColumn("warehouse_id");
+            $table->dropColumn("delayed");
+            $table->dropIndex("receive_records_d_r");
+        });
+    }
+}

+ 88 - 0
resources/views/rejected/receiveRecord.blade.php

@@ -0,0 +1,88 @@
+@extends('layouts.app')
+@section('title')退件记录列表@endsection
+
+@section('content')
+    <div class="container-fluid d-none" id="container">
+        <div id="form_div"></div>
+        <div>
+            <div class="dropdown">
+                <button class="btn btn-outline-dark btn-sm form-control-sm dropdown-toggle tooltipTarget"
+                        data-toggle="dropdown" title="导出所有页将会以搜索条件得到的筛选结果,将其全部记录(每一页)导出">
+                    导出Excel
+                </button>
+                <div class="dropdown-menu">
+                    <a class="dropdown-item" @click="exportExcel(false)" href="javascript:">导出勾选内容</a>
+                    <a class="dropdown-item" @click="exportExcel(true)" href="javascript:">导出所有页</a>
+                </div>
+            </div>
+        </div>
+        <table class="table table-striped table-bordered table-hover text-nowrap table-body td-min-width-80"  style="background: #fff;" id="table">
+            <tr v-for="(record,i) in records">
+                <td>
+                    <label><input type="checkbox" :value="record.logistic_number"></input></label>
+                </td>
+                <td>@{{ i+1 }}</td>
+                <td>@{{ record.logistic_number }}</td>
+                <td>@{{ record.logistic ? record.logistic.name : '未知' }}</td>
+                <td>@{{ record.warehouse ? record.warehouse.name : '未知' }}</td>
+                <td>@{{ record.record_at }}</td>
+                <td>@{{ delayed[record.delayed] }}</td>
+            </tr>
+        </table>
+    </div>
+@stop
+@section('lastScript')
+<script src="{{mix('js/queryForm/export.js')}}"></script>
+<script src="{{mix('js/queryForm/queryForm.js')}}"></script>
+<script type="text/javascript" src="{{mix('js/queryForm/header.js')}}"></script>
+<script>
+    let vue = new Vue({
+        el:"#container",
+        data:{
+            records:[@foreach($records as $record)@json($record),@endforeach],
+            status:[@foreach($status as $index=>$s){name:"{{$index}}",value:"{{$s}}"},@endforeach],
+            delayed:[@foreach($status as $s)"{{$s}}",@endforeach],
+        },
+        mounted:function(){
+            $('#container').removeClass('d-none');
+            let data=[
+                [
+                    {name:'record_at_start',type:'dateTime',tip:'选择显示记录日期的起始时间'},
+                    {name:'logistic_number',type:'input',tip:'可支持多单号,糊模查找需要在右边打上%符号',placeholder:'快递单号'},
+                ],[
+                    {name:'record_at_end',type:'dateTime',tip:'选择显示记录日期的结束时间'},
+                    {name:'delayed',type:'select',placeholder: '状态',data:this.status},
+                ]
+            ];
+            this.form=new query({
+                el:"#form_div",
+                condition:data
+            });
+            this.form.init();
+            let column = [
+                {name:'index',value: '序号', neglect: true},
+                {name:'logistic_number',value: '快递单号', },
+                {name:'logistic_id', value: '快递公司'},
+                {name:'warehouse_id', value: '仓库'},
+                {name:'record_at', value: '记录时间'},
+                {name:'delayed',value: '延时标记', neglect: true},
+            ];
+            new Header({
+                el:"table",
+                name: "record",
+                column: column,
+                data: this.records,
+                fixedTop:($('#form_div').height())+2,
+            }).init();
+        },
+        methods: {
+            exportExcel(checkAllSign){
+                let url = '{{url('rejected/record/export')}}';
+                let token='{{ csrf_token() }}';
+                window.excelExport(checkAllSign,checkData,url,1000,token);
+            },
+        }
+    });
+</script>
+@stop
+

+ 67 - 5
resources/views/rejected/record.blade.php

@@ -26,11 +26,23 @@
         }
     </style>
 </head>
-<body>
+<body allowfullscreen="true">
     <div class="container-fluid w-100 h-100" id="container">
         <div id="toast-container" style="position: absolute;top: 0;width: 100%;z-index: 999"></div>
         <div class="row w-100 h-100">
             <div class="col-4">
+                <div class="dropdown">
+                    <button type="button" class="btn col-5 p-0" id="dropdownMenu"
+                            data-toggle="dropdown">
+                        <h4 class="text-muted mt-1">@{{ name }}&nbsp;&nbsp;<i class="fa fa-exchange text-info"></i></h4>
+                    </button>
+                    <ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu">
+                        <li role="presentation" v-for="warehouse in warehouses" v-if="warehouse.id!==selected">
+                            <a role="menuitem" tabindex="-1" style="cursor: pointer" class="ml-3"
+                            @click="selectedWarehouse(warehouse)">@{{ warehouse.name }}</a>
+                        </li>
+                    </ul>
+                </div>
                 <p class="text-center h1 pt-3 font-weight-bold">@{{sum}}</p>
                 <p class="text-center text-secondary">本次单量</p>
                 <div class="form-group mt-4">
@@ -43,6 +55,10 @@
                     <input class="form-control" disabled id="recordAt" placeholder="记录时间"
                      v-model="recordAt">
                 </div>
+                <button class="btn btn-info col-12 text-white" @click="fullScreen()" style="position:absolute;bottom: 20px;cursor: pointer">
+                    <span v-if="!full">全屏</span>
+                    <span v-else>退出全屏</span>
+                </button>
             </div>
             <div class="col-8 p-0">
                 <p class="bg-white h2 text-center p-2 text-secondary" style="height: 5vh">记录信息</p>
@@ -75,23 +91,69 @@
 </body>
 <script src="{{ mix('js/app.js') }}"></script>
 <script type="text/javascript">
+
     new Vue({
         el:"#container",
         data:{
             sum:0,
             data:[
             ],
+            warehouses:[@foreach($warehouses as $warehouse)@json($warehouse),@endforeach],
             logisticNumber:"",
             recordAt:"",
             maxLen:20,
+            full:false,
+            selected:"",
+            name:"",
         },
         mounted() {
             this.registerEvent();
-            //this.buildToast(true,"1");
-            //this.buildToast(false,"2");
-            //this.buildToast(true,"3");
+            let record = localStorage.getItem("record:warehouse");
+            if (record){
+                let recordObj = JSON.parse(record);
+                this.selected = recordObj.id;
+                this.name = recordObj.name;
+            }else{
+                if (this.warehouses.length>0)this.selectedWarehouse(this.warehouses[0]);
+            }
         },
         methods:{
+            selectedWarehouse(warehouse){
+                this.selected = warehouse.id;
+                this.name = warehouse.name;
+                localStorage.setItem("record:warehouse", JSON.stringify(warehouse));
+            },
+            //全屏
+            fullScreen() {
+                if (this.full){
+                    this.exitFullscreen();
+                    return;
+                }
+                let element = document.documentElement;
+                if (element.requestFullscreen) {
+                    element.requestFullscreen();
+                } else if (element.msRequestFullscreen) {
+                    element.msRequestFullscreen();
+                } else if (element.mozRequestFullScreen) {
+                    element.mozRequestFullScreen();
+                } else if (element.webkitRequestFullscreen) {
+                    element.webkitRequestFullscreen();
+                }
+                this.full = true;
+            },
+            //退出全屏
+            exitFullscreen() {
+                if (document.exitFullscreen) {
+                    document.exitFullscreen();
+                } else if (document.msExitFullscreen) {
+                    document.msExitFullscreen();
+                } else if (document.mozCancelFullScreen) {
+                    document.mozCancelFullScreen();
+                } else if (document.webkitExitFullscreen) {
+                    document.webkitExitFullscreen();
+                }
+                this.full = false;
+            },
             registerEvent(){
                 $(document).on('keypress', e=>{
                     if (e.keyCode===13){
@@ -119,7 +181,7 @@
                 });
             },
             submitRecord(logisticNumber,recordAt){
-                window.axios.post('{{url('record')}}',{logisticNumber:logisticNumber}).then(body=>{
+                window.axios.post('{{url('record')}}',{logisticNumber:logisticNumber,warehouse:this.selected}).then(body=>{
                     let res = body.data;
                     let status = true;
                     if (!res.success){

+ 26 - 0
routes/web.php

@@ -52,6 +52,24 @@ Route::post('personnel/checking-in/refreshQRCode','QRCodeController@refreshQRCod
 Route::post("record","ReceiveRecordController@receive");
 Route::get("record",function (){return view("rejected.record");});
 
+//人事管理
+Route::group(['prefix'=>'personnel','middleware'=>'auth'],function() {
+
+    //临时开放录入
+    Route::put('laborApply/temporaryOpen','LaborApplyController@temporaryOpen')->name('laborApply.temporaryOpen');
+    Route::get('laborApply/createDispatch','LaborApplyController@createDispatch')->name('laborApply.createDispatch');
+    //劳务派遣查看
+    Route::group(['prefix' => 'laborApply'], function () {
+        Route::patch('laborCompanyDispatch/{laborCompanyDispatch}/laborCompanyReceivingOrder', 'LaborCompanyDispatchController@laborCompanyReceivingOrder')->name('laborCompanyDispatch.laborCompanyReceivingOrder');
+        Route::patch('laborCompanyDispatch/{laborCompanyDispatch}/personnelCheck', 'LaborCompanyDispatchController@personnelCheck')->name('laborCompanyDispatch.personnelCheck');
+        Route::resource('laborCompanyDispatch','LaborCompanyDispatchController')->only(['index','edit','update']);
+        Route::get('laborCompanyDispatch/{laborCompanyDispatch}/detail/create','LaborCompanyDispatchController@createDetail')->name('laborCompanyDispatch.createDetail');
+        Route::get('laborCompanyDispatch/{laborCompanyDispatch}/detail/edit','LaborCompanyDispatchController@editDetail')->name('laborCompanyDispatch.editDetail');
+        Route::post('laborCompanyDispatch/{laborCompanyDispatch}/detail','LaborCompanyDispatchController@storeDetail')->name('laborCompanyDispatch.storeDetail');
+    });
+    Route::resource('laborApply', 'LaborApplyController');
+
+});
 
 //监视器
 Route::get('station/monitor/{station}','StationController@monitorShow');
@@ -83,6 +101,9 @@ Route::group(['middleware'=>'auth'],function ($route){
     /** 全局 */
     $route->get('denied',function (){return view('exception.authority');});
     $route->post('getMenu','MenuController@get');
+
+    $route->post("record","ReceiveRecordController@receive");
+    $route->get("record","ReceiveRecordController@record");
     /** 基础设置 */
     $route->group(['prefix'=>'maintenance'],function(){
         /** 料箱型号 */
@@ -423,6 +444,11 @@ Route::group(['middleware'=>'auth'],function ($route){
     $route->resource('rejectedBill', 'RejectedBillController');
     /** 退货 */
     $route->group(['prefix'=>'rejected'],function(){
+        /** 导出 */
+        Route::group(['prefix'=>'record'],function(){
+            Route::get('/', 'ReceiveRecordController@index');
+            Route::match(["get","post"],'export', 'ReceiveRecordController@export');
+        });
         /** 导出 */
         Route::group(['prefix'=>'import'],function(){
             Route::post('excel', 'RejectedController@importExcel');