Просмотр исходного кода

Merge branch 'master' into zengjun

ajun 5 лет назад
Родитель
Сommit
4986dc514c
35 измененных файлов с 1343 добавлено и 1891 удалено
  1. 35 27
      app/Http/Controllers/OrderController.php
  2. 24 122
      app/Http/Controllers/PackageController.php
  3. 64 93
      app/Http/Controllers/ProcessController.php
  4. 2 9
      app/Http/Controllers/RejectedController.php
  5. 83 29
      app/Http/Controllers/TestController.php
  6. 37 125
      app/Http/Controllers/WaybillsController.php
  7. 55 0
      app/Jobs/MarkPackageExcepted.php
  8. 5 1
      app/LaborReport.php
  9. 16 2
      app/Process.php
  10. 13 0
      app/Services/CarrierService.php
  11. 13 0
      app/Services/OwnerService.php
  12. 39 0
      app/Services/PackageService.php
  13. 83 0
      app/Services/ProcessService.php
  14. 53 0
      app/Services/WaybillService.php
  15. 76 0
      app/Services/common/QueryService.php
  16. 1 1
      config/users.php
  17. 12 1
      package-lock.json
  18. 1 0
      package.json
  19. 308 579
      public/js/app.js
  20. BIN
      public/sound/ding.mp3
  21. BIN
      public/sound/warning_otherBarcode.mp3
  22. 25 0
      resources/js/queryForm/export.js
  23. 58 45
      resources/js/queryForm/queryForm.js
  24. 49 0
      resources/js/queryForm/queryForm说明.txt
  25. 0 1
      resources/js/singles/rejectedIndex.js
  26. 1 1
      resources/views/layouts/app.blade.php
  27. 69 219
      resources/views/order/index/delivering.blade.php
  28. 9 2
      resources/views/personnel/laborReport/index.blade.php
  29. 2 2
      resources/views/process/create.blade.php
  30. 45 165
      resources/views/process/index.blade.php
  31. 4 5
      resources/views/rejected/search/general.blade.php
  32. 60 248
      resources/views/waybill/index.blade.php
  33. 91 207
      resources/views/weight/package/index.blade.php
  34. 6 4
      routes/web.php
  35. 4 3
      webpack.mix.js

+ 35 - 27
app/Http/Controllers/OrderController.php

@@ -6,25 +6,22 @@ use App\Exports\Export;
 use App\OracleBasCustomer;
 use App\OracleDOCOrderHeader;
 use App\OracleDOCWaveDetails;
-use Doctrine\DBAL\Schema\AbstractAsset;
 use Illuminate\Database\Eloquent\Collection;
 use Illuminate\Http\Request;
-use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\DB;
 use Illuminate\Support\Facades\Gate;
 use Maatwebsite\Excel\Facades\Excel;
 
 class OrderController extends Controller
 {
-    private function preciseQuery(Request $request,$sql){
+    private function preciseQuery($request,$sql){
         $orderdate_start=$request->input('orderdate_start');
         $orderdate_end=$request->input('orderdate_end');
-        $ordertime_start=$request->input('ordertime_start');
-        $ordertime_end=$request->input('ordertime_end');
         $customerid=$request->input('customerid');
         $orderno=$request->input('orderno');
         $soreference5=$request->input('soreference5');
         $codename_c=$request->input('codename_c');
+        $codename_c_end=$request->input('codename_c_end');
         $carriername=$request->input('carriername');
         $soreference1=$request->input('soreference1');
         $issuepartyname=$request->input('issuepartyname');
@@ -32,19 +29,18 @@ class OrderController extends Controller
         $addtime=$request->input('addtime');
         $waveno=$request->input('waveno');
         $edisendflag2=$request->edisendflag2;
+        $edisendflag=$request->edisendflag;
         if ($orderdate_start){
-            $sql.=" and ordertime>='".$orderdate_start;
-            if ($ordertime_start)$sql.=" ".$ordertime_start.":00'";
-            else $sql.=" 00:00:00'";
+            $sql.=" and addtime>='".$orderdate_start.":00'";
         }
         if ($orderdate_end){
-            $sql.=" and ordertime<='".$orderdate_end;
-            if ($ordertime_end)$sql.=" ".$ordertime_end.":59' ";
-            else $sql.=" 23:59:59' ";
+            $sql.=" and addtime<='".$orderdate_end.":59' ";
         }
         if ($customerid)$sql.=" and customerid='".$customerid."'";
         if ($orderno)$sql.=" and orderno like '".$orderno."%'";
-        if ($codename_c)$sql.=" and sostatus = '".$codename_c."'";
+        if ($codename_c&&$codename_c_end)$sql.=" and sostatus between '".$codename_c."' and '".$codename_c_end."'";
+        if ($codename_c&&!$codename_c_end)$sql.=" and sostatus = '".$codename_c."'";
+        if (!$codename_c&&$codename_c_end)$sql.=" and sostatus = '".$codename_c_end."'";
         if ($carriername)$sql.=" and carriername like '".$carriername."%'";
         if ($soreference1){
             $arr=array_filter(preg_split('/[,, ]+/is', $soreference1));
@@ -65,7 +61,7 @@ class OrderController extends Controller
         if ($notes){
             if ($addtime&&$addtime!=0)$sql.=" and addtime >= '".date('Y-m-d H:i:s',strtotime("-".$addtime." day"))."'";
             $sql.=" and notes like '%".$notes."%'";
-        }else unset($request->input()['addtime']);
+        }else $request->offsetUnset('addtime');
         if ($soreference5){
             $arr=array_filter(preg_split('/[,, ]+/is', $soreference5));
             if (count($arr)>0){
@@ -98,6 +94,9 @@ class OrderController extends Controller
         if ($edisendflag2){
             $sql.=" and edisendflag2 = '".$edisendflag2."'";
         }
+        if ($edisendflag){
+            $sql.=" and edisendflag = '".$edisendflag."'";
+        }
         return $sql;
     }
 
@@ -105,26 +104,27 @@ class OrderController extends Controller
         if(!Gate::allows('订单管理-查询')){ return redirect(url('/'));  }
         $paginate=$request->input('paginate')??50;
         $page=$request->input('page')??1;
-        $checkData=$request->input('checkData');
+        $checkData=$request->input('data');
         $alternate_sku1=$request->input('alternate_sku1');
-        $export=$request->input('export');
+        $export=$request->input('checkAllSign');
         $sql="select ACT_ALLOCATION_DETAILS_temp.picktotraceid,ACT_ALLOCATION_DETAILS.CHECKTIME,DOC_ORDER_HEADER.addtime,DOC_ORDER_HEADER.C_PROVINCE,DOC_ORDER_HEADER.C_CITY,DOC_ORDER_HEADER.C_DISTRICT,DOC_ORDER_HEADER.C_CONTACT,DOC_ORDER_HEADER.OrderNo,DOC_ORDER_HEADER.SOStatus,DOC_ORDER_HEADER.WAREHOUSEID,DOC_ORDER_HEADER.CustomerID
-        ,DOC_ORDER_HEADER.C_Tel2,DOC_ORDER_HEADER.CarrierName,DOC_ORDER_HEADER.IssuePartyName,
+        ,DOC_ORDER_HEADER.C_Tel2,DOC_ORDER_HEADER.CarrierName,DOC_ORDER_HEADER.IssuePartyName,DOC_ORDER_HEADER.EDIREMARKS2,
        DOC_ORDER_HEADER.WaveNo,DOC_ORDER_HEADER.SOReference1
         ,DOC_ORDER_HEADER.soreference5,DOC_ORDER_HEADER.EDISENDFLAG2,DOC_ORDER_HEADER.EDISendTime2,DOC_ORDER_HEADER.Notes,DOC_ORDER_HEADER.ERPCANCELFLAG,
        DOC_ORDER_HEADER.Picking_Print_Flag,DOC_ORDER_HEADER.EDISENDFLAG
         ,DOC_ORDER_HEADER.ReleaseStatus,DOC_ORDER_HEADER.C_Address1,DOC_ORDER_HEADER.OrderTime,DOC_Order_Details.CustomerID,
-       DOC_Order_Details.SKU,DOC_Order_Details.QtyOrdered,DOC_Order_Details.OrderLineNo,BAS_Codes.codename_c,BAS_Customer.descr_c as customer_descr_c,
+       DOC_Order_Details.SKU,DOC_Order_Details.QtyOrdered,DOC_Order_Details.LineStatus,DOC_Order_Details.OrderLineNo,order_code.codename_c as orderCodeName,
+       order_detail_code.codename_c as orderDetailCodeName,BAS_Customer.descr_c as customer_descr_c,
        BAS_SKU.Alternate_SKU1,BAS_SKU.Descr_C,(select count(*) from DOC_ORDER_HEADER WHERE 1=1";
         $sql=$this->preciseQuery($request,$sql);
         ;$sql.=" ) as counted from (";
-        if (!$request->input('export')&&!$request->input('export'))$sql.=" select * from (";
+        if (!$request->input('export'))$sql.=" select * from (";
         $sql.=" select ROWNUM as rn,DOC_ORDER_HEADER.addtime,DOC_ORDER_HEADER.C_PROVINCE,DOC_ORDER_HEADER.C_CITY,DOC_ORDER_HEADER.C_DISTRICT,DOC_ORDER_HEADER.C_CONTACT,DOC_ORDER_HEADER.OrderNo,DOC_ORDER_HEADER.SOStatus,DOC_ORDER_HEADER.WAREHOUSEID,DOC_ORDER_HEADER.CustomerID
                           ,DOC_ORDER_HEADER.C_Tel2,DOC_ORDER_HEADER.CarrierName,DOC_ORDER_HEADER.IssuePartyName,
                          DOC_ORDER_HEADER.WaveNo,DOC_ORDER_HEADER.SOReference1
                           ,DOC_ORDER_HEADER.soreference5,DOC_ORDER_HEADER.EDISENDFLAG2,DOC_ORDER_HEADER.EDISendTime2,DOC_ORDER_HEADER.Notes,DOC_ORDER_HEADER.ERPCANCELFLAG,
                          DOC_ORDER_HEADER.Picking_Print_Flag,DOC_ORDER_HEADER.EDISENDFLAG
-                          ,DOC_ORDER_HEADER.ReleaseStatus,DOC_ORDER_HEADER.C_Address1,DOC_ORDER_HEADER.OrderTime from (select * from DOC_ORDER_HEADER  order by ADDTIME desc )DOC_ORDER_HEADER where 1=1 ";
+                          ,DOC_ORDER_HEADER.ReleaseStatus,DOC_ORDER_HEADER.C_Address1,DOC_ORDER_HEADER.OrderTime,DOC_ORDER_HEADER.EDIREMARKS2 from (select * from DOC_ORDER_HEADER  order by ADDTIME desc )DOC_ORDER_HEADER where 1=1 ";
         $sql=$this->preciseQuery($request,$sql);
         if ($checkData){
             $checkData=explode(',',$checkData);
@@ -140,10 +140,11 @@ class OrderController extends Controller
                 $sql.=")";
             }
         }
-        if (!$request->input('export')&&!$request->input('export'))$sql.=" and ROWNUM<='".$page*$paginate."')";
-        if (!$request->input('export')&&!$request->input('export'))$sql.=" header where header.rn>'".($page-1)*$paginate."' ";
+        if (!$request->input('export'))$sql.=" and ROWNUM<='".$page*$paginate."')";
+        if (!$request->input('export'))$sql.=" header where header.rn>'".($page-1)*$paginate."' ";
         $sql.=")DOC_ORDER_HEADER left join DOC_ORDER_DETAILS on DOC_ORDER_DETAILS.ORDERNO=DOC_ORDER_HEADER.ORDERNO
-                      left join BAS_CODES on BAS_CODES.CODE=DOC_ORDER_HEADER.sostatus and BAS_CODES.codeid='SO_STS'
+                      left join BAS_CODES  order_code on order_code.CODE=DOC_ORDER_HEADER.sostatus and order_code.codeid='SO_STS'
+                      left join BAS_CODES  order_detail_code on order_detail_code.CODE=DOC_ORDER_DETAILS.linestatus and order_detail_code.codeid='SO_STS'
                       left join BAS_Customer on BAS_Customer.customerid=DOC_ORDER_HEADER.customerid
                       left join  BAS_SKU on DOC_Order_Details.CustomerID=BAS_SKU.CustomerID and DOC_Order_Details.SKU=BAS_SKU.SKU
                       left join ACT_ALLOCATION_DETAILS on DOC_Order_Details.orderno=ACT_ALLOCATION_DETAILS.orderno and DOC_Order_Details.orderlineno=ACT_ALLOCATION_DETAILS.orderlineno
@@ -162,12 +163,12 @@ class OrderController extends Controller
             if (isset($commodities[$order->orderno])){
                 array_push($commodities[$order->orderno],
                     ["sku"=>$order->sku,"alternate_sku1"=>$order->alternate_sku1,"descr_c"=>$order->descr_c,"qtyordered"=>$order->qtyordered
-                    ,"checktime"=>$order->checktime]);
+                    ,"checktime"=>$order->checktime,"orderdetailcodename"=>$order->orderdetailcodename]);
                 unset($orders[$index]);
                 continue;
             }
             $commodities[$order->orderno]=[["sku"=>$order->sku,"alternate_sku1"=>$order->alternate_sku1,
-                "descr_c"=>$order->descr_c,"qtyordered"=>$order->qtyordered,"checktime"=>$order->checktime]];
+                "descr_c"=>$order->descr_c,"qtyordered"=>$order->qtyordered,"checktime"=>$order->checktime,"orderdetailcodename"=>$order->orderdetailcodename]];
         }
         $orders=array_values($orders);
         $orders = new Collection($orders);
@@ -175,7 +176,7 @@ class OrderController extends Controller
         if ($checkData || $export)return $this->export($orders,$commodities);
         $customers=OracleBasCustomer::select('customerid','descr_c')->where('customer_type','OW')->where('active_flag','Y')->get();
         $request=$request->input();
-        $codes=DB::connection('oracle')->table('BAS_CODES')->select('code','codename_c')->where('codeid','SO_STS')->get();
+        $codes=DB::connection('oracle')->table('BAS_CODES')->select('code','codename_c')->where('codeid','SO_STS')->orderBy('code','asc')->get();
         return view('order/index/delivering',compact('orders','customers','request','codes','commodities','page'));
     }
     //批量备注追加
@@ -296,11 +297,14 @@ class OrderController extends Controller
             'edisendtime2'=>'快递获取时间',
             'sku'=>'产品代码',
             'alternate_sku1'=>'产品条码',
+            'orderdetailcodename'=>'明细状态',
             'descr_c'=>'产品名称',
             'qtyordered'=>'订单数量',
+            'checktime'=>'复核时间',
             'erpcancelflag'=>'接口取消标记',
             'picking_print_flag'=>'拣货单打印标记',
             'edisendflag'=>'接口回传标记',
+            'ediremarks2'=>'接口回传异常备注',
             'releasestatus'=>'订单冻结',
 
         ]];
@@ -311,7 +315,7 @@ class OrderController extends Controller
             $data=[
                 'orderno'=>$order->orderno,
                 'addtime'=>$order->addtime,
-                'sostatus'=>$order->codename_c,
+                'sostatus'=>$order->ordercodename,
                 'warehouseid'=>$order->warehouseid,
                 'oracleBASCustomer_descr_c'=>$order->customer_descr_c,
                 'c_contact'=>$order->c_contact,
@@ -328,6 +332,7 @@ class OrderController extends Controller
                 'edisendtime2'=>$order->edisendtime2,
                 'notes'=>$order->notes,
                 'erpcancelflag'=>$order->erpcancelflag,
+                'ediremarks2'=>$order->ediremarks2,
                 'picking_print_flag'=>$order->picking_print_flag,
                 'edisendflag'=>$order->edisendflag,
                 'releasestatus'=>$order->releasestatus,
@@ -338,6 +343,8 @@ class OrderController extends Controller
                 $data['alternate_sku1']='';
                 $data['descr_c']='';
                 $data['qtyordered']='';
+                $data['checktime']='';
+                $data['orderdetailcodename']='';
                 array_push($list,$data);
                 continue;
             }
@@ -346,6 +353,8 @@ class OrderController extends Controller
                 $data['alternate_sku1']=$oracleDOCOrderDetail['alternate_sku1'];
                 $data['descr_c']=$oracleDOCOrderDetail['descr_c'];
                 $data['qtyordered']=$oracleDOCOrderDetail['qtyordered'];
+                $data['checktime']=$oracleDOCOrderDetail['checktime'];
+                $data['orderdetailcodename']=$oracleDOCOrderDetail['orderdetailcodename'];
                 if (isset($sign[$order->orderno])){
                     $data['orderno']='';$data['sostatus']='';$data['warehouseid']='';$data['oracleBASCustomer_descr_c']='';$data['c_contact']='';$data['addtime']='';
                     $data['c_tel2']='';$data['carriername']='';$data['issuepartyname']='';$data['waveno']='';$data['soreference1']='';$data['soreference5']='';
@@ -411,7 +420,6 @@ class OrderController extends Controller
         oci_bind_by_name($stmt,':OUT_Return_Code',$OUT_Return_Code);
         $this->log(__METHOD__,'调用sp根据订单取消分配'.__FUNCTION__,json_encode($orderno),Auth::user()['id']);
         return oci_execute($stmt);
-
     }
 
 }

+ 24 - 122
app/Http/Controllers/PackageController.php

@@ -2,96 +2,47 @@
 
 namespace App\Http\Controllers;
 
-use App\Events\WeighedEvent;
 use App\Exports\Export;
 use App\Logistic;
-use App\OracleDOCOrderHeader;
-use App\OracleDOCWaveDetails;
 use App\Owner;
 use App\Package;
 use App\PaperBox;
-use Box\Spout\Common\Helper\Escaper\XLSX;
-use Box\Spout\Common\Type;
-use Box\Spout\Writer\Common\Creator\WriterEntityFactory;
-use Box\Spout\Writer\Common\Creator\WriterFactory;
+use App\Services\OwnerService;
+use App\Services\PackageService;
 use Carbon\Carbon;
-use Illuminate\Contracts\Foundation\Application;
-use Illuminate\Http\RedirectResponse;
 use Illuminate\Http\Request;
-use Illuminate\Http\Response;
-use Illuminate\Routing\Redirector;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\DB;
 use Illuminate\Support\Facades\Gate;
 use Illuminate\Support\Facades\Validator;
 use Maatwebsite\Excel\Facades\Excel;
