LD 5 лет назад
Родитель
Сommit
64adc54b7f
36 измененных файлов с 487 добавлено и 103 удалено
  1. 0 2
      app/Http/Controllers/OrderIssueController.php
  2. 23 0
      app/Http/Controllers/OrderIssuePerformanceController.php
  3. 26 7
      app/Imports/OrderIssueImport.php
  4. 10 0
      app/Order.php
  5. 13 0
      app/OrderIssue.php
  6. 10 0
      app/OrderPackage.php
  7. 1 0
      app/OrderPackageCommodities.php
  8. 2 0
      app/Providers/AppServiceProvider.php
  9. 0 1
      app/Services/InventoryService.php
  10. 102 0
      app/Services/OrderIssuePerformanceService.php
  11. 21 7
      app/Services/OrderIssueService.php
  12. 18 5
      app/Services/OrderPackageCommoditiesService.php
  13. 40 3
      app/Services/OrderPackageService.php
  14. 25 17
      app/Services/OrderService.php
  15. 1 1
      app/Waybill.php
  16. 38 0
      database/migrations/2020_08_26_134321_add_order_issue_performance_staistics.php
  17. 2 2
      public/js/app.js
  18. 2 0
      resources/js/queryForm/queryForm.js
  19. 1 1
      resources/views/inventory/statement/changeInventory.blade.php
  20. 1 1
      resources/views/inventory/statement/dailyLog.blade.php
  21. 1 1
      resources/views/inventory/stockInventory/mission.blade.php
  22. 1 1
      resources/views/maintenance/role/index.blade.php
  23. 1 1
      resources/views/maintenance/user/index.blade.php
  24. 1 1
      resources/views/order/index/delivering.blade.php
  25. 2 10
      resources/views/order/issue/edit.blade.php
  26. 23 27
      resources/views/order/issue/index.blade.php
  27. 7 1
      resources/views/order/issue/menu.blade.php
  28. 103 7
      resources/views/order/issue/performance.blade.php
  29. 1 1
      resources/views/order/wave/search.blade.php
  30. 1 1
      resources/views/personnel/laborReport/index.blade.php
  31. 1 1
      resources/views/process/index.blade.php
  32. 1 1
      resources/views/rejected/search/general.blade.php
  33. 1 1
      resources/views/waybill/index.blade.php
  34. 1 1
      resources/views/weight/package/index.blade.php
  35. 5 0
      routes/web.php
  36. 1 1
      webpack.mix.js

+ 0 - 2
app/Http/Controllers/OrderIssueController.php

@@ -480,13 +480,11 @@ class OrderIssueController extends Controller
     public function apiUpdateValidatorRejectedBill(array $arr){
         return Validator::make($arr, [
             'logistic_number_return'=>['required'],
-            'id_owner'=>['required'],
             'id_logistic_return'=>['required'],
         ], [
             'required' => [':attribute 为必填项', ':attribute'],
         ], [
             'logistic_number_return'=> '退回单号',
-            'id_owner'=> '退回单号货主',
             'id_logistic_return'=> '退回单号承运商',
         ]);
     }

+ 23 - 0
app/Http/Controllers/OrderIssuePerformanceController.php

@@ -0,0 +1,23 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Gate;
+
+class OrderIssuePerformanceController extends Controller
+{
+    public function index(Request $request){
+        if (!Gate::allows('订单管理-问题件-绩效统计')) {
+            return redirect(url('/'));
+        }
+        $service  = app('orderIssuePerformanceService');
+        $performance = $service->paginate($request->all());
+        $options = ['timeFrame'=>$request->input('timeFrame'),'create_start'=>$request->input('create_start')??'','create_end'=>$request->input['create_end']??''];
+        return view('order.issue.performance',compact('performance','options'));
+    }
+    public function export(Request $request){
+        $service  = app('orderIssuePerformanceService');
+        return $service->exportPerformance($request->all());
+    }
+}

+ 26 - 7
app/Imports/OrderIssueImport.php

@@ -2,14 +2,13 @@
 
 namespace App\Imports;
 
+use App\OracleActAllocationDetails;
 use App\OracleDOCOrderHeader;
 use App\Order;
 use App\OrderIssue;
 use App\OrderIssueProcessLog;
-use App\OrderIssueType;
-use App\Services\OrderService;
+use App\OrderPackage;
 use App\Services\RejectedService;
-use Doctrine\DBAL\Connection;
 use Illuminate\Support\Collection;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\Cache;
@@ -37,7 +36,7 @@ class OrderIssueImport implements ToCollection, WithHeadingRow, WithMultipleShee
         $rejectedService = new RejectedService();
         if ($endIS) {
             foreach ($collection as $row) {
-                $client_no = trim($row['原始运单号'], ' ');
+                $logistic_number = trim($row['原始运单号'], ' ');
                 if (!$row['原始运单号']) {
                     array_push($exception, ['第' . $sum . '行数据运单号为空!']);
                     $sum++;
@@ -51,12 +50,33 @@ class OrderIssueImport implements ToCollection, WithHeadingRow, WithMultipleShee
                     $sum++;
                     continue;
                 }
-                $count = OracleDOCOrderHeader::where('SOReference1', $client_no)->count();
-                if (!$count) {
+                $count = OracleDOCOrderHeader::where('soreference5', $logistic_number)->count();
+                $detailCount = OracleActAllocationDetails::where('picktotraceid',$logistic_number)->count();
+                if (!$count && !$detailCount) {
                     array_push($exception, ['原始运单号' . $row['原始运单号'] . '对应的WMS运单不存在']);
                     $sum++;
                     continue;
                 }
+                $orderPackage = OrderPackage::where('logistic_number',$logistic_number)->first();
+                if($orderPackage){
+                    $order = Order::where('id',$orderPackage['order_id'])->first();
+                    if($order ){
+                        $orderIssue = OrderIssue::where('order_id',$order['id'])->first();
+                        if($orderIssue){
+                            array_push($exception, ['原始运单号' . $row['原始运单号'] . '对应的问题件已存在']);
+                            continue;
+                        }
+                    }
+                }
+                $client_no = null;
+                if($count){
+                    $orderHeader =  OracleDOCOrderHeader::where('soreference5',$logistic_number)->first();
+                    $client_no =$orderHeader['soreference1'];
+                }else if($detailCount){
+                    $detail = OracleActAllocationDetails::where('picktotraceid',$logistic_number)->first();
+                    $orderHeader =  OracleDOCOrderHeader::where('orderno',$detail['orderno'])->first();
+                    $client_no =$orderHeader['soreference1'];
+                }
                 $order = $orderService->findOrCreateByClientCode($client_no);
                 $orderIssue = OrderIssue::where('order_id', $order['id'])->first();
                 $rejectedBill = $rejectedService->getRejectedByClientNo($client_no);
@@ -66,7 +86,6 @@ class OrderIssueImport implements ToCollection, WithHeadingRow, WithMultipleShee
                     continue;
                 }
                 $arr = ['order_id' => $order['id'],];
-//                $arr['result_explain'] = $row['情况说明'];
                 if ($rejectedBill) {
                     $arr['rejected_bill_id'] = $rejectedBill['id'];
                 }

+ 10 - 0
app/Order.php

@@ -92,4 +92,14 @@ class Order extends Model
         }
     }
 
+    public function delete()
+    {
+        $this->packages()->delete();
+        return parent::delete();
+    }
+    public function deleteSafe()
+    {
+        return parent::delete();
+    }
+
 }

+ 13 - 0
app/OrderIssue.php

@@ -50,4 +50,17 @@ class OrderIssue extends Model
     public function getSecondLogisticNumberAttribute(){
         return $this['secondOrder']['code'] ??'';
     }
+
+    public function delete()
+    {
+        $this->order()->delete();
+        $this->logs()->delete();
+        $this->top()->delete();
+        return parent::delete();
+    }
+
+    public function deleteSafe(){
+        return parent::delete();
+    }
+
 }

+ 10 - 0
app/OrderPackage.php

@@ -20,4 +20,14 @@ class OrderPackage extends Model
         return $this->hasMany('App\OrderPackageCommodities','order_package_id','id');
     }
 
+    public function delete()
+    {
+        $this->commodities()->delete();
+        return parent::delete();
+    }
+
+    public function deleteSafe(){
+        return parent::delete();
+    }
+
 }

+ 1 - 0
app/OrderPackageCommodities.php

@@ -19,4 +19,5 @@ class OrderPackageCommodities extends Model
     public function commodity(){
         return $this->belongsTo('App\Commodity','commodity_id','id');
     }
+
 }

+ 2 - 0
app/Providers/AppServiceProvider.php

@@ -3,6 +3,7 @@
 namespace App\Providers;
 
 use App\Http\Controllers\Controller;
+use App\Services\OrderIssuePerformanceService;
 use Illuminate\Queue\Events\JobFailed;
 use Illuminate\Support\Facades\Queue;
 use Illuminate\Support\Facades\Schema;