-use Box\Spout\Common\Entity\Row;
 
 
 class PackageController extends Controller
 {
-    //超15天精确查询抽离 cloumn前提:数据库字段名必须与request内字段名一致
-    public function preciseQuery(string $column,Request $request,$packages){
-        $today=Carbon::now()->subDays(15);
-        $packagesTem=clone $packages;
-        $packagesTem=$packagesTem->where($column,'like','%'.$request->input($column).'%')->where('created_at','>',$today->format('Y-m-d'));
-        if($packagesTem->count()==0   //TODO: 注意:该get()[0]的查询方式在大数据量的情况下不适用,应clone一份做first判断 或干脆去除该条件
-            ||$packagesTem->get()[0][$column]==$request->input($column)){
-            $packages=$packages->where($column,$request->input($column));
-        }else{
-            $packages=$packagesTem;
-        }
-        return $packages;
-    }
 
-    public function conditionQuery(Request $request,$packages){
-        if ($request->input('logistic_number')){
-            $packages=$this->preciseQuery('logistic_number',$request,$packages);
-        }
-        /*        if ($request->input('delivery_number')){
-                    $packages=$this->preciseQuery('delivery_number',$request,$packages);
-                }*/
-        if ($request->input('created_at_start')){
-            $created_at_start=$request->input('created_at_start')." 00:00:00";
-            $packages=$packages->where('created_at','>=',$created_at_start);
-        }
-        if ($request->input('created_at_end')){
-            $created_at_end=$request->input('created_at_end')." 23:59:59";
-            $packages=$packages->where('created_at','<=',$created_at_end);
-        }
-        if ($request->input('owner_id')){
-            $packages=$packages->where('owner_id',$request->input('owner_id'));
-        }
-        if ($request->input('batch_number')){
-            $packages=$this->preciseQuery('batch_number',$request,$packages);
-        }
-        return $packages;
+    public function __construct()
+    {
+        app()->singleton('packageService',PackageService::class);
     }
 
     /**
      * Display a listing of the resource.
-     *
-     * @return Response
+     * @param Request $request
+     * @param OwnerService $ownerService
+     * @return void
      */
-    public function index(Request $request)
+    public function index(Request $request,OwnerService $ownerService)
     {
         if(!Gate::allows('称重管理-查询')){ return redirect(url('/'));  }
-        if ($request->input()){
-            $packages=Package::orderBy('id','DESC');
-            $packages=$this->conditionQuery($request,$packages);
-            $packages=$packages->paginate($request->input('paginate')?$request->input('paginate'):50);
-            $owners=Owner::select('id','name')->get();
-            return view('weight.package.index',['packages'=>$packages,'owners'=>$owners,'request'=>$request->input()]);
-        }
-        $packages=Package::orderBy('id','DESC')->paginate(50);
-        $owners=Owner::select('id','name')->get();
-        return view('weight.package.index',['packages'=>$packages,'owners'=>$owners]);
+        $packages = app('packageService')->paginate($request);
+        return view('weight.package.index',['packages'=>$packages,'owners'=>$ownerService->selectGet(),'request'=>$request->input()]);
     }
 
     /**
      * Show the form for creating a new resource.
      *
-     * @return Response
+     * @return void
      */
     public function create()
     {
@@ -104,7 +55,7 @@ class PackageController extends Controller
      * Store a newly created resource in storage.
      *
      * @param Request $request
-     * @return Application|RedirectResponse|Redirector
+     * @return void
      */
     public function store(Request $request)
     {
@@ -247,65 +198,16 @@ class PackageController extends Controller
         return $logistics;
     }
 
-    /**
-     * Display the specified resource.
-     *
-     * @param Package $packages
-     * @return Response
-     */
-    public function show(Package $packages)
-    {
-        //
-    }
-
-    /**
-     * Show the form for editing the specified resource.
-     *
-     * @param Package $packages
-     * @return Response
-     */
-    public function edit(Package $packages)
-    {
-        //
-    }
-
-    /**
-     * Update the specified resource in storage.
-     *
-     * @param Request $request
-     * @param Package $packages
-     * @return Response
-     */
-    public function update(Request $request, Package $packages)
-    {
-        //
-    }
-
-    /**
-     * Remove the specified resource from storage.
-     *
-     * @param Package $packages
-     * @return Response
-     */
-    public function destroy(Package $packages)
-    {
-        //
-    }
-
-    public function export($id,Request $request){
+    public function export(Request $request){
         if(!Gate::allows('称重管理-查询')){ return '没有权限';  }
-        ini_set('max_execution_time',5500);
-        ini_set('memory_limit','5526M');
-        if ($id==-1){
-            $id=[];
-            $packages=Package::select('id');
-            $packages=$this->conditionQuery($request,$packages);
-            $packages=$packages->get();
-            foreach ($packages as $package){
-                array_push($id,$package->id);
-            }
-        }else $id = explode( ',',$id);
-        if (!$id)return ;
+        ini_set('max_execution_time',3500);
+        ini_set('memory_limit','3526M');
+        if ($request->checkAllSign){
+            $request->offsetUnset('checkAllSign');
+            $packages = app('packageService')->get($request);
+        }else{
+            $packages=app('packageService')->some($request);
+        }
         $row=[[
             'id'=>'ID',
             'owner_name'=>'货主',
@@ -327,8 +229,8 @@ class PackageController extends Controller
             'status'=>'状态',
         ]];
         $list=[];
-        for ($i=0; $i<count($id);$i++){
-            $package=Package::find($id[$i]);
+        for ($i=0; $i<count($packages);$i++){
+            $package=$packages[$i];
             $w=[
                 'id'=>isset($package->id)?$package->id:'',
                 'owner_name'=>isset($package->owner_name)?$package->owner_name:'',

+ 64 - 93
app/Http/Controllers/ProcessController.php

@@ -13,120 +13,43 @@ use App\ProcessDailyParticipant;
 use App\ProcessesContent;
 use App\ProcessMethod;
 use App\ProcessStatistic;
+use App\Services\OwnerService;
+use App\Services\ProcessService;
 use App\Sign;
 use App\Tutorial;
 use App\UserDetail;
 use App\UserDutyCheck;
 use App\UserLabor;
 use Carbon\Carbon;
-use Illuminate\Database\Eloquent\Builder;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\DB;
 use Illuminate\Support\Facades\Gate;
 use Illuminate\Support\Facades\Validator;
 use Maatwebsite\Excel\Facades\Excel;
-use PDO;
 use Ramsey\Uuid\Uuid;
 
 class ProcessController extends Controller
 {
-    private function conditionQuery(Request $request,$processes){
-        if(!Gate::allows('二次加工管理-查询')){ return redirect(url('/'));  }
-        $today=Carbon::now()->subDays(15)->format('Y-m-d');;
-        if ($request->input('commodity_barcode')){
-            $barcode=$request->input('commodity_barcode');
-            $processesTem=clone $processes;
-            $processesTem=$processesTem->whereHas('processesContents',function ($query)use($barcode){
-                $query->whereHas('commodity',function ($builder)use($barcode){
-                    $builder->whereHas('barcodes',function ($builder)use($barcode){
-                        $builder->where('code','like',$barcode.'%');
-                    });
-                });
-            })->where('created_at','>=',$today);
-            if ($processesTem->count()>0)$processes=$processesTem;
-            else{
-                $processes=$processes->whereHas('processesContents',function ($query)use($barcode){
-                    $query->whereHas('commodity',function ($builder)use($barcode){
-                        $builder->whereHas('barcodes',function ($builder)use($barcode){
-                            $builder->where('code',$barcode);
-                        });
-                    });
-                });
-            }
-        }
-        if ($request->input('date_start')){
-            $date_start=$request->input('date_start')." 00:00:00";
-            $processes=$processes->where('created_at','>=',$date_start);
-        }
-        if ($request->input('date_end')){
-            $date_end=$request->input('date_end')." 23:59:59";
-            $processes=$processes->where('created_at','<=',$date_end);
-        }
-        if ($request->input('owner_id')){
-            $processes=$processes->where('owner_id',$request->input('owner_id'));
-        }
-        if ($request->input('status')){
-            $processes=$processes->where('status',$request->input('status'));
-        }
-        if ($request->input('code')){
-            $processes=$processes->where('code','like',$request->input('code')."%");
-        }
-        if ($request->input('wms_code')){
-            $processesTem=clone $processes;
-            $wms_code=$request->input('wms_code');
-            $processesTem=$processesTem->whereHas('processesContents',function ($builder)use ($wms_code,$today){
-                $builder->where('wms_code','like','%'.$wms_code.'%');
-            })->where('created_at','>=',$today);
-            if ($processesTem->count()>0)$processes=$processesTem;
-            else{
-                $processes=$processes->whereHas('processesContents',function ($builder)use ($wms_code,$today){
-                    $builder->where('wms_code',$wms_code);
-                });
-            }
-        }
-        if (!$request->is_accomplish)$processes=$processes->where('status','!=','交接完成');
-        $processes=$processes->paginate($request->input('paginate')??50);
-        return $processes;
+    public function __construct()
+    {
+        app()->singleton('processService',ProcessService::class);
     }
 
     /**
      * Display a listing of the resource.
      * @param Request $request
-     * @return \Illuminate\Http\Response
+     * @param OwnerService $ownerService
+     * @return void
      */
-    public function index(Request $request)
+    public function index(Request $request,OwnerService $ownerService)
     {
         if(!Gate::allows('二次加工管理-查询')){ return redirect(url('/'));  }
-        $processes=Process::filterAuthorities()->with(['tutorials','signs','processesContents'=>function($query){
-            return $query->with(['commodity'=>function($query){
-                return $query->with('barcodes');
-            }]);
-        }])->orderBy('processes.id','DESC');
-        if ($request->input('checkSign')){
-            $excel=$this->isExport($request,$processes);
-            return $excel;
-        }
-        $processes=$this->conditionQuery($request,$processes);
-        $owners=Owner::filterAuthorities()->select('id','name')->get();
+        $processes = app('processService')->paginate($request);
+        $owners=$ownerService->selectGet();
         return view('process.index',['processes'=>$processes,'owners'=>$owners,'request'=>$request->input()]);
     }
 
-
-    //获取导出数据
-    public function isExport(Request $request,$processes){
-        if(!Gate::allows('二次加工管理-查询')){ return redirect(url('/'));  }
-        if ($request->input('checkSign')=="-1"){
-            $processes=$this->conditionQuery($request,$processes);
-            $excel=$this->export($processes);
-            return $excel;
-        }
-        $id = explode( ',',$request->input('checkSign'));
-        $processes=$processes->whereIn('id',$id)->get();
-        $excel=$this->export($processes);
-        return $excel;
-    }
-
     //获取每日参与人
     public function getDailyParticipant(Request $request){
         if(!Gate::allows('二次加工管理-登记工时')){ return redirect(url('/'));  }
@@ -898,7 +821,7 @@ class ProcessController extends Controller
 
     //修改二次加工单每日单的起始日期
     public function updateStartDate(Request $request){
-        $start_date=$request->start_date;
+        $start_date=$request->date;
         $process_id=$request->process_id;
         if (!$start_date || !$process_id)return ['success'=>false,'data'=>'起始日期为空或单据已不存在!'];
         $processDailiesId=[];
@@ -932,6 +855,40 @@ class ProcessController extends Controller
         $this->log(__METHOD__,"修改二次加工单加工日记录_".__FUNCTION__,json_encode($request),Auth::user()['id']);
         return ['success'=>true,'data'=>$processDailies];
     }
+
+    //修改二次加工单终止日期
+    public function updateEndDate(Request $request){
+        $end_date=$request->date;
+        $process_id=$request->process_id;
+        if (!$end_date || !$process_id)return ['success'=>false,'data'=>'终止日期为空或单据已不存在!'];
+        $processDailiesId=[];
+        $processDailies=ProcessDaily::where('process_id',$process_id)->orderBy('date','DESC')->get();
+        foreach ($processDailies as $processDaily){
+            if (Carbon::parse($processDaily->date)->gt(Carbon::parse($end_date))){
+                array_push($processDailiesId,$processDaily->id);
+                unset($processDaily);
+            }
+        }
+        ProcessDaily::destroy($processDailiesId);
+        ProcessDailyParticipant::whereIn('process_daily_id',$processDailiesId)->delete();
+        $this->createDeficiencyData($processDailies,$end_date);
+        $processDailies=ProcessDaily::with('processDailyParticipants')->where('process_id',$process_id)
+            ->orderBy('date','DESC')->get();
+        $this->createAutomaticSupplement($process_id);
+        $this->log(__METHOD__,"修改二次加工单加工日记录_".__FUNCTION__,json_encode($request),Auth::user()['id']);
+        return ['success'=>true,'data'=>$processDailies];
+    }
+
+    //增加填充标记
+    private function createAutomaticSupplement($process_id){
+        Sign::create([
+            'signable_type'=>'processes',
+            'signable_id'=>$process_id,
+            'field'=>'automatic_supplement',
+            'mark'=>"停止自动补充每日记录单"
+        ]);
+    }
+
     //删除临时工工作记录
     public function destroyDailyParticipant($id){
         if (ProcessDailyParticipant::destroy($id)) return ['success'=>true];
@@ -997,9 +954,14 @@ class ProcessController extends Controller
         return ['success'=>true,'data'=>$processContents];
     }
 
-    //执行
-    public function export($processes){
+
+    //导出
+    public function export(Request $request){
         if(!Gate::allows('二次加工管理-查询')){ return '没有权限';  }
+        if ($request->checkAllSign){
+            $request->offsetUnset('checkAllSign');
+            $processes = app('processService')->get($request);
+        }else $processes = app('processService')->some($request);
         $row=[[
             'id'=>'ID',
             'code'=>'任务号',
@@ -1019,16 +981,22 @@ class ProcessController extends Controller
         ]];
         $list=[];
         $i=0;
+        $mergeCell=[];
         foreach ($processes as $process){
-            if (!$process->processesContents){
+            if (count($process->processesContents)<1){
                 $w=[
                     'id'=>$process->id,
                     'code'=>$process->code ,
                     'owner_name'=>$process->owner_name ,
+                    'bill_type'=>'' ,
+                    'wms_code'=>'' ,
                     'process_method_name'=>$process->process_method_name,
                     'amount'=>$process->amount,
+                    'thisAmount'=>'',
                     'unit_price'=>$process->unit_price,
                     'created_at'=>$process->created_at ,
+                    'commodity_name'=>'',
+                    'commodity_barcode'=>'',
                     'completed_amount'=>$process->completed_amount,
                     'status'=>$process->status,
                     'remark'=>$process->remark,
@@ -1037,11 +1005,12 @@ class ProcessController extends Controller
                 $i++;
                 continue;
             }
+            $sign=$i+2;
             foreach($process->processesContents as $processesContent){
                 $barcodes="";
                 if ($processesContent->commodity && $processesContent->commodity->barcodes){
                     foreach ($processesContent->commodity->barcodes as $barcode){
-                        if (!$barcodes){$barcodes=$barcode->code; continue;}
+                        if (!$barcodes){$barcodes=$barcode->code;  continue;}
                         $barcodes=$barcodes.",".$barcode->code;
                     }
                 }
@@ -1065,8 +1034,10 @@ class ProcessController extends Controller
                 $list[$i]=$w;
                 $i++;
             }
+            $mergeCell[$sign] = $i+1;
         }
-        return Excel::download(new Export($row,$list),date('YmdHis', time()).'-二次加工单.xlsx');
+        $columnName=["A","B","C","D","E","F","G","H","I","J"];
+        return Excel::download(new Export($row,$list,$mergeCell,$columnName),date('YmdHis', time()).'-二次加工单.xlsx');
     }
 
     public function validatorProcessContent(array $processContent){

+ 2 - 9
app/Http/Controllers/RejectedController.php

@@ -3,9 +3,7 @@
 namespace App\Http\Controllers;
 
 use App\Exports\DefaultExport;
-use App\Exports\Export;
 use App\Exports\RejectedExport;
-use App\Imports\CommodityImport;
 use App\Imports\RejectedImport;
 use App\Logistic;
 use App\Owner;
@@ -13,28 +11,23 @@ use App\QualityLabel;
 use App\Rejected;
 use App\RejectedAnalyzeOwner;
 use App\RejectedBill;
-use App\RejectedBillItem;
 use Carbon\Carbon;
 use Exception;
-use Illuminate\Contracts\View\Factory;
-use Illuminate\Http\RedirectResponse;
 use Illuminate\Http\Request;
 use Illuminate\Http\Response;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\Gate;
 use Illuminate\Support\Facades\Session;
 use Illuminate\Support\Facades\Validator;
-use Illuminate\View\View;
 use Maatwebsite\Excel\Facades\Excel;
-use phpDocumentor\Reflection\Types\Array_;
 use function foo\func;
 
 class RejectedController extends Controller
 {
     /**
      * Display a listing of the resource.
-     *
-     * @return \Illuminate\Contracts\Foundation\Application|Factory|View
+     * @param Request $request
+     * @return void
      */
     public function index(Request $request)
     {

+ 83 - 29
app/Http/Controllers/TestController.php

@@ -18,11 +18,11 @@ use App\OracleDOCWaveHeader;
 use App\OracleIdxAsrsReceive;
 use App\Order;
 use App\Package;
+use App\Process;
 use App\ProcessStatistic;
 use App\Rejected;
 use App\RejectedBill;
 use App\RejectedBillItem;
-use App\Tutorial;
 use App\Unit;
 use App\UploadFile;
 use App\User;
@@ -31,11 +31,12 @@ use App\Waybill;
 use App\OraccleBasCustomer;
 use App\WMSReflectReceive;
 use Carbon\Carbon;
+use function Couchbase\zlibCompress;
+use function Couchbase\zlibDecompress;
 use Endroid\QrCode\Response\QrCodeResponse;
+use Illuminate\Database\Eloquent\Builder;
 use Illuminate\Http\Request;
-use Illuminate\Support\Arr;
 use Illuminate\Support\Facades\DB;
-use Ramsey\Uuid\Uuid;
 use function PHPSTORM_META\map;
 use Zttp\Zttp;
 
@@ -125,10 +126,31 @@ class TestController extends Controller
     }
     function t1(Request $request)
     {
-        $package=Package::first();
-        $package->length=31;
-        $package->save();
-        dd($package);
+        {
+            $username=config('database.connections.oracle.username');
+            $password=config('database.connections.oracle.password');
+            $host=config('database.connections.oracle.host');
+            $service_name=config('database.connections.oracle.service_name');
+            $conn=oci_connect($username,$password,$host.'/'.$service_name); //连接oracle数据库
+            $IN_WarehouseID='';
+            $IN_TraceID='' ;
+            $IN_WavenNo='';
+            $IN_UserID='';
+            $IN_Language='';
+            $OUT_Return_Code='';
+            $sql_sp="begin SPCUS_EDI_WCS001(:IN_WarehouseID,:IN_Process_Action_C,:IN_Process_By_C,
+        :IN_WaveNO_C,:IN_OrderNO_C,:IN_OrderLineNO_C,:IN_AllocationDetailsID,:IN_Language,:IN_UserID,:OUT_Return_Code); end;";
+            $stmt = oci_parse($conn, $sql_sp);
+            oci_bind_by_name($stmt,':IN_Warehouse',$IN_WarehouseID);
+            oci_bind_by_name($stmt,':IN_TraceID',$IN_TraceID);
+            oci_bind_by_name($stmt,':IN_WavenNo',$IN_WavenNo);
+            oci_bind_by_name($stmt,':IN_Language',$IN_Language);
+            oci_bind_by_name($stmt,':IN_UserID',$IN_UserID);
+            oci_bind_by_name($stmt,':OUT_Return_Code',$OUT_Return_Code);
+            return oci_execute($stmt);
+
+        }
+
 
     }
 
@@ -175,20 +197,27 @@ class TestController extends Controller
 
     public function delme()
     {
-        $package=new Package([
-            'logistic_number'=>'546683955954',
-            'delivery_number'=>'546683955954',
-            'measuring_machine_id'=>'mm',
-            'weight'=>12,
-            'length'=>33,
-            'width'=>22,
-            'height'=>11,
-            'weighed_at'=>now(),
-            'status'=>"无",
-        ]);
-        $package->fetchAllFromOracle();
-        dd($package->toJson());
-        $package->fetchPaperBox();
+
+
+        $fields = [
+            'doc_order_header.userdefine1',
+            'doc_order_header.userdefine2',
+            'doc_order_header.SOReference5',
+            'doc_order_header.waveno',
+            'doc_order_header.orderno',
+            'doc_order_header.customerid',
+            'doc_order_header.Consigneename'
+        ];
+        if(''){
+            $resultOracleObj=OracleDOCOrderHeader::select($fields)->where('orderno','SO200603004708');
+        }else{
+            $resultOracleObj=OracleActAllocationDetails::select($fields);
+            $resultOracleObj->where('picktotraceid','546152742096');
+            $resultOracleObj->leftJoin('DOC_Order_Header','act_allocation_details.orderno','doc_order_header.orderno');
+        }
+        $_temOracleInfo=$resultOracleObj->first();
+
+        dd($_temOracleInfo);
     }
     public function excelIt()
     {
@@ -263,14 +292,39 @@ class TestController extends Controller
     /*1*/
     function test()
     {/**/
-        $unit=Tutorial::create([
-            'owner_id'=>2,
-            'name' => 'zzdndp',
-            'type'=> '二次加工'
-        ]);
-        $unit->load('owner');
-        dd($unit->owner);
-
+        $token_decode = base64_decode('eJxtkm9LwzAQh79LYL4KbZKmbVoYUp1IBRHnHKiMkXWlltk%2FtJlMht%2Fdy7qdCntRePK79LlLyJ506ZrEnLGQMUo%2B847EhDvMCQglpoeKH%2FlKRB6XoZCUZJh58IvknFOy6uYTEr9xoRj1Q7WwyRSCIQkFW9ABAwUIFiHtnhS2kHdj2j523VYXudPmZd%2FUhVPlpdnq2smaym0%2F9NdKZ5vXJ7es1%2Fnu0ujV2BvdiJFio%2Bj6wqz7ZttludHFuF%2B2mSmrpS6bqi%2FgAAT6VDPbh%2FuKwgcZDH%2BigP2j6EAcSVDID%2BQhSSQfKUAKkdSZLDhj%2BTXbbvw0y0B20iMppBApQPKRJBL6fI6EZok%2BiVPJ4URwZZvDle3p1cPkxa713yukCWwWHPTQ1nIgQMsknaRzq%2BGS0Sg6riKwq6EEHmM91ncPjwyqfVnUQPndbvZcpElyWyTTx%2FGYfP8AP%2B2XLw%3D%3D');
+        $result = ($token_decode);
+        dd($result);
+        $cookieFile = dirname(__FILE__).'';
+        $loginUrl = '';
+        $url = '';
+        $data=array(
+            'email'=>'',
+            'password'=>''
+        );
+        $ch=curl_init();
+        curl_setopt($ch,CURLOPT_URL,$loginUrl);
+        curl_setopt($ch,CURLOPT_POST,true);
+        curl_setopt($ch,CURLOPT_HEADER,0);
+        curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
+        curl_setopt($ch,CURLOPT_COOKIEJAR,$cookieFile);
+        curl_setopt($ch, CURLOPT_COOKIEFILE, $cookieFile);
+        curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
+        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
+        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
+        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
+        $ret = curl_exec($ch);var_dump($ret);
+        curl_close($ch);
+        $ch=curl_init();
+        curl_setopt($ch,CURLOPT_URL,$url);
+        curl_setopt($ch,CURLOPT_HEADER,0);
+        curl_setopt($ch,CURLOPT_COOKIEFILE,$cookieFile);
+        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
+        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
+        curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);var_dump(curl_error($ch));
+        $ret=curl_exec($ch);var_dump(curl_error($ch));
+        curl_close($ch);
+        dd($ret);
     }
 
 }

+ 37 - 125
app/Http/Controllers/WaybillsController.php

@@ -3,6 +3,9 @@
 namespace App\Http\Controllers;
 
 
+use App\Services\CarrierService;
+use App\Services\OwnerService;
+use App\Services\WaybillService;
 use App\UploadFile;
 use App\WaybillAuditLog;
 use App\WaybillOnTop;
@@ -29,108 +32,37 @@ use Ramsey\Uuid\Uuid;
 
 class WaybillsController extends Controller
 {
-    //超15天精确查询抽离 column前提:数据库字段名必须与request内字段名一致
-    public function preciseQuery(string $column,Request $request,$waybills){
-        $today=Carbon::now()->subDays(15);
-        $waybillsTem=clone $waybills;
-        $waybillsTem=$waybillsTem->where($column,'like','%'.$request->input($column).'%')->where('waybills.created_at','>',$today->format('Y-m-d'));
-        if($waybillsTem->count()==0
-            ||$waybillsTem->get()[0][$column]==$request->input($column)){
-            $waybills=$waybills->where($column,$request->input($column));
-        }else{
-            $waybills=$waybillsTem;
-        }
-        return $waybills;
-    }
-
-    public function conditionQuery(Request $request,$waybills){
-        if ($request->input('exportType')&&$request->input('exportType')==1){
-            $checkData=explode(',',$request->input('checkData'));
-            $waybills=$waybills->whereIn("id",$checkData)->get();
-            $excel=$this->deliveringExport($waybills);
-            return $excel;
-        }
-        if ($request->input('waybill_number')){
-            $waybills=$this->preciseQuery("waybill_number",$request,$waybills);
-        }
-        if ($request->input('carrier_bill')){
-            $waybills=$this->preciseQuery("carrier_bill",$request,$waybills);
-        }
-        if ($request->input('carrier_id')){
-            $waybills=$waybills->where('carrier_id','=',$request->input('carrier_id'));
-        }
-        if ($request->input('owners')){
-            $owners=array_values(json_decode($request->input('owners'),true));
-            if (count($owners)>0)$waybills=$waybills->whereIn('owner_id',$owners);
-        }
-        if ($request->input('owner_id')){
-            $waybills=$waybills->where('owner_id','=',$request->input('owner_id'));
-        }
-        if ($request->input('wms_bill_number')){
-            $waybills=$this->preciseQuery("wms_bill_number",$request,$waybills);
-        }
-        if ($request->input('origination')){
-            $waybills=$this->preciseQuery("origination",$request,$waybills);
-        }
-        if ($request->input('destination')){
-            $waybills=$this->preciseQuery("destination",$request,$waybills);
-        }
-        if ($request->input('created_at_start')){
-            $created_at_start=$request->input('created_at_start')." 00:00:00";
-            $waybills=$waybills->where('waybills.created_at','>=',$created_at_start);
-        }
-        if ($request->input('created_at_end')){
-            $created_at_end=$request->input('created_at_end')." 23:59:59";
-            $waybills=$waybills->where('waybills.created_at','<=',$created_at_end);
-        }
-        if ($request->input('status')){
-            $waybills=$waybills->where('status',$request->input('status'));
-        }
-        if ($request->input('exportType')&&$request->input('exportType')==2){
-            $waybills=$waybills->get();
-            $excel=$this->deliveringExport($waybills);
-            return $excel;
-        }
-        if ($request->uriType=='ZF')$waybills=$waybills->where('type','直发车');
-        if ($request->uriType=='ZX')$waybills=$waybills->where('type','专线');
-        return $waybills;
+    public function __construct()
+    {
+        app()->singleton('waybillService',WaybillService::class);
     }
 
-    public function index(Request $request)
+    /**
+     * @param Request $request
+     * @param OwnerService $ownerService
+     * @param CarrierService $carrierService
+     * @return void
+     */
+    public function index(Request $request,OwnerService $ownerService,CarrierService $carrierService)
     {
         if(!Gate::allows('运输管理-查询')){ return redirect(url('/'));  }
-        $data=$request->input();
-        $carries = Carrier::get();
-        $owners = Owner::filterAuthorities()->get();
-        $ownerIds = $owners->map(function ($owner){
-            return $owner['id'];
-        })->all();
-        $waybills = $this->getWaybills();
-        $waybills=$waybills->whereIn('owner_id',$ownerIds);
-        if ($data != null ) {
-            $waybills=$this->conditionQuery($request,$waybills);
-            if (!$waybills&&$request->input('waybill_number')){
-                $waybills=Waybill::with(['owner', 'waybillAuditLogs' => function ($query) {
-                    return $query->with('user');
-                }])->orderBy('id','DESC')->where('type','专线')
-                    ->where('waybill_number',$request->input('waybill_number'));
-            }
-            $waybills=$waybills->paginate($request->input('paginate')?$request->input('paginate'):50);
-        } else {
-            $waybills = $waybills->paginate(50);
-        }
-        return view('waybill.index', ['waybills' => $waybills, 'carriers' => $carries, 'owners' => $owners,'filterData'=>$data,'uriType'=>$request->uriType??'']);
+        $waybills=app('waybillService')->paginate($request);
+        return view('waybill.index', [
+            'waybills' => $waybills,
+            'carriers' => $carrierService->selectGet(),
+            'owners' => $ownerService->selectGet(),
+            'request'=>$request->input(),
+            'uriType'=>$request->uriType??'']);
     }
 
 
-    public function create(Request $request)
+    public function create(Request $request,OwnerService $ownerService)
     {
         if(!Gate::allows('运输管理-录入')){ return redirect(url('/'));  }
-        $owners=Owner::get();
         $type="";
         if ($request->type==='ZF')$type='直发车';
         if ($request->type==='ZX')$type='专线';
-        return view('waybill.create',['owners'=>$owners,'type'=>$type]);
+        return view('waybill.create',['owners'=>$ownerService->selectGet(),'type'=>$type]);
     }
 
     public function store(Request $request)
@@ -189,16 +121,16 @@ class WaybillsController extends Controller
         if(!Gate::allows('运输管理-调度')){ return redirect(url('/'));  }
         $waybill=Waybill::find($id);
         if (!$request->warehouse_weight && $request->warehouse_weight_unit_id){
-            unset($request->warehouse_weight_unit_id);
+            $request->offsetUnset('warehouse_weight_unit_id');
         }
         if (!$request->warehouse_weight_other && $request->warehouse_weight_unit_id_other){
-            unset($request->warehouse_weight_unit_id_other);
+            $request->offsetUnset('warehouse_weight_unit_id_other');
         }
         if (!$request->carrier_weight && $request->carrier_weight_unit_id){
-            unset($request->carrier_weight_unit_id);
+            $request->offsetUnset('carrier_weight_unit_id');
         }
         if (!$request->carrier_weight_other && $request->carrier_weight_unit_id_other){
-            unset($request->carrier_weight_unit_id_other);
+            $request->offsetUnset('carrier_weight_unit_id_other');
         }
         $this->validatorWaybillDispatch($request,$id)->validate();
         //替换换行符
@@ -619,20 +551,16 @@ class WaybillsController extends Controller
         return ['success'=>true];
     }
 
-    public function waybillExport($id,Request $request){
+    public function export(Request $request){
         if(!Gate::allows('运输管理-查询')){ return '没有权限';  }
         ini_set('max_execution_time',2500);
         ini_set('memory_limit','1526M');
-        $waybills=Waybill::with(['owner', 'waybillAuditLogs' => function ($query) {
-            $query->with('user');
-        }]);
-        if ($id==-1){
-            $waybills=$this->conditionQuery($request,$waybills);
-            $waybills=$waybills->get();
-        }else {
-            $id = explode( ',',$id);
-            $waybills=$waybills->whereIn('id',$id)->get();
-        };
+        if ($request->checkAllSign){
+            $request->offsetUnset('checkAllSign');
+            $waybills = app('waybillService')->get($request);
+        }else{
+            $waybills = app('waybillService')->some($request);
+        }
         $row=[[
             'type'=>'运单类型',
             'owner'=>'货主',
@@ -692,7 +620,7 @@ class WaybillsController extends Controller
                 'warehouse_weight_other'=>isset($waybill->warehouse_weight_other)?$waybill->warehouse_weight_other.' '.(isset($waybill->warehouse_weight_unit_other_name)?$waybill->warehouse_weight_unit_other_name:''):'',
                 'carrier_weight'=>isset($waybill->carrier_weight)?$waybill->carrier_weight.' '.(isset($waybill->carrier_weight_unit_name)?$waybill->carrier_weight_unit_name:''):'',
                 'carrier_weight_other'=>isset($waybill->carrier_weight_other)?$waybill->carrier_weight_other.' '.(isset($waybill->carrier_weight_unit_other_name)?$waybill->carrier_weight_unit_other_name:''):'',
-                'carType'=>isset($waybill->carType->name)?$waybill->carType->name.($waybill->carType->length.'米'):'',
+                'carType'=>isset($waybill->carType->name)?$waybill->carType->name.($waybill->carType->length):'',
                 'car_owner_info'=>isset($waybill->car_owner_info)?$waybill->car_owner_info:'',
                 'amount'=>isset($waybill->amount)?$waybill->amount.' '.(isset($waybill->amount_unit_name)?$waybill->amount_unit_name:''):'',
                 'mileage'=>isset($waybill->mileage)?$waybill->mileage:'',
@@ -757,16 +685,12 @@ class WaybillsController extends Controller
     //发运
     public function delivering(Request $request){
         if (!Auth::user())return view('exception.login');
-        if (Auth::user()->isSuperAdmin())$waybills=Waybill::orderBy('id','DESC');
-        else{
+        $waybills= app('waybillService')->paginate($request);
+        if (!Auth::user()->isSuperAdmin()){
             $carriersUsers=DB::table('carrier_user')->where('user_id',Auth::id())->get();
             $carrierIds=array_column($carriersUsers->toArray(),'carrier_id');
-            $waybills=Waybill::orderBy('id','DESC')->whereIn("carrier_id",$carrierIds);
-        }
-        if ($request->input('exportType')){
-            return $this->conditionQuery($request,$waybills);
+            $waybills=$waybills->whereIn("carrier_id",$carrierIds);
         }
-        $waybills=$this->conditionQuery($request,$waybills);
         return view('waybill.delivering',compact('waybills'));
     }
     //承运商提交
@@ -994,16 +918,4 @@ class WaybillsController extends Controller
         return ['success'=>$result,'status'=>$result];
     }
 
-    // 获取所有运单信息
-    public function getWaybills(){
-        $waybills = Waybill::with(['owner','wmsCommodities','waybillAuditLogs' => function ($query) {
-            return $query->with('user');
-        }])->selectRaw('waybills.* ,waybill_on_tops.id top_id ,waybill_on_tops.remark,waybill_on_tops.updated_at top_update')
-            ->leftJoin('waybill_on_tops','waybill_on_tops.waybill_id','=','waybills.id')
-            ->whereNull('waybill_on_tops.deleted_at')
-            ->orderBy('waybill_on_tops.updated_at','desc')
-            ->orderBy('waybills.id','desc');
-        return $waybills;
-    }
-
 }

+ 55 - 0
app/Jobs/MarkPackageExcepted.php

@@ -0,0 +1,55 @@
+<?php
+
+namespace App\Jobs;
+
+use App\Http\Controllers\Controller;
+use App\Package;
+use Illuminate\Bus\Queueable;
+use Illuminate\Queue\SerializesModels;
+use Illuminate\Queue\InteractsWithQueue;
+use Illuminate\Contracts\Queue\ShouldQueue;
+use Illuminate\Foundation\Bus\Dispatchable;
+
+class MarkPackageExcepted implements ShouldQueue
+{
+    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
+
+
+    protected $package;
+    /**
+     * Create a new job instance.
+     * @param object $package
+     * @return void
+     */
+    public function __construct($package)
+    {
+        $this->package=$package;
+    }
+
+    /**
+     * Execute the job.
+     *
+     * @return void
+     */
+    public function handle()
+    {
+        $controller= new Controller();
+        if (!$this->package){
+            $controller->log(__METHOD__,'error_'.__FUNCTION__,"队列传递的package为空",null);
+            return;
+        }
+        $pickedPackage=Package::where('id',$this->package->id)->first();
+        if(!$pickedPackage){
+            $controller->log(__METHOD__,'error_'.__FUNCTION__,"队列查询的package为空",null);
+            return;
+        }
+        if (!$pickedPackage->delivery_number){
+            $pickedPackage->status="下发异常";
+            $pickedPackage->save();
+        }
+        if (!$pickedPackage->weight){
+            $pickedPackage->status="测量异常";
+            $pickedPackage->save();
+        }
+    }
+}

+ 5 - 1
app/LaborReport.php

@@ -78,8 +78,12 @@ class LaborReport extends Model
     }
     //本轮工作结束时间
     public function getThisRoundOnlineEndTimeAttribute(){
-        $laborReports=LaborReport::where('enter_number',$this['enter_number'])->orderBy('id','asc')->get();
+        $laborReports=LaborReport::where('enter_number',$this['enter_number'])->get();
+//        $maxId=$laborReports->max('id');
         foreach ($laborReports as $laborReport){
+//            if ($laborReport['id']==$maxId&&!$laborReport['exit_at']&&$laborReport['check_out_at']){
+//                return $laborReport['check_out_at'];
+//            }
             if ($laborReport['exit_at']&&$laborReport['check_out_at'])
                 return $laborReport['check_out_at'];
         }

+ 16 - 2
app/Process.php

@@ -17,13 +17,14 @@ class Process extends Model
     protected $appends=[
         'owner_name','process_method_name',
     ];
+
     public static function filterAuthorities(){
         $user=Auth::user();
         if(!$user){
-            return (new static)->newQuery()->where('id','0');
+            return (new static)->newQuery()->where('owner_id','0');
         }
         $ownerIds=$user->getPermittingOwnerIdsAttribute();
-        return (new static)->newQuery()->whereIn('id',$ownerIds);
+        return (new static)->newQuery()->whereIn('owner_id',$ownerIds);
     }
 
     public function owner(){
@@ -54,6 +55,10 @@ class Process extends Model
         return $this->hasOne('App\Sign','signable_id','id')
             ->where('signable_type','processes')->where('field','automatic_supplement');
     }
+    public function signUnitPrice(){
+        return $this->hasOne('App\Sign','signable_id','id')
+            ->where('signable_type','processes')->where('field','update_unit_price_value');
+    }
 
 
     public function getOwnerNameAttribute()
@@ -84,6 +89,15 @@ class Process extends Model
         ]);
     }
 
+    public function createSignUnitPrice($unit_price){
+        return Sign::create([
+            'signable_type'=>'processes',
+            'signable_id'=>$this->id,
+            'field'=>'update_unit_price_value',
+            'mark'=>$unit_price
+        ]);
+    }
+
     public function destroySign(){
         Sign::where('signable_type','processes')->where('signable_id',$this->id)->where('field','unit_price')->delete();
     }

+ 13 - 0
app/Services/CarrierService.php

@@ -0,0 +1,13 @@
+<?php 
+
+namespace App\Services; 
+
+use App\Carrier;
+
+Class CarrierService
+{ 
+    public function selectGet(){
+        return Carrier::query()->select('id','name')->get();
+    }
+
+}

+ 13 - 0
app/Services/OwnerService.php

@@ -0,0 +1,13 @@
+<?php 
+
+namespace App\Services; 
+
+use App\Owner;
+
+Class OwnerService
+{ 
+    public function selectGet(){
+        return Owner::filterAuthorities()->select('id','name')->get();
+    }
+
+}

+ 39 - 0
app/Services/PackageService.php

@@ -0,0 +1,39 @@
+<?php 
+
+namespace App\Services; 
+
+use App\Package;
+use App\Services\common\QueryService;
+use Illuminate\Http\Request;
+
+
+Class PackageService
+{
+    private function conditionQuery(Request $request){
+        $packages = Package::query()->orderBy('id','DESC');
+        $columnQueryRules=[
+            'logistic_number' => ['timeLimit' => 15],
+            'batch_number' => ['timeLimit' => 15],
+            'created_at_start' => ['alias' => 'created_at','startDate' => " 00:00:00"],
+            'created_at_end' => ['alias' => 'created_at','endDate' => " 23:59:59"],
+        ];
+        $packages = app(QueryService::class)->query($request,$packages,$columnQueryRules);
+        return $packages;
+    }
+
+    public function paginate(Request $request){
+        $packages = $this->conditionQuery($request);
+        return $packages->paginate($request->paginate ?? 50);
+    }
+
+    public function get(Request $request){
+        $packages = $this->conditionQuery($request);
+        return $packages->get();
+    }
+
+    public function some(Request $request){
+        return Package::query()->orderBy('id','DESC')
+            ->whereIn('id',explode(',',$request->data))->get();
+    }
+
+}

+ 83 - 0
app/Services/ProcessService.php

@@ -0,0 +1,83 @@
+<?php 
+
+namespace App\Services; 
+
+use App\Process;
+use App\Services\common\QueryService;
+use Carbon\Carbon;
+use Illuminate\Http\Request;
+
+Class ProcessService
+{ 
+    private function conditionQuery(Request $request){
+        $processes=Process::filterAuthorities()->with(['tutorials','signs','processesContents'=>function($query){
+            return $query->with(['commodity'=>function($query){
+                return $query->with('barcodes');
+            }]);
+        }])->orderBy('processes.id','DESC');
+        $today=Carbon::now()->subDays(15)->format('Y-m-d');
+        if ($request->input('commodity_barcode')){
+            $barcode=$request->input('commodity_barcode');
+            $processesTem=clone $processes;
+            $processesTem=$processesTem->whereHas('processesContents',function ($query)use($barcode){
+                $query->whereHas('commodity',function ($builder)use($barcode){
+                    $builder->whereHas('barcodes',function ($builder)use($barcode){
+                        $builder->where('code','like',$barcode.'%');
+                    });
+                });
+            })->where('created_at','>=',$today);
+            if ($processesTem->count()>0)$processes=$processesTem;
+            else{
+                $processes=$processes->whereHas('processesContents',function ($query)use($barcode){
+                    $query->whereHas('commodity',function ($builder)use($barcode){
+                        $builder->whereHas('barcodes',function ($builder)use($barcode){
+                            $builder->where('code',$barcode);
+                        });
+                    });
+                });
+            }
+            $request->offsetUnset('commodity_barcode');
+        }
+        if ($request->input('wms_code')){
+            $processesTem=clone $processes;
+            $wms_code=$request->input('wms_code');
+            $processesTem=$processesTem->whereHas('processesContents',function ($builder)use ($wms_code,$today){
+                $builder->where('wms_code','like','%'.$wms_code.'%');
+            })->where('created_at','>=',$today);
+            if ($processesTem->count()>0)$processes=$processesTem;
+            else{
+                $processes=$processes->whereHas('processesContents',function ($builder)use ($wms_code,$today){
+                    $builder->where('wms_code',$wms_code);
+                });
+            }
+            $request->offsetUnset('wms_code');
+        }
+        if (!$request->is_accomplish){
+            $processes=$processes->where('status','!=','交接完成');
+        }else $request->offsetUnset('is_accomplish');
+        $columnQueryRules=[
+            'date_start' => ['alias' => 'created_at' , 'startDate' => ' 00:00:00'],
+            'date_end' => ['alias' => 'created_at' , 'endDate' => ' 23:59:59'],
+            'code' => ['like' => '']
+        ];
+        $processes = app(QueryService::class)->query($request,$processes,$columnQueryRules);
+        return $processes;
+    }
+
+    public function paginate(Request $request){
+        return $this->conditionQuery($request)->paginate($request->paginate ?? 50);
+    }
+
+    public function get(Request $request){
+        return $this->conditionQuery($request)->get();
+    }
+
+    public function some(Request $request){
+        return Process::filterAuthorities()->with(['processesContents'=>function($query){
+            return $query->with(['commodity'=>function($query){
+                return $query->with('barcodes');
+            }]);
+        }])->orderBy('processes.id','DESC')->whereIn('processes.id',explode(',',$request->data))->get();
+    }
+
+}

+ 53 - 0
app/Services/WaybillService.php

@@ -0,0 +1,53 @@
+<?php 
+
+namespace App\Services; 
+
+use App\Services\common\QueryService;
+use App\Waybill;
+use Illuminate\Http\Request;
+
+Class WaybillService
+{
+    private function conditionQuery(Request $request){
+        $waybills = Waybill::with(['owner','wmsCommodities','waybillAuditLogs' => function ($query) {
+            return $query->with('user');
+        }])->selectRaw('waybills.* ,waybill_on_tops.id top_id ,waybill_on_tops.remark,waybill_on_tops.updated_at top_update')
+            ->leftJoin('waybill_on_tops','waybill_on_tops.waybill_id','=','waybills.id')
+            ->whereNull('waybill_on_tops.deleted_at')
+            ->orderBy('waybill_on_tops.updated_at','desc')
+            ->orderBy('waybills.id','desc');
+        $columnQueryRules=[
+            'waybill_number' => ['timeLimit' => 15],
+            'carrier_bill' => ['timeLimit' => 15],
+            'owner_id' => ['multi' => ','],
+            'wms_bill_number' => ['timeLimit' => 15],
+            'origination' => ['timeLimit' => 15],
+            'destination' => ['timeLimit' => 15],
+            'created_at_start' => ['alias' => 'created_at' , 'startDate' => ' 00:00:00'],
+            'created_at_end' => ['alias' => 'created_at' , 'endDate' => ' 23:59:59'],
+            'uriType' => ['alias' => 'type']
+        ];
+        $waybills = app(QueryService::class)->query($request,$waybills,$columnQueryRules,"waybills");
+        return $waybills;
+    }
+
+    public function paginate(Request $request){
+        $waybills = $this->conditionQuery($request);
+        return $waybills->paginate($request->paginate ?? 50);
+    }
+
+    public function get(Request $request){
+        $waybills = $this->conditionQuery($request);
+        return $waybills->get();
+    }
+
+    public function some(Request $request){
+        return $waybills = Waybill::with(['owner'])->selectRaw('waybills.* ,waybill_on_tops.id top_id ,waybill_on_tops.remark,waybill_on_tops.updated_at top_update')
+            ->leftJoin('waybill_on_tops','waybill_on_tops.waybill_id','=','waybills.id')
+            ->whereNull('waybill_on_tops.deleted_at')
+            ->orderBy('waybill_on_tops.updated_at','desc')
+            ->orderBy('waybills.id','desc')
+            ->whereIn('id',explode(',',$request->data))
+            ->get();
+    }
+}

+ 76 - 0
app/Services/common/QueryService.php

@@ -0,0 +1,76 @@
+<?php 
+
+namespace App\Services\common;
+
+
+use Carbon\Carbon;
+use Illuminate\Http\Request;
+
+Class QueryService
+{
+
+    /**
+     * parameter - query(sql) - special column description
+     *
+     * @param Request $request
+     * @param object $query
+     * @param array $columnQueryRules
+     * @param string $tableName
+     * @return object
+     */
+    public function query(Request $request,$query,array $columnQueryRules,$tableName = null)
+    {
+        if ($tableName) $tableName .= ".";
+        foreach ($request->input() as $param => $value){
+            if ($param === 'paginate' || $param === 'page')continue;
+            if (!$value || isset($columnQueryRules[$param]))continue;
+            $query = $query->where($tableName.$param,$value);
+        }
+        //rules: alias timeLimit startDate endDate like multi
+        foreach ($columnQueryRules as $param => $rules){
+            if (!$request->input($param))continue;
+            $isExecute = true;
+            $column = $param;
+            foreach ($rules as $rule => $value){
+                if ($rule === 'alias'){
+                    $column = $value;
+                    $isExecute = false;
+                }
+                if ($rule === 'timeLimit'){
+                    $today=Carbon::now()->subDays($value);
+                    $queryTemp=clone $query;
+                    $queryTemp=$queryTemp->where($tableName.$column,'like','%'.$request->input($param).'%')
+                        ->where($tableName.'created_at','>',$today);
+                    if($queryTemp->count()==0 || $queryTemp->first()[$column]==$request->input($param)){
+                        $query=$query->where($tableName.$column,$request->input($param));
+                    }else{
+                        $query=$query->where($tableName.$column,'like','%'.$request->input($param).'%')
+                            ->where($tableName.'created_at','>',$today);
+                    }
+                    $isExecute = true;
+                }
+                if ($rule === 'startDate'){
+                    $startDate = $request->input($param).$value;
+                    $query = $query->where($tableName.$column,'>=',$startDate);
+                    $isExecute = true;
+                }
+                if ($rule === 'endDate'){
+                    $endDate = $request->input($param).$value;
+                    $query = $query->where($tableName.$column,'<=',$endDate);
+                    $isExecute = true;
+                }
+                if ($rule === 'like'){
+                    $query = $query->where($tableName.$column,'like',$value.$request->input($param).'%');
+                    $isExecute = true;
+                }
+                if ($rule === 'multi'){
+                    $query = $query->whereIn($tableName.$column,explode($value,$request->input($param)));
+                    $isExecute = true;
+                }
+            }
+            if (!$isExecute) $query = $query->where($tableName.$column,$request->input($param));
+        }
+        return $query;
+    }
+
+}

+ 1 - 1
config/users.php

@@ -3,7 +3,7 @@
 return [
 
 
-    'superAdmin' => ['ldaaww','baoshi56','zhouyaping','shiyao','zhouzhendong','胡浩','zengjun','阿珺',],
+    'superAdmin' => ['ldaaww','baoshi56','周亚萍','shiyao','zhouzhendong','胡浩','zengjun','阿珺',],
     'token_expire_minutes'=>7200,
     'token_check_in_expire_minutes'=>432000, //打卡过期时间,单位为秒
 ];

+ 12 - 1
package-lock.json

@@ -4189,7 +4189,8 @@
         "font-awesome": {
             "version": "4.7.0",
             "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz",
-            "integrity": "sha1-j6jPBBGhoxr9B7BtKQK7n8gVoTM="
+            "integrity": "sha1-j6jPBBGhoxr9B7BtKQK7n8gVoTM=",
+            "dev": true
         },
         "for-in": {
             "version": "1.0.2",
@@ -5454,6 +5455,11 @@
             "integrity": "sha1-17TQjhv9uGrS8aPQOeoXMEcXq7U=",
             "dev": true
         },
+        "jquery.cookie": {
+            "version": "1.4.1",
+            "resolved": "https://registry.npm.taobao.org/jquery.cookie/download/jquery.cookie-1.4.1.tgz",
+            "integrity": "sha1-1j3OIJ6raR/mMxbbCMqeR+D5OFs="
+        },
         "js-cookie": {
             "version": "2.2.1",
             "resolved": "https://registry.npm.taobao.org/js-cookie/download/js-cookie-2.2.1.tgz",
@@ -5799,6 +5805,11 @@
                 "webpack-sources": "^1.1.0"
             }
         },
+        "layer": {
+            "version": "0.1.0",
+            "resolved": "https://registry.npm.taobao.org/layer/download/layer-0.1.0.tgz",
+            "integrity": "sha1-dvirzO7Cfw+vtsUjYndJxrTsihw="
+        },
         "lcid": {
             "version": "2.0.0",
             "resolved": "https://registry.npm.taobao.org/lcid/download/lcid-2.0.0.tgz",

+ 1 - 0
package.json

@@ -25,6 +25,7 @@
     "vue-template-compiler": "^2.6.11"
   },
   "dependencies": {
+    "jquery.cookie": "^1.4.1",
     "js-cookie": "^2.2.1",
     "laravel-echo": "^1.8.0",
     "laravel-echo-server": "^1.6.2",

Разница между файлами не показана из-за своего большого размера
+ 308 - 579
public/js/app.js


BIN
public/sound/ding.mp3


BIN
public/sound/warning_otherBarcode.mp3


+ 25 - 0
resources/js/queryForm/export.js

@@ -0,0 +1,25 @@
+
+function excelExport(checkAllSign,checkData,url,sum,token) {
+    if (checkAllSign) {
+        if (sum > 10000){
+            if (!confirm('导出条数超过一万条,耗时可能过长,您确定继续吗?'))return;
+        }
+        let thisUrl=document.URL;
+        let parameter=thisUrl.split('?',2);
+        url += "?checkAllSign=true";
+        if (parameter[1])url+="&"+parameter[1];
+        location.href=url;
+    }else {
+        if (checkData && checkData.length <= 0) {
+            tempTip.setDuration(4000);
+            tempTip.showSuccess('没有勾选任何记录');
+        } else {
+            let form=$('<form hidden method="post" target="_blank" action="'+url+'">' +
+                '<input name="_token" value="'+token+'">' +
+                '<input name="data" value="'+checkData+'" >' +
+                '</form>');
+            $('body').append(form);
+            form.submit();
+        }
+    }
+}

+ 58 - 45
resources/js/queryForm/queryForm.js

@@ -16,7 +16,6 @@ const query = function getQueryForm(data) {
         this.tip = data.tip || '';
         this.nextPage = nextPage;
         this.pervPage = pervPage;
-        this.goPage =goPage;
         this.getSearchData = getSearchData;
         this.autoSubmit = (data.autoSubmit === false) ? false : true ;
         this.param = data.param || [];
@@ -34,9 +33,9 @@ const query = function getQueryForm(data) {
                 if (["string", "number"].includes(fetchJsType(map.value)) && map.value !== '') {
                     form.append("<input name='" + key + "' value='" + map.value + "'>")
                 } else if ('array' === fetchJsType(map.value)) {
-                    map.value.forEach(function (value) {
-                        form.append("<input type='checkbox' name='" + key + "' value='" + value + "' checked='checked' >");
-                    })
+                    let string = map.value.join(',');
+                    form.append("<input  name='" + key + "' value='" + string + "'>")
+                    console.log("string:"+string);
                 }
             }
             for (let key in this.param){
@@ -530,7 +529,7 @@ const query = function getQueryForm(data) {
             if ([undefined, null, ''].includes(select)) {
                 select = [];
             }
-            let select_data = _data[condition.name].data.filter(function (map) {
+            let select_data = condition.data.filter(function (map) {
                 return map.value.includes(value) || select.includes(map.name);
             })
 
@@ -639,7 +638,7 @@ const query = function getQueryForm(data) {
                 };
                 modifyData(dom);
                 redenerUl(ul);
-                isMultiple(name);
+                isMultiple(ul.attr('name'));
                 _this.onsubmit();
             })
         })
@@ -648,7 +647,10 @@ const query = function getQueryForm(data) {
     function isMultiple(name) {
         let label = $('#' + name + '_lab');
         let select = $('#' + name + '_sel');
-        let dom_data = _data[name].value;
+        let dom_data = _data[name].data;
+        console.log(_data[name],_data);
+        console.log(dom_data);
+        console.log(name);
 
         if (dom_data.length === 1 ) {
             select.show();
@@ -843,7 +845,7 @@ const query = function getQueryForm(data) {
                     $(dom).removeClass('active');
                 }
             })
-            isMultiple(name);
+            isMultiple(ul.attr('name'));
         }
     }
 
@@ -935,7 +937,8 @@ const query = function getQueryForm(data) {
                         type: condition.type,
                         value: condition.value,
                         select: condition.select,
-                        mold: ['input', 'dataTime'].includes(condition.type) ? 'input' : condition.type
+                        mold: ['input', 'dataTime'].includes(condition.type) ? 'input' : condition.type,
+                        data:condition.data
                     }
                     if (condition.type === 'search_select') {
                         data.mold = 'select';
@@ -1085,7 +1088,9 @@ const query = function getQueryForm(data) {
                     }
                 } else if (key === 'page') {
                     _page = data[key];
-                } else {
+                }  else if(_data[key].type === 'select_multiple_select' && !data[key]){
+                    _data[key].value = data[key].split(',');
+                }else {
                     _data[key].value = data[key];
                 }
                 // console.log('key', key, typeof key);
@@ -1132,24 +1137,18 @@ const query = function getQueryForm(data) {
     //  paginate
     function pervPage() {
         let obj = getSearchData();
-        _page = getPage();
-        if(!obj['paginate']){
-            obj['paginate'] = 50;
-        }
-        if(Number(_page)>1){
-            _page= Number(_page)-1;
-        }else{
-            _page = 1;
+        if(!!obj['page'] && obj['page']>1){
+            obj['page'] = obj['page']-1;
         }
         return getSearchUri(obj);
     }
 
     function nextPage() {
         let obj = getSearchData();
-        _page = getPage();
-        if(!_page){_page=1;}
-        if(_page){
-            _page = Number(_page)+ 1;
+        if(!!obj['page'] ){
+            obj['page'] = obj['page']+1;
+        }else{
+            obj['page'] = 2;
         }
         if(!obj['paginate']){
             obj['paginate'] = 50;
@@ -1157,12 +1156,6 @@ const query = function getQueryForm(data) {
         return getSearchUri(obj);
     }
 
-    function goPage(page){
-        let obj = getSearchData();
-        _page = page;
-        return getSearchUri(obj);
-    }
-
     function getSearchObj() {
         let data = window.location.search;
         data = decodeURIComponent(data);
@@ -1172,7 +1165,7 @@ const query = function getQueryForm(data) {
         let saveData = {};
         data = data.substr(1).split('&');
         data.forEach(function (map) {
-            let arr = map.split('='),key = arr[0],value = arr[1];
+            let arr = map.split('&'),key = arr[0],value = arr[1];
             if(!!value){
                 if (!saveData[key]) {
                     saveData[key] = value;
@@ -1189,21 +1182,44 @@ const query = function getQueryForm(data) {
     }
 
     function getPage(){
-       return  getSearchObj()['page'];
+        return  getSearchObj()['page'];
+    }
+    //  paginate
+    function pervPage() {
+        let obj = getSearchData();
+        _page = getPage();
+        if(!obj['paginate']){
+            obj['paginate'] = 50;
+        }
+        if(Number(_page)>1){
+            _page= Number(_page)-1;
+        }else{
+            _page = 1;
+        }
+        return getSearchUri(obj);
+    }
+
+    function nextPage() {
+        let obj = getSearchData();
+        _page = getPage();
+        if(!_page){_page=1;}
+        if(_page){
+            _page = Number(_page)+ 1;
+        }
+        if(!obj['paginate']){
+            obj['paginate'] = 50;
+        }
+        return getSearchUri(obj);
+    }
+
+    function goPage(page){
+        let obj = getSearchData();
+        _page = page;
+        return getSearchUri(obj);
     }
 
     function getSearchUri(obj){
         let string = "?";
-        let param = _this.param;
-        for (const key in param) {
-            if(controlJsType(param[key],['string','number'])){
-                string+= key + "=" + param[key]+'&';
-            }else if( controlJsType(param[key],'array')&&param[key].length > 0){
-                param[key].forEach(function(value){
-                    string+=key + "=" + value+'&';
-                })
-            }
-        }
         for (const key in obj) {
             if(controlJsType(obj[key],['string','number'])){
                 string+= key + "=" + obj[key]+'&';
@@ -1213,10 +1229,7 @@ const query = function getQueryForm(data) {
                 })
             }
         }
-        if(_page){
-            string+='page='+_page;
-        }
-        return window.location.pathname +string;
+        return string;
     }
 
-};
+};

+ 49 - 0
resources/js/queryForm/queryForm说明.txt

@@ -0,0 +1,49 @@
+let data = [
+                    [
+                        {name:'codename_c',type:'select',placeholder:'订单状态',data:[
+                            @foreach($codes as $code)
+                            {name:'{{$code->code}}',value:'{{$code->codename_c}}'},
+                            @endforeach
+                            ]},
+                        {name:'orderdate_start',type:'time',tip:['选择显示日期的起始时间','选择显示日期的起始时间']},
+                        {name:'orderno',type:'input',tip:'编号,糊模查找需要在左边打上%符号',placeholder: '编号'},
+                        {name:'carriername',type:'input',tip:'',placeholder:'承运人'},
+                        {name:['notes','addtime'],type:'input_select',tip:['右侧选择查询范围,默认为一天内','查询范围,范围越短搜索越快'],placeholder: ['客户',''],
+                                data:[{name:'31',value:'近一月'},{name:'92',value:'近三月'},{name:'183',value:'近半年'},{name:'366',value:'近一年'},{name:'0',value:'不限'},]},
+                        {name:'issuepartyname',type:'input',tip:'',placeholder: '店铺名称'},
+                        {name:'edisendflag2',type:'select',tip:'快递获取标记',placeholder: '快递获取标记',data:[{name:'Y',value:'是'},{name:'N',value:'否'},{name:'W',value:'错误'},]}
+                    ],
+                    [
+                        {name:'customerid',type:'select_multiple_select',tip:['输入关键词快速定位下拉列表,回车确定','选择要显示的客户'],placeholder:['货主','定位或多选货主'],data:[
+                                @foreach($customers as $customer)
+                                { name:'{{$customer->customerid}}',value:'{{$customer->descr_c}}' },
+                                @endforeach
+                            ]},
+                        {name:'ordertime_end',type:'time',tip:['选择显示指定日期的结束时间','选择显示指定日期的结束时间']},
+                        {name:'soreference5',type:'input',tip:'可支持多快递单号,糊模查找需要在左边打上%符号',placeholder: '多快递单号'},
+                        {name:'soreference1',type:'input',tip:'客户订单号,糊模查找需要在左边打上%符号',placeholder: '客户订单号'},
+                        {name:'waveno',type:'input',tip:'波次编号,模糊查找需要在左边打上%的符号',placeholder: '波次编号'},
+                        {name:'alternate_sku1',type:'input',tip:'产品条码,模糊查找需要在左边打上%的符号',placeholder: '产品条码'},
+                    ],
+                ];
+                let _this = this;
+                _this.form = new queryform({
+                    el:'#form_div',
+                    condition:data,
+                })
+                _this.form.init();
+
+父元素   el
+需要渲染的二维数组 condition
+初始化	init()
+
+input,select,dataTime
+
+condition:{
+	name:
+	type:
+	data:
+	tip:
+	placeholder:
+}
+

+ 0 - 1
resources/js/singles/rejectedIndex.js

@@ -1,4 +1,3 @@
-
 let vueList=new Vue({
     el:"#list",
     data:{

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

@@ -10,7 +10,7 @@
     <title>@yield('title') {{ config('app.name', '宝时WAS') }}</title>
     @yield('head')
     <!-- Styles -->
-    <link href="{{ asset('css/app200708.css') }}" rel="stylesheet">
+    <link href="{{ asset('css/app200721.css') }}" rel="stylesheet">
 </head>
 <body>
 <div id="app">

+ 69 - 219
resources/views/order/index/delivering.blade.php

@@ -5,123 +5,20 @@
     <div class="container-fluid">
         <div style="min-width: 4070px;">
             <div id="list" class="d-none">
-                <form method="GET" action="{{url('order/index/delivering')}}" id="form">
-                    <table class="table  table-sm table-bordered text-nowrap  mb-0 ml-3">
-                        <tr v-if="isBeingFilterConditions">
-                            <td colspan="10">
-                                <div class="col" style="padding:0">
-                                    <a  href="{{url('order/index/delivering')}}"><span class="btn btn-warning text-dark">清除过滤条件</span></a>
-                                </div></td>
-                        </tr>
-                        <tr>
-                            <td colspan="10">
-                                <select  name="paginate" v-model="filterData.paginate" class="tooltipTarget form-control-sm" style="vertical-align: middle" @change="submit">
-                                    <option value="50">每页显示50行</option>
-                                    <option value="100">每页显示100行</option>
-                                    <option value="200">每页显示200行</option>
-                                    <option value="500">每页显示500行</option>
-                                    <option value="1000">每页显示1000行</option>
-                                </select></td>
-                        </tr>
-                        <tr>
-                            <td style="width: 300px">
-                                <select  name="codename_c" v-model="filterData.codename_c" class="form-control form-control-sm" style="vertical-align: middle;max-width: 100px" @change="submit">
-                                    <option value="" class="text-secondary">订单状态</option>
-                                    <option v-for="code in codes" :value="code.code" class="font-weight-bold">@{{ code.codename_c }}</option>
-                                </select></td>
-                            <td style="width: 300px">
-                                <div class="form-inline">
-                                    <input style="max-width: 150px"  type="date" name="orderdate_start" class="form-control form-control-sm tooltipTarget" title="选择显示指定日期的起始时间"
-                                           v-model="filterData.orderdate_start" :class="filterData.orderdate_start?'bg-warning':''">
-                                    <input style="max-width: 100px"  type="time" name="ordertime_start" class="form-control form-control-sm tooltipTarget" title="选择显示指定日期的起始时间"
-                                           v-model="filterData.ordertime_start" :class="filterData.ordertime_start?'bg-warning':''"></div>
-                            </td>
-                            <td style="width: 300px">
-                                <input style="max-width: 200px" name="orderno" v-model="filterData.orderno" class="form-control form-control-sm tooltipTarget" placeholder="编号" title="编号,模糊查找需要在左边打上%符号" autocomplete="off" :class="filterData.orderno?'bg-warning':''">
-                            </td>
-                            <td style="width: 300px">
-                                <input style="max-width: 200px" name="carriername" v-model="filterData.carriername" class="form-control form-control-sm tooltipTarget" placeholder="承运人" :class="filterData.carriername?'bg-warning':''">
-                            </td>
-                            <td style="width: 300px">
-                                <div class="form-inline">
-                                    <input style="max-width: 200px" name="notes" title="右侧选择查询范围,默认为一月内" v-model="filterData.notes" class="form-control form-control-sm tooltipTarget" placeholder="备注" autocomplete="off" :class="filterData.notes?'bg-warning':''">
-                                    <select style="max-width: 100px" title="查询范围,范围越短搜索越快"  name="addtime" v-model="filterData.addtime" class="form-control form-control-sm tooltipTarget">
-                                        <option value="1">一天内</option>
-                                        <option value="31">近一月</option>
-                                        <option value="92">近三月</option>
-                                        <option value="183">近半年</option>
-                                        <option value="366">近一年</option>
-                                        <option value="0">不限期</option>
-                                    </select></div>
-                            </td>
-                            <td style="width: 300px">
-                                <input style="max-width: 200px" name="issuepartyname" v-model="filterData.issuepartyname" class="form-control form-control-sm tooltipTarget" placeholder="店铺名称" :class="filterData.issuepartyname?'bg-warning':''">
-                            </td>
-                            <td colspan="4">
-                                <select name="edisendflag2" class="form-control form-control-sm tooltipTarget" style="max-width: 150px" title="快递获取标记" @change="submit">
-                                    <option value="">快递获取标记</option>
-                                    <option value="Y">是</option>
-                                    <option value="N">否</option>
-                                    <option value="W">错误</option>
-                                </select>
-                            </td>
-                        </tr>
-                        <tr>
-                            <td >
-                                <div class="form-inline">
-                                    <input type="text" class="form-control form-control-sm tooltipTarget" placeholder="客户"
-                                           style="width:70px" @input="owner_seek"
-                                           title="输入关键词快速定位下拉列表,回车确定">
-                                    <select name="customerid" v-model="filterData.customerid" @change="submit" style="max-width: 120px" class="form-control form-control-sm tooltipTarget"  title="选择要显示的客户" :class="filterData.customerid?'bg-warning':''">
-                                        <option >    </option>
-                                        <option v-for="owner in owners" :value="owner.customerid" >@{{owner.descr_c}}</option>
-                                    </select>
-                                </div>
-                            </td>
-                            <td>
-                                <div class="form-inline">
-                                    <input style="max-width: 150px"  type="date" class=" form-control form-control-sm tooltipTarget" name="orderdate_end" title="选择显示指定日期的结束时间"
-                                           v-model="filterData.orderdate_end" :class="filterData.orderdate_end?'bg-warning':''" >
-                                    <input style="max-width: 100px"  type="time" class="form-control form-control-sm tooltipTarget" name="ordertime_end" title="选择显示指定日期的结束时间"
-                                           v-model="filterData.ordertime_end" :class="filterData.ordertime_end?'bg-warning':''" ></div>
-                            </td>
-                            <td >
-                                <input style="max-width: 200px" name="soreference5" placeholder="多快递单号" v-model="filterData.soreference5" class="form-control form-control-sm tooltipTarget" title="可支持多快递单号,模糊查找需要在左边打上%符号" autocomplete="off" :class="filterData.soreference5?'bg-warning':''">
-                            </td>
-                            <td>
-                                <input style="max-width: 200px" name="soreference1" v-model="filterData.soreference1" class="form-control form-control-sm tooltipTarget" placeholder="客户订单号" title="客户订单号,模糊查找需要在左边打上%符号" autocomplete="off" :class="filterData.soreference1?'bg-warning':''">
-                            </td>
-                            <td>
-                                <input style="max-width: 200px" name="waveno" v-model="filterData.waveno" title="波次编号,模糊查找需要在左边打上%的符号" class="form-control form-control-sm tooltipTarget" placeholder="波次编号" :class="filterData.waveno?'bg-warning':''">
-                            </td>
-                            <td>
-                                <input style="max-width: 200px" name="alternate_sku1" v-model="filterData.alternate_sku1" title="产品条码,模糊查找需要在左边打上%的符号" class="form-control form-control-sm tooltipTarget" placeholder="产品条码" :class="filterData.alternate_sku1?'bg-warning':''">
-                            </td>
-                            <td colspan="4"><button class="btn btn-sm btn-outline-dark pull-left" type="submit">按条件搜索</button></td>
-                        </tr>
-                        <tr>
-                            <td colspan="10">
-                       <span class="dropdown">
-                                <button type="button" class="btn btn-outline-dark btn-sm form-control-sm dropdown-toggle tooltipTarget" :class="[checkData.length>0?'btn-dark text-light':'']"
-                                        data-toggle="dropdown" title="导出所有页将会以搜索条件得到的过滤结果,将其全部记录(每一页)导出">
-                                    导出Excel
-                                </button>
-                                <div class="dropdown-menu">
-                                    <a class="dropdown-item" @click="orderExport(1)" href="javascript:">导出勾选内容</a>
-                                    <a class="dropdown-item" @click="orderExport(2)" href="javascript:">导出所有页</a>
-                                </div>
-                        </span>
-                                @can('订单管理-批量备注')<button @click="modal()" type="button" class="btn btn-sm ml-2 btn-outline-primary">批量备注追加</button>@endcan
-                                @can('订单管理-编辑')
-                                    <span class="btn btn-sm tooltipTarget" @click="freezeAll" style="cursor: pointer" title="订单的冻结条件要只局限在“创建订单”,“分配完成”,“拣货完成”,“播种完成”"
-                                          :class="[checkData.length>0?'btn-dark':'btn-outline-dark']">冻结</span>
-                                    <span class="btn btn-sm tooltipTarget" @click="deAllocationAll" style="cursor: pointer"  title="订单的取消分配条件要只局限在“分配完成”或“部分分配”"
-                                          :class="[checkData.length>0?'btn-dark':'btn-outline-dark']">取消分配</span>
-                                @endcan
-                            </td>
-                        </tr>
-                    </table>
-                </form>
+                <div id="form_div"></div>
+                <div class="ml-3 form-inline">
+                    <span class="dropdown">
+                        <button type="button" class="btn btn-outline-dark btn-sm form-control-sm dropdown-toggle tooltipTarget" :class="[checkData.length>0?'btn-dark text-light':'']"
+                                data-toggle="dropdown" title="导出所有页将会以搜索条件得到的过滤结果,将其全部记录(每一页)导出">
+                            导出Excel
+                        </button>
+                        <div class="dropdown-menu">
+                            <a class="dropdown-item" @click="orderExport(false)" href="javascript:">导出勾选内容</a>
+                            <a class="dropdown-item" @click="orderExport(true)" href="javascript:">导出所有页</a>
+                        </div>
+                    </span>
+                    @can('订单管理-批量备注')<button @click="modal()" type="button" class="btn btn-sm ml-2 btn-outline-primary">批量备注追加</button>@endcan
+                </div>
                 <div class="modal fade " style="top: 20%" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
                     <div class="modal-dialog">
                         <div class="modal-content">
@@ -166,6 +63,7 @@
                         <th>快递获取时间</th>
                         <th style="min-width: 150px">产品代码</th>
                         <th style="min-width: 150px">产品条码</th>
+                        <th style="min-width: 150px">明细状态</th>
                         <th style="min-width: 180px">产品名称</th>
                         <th>订单数量</th>
                         <th>复核时间</th>
@@ -173,6 +71,7 @@
                         <th>接口取消标记</th>
                         <th>拣货单打印标记</th>
                         <th>接口回传标记</th>
+                        <th>接口回传异常备注</th>
                         <th>订单冻结</th>
                         <th>取消分配</th>
 
@@ -183,7 +82,7 @@
                         </td>
                         <td>@{{ i+1 }}</td>
                         <td class="text-dark font-weight-bold text-nowrap">@{{ order.orderno }}</td>
-                        <td class="text-muted text-nowrap">@{{ order.codename_c }}</td>
+                        <td class="text-muted text-nowrap">@{{ order.ordercodename }}</td>
                         <td class="text-nowrap">@{{ order.addtime }}</td>
                         <td class="text-nowrap">@{{ order.issuepartyname }}</td>
                         <td class="text-nowrap">@{{ order.customer_descr_c }}</td>
@@ -211,11 +110,12 @@
                         <td class="text-nowrap"> @{{ order.warehouseid }}</td>
                         <td class="text-nowrap"><span v-if="order.edisendflag2=='Y'">是</span><span v-if="order.edisendflag2=='N'">否</span><span v-if="order.edisendflag2=='W'">错误</span></td>
                         <td class="text-nowrap">@{{ order.edisendtime2 }}</td>
-                        <td colspan="5" class="text-center">
+                        <td colspan="6" class="text-center">
                             <table v-if="commodities[order.orderno]&&commodities[order.orderno].length==1 || isBtn[order.orderno]" class="table text-nowrap table-sm">
                                 <tr v-for="oracleDOCOrderDetail in commodities[order.orderno]">
                                     <td><div style="width: 180px;overflow: hidden">@{{ oracleDOCOrderDetail.sku }}</div></td>
                                     <td><div style="width: 180px;overflow: hidden">@{{ oracleDOCOrderDetail.alternate_sku1 }}</div></td>
+                                    <td><div style="width: 180px;overflow: hidden">@{{ oracleDOCOrderDetail.orderdetailcodename }}</div></td>
                                     <td><div :title="oracleDOCOrderDetail.descr_c" class="tooltipTarget" style="width: 180px;overflow: hidden">@{{ oracleDOCOrderDetail.descr_c }}</div></td>
                                     <td>@{{ oracleDOCOrderDetail.qtyordered }}</td>
                                     <td><div style="width: 180px;overflow: hidden">@{{ oracleDOCOrderDetail.checktime }}</div></td>
@@ -232,6 +132,7 @@
                         <td>@{{ order.erpcancelflag }}</td>
                         <td>@{{ order.picking_print_flag }}</td>
                         <td>@{{ order.edisendflag }}</td>
+                        <td>@{{ order.ediremarks2}}</td>
                         <td>
                             @can('订单管理-编辑')
                                 <button v-if="order.releasestatus!=='H'" @click="freeze(order.orderno,order.waveno)" class="btn btn-sm btn-outline-dark text-nowrap"
@@ -264,50 +165,67 @@
 @endsection
 
 @section('lastScript')
+    <script type="text/javascript" src="{{asset('js/queryForm/export.js')}}"></script>
+    <script type="text/javascript" src="{{asset('js/queryForm/queryForm200724.js')}}"></script>
     <script>
         new Vue({
             el:"#list",
             data:{
-                filterData:{
-                    paginate:50,ordertime_start:'',orderdate_start:'',orderdate_end:'',ordertime_end:'',customerid:'',orderno:'',soreference5:'',codename_c:'',
-                    carriername:'',issuepartyname:'',soreference1:'',notes:'',addtime:'31',alternate_sku1:'',waveno:'',edisendflag2:'',
-                },
                 page:Number('{{$page}}'),
                 maxPage:1,
                 sum:0,
                 checkData:[],
                 owners:[
                     @foreach($customers as $customer)
-                    {!! $customer !!},
+                    { name:'{{$customer->descr_c}}',value:'{{$customer->customerid}}' },
                     @endforeach
                 ],
                 orders:{!! $orders !!},
                 commodities:{!! $commodities !!},
                 isBtn:{},
                 content:'',
-                codes:{!! $codes !!},
+                codes:[
+                    @foreach($codes as $code)
+                    {name:'{{$code->code}}',value:'{{$code->codename_c}}'},
+                    @endforeach
+                ],
                 selectedStyle:'',
                 picktotraceidMap:[],
             },
             mounted:function () {
                 $(".tooltipTarget").tooltip({'trigger':'hover'});
-                this.initInputs();
                 $("#list").removeClass('d-none');
                 if (this.orders.length>0){
                     this.maxPage=Math.ceil(this.orders[0].counted/50);
                     this.sum=this.orders[0].counted;
                 }
-            },
-            computed:{
-                isBeingFilterConditions:function(){
-                    for(let key in this.filterData){
-                        if(this.filterData[key] && key!='paginate' && key!='page' && key!='addtime'){
-                            return true
-                        }
-                    }
-                    return false;
-                },
-
+                let data=[
+                    [   {name:'codename_c',type:'select',placeholder:'订单状态',data:this.codes},
+                        {name:'orderdate_start',type:'time',tip:['选择显示日期的起始时间','选择显示日期的起始时间']},
+                        {name:'orderno',type:'input',tip:'编号,糊模查找需要在左边打上%符号',placeholder: '编号'},
+                        {name:'carriername',type:'input',tip:'',placeholder:'承运人'},
+                        {name:['notes','addtime'],type:'input_select',tip:['右侧选择查询范围,默认为一天内','查询范围,范围越短搜索越快'],placeholder: ['客户',''],
+                            data:[{name:'31',value:'近一月'},{name:'92',value:'近三月'},{name:'183',value:'近半年'},{name:'366',value:'近一年'},{name:'0',value:'不限'},]},
+                        {name:'issuepartyname',type:'input',tip:'',placeholder: '店铺名称'},
+                        {name:'edisendflag2',type:'select',tip:'快递获取标记',placeholder: '快递获取标记',data:[{name:'Y',value:'是'},{name:'N',value:'否'},{name:'W',value:'错误'},]},
+                        {name:'edisendflag',type:'select',tip:'接口回传标记',placeholder: '接口回传标记',data:[{name:'Y',value:'Y'},{name:'N',value:'N'},{name:'W',value:'W'},{name:'R',value:'R'},]}
+                    ],
+                    [
+                        {name:'codename_c_end',type:'select',placeholder:'订单状态',data:this.codes},
+                        {name:'customerid',type:'select_multiple_select',tip:['输入关键词快速定位下拉列表,回车确定','选择要显示的客户'],
+                            placeholder:['货主','定位或多选货主'],data:this.owners},
+                        {name:'orderdate_end',type:'time',tip:['选择显示指定日期的结束时间','选择显示指定日期的结束时间']},
+                        {name:'soreference5',type:'input',tip:'可支持多快递单号,糊模查找需要在左边打上%符号',placeholder: '多快递单号'},
+                        {name:'soreference1',type:'input',tip:'客户订单号,糊模查找需要在左边打上%符号',placeholder: '客户订单号'},
+                        {name:'waveno',type:'input',tip:'波次编号,模糊查找需要在左边打上%的符号',placeholder: '波次编号'},
+                        {name:'alternate_sku1',type:'input',tip:'产品条码,模糊查找需要在左边打上%的符号',placeholder: '产品条码'},
+                    ],
+                ];
+                this.form = new query({
+                    el:"#form_div",
+                    condition:data,
+                });
+                this.form.init();
             },
             watch:{
                 checkData:{
@@ -322,31 +240,13 @@
                 }
             },
             methods:{
-                initInputs:function(){
-                    let data=this;
-                    let uriParts =decodeURI(location.href).split("?");
-                    if(uriParts.length>1){
-                        let params = uriParts[1].split('&');
-                        params.forEach(function(paramPair){
-                            let pair=paramPair.split('=');
-                            let key = pair[0], val = pair[1];
-                            $('input[name="'+key+'"]').val(val);
-                            $('select[name="'+key+'"]').val(val);
-                            decodeURI(data.filterData[key]=val);
-                            if (key==='ordertime_start' || key==='ordertime_end')
-                                data.filterData[key]=unescape(val);
-                        });
-                    }
-                },
                 pageUp(){
                     if (this.page<=1)return;
-                    this.page=this.page-1;
-                    this.href();
+                    this.href(this.page-1);
                 },
                 pageDown(){
                     if (this.page>=this.maxPage)return;
-                    this.page=this.page+1;
-                    this.href();
+                    this.href(this.page+1);
                 },
                 pageSkip(e){
                     if (Number(e.target.value)<=0 || Number(e.target.value)>this.maxPage){
@@ -354,37 +254,18 @@
                         tempTip.show('页数不存在! ');
                         return
                     }
-                    this.page=e.target.value;
-                    this.href();
+                    this.href(e.target.value);
                 },
-                href(){
-                    let url="{{url('order/index/delivering?page=')}}"+this.page;
-                    if (this.filterData.orderdate_start)url+="&orderdate_start="+this.filterData.orderdate_start;
-                    if (this.filterData.orderdate_end)url+="&orderdate_end="+this.filterData.orderdate_end;
-                    if (this.filterData.ordertime_start)url+="&ordertime_start="+this.filterData.ordertime_start;
-                    if (this.filterData.ordertime_end)url+="&ordertime_end="+this.filterData.ordertime_end;
-                    if (this.filterData.customerid)url+="&customerid="+this.filterData.customerid;
-                    if (this.filterData.paginate)url+="&paginate="+this.filterData.paginate;
-                    if (this.filterData.orderno)url+="&orderno="+this.filterData.orderno;
-                    if (this.filterData.soreference5)url+="&soreference5="+this.filterData.soreference5;
-                    if (this.filterData.codename_c)url+="&codename_c="+this.filterData.codename_c;
-                    if (this.filterData.carriername)url+="&carriername="+this.filterData.carriername;
-                    if (this.filterData.soreference1)url+="&soreference1="+this.filterData.soreference1;
-                    if (this.filterData.issuepartyname)url+="&issuepartyname="+this.filterData.issuepartyname;
-                    if (this.filterData.notes){
-                        url+="&notes="+this.filterData.notes;
-                        if (this.filterData.addtime)url+="&addtime="+this.filterData.addtime;
+                href(page){
+                    let url = document.URL;
+                    if (url.indexOf('page='+this.page) != -1){
+                        url = url.replace("page="+this.page,"page="+page);
+                    }else{
+                        if (url.indexOf('?') == -1) url += "?page="+page;
+                        else url += "&page="+page;
                     }
-                    if (this.filterData.alternate_sku1)url+="&alternate_sku1="+this.filterData.alternate_sku1;
-                    if (this.filterData.waveno)url+="&waveno="+this.filterData.waveno;
-                    if (this.filterData.edisendflag2) url+="&edisendflag2="+this.filterData.edisendflag2;
                     window.location.href=url;
                 },
-                //提交表单
-                submit:function(){
-                    let form = $("#form");
-                    form.submit();
-                },
                 //全选事件
                 checkAll(e){
                     if (e.target.checked){
@@ -397,45 +278,16 @@
                         this.checkData = [];
                     }
                 },
-                //寻找客户
-                owner_seek:function (e) {
-                    let _this=this;
-                    let $val=e.target.value;
-                    if($val==='')_this.filterData.customerid='';
-                    else
-                        _this.owners.forEach(function (owner) {
-                            if (owner.descr_c.includes($val)){
-                                _this.filterData.customerid=owner.customerid;
-                            }
-                        });
-                },
                 unfold(orderno){
                     this.$set(this.isBtn,orderno,true);
                     setTimeout(function () {
                         $(".tooltipTarget").tooltip({'trigger':'hover'});
                     },1);
                 },
-                orderExport(val){
-                    if (val==1){
-                        if (this.checkData.length<1) {
-                            tempTip.setDuration(3000);
-                            tempTip.showSuccess('没有勾选任何记录')
-                            return;
-                        }
-                        window.open("{{url('order/index/delivering?checkData=')}}"+this.checkData);
-                        return;
-                    }
-                    if (this.sum>10000){
-                        if (!confirm("需要导出的条数超过了一万条,等待时间较长,是否继续?"))return;
-                    }
-                    window.open("{{url('order/index/delivering?ordertime_start=')}}"+this.filterData.ordertime_start
-                        +"&ordertime_end="+this.filterData.ordertime_end+"&orderdate_start="+this.filterData.orderdate_start
-                        +"&orderdate_end="+this.filterData.orderdate_end+"&orderno="+this.filterData.orderno
-                        +"&soreference5="+this.filterData.soreference5+"&export="+true+"&codename_c="+this.filterData.codename_c
-                        +"&issuepartyname="+this.filterData.issuepartyname+"&customerid="+this.filterData.customerid
-                        +"&soreference1="+this.filterData.soreference1+"&notes="+this.filterData.notes
-                        +"&addtime="+this.filterData.addtime+"&alternate_sku1="+this.filterData.alternate_sku1+"&waveno="+this.filterData.waveno
-                        +"&edisendflag2="+this.filterData.edisendflag2);
+                orderExport(checkAllSign){
+                    let url = '{{url('order/index/delivering')}}';
+                    let token='{{ csrf_token() }}';
+                    excelExport(checkAllSign,this.checkData,url,this.sum,token);
                 },
                 modal(){
                     $("#myModal").modal('show');
@@ -468,7 +320,6 @@
                         alert('网络连接错误:'+e);
                         tempTip.setDuration(2500);
                         tempTip.show('标记勾选内容冻结失败,网络连接错误:'+e);
-                        console.log(e);
                     })
                 },
                 //批量取消分配
@@ -500,7 +351,6 @@
                         alert('网络连接错误:'+e);
                         tempTip.setDuration(2500);
                         tempTip.show('标记勾选内容取消分配失败,网络连接错误:'+e);
-                        console.log(e);
                     })
                 },
                 batchComments(){

+ 9 - 2
resources/views/personnel/laborReport/index.blade.php

@@ -93,7 +93,7 @@
                         <th class="text-center">本次工作时长</th>
                         <th class="text-center">备注</th>
                     </tr>
-                    <tr v-for="(laborReport,i) in laborReports">
+                    <tr v-for="(laborReport,i) in laborReports" @click="selectedColor(laborReport.id)" :style="{'font-weight': laborReport.id==selectedStyle?'bold':''}">
                         <td>
                             <input class="checkItem" type="checkbox" :value="laborReport.id" v-model="checkData">
                         </td>
@@ -318,7 +318,7 @@
                     {paginate:'50',created_at_start:'',created_at_end:'',enter_number:'',identity_number:'',user_workgroup_id: '',mobile_phone:''},
                 checkData:[],
                 permittingWorkgroups:{!! $permittingWorkgroups !!},
-                relax_time:'',dateTime:'',
+                relax_time:'',dateTime:'',selectedStyle:'',
             },
             mounted:function(){
                 initEcho();
@@ -400,6 +400,13 @@
                         });
                     }
                 },
+                selectedColor(id){
+                    if (id==this.selectedStyle){
+                        this.selectedStyle='';
+                        return;
+                    }
+                    this.selectedStyle=id;
+                },
                 setPaginate:function(e){
                     this.filterData.paginate=e.target.value;
                     var form = document.getElementById("optionSubmit");

+ 2 - 2
resources/views/process/create.blade.php

@@ -20,7 +20,7 @@
                             </div>
                             <div class="modal-body">
                                 <textarea class="w-100" style="height: 400px;" v-model="pasteData"
-                                placeholder="内容必须为EXCEL复制,请注意表头顺序,可拖拽调整顺序,以该顺序为准"
+                                placeholder="内容必须为EXCEL复制,请注意表头顺序,可拖拽表头字段调整顺序,以该顺序为准"
                                 ></textarea>
                             </div>
                             <div class="modal-footer">
@@ -582,7 +582,7 @@
                                 $('#pasteData').modal('hide');
                                 tempTip.setDuration(2000);
                                 tempTip.showSuccess('导入完毕');
-                            } 
+                            }
                         }).catch(err=>{
                             tempTip.setDuration(4000);
                             tempTip.showSuccess('网络错误:'+err);

+ 45 - 165
resources/views/process/index.blade.php

@@ -6,97 +6,17 @@
 </span>
 <div class="d-none" id="process">
     <div class="container-fluid">
-        <div>
-            <form  method="GET" action="{{url('process/')}}" id="optionSubmit">
-                   <table class="table  table-sm table-bordered text-nowrap  mb-0">
-                       <tr v-if="isBeingFilterConditions">
-                           <td colspan="10">
-                               <div class="col" style="padding:0">
-                                   <a  href="{{url('process')}}"><span class="btn btn-warning text-dark">清除过滤条件</span></a>
-                               </div></td>
-                       </tr>
-                       <tr>
-                           <td  colspan="9">
-                               <select name="paginate" v-model="filterData.paginate" class="tooltipTarget form-control form-control-sm" style="vertical-align: middle;max-width: 100px" @change="submit">
-                                   <option value="50">50行</option>
-                                   <option value="100">100行</option>
-                                   <option value="200">200行</option>
-                                   <option value="500">500行</option>
-                                   <option value="1000">1000行</option>
-                               </select></td>
-                       </tr>
-                       <tr>
-                           <td >
-                               <input id="date_start" name="date_start" style="max-width: 200px" v-model="filterData.date_start"  :class="filterData.date_start?'bg-warning':''" type="date" class="form-control form-control-sm tooltipTarget" title="选择显示指定日期的起始时间">
-                           </td>
-                           <td >
-                               <div class="form-inline">
-                               <input type="text" class="form-control form-control-sm tooltipTarget" placeholder="客户"
-                                      style="width:70px" @input="owner_seek"
-                                      title="输入关键词快速定位下拉列表,回车确定">
-                               <select name="owner_id" v-model="filterData.owner_id" @change="submit" class="form-control form-control-sm tooltipTarget"  title="选择要显示的客户" :class="filterData.owner_id?'bg-warning':''">
-                                   <option >    </option>
-                                   <option v-for="owner in owners" :value="owner.id">@{{owner.name}}</option>
-                               </select></div>
-                           </td>
-                           <td>
-                               <input id="wms_code" name="wms_code" style="max-width: 200px" title="单据号:支持15内模糊搜索与15天外精确搜索" v-model="filterData.wms_code" class="form-control form-control-sm tooltipTarget" placeholder="单据号" :class="filterData.wms_code?'bg-warning':''">
-                           </td>
-                           <td>
-                               <select id="status" name="status" v-model="filterData.status" @change="submit" style="max-width: 100px" class="form-control form-control-sm tooltipTarget" :class="filterData.status?'bg-warning':''" >
-                                   <option value="" selected>状态</option>
-                                   <option value="待审核">待审核</option>
-                                   <option value="待接单">待接单</option>
-                                   <option value="待加工">待加工</option>
-                                   <option value="已驳回">已驳回</option>
-                                   <option value="加工中">加工中</option>
-                                   <option value="待验收">待验收</option>
-                                   <option value="交接完成">交接完成</option>
-                               </select>
-                               <input hidden name="is_accomplish" v-model="filterData.is_accomplish">
-                           </td>
-                           <td colspan="5"></td>
-                       </tr>
-                       <tr>
-                           <td >
-                               <input id="date_end" name="date_end" style="max-width: 200px" v-model="filterData.date_end" type="date" class="form-control form-control-sm tooltipTarget" title="选择显示指定日期的结束时间" :class="filterData.date_end?'bg-warning':''">
-                           </td>
-                           <td>
-                               <input name="commodity_barcode" style="max-width: 200px" title="商品条码:支持15内模糊搜索与15天外精确搜索" v-model="filterData.commodity_barcode" class="form-control form-control-sm tooltipTarget" placeholder="商品条码" :class="filterData.commodity_barcode?'bg-warning':''">
-                           </td>
-                           <td>
-                               <input name="code" style="max-width: 200px" title="任务号:支持15内模糊搜索与15天外精确搜索" v-model="filterData.code" class="form-control form-control-sm tooltipTarget" placeholder="任务号" :class="filterData.code?'bg-warning':''">
-                           </td>
-                           <td >
-                               <button class="btn btn-sm btn-outline-dark pull-left" type="submit">按条件搜索</button>
-                           </td>
-                           <td colspan="5"></td>
-                       </tr>
-                       <tr>
-                           <td colspan="9">
-                               <div class="form-inline">
-                                   <span class="dropdown">
-                                        <button class="btn btn-outline-dark btn-sm form-control-sm dropdown-toggle tooltipTarget" :class="[checkData.length>0?'btn-dark text-light':'']"
-                                                data-toggle="dropdown" title="导出所有页将会以搜索条件得到的过滤结果,将其全部记录(每一页)导出">
-                                            导出Excel
-                                        </button>
-                                        <div class="dropdown-menu">
-                                            <a class="dropdown-item" @click="processExport(1)" href="javascript:">导出勾选内容</a>
-                                            <a class="dropdown-item" @click="processExport(2)" href="javascript:">导出所有页</a>
-                                        </div>
-                                   </span>
-                                   <div class="form-check ml-4">
-                                        <label class="form-check-label text-muted">
-                                            <input v-if="filterData.is_accomplish" checked @click="is_checked($event)" type="checkbox" class="form-check-input">
-                                            <input v-else @click="is_checked($event)" type="checkbox" class="form-check-input">显示交接完成的记录
-                                        </label>
-                                   </div>
-                               </div>
-                           </td>
-                       </tr>
-                   </table>
-           </form>
-        </div>
+        <div id="form_div"></div>
+        <span class="dropdown">
+            <button class="btn btn-outline-dark btn-sm form-control-sm dropdown-toggle tooltipTarget" :class="[checkData.length>0?'btn-dark text-light':'']"
+                    data-toggle="dropdown" title="导出所有页将会以搜索条件得到的过滤结果,将其全部记录(每一页)导出">
+                导出Excel
+            </button>
+            <div class="dropdown-menu">
+                <a class="dropdown-item" @click="processExport(false)" href="javascript:">导出勾选内容</a>
+                <a class="dropdown-item" @click="processExport(true)" href="javascript:">导出所有页</a>
+            </div>
+       </span>
         <!--新增教程关联-->
         <div style="top:25%" class="modal fade" id="addTutorial" tabindex="-1" role="dialog" aria-labelledby="addTutorial" aria-hidden="true">
             <div class="modal-dialog">
@@ -554,6 +474,8 @@
 @endsection
 
 @section('lastScript')
+    <script type="text/javascript" src="{{asset('js/queryForm/export.js')}}"></script>
+    <script type="text/javascript" src="{{asset('js/queryForm/queryForm200724.js')}}"></script>
     <script>
         new Vue({
             el:"#process",
@@ -572,12 +494,16 @@
                 processesList:[],
                 owners:[
                     @foreach($owners as $owner)
-                    {!! $owner !!},
+                    { name:'{{$owner->id}}',value:'{{$owner->name}}'},
                     @endforeach
                 ],
+                status:[
+                    {name:'待审核',value:'待审核'},{name:'待接单',value:'待接单'},{name:'待加工',value:'待加工'},
+                    {name:'已驳回',value:'已驳回'},{name:'加工中',value:'加工中'},{name:'待验收',value:'待验收'},
+                    {name:'交接完成',value:'交接完成'},
+                ],
                 errors:{},
                 checkData:[],
-                filterData:{paginate:50,date_start:'',date_end:'',owner_id:'',commodity_barcode:'',wms_code:'',status:'',is_accomplish:'',code:''},
                 processDailies:[],
                 processDailyParticipants:[],
                 isShow:{
@@ -595,6 +521,7 @@
                 date:'',
                 today:'',
                 dateTextMap:{'start_date':'起','end_date':'终'},
+                sum:{!! $processes->total() !!},
             },
             watch:{
                 checkData:{
@@ -608,20 +535,7 @@
                     deep:true
                 }
             },
-            computed:{
-                isBeingFilterConditions:function(){
-                    for(let key in this.filterData){
-                        if(this.filterData[key]){
-                            if(key==='paginate' || key==='is_accomplish')continue;
-                            return true
-                        }
-                    }
-                    return false;
-                },
-
-            },
             mounted:function () {
-                this.initInputs();
                 this.resetProcessData();
                 $(".tooltipTarget").tooltip({'trigger':'hover'});
                 $('#process').removeClass('d-none');
@@ -640,6 +554,25 @@
                 } else {
                     window.onfocus= focusin;
                 }
+                let data=[
+                    [
+                        {name:'date_start',type:'dataTime',tip:'选择显示指定日期的起始时间'},
+                        {name:'owner_id',type:'select',placeholder: '客户',data:this.owners},
+                        {name:'wms_code',type:'input',tip:'单据号:支持15内模糊搜索与15天外精确搜索',placeholder: '单据号'},
+                        {name:'status',type:'select',placeholder: '状态',data:this.status},
+                    ],
+                    [
+                        {name:'date_end',type:'dataTime',tip:'选择显示指定日期的结束时间'},
+                        {name:'commodity_barcode',type:'input',tip:'商品条码:支持15内模糊搜索与15天外精确搜索',placeholder: '商品条码'},
+                        {name:'code',type:'input',tip:'任务号:支持15内模糊搜索与15天外精确搜索',placeholder: '任务号'},
+                        {name:'is_accomplish',type:'checkbox',data:[{name:'sign',value:'显示交接完成的记录'}]},
+                    ],
+                ];
+                this.form = new query({
+                    el:"#form_div",
+                    condition:data,
+                });
+                this.form.init();
             },
             methods: {
                 arrayFilter: function (processesContents, process) {
@@ -651,7 +584,6 @@
                         if (processesContent.type === type) array.push(processesContent);
                     });
                     return array;
-
                 },
                 //重组数据
                 resetProcessData: function () {
@@ -680,28 +612,6 @@
                         _this.processes.splice(index + 1, 0, processTemp);
                     });
                 },
-                //回显条件参数
-                initInputs: function () {
-                    let data = this;
-                    let uriParts = decodeURI(location.href).split("?");
-                    if (uriParts.length > 1) {
-                        let params = uriParts[1].split('&');
-                        params.forEach(function (paramPair) {
-                            let pair = paramPair.split('=');
-                            let key = pair[0], val = pair[1];
-                            if (val !== "+") {
-                                $('input[name="' + key + '"]').val(val);
-                                $('select[name="' + key + '"]').val(val);
-                                decodeURI(data.filterData[key] = val);
-                            }
-                        });
-                    }
-                },
-                //提交表单
-                submit: function () {
-                    let form = $("#optionSubmit");
-                    form.submit();
-                },
                 //全选事件
                 checkAll(e) {
                     if (e.target.checked) {
@@ -714,23 +624,12 @@
                         this.checkData = [];
                     }
                 },
-                //导出excel,因同步问题不使用formData
-                processExport(e) {
-                    let val = e;
-                    let data = this.filterData;
-                    if (val == 1) {
-                        if (this.checkData && this.checkData.length <= 0) {
-                            tempTip.setDuration(4000);
-                            tempTip.showSuccess('没有勾选任何记录');
-                        } else {
-                            location.href = "{{url('process?checkSign=')}}" + this.checkData;
-                        }
-                    } else {
-                        location.href = "{{url('process?checkSign=-1&date_start=')}}" +
-                            data.date_start + "&date_end=" + data.date_end + "&owner_id=" +
-                            data.owner_id + "&commodity_barcode=" + data.commodity_barcode + "&wms_code=" + data.wms_code +
-                            "&status=" + data.status+"$is_accomplish="+data.is_accomplish;
-                    }
+                //导出excel
+                processExport(checkAllSign) {
+                    let url = '{{url('process/export')}}';
+                    let token='{{ csrf_token() }}';
+                    //excelExport 定义在 js/queryForm/export.js
+                    excelExport(checkAllSign,this.checkData,url,this.sum,token);
                 },
                 //获取登记工时
                 openProcessHour(process) {
@@ -988,18 +887,6 @@
                         tempTip.show('网络错误:' + err);
                     })
                 },
-                //定位客户
-                owner_seek: function (e) {
-                    let _this = this;
-                    let $val = e.target.value;
-                    if ($val === '') _this.filterData.owner_id = '';
-                    else
-                        _this.owners.forEach(function (owner) {
-                            if (owner.name.includes($val)) {
-                                _this.filterData.owner_id = owner.id;
-                            }
-                        });
-                },
                 //修改每日产量
                 submitOutputData(daily_id, data, id) {
                     let url = "{{url('process/updateDailyOutput')}}";
@@ -1581,13 +1468,6 @@
                         tempTip.show('网络错误:' + err);
                     })
                 },
-                is_checked(e){
-                    if (e.target.checked) this.filterData.is_accomplish=e.target.checked;
-                    else this.filterData.is_accomplish='';
-                    setTimeout( res=>{
-                        this.submit();
-                    },1);
-                },
                 update_process_date(processDailyParticipant){
                     let date=this.date;
                     let is_update_date=this.is_update_date;

+ 4 - 5
resources/views/rejected/search/general.blade.php

@@ -12,13 +12,12 @@
                 @if(Session::has('successTip'))
                     <div class="alert alert-success h1">{{Session::get('successTip')}}</div>
                 @endif
-
-
+                <div id="form_div"></div>
                 <div class="col-12" style="background: #fff;">
                     <div class="row">
                         <div class="col" v-if="isBeingFilterConditions">
                             <label for="">
-                                <a :href="'{{url('rejected').'?paginate='}}'+filterParams.paginate"><span class="btn btn-warning text-dark">清除过滤条件</span></a>
+                                <a :href="'{{url('rejected/index/general').'?paginate='}}'+filterParams.paginate"><span class="btn btn-warning text-dark">清除过滤条件</span></a>
                             </label>
                         </div>
                         <table class="table table-sm table-bordered m-0">
@@ -310,7 +309,7 @@
             rejectedBill.detailFolding=true;
         })
         let owners=[
-                @foreach($owners as $owner)
+            @foreach($owners as $owner)
             {id:'{{$owner->id}}',name:'{{$owner->name}}'},
             @endforeach
         ];
@@ -338,5 +337,5 @@
         let exportExcelOnFilterParamsURL='{{url("rejected/exportExcelOnFilterParams")}}';
         let csrfInput='@csrf';
     </script>
-    <script src="{{asset('js/singles/rejectedIndex200710.js')}}"></script>
+    <script src="{{asset('js/singles/rejectedIndex200728.js')}}"></script>
 @endsection

+ 60 - 248
resources/views/waybill/index.blade.php

@@ -13,123 +13,30 @@
                     <ul class="nav nav-pills">
                         @can('运输管理-查询')
                             <li class="nav-item">
-                                <a class="nav-link" href="{{url('waybill/index')}}" :class="!filterData.uriType || filterData.uriType=='' ? 'active' :''">全部</a>
+                                <a class="nav-link @if($uriType=='') active @endif" href="{{url('waybill/index')}}">全部</a>
                             </li> @endcan
                         @can('运输管理-查询')
                             <li class="nav-item">
-                                <a class="nav-link" href="{{url('waybill/index?uriType=ZX')}}" :class="filterData.uriType=='ZX' ? 'active' :''">专线</a>
+                                <a class="nav-link @if($uriType=='专线') active @endif" href="{{url('waybill/index?uriType=专线')}}">专线</a>
                             </li> @endcan
                         @can('运输管理-查询')
                             <li class="nav-item">
-                                <a class="nav-link" href="{{url('waybill/index?uriType=ZF')}}" :class="filterData.uriType=='ZF' ? 'active' :''">直发车</a>
+                                <a class="nav-link @if($uriType=='直发车') active @endif" href="{{url('waybill/index?uriType=直发车')}}">直发车</a>
                             </li> @endcan
                     </ul>
                 </div>
             </div>
-            <form  method="GET" action="@if($uriType=='ZF'){{url('waybill/index?uriType=ZF')}}@elseif($uriType=='ZX'){{url('waybill/index?uriType=ZX')}}@else{{url('waybill/index')}}@endif" id="optionSubmit">
-                <table class="table table-sm table-bordered  text-nowrap mb-0" style="background: #fff;">
-                    <tr v-if="isBeingFilterConditions">
-                        <td colspan="4"><div class="col" style="padding:0;">
-                                <a  href="@if($uriType=='ZF'){{url('waybill/index?uriType=ZF')}}@elseif($uriType=='ZX'){{url('waybill/index?uriType=ZX')}}@else{{url('waybill/index')}}@endif"><span class="btn btn-warning text-dark">清除过滤条件</span></a>
-                            </div>
-                        </td>
-                    </tr>
-                    <tr>
-                        <td colspan="6">
-                            <select name="paginate" v-model="filterData.paginate" @change="setPaginate" class="form-control-sm" style="vertical-align: middle">
-                                <option value="50">每页显示50行</option>
-                                <option value="100">每页显示100行</option>
-                                <option value="200">每页显示200行</option>
-                                <option value="500">每页显示500行</option>
-                                <option value="1000">每页显示1000行</option>
-                            </select>
-                        </td>
-                    </tr>
-                    <tr >
-                        <td >
-                            <div class="form-inline">
-                                <select v-if="is_ownerSelectShow" name="owner_id"  v-model="filterData.owner_id"  class="form-control form-control-sm tooltipTarget "  @change="setOwner" style="vertical-align: middle;max-width: 100px" :class="filterData.owner_id?'bg-warning':''">
-                                    <option value="" class="text-secondary">货主 </option>
-                                    <option v-for="owner in owners" :value="owner.id" class="font-weight-bold">@{{owner.name}}</option>
-                                </select>
-                                <label v-if="!is_ownerSelectShow" class="text-muted" style="vertical-align: middle;min-width: 100px">(多选)</label>
-                                <div style="position: relative;" @mouseover="isOut=true;mouseleaveOwner();" @mouseleave="isOut=false;mouseleaveOwner();">
-                                    <input type="text" title="多选货主时双击选中" class="form-control form-control-sm tooltipTarget" @input="owner_seek($event)"  placeholder="定位或多选货主" @blur="isBlur=false;blurOwner();" @focus="isOwnersBtn=true;isBlur=true;">
-                                    <span v-show="isOwnersBtn" class="border"   style="position: absolute;left:0;top:30px;width:150px;max-height:100px;overflow:auto;background-color: white">
-                                    <ul style="list-style-type:none" class="pl-0" >
-                                        <li v-for="owner in owners" style="cursor: pointer;user-select:none;" :style="{'background-color':filterData.owners['_'+owner.id]?'#4aa0e6':''}"
-                                            @dblclick="selectedOwner(owner.id)" class="text-left">@{{owner.name}}<hr class="m-0" style="width: 100%"></li>
-                                    </ul>
-                                </span>
-                                    <input hidden name="owners" :value="JSON.stringify(filterData.owners)">
-                                </div>
-                            </div>
-                        </td>
-                        <td ><div class="form-inline">
-                            <input type="date" name="created_at_start" style="width: 150px" class="form-control form-control-sm tooltipTarget" title="选择显示指定日期的起始时间"
-                                   v-model="filterData.created_at_start" :class="filterData.created_at_start?'bg-warning':''">
-                            <input type="date" style="width: 150px" class="form-control form-control-sm tooltipTarget" name="created_at_end" title="选择显示指定日期的结束时间"
-                                   v-model="filterData.created_at_end" :class="filterData.created_at_end?'bg-warning':''"></div>
-                            </td>
-                        <td >
-                            <input type="text" title="承运商单号:支持15内模糊搜索与15天外精确搜索"  name="carrier_bill" placeholder="承运商单号"
-                                   class="form-control form-control-sm  tooltipTarget" v-model="filterData.carrier_bill" style="vertical-align: middle;max-width: 200px" :class="filterData.carrier_bill?'bg-warning':''">
-                        </td>
-                        <td >
-                            <select name="status"  v-model="filterData.status" @change="setState" class="form-control form-control-sm tooltipTarget" style="vertical-align: middle;max-width: 100px" :class="filterData.status?'bg-warning':''">
-                                <option value="" class="text-secondary">运单状态</option>
-                                <option value="未审核" class="font-weight-bold">未审核</option>
-                                <option value="已审核" class="font-weight-bold">待调度</option>
-                                <option value="待终审" class="font-weight-bold">待终审</option>
-                                <option value="已完结" class="font-weight-bold">已完结</option>
-                            </select>
-                        </td>
-                        <td></td>
-                    </tr>
-                    <tr>
-                        <td  style="width: 300px">
-                            <input type="text" title="WMS单号:支持15内模糊搜索与15天外精确搜索" name="wms_bill_number" placeholder="WMS单号"
-                                   class="form-control form-control-sm  tooltipTarget" v-model="filterData.wms_bill_number" style="vertical-align: middle;max-width: 200px" :class="filterData.wms_bill_number?'bg-warning':''"></td>
-                        <td  style="width: 350px"><div class="form-inline">
-                                <input type="text" title="始发地:支持15内模糊搜索与15天外精确搜索" name="origination" placeholder="始发地"
-                                       class="form-control form-control-sm  tooltipTarget" v-model="filterData.origination" style="vertical-align: middle;width: 150px" :class="filterData.origination?'bg-warning':''">
-                                <input type="text" title="目的地:支持15内模糊搜索与15天外精确搜索" style="vertical-align: middle;width: 150px" placeholder="目的地"
-                                       name="destination" class="form-control form-control-sm  tooltipTarget" v-model="filterData.destination" :class="filterData.destination?'bg-warning':''"></div></td>
-                        <td  style="width: 280px">
-                            <input type="text" title="运单号:支持15内模糊搜索与15天外精确搜索" name="waybill_number" placeholder="运单号"
-                                   class="form-control form-control-sm  tooltipTarget" v-model="filterData.waybill_number" style="vertical-align: middle;max-width: 200px" :class="filterData.waybill_number?'bg-warning':''">
-                        </td>
-                        <td>
-                            <div class="form-inline">
-                            <select name="carrier_id"   v-model="filterData.carrier_id" class="form-control form-control-sm  tooltipTarget" @change="setCarrier" style="vertical-align: middle;width: 100px" :class="filterData.carrier_id?'bg-warning':''">
-                                <option value="" class="text-secondary">承运商 </option>
-                                @foreach($carriers as $carrier)
-                                    <option value="{{$carrier->id}}" class="font-weight-bold">{{$carrier->name}}</option>
-                                @endforeach
-                            </select>
-                            <input name="uriType" v-model="filterData.uriType" hidden>
-                            <button type="submit" class="btn btn-sm btn-outline-dark w-25 ml-5">按条件搜索</button>
-                            </div>
-                        </td>
-                        <td></td>
-                    </tr>
-                     <tr>
-                        <td colspan="6">
-                            <span class="dropdown">
-                                <button class="btn btn-outline-dark btn-sm form-control-sm dropdown-toggle tooltipTarget" :class="[checkData.length>0?'btn-dark text-light':'']"
-                                        data-toggle="dropdown" title="导出所有页将会以搜索条件得到的过滤结果,将其全部记录(每一页)导出">
-                                    导出Excel
-                                </button>
-                                <div class="dropdown-menu">
-                                    <a class="dropdown-item" @click="waybillExport(1)" href="javascript:">导出勾选内容</a>
-                                    <a class="dropdown-item" @click="waybillExport(2)" href="javascript:">导出所有页</a>
-                                </div>
-                            </span>
-                        </td>
-                    </tr>
-                </table>
-            </form>
-
+            <div id="form_div"></div>
+            <span class="dropdown">
+                <button class="btn btn-outline-dark btn-sm form-control-sm dropdown-toggle tooltipTarget" :class="[checkData.length>0?'btn-dark text-light':'']"
+                        data-toggle="dropdown" title="导出所有页将会以搜索条件得到的过滤结果,将其全部记录(每一页)导出">
+                    导出Excel
+                </button>
+                <div class="dropdown-menu">
+                    <a class="dropdown-item" @click="waybillExport(false)" href="javascript:">导出勾选内容</a>
+                    <a class="dropdown-item" @click="waybillExport(true)" href="javascript:">导出所有页</a>
+                </div>
+            </span>
             <div>
                 @if(Session::has('successTip'))
                     <div class="alert alert-success h1">{{Session::get('successTip')}}</div>
@@ -401,7 +308,7 @@
                 </div>
             </div>
             <div class="text-info h5 btn btn">{{$waybills->count()}}/{{$waybills->total()}}</div>
-            {{$waybills->appends($filterData)->links()}}
+            {{$waybills->appends($request)->links()}}
         </div>
     </div>
 
@@ -453,10 +360,9 @@
             -webkit-animation-direction: alternate;
             -webkit-animation-play-state: running;
         }
-        .imgBtn{
-        }
-
     </style>
+    <script type="text/javascript" src="{{asset('js/queryForm/export.js')}}"></script>
+    <script type="text/javascript" src="{{asset('js/queryForm/queryForm200724.js')}}"></script>
     <script>
         let vueList=new Vue({
             el:'#list',
@@ -488,37 +394,31 @@
                     @endforeach
                 ],
                 checkData:[],
-                filterData:
-                    {paginate:'50',waybill_number:''
-                        ,carrier_bill:'',carrier_id:''
-                        ,owner_id:'',wms_bill_number:''
-                        ,created_at_start:'',created_at_end:'',uriType:''
-                        ,type:'',status:'',origination:'',destination:'',owners:{}},
                 wmsCommodities:[],
                 selectedStyle:[],
                 owners:[
                     @foreach($owners as $owner)
-                    {!! $owner !!},
+                    {name:'{{$owner->id}}',value:'{{$owner->name}}'},
                     @endforeach
                 ],
+                carriers:[
+                    @foreach($carriers as $carrier)
+                    {name:"{{$carrier->id}}",value:'{{$carrier->name}}'},
+                    @endforeach
+                ],
+                status:[
+                    {name:'未审核',value:'未审核'},
+                    {name:'已审核',value:'已审核'},
+                    {name:'待调度',value:'待调度'},
+                    {name:'待终审',value:'待终审'},
+                    {name:'已完结',value:'已完结'},
+                ],
                 isOut:false,
                 isBlur:false,
                 isOwnersBtn:false,
                 imgs:'',
                 is_ownerSelectShow:true,
-            },
-            computed:{
-                isBeingFilterConditions:function(){
-
-                    for(let key in this.filterData){
-                        if(this.filterData[key]){
-                            if(key==='paginate' || key==='uriType')continue;
-                            if (key==='owners' && Object.keys(this.filterData.owners).length<1)continue;
-                            return true
-                        }
-                    }
-                    return false;
-                },
+                sum:{!! $waybills->total() !!},
             },
             watch:{
                 checkData:{
@@ -534,7 +434,6 @@
 
             },
             mounted:function(){
-                this.initInputs();
                 $(".tooltipTarget").tooltip({'trigger':'hover'});
                 $('#list').removeClass('d-none');
                 let waybill =  $('.table-header-layer-1')[1];
@@ -544,6 +443,31 @@
                 if (this.imgs&&this.imgs.length>0){
                     window.addEventListener('scroll',this.lazy)
                 }
+                let data=[
+                    [
+                        {name:'owner_id',type:'select_multiple_select',tip:['输入关键词快速定位下拉列表,回车确定','选择要显示的客户'],
+                            placeholder:['货主','定位或多选货主'],data:this.owners},
+                        {name:'created_at_start',type:'dataTime',tip:'选择显示指定日期的起始时间'},
+                        {name:'origination',type:'input',tip:'始发地:支持15内模糊搜索与15天外精确搜索',placeholder: '始发地'},
+                        {name:'carrier_bill',type:'input',tip:'承运商单号:支持15内模糊搜索与15天外精确搜索',placeholder: '承运商单号'},
+                        {name:'status',type:'select',placeholder: '运单状态',data:this.status},
+                    ],
+                    [
+                        {name:'wms_bill_number',type:'input',tip:'WMS单号:支持15内模糊搜索与15天外精确搜索',placeholder: 'WMS单号'},
+                        {name:'created_at_end',type:'dataTime',tip:'选择显示指定日期的结束时间'},
+                        {name:'destination',type:'input',tip:'目的地:支持15内模糊搜索与15天外精确搜索',placeholder: '目的地'},
+                        {name:'waybill_number',type:'input',tip:'运单号:支持15内模糊搜索与15天外精确搜索',placeholder: '运单号'},
+                        {name:'carrier_id',type:'select',placeholder: '承运商',data:this.carriers},
+                    ],
+                ];
+                let param=[];
+                this.$set(param,"uriType",'{{$uriType}}');
+                this.form = new query({
+                    el:"#form_div",
+                    condition:data,
+                    param:param,
+                });
+                this.form.init();
             },
             methods:{
                 lazy(){
@@ -563,22 +487,6 @@
                         }
                     });
                 },
-                initInputs:function(){
-                    let data=this;
-                    let uriParts =decodeURI(location.href).split("?");
-                    if(uriParts.length>1){
-                        let params = uriParts[1].split('&');
-                        params.forEach(function(paramPair){
-                            let pair=paramPair.split('=');
-                            let key = pair[0], val = pair[1];
-                            $('input[name="'+key+'"]').val(val);
-                            $('select[name="'+key+'"]').val(val);
-                            decodeURI(data.filterData[key]=val);
-                            if (key==='owners')
-                                data.filterData['owners']=JSON.parse( unescape(val) );
-                        });
-                    }
-                },
                 waybillAudit(id,waybill_number){
                     if(!confirm('确定要通过“'+waybill_number+'”的审核吗?')){return};
                     let _this=this;
@@ -700,31 +608,6 @@
                         tempTip.show('终审失败,网络连接错误!'+err);
                     });
                 },
-                setPaginate:function(e){
-                    this.filterData.paginate=e.target.value;
-                    var form = document.getElementById("optionSubmit");
-                    form.submit();
-                },
-                setCarrier:function (e){
-                    this.filterData.carrier_id=e.target.value;
-                    var form = document.getElementById("optionSubmit");
-                    form.submit();
-                },
-                setOwner:function (e) {
-                    this.filterData.owner_id=e.target.value;
-                    var form = document.getElementById("optionSubmit");
-                    form.submit();
-                },
-                setType:function (e) {
-                    this.filterData.type=e.target.value;
-                    var form = document.getElementById("optionSubmit");
-                    form.submit();
-                },
-                setState:function (e) {
-                    this.filterData.status=e.target.value;
-                    var form = document.getElementById("optionSubmit");
-                    form.submit();
-                },
                 checkAll(e){
                     if (e.target.checked){
                         this.waybills.forEach((el,i)=>{
@@ -736,41 +619,10 @@
                         this.checkData = [];
                     }
                 },
-                waybillExport(e){
-                    let val=e;
-                    let data=this.filterData;
-                    if (val==1) {
-                        if (this.checkData.length <= 0) {
-                            tempTip.setDuration(2000);
-                            tempTip.showSuccess('没有勾选任何记录');
-                        } else {
-                            location.href = "{{url('waybillExport')}}/" + this.checkData;
-                        }
-                    }else {
-                        $form=$('<form target="_blank" action="{{url('waybillExport/-1')}}"></form>')
-                        $form.append("<input type='hidden' name='waybill_number' value='"+data.waybill_number+"'/>");
-                        $form.append("<input type='hidden' name='carrier_bill' value='"+data.carrier_bill+"'/>");
-                        $form.append("<input type='hidden' name='carrier_id' value='"+data.carrier_id+"'/>");
-                        $form.append("<input type='hidden' name='owner_id' value='"+data.owner_id+"'/>");
-                        $form.append("<input type='hidden' name='wms_bill_number' value='"+data.wms_bill_number+"'/>");
-                        $form.append("<input type='hidden' name='created_at_start' value='"+data.created_at_start+"'/>");
-                        $form.append("<input type='hidden' name='created_at_end' value='"+data.created_at_end+"'/>");
-                        $form.append("<input type='hidden' name='type' value='"+data.type+"'/>");
-                        $form.append("<input type='hidden' name='status' value='"+data.status+"'/>");
-                        $form.append("<input type='hidden' name='origination' value='"+data.origination+"'/>");
-                        $form.append("<input type='hidden' name='destination' value='"+data.destination+"'/>");
-                        $form.append("<input type='hidden' name='uriType' value='"+data.uriType+"'/>");
-                        $('body').append($form);
-                        $form.submit();
-
-                        {{--location.href = "{{url('waybillExport/-1?waybill_number=')}}"+--}}
-                        {{--    data.waybill_number+"&carrier_bill="+data.carrier_bill+--}}
-                        {{--    "&carrier_id="+data.carrier_id+"&owner_id="+data.owner_id+--}}
-                        {{--    "&wms_bill_number="+data.wms_bill_number+"&created_at_start="+--}}
-                        {{--    data.created_at_start+"&created_at_end="+data.created_at_end+--}}
-                        {{--    "&type="+data.type+"&status="+data.status+"&origination="+data.origination+--}}
-                        {{--    "&destination="+data.destination+"&uriType="+data.uriType;--}}
-                    }
+                waybillExport(checkAllSign){
+                    let url = '{{url('waybill/export')}}';
+                    let token='{{ csrf_token() }}';
+                    excelExport(checkAllSign,this.checkData,url,this.sum,token);
                 },
                 //展开收起商品列表
                 showWMSCommodities(id,wmsCommodities,isBtn){
@@ -808,38 +660,6 @@
                 elementCount:function(elementName){
                     return $(elementName).length;
                 },
-                //多货主查询
-                selectedOwner:function (id) {
-                    if (this.filterData.owners['_'+id]) this.$delete(this.filterData.owners,'_'+id);
-                    else this.$set(this.filterData.owners,'_'+id,id);
-                    if (Object.keys(this.filterData.owners).length===1){
-                        this.filterData.owner_id=id;
-                        if (!this.is_ownerSelectShow)this.is_ownerSelectShow=true;
-                    }
-                    if (Object.keys(this.filterData.owners).length<1) {
-                        this.filterData.owner_id='';
-                        if (!this.is_ownerSelectShow)this.is_ownerSelectShow=true;
-                    }
-                    if (Object.keys(this.filterData.owners).length>1) {
-                        this.filterData.owner_id='';
-                        if (this.is_ownerSelectShow)this.is_ownerSelectShow=false;
-                    }
-                },
-                owner_seek:function (e) {
-                    let val=e.target.value;
-                    if (this.owners.length<1)return;
-                    let _this=this;
-                    let ownerTemp=_this.owners[0];
-                    this.owners.every(function (owner,i) {
-                        if (owner.name.includes(val)){
-                            if (i===0)return ;
-                            _this.$set(_this.owners,0,owner);
-                            _this.$set(_this.owners,i,ownerTemp);
-                            return false;
-                        }
-                        return  true;
-                    });
-                },
                 mouseleaveOwner:function () {
                     if(!this.isOut&&!this.isBlur){
                         this.isOwnersBtn=false;
@@ -929,14 +749,6 @@
                                 tempTip.show("删除失败");
                                 return;
                             }
-                            // _this.checkData.forEach(function (id) {
-                            //     _this.waybills.some(function (waybill) {
-                            //         if (waybill.id===id){
-                            //             waybill.url='';
-                            //             return true;
-                            //         }
-                            //     });
-                            // });
                             id.forEach(function (id) {
                                 _this.waybills.some(function (waybill) {
                                     if (waybill.id===id){

+ 91 - 207
resources/views/weight/package/index.blade.php

@@ -9,140 +9,80 @@
     </span>
     <div class="d-none" id="list">
         <div class="container-fluid">
-            <div class="">
-                <div>
-                    <form  method="GET" action="{{url('package/')}}" id="optionSubmit">
-                        <table class="table  table-sm table-bordered text-nowrap mb-0">
-                            <tr v-if="isBeingFilterConditions">
-                                <td colspan="10"><div class="col" style="padding:0">
-                                        <a  href="{{url('package')}}"><span class="btn btn-warning text-dark">清除过滤条件</span></a>
-                                    </div></td>
-                            </tr>
-                            <tr>
-                                <td  colspan="9">
-                                    <select name="paginate" v-model="filterData.paginate" class="tooltipTarget form-control-sm" style="vertical-align: middle" @change="setPaginate">
-                                        <option value="50">50行</option>
-                                        <option value="100">100行</option>
-                                        <option value="200">200行</option>
-                                        <option value="500">500行</option>
-                                        <option value="1000">1000行</option>
-                                    </select></td>
-                            </tr>
-                            <tr>
-                                <td >
-                                    <input style="width: 150px" name="created_at_start" type="date" v-model="filterData.created_at_start" :class="filterData.created_at_start?'bg-warning':''" class="form-control form-control-sm tooltipTarget" title="选择显示指定日期的起始时间">
-
-                                </td>
-                                <td>
-                                    <div class="form-inline">
-                                    <input type="text" class="form-control form-control-sm tooltipTarget" placeholder="客户"
-                                           style="width:70px" @input="owner_seek"
-                                           title="输入关键词快速定位下拉列表,回车确定">
-                                    <select name="owner_id" id="owner_id" :class="filterData.owner_id?'bg-warning':''" v-model="filterData.owner_id" @change="setOwner"
-                                            class="form-control form-control-sm tooltipTarget"  title="选择要显示的客户">
-                                        @foreach($owners as $owner)
-                                            <option value="{{$owner->id}}">{{$owner->name}}</option>
-                                        @endforeach
-                                    </select>
-                                    </div>
-                                </td>
-
-                                <td>
-                                    <input :class="filterData.logistic_number?'bg-warning':''" type="text" placeholder="快递单号" title="快递单号:支持15内模糊搜索与15天外精确搜索" name="logistic_number" class="form-control form-control-sm  tooltipTarget" v-model="filterData.logistic_number" style="vertical-align: middle;max-width: 200px" ></td>
-                                {{--<td >
-                                    <input :class="filterData.delivery_number?'bg-warning':''" type="text" title="支持15内模糊搜索与15天外精确搜索" name="delivery_number" class="form-control-sm  tooltipTarget" v-model="filterData.delivery_number" style="vertical-align: middle" placeholder="发货单号"></td>--}}
-                                <td colspan="6"></td>
-                            </tr>
-                            <tr>
-                                <td>
-                                    <input style="width: 150px" type="date" name="created_at_end" v-model="filterData.created_at_end" :class="filterData.created_at_end?'bg-warning':''" class="form-control form-control-sm tooltipTarget" title="选择显示指定日期的结束时间">
-                                </td>
-                                <td >
-                                    <input type="text" title="波次号:支持15内模糊搜索与15天外精确搜索" placeholder="波次号" name="batch_number" class="form-control form-control-sm  tooltipTarget" v-model="filterData.batch_number"  :class="filterData.batch_number?'bg-warning':''" style="vertical-align: middle;max-width: 200px" ></td>
-                                <td>
-                                    <button class="btn btn-sm btn-outline-dark pull-left" type="submit">按条件搜索</button>
-                                </td>
-                            </tr>
-                            <tr>
-                                <td colspan="9">
-                                    <span class="dropdown">
-                                        <button class="btn btn-outline-dark btn-sm form-control-sm dropdown-toggle tooltipTarget" :class="[checkData.length>0?'btn-dark text-light':'']"
-                                                data-toggle="dropdown" title="导出所有页将会以搜索条件得到的过滤结果,将其全部记录(每一页)导出">
-                                            导出Excel
-                                        </button>
-                                        <div class="dropdown-menu">
-                                            <a class="dropdown-item" @click="packageExport(1)" href="javascript:">导出勾选内容</a>
-                                            <a class="dropdown-item" @click="packageExport(2)" href="javascript:">导出所有页</a>
-                                        </div>
-                                    </span>
-                                    <input hidden type="submit" >
-                                </td>
-                            </tr>
-                        </table>
-                    </form>
-                </div>
-                <div class="">
-                    <table class="table table-striped table-sm text-nowrap table-hover">
-                        <tr>
-                            <th>
-                                <label for="all">
-                                    <input id="all" type="checkbox" @click="checkAll($event)">全选
-                                </label>
-                            </th>
-                            <th>序号</th>
-                            <th>ID</th>
-                            <th>货主</th>
-                            <th>快递单号</th>
-                            <th>波次号</th>
-                            <th>订单号</th>
-                            <th>物流公司</th>
-                            <th>设备</th>
-                            <th>重(KG)</th>
-                            <th>长*宽*高(cm)</th>
-                            <th>体积(dm³)</th>
-                            <th>纸箱</th>
-                            <th>状态</th>
-                            <th>波次规则</th>
-                            <th>称重时间</th>
-                            <th>收件人</th>
-                            <th>收件人电话</th>
-                        </tr>
-                        <tr v-for="(package,i) in packages">
-                            <td>
-                                <input class="checkItem" type="checkbox" :value="package.id" v-model="checkData">
-                            </td>
-                            <td>@{{ i+1  }}</td>
-                            <td class="text-muted">@{{package.id}}</td>
-                            <td>@{{package.ownerName}}</td>
-                            <td>@{{package.logisticNumber}}</td>
-                            <td class="text-muted">@{{package.batchNumber}}</td>
-                            <td>@{{package.order_code}}</td>
-                            <td class="text-muted">@{{package.logisticName}}</td>
-                            <td class="text-muted">@{{package.measuringMachineName}}</td>
-                            <td>@{{package.weight}}</td>
-                            <td>@{{package.length|mmToCm}}<a v-if="package.length" class="text-primary">*</a>@{{package.width|mmToCm}}<a class="text-primary" v-if="package.width">*</a>@{{package.height|mmToCm}}</td>
-                            <td>@{{package.bulk|volumeMmToDm}}</td>
-                            <td>@{{package.paperBoxName}}</td>
-                            <td :class="[package.status==='已上传'?'text-success':'']">@{{package.status}}</td>
-                            <td class="text-muted">@{{package.batchRule}}</td>
-                            <td class="text-muted">@{{package.weighed_at}}</td>
-                            <td class="text-muted">@{{package.recipient}}</td>
-                            <td class="text-muted">@{{package.recipientMobile}}</td>
-                        </tr>
-                    </table>
-                    <div class="text-info h5 btn btn">{{$packages->count()}}/{{$packages->total()}}</div>
-                    @if(isset($request))
-                        {{$packages->appends($request)->links()}}
-                    @else
-                        {{$packages->links()}}
-                    @endif
+            <div id="form_div"></div>
+            <span class="dropdown">
+                <button class="btn btn-outline-dark btn-sm form-control-sm dropdown-toggle tooltipTarget mt-1 mb-1" :class="[checkData.length>0?'btn-dark text-light':'']"
+                        data-toggle="dropdown" title="导出所有页将会以搜索条件得到的过滤结果,将其全部记录(每一页)导出">
+                    导出Excel
+                </button>
+                <div class="dropdown-menu">
+                    <a class="dropdown-item" @click="packageExport(false)" href="javascript:">导出勾选内容</a>
+                    <a class="dropdown-item" @click="packageExport(true)" href="javascript:">导出所有页</a>
                 </div>
+            </span>
+            <div class="">
+                <table class="table table-striped table-sm text-nowrap table-hover">
+                    <tr>
+                        <th>
+                            <label for="all">
+                                <input id="all" type="checkbox" @click="checkAll($event)">全选
+                            </label>
+                        </th>
+                        <th>序号</th>
+                        <th>ID</th>
+                        <th>货主</th>
+                        <th>快递单号</th>
+                        <th>波次号</th>
+                        <th>订单号</th>
+                        <th>物流公司</th>
+                        <th>设备</th>
+                        <th>重(KG)</th>
+                        <th>长*宽*高(cm)</th>
+                        <th>体积(cm³)</th>
+                        <th>纸箱</th>
+                        <th>状态</th>
+                        <th>波次规则</th>
+                        <th>称重时间</th>
+                        <th>收件人</th>
+                        <th>收件人电话</th>
+                    </tr>
+                    <tr v-for="(package,i) in packages">
+                        <td>
+                            <input class="checkItem" type="checkbox" :value="package.id" v-model="checkData">
+                        </td>
+                        <td>@{{ i+1  }}</td>
+                        <td class="text-muted">@{{package.id}}</td>
+                        <td>@{{package.ownerName}}</td>
+                        <td>@{{package.logisticNumber}}</td>
+                        <td class="text-muted">@{{package.batchNumber}}</td>
+                        <td>@{{package.order_code}}</td>
+                        <td class="text-muted">@{{package.logisticName}}</td>
+                        <td class="text-muted">@{{package.measuringMachineName}}</td>
+                        <td>@{{package.weight}}</td>
+                        <td>@{{package.length}}<a v-if="package.length" class="text-primary">*</a>@{{package.width}}<a class="text-primary" v-if="package.width">*</a>@{{package.height}}</td>
+                        <td>@{{package.bulk}}</td>
+                        <td>@{{package.paperBoxName}}</td>
+                        <td :class="[package.status==='已上传'?'text-success':'']">@{{package.status}}</td>
+                        <td class="text-muted">@{{package.batchRule}}</td>
+                        <td class="text-muted">@{{package.weighed_at}}</td>
+                        <td class="text-muted">@{{package.recipient}}</td>
+                        <td class="text-muted">@{{package.recipientMobile}}</td>
+                    </tr>
+                </table>
+                <div class="text-info h5 btn btn">{{$packages->count()}}/{{$packages->total()}}</div>
+                @if(isset($request))
+                    {{$packages->appends($request)->links()}}
+                @else
+                    {{$packages->links()}}
+                @endif
             </div>
         </div>
     </div>
 @endsection
 
 @section('lastScript')
+    <script type="text/javascript" src="{{asset('js/queryForm/export.js')}}"></script>
+    <script type="text/javascript" src="{{asset('js/queryForm/queryForm200724.js')}}"></script>
     <script>
             @if(isset($request))
         let request={!! json_encode($request) !!};
@@ -163,18 +103,32 @@
                 ],
                 i:0,
                 owners:[
-                        @foreach($owners as $owner)
-                    {id:'{{$owner->id}}',name:'{{$owner->name}}'},
+                    @foreach($owners as $owner)
+                    {name:'{{$owner->id}}',value:'{{$owner->name}}'},
                     @endforeach
                 ],
-                filterData:
-                    {paginate:'50',created_at_start:'',created_at_end:'',logistic_number:'',delivery_number:'',owner_id: '',batch_number:''},
-                checkData:[]
+                checkData:[],
+                form:'',
+                sum:{!! $packages->total() !!},
             },
             mounted:function(){
-                this.initInputs();
                 $(".tooltipTarget").tooltip({'trigger':'hover'});
                 $('#list').removeClass('d-none');
+                let _this = this;
+                let data = [[
+                    {name:'created_at_start',type:'dataTime',tip:'选择显示指定日期的起始时间'},
+                    {name:'owner_id',type:'search_select',tip:['',''],placeholder:['客户',''],data:_this.owners},
+                    {name:'logistic_number',type:'input',tip:'快递单号:支持15内模糊搜索与15天外精确搜索',placeholder:'快递单号'},
+                ],[
+                    {name:'created_at_end',type:'dataTime',tip:'选择显示指定日期的结束时间'},
+                    {name:'batch_number',type:'input',tip:'波次号:支持15内模糊搜索与15天外精确搜索',placeholder:'波次号'}
+                ]];
+
+                _this.form = new query({
+                    el:'#form_div',
+                    condition:data,
+                });
+                _this.form.init();
             },
             watch:{
                 checkData:{
@@ -188,44 +142,7 @@
                     deep:true
                 }
             },
-            computed:{
-                isBeingFilterConditions:function(){
-
-                    for(let key in this.filterData){
-                        if(this.filterData[key]){
-                            if(key==='paginate')continue;
-                            return true
-                        }
-                    }
-                    return false;
-                },
-
-            },
             methods:{
-                initInputs:function(){
-                    let data=this;
-                    let uriParts =decodeURI(location.href).split("?");
-                    if(uriParts.length>1){
-                        let params = uriParts[1].split('&');
-                        params.forEach(function(paramPair){
-                            let pair=paramPair.split('=');
-                            let key = pair[0], val = pair[1];
-                            $('input[name="'+key+'"]').val(val);
-                            $('select[name="'+key+'"]').val(val);
-                            decodeURI(data.filterData[key]=val);
-                        });
-                    }
-                },
-                setPaginate:function(e){
-                    this.filterData.paginate=e.target.value;
-                    var form = document.getElementById("optionSubmit");
-                    form.submit();
-                },
-                setOwner:function (e){
-                    this.filterData.owner_id=e.target.value;
-                    var form = document.getElementById("optionSubmit");
-                    form.submit();
-                },
                 checkAll(e){
                     if (e.target.checked){
                         this.packages.forEach((el,i)=>{
@@ -237,45 +154,12 @@
                         this.checkData = [];
                     }
                 },
-                packageExport(e){
-                    let val=e;
-                    let data=this.filterData;
-                    if (val==1){
-                        if (this.checkData&&this.checkData.length<=0){
-                            tempTip.setDuration(4000);
-                            tempTip.showSuccess('没有勾选任何记录');
-                        }else{
-                            location.href="{{url('package/export').'/'}}"+this.checkData;
-                        }
-                    } else {
-                        location.href="{{url('package/export/-1?created_at_start=')}}"+
-                            data.created_at_start+"&created_at_end="+data.created_at_end+"&logistic_number="+
-                            data.logistic_number+"&delivery_number="+data.delivery_number+"&owner_id="+data.owner_id+
-                            "&batch_number="+data.batch_number;
-                    }
-                },
-                owner_seek:function (e) {
-                    let _this=this;
-                    let $val=e.target.value;
-                    if($val==='')_this.filterData.owner_id='';
-                    else
-                        _this.owners.forEach(function (owner) {
-                            if (owner.name.includes($val)){
-                                _this.filterData.owner_id=owner.id;
-                            }
-                        });
+                packageExport(checkAllSign){
+                    let url = '{{url('package/export')}}';
+                    let token='{{ csrf_token() }}';
+                    excelExport(checkAllSign,this.checkData,url,this.sum,token);
                 },
             },
-            filters:{
-                mmToCm:function (val) {
-                    if(!parseInt(val))return val;
-                    return parseInt(val)/10
-                },
-                volumeMmToDm:function (val) {
-                    if(!parseInt(val))return val;
-                    return Math.round(parseInt(val)/10000)/100;
-                },
-            }
         });
     </script>
 @endsection

+ 6 - 4
routes/web.php

@@ -84,15 +84,15 @@ Route::any('waybill/ontop/cancel','WaybillsController@cancelOnTop');
 Route::get('waybill/index','WaybillsController@index');
 Route::get('waybill/delivering','WaybillsController@delivering');
 Route::post('waybill/storeCarrierBill','WaybillsController@storeCarrierBill');
-Route::resource('waybill','WaybillsController');
 Route::post('waybill/is/waybillPriceModel','WaybillsController@isWaybillPriceModel');
 Route::post('waybill/addCounty','WaybillsController@addCounty');
 Route::any('waybill/waybillAudit','WaybillsController@waybillAudit');
 Route::any('waybill/waybillEdit/{id}','WaybillsController@waybillEdit');
 Route::any('waybill/waybillRetreatAudit','WaybillsController@waybillRetreatAudit');
 Route::any('waybill/waybillEndAudit','WaybillsController@waybillEndAudit');
-Route::any('waybillExport/{id}','WaybillsController@waybillExport');
+Route::any('waybill/export','WaybillsController@export');
 Route::any('waybill/waybillUpdate/{id}','WaybillsController@waybillUpdate');
+Route::resource('waybill','WaybillsController');
 
 
 Route::any('waybillFinancialSnapshot/export/{id}','WaybillFinancialSnapshotsController@export');
@@ -122,7 +122,7 @@ Route::get('maintenance/', function () {return view('maintenance.index');});
 Route::any('package/measureMonitor/speech','MeasureMonitorController@speech');
 Route::post('package/measureMonitor/data','MeasureMonitorController@data');
 Route::resource('package/measureMonitor','MeasureMonitorController');
-Route::get('package/export/{id}','PackageController@export');
+Route::any('package/export','PackageController@export');
 Route::get('package/statistics','PackageController@statistics');
 Route::get('package/statisticExport','PackageController@statisticExport');
 Route::get('package/relating', function () {return view('weight.menuWeight');});
@@ -232,6 +232,8 @@ Route::group(['prefix'=>'process'],function(){
     Route::delete('destroyDailyParticipant/{id}','ProcessController@destroyDailyParticipant');
     //导入粘贴商品数据
     Route::post('importPasteData','ProcessController@importPasteData');
+    //导出
+    Route::any('export','ProcessController@export');
 });
 //process主方法 restful
 Route::resource('process','ProcessController');
@@ -297,7 +299,7 @@ Route::group(['prefix'=>'inventory'],function (){
  */
 Route::group(['prefix'=>'order'],function(){
     //发运
-    Route::get('index/delivering','OrderController@delivering');
+    Route::any('index/delivering','OrderController@delivering');
     //批量备注
     Route::post('create/batchComments','OrderController@batchComments');
     //冻结订单

+ 4 - 3
webpack.mix.js

@@ -12,8 +12,8 @@ const mix = require('laravel-mix');
  */
 
 mix.js('resources/js/app.js', 'public/js')
-    .sass('resources/sass/app.scss', 'public/css/app200708.css');
-mix.js('resources/js/singles/rejectedIndex.js', 'public/js/singles/rejectedIndex200710.js');
+    .sass('resources/sass/app.scss', 'public/css/app200721.css');
+mix.js('resources/js/singles/rejectedIndex.js', 'public/js/singles/rejectedIndex200728.js');
 mix.js('resources/js/singles/searchAnalyze.js', 'public/js/singles/searchAnalyze200513.js');
 
 mix.copy('resources/sass/fonts/','public/fonts');
@@ -22,4 +22,5 @@ mix.copy('resources/images','public/images');
 mix.copy('resources/icon/faviconc.ico','public/faviconc.ico');
 mix.js('resources/js/trix.js','public/js/trix.js');
 mix.copy('resources/sass/trix.css','public/css/trix.css');
-mix.copy('resources/js/queryForm/queryForm.js','public/js/queryForm/queryForm.js');
+mix.copy('resources/js/queryForm/queryForm.js','public/js/queryForm/queryForm200724.js');
+mix.copy('resources/js/queryForm/export.js','public/js/queryForm/export.js');

Некоторые файлы не были показаны из-за большого количества измененных файлов