@@ -21,6 +22,7 @@ class AppServiceProvider extends ServiceProvider
     public function register()
     {
         //
+        app()->singleton('orderIssuePerformanceService',OrderIssuePerformanceService::class);
     }
 
     /**

+ 0 - 1
app/Services/InventoryService.php

@@ -22,7 +22,6 @@ class InventoryService
         ];
         $inventoryDailyLogs = app(QueryService::class)->query($param,$inventoryDailyLogs,$columnQueryRules);
         return $inventoryDailyLogs;
-
     }
 
     //库存体积

+ 102 - 0
app/Services/OrderIssuePerformanceService.php

@@ -0,0 +1,102 @@
+<?php
+
+namespace App\Services;
+
+use App\OrderIssueProcessLog;
+use App\Owner;
+use App\Services\common\QueryService;
+use App\User;
+use App\Exports\Export;
+use Illuminate\Pagination\LengthAwarePaginator;
+use Illuminate\Pagination\Paginator;
+use Maatwebsite\Excel\Facades\Excel;
+
+
+class OrderIssuePerformanceService
+{
+    public function getQuery(array $queryParam)
+    {
+        $user_id = $queryParam['user_id'] ?? '';
+        $owner_id = $queryParam['owner_id'] ?? '';
+        $timeFrame = $queryParam['timeFrame'] ?? '';
+        unset($queryParam['owner_id'], $queryParam['user_id'], $queryParam['timeFrame'],$queryParam['_token']);
+        $orderIssueProcessLog = OrderIssueProcessLog::query()->with(['user' => function ($query) use ($user_id) {
+            if ($user_id) {
+                $query->where('id', $user_id);
+            }
+        }, 'orderIssue.order.owner' => function ($query) use ($owner_id) {
+            if ($owner_id) {
+                $query->where('id', $owner_id);
+            }
+        }]);
+        $columnQueryRules = [
+            'create_start' => ['alias' => 'created_at', 'startDate' => ' 00:00:00'],
+            'create_end' => ['alias' => 'created_at', 'endDate' => ' 23:59:59'],
+        ];
+        if ($timeFrame ?? false) {
+            if ($timeFrame == 'day') {
+                $queryParam['create_start'] = date('Y-m-d');
+                $queryParam['create_end'] = date('Y-m-d');
+            } else if ($timeFrame == 'yesterday') {
+                $queryParam['create_start'] = date('Y-m-d', strtotime('-1 day'));
+                $queryParam['create_end'] = date('Y-m-d', strtotime('-1 day'));
+            } else if ($timeFrame) {
+                $date = date('Y-m-d', strtotime('-1 weeks', strtotime('Monday')));
+                $queryParam['create_start'] = $date;
+                $queryParam['create_end'] = date('Y-m-d');
+            } else if ($timeFrame == 'month') {
+                $queryParam['create_start'] = date('Y-m-1');
+                $queryParam['create_end'] = date('Y-m-d');
+            }
+        }
+        $orderIssueProcessLog = app(QueryService::class)->query($queryParam, $orderIssueProcessLog, $columnQueryRules);
+        return $orderIssueProcessLog;
+    }
+
+    public function paginate(array $params)
+    {
+        $paginate = $params['paginate'] ?? 50;
+        $page = $params['page'] ?? 1;
+        $data = $this->getAll($params);
+        $collection = collect($data);
+        $list = $collection->slice(($page - 1) * $paginate, $paginate)->all();
+        $option = ['path' => Paginator::resolveCurrentPath()];
+        $paginate = new LengthAwarePaginator($list, $collection->count(), $paginate, $page,$option );
+        return $paginate;
+    }
+
+    public function getAll($params)
+    {
+        $arr = OrderIssueProcessLog::all()->groupBy('user_id');
+        $owners = Owner::all();
+        $user_ids = array_keys($arr->toArray());
+        $data = [];
+        $total = 0;
+        foreach ($user_ids as $key => $value) {
+            $params['user_id'] = $value;
+            $user = User::find($value);
+            $orderIssueProcessLog = $this->getQuery($params)->get();
+            foreach ($owners as $owner) {
+                $createCount = $orderIssueProcessLog->where('user_id', $value)->where('orderIssue.order.owner.id', $owner['id'])->where('type', '创建')->count(); //创建
+                $endCount = $orderIssueProcessLog->where('user_id', $value)->where('orderIssue.order.owner.id', $owner['id'])->where('type', '结束')->count(); //结束
+                $treatmentCount = $orderIssueProcessLog->where('user_id', $value)->where('orderIssue.order.owner.id', $owner['id'])->where('type', '处理')->count(); //处理
+                $sum = $createCount + $endCount + $treatmentCount;
+                if ($sum == 0) {
+                    continue;
+                }
+                $total++;
+                array_push($data, ['id'=>$total,'user' => $user['name'], 'owner' => $owner['name'], 'createCount' => $createCount, 'endCount' => $endCount, 'treatmentCount' => $treatmentCount, 'sum' => $sum]);
+            }
+        }
+        return $data;
+    }
+
+    public function exportPerformance(array $params)
+    {
+        $performance = $this->getAll($params);
+        $row = [['user'=>'客服','owner'=>'客户','createCount'=>'创建数','treatmentCount' =>'处理数','endCount'=>'完结数','sum'=>'总数']];
+        return  Excel::download(new Export($row,$performance),date('YmdHis', time()).'-客服绩效.xlsx');
+    }
+
+
+}

+ 21 - 7
app/Services/OrderIssueService.php

@@ -88,24 +88,32 @@ class OrderIssueService
                     $query->where('logistic_number', $logistic_number);
                 });
             }
+            if(($arr['good_barcode'] ?? false) ||($arr['good_name'] ?? false)){
+                $query->whereHas('packages',function($query) use ($arr){
+                    $query->whereHas('commodities',function($query) use ($arr){
+                        $query->whereHas('commodity',function($query) use ($arr){
+                            if($arr['good_barcode'] ?? false){
+                                $query->where('sku',$arr['good_barcode']);
+                            }
+                            if($arr['good_name'] ?? false){
+                                $query->where('name',$arr['good_name']);
+                            }
+                        });
+                    });
+                });
+            }
         });
         return $query;
     }
 
     public function getRejectedBillQuery(array $arr, $query)
     {
-        if (($arr['id_quality_label'] ?? false) || ($arr['good_barcode'] ?? false) || ($arr['good_name'] ?? false)) {
+        if ($arr['id_quality_label'] ?? false) {
             $query->whereHas('rejectedBill', function ($query) use ($arr) {
                 $query->whereHas('items', function ($query) use ($arr) {
                     if ($arr['id_quality_label'] ?? false) {
                         $query->where('id_quality_label', $arr['id_quality_label']);
                     }
-                    if ($arr['good_barcode'] ?? false) {
-                        $query->where('barcode_goods', $arr['good_barcode']);
-                    }
-                    if ($arr['good_name'] ?? false) {
-                        $query->where('name_goods', 'like', $arr['good_name']);
-                    }
                 });
             });
         }
@@ -205,6 +213,12 @@ class OrderIssueService
             if ($rejectedBill) {
                 $orderIssue->rejected_bill_id = $rejectedBill['id'];
                 $orderIssue->save();
+            }else {
+                $rejectedBill =  RejectedBill::where('order_number',$orderHeader['orderNo'])->first();
+                if($rejectedBill){
+                    $orderIssue->rejected_bill_id = $rejectedBill['id'];
+                    $orderIssue->save();
+                }
             }
         }
         $this->judgeRejectingStatus($orderIssue);

+ 18 - 5
app/Services/OrderPackageCommoditiesService.php

@@ -6,6 +6,7 @@ use App\Commodity;
 use App\OracleActAllocationDetails;
 use App\OracleBasSKU;
 use App\OracleDOCOrderDetail;
+use App\OracleDOCOrderHeader;
 use App\Order;
 use App\OrderPackage;
 use App\OrderPackageCommodities;
@@ -25,7 +26,7 @@ class OrderPackageCommoditiesService
     public function basedOnActAllocationDetailsStoreByOrderNo($orderNo,$orderPackage){
         $details = OracleActAllocationDetails::where('orderno', $orderNo)->get();
         foreach ($details as $key => $detail) {
-            $this->createByActAllocationDetails($detail, $orderPackage);
+            $this->createByActAllocationDetail($detail, $orderPackage);
         }
     }
 
@@ -33,11 +34,25 @@ class OrderPackageCommoditiesService
     {
         $details = OracleActAllocationDetails::where('picktotraceid', $orderPackage->logistic_number)->get();
         foreach ($details as $key => $detail) {
-            $this->createByActAllocationDetails($detail, $orderPackage);
+            $this->createByActAllocationDetail($detail, $orderPackage);
         }
     }
 
-    private function createByActAllocationDetails($detail, OrderPackage $orderPackage)
+    public function basedOnActAllocationDetail(Order $order,OracleDOCOrderHeader $header,array  $details){
+        foreach ($details as $detail){
+            $logistic_number  = $details['picktotraceid'];
+            if($logistic_number == '*' || $logistic_number== null || $logistic_number== ''){
+                $logistic_number = $header['soreference5'];
+                if($logistic_number  == '*' || $logistic_number== null || $logistic_number== ''){
+                    continue;
+                }
+            }
+            $orderPackage = OrderPackage::firstOrCreate(['order_id'=>$order['id'],'logistic_number',$details]);
+            $this->createByActAllocationDetail($detail, $orderPackage);
+        }
+    }
+
+    private function createByActAllocationDetail($detail, OrderPackage $orderPackage)
     {
         $owner = Owner::where(['code' => $detail->customerid])->first();      // 货主
         $sku = $detail->sku;
@@ -50,8 +65,6 @@ class OrderPackageCommoditiesService
         return OrderPackageCommodities::create(['order_package_id' => $orderPackage['id'], 'commodity_id' => $commodity['id'], 'amount' => $detail['qty']]);
     }
 
-
-
     public function getOrderPackageCommoditiesByOrderId($orderId)
     {
         $order = Order::where('id', $orderId)->first();

+ 40 - 3
app/Services/OrderPackageService.php

@@ -7,6 +7,8 @@ use App\OracleDOCOrderDetail;
 use App\OracleDOCOrderHeader;
 use App\Order;
 use App\OrderPackage;
+use App\OrderPackageCommodities;
+use Tightenco\Collect\Support\Arr;
 
 class OrderPackageService
 {
@@ -23,6 +25,7 @@ class OrderPackageService
         $orderHeader = OracleDOCOrderHeader::where('OrderNo', $order['code'])->first();
         $orderDetailCount = OracleDOCOrderDetail::where('OrderNo', $order['code'])->count();
         $logistic_number = null;
+
         if ($actAllocationCount == 0) {  // 通过oracle Order Detail
             $logistic_number = $orderHeader['soreference5'];
             if ($orderDetailCount == 0) {return null;}
@@ -42,7 +45,7 @@ class OrderPackageService
                     $logistic_number = $detail['picktotraceid'];
                     if ($logistic_number == null || $logistic_number == '*') {
                         $logistic_number = $orderHeader['soreference5'];
-                        if ($logistic_number == null || $logistic_number == '*')  return null;
+                        if ($logistic_number == null || $logistic_number == '*')  {return null;}
                         $orderPackage = OrderPackage::where(['order_id' => $order['id'], 'logistic_number' => $logistic_number])->first();
                         if($orderPackage)continue;
                         $orderPackage = OrderPackage::create(['order_id' => $order['id'], 'logistic_number' => $logistic_number]);
@@ -50,15 +53,49 @@ class OrderPackageService
                         continue;
                     }
                     $orderPackage = OrderPackage::where(['order_id' => $order['id'], 'logistic_number' => $logistic_number])->first();
-                    if ($orderPackage) continue;
+                    if ($orderPackage) {continue;}
                     $orderPackage = OrderPackage::create(['order_id' => $order['id'], 'logistic_number' => $logistic_number]);
                     $orderPackageCommoditiesService->basedOnActAllocationDetailsStore($orderPackage);
                 }
             }
+        }else{
+            $this->updateOrderPackageInfo($order);
         }
         return OrderPackage::with(['commodities' => function ($query) {
             return $query->with(['commodity']);
         }])->get();
     }
 
-}
+    public function updateOrderPackageInfo(Order $order)
+    {
+        $orderHeader = OracleDOCOrderHeader::where('orderNo', $order['code'])->first();
+        if ($orderHeader['oracleBASCode_codename_c'] == $order['wam_status']) {
+            return;
+        }
+        $orderPackages = OrderPackage::where('order_id', $order['id'])->get();
+        $orderPackageCommodities = OrderPackageCommodities::with('commodity')->whereIn('order_package_id', data_get($orderPackages, '*.id'))->get();
+        $actAllocationDetails = OracleActAllocationDetails::where('orderNo', $order['client_code'])->get();
+        if (count($orderPackageCommodities) < count($actAllocationDetails)) {
+            $actAllocationDetails =  $actAllocationDetails->reject(function($value,$key) use (&$orderPackageCommodities){
+                $bool = false;
+                $count = 0;
+                $orderPackageCommodities->reject(function($value1,$key1)use($value,&$bool,$count){
+                    if($count>0){return false;}
+                    if($value1->commodity['sku'] == $value['sku'] && $value1['amount'] == intval($value['qty']) ){
+                        $bool = true;
+                        $count++;
+                        return true;
+                    }else{
+                        return false;
+                    }
+                });
+                return $bool;
+            });
+        }
+        $orderPackageCommoditiesService = app('orderPackageCommoditiesService');
+        $orderPackageCommoditiesService->basedOnActAllocationDetail($order, $orderHeader, $actAllocationDetails);
+        $order['wam_status'] = $orderHeader['oracleBASCode_codename_c'];
+        $order->save();
+    }
+
+ }

+ 25 - 17
app/Services/OrderService.php

@@ -26,25 +26,31 @@ class OrderService
     public function findOrCreateByClientCode($clientCode)
     {
         $order = Order::where('client_code', $clientCode)->first();
-        $orderHeader = OracleDOCOrderHeader::where('SOREFERENCE1',$clientCode )->first();
+        $orderHeader = OracleDOCOrderHeader::where('SOREFERENCE1', $clientCode)->first();
         if ($orderHeader == null) {
             return null;
         }
         $orderHeadAttr = $orderHeader->toArray();
         if ($order == null) {
             $customer_name = $orderHeadAttr['oracleBASCustomer_descr_c'];
-            $owner = Owner::firstOrCreate(['name' => $customer_name, 'code' => $orderHeadAttr['customerid']]);
-            $owner_id = $owner->id;
+            $owner = Owner::where('code', $orderHeadAttr['customerid'])->first();
+            if (!$owner) {
+                $owner = Owner::create(['code' => $orderHeadAttr['customerid'], 'name' => $customer_name]);
+            }
+            $owner_id = $owner['id'];
             $shop_name = $orderHeadAttr['issuepartyname'];
             $shop_Id = null;
             if ($shop_name) {
                 $shop = Shop::firstOrCreate(['name' => $shop_name, 'owner_id' => $owner_id]);
-                $shop_Id = $shop->id;
+                $shop_Id = $shop['id'];
             }
             $logistics = Logistic::where(['name' => $orderHeadAttr['carriername']])->first();
             $logistics_id = null;
             if ($logistics) {
-                $logistics_id = $logistics->id;
+                $logistics_id = $logistics['id'];
+            } else {
+                $logistics = Logistic::create(['name'=>$orderHeadAttr['carriername'],'code'=>$orderHeadAttr['CARRIERID']]);
+                $logistics_id = $logistics['id'];
             }
             $arr = [
                 'code' => $orderHeadAttr['orderno'],
@@ -59,7 +65,7 @@ class OrderService
                 'city' => $orderHeadAttr['c_city'],
                 'district' => $orderHeadAttr['c_district'],
                 'address' => $orderHeadAttr['c_address1'],
-                'client_code'=> $orderHeadAttr['soreference1'],
+                'client_code' => $orderHeadAttr['soreference1'],
             ];
             $order = Order::create($arr);
             $orderPackageService = app('orderPackageService');
@@ -77,25 +83,27 @@ class OrderService
         }])->where('id', $orderId)->first();
     }
 
-    public function getRejectedBillOfClientCode($clientCode){
-        $orderHeader = OracleDOCOrderHeader::where('SOReference1',$clientCode)->first();
-        if(!$orderHeader){
+    public function getRejectedBillOfClientCode($clientCode)
+    {
+        $orderHeader = OracleDOCOrderHeader::where('SOReference1', $clientCode)->first();
+        if (!$orderHeader) {
             return null;
         }
-        $ASNHeader =  OracleDOCASNHeader::where('ASNReference2',$orderHeader->soreference2)->first();
-        if(!$ASNHeader){
+        $ASNHeader = OracleDOCASNHeader::where('ASNReference2', $orderHeader->soreference2)->first();
+        if (!$ASNHeader) {
             return null;
         }
-        return  RejectedBill::with(['owner','logistic','items'])->where('logistic_number_return',$ASNHeader->asnreference2)->first();
+        return RejectedBill::with(['owner', 'logistic', 'items'])->where('logistic_number_return', $ASNHeader->asnreference2)->first();
     }
 
-    public function findOrCreteByLogisticNumberReturn($logisticNumberReturn){
-        $ASNHeader = OracleDOCASNHeader::where('ASNReference3',$logisticNumberReturn)->first();
-        if(!$ASNHeader){
+    public function findOrCreteByLogisticNumberReturn($logisticNumberReturn)
+    {
+        $ASNHeader = OracleDOCASNHeader::where('ASNReference3', $logisticNumberReturn)->first();
+        if (!$ASNHeader) {
             return null;
         }
-        $orderHeader = OracleDOCOrderHeader::where('SOReference1',$ASNHeader->ASNReference2);
-        if(!$orderHeader){
+        $orderHeader = OracleDOCOrderHeader::where('SOReference1', $ASNHeader->ASNReference2);
+        if (!$orderHeader) {
             return null;
         }
         return $this->findOrCreateByClientCode($orderHeader[soreference1]);

+ 1 - 1
app/Waybill.php

@@ -68,7 +68,7 @@ class Waybill extends Model
     }
 
     public function carType(){
-        return $this->belongsTo('App\CarType','carType_id','id');
+        return $this->hasOne('App\CarType','id','carType_id');
     }
 
     public function waybillAuditLogs(){

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

@@ -0,0 +1,38 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class AddOrderIssuePerformanceStaistics extends Migration
+{
+
+
+    protected $authNames = [ "订单管理-问题件-绩效统计"];
+
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        //
+        foreach ($this->authNames as $authName){
+            \App\Authority::create(['name'=>$authName,'alias_name'=>$authName,'permission'=>'允许']);
+        }
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        //
+        foreach ($this->authNames as $authName){
+            \App\Authority::where(['name'=>$authName,'alias_name'=>$authName])->delete();
+        }
+    }
+}

+ 2 - 2
public/js/app.js

@@ -61974,8 +61974,8 @@ module.exports = tempTip;
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
-__webpack_require__(/*! D:\Reald\desktop\BsWAS\src\resources\js\app.js */"./resources/js/app.js");
-module.exports = __webpack_require__(/*! D:\Reald\desktop\BsWAS\src\resources\sass\app.scss */"./resources/sass/app.scss");
+__webpack_require__(/*! D:\phpstudy_pro\WWW\bswas\resources\js\app.js */"./resources/js/app.js");
+module.exports = __webpack_require__(/*! D:\phpstudy_pro\WWW\bswas\resources\sass\app.scss */"./resources/sass/app.scss");
 
 
 /***/ }),

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

@@ -27,6 +27,7 @@ const query = function getQueryForm(data) {
             if(!this.autoSubmit){
                 return;
             }
+            console.log(_data);
             saveSearchOnCookie();
             let form = $("<form method='" + _this.method +"'></form>");
             for (const key in _data) {
@@ -682,6 +683,7 @@ const query = function getQueryForm(data) {
         let killings=_data[dom.name].killings;
         if(killings){
             killings.forEach(function(targetName){
+                _data[targetName].value= '';
                 redenerSearchFormOnData(_data[targetName].name, '', _data[targetName].mold);
             })
         }

+ 1 - 1
resources/views/inventory/statement/changeInventory.blade.php

@@ -56,7 +56,7 @@
 
 @section('lastScript')
     <script type="text/javascript" src="{{asset('js/queryForm/export200818a.js')}}"></script>
-    <script type="text/javascript" src="{{asset('js/queryForm/queryForm200825.js')}}"></script>
+    <script type="text/javascript" src="{{asset('js/queryForm/queryForm200828a.js')}}"></script>
     <script type="text/javascript" src="{{asset('js/queryForm/header200826b.js')}}"></script>
     <script>
         let vue=new Vue({

+ 1 - 1
resources/views/inventory/statement/dailyLog.blade.php

@@ -80,7 +80,7 @@
 
 @section('lastScript')
     <script type="text/javascript" src="{{asset('js/queryForm/export200818a.js')}}"></script>
-    <script type="text/javascript" src="{{asset('js/queryForm/queryForm200818a.js')}}"></script>
+    <script type="text/javascript" src="{{asset('js/queryForm/queryForm200828a.js')}}"></script>
     <script type="text/javascript" src="{{asset('js/queryForm/header200819.js')}}"></script>
     <script>
         let vue = new Vue({

+ 1 - 1
resources/views/inventory/stockInventory/mission.blade.php

@@ -90,7 +90,7 @@
 
 @section('lastScript')
     <script type="text/javascript" src="{{asset('js/queryForm/export200818a.js')}}"></script>
-    <script type="text/javascript" src="{{asset('js/queryForm/queryForm200818a.js')}}"></script>
+    <script type="text/javascript" src="{{asset('js/queryForm/queryForm200828a.js')}}"></script>
     <script>
         new Vue({
             el: "#list",

+ 1 - 1
resources/views/maintenance/role/index.blade.php

@@ -50,7 +50,7 @@
 @endsection
 
 @section('lastScript')
-    <script type="text/javascript" src="{{asset('js/queryForm/queryForm200825.js')}}"></script>
+    <script type="text/javascript" src="{{asset('js/queryForm/queryForm200828a.js')}}"></script>
     <script type="text/javascript" src="{{asset('js/queryForm/header200826b.js')}}"></script>
     <script>
         new Vue({

+ 1 - 1
resources/views/maintenance/user/index.blade.php

@@ -63,7 +63,7 @@
     <script>
 
     </script>
-    <script type="text/javascript" src="{{asset('js/queryForm/queryForm200825.js')}}"></script>
+    <script type="text/javascript" src="{{asset('js/queryForm/queryForm200828a.js')}}"></script>
     <script type="text/javascript" src="{{asset('js/queryForm/header200826b.js')}}"></script>
     <script>
         new Vue({

+ 1 - 1
resources/views/order/index/delivering.blade.php

@@ -140,7 +140,7 @@
 
 @section('lastScript')
     <script type="text/javascript" src="{{asset('js/queryForm/export200818a.js')}}"></script>
-    <script type="text/javascript" src="{{asset('js/queryForm/queryForm200825.js')}}"></script>
+    <script type="text/javascript" src="{{asset('js/queryForm/queryForm200828a.js')}}"></script>
     <script type="text/javascript" src="{{asset('js/queryForm/header200826b.js')}}"></script>
     <script>
         let vue=new Vue({

+ 2 - 10
resources/views/order/issue/edit.blade.php

@@ -52,15 +52,7 @@
                         <input type="text" class="form-control" name="logistic_number" v-model="rejectedBill.logistic_number_return" @blur="getRejectedBill" id="logistic_number_return">
                     </div>
                 </div>
-                <div class="form-group row" >
-                    <label class="col-2 col-form-label text-right">退回单号客户</label>
-                    <div class="col-8 form-group">
-                        <select class="form-control" name="id_owner" v-model="rejectedBill.id_owner" id="id_owner">
-                            <option value></option>
-                            <option v-for="owner in owners" :value="owner.id">@{{ owner.name }}</option>
-                        </select>
-                    </div>
-                </div>
+
                 <div class="form-group row" >
                     <label class="col-2 col-form-label text-right">退回单号承运商</label>
                     <div class="col-8 form-group">
@@ -95,7 +87,7 @@
                     </div>
                 </div>
                 <div class="form-group row">
-                    <label class="col-2 col-form-label text-right">处理结果</label>
+                    <label class="col-2 col-form-label text-right">情况说明</label>
                     <div class="col-8">
                         <textarea name="result_explain" class="form-control" v-model="orderIssues.result_explain"></textarea>
                     </div>

+ 23 - 27
resources/views/order/issue/index.blade.php

@@ -102,9 +102,9 @@
                         <th class="  align-middle" colspan="5" v-if="isShowRejectedBill" style="min-width: 450px">
                             返回商品明细
                         </th>
-                        <th class="bg-whit  align-middle" rowspan="2" style="min-width: 115px">处理结果</th>
+                        <th class="bg-whit  align-middle" rowspan="2" style="min-width: 115px">情况说明</th>
                         <th class="  align-middle" rowspan="2" style="min-width: 115px">问题类别</th>
-                        <th class="  align-middle" colspan="3" style="min-width: 115px">情况说明</th>
+                        <th class="  align-middle" colspan="3" style="min-width: 115px">处理结果</th>
                         <th class="  align-middle" rowspan="2" v-if="!isShowSecondOrderInfo"
                             style="width:50px">展开
                         </th>
@@ -312,7 +312,7 @@
                                 </button>
                             </div>
 
-                            <div style="position: absolute;display: none;margin-top: -40px" class="add-btn"
+                            <div style="position: absolute;display: none;margin-top: -35px" class="add-btn"
                                  :id="'AddBtn'+orderIssue.id">
                                 <button type="button" class="btn  btn-primary "
                                         @click="showAddDiv('AddLog_'+orderIssue.id)">新
@@ -320,26 +320,24 @@
                             </div>
 
                             <template v-if="orderIssue.logs" class="p-0 m-0 ">
-                                <table class="table table-sm p-0 m-0 " :id="'logs'+orderIssue.id"
-                                       :class="orderIssue.logs.length > 1?'collapse':''">
-                                    <tr v-for="log in orderIssue.logs"  class="del-tr" style="position:static" align="center"
-                                        v-on:mouseover="showDelBtn($event)"
-                                        v-on:mouseleave="hideDelBtn($event)" >
-                                        <td>@{{ log.type }}</td>
-                                        <td>
-                                            <p class="text-wrap mb-0" style="max-width: 200px">@{{ log.content }}</p>
-                                        </td>
-                                        <td>@{{ log.user.name }}</td>
+                                <table class="table table-sm p-0 m-0 " :id="'logs'+orderIssue.id" :data-value="orderIssue.logShow == null ? orderIssue.logShow=false:''">
+                                    <tr style="position:static" align="center" v-for="(log,index) in orderIssue.logs"
+                                        :class="(orderIssue.logs.length <= 2 ? '' : ((index === 0 || orderIssue.logShow )  ? '' : 'd-none' )) "
+                                        v-on:mouseover="showDelBtn($event)" v-on:mouseleave="hideDelBtn($event)" >
+                                        <td style="min-width: 75px">@{{ log.type }}</td>
+                                        <td style="min-width: 200px">@{{ log.content }}</td>
+                                        <td style="min-width: 120px">@{{ log.user.name }}</td>
                                         <td style="" class="m-0 p-0 border-0">
                                             <button type="button" class="btn btn-sm btn-outline-danger m-0 del-btn invisible"
                                                     @click="deleteOrderIssueLog(log.id,orderIssue.id)">删</button>
                                         </td>
                                     </tr>
                                 </table>
-                                <button v-if="orderIssue.logs.length > 1" type="button" class="btn btn-sm btn-outline-primary align-middle mt-1" data-toggle="collapse" aria-expanded="false"
-                                        :id="'logsBtn'+orderIssue.id"
-                                        :data-target="'#logs'+orderIssue.id" :aria-controls="'logs'+orderIssue.id"
-                                        @click="toggleLogs(orderIssue.id,orderIssue.logs.length)">
+                                <button type="button" class="btn btn-sm btn-outline-primary align-middle mt-1"
+                                        v-if="orderIssue.logs.length > 2"
+                                        :data-value="orderIssue.logs.length"
+                                        :data-count="orderIssue.logShow"
+                                        @click="toggleLogs(orderIssue,$event)">
                                     记录共@{{ orderIssue.logs.length }}条,点击展开
                                 </button>
                             </template>
@@ -533,7 +531,7 @@
             -webkit-animation-play-state: running;
         }
     </style>
-    <script type="text/javascript" src="{{asset('js/queryForm/queryForm200825.js')}}"></script>
+    <script type="text/javascript" src="{{asset('js/queryForm/queryForm200828a.js')}}"></script>
     <script type="text/javascript" src="{{asset('js/queryForm/export200818a.js')}}"></script>
     <script>
         let listVue = new Vue({
@@ -777,7 +775,7 @@
                                 if (_this.checkData.includes(item.id)) {
                                     let logisticNumbers = item.order.logisticNumbers;
                                     if (logisticNumbers.length > 0) {
-                                        orderNos.push(logisticNumbers);
+                                        orderNos =  orderNos.concat(logisticNumbers);
                                     }
                                 }
                             })
@@ -786,7 +784,7 @@
                                 tempTip.show('勾选的问题件没有对应的快递单号');
                                 return;
                             }
-                            let p = $('<input id="copy" value="' + orderNos.join(',') + '"/>');
+                            let p = $('<textarea id="copy" />'+orderNos.join('\n')+'</textarea>');
                             p.attr('opacity', 0);
                             $('body').append(p);
                             let p_ele = document.getElementById('copy');
@@ -969,14 +967,13 @@
                         button.text("分箱" + length + "件,点击展开");
                     }
                 },
-                toggleLogs(id, length) {
-                    let button = $("#logsBtn" + id);
-                    let isShow = button.attr('aria-expanded');
-                    if (isShow === 'false') {
-                        button.text('点击收起');
+                toggleLogs(orderIssue, e) {
+                    if ( orderIssue.logShow  === false) {
+                        $(e.target).text('点击收起');
                     } else {
-                        button.text("记录共" + length + "条,点击展开");
+                        $(e.target).text("记录共" + $(e.target).attr('data-value') + "条,点击展开");
                     }
+                    orderIssue.logShow = !orderIssue.logShow;
                 },
                 toggleOrder(id, length) {
                     let button = $("#orderBtn" + id);
@@ -995,7 +992,6 @@
                     } else {
                         button.text("商品" + length + "件,点击展开");
                     }
-                    console.log(33)
                 },
                 toggleRejectedBill(id, length) {
                     let button = $("#rejectedBillBtn" + id);

+ 7 - 1
resources/views/order/issue/menu.blade.php

@@ -19,11 +19,17 @@
                         <a class="nav-link" href="{{url('order/issue/excelImport')}}" :class="{active:isActive('excelImport',3)}">导入</a>
                     </li>
                 @endcan
+                @can('订单管理-问题件-绩效统计')
+                    <li class="nav-item" >
+                        <a class="nav-link" href="{{url('orderIssuePerformance/index')}}" :class="{active:isActive('orderIssuePerformance',1)}">绩效统计</a>
+                    </li>
+                @endcan
                 @can('订单管理-问题件-编辑')
                     <li class="nav-item" :class=" isActive('edit',3) ? '' : 'd-none' ">
-                        <a class="nav-link" href="{{url('order/issue/c')}}" :class="{active:isActive('edit',3)}">修改</a>
+                        <a class="nav-link" href="{{URL::current()}}" :class="{active:isActive('edit',3)}">修改</a>
                     </li>
                 @endcan
+
             </ul>
         </div>
     </div>

+ 103 - 7
resources/views/order/issue/performance.blade.php

@@ -1,25 +1,121 @@
 @extends('layouts.app')
-@section('title')问题件-工作量@endsection
+@section('title')订单管理-问题件-绩效统计@endsection
 
 @section('content')
     @component("order.issue.menu")@endcomponent
-    <div class="container-fluid" id="wave_div">
+    <div class="container-fluid none" id="performance_div">
         <div style="min-width: 2000px;">
             <div id="form_div" style="min-width: 1950px;" class="bg-white"></div>
-            <table class="table table-sm table-striped table-bordered table-hover card-body mt-2 ">
-                <td>
 
-                </td>
+            <div class="form-inline mt-1 ">
+                <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="exportAll()" href="javascript:">导出所有页</a>
+                    </div>
+                </span>
+            </div>
+
+            <table class="table table-sm table-striped table-bordered table-hover card-body mt-2 ">
+                <tr>
+                    <th>
+                        <input type="checkbox" id="all" @click="checkAll($event)">
+                    </th>
+                    <th>序号</th>
+                    <th>客服</th>
+                    <th>客户</th>
+                    <th>创建数</th>
+                    <th>处理数</th>
+                    <th>完结数</th>
+                    <th>总数</th>
+                </tr>
+                <tr v-for="(performance,index) in performance.data">
+                    <td>
+                        <input type="checkbox"  v-model="checkData" :value="index+1">
+                    </td>
+                    <td>@{{ index+1 }}</td>
+                    <td>@{{ performance.user }}</td>
+                    <td>@{{ performance.owner }}</td>
+                    <td>@{{ performance.createCount }}</td>
+                    <td>@{{ performance.treatmentCount }}</td>
+                    <td>@{{ performance.endCount }}</td>
+                    <td>@{{ performance.sum }}</td>
+                </tr>
             </table>
 
+            <a :href="performance.prev_page_url" class="btn btn-sm" :class="performance.current_page === 1 ?'':'btn-outline-primary'"
+               :disabled="performance.current_page === 1">上一页</a>
+            <a :href="performance.next_page_url" class="btn btn-sm"
+               :class="performance.current_page === performance.last_page ?'':'btn-outline-primary'"
+               :disabled="performance.current_page === performance.lastPage">下一页</a>
+            <input @keyup.enter="pageTurning($event)" class="form-control-sm ml-3 tooltipTarget"
+                   :placeholder="'当前页数:'+performance.current_page+'/'+performance.last_page" title="去往指定页">
+            <span class="text-muted m-1">共 @{{performance.total}} 条 </span>
         </div>
     </div>
 
 @endsection
 @section('lastScript')
-    <script type="text/javascript" src="{{asset('js/queryForm/queryForm.js')}}"></script>
+    <script type="text/javascript" src="{{asset('js/queryForm/queryForm200828a.js')}}"></script>
+    <script type="text/javascript" src="{{asset('js/queryForm/export200818a.js')}}"></script>
     <script>
-
+        let performance_vue = new Vue({
+            el:'#performance_div',
+            data:{
+                performance:{!! $performance->toJson() !!},
+                option:{
+                    timeFrame:'{{$options['timeFrame']}}',
+                    create_start:'{{$options['create_start']}}',
+                    create_end:'{{$options['create_end']}}',
+                },
+                checkData:[],
+            },
+            mounted:function(){
+                $('#performance_div').removeClass("d-none");
+                let data =[
+                    [{name:'create_start',type:'dateTime',tip:'统计时段开始',placeholder:'统计时段开始',killings:['timeFrame']},
+                    {name:'create_end',type:'dateTime',tip:'统计时段结束',placeholder:'统计时段结束',killings:['timeFrame']},
+                    {name:'timeFrame',type:'select',tip:'',placeholder:'选择时段',
+                        data:[{name:"day",value:'当天'},{name:'yesterday',value:'昨日'},{name:"week",value:'本周'},{name:"month",value:'本月'}],
+                        killings:['create_start','create_end'],
+                    }]
+                ];
+                let queryForm = new query({
+                    el:'#form_div',
+                    condition:data,
+                })
+                queryForm.init();
+            },
+            methods: {
+                pageTurning(e){
+                    let page = $(e.target).val();
+                    if(page){
+                        window.location = this.performance.path+'?page='+page;
+                    }
+                },
+                exportAll:function(){
+                    let search = '?timeFrame='+this.option.timeFrame+'&create_start='+this.option.create_start+'&create_end'+this.option.create_end;
+                    let url = '{{url('orderIssuePerformance/export')}}'+search;
+                    let token='{{ csrf_token() }}';
+                    excelExport(false,'',url,null,token);
+                },
+                checkAll(e) {
+                    if (e.target.checked) {
+                        this.performance.data.forEach((el, i) => {
+                            if (this.checkData.indexOf(el.id) == '-1') {
+                                this.checkData.push(el.id);
+                            }
+                        });
+                    } else {
+                        this.checkData = [];
+                    }
+                },
+            },
+        });
     </script>
 
 @endsection

+ 1 - 1
resources/views/order/wave/search.blade.php

@@ -82,7 +82,7 @@
 @endsection
 
 @section("lastScript")
-    <script type="text/javascript" src="{{asset('js/queryForm/queryForm200825.js')}}"></script>
+    <script type="text/javascript" src="{{asset('js/queryForm/queryForm200828a.js')}}"></script>
     <script>
         let vueList = new Vue({
             el: "#wave_div",

+ 1 - 1
resources/views/personnel/laborReport/index.blade.php

@@ -211,7 +211,7 @@
 
 @section('lastScript')
     <script type="text/javascript" src="{{asset('js/queryForm/export200818a.js')}}"></script>
-    <script type="text/javascript" src="{{asset('js/queryForm/queryForm200825.js')}}"></script>
+    <script type="text/javascript" src="{{asset('js/queryForm/queryForm200828a.js')}}"></script>
     <script type="text/javascript" src="{{asset('js/queryForm/header200826b.js')}}"></script>
     <script>
         let today=(new Date());

+ 1 - 1
resources/views/process/index.blade.php

@@ -462,7 +462,7 @@
 
 @section('lastScript')
     <script type="text/javascript" src="{{asset('js/queryForm/export200818a.js')}}"></script>
-    <script type="text/javascript" src="{{asset('js/queryForm/queryForm200825.js')}}"></script>
+    <script type="text/javascript" src="{{asset('js/queryForm/queryForm200828a.js')}}"></script>
     <script type="text/javascript" src="{{asset('js/queryForm/header200826b.js')}}"></script>
     <script>
         let vue = new Vue({

+ 1 - 1
resources/views/rejected/search/general.blade.php

@@ -176,7 +176,7 @@
         let csrfInput='@csrf';
     </script>
     <script src="{{asset('js/queryForm/export200818a.js')}}"></script>
-    <script src="{{asset('js/queryForm/queryForm200825.js')}}"></script>
+    <script src="{{asset('js/queryForm/queryForm200828a.js')}}"></script>
     <script type="text/javascript" src="{{asset('js/queryForm/header200826b.js')}}"></script>
     <script>
         let vue = new Vue({

+ 1 - 1
resources/views/waybill/index.blade.php

@@ -334,7 +334,7 @@
         }
     </style>
     <script type="text/javascript" src="{{asset('js/queryForm/export200818a.js')}}"></script>
-    <script type="text/javascript" src="{{asset('js/queryForm/queryForm200825.js')}}"></script>
+    <script type="text/javascript" src="{{asset('js/queryForm/queryForm200828a.js')}}"></script>
     <script type="text/javascript" src="{{asset('js/queryForm/header200826b.js')}}"></script>
     <script>
         let vue = new Vue({

+ 1 - 1
resources/views/weight/package/index.blade.php

@@ -58,7 +58,7 @@
 
 @section('lastScript')
     <script type="text/javascript" src="{{asset('js/queryForm/export200818a.js')}}"></script>
-    <script type="text/javascript" src="{{asset('js/queryForm/queryForm200825.js')}}"></script>
+    <script type="text/javascript" src="{{asset('js/queryForm/queryForm200828a.js')}}"></script>
     <script type="text/javascript" src="{{asset('js/queryForm/header200826b.js')}}"></script>
     <script>
             @if(isset($request))

+ 5 - 0
routes/web.php

@@ -368,3 +368,8 @@ Route::group(['prefix'=>'order'],function(){
     Route::get('issue/edit/{id}','OrderIssueController@edit');// 编辑
     Route::match(['get','post'],'issue/export','OrderIssueController@exportOrderIssue');// 导出
 });
+
+Route::group(['prefix'=>'orderIssuePerformance'],function(){
+        Route::get('index','OrderIssuePerformanceController@index');
+        Route::any('export','OrderIssuePerformanceController@export');
+});

+ 1 - 1
webpack.mix.js

@@ -19,7 +19,7 @@ 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/queryForm200825.js');
+mix.copy('resources/js/queryForm/queryForm.js','public/js/queryForm/queryForm200828a.js');
 mix.copy('resources/js/queryForm/export.js','public/js/queryForm/export200818a.js');
 mix.js('resources/js/queryForm/header.js','public/js/queryForm/header200826b.js');