Bläddra i källkod

Merge branch 'master' into yang

# Conflicts:
#	app/Jobs/RejectedPushJob.php
#	resources/views/rejected/rejectedPushTask/index.blade.php
#	resources/views/rejected/search/general.blade.php
yuang 4 år sedan
förälder
incheckning
06e5a33999
57 ändrade filer med 819 tillägg och 397 borttagningar
  1. 17 0
      app/Console/Commands/FluxOrderFix.php
  2. 10 6
      app/Filters/WorkOrderFilters.php
  3. 0 4
      app/Http/Controllers/ControlPanelController.php
  4. 1 5
      app/Http/Controllers/CustomerController.php
  5. 1 1
      app/Http/Controllers/DeliveryAppointmentController.php
  6. 24 0
      app/Http/Controllers/HandInStorageController.php
  7. 6 5
      app/Http/Controllers/KpiController.php
  8. 1 1
      app/Http/Controllers/OrderDetailController.php
  9. 1 6
      app/Http/Controllers/PackageLogisticController.php
  10. 3 5
      app/Http/Controllers/ReceivingDashboardController.php
  11. 7 50
      app/Http/Controllers/RejectedController.php
  12. 1 6
      app/Http/Controllers/RejectedPushTaskController.php
  13. 8 38
      app/Http/Controllers/TestController.php
  14. 2 1
      app/Http/Controllers/WorkOrderController.php
  15. 2 12
      app/Jobs/RejectedPushJob.php
  16. 1 1
      app/LaborCompanyDispatchDetail.php
  17. 10 4
      app/RejectedAnalyzeOwner.php
  18. 0 1
      app/Services/DbOpenService.php
  19. 3 1
      app/Services/LogisticService.php
  20. 2 2
      app/Services/OracleDocAsnHerderService.php
  21. 1 1
      app/Services/OwnerAreaReportService.php
  22. 2 3
      app/Services/PackageService.php
  23. 2 1
      app/Services/ReceivingTaskService.php
  24. 18 15
      app/Services/RejectedBillService.php
  25. 33 9
      app/Services/RejectedService.php
  26. 0 1
      app/Services/RoleService.php
  27. 0 32
      app/Services/UserService.php
  28. 1 1
      app/Services/WaybillService.php
  29. 2 0
      app/Services/WorkOrderCommoditiesService.php
  30. 2 0
      app/Services/WorkOrderExpressAbnormalService.php
  31. 12 1
      app/Services/WorkOrderMistakeService.php
  32. 39 9
      app/Services/WorkOrderService.php
  33. 7 7
      app/Traits/LogisticSyncTrait.php
  34. 1 0
      app/WorkOrderCommodities.php
  35. 1 1
      config/api.php
  36. 32 0
      database/migrations/2022_03_03_095245_work_order_commodities_add_column_remark.php
  37. 32 0
      database/migrations/2022_03_15_080709_add_card_id_to_labor_company_dispatch_details_table.php
  38. 15 1
      resources/js/queryForm/queryForm.js
  39. 8 6
      resources/views/customer/project/area.blade.php
  40. 6 6
      resources/views/customer/project/create.blade.php
  41. 1 8
      resources/views/equipment/_detailInfo.blade.php
  42. 7 1
      resources/views/equipment/_location.blade.php
  43. 112 79
      resources/views/equipment/index.blade.php
  44. 1 1
      resources/views/maintenance/user/index.blade.php
  45. 38 0
      resources/views/order/workOrder/_owner_fill_work_order_modal.blade.php
  46. 30 7
      resources/views/order/workOrder/_work_order_show.blade.php
  47. 28 19
      resources/views/order/workOrder/index.blade.php
  48. 2 2
      resources/views/package/weigh/index.blade.php
  49. 5 1
      resources/views/personnel/laborApply/dispatch/detail/create.blade.php
  50. 6 1
      resources/views/personnel/laborApply/dispatch/detail/edit.blade.php
  51. 2 0
      resources/views/personnel/laborApply/dispatch/index.blade.php
  52. 4 1
      resources/views/rejected/rejectedPushTask/index.blade.php
  53. 18 6
      resources/views/rejected/search/general.blade.php
  54. 228 12
      resources/views/station/monitor/show.blade.php
  55. 15 13
      resources/views/store/receivingDashboard/punctualityProgress/index.blade.php
  56. 6 2
      resources/views/store/receivingDashboard/receivingTableList/index.blade.php
  57. 2 1
      routes/web.php

+ 17 - 0
app/Console/Commands/FluxOrderFix.php

@@ -41,6 +41,7 @@ class FluxOrderFix extends Command
     public function handle()
     {
         $this->fixEdisendflagAtWrong();
+        $this->youWuFixEdisendflagAtWrong();
     }
 
     public function fixEdisendflagAtWrong(){
@@ -55,5 +56,21 @@ class FluxOrderFix extends Command
             ->where('edisendtime','>',Carbon::now()->subDays(2))
             ->where('ediremarks2','<>','不支持的单据类型')
         ->update(['edisendflag'=>'N','manualflag'=>'N']);
+
+    }
+
+    public function youWuFixEdisendflagAtWrong(){
+        OracleDOCOrderHeader::where('yw_edisendflag','W')
+            ->where('customerid','YOUWU')
+            ->whereNull('EDI_RESENDTIME')
+            ->where('yw_edisendtime','>',Carbon::now()->subDays(2))
+            ->where('yw_edisendflag','W')
+            ->update(['yw_edisendflag'=>'N','manualflag'=>'N','EDI_RESENDTIME'=>Carbon::now()]);
+
+        OracleDOCOrderHeader::where('yw_edisendflag','W')
+            ->where('customerid','YOUWU')
+            ->where('EDI_RESENDTIME','>',Carbon::now()->subDays(2))
+            ->where('yw_edisendtime','>',Carbon::now()->subDays(2))
+            ->update(['yw_edisendflag'=>'N','manualflag'=>'N']);
     }
 }

+ 10 - 6
app/Filters/WorkOrderFilters.php

@@ -145,8 +145,7 @@ class WorkOrderFilters
         } else {
             array_push($status, 5);
         }
-
-        $this->queryBuilder->whereIn('status', $status);
+        $this->queryBuilder->whereIn('status', array_unique($status));
     }
 
     private function afterFilterOwner($owner_ids)
@@ -379,7 +378,8 @@ class WorkOrderFilters
 
     public function process_progress($process_progress)
     {
-        $this->searchWay($this->queryBuilder, $process_progress, 'work_orders.process_progress');
+        $this->queryBuilder->where('work_orders.process_progress',$process_progress);
+//        $this->searchWay($this->queryBuilder, $process_progress, 'work_orders.process_progress');
     }
 
     public function order_issue_log($log_content)
@@ -402,12 +402,16 @@ class WorkOrderFilters
 
     public function status($status)
     {
+        $status = array_filter(preg_split('/[,, ]+/u', $status));
+
         $status_list = [];
-        if ($status == '承运商处理') {
+        if (in_array('承运商处理',$status)) {
             array_push($status_list, 3);
-        } elseif ($status == '宝时处理') {
+        }
+        if (in_array('宝时处理',$status)) {
             array_push($status_list, 4, 1);
-        } elseif ($status == '货主处理') {
+        }
+        if (in_array('货主处理',$status)) {
             array_push($status_list, 2, 6);
         }
         $this->queryBuilder->whereIn('status', $status_list);

+ 0 - 4
app/Http/Controllers/ControlPanelController.php

@@ -115,10 +115,6 @@ class ControlPanelController extends Controller
 
     public function getCountingOwnerIds($ownerIds)
     {
-
-        $user = auth()->user();
-        /** @var UserService $userService */
-        $userService = app('UserService');
         $permittingOwnerIds = app("OwnerService")->getIdArr();
         if (!$ownerIds) {
             return $permittingOwnerIds;

+ 1 - 5
app/Http/Controllers/CustomerController.php

@@ -38,11 +38,7 @@ use Oursdreams\Export\Export;
 class CustomerController extends Controller
 {
     use AsyncResponse;
-    /**
-     * Display a listing of the resource.
-     * @param Request $request
-     * @return Response
-     */
+
     public function projectReport(Request $request)
     {
         if(!Gate::allows('项目管理-项目-报表')){ return view('customer.index');  }

+ 1 - 1
app/Http/Controllers/DeliveryAppointmentController.php

@@ -684,7 +684,7 @@ html;
         $asn = preg_split('/[,, ]+/is', request("asn"));
         $asnNos = $this->checkAndGetAsn(request("asn"));
         if(!$asnNos) $this->error("无此ASN单号");
-        if (!$asn || strlen(request("asn"))<13)$this->error("非法ASN单号");
+        if (!$asn)$this->error("非法ASN单号");
         $owner = request("owner_id");
         $asnNos = preg_split('/[,, ]+/u', $asnNos);
         $query = Store::query()->whereIn("asn_code",$asnNos);

+ 24 - 0
app/Http/Controllers/HandInStorageController.php

@@ -4,6 +4,7 @@ namespace App\Http\Controllers;
 
 use App\Components\AsyncResponse;
 use App\OracleDOCASNHeader;
+use App\Owner;
 use App\Services\HandInStorageService;
 use Carbon\Carbon;
 use Doctrine\DBAL\Exception;
@@ -108,6 +109,9 @@ class HandInStorageController extends Controller
         if ($info['lotatt02']&&Carbon::now()->gt($info['lotatt02']))$this->error('失效日期超过入库效期');
         if (!$info['customerid']||$isSku===false||!$info['asnno']||$isReceivedqty===false||$isExpectedqty===false) $this->error('参数错误');
         if ($info['amount'] + $info['receivedqty'] > $info['expectedqty']) $this->error('收货数大于预期数');
+        //九干仓禁止使用当前app收货
+        $res=$this->screenWarehouseAndContrast($info['customerid']);
+        if ($res)$this->error('禁止使用当前app收货,请换用新版app收货!');
         /** @var HandInStorageService $handInStorageService  */
         $handInStorageService=app('HandInStorageService');
         if ($info['customerid']=='ONKYO'||$info['customerid']=='ANMEILAI'||$info['customerid']=='FEIHE'){
@@ -144,6 +148,21 @@ class HandInStorageController extends Controller
         }
     }
 
+    public function screenWarehouseAndContrast($ownerCode): bool
+    {
+        $owners=Owner::query()
+            ->select('code')
+            ->where('warehouse_id',3)//3 代表九干仓仓库id
+            ->whereNull('deleted_at')
+            ->get();
+        foreach ($owners as $owner){
+            if ($owner->code==$ownerCode){
+                return true;
+            }
+        }
+        return false;
+    }
+
     /**
      * @param Request $request
      * 根据商品条码和跟踪号 获取要上架的任务列表
@@ -196,6 +215,11 @@ class HandInStorageController extends Controller
         if (!$info['location']||!$info['amount']||!$info['barCode'] || gettype($info['amount'])==='string') $this->error('参数错误');
         if (count($request->input('checkData'))==0) $this->error('请勾选要上架任务');
         $checkData=$request->input('checkData')[0];
+
+        //九干仓禁止使用当前app上架
+        $res=$this->screenWarehouseAndContrast($checkData['customerid']);
+        if ($res)$this->error('禁止使用当前app上架,请换用新版app上架!');
+
         /** @var HandInStorageService $handInStorageService  */
         $handInStorageService=app('HandInStorageService');
         //判断当前库位是否能放该商品

+ 6 - 5
app/Http/Controllers/KpiController.php

@@ -2,6 +2,8 @@
 
 namespace App\Http\Controllers;
 
+use App\Owner;
+use App\Services\OwnerService;
 use App\Services\UserService;
 use Illuminate\Database\Eloquent\Builder;
 use Illuminate\Database\Eloquent\Collection;
@@ -63,10 +65,9 @@ class KpiController extends Controller
 
     public function getOwners()
     {
-        /** @var UserService $userService */
-        $userService = app('UserService');
-        $ownerIds = $userService->getUserHasOwners(auth()->id());
-        $owners = \App\Owner::query()->select(['id', 'name', 'code'])->whereIn('id', $ownerIds)->get();
-        return $owners;
+        /** @var OwnerService $ownerService */
+        $ownerService = app('OwnerService');
+        $ownerIds = $ownerService->getIdArr();
+        return Owner::query()->select(['id', 'name', 'code'])->whereIn('id', $ownerIds)->get();
     }
 }

+ 1 - 1
app/Http/Controllers/OrderDetailController.php

@@ -33,6 +33,6 @@ class OrderDetailController extends Controller
         $order_detail = OrderDetail::query()->where('order_id',$request->input('order_id'))->first();
 
         $order_detail->update(['is_new_rejecting' => '已处理']);
-        return ['success' => success,'data' => $order_detail];
+        return ['success' => true,'data' => $order_detail];
     }
 }

+ 1 - 6
app/Http/Controllers/PackageLogisticController.php

@@ -27,13 +27,8 @@ class PackageLogisticController extends Controller
 
     public function index(Request $request, OrderPackageFilters $filters)
     {
-        /** @var UserService $userService */
-        $userService = app('UserService');
         /** @var array $owner_ids */
-        $owner_ids = $userService->getUserHasOwners(auth()->id());
-        $owner_ids = array_map(function ($item) {
-            return $item = (int)$item;
-        }, $owner_ids);
+        $owner_ids = app('OwnerService')->getIdArr();
         $paginateParams = $request->input();
         $orderPackages = OrderPackage::query()
             ->filter($filters)

+ 3 - 5
app/Http/Controllers/ReceivingDashboardController.php

@@ -2,6 +2,7 @@
 
 namespace App\Http\Controllers;
 
+use App\Owner;
 use App\Services\UserService;
 use App\UserWorkgroup;
 use Illuminate\Database\Eloquent\Builder;
@@ -41,10 +42,7 @@ class ReceivingDashboardController extends Controller
      */
     public function getOwners()
     {
-        /** @var UserService $userService */
-        $userService = app('UserService');
-        $ownerIds = $userService->getUserHasOwners(auth()->id());
-        $owners = \App\Owner::query()->select(['id', 'name', 'code'])->whereIn('id', $ownerIds)->get();
-        return $owners;
+        $ownerIds = app('OwnerService')->getIdArr();
+        return Owner::query()->select(['id', 'name', 'code'])->whereIn('id', $ownerIds)->get();
     }
 }

+ 7 - 50
app/Http/Controllers/RejectedController.php

@@ -41,6 +41,10 @@ class RejectedController extends Controller
         $this->userService = $userService;
     }
 
+    public function getTotal(Request $request)
+    {
+        return app('RejectedService')->getTotal($request->input());
+    }
     /**
      * Display a listing of the resource.
      * @param GateRequest $request
@@ -361,38 +365,17 @@ class RejectedController extends Controller
     protected function validatorUpdate(array $data)
     {
         return Validator::make($data, [
-//            'name' => ['required', 'string', 'max:50'],
         ]);
     }
 
-    /**
-     * Display the specified resource.
-     *
-     * @param Rejected $rejected
-     * @return void
-     */
     public function show(Rejected $rejected)
     {
-        //
     }
 
-    /**
-     * Show the form for editing the specified resource.
-     *
-     * @param Rejected $rejected
-     * @return Response
-     */
     public function edit(RejectedBill $rejectedBill)
     {
     }
 
-    /**
-     * Update the specified resource in storage.
-     *
-     * @param Request $request
-     * @param Rejected $rejected
-     * @return Response
-     */
     public function update(Request $request, Rejected $rejected)
     {
         if(!Gate::allows('退货管理-编辑')){ return redirect(url('/'));  }
@@ -403,22 +386,8 @@ class RejectedController extends Controller
         return redirect('rejected/')->with('successTip',"成功修改退货信息“{$rejected['name']}”!");
     }
 
-    /**
-     * Remove the specified resource from storage.
-     *
-     * @param Rejected $rejected
-     * @return array|Response
-     * @throws Exception
-     */
     public function destroy(Rejected $rejected)
     {
-//        if(!Gate::allows('退货管理-删除')){ return redirect(url('/'));}
-//        app('LogService')->log(__METHOD__,__FUNCTION__,$rejectedBill->toJson(),Auth::user()['id']);
-//        $items=$rejectedBill->items();
-//        $items->delete();
-//        app('LogService')->log(__METHOD__,__FUNCTION__,$items->toJson(),Auth::user()['id']);
-//        $re=$rejectedBill->delete();
-//        return ['success'=>$re];
     }
     public function export(Request $request){
         ini_set('max_execution_time',2500);
@@ -452,13 +421,12 @@ class RejectedController extends Controller
             "item_amount"=>"商品数量","quality_label_name"=>"商品质量","item_remark"=>"备注","operator_name"=>"录入人","remark"=>"退单备注"
         ])->direct();
     }
-    public function import(Request $request)
+    public function import()
     {
         return view('rejected.import');
     }
     public function importExcel(Request $request)
     {
-        $isOverride = $request->input('isOverride');
         try{
             ini_set('max_execution_time',2500);
             ini_set('memory_limit','1526M');
@@ -476,6 +444,7 @@ class RejectedController extends Controller
     //analyzeSearch 统计查询 zengjun
     public function indexAnalyze(Request $request)
     {
+        ini_set('max_execution_time',2500);
         if(!Gate::allows('退货管理-查询')){ return redirect(url('/'));  }
         $paginateParams = $this->getAnalyzeSearchParams($request);
         $rejectedBills =  RejectedAnalyzeOwner::findBy($paginateParams);
@@ -493,7 +462,7 @@ class RejectedController extends Controller
         if(!is_array($owner_id))$owner_id = [$owner_id];
         if(count($owner_id) != 0) $owner_ids = array_intersect($owner_ids,$owner_id);
         $owner_ids = implode(',',$owner_ids);
-        $searchParams = [
+        return [
             'owner_id' => $owner_ids,
             'data'=> $request->input('data'),
             'created_at_start' => $request->input('created_at_start'),
@@ -501,7 +470,6 @@ class RejectedController extends Controller
             'uncheck_amount' => $request->input('uncheck_amount'),
             'not_in_storage' => $request->input('not_in_storage'),
         ];
-        return $searchParams;
     }
 
     //统计页导出
@@ -522,17 +490,6 @@ class RejectedController extends Controller
             ];
         }
         return Export::make($row,$json,"退货统计记录单");
-//        dd($json);
-//        $e = new Export();
-//        $e->setMysqlConnection(config('database.connections.mysql.host'),
-//            config('database.connections.mysql.port'),config('database.connections.mysql.database')
-//            ,config('database.connections.mysql.username'),config('database.connections.mysql.password'));
-//        $e->setFileName("退货统计记录单");
-//        return $e->sql($sql,[
-//            "owner_name"=>"货主名","bounce_amount"=>"退件单数",
-//            "check_amount"=>"审核单数","uncheck_amount"=>"未审核单数",
-//            "in_storage_count"=>"入库单数","not_in_storage_count"=>"未入库单数",
-//        ])->direct();
     }
 
     public function apiGetRejectedByLogisticNumberReturn(Request $request){

+ 1 - 6
app/Http/Controllers/RejectedPushTaskController.php

@@ -3,7 +3,6 @@
 namespace App\Http\Controllers;
 
 use App\Owner;
-use App\Services\UserService;
 
 class RejectedPushTaskController extends Controller
 {
@@ -11,11 +10,7 @@ class RejectedPushTaskController extends Controller
 
     public function index()
     {
-        /**
-         * @var UserService $userService
-         */
-        $userService = app('UserService');
-        $ownerIds = $userService->getUserHasOwners(auth()->id());
+        $ownerIds = app('OwnerService')->getIdArr();
         $owners = Owner::query()->whereIn('id', $ownerIds)->get();
         $ownerIds = $owners->pluck('id');
         return view('rejected.rejectedPushTask.index', compact('owners', 'ownerIds'));

+ 8 - 38
app/Http/Controllers/TestController.php

@@ -5,42 +5,10 @@ namespace App\Http\Controllers;
 use App\Components\AsyncResponse;
 use App\Components\Database;
 use App\Components\ErrorPush;
-use App\DeliveryAppointment;
-use App\Logistic;
-use App\MaterialBox;
-use App\MaterialBoxModel;
-use App\OracleDOCASNHeader;
-use App\Order;
-use App\OrderDetail;
-use App\OrderIssue;
-use App\OrderIssueRejectedBill;
-use App\RejectedBill;
-use App\Role;
-use App\Services\common\BatchUpdateService;
-use App\Services\DeliveryAppointmentService;
-use App\Services\LogisticService;
-use App\Services\ObligationService;
-use App\Services\OracleDocAsnHerderService;
-use App\Services\OrderRejectedBillRelationService;
-use App\Services\OrderRejectingStatusService;
-use App\Services\OwnerService;
-use App\Services\RejectedService;
-use App\Services\UserService;
 use App\Services\WaybillService;
-use App\User;
 use App\Waybill;
-use App\WorkOrder;
-use Illuminate\Database\Capsule\Manager;
-use Illuminate\Database\DatabaseManager;
-use Illuminate\Foundation\Auth\AuthenticatesUsers;
 use Illuminate\Http\Request;
-use Illuminate\Support\Facades\Auth;
-use Illuminate\Support\Facades\Cache;
 use Illuminate\Support\Facades\DB;
-use Illuminate\Support\Facades\Hash;
-use Illuminate\Support\Facades\Log;
-use Oursdreams\Export\Export;
-use Workerman\Worker;
 
 class TestController extends Controller
 {
@@ -62,13 +30,15 @@ class TestController extends Controller
         }
     }
     public function test(){
-    }
+        $arr = DB::connection("oracle")->select(DB::raw("SELECT LOCATIONID FROM INV_LOT_LOC_ID
+where LOCATIONID like 'IDE%' and CUSTOMERID in ('PUHE')
+group by CUSTOMERID,LOCATIONID order by CUSTOMERID"));
+        $str = "";
 
-    public function test123()
-    {
-        $codes = ['OCGBS202202160032'];
-        $items = OracleDOCASNHeader::query()->select('asnNo')->whereIn('ASNReference1',$codes)->get();
-        dd($items);
+        foreach ($arr as $item){
+            $str .= '"'.$item->locationid.'",';
+        }
+        dd($str);
     }
 }
 

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

@@ -279,7 +279,7 @@ class WorkOrderController extends Controller
     {
         $json = [];
         $row = [
-            '工单类型', '当前进度', '客户', '店铺名称', '客户订单号', '承运人', '快递单号', '创建时间', '当前处理人', '创建人', '情况说明', '退回单号', '退回商品', '退回商品名称', '退回商品数量', '是否正品', '操作类型', '操作人', '内容'
+            '工单类型', '当前进度', '客户', '店铺名称', '客户订单号', '承运人', '快递单号', '创建时间', '当前处理人', '创建人', '情况说明', '退回单号', '退回商品', '退回商品名称', '退回商品数量', '是否正品', '操作类型', '操作人', '内容','退回标记'
         ];
         $workOrders->each(function ($item) use (&$json) {
             $logistic_numbers = $item->order->packages->implode('logistic_number', ",\r\n");
@@ -332,6 +332,7 @@ class WorkOrderController extends Controller
                 rtrim($work_order_process_logs_type, ",\r\n"),
                 rtrim($work_order_process_logs_user, ",\r\n"),
                 rtrim($work_order_process_logs, ",\r\n"),
+                $item->custom_rejected_status ?? '',
             ];
         });
         return Export::make($row, $json, "工单");

+ 2 - 12
app/Jobs/RejectedPushJob.php

@@ -43,18 +43,8 @@ class RejectedPushJob implements ShouldQueue
      */
     public function handle()
     {
-        $data = [];
-        foreach ($this->pushData as $item) {
-            $data[] = [
-                'asnNo' => $item[0],
-                'logisticNumberReturn' => $item[1],
-                'type' => '推单',
-
-            ];
-        }
         $url = config('api.java.wms.rejectedPushTask.receivePush');
-        $response = Http::post($url, $data);
-        Log::info("推送信息!", ['res' => $response->body(), 'req' => $data]);
-
+        $response = Http::post($url, $this->pushData);
+        Log::info("推送信息!", ['res' => $response->body(), 'req' => $this->pushData]);
     }
 }

+ 1 - 1
app/LaborCompanyDispatchDetail.php

@@ -5,7 +5,6 @@ namespace App;
 use Illuminate\Database\Eloquent\Model;
 
 use App\Traits\ModelLogChanging;
-
 class LaborCompanyDispatchDetail extends Model
 {
     use ModelLogChanging;
@@ -15,6 +14,7 @@ class LaborCompanyDispatchDetail extends Model
         'name',//临时工姓名
         'gender',//性别
         'age',//年龄
+        'card_id',//身份证
     ];
 
     static public $enums = [

+ 10 - 4
app/RejectedAnalyzeOwner.php

@@ -81,7 +81,7 @@ class RejectedAnalyzeOwner extends Model
     }
 
     // 拼接条件     zengjun
-    public static function getCondition($array)
+    public static function getCondition($array, $owners)
     {
         if (isset($array['data'])){
             $condition=RejectedAnalyzeOwner::getSqlToIDs($array['data']);
@@ -105,6 +105,9 @@ class RejectedAnalyzeOwner extends Model
                 }
             }
         }
+        if (count($owners) > 0){
+            $condition .= "AND id_owner IN (".implode(",",$owners).")";
+        }
         $condition .= ' group by id_owner';
         return $condition;
     }
@@ -126,8 +129,9 @@ class RejectedAnalyzeOwner extends Model
     }
 
     // 返回sql    zengjun
-    public static  function getQuerySQL($array= null){
-        $condition = RejectedAnalyzeOwner::getCondition($array);// 条件
+    public static  function getQuerySQL($array){
+        $owners = app("OwnerService")->getIdArr();
+        $condition = RejectedAnalyzeOwner::getCondition($array, $owners);// 条件
         $sql = 'select distinct rao.id_owner,owners.name owner_name,sum(bounce_amount) bounce_amount,sum(check_amount) check_amount,sum(in_storage_count) in_storage_count,sum(not_in_storage_count) not_in_storage_count from';
         $sql .= '(';
         // 退件单数
@@ -147,8 +151,10 @@ class RejectedAnalyzeOwner extends Model
         $sql .= $condition;
         $sql .= ') rao ';
         $sql .= ' left join owners on owners.id = rao.id_owner and owners.deleted_at is null ';
+        if (count($owners) == 0){
+            $sql .= " WHERE 0=1 ";
+        }
         $sql .= ' group by rao.id_owner';
-        $sql .= ' having owners.name is not null';
         if(isset($array['uncheck_amount'])){
             // 审核数为0
             if($array['uncheck_amount'] == 0)$sql.=' and bounce_amount - check_amount in (0)  ';

+ 0 - 1
app/Services/DbOpenService.php

@@ -27,7 +27,6 @@ class DbOpenService
             "Accept" => "application/json"
         ];
         $body = $this->formatWaybillData($waybill);
-
         try {
             $response = httpPost(config('api_logistic.DB.prod.uri')['create_order'], $body, $header);
             if (!$response["result"])return null;

+ 3 - 1
app/Services/LogisticService.php

@@ -121,7 +121,9 @@ class LogisticService implements UserFilter
     function getIdArr(?int $userId = null): array
     {
         if (!$userId)$userId = Auth::id();
-        return array_column($this->getQuery($userId)->get()->toArray(),"id");
+        return $this->cacheService->getOrExecute("USER.{$userId}.LOGISTIC.ID", function () use ($userId) {
+            return array_column($this->getQuery($userId)->get()->toArray(),"id");
+        });
     }
     function getCodeArr(?int $userId): array
     {

+ 2 - 2
app/Services/OracleDocAsnHerderService.php

@@ -66,11 +66,11 @@ class OracleDocAsnHerderService
         if (count($asnHerders)>0){
             $collect=collect();
             foreach ($asnHerders as $asnHerder){
-                if ($asnHerders->asntype=='THRK'&&$asnHerder->asnreference3){
+                if ($asnHerder->asntype=='THRK'&&$asnHerder->asnreference3){
                     $collect->push(array($asnHerder->asnno,$asnHerder->asnreference3));
                 }
             }
-            RejectedPushJob::dispatch($collect);
+            RejectedPushJob::dispatch($collect->toArray());
         }
     }
 

+ 1 - 1
app/Services/OwnerAreaReportService.php

@@ -41,7 +41,7 @@ class OwnerAreaReportService
 
     public function paginate(array $params, array $withs = null)
     {
-        $areas = OwnerAreaReport::query()->whereIn("owner_id",Auth::user()['permittingOwnerIds'])->orderByDesc('id');
+        $areas = OwnerAreaReport::query()->whereIn("owner_id",app("OwnerService")->getQuery())->orderByDesc('id');
         if ($withs)$areas->with($withs);
         return $this->query($areas,$params)->paginate($params["paginate"] ?? 50);
     }

+ 2 - 3
app/Services/PackageService.php

@@ -53,13 +53,12 @@ class PackageService
             'weighed_at_end' => ['alias' => 'weighed_at','endDate' => ":59"],
             'id' => ['multi' => ','],
         ];
-        $packages = app(QueryService::class)->query($params,$packages,$columnQueryRules,"order_packages");
-        return $packages;
+        return app(QueryService::class)->query($params,$packages,$columnQueryRules,"order_packages");
     }
 
     public function paginate(Request $request){
         $packages = $this->conditionQuery($request->input());
-        return $packages->paginate($request->paginate ?? 50);
+        return $packages->simplePaginate($request->paginate ?? 50);
     }
 
     public function get(Request $request){

+ 2 - 1
app/Services/ReceivingTaskService.php

@@ -126,7 +126,8 @@ class ReceivingTaskService
         $yesterday = Carbon::now()->subDays(1)->format("Y-m-d");
         ReceivingTask::query()
             ->where('created_at', '>=', $yesterday . ' 00:00:00')
-            ->where('created_at', '<=', $yesterday . ' 23.59.59')
+            ->where('created_at', '<=', $yesterday . ' 23:59:59')
+            ->whereNull('end_at')
             ->whereIn('status', ['创建', '进行中'])
             ->update(['status' => '超时完成']);
 

+ 18 - 15
app/Services/RejectedBillService.php

@@ -21,6 +21,7 @@ use Carbon\Carbon;
 use App\Traits\ServiceAppAop;
 use Illuminate\Database\Eloquent\Model;
 use Illuminate\Database\Query\Builder;
+use Illuminate\Support\Facades\Auth;
 use Overtrue\LaravelPinyin\Facades\Pinyin;
 
 
@@ -74,7 +75,10 @@ class RejectedBillService
         if ($updates && count($updates) > 1) $this->batchUpdate($updates);
         //是否入库
         $updateParams=$this->getNeedUpdateLoadedStatusByWms($asnHerders);
-        if ($updateParams && count($updateParams) > 1) $this->batchUpdate($updateParams);
+        if ($updateParams && count($updateParams) > 1){
+            $this->batchUpdate($updateParams);
+            app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($updateParams));
+        }
     }
 
     public function getNeedUpdateLoadedStatusByWms($asnHerders)
@@ -82,7 +86,7 @@ class RejectedBillService
 
         if (!$asnHerders) return null;
         $updateCollect = $this->getUpdateCollect($asnHerders);
-        if (!$updateCollect) return null;
+        if ($updateCollect->count()<1) return null;
         $logisticNumberReturn = $this->getLogisticNumberReturn($updateCollect);
         $checkedNumbers = $this->getCheckNumbers($updateCollect);
         $rejectedBills = $this->getRejectedBills($logisticNumberReturn,$checkedNumbers);
@@ -117,19 +121,18 @@ class RejectedBillService
                     'is_loaded' => 1,
                     'updated_at' => $updated_at,
                 ];
-                if (!$rejectedBill && $data->customerid && $data->notes){
-                    $checkedNumber=$this->screenCheckNumber($data->customerid,$data->notes);
-                    if (!$checkedNumber)continue;
-                    $rejects=RejectedBill::query()->where('checked_numbers',$checkedNumber)->get();
-                   foreach ($rejects as $reject){
-                       $updateParams[] = [
-                           'id'=>$reject->id,
-                           'is_loaded' => 1,
-                           'updated_at' => $updated_at,
-                       ];
-                   }
-                }
-
+//                if (!$rejectedBill && $data->customerid && $data->notes){
+//                    $checkedNumber=$this->screenCheckNumber($data->customerid,$data->notes);
+//                    if (!$checkedNumber)continue;
+//                    $rejects=RejectedBill::query()->where('checked_numbers',$checkedNumber)->get();
+//                   foreach ($rejects as $reject){
+//                       $updateParams[] = [
+//                           'id'=>$reject->id,
+//                           'is_loaded' => 1,
+//                           'updated_at' => $updated_at,
+//                       ];
+//                   }
+//                }
                unset($result);
             }
         }

+ 33 - 9
app/Services/RejectedService.php

@@ -10,6 +10,7 @@ use App\Services\common\QueryService;
 use Illuminate\Database\Eloquent\Builder;
 use Illuminate\Http\Request;
 use App\Traits\ServiceAppAop;
+use Illuminate\Pagination\Paginator;
 
 
 class RejectedService
@@ -25,19 +26,27 @@ class RejectedService
         $this->instant($this->cacheService,'CacheService');
         $this->instant($this->workOrderInterceptService,'WorkOrderInterceptService');
     }
-    private function  conditionQuery(array $param)
+    private function  conditionQuery(array $param, array $owners = null, array $logistics = null)
     {
-        $owners =  app("OwnerService")->getQuery()->select("id")->pluck("id")->toArray();
-        if (count($owners)==0){
-            $owners[] = [''];
+        if ($owners == null){
+            $owners =  app("OwnerService")->getIdArr();
+            if (count($owners)==0){
+                $owners[] = [''];
+            }
+        }
+        if ($logistics == null){
+            $logistics =  app("LogisticService")->getIdArr();
+            if (count($logistics)==0){
+                $logistics[] = [''];
+            }
         }
         $rejectedBills = RejectedBill::query()->with('user','owner', 'logistic', 'items.quality','record:logistic_number,record_at,location_at',
-            'items.packageImages','items.commodityImages','items.uploadFiles','orderIssueRejectedBill:logistic_number_return')
+            'items.packageImages','items.commodityImages','items.uploadFiles','orderIssueRejectedBill.orderIssue.issueType')
             ->orderBy('rejected_bills.id', 'desc')
-            ->where(function ($query)use ($owners){
+            ->where(function ($query)use ($owners, $logistics){
                 /** @var Builder $query */
                 $query->whereIn('rejected_bills.id_owner', $owners)
-                    ->orWhereIn("rejected_bills.id_logistic_return",app("LogisticService")->getQuery());
+                    ->orWhereIn("rejected_bills.id_logistic_return", $logistics);
             });
         if (array_search("397",$owners)!==false){
             $rejectedBills->with(["items.barcode.commodity"=>function($query){
@@ -122,11 +131,26 @@ class RejectedService
 
     public function paginate(Request $request)
     {
-        return $this->cacheService->getOrExecute('RejectedsPaginate'.md5(json_encode($request->toArray())),function()use($request){
-            return $this->conditionQuery($request->input())->paginate($request->paginate ?? 50);
+        $owners =  app("OwnerService")->getIdArr();
+        $logistics =  app("LogisticService")->getIdArr();
+        if (count($owners) == 0 && count($logistics) == 0){
+            return new Paginator([], 1);
+        }
+        return $this->cacheService->getOrExecute('RejectedsPaginate'.md5(json_encode($request->toArray())),function()use($request, $owners, $logistics){
+            return $this->conditionQuery($request->input(), $owners, $logistics)->simplePaginate($request->paginate ?? 50);
         },config('cache.expirations.oftenChange'));
     }
 
+    public function getTotal(array $params):int
+    {
+        $owners =  app("OwnerService")->getIdArr();
+        $logistics =  app("LogisticService")->getIdArr();
+        if (count($owners) == 0 && count($logistics) == 0){
+            return 0;
+        }
+        return $this->conditionQuery($params, $owners, $logistics)->count();
+    }
+
     public function get(Request $request)
     {
         return $this->cacheService->getOrExecute('Rejecteds'.md5(json_encode($request->toArray())),function()use($request){

+ 0 - 1
app/Services/RoleService.php

@@ -29,7 +29,6 @@ class RoleService
                 Cache::tags("AUTHORITY_MENU_MAPPING")->forget("am_mapping_".$id);
                 Cache::tags("authorities:user")->forget("authorities:user_".$id);
             }
-            if ($isOwner)Cache::forget("owners:user_".$id);
             if ($isUserWorkGroup)Cache::forget("userWorkGroups:user_".$id);
         }
     }

+ 0 - 32
app/Services/UserService.php

@@ -56,31 +56,6 @@ class UserService
         if (!$user)return false;
         return array_search($user->name,config("users.superAdmin"))!==false;
     }
-    /**
-     * @param integer|null $userId
-     *
-     * @return array
-     */
-    public function getUserHasOwners($userId = null)
-    {
-        if (!$userId)$userId = Auth::id();
-        $key = "owners:user_".$userId;
-        if (!Cache::has($key)){
-            if ($this->checkAdminIdentity($userId))Cache::forever($key,array_column(Owner::query()->select("id")->whereNull("deleted_at")->get()->toArray(),"id"));
-            else{
-                $owners = [];
-                /** @var User|\stdClass $user */
-                $user = new User();
-                $user->id = $userId;
-                $user->load("roles.owners");
-                $user->roles->each(function ($role)use (&$owners){
-                    $owners = array_merge($owners,array_column($role->owners->toArray(),"id"));
-                });
-                Cache::forever($key,$owners);
-            }
-        }
-        return Cache::get($key);
-    }
 
     /**
      * @param integer|null $userId
@@ -117,7 +92,6 @@ class UserService
     {
         Cache::tags("authorities:user")->forget("authorities:user_".$user->id);
         Cache::tags("authorities:user")->forget("authorities:android:user_".$user->id);
-        Cache::forget("owners:user_".$user->id);
         Cache::forget("userWorkGroups:user_".$user->id);
         Cache::tags("AUTHORITY_MENU_MAPPING")->forget("am_mapping_".$user->id);
         Cache::tags("USERS")->pull("user_info_".$user->id);
@@ -217,12 +191,6 @@ class UserService
         if ($ownerGroupIds){
             $ownerIds = array_merge($ownerIds, app("OwnerService")->getOwnerGroupUnderOwner($ownerGroupIds));
         }
-        /*$user->loadMissing("owners:id");
-        if ($user->owners){
-            foreach ($user->owners as $owner){
-                $ownerIds[] = $owner->id;
-            }
-        }*/
         $ownerIds = array_unique($ownerIds);
         $user->owners()->sync($ownerIds);
     }

+ 1 - 1
app/Services/WaybillService.php

@@ -373,7 +373,7 @@ SQL;
             $updateRow = DB::connection("oracle")->update($sql,[
                 $waybill->carrier_bill,$waybill->carrier_bill,$waybill->wms_bill_number
             ]);
-            if ($updateRow!=1)Log::warning("德邦单号修改分配失败",["param"=>$w,"row"=>$updateRow]);
+            if ($updateRow==0)Log::warning("德邦单号修改分配失败",["param"=>$w,"row"=>$updateRow]);
             return true;
         }
         return false;

+ 2 - 0
app/Services/WorkOrderCommoditiesService.php

@@ -38,6 +38,7 @@ class WorkOrderCommoditiesService
             'abnormal_type' => $obj->abnormal_type ?? '',
             'issue_type' => $detail->order_issue_type_id ?? '',
             'out_order_number' => $detail->out_order_number ?? '',
+            'remark' => $detail->remark ?? '',
         ]);
     }
 
@@ -85,6 +86,7 @@ class WorkOrderCommoditiesService
             'store_in_number' => $obj->store_in_number ?? '',                       // 入库单号
             'out_order_number' => $obj->out_order_number ?? '',                       // 入库单号
             'end_handle_result' => $obj->end_handle_result ?? '',                       // 最终处理
+            'remark' => $obj->remark ?? '',
         ]);
     }
 

+ 2 - 0
app/Services/WorkOrderExpressAbnormalService.php

@@ -212,6 +212,8 @@ class WorkOrderExpressAbnormalService extends WorkOrderService
             'status' => '未同步',
             'type' => '结束',
         ]);
+        $this->endOrderIssueAndSyncProcessLogs($detail);
+        $this->logService->createLog($detail, '终审', $process_progress.'-宝时终审');
     }
 
 }

+ 12 - 1
app/Services/WorkOrderMistakeService.php

@@ -247,6 +247,18 @@ class WorkOrderMistakeService extends WorkOrderService
             'work_order_status' => 0,
         ]);
 
+
+        $detail->commodities()->whereNotNull('remark')->get()->each(function ($commodity)use($detail){
+            $detail->processLogs()->create([
+                'work_order_id' => $detail->workOrder->id,
+                'work_order_detail_id' => $detail->id,
+                'user_id' => $detail->workOrder->creator_id,
+                'content' => $commodity->remark,
+                'status' => '未同步',
+                'type' => '处理',
+            ]);
+        });
+
         $detail->processLogs()->create([
             'work_order_id' => $detail->work_order_id,
             'work_order_detail_id' => $detail->id,
@@ -255,7 +267,6 @@ class WorkOrderMistakeService extends WorkOrderService
             'status' => '未同步',
             'type' => '结束',
         ]);
-
         $this->endOrderIssueAndSyncProcessLogs($detail);
         $this->logService->createLog($detail, '终审', $params['process_progress'].'-宝时终审');
     }

+ 39 - 9
app/Services/WorkOrderService.php

@@ -363,7 +363,11 @@ class WorkOrderService
          * @var WorkOrder $work_order
          */
         $work_order = $detail->workOrder;
-        $order_issue = OrderIssue::query()->where('order_id', $work_order->order_id)->first();
+        $order_issue = OrderIssue::query()->withTrashed()->where('order_id', $work_order->order_id)->first();
+        if($order_issue->deleted_at ?? false){
+            $order_issue->restore();
+        }
+        $orderIssueType = app(OrderIssueTypeService::class)->firstOrCreate(['name' => '错漏发']);
         if (!$order_issue) {
             $order_issue = OrderIssue::query()->create([
                 'order_id' => $work_order->order_id,
@@ -371,6 +375,7 @@ class WorkOrderService
                 'imported_status' => '正常',
                 'order_issue_type_id' => $detail->order_issue_type_id,
             ]);
+            $order_issue->update(['created_at' => $detail->created_at]);
         }
 
         $order_issue->update([
@@ -381,16 +386,18 @@ class WorkOrderService
             'user_owner_group_id' => $work_order->user_owner_group_id,
         ]);
 
-        $work_order_user_workgroup_ids = $work_order->userWorkGroups()->get()->map(function($item){
+        $work_order_user_workgroup_ids = $work_order->userWorkGroups()->get()->map(function ($item) {
             return $item->id;
         })->toArray();
 
-        $order_issue_work_groups = $order_issue->userWorkgroups()->get()->map(function($item){
+        $order_issue_work_groups = $order_issue->userWorkgroups()->get()->map(function ($item) {
             return $item->id;
-        } )->toArray();
-        $order_issue->userWorkgroups()->attach(array_diff($work_order_user_workgroup_ids,$order_issue_work_groups));
+        })->toArray();
+        $order_issue->userWorkgroups()->attach(array_diff($work_order_user_workgroup_ids, $order_issue_work_groups));
         $process_logs = $detail->processLogs()->where('status', '未同步')->get();
-        $order_issue->logs()->insert($process_logs->map((function ($process_log) use ($order_issue) {
+
+
+        $processLogs = $process_logs->map((function ($process_log) use ($order_issue) {
             return [
                 'order_issue_id' => $order_issue->id,
                 'user_id' => $process_log->user_id,
@@ -400,14 +407,37 @@ class WorkOrderService
                 'type' => $process_log->type,
                 'tag' => $process_log->tag,
             ];
-        }))->toArray());
+        }))->toArray();
+        if ($detail->order_issue_type_id == $orderIssueType->id) {
+            $commodityLog = $detail->commodities()->where('check_result', '!=', '核实未错漏发')->get()->map(function ($item) use ($order_issue) {
+                $count = 0;
+                $abnormalAmount = intval($item->abnormal_amount);
+                $baoShiCheckAmount = intval($item->bao_shi_check_amount);
+                if ($item->abnormal_type === '少发') {
+                    $count = $baoShiCheckAmount  - $abnormalAmount;
+                } else if ($item->abnormal_type === '多发') {
+                    $count =  $abnormalAmount- $baoShiCheckAmount;
+                }
+                return [
+                    'order_issue_id' => $order_issue->id,
+                    'user_id' => Auth::id(),
+                    'content' => $item->sku . ' ' . $item->commodity->name . ' ' . $item->abnormal_type . '(' . $count.')',
+                    'created_at' => $item->updated_at,
+                    'updated_at' => $item->updated_at,
+                    'type' => '处理',
+                    'tag' => 0
+                ];
+            })->toArray();
+            $processLogs = array_merge($commodityLog, $processLogs);
+        }
+        $order_issue->logs()->insert($processLogs);
         $this->orderIssueService->endOrderIssues([$order_issue->id]);
         $detail->processLogs()->where('status', '未同步')->update(['status' => '同步']);
     }
 
-    public function customRejectedStatus($ids,$customRejectedStatus): int
+    public function customRejectedStatus($ids, $customRejectedStatus): int
     {
-        return WorkOrder::query()->whereIn('id',$ids)->update(['custom_rejected_status' => $customRejectedStatus]);
+        return WorkOrder::query()->whereIn('id', $ids)->update(['custom_rejected_status' => $customRejectedStatus]);
     }
 
 }

+ 7 - 7
app/Traits/LogisticSyncTrait.php

@@ -30,6 +30,8 @@ trait LogisticSyncTrait
         }
         /** @var \Carbon\Carbon $sent_at */
         $sent_at = $orderPackage->sent_at;
+        /** @var \Carbon\Carbon $issue_time 订单下发时间 */
+        $issue_time = $orderPackage->order->created_at;
         /**执行该方法时,默认没有异常,
          *1. 之前有异常的件,
          *  1.1 新的状态是无异常的可以更新为正常
@@ -39,22 +41,20 @@ trait LogisticSyncTrait
          *  2.2 新的状态异常更新为对应异常
          */
         $data['exception_status'] = '';
-        $created_at = Carbon::parse($orderPackage->created_at);
         //当天的16:30
         $transfer_status = $data['transfer_status'] ?? [];
         if (empty($sent_at)) {//没复核
             if (empty($transfer_status)) {//没有路由信息
                 //延迟发货
-                $created_at_clone = deep_copy($created_at);
-                if ($created_at->gt($created_at_clone->startOfDay()->addHours(16)->addMinutes(30))) {//下午16.30的单
-                    $created_at_clone = deep_copy($created_at);
-                    if ($created_at_clone->addDay()->endOfDay()->lt(now())) {//超过第二天的24时
-                        $created_at_clone = deep_copy($created_at);
+                $issue_time_clone = deep_copy($issue_time);
+                if ($issue_time->gt($issue_time_clone->startOfDay()->addHours(16)->addMinutes(30))) {//下午16:30的单
+                    $issue_time_clone = deep_copy($issue_time);
+                    if ($issue_time_clone->addDay()->endOfDay()->lt(now())) {//超过第二天的24时
                         $data['exception_status'] = '延迟发货';
                         $data['is_delay_deliver'] = true;
                     }
                 } else {
-                    if ($created_at_clone->endOfDay()->lt(now())) {//超过当天的24时
+                    if ($issue_time_clone->endOfDay()->lt(now())) {//超过当天的24时
                         $data['exception_status'] = '延迟发货';
                         $data['is_delay_deliver'] = true;
                     }

+ 1 - 0
app/WorkOrderCommodities.php

@@ -45,6 +45,7 @@ class WorkOrderCommodities extends Model
                                     // -----------------------------------
         'end_handle_result',       // 错漏发时添加:
         'tag',                      // 当前工单标记
+        'remark'
     ];
 
     static public $enums = [

+ 1 - 1
config/api.php

@@ -97,7 +97,7 @@ return [
     'java'=>[
         'wms'=>[
             'rejectedPushTask'=>[
-                'receivePush'=>env('WMS_REJECTED_PUSH_TASK', '10,1'),
+                'receivePush'=>env('WMS_REJECTED_PUSH_TASK', 'https://swms.baoshi56.com/api/wms/rejectedPushTask/receiveUpdate'),
             ]
         ]
     ]

+ 32 - 0
database/migrations/2022_03_03_095245_work_order_commodities_add_column_remark.php

@@ -0,0 +1,32 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class WorkOrderCommoditiesAddColumnRemark extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('work_order_commodities', function (Blueprint $table) {
+            $table->string('remark');
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('work_order_commodities', function (Blueprint $table) {
+            $table->dropColumn('remark');
+        });
+    }
+}

+ 32 - 0
database/migrations/2022_03_15_080709_add_card_id_to_labor_company_dispatch_details_table.php

@@ -0,0 +1,32 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class AddCardIdToLaborCompanyDispatchDetailsTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('labor_company_dispatch_details', function (Blueprint $table) {
+            $table->string("card_id")->nullable()->comment("身份证号");
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('labor_company_dispatch_details', function (Blueprint $table) {
+            $table->dropColumn("card_id");
+        });
+    }
+}

+ 15 - 1
resources/js/queryForm/queryForm.js

@@ -1249,6 +1249,21 @@ const query = function getQueryForm(data) {
         rendererSearchFormOn_data();
     }
 
+    this.isRender = function isRender(){
+        let bool = false;
+        for (let key in _data) {
+            let {value,name} = _data[key];
+            if(name === 'paginate') continue;
+            if(controlJsType(value,'array') && value.length > 0){
+                bool = true;
+            }
+            if(controlJsType(value,'string') && value !== ""){
+                bool = true;
+            }
+        }
+        return bool;
+    }
+
     function rendererSearchFormOn_data() {
         for (let key in _data) {
             let value = _data[key].value, type = _data[key].type, mold = _data[key].mold;
@@ -1260,7 +1275,6 @@ const query = function getQueryForm(data) {
             //     }
             // }
             _data[key].select = value;
-
             if (['input', 'dateTime', 'dateTimeLocal', 'dateMonth'].includes(mold)) {
                 rendererSearchFormOnInput(key, value, mold);
             } else if (['select'].includes(mold)) {

+ 8 - 6
resources/views/customer/project/area.blade.php

@@ -294,12 +294,14 @@
                     let url="{{url('customer/project/createAreaReport')}}";
                     let params = {val:val};
                     window.tempTip.postBasicRequest(url,params,res=>{
-                        res.forEach(data =>{
-                            if (this.areas.every(area=>{
-                                if (area.id == data.id)return false;
-                                else return true;
-                            }))this.areas.unshift(data);
-                        });
+                        if (res){
+                            res.forEach(data =>{
+                                if (this.areas.every(area=>{
+                                    if (area.id == data.id)return false;
+                                    else return true;
+                                }))this.areas.unshift(data);
+                            });
+                        }
                         dom.selectpicker('val',[]);
                         return "已生成报表";
                     },true)

+ 6 - 6
resources/views/customer/project/create.blade.php

@@ -604,12 +604,12 @@
                     let params = {id:this.ownerTemp.id};
                     window.tempTip.postBasicRequest(url,params,res=>{
                         let audit = {};
-                        if (res.storage_audit_count)audit.storage = true;
-                        if (res.operation_audit_count)audit.operation = true;
-                        if (res.express_audit_count)audit.express = true;
-                        if (res.logistic_audit_count)audit.logistic = true;
-                        if (res.direct_logistic_audit_count)audit.directLogistic = true;
-                        if (res.system_audit_count)audit.system = true;
+                        if (res.storage_audit_count && Number(res.storage_audit_count))audit.storage = true;
+                        if (res.operation_audit_count && Number(res.operation_audit_count))audit.operation = true;
+                        if (res.express_audit_count && Number(res.express_audit_count))audit.express = true;
+                        if (res.logistic_audit_count && Number(res.logistic_audit_count))audit.logistic = true;
+                        if (res.direct_logistic_audit_count && Number(res.direct_logistic_audit_count))audit.directLogistic = true;
+                        if (res.system_audit_count && Number(res.system_audit_count))audit.system = true;
                         this.audit = audit;
                         if (res.owner_storage_price_models.length>0)this.selectedModel.storage = res.owner_storage_price_models;
                         if (res.owner_price_operations.length>0){

+ 1 - 8
resources/views/equipment/_detailInfo.blade.php

@@ -26,18 +26,11 @@
                 <div class="col-6" style="border-right: 1px #D3D3D3 solid">
                     <div v-for="layer in flipLayer" style="border: 1px #000000 solid;height: 70px;cursor: pointer" @click="nextDetail(layer)"
                         :style="[{width:100*(current.grid)+'px'}]">
-<!--                        <table class="table table-bordered w-100 h-100 m-0" v-if="current.children && current.children.length>0">
-                            <tr v-for="row in current.children[layer-1].row">
-                                <td v-for="column in current.children[layer-1].column"
-                                    class="p-0 text-center position-relative">
-                                </td>
-                            </tr>
-                        </table>-->
                         <span class="h-100 w-100 el-center">@{{ layer<10 ? '0'+layer : layer }}</span>
                     </div>
                 </div>
                 <div class="col-6 p-0" :style="[error.children ? {border: '2px red solid'} : '']">
-                    <div v-for="(item,i) in current.children" class="row m-0" style="border-bottom: 1px #D3D3D3 solid;height: 70px">
+                    <div v-for="(item,i) in flipChildren" class="row m-0" style="border-bottom: 1px #D3D3D3 solid;height: 70px">
                         <div class="col-4">
                             设备高度/M:<input class="form-control" min="0" type="number" step="0.01" :class="error['children['+i+'].height'] ? 'is-invalid' : ''" v-model="item.height"></input>
                         </div>

+ 7 - 1
resources/views/equipment/_location.blade.php

@@ -2,7 +2,7 @@
     <div class="modal-dialog modal-lg modal-dialog-centered" role="document" style="z-index: 1045">
         <div class="modal-content">
             <div class="modal-header">
-                <h1 class="offset-5" v-if="!batchSign">@{{ current.code+'-'+((currentEqChildIndex+1)<10 ? '0'+(currentEqChildIndex+1) : (currentEqChildIndex+1)) }}</h1>
+                <h1 class="offset-5" v-if="!batchSign">@{{ current.code+'-'+(currentEqChildIndex+1) }}</h1>
                 <button type="button" class="close" data-dismiss="modal">&times;</button>
             </div>
             <div class="modal-body p-0">
@@ -95,6 +95,12 @@
                                 <input class="switch" type="checkbox" id="loseIdFlag" v-model="buildPool.loseIdFlag" />
                             </div>
                         </div>
+                        <div class="row mt-3 mb-2">
+                            <label class="offset-1 col-4 text-right">纵数</label>
+                            <div class="col-5">
+                                <input min="1" type="number" step="1" max="26" class="form-control" v-model="buildPool.tandem" />
+                            </div>
+                        </div>
                     </div>
                 </div>
             </div>

+ 112 - 79
resources/views/equipment/index.blade.php

@@ -267,7 +267,7 @@
                                 <i class="fa fa-spinner fa-spin"></i>
                             </div>
                         </div>
-                        <div class="h-100 txt-sty w-100 el-center" :class="element.turn ? 're' : ''" v-else>@{{ element.code }}</div>
+                        <div class="h-100 txt-sty w-100 el-center" :class="element.turn ? 're' : ''" v-else>@{{ element.code}}</div>
                     </vue-drag-resize>
                 </div>
             </div>
@@ -332,6 +332,7 @@
                 {id:7,w:1.2,h:1.2,grid:1,layer:5,color:"RGB(255,255,5)",describe:"半组货架,可设五层高五个标准托盘位"},
                 {id:8,w:1.2,h:3.3,grid:3,layer:4,color:"RGB(146,208,80)",describe:"4层高位货架,可设十二个标准托盘位"},
                 {id:9,w:1.2,h:2.4,grid:2,layer:2,color:"RGB(228,243,211)",describe:"叉车通道,可设四个标准托盘位"},
+                {id:10,w:1,h:2,grid:1,layer:4,color:"RGB(211,160,160)",describe:"小型货架"},
             ],
             currentEq:{                                                 //选中的设备
                 el:null,
@@ -378,6 +379,16 @@
                 }
                 return layer;
             },
+            flipChildren(){
+                if(!this.current.children){
+                    return [];
+                }
+                let children = [];
+                for (let i=this.current.children.length - 1;i>=0;i--){
+                    children.push(this.current.children[i]);
+                }
+                return children;
+            },
         },
         created: function() {
             let content = document.getElementById("canvasApp");
@@ -411,6 +422,87 @@
             };
         },
         methods:{
+            //仓库切换
+            selectedWarehouse(warehouse){
+                this.isLoad = false;
+                setTimeout(()=>{
+                    this.selected = warehouse.id;
+                    this.name = warehouse.name;
+                    this.ratio = warehouse.ratio;
+                    this.container = {width:warehouse.length*this.ratio,height:warehouse.width*this.ratio};
+                    localStorage.setItem("equipment:warehouse", warehouse.id);
+                    $.ajax({
+                        url : this.baseUrl+"warehouse/detail/getCoordsInfo",
+                        type : "post",
+                        dataType : "JSON",
+                        data : {id:warehouse.id},
+                        success : (res,status)=>{
+                            this.elements = res.data[0] ? JSON.parse(res.data[0]) : [];
+                            if(res.data[1] && res.data[1].length>0){
+                                let equipmentElements = [];
+                                res.data[1].forEach(eq=>{
+                                    let coords = JSON.parse(eq.info);
+                                    let selfInfo = this.equipments[coords.id-1];
+                                    equipmentElements.push(Object.assign({
+                                        eqId:eq.id,
+                                        exist:eq.exist,
+                                        code:eq.code,
+                                        width:eq.width,
+                                        depth:eq.depth,
+                                        repository:eq.repositoryId,
+                                        x:coords.x,
+                                        y:coords.y,
+                                        turn:!!coords.turn,
+                                    },selfInfo));
+                                });
+                                this.equipmentElements = equipmentElements;
+                            }else this.equipmentElements = [];
+                            this.repositories = res.data[2];
+                            this.isNotEdit = true;
+                            this.isLoad = true;
+                        },
+                        error : (err,status)=>{
+                            window.tempTip.show("坐标信息加载失败");
+                        },
+                        timeout:3000,
+                    })
+                },200);
+            },
+            /**
+             * 初始页加载
+             */
+            initPage(){
+                $.ajax({
+                    url : this.baseUrl+"warehouse/detail",
+                    type : "GET",
+                    success : (res,status)=>{
+                        this.warehouses = res.data;
+                        //这里获取warehouses
+                        let id = localStorage.getItem("equipment:warehouse");
+                        if (!id || !this.warehouses.some(warehouse=>{
+                            if (warehouse.id == id){
+                                this.selectedWarehouse(warehouse);
+                                return true;
+                            }
+                        })
+                        ){
+                            if (this.warehouses.length>0)this.selectedWarehouse(this.warehouses[0]);
+                        }
+                        $("#loading").hide();
+                    },
+                    error : (err,status)=>{
+                        window.tempTip.show("加载失败");
+                    },
+                    timeout:3000,
+                })
+            },
+            flipArr(arr){
+                let flip = [];
+                for (let i=arr.length-1;i>=0;i--){
+                    flip.push(arr[i]);
+                }
+                return flip;
+            },
             loadElement(){
                 if (this.isShowRatio===undefined){
                     this.isShowRatio = true;
@@ -710,31 +802,6 @@
                     timeout:10000,
                 })
             },
-            initPage(){
-                $.ajax({
-                    url : this.baseUrl+"warehouse/detail",
-                    type : "GET",
-                    success : (res,status)=>{
-                        this.warehouses = res.data;
-                        //这里获取warehouses
-                        let id = localStorage.getItem("equipment:warehouse");
-                        if (!id || !this.warehouses.some(warehouse=>{
-                                    if (warehouse.id == id){
-                                        this.selectedWarehouse(warehouse);
-                                        return true;
-                                    }
-                                })
-                        ){
-                            if (this.warehouses.length>0)this.selectedWarehouse(this.warehouses[0]);
-                        }
-                        $("#loading").hide();
-                    },
-                    error : (err,status)=>{
-                        window.tempTip.show("加载失败");
-                    },
-                    timeout:3000,
-                })
-            },
             //备选设备拖拽按下事件
             eqDown(equipment){
                 if (this.isNotEdit)return;
@@ -860,52 +927,6 @@
                 this.currentEl.updateCoords = true;
                 $("#canvas").focus();
             },
-            //仓库切换
-            selectedWarehouse(warehouse){
-                this.isLoad = false;
-                setTimeout(()=>{
-                    this.selected = warehouse.id;
-                    this.name = warehouse.name;
-                    this.ratio = warehouse.ratio;
-                    this.container = {width:warehouse.length*this.ratio,height:warehouse.width*this.ratio};
-                    localStorage.setItem("equipment:warehouse", warehouse.id);
-                    $.ajax({
-                        url : this.baseUrl+"warehouse/detail/getCoordsInfo",
-                        type : "post",
-                        dataType : "JSON",
-                        data : {id:warehouse.id},
-                        success : (res,status)=>{
-                            this.elements = res.data[0] ? JSON.parse(res.data[0]) : [];
-                            if(res.data[1] && res.data[1].length>0){
-                                let equipmentElements = [];
-                                res.data[1].forEach(eq=>{
-                                    let coords = JSON.parse(eq.info);
-                                    let selfInfo = this.equipments[coords.id-1];
-                                    equipmentElements.push(Object.assign({
-                                        eqId:eq.id,
-                                        exist:eq.exist,
-                                        code:eq.code,
-                                        width:eq.width,
-                                        depth:eq.depth,
-                                        repository:eq.repositoryId,
-                                        x:coords.x,
-                                        y:coords.y,
-                                        turn:!!coords.turn,
-                                    },selfInfo));
-                                });
-                                this.equipmentElements = equipmentElements;
-                            }else this.equipmentElements = [];
-                            this.repositories = res.data[2];
-                            this.isNotEdit = true;
-                            this.isLoad = true;
-                        },
-                        error : (err,status)=>{
-                            window.tempTip.show("坐标信息加载失败");
-                        },
-                        timeout:3000,
-                    })
-                },200);
-            },
             //文本类属性改变
             changeText(key){
                 this.currentEl[key] = event.target.value;
@@ -968,6 +989,10 @@
                     $("#locationModal").modal("show");
                 },20);
                 let children = this.current.children[this.currentEqChildIndex];
+                this.current.children.forEach(item=>{
+                    item.row = Number(item.row);
+                    item.column = Number(item.column);
+                });
                 $.ajax({
                     url : this.baseUrl+"location/get",
                     type : "post",
@@ -1052,9 +1077,15 @@
                         switch (res.code){
                             case 200:
                                 equipment.eqId = res.data[0];
+                                let locCount = 0;
                                 equipment.children.forEach((item,index)=>{
                                     item.id = res.data[1][index];
-                                })
+                                    if (item.row && Number(item.row) > 0){
+                                        locCount += Number(item.row) * Number(item.column)
+                                    }
+                                });
+                                equipment.exist = locCount;
+                                this.$forceUpdate();
                                 $("#detailInfo").modal("hide");
                                 window.toast.success("保存成功");
                                 break;
@@ -1062,14 +1093,15 @@
                                 this.error = res.data;
                                 break;
                             case 414:
-                                this.error = {"code":"设备编码重复"};
-                                this.toast.error(this.error.code);
+                                this.error = {code:"设备编码重复"};
+                                window.toast.error(this.error.code);
                                 break;
                             default:
                                 window.toast.error("服务器错误:"+res.message);
                         }
                     },
                     error : (err)=>{
+                        console.error(err);
                         window.tempTip.setIndex(999);
                         window.tempTip.show("网络错误");
                     },
@@ -1081,7 +1113,6 @@
                 if (!equipment.code)error.code = "设备编号未填写";
                 if (!equipment.width)error.width = "设备宽度未填写";
                 if (!equipment.depth)error.depth = "设备深度未填写";
-                //if (!equipment.repository)error.repositoryId = "设备库区未选定";
                 if (equipment.layer !== equipment.children.length)error.children = "设备绑定错误";
                 for (let i=0;i<equipment.layer;i++){
                     if (!equipment.children[i].height)error["children["+i+"].height"] = "设备高度不得为空"
@@ -1144,7 +1175,7 @@
                         failTipList[eq.code]="详情尚未加载完毕";
                     }else{
                         let item = eq.children[this.currentEqChildIndex];
-                        let code = eq.code+'-'+((this.currentEqChildIndex+1)<10 ? '0'+(this.currentEqChildIndex+1) : (this.currentEqChildIndex+1));
+                        let code = eq.code+'-'+(this.currentEqChildIndex+1);
                         request.push(Object.assign({id:item.id,code:code},
                             this.buildPool))
                     }
@@ -1191,7 +1222,7 @@
                 }
                 if (this.isLoadLocation)return;
                 let eq = this.current.children[this.currentEqChildIndex];
-                let code = this.current.code+'-'+((this.currentEqChildIndex+1)<10 ? '0'+(this.currentEqChildIndex+1) : (this.currentEqChildIndex+1));
+                let code = this.current.code+'-'+(this.currentEqChildIndex+1);
                 this.isLoadLocation = true;
                 $.ajax({
                     url : this.baseUrl+"location/locationBind",
@@ -1206,7 +1237,8 @@
                                 window.toast.success("构建成功!");
                                 this.current.children[this.currentEqChildIndex].row = Number(this.buildPool.row);
                                 this.current.children[this.currentEqChildIndex].column = Number(this.buildPool.column);
-                                this.buildPool = {};
+                                this._locationAttrDefault();
+                                $("#locationModal").modal("hide");
                                 this.$forceUpdate();
                                 break;
                             default:
@@ -1325,6 +1357,7 @@
                             case 200:
                                 this.repositories.push(res.data);
                                 $("#repository").modal("hide");
+                                this.repository = {};
                                 break;
                             default:
                                 window.toast.error("库区建立失败");

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

@@ -177,7 +177,7 @@
                 },
                 changeSwitchStatus(){
                     if (!this.user.owners || this.user.owners.length===0){
-                        this._updateOwnerShow(!this.switchStatus);
+                        this._updateOwnerShow(this.switchStatus);
                     }else{
                         this.owners.forEach(owner=>{
                             owner.hide = this.switchStatus && !(this.isExist(this.user.owners,owner.name) && this.switchStatus);

+ 38 - 0
resources/views/order/workOrder/_owner_fill_work_order_modal.blade.php

@@ -186,6 +186,31 @@
                             </td>
                         </tr>
 
+                        <tr v-if="item.process_result_info === '不入库'">
+                            <td colspan="9">
+                                <div class="row">
+                                    <label class="col-form-label col-sm-4 text-right ">原因<span class="text-danger">*</span></label>
+                                    <div class="col-sm-8 form-inline">
+                                        <input type="text" class="form-control form-control-sm col-12"
+                                               v-model="item.remark"
+                                               placeholder="不入库原因" >
+                                    </div>
+                                </div>
+                            </td>
+                        </tr>
+                        <tr v-if="item.process_result_info === '不出库'">
+                            <td colspan="9">
+                                <div class="row">
+                                    <label class="col-form-label col-sm-4 text-right ">原因<span class="text-danger">*</span></label>
+                                    <div class="col-sm-8 form-inline">
+                                        <input type="text" class="form-control form-control-sm col-12"
+                                               v-model="item.remark"
+                                               placeholder="不出库原因" >
+                                    </div>
+                                </div>
+                            </td>
+                        </tr>
+
                         <tr v-if="item.process_result_info === '商家做出库单(物流选自提,宝时不发货)'">
                             <td colspan="8">
                                 <div class="row">
@@ -549,6 +574,19 @@
                                     </div>
                                 </td>
                             </tr>
+                            <tr v-else-if="['不入库','不出库'].includes(item.process_result_info)" class="bg-light">
+                                <td colspan="9">
+                                    <div class="row">
+                                        <label class="col-form-label col-sm-4 text-right">
+                                            原因
+                                        </label>
+                                        <div class="form-inline col-sm-8 row">
+                                            <input type="text" class="form-control form-control-sm col-12"
+                                                   v-model="item.remark">
+                                        </div>
+                                    </div>
+                                </td>
+                            </tr>
                         </template>
                         </tbody>
                     </table>

+ 30 - 7
resources/views/order/workOrder/_work_order_show.blade.php

@@ -296,12 +296,15 @@
                                 <td class="text-wrap" v-text="item.process_result_info"></td>
                             </tr>
                             <tr v-if="hasOutInNumber(item)">
-                                <td colspan="9" class="row">
-                                    <label for="" class="col-form-label col-sm-3 text-right">出库订单号:</label>
-                                    <label class="col-form-label col-sm-9 text-monospace"
-                                           v-text="item.out_order_number"></label>
+                                <td colspan="9">
+                                    <div class="row">
+                                        <label for="" class="col-form-label col-sm-3 text-right">出库订单号:</label>
+                                        <label class="col-form-label col-sm-9 text-monospace"
+                                               v-text="item.out_order_number"></label>
+                                    </div>
                                 </td>
                             </tr>
+
                             <tr v-else-if="hasStoreNumber(item)">
                                 <td colspan="5">
                                     <div class="row">
@@ -318,6 +321,15 @@
                                     </div>
                                 </td>
                             </tr>
+                            <tr v-else-if="['不入库','不出库'].includes(item.process_result_info)">
+                                <td colspan="9">
+                                    <div class="row">
+                                        <label for="" class="col-form-label col-sm-3 text-right">原因:</label>
+                                        <label class="col-form-label col-sm-9 text-monospace "
+                                               v-text="item.remark"></label>
+                                    </div>
+                                </td>
+                            </tr>
                         </template>
                         </tbody>
                     </table>
@@ -418,6 +430,16 @@
                                     </div>
                                 </td>
                             </tr>
+
+                            <tr v-if="['不入库','不出库'].includes(item.process_result_info)">
+                                <td colspan="9">
+                                    <div class="row">
+                                        <label for="" class="col-form-label col-3 text-right">原因: </label>
+                                        <label for="" class="col-form-label col-9 text-monospace "
+                                               v-text="item.remark"> </label>
+                                    </div>
+                                </td>
+                            </tr>
                         </template>
                         </tbody>
                     </table>
@@ -450,8 +472,8 @@
 
         <div class="modal-body" v-if="'快递丢件' === showWorkOrder.issue_type_name">
             <template v-if="'货主处理'=== showWorkOrder.status">
-                <div class="form-group row" >
-                    <label  class="col-form-label col-12 text-center text-secondary" style="font-size: 28px">
+                <div class="form-group row">
+                    <label class="col-form-label col-12 text-center text-secondary" style="font-size: 28px">
                         待商家填充丢件信息详情
                     </label>
                 </div>
@@ -478,7 +500,8 @@
                         </div>
                     </div>
                 </div>
-                <div class="form-group row" v-if="showWorkOrder.refund_images && showWorkOrder.refund_images.length > 0">
+                <div class="form-group row"
+                     v-if="showWorkOrder.refund_images && showWorkOrder.refund_images.length > 0">
                     <label class="col-form-label col-sm-2 text-right">
                         退款截图
                     </label>

+ 28 - 19
resources/views/order/workOrder/index.blade.php

@@ -838,8 +838,14 @@
                         tip: ['输入关键词快速定位下拉列表,回车确定', '选择要显示的仓库责任方'],
                         placeholder: ['仓库责任方', '定位或多选仓库责任方'], data: this.userWorkgroup
                     },
-
-                    {name: 'creator', type: 'input', placeholder: '创建人'},
+                    {
+                        name: 'status', type: 'select_multiple_select',
+                        tip: ['输入关键词快速定位下拉列表,回车确定', '选择要显示的工单当前处理人'],
+                        placeholder: ['工单当前处理人', '定位或多选工单当前处理人'],
+                        data: [{name: '宝时处理', value: '宝时处理'},
+                            {name: '货主处理', value: '货主处理'},
+                            {name: '承运商处理', value: '承运商处理'},]
+                    },
                 ], [
                     {name: 'review_at_start', type: 'time', tip: ['终审开始日期', '时间']},
                     {name: 'review_at_end', type: 'time', tip: ['终审结束日期', '时间']},
@@ -847,12 +853,7 @@
                         name: 'logistic_number', type: 'input', placeholder: '快递单号'
                     },
                     {name: 'client_code', type: 'input', placeholder: '客户订单号'},
-                    {
-                        name: 'status', type: 'select', placeholder: '工单当前处理人',
-                        data: [{name: '宝时处理', value: '宝时处理'},
-                            {name: '货主处理', value: '货主处理'},
-                            {name: '承运商处理', value: '承运商处理'},]
-                    },
+                    {name: 'creator', type: 'input', placeholder: '创建人'},
                     {
                         name: 'process_progress', type: 'select', placeholder: '当前进度',
                         data: [
@@ -1149,7 +1150,7 @@
                             item.issue_type_name = detail.issue_type ? detail.issue_type.name : '';
                             return item;
                         });
-                        commodities.push(...(commodity_items ?? []))
+                        commodities.push(...(commodity_items ?commodity_items: []))
                     });
                     return commodities.filter(item => {
                         if (!isCurrent) {
@@ -1532,7 +1533,11 @@
                         let cur_logistic_number = e.logistic_number,
                             process_result_info = e.process_result_info,
                             isAdd = false, isAddRow = false;
-                        if (process_result_info && (process_result_info.indexOf('商家做入库单') >= 0 || process_result_info.indexOf('商家做出库单') >= 0)) {
+                        if (process_result_info && (
+                            process_result_info.indexOf('商家做入库单') >= 0 ||
+                            process_result_info.indexOf('商家做出库单') >= 0 ||
+                            process_result_info.indexOf('不入库')  >= 0  ||
+                            process_result_info.indexOf('不出库')  >= 0)) {
                             isAddRow = true;
                         }
                         if (cur_logistic_number === logistic_number) {
@@ -1882,24 +1887,25 @@
                 getBaoShiEndHandleResult(commodity) {
                     let {process_result} = commodity;
                     let items = [
-                        {process_result: '多发,客户买下', option: ['已完成出库']},
-                        {process_result: '多发,客户退回', option: ['已退回仓库', '完成']},
+                        {process_result: '多发,客户买下', option: ['已完成出库','完成']},
+                        {process_result: '多发,客户退回', option: ['已退回仓库' ]},
                         {process_result: '少发,宝时补发', option: ['宝时补发']},
-                        {process_result: '少发,不补发', option: ['已完成入库']},
+                        {process_result: '少发,不补发', option: ['已完成入库','完成']},
                         {process_result: '核实未错漏发', option: ['确认未错漏发']},
                     ];
-                    return items.filter(e => process_result === e.process_result).map(e => e.option).shift() ?? [];
-
+                    let shift =  items.filter(e => process_result === e.process_result).map(e => e.option).shift() ;
+                    return shift ? shift : [];
                 },
                 getOwnerMistakeProcessResultInfo(process_result, item) {
                     let items = [
                         {process_result: "少发,宝时补发", option: ['商家不做单'],},
-                        {process_result: "多发,客户买下", option: ['商家做出库单(物流选自提,宝时不发货)'],},
+                        {process_result: "多发,客户买下", option: ['商家做出库单(物流选自提,宝时不发货)','不出库'],},
                         {process_result: "多发,客户退回", option: ['客户自行退回(提供退回单号)', '宝时上门取件(提供寄件信息,地址,联系人,电话)'],},
-                        {process_result: "少发,不补发", option: ['商家做入库单,选择明细和数量'],},
+                        {process_result: "少发,不补发", option: ['商家做入库单,选择明细和数量','不入库'],},
                         {process_result: "核实未错漏发", option: ['确认未错漏发'],},
                     ];
-                    let options = items.filter(e => e.process_result === process_result).map(e => e.option).shift() ?? [];
+                    let shift = items.filter(e => e.process_result === process_result).map(e => e.option).shift();
+                    let options = shift  ? shift : []
                     if (options.length === 0) {
                         item.process_result_info = options[0];
                     }
@@ -2772,9 +2778,12 @@
                                 message = '出库订单号不能为空';
                             } else if ('商家做入库单,选择明细和数量' === e.process_result_info && !e.store_in_amount) {
                                 message = '入库单不能为空';
+                            } else if (['不入库','不出库'].includes(e.process_result_info) && !e.remark){
+                                message = '不入库,不出库原因不能为空';
                             }
                         });
                         if (message) return {success: false, message: message};
+                        return {success:true};
                     } else if ('快递异常' === issue_type_name) {
                         if (is_edit) {
                             let {type, commodities, dealImages} = this.ownerEditWorkOrder;
@@ -3096,7 +3105,7 @@
                     copy_items.forEach((e, i) => {
                         let current_logistic_number = e.logistic_number;
                         let add_flag = false;
-                        if (e.reissue_logistic_number || e.out_order_number || e.store_in_number) {
+                        if (e.reissue_logistic_number || e.out_order_number || e.store_in_number || e.remark) {
                             add_flag = true;
                         }
                         if (current_logistic_number === logistic_number) {

+ 2 - 2
resources/views/package/weigh/index.blade.php

@@ -40,7 +40,7 @@
                         <td class="text-muted"><span>@{{package.recipientMobile}}</span></td>
                     </tr>
                 </table>
-                <div class="text-info h5 btn btn">{{$packages->count()}}/{{$packages->total()}}</div>
+<!--                <div class="text-info h5 btn btn">{{--{{$packages->count()}}--}}/{{--{{$packages->total()}}--}}</div>-->
                 {{$packages->appends($paginateParams)->links()}}
             </div>
         </div>
@@ -87,7 +87,7 @@
                     @endforeach
                 ],
                 form:'',
-                sum:{!! $packages->total() !!},
+                sum:0,
                 selectTr:0
             },
             mounted:function(){

+ 5 - 1
resources/views/personnel/laborApply/dispatch/detail/create.blade.php

@@ -31,7 +31,11 @@
                                     <input class="form-control" type="number" :name="'users['+i+'][age]'"
                                            :id="'users['+i+'][age]'">
                                 </div>
-
+                                <label class="col-lg-1 col-sm-3 col-form-label" :for="'users['+i+'][cardId]'">身份证</label>
+                                <div class="col-lg-2 col-sm-12">
+                                    <input class="form-control" type="text" :name="'users['+i+'][card_id]'"
+                                           :id="'users['+i+'][card_id]'">
+                                </div>
                                 <div v-if="i!==0" class="col-1 ml-1">
                                     <button class="btn btn-sm btn-primary float-right" type="button"
                                             @click="items.splice(i,1)">-

+ 6 - 1
resources/views/personnel/laborApply/dispatch/detail/edit.blade.php

@@ -32,7 +32,12 @@
                                            :value="item.age"
                                            :id="'users['+i+'][age]'">
                                 </div>
-
+                                <label class="col-lg-1 col-sm-3 col-form-label" :for="'users['+i+'][cardId]'">身份证</label>
+                                <div class="col-lg-2 col-sm-12">
+                                    <input class="form-control" type="text" :name="'users['+i+'][card_id]'"
+                                           :value="item.card_id"
+                                           :id="'users['+i+'][card_id]'">
+                                </div>
                                 <div v-if="i!==0" class="col-1 ml-1">
                                     <button class="btn btn-sm btn-primary float-right" type="button"
                                             @click="items.splice(i,1)">-

+ 2 - 0
resources/views/personnel/laborApply/dispatch/index.blade.php

@@ -77,6 +77,7 @@
                                     <td>@{{ v.name }}</td>
                                     <td>@{{ v.gender }}</td>
                                     <td>@{{ v.age }}</td>
+                                    <td>@{{ v.card_id }}</td>
                                 </tr>
                             </table>
                             <table v-else style="margin: 0;padding: 0">
@@ -84,6 +85,7 @@
                                     <td>@{{ labor_company_dispatch.labor_company_dispatch_details[0].name }}</td>
                                     <td>@{{ labor_company_dispatch.labor_company_dispatch_details[0].gender }}</td>
                                     <td>@{{ labor_company_dispatch.labor_company_dispatch_details[0].age }}</td>
+                                    <td>@{{ labor_company_dispatch.labor_company_dispatch_details[0].card_id }}</td>
                                 </tr>
                             </table>
                             <a href="javascript:void(0)"

+ 4 - 1
resources/views/rejected/rejectedPushTask/index.blade.php

@@ -61,6 +61,8 @@
                     <input class="checkItem" type="checkbox" v-model="item.checked">
                     <span>@{{ i+1 }}</span>
                 </td>
+                <td class="td-warm text-muted"><span>@{{ item.id }}</span></td>
+                <td class="td-warm text-muted"><span>@{{ item.createTime }}</span></td>
                 <td class="td-warm text-muted"><span>@{{ item.taskNum }}</span></td>
                 <td class="td-warm text-muted"><span>@{{ item.type }}</span></td>
                 <td class="td-warm text-muted"><span>@{{ item.status }}</span></td>
@@ -219,7 +221,7 @@
         <div class="modal fade" id="staticBackdropShowCommodityDetail" tabindex="-1"
              aria-labelledby="staticBackdropLabel"
              aria-hidden="true">
-            <div class="modal-dialog " style="max-width: 70% !important;">
+            <div class="modal-dialog modal-lg">
                 <div class="modal-content ">
                     <div class="modal-header ">
                         <h5 class="modal-title" id="staticBackdropLabel">明细</h5>
@@ -365,6 +367,7 @@
                 let firstTableColumn = [
                     {name: 'row_num', value: '序号'},
                     {name: 'id', value: '推单任务编号'},
+                    {name: 'createTime', value: '创建时间'},
                     {name: 'type', value: '任务类型'},
                     {name: 'status', value: '状态'},
                     {name: 'asnNos', value: 'ASN单号'},

+ 18 - 6
resources/views/rejected/search/general.blade.php

@@ -58,7 +58,9 @@
                             <label><input type="checkbox" :value="rejectedBill.id"/></label>
                         </td>
                         <td class="text-nowrap">
-                                <span class="text-muted" style="opacity:0.7">@{{ i+1 }}</span> <span v-if="rejectedBill.order_issue_rejected_bill" class="badge badge-pill badge-danger">问题件</span>
+                            <span class="text-muted" style="opacity:0.7">@{{ i+1 }}</span>
+                            <span v-if="rejectedBill.order_issue_rejected_bill" class="badge badge-pill badge-danger"
+                                  >@{{rejectedBill.order_issue_rejected_bill.order_issue ? rejectedBill.order_issue_rejected_bill.order_issue.issue_type.name : '问题件'}}</span>
                         </td>
                         <td class="text-muted text-center">
                             <span v-if="rejectedBill.is_checked==1">
@@ -193,7 +195,7 @@
                         @endcan
                     </tr>
                 </table>
-                <div class="text-info h5 btn btn">{{$rejectedBills->count()}}/{{$rejectedBills->total()}}</div>
+                <!--<div class="text-info h5 btn btn">{{--{{$rejectedBills->count()}}--}}/{{--{{$rejectedBills->total()}}--}}</div>-->
                 {{$rejectedBills->appends($paginateParams)->links()}}
             </div>
             <label><textarea id="clipboardDiv" style="opacity:0"></textarea></label>
@@ -226,7 +228,7 @@
         @if(isset($paginateParams))
         let paginateParams = {!! json_encode($paginateParams) !!};
         @endif
-        let total = '{{$rejectedBills->total()}}';
+        let total=500000;
         let editUrl = "{{url('rejectedBill')}}/";
         let destroyUrl = "{{url('rejectedBill')}}/";
         let ajaxConfirmBeStoredUrl = '{{url("apiLocal/rejectedBill/apiConfirmBeStored")}}';
@@ -389,9 +391,19 @@
                     rejectedBill.isShowCancelBtn = false;
                 });
             },
-            methods: {
-                removeCommonImg(id) {
-                    $('#' + id).remove();
+            methods:{
+                renderingTotal(){
+                    $("#paginate").after('<div class="position-relative font-weight-bold" style="left:160px;top:0;margin-top: -25px">共 <b style="color:#0000FF!important;">'+
+                        this.sum+'</b> 条数据</div>');
+                },
+                getTotal(){
+                    window.axios.post(decodeURIComponent(decodeURIComponent(window.location.href))).then(res=>{
+                        this.sum = res.data;
+                        this.renderingTotal();
+                    });
+                },
+                removeCommonImg(id){
+                    $('#'+id).remove();
                 },
                 commonImg(id, uploadFiles) {
                     let div = "";

+ 228 - 12
resources/views/station/monitor/show.blade.php

@@ -9,8 +9,14 @@
                     <div class="col-4 text-center h3 py-2 font-weight-bold text-info position-relative">
                         宝时云仓
                     </div>
-                    <div class="col text-center  h3 py-2 text-muted">
-                        智能分拣
+                    <div class="col h3 py-2 text-muted row">
+                        <select class="form-control col-2 offset-4" id="station" @change="listenerStation()">
+                            <option selected value=""></option>
+                            <option v-for="station in stations" :value="station.code">
+                                @{{ station.code }}
+                            </option>
+                        </select>
+                        <span class="col-2">智能分拣</span>
                     </div>
                 </div>
                 <div class="row pt-3">
@@ -95,8 +101,12 @@
                         <div class="row pt-2">
                             <div class="col text-center">
                                 <svg class="box-display" width="300" height="160" viewBox="0 0 300 160">
-                                    <rect x="0" y="80" width="300" height="80"
-                                          style="fill:#ffffff;stroke-width:3;stroke:rgb(11,51,71)"/>
+                                    <g><rect x="0" y="80" width="300" height="80"
+                                          style="fill:#ffffff;stroke-width:3;stroke:rgb(11,51,71)">
+                                        </rect>
+                                        <text x="10" y="135" font-family="Verdana" font-weight="bold" font-size="40" fill="green">
+                                            @{{ box }}</text>
+                                    </g>
                                     <polygon points="0,80 50,0 250,0 300,80"
                                              style="fill:#ffffff;stroke:rgb(11,51,71);stroke-width:3;" />
                                     <polygon v-if="grids.single.status"
@@ -206,7 +216,17 @@
                                 <textarea  name="" id="" cols="30" rows="3" class="form-control" v-model="inputs.manuallyTakeBox.text"
                                            placeholder="点选此处写入料箱号,可以省略IDE前缀和0,多个用空格分隔,例入:5121 156"></textarea>
                                             <button class="btn btn-info btn-lg" @click="manuallyTakeBoxOut">出库</button>
+                                            <button class="btn btn-success btn-lg" @click="manuallyTakeBoxOutTwo">二期出库</button>
+                                            <button class="btn btn-success btn-lg" @click="manuallyTakeBoxInTwo">二期入库</button>
                                             <button class="btn btn-sm btn-primary btn-lg" @click="paddingEmptyBox">填充空箱</button>
+                                            <div class="row mt-1">
+                                                <select class="form-control ml-3" v-model="type" style="width:150px">
+                                                    <option v-for="strategy in strategies" :value="strategy.code">@{{ strategy.name }}</option>
+                                                </select>
+                                                <select class="form-control ml-1" v-model="stationCode" style="width:150px">
+                                                    <option v-for="st in stations" :value="st.code">@{{ st.code }}</option>
+                                                </select>
+                                            </div>
                                         </div>
                                     </div>
                                 </div>
@@ -361,14 +381,116 @@
                         right:{top:{status:'',},bottom:{status:'',},},
                     },
                 },
+                stations:[],
+                baseUrl:"https://swms.baoshi56.com/",
+                stationWs:null,
+                prodNum:null,
+                box:"",
+                list:[],
+                type:"",
+                stationCode:"",
+                strategies:[],
             },
             mounted() {
                 this._makeMenuHiding();
-                initEcho();
-                this._listenTaskBroadcast();
-                this._listenAllTaskBroadcast();
+                //initEcho();
+                //this._listenTaskBroadcast();
+                //this._listenAllTaskBroadcast();
+                this._loadStation();
             },
             methods:{
+                // 加载站点
+                _loadStation(){
+                    $.ajax({
+                        url : this.baseUrl+"equipment/getSortingStationList",
+                        type : "get",
+                        success : (res,status)=>{
+                            if (res.code === 200){
+                                this.stations = res.data;
+                                this.stationCode = this.stations[0].code;
+                            } else {
+                                window.tempTip.show(res.message);
+                            }
+                        },
+                        error : (err,status)=>{
+                            window.tempTip.show("分拣站信息获取失败");
+                        },
+                        timeout:3000,
+                    })
+                    $.ajax({
+                        url : this.baseUrl+"device/robot/hairou/getStrategies",
+                        type : "post",
+                        success : (res,status)=>{
+                            if (res.code === 200){
+                                this.strategies = res.data;
+                                this.type = this.strategies[0].code;
+                            } else {
+                                window.tempTip.show(res.message);
+                            }
+                        },
+                        error : (err,status)=>{
+                            window.tempTip.show("分配策略获取失败");
+                        },
+                        timeout:3000,
+                    })
+                },
+                listenerStation(){
+                   let val = document.getElementById("station").value;
+                   // 手动关闭不重试
+                   if (val === '' && this.stationWs != null){
+                       this.stationWs.close();
+                       window.clearInterval(this.prodNum);
+                       this.list = null;
+                       return;
+                   }
+                   this.stationWs = new WebSocket("wss://swms.baoshi56.com/ws/device/check/picking.info/"+val);
+                   this.stationWs.onopen = (event=> {
+                       console.info("Connection open success!");
+                   });
+                    this.stationWs.onmessage = (event => {
+                        let obj = JSON.parse(event.data);
+                        if(obj.dataType !== "heartbeat"){
+                            this.box = obj.code;
+                            let list = [];
+                            let arr = (JSON.parse(obj.list));
+                            if (arr && arr.length>0){
+                                arr.forEach(info => {
+                                    list.push({
+                                        status : "待处理",
+                                        commodity : {
+                                            name : "",
+                                            barcodes : [
+                                                {code : info.barcode},
+                                                {code : info.barcodeAs},
+                                            ],
+                                        },
+                                        amount : info.quantity
+                                    })
+                                })
+                            }
+                            this.list = list;
+                        }
+                    });
+                    this.stationWs.onerror = function (event) {
+                        console.error(event);
+                    };
+                    this.prodNum = window.setInterval(()=>{
+                        if (this.stationWs != null){
+                            let obj = {
+                                "requestId" : "stationListener",
+                                "dataType" : "heartbeat",
+                            };
+                            this.stationWs.send(JSON.stringify(obj));
+                        }
+                    },15000);
+                    // 被关闭就五秒后重试
+                    this.stationWs.onclose = (event => {
+                        window.clearInterval(this.prodNum);
+                        setTimeout(()=>{
+                            this.listenerStation();
+                        },5000);
+                    });
+                },
                 _makeMenuHiding(){
                     $('.navbar,.nav1,.nav2').hide();
                     $('.nav3').on('mouseenter', function () {
@@ -380,7 +502,6 @@
                 },
                 _listenTaskBroadcast(){
                     let _this=this;
-                    console.log(this.taskBroadcastName,this.channelName);
                     window.Echo.channel(this.taskBroadcastName).listen(this.channelName,(msg)=> {
                         console.log('1:',(new Date()).toTimeString(),msg);
                         let taskIn = JSON.parse(msg.json);
@@ -400,11 +521,8 @@
                 },
                 _listenAllTaskBroadcast(){
                     let _this=this;
-                    console.log(this.allTaskBroadcastName,this.channelName);
                     window.Echo.channel(this.allTaskBroadcastName).listen(this.channelName,(msg)=> {
-                        console.log('2:',(new Date()).toTimeString(),msg);
                         let stationTasksIn = JSON.parse(msg.json);
-                        console.log(stationTasksIn);
                         if(!stationTasksIn||stationTasksIn.length===0)return;
                         stationTasksIn.forEach(function(stationTaskIn){
                             let stationTaskIn_toAdd=stationTaskIn;
@@ -425,7 +543,6 @@
                                 _this.$forceUpdate();
                             }
                         })
-
                     });
                 },
                 selectBatch(stationTaskBatch){
@@ -455,6 +572,104 @@
                         window.manuallyHairouRequesting=false;
                     })
                 },
+                _waveOutBound(waveCode){
+                    $.ajax({
+                        url: this.baseUrl+"device/robot/hairou/task/createOutBound/picking?code="+waveCode
+                            +"&strategy="+this.type+"&station="+this.stationCode,
+                        type: "get",
+                        success : (res,status)=>{
+                            if (res.code === 200 && res.data){
+                                window.tempTip.showSuccess("开始执行");
+                            } else {
+                                window.tempTip.show(res.message);
+                            }
+                        },
+                        error : (err,status)=>{
+                            window.tempTip.show("系统错误");
+                        },
+                        timeout:3000,
+                    })
+                },
+                _formatBoxes(){
+                    let arr = this.inputs.manuallyTakeBox.text.trim().split(/\s+/);
+                    if (arr.length===0){
+                        return;
+                    }
+                    let boxes = [];
+                    arr.forEach(box=>{
+                        if (box.length <= 10 && box.length > 0){
+                            let before = "IDE0000000";
+                            boxes.push(before.substring(0,before.length - box.length)+box);
+                        }
+                    });
+                    return boxes;
+                },
+                manuallyTakeBoxInTwo(){
+                    let boxes = this._formatBoxes();
+                    if (boxes.length===0){
+                        return;
+                    }
+                    window.tempTip.inputVal('请输入货主名称:',(code)=>{
+                        let obj = {
+                            "boxCodes":boxes,
+                            "toLocations":null,
+                            "owner":code,
+                        }
+                        $.ajax({
+                            url: this.baseUrl+"device/robot/hairou/task/createInBound/custom",
+                            type: "post",
+                            headers: {'Content-Type':'application/json;charset=utf8'},
+                            data: JSON.stringify(obj),
+                            success : (res,status)=>{
+                                if (res.code === 200 && res.data){
+                                    window.tempTip.showSuccess("开始执行");
+                                } else {
+                                    window.tempTip.show(res.message);
+                                }
+                            },
+                            error : (err,status)=>{
+                                window.tempTip.show("系统错误");
+                            },
+                            timeout:3000,
+                        })
+                    });
+                },
+                manuallyTakeBoxOutTwo(){
+                    if (this.inputs.manuallyTakeBox.text.length === 13 && this.inputs.manuallyTakeBox.text.substring(0,1) === "W"){
+                        this._waveOutBound(this.inputs.manuallyTakeBox.text);
+                        return;
+                    }
+                    let arr = this.inputs.manuallyTakeBox.text.trim().split(/\s+/);
+                    if (arr.length===0){
+                        return;
+                    }
+                    let boxes = this._formatBoxes();
+                    if (boxes.length===0){
+                        return;
+                    }
+                    let obj = {
+                        "boxCodes":boxes,
+                        "typeName":this.type,
+                        "toLocation":this.stationCode
+                    }
+                    $.ajax({
+                        url: this.baseUrl+"device/robot/hairou/task/createOutBound/custom",
+                        type: "post",
+                        headers: {'Content-Type':'application/json;charset=utf8'},
+                        data: JSON.stringify(obj),
+                        success : (res,status)=>{
+                            if (res.code === 200 && res.data){
+                                window.tempTip.showSuccess("开始执行");
+                            } else {
+                                window.tempTip.show(res.message);
+                            }
+                        },
+                        error : (err,status)=>{
+                            window.tempTip.show("系统错误");
+                        },
+                        timeout:3000,
+                    })
+                },
                 paddingEmptyBox(){
                     window.tempTip.inputVal("调取数量",amount=>{
                         window.tempTip.postBasicRequest("{{url('/api/thirdPart/haiq/storage/paddingEmptyBox')}}",{amount:amount},res=>{
@@ -520,6 +735,7 @@
                     return this.current_stationTaskBatch.batch.code;
                 },
                 taskCommodities(){
+                    if (this.list)return this.list;
                     if(!this.task)return [];
                     return this.task['station_task_commodities'];
                 },

+ 15 - 13
resources/views/store/receivingDashboard/punctualityProgress/index.blade.php

@@ -72,10 +72,10 @@
                 <td class="td-warm text-muted"><span>@{{ item.workGroupName }}</span></td>
                 <td class="td-warm text-muted"><span>@{{ item.expectancyAmount }}</span></td>
                 <td class="td-warm text-muted"><span>@{{ item.putawayAmount }}</span></td>
-                <td class="td-warm text-muted"><span>@{{ item.receiveAverageConsumeDuration }}</span></td>
-                <td class="td-warm text-muted"><span>@{{ item.putawayAverageConsumeDuration }}</span></td>
+                <td class="td-warm text-muted"><span>@{{ item.receiveConsumeDuration }}</span></td>
+                <td class="td-warm text-muted"><span>@{{ item.putawayConsumeDuration }}</span></td>
                 <td class="td-warm text-muted">
-                    <button @click="showDetail(item.receiveTaskNo,item.reservationNo,item.asnNo)" type="button"
+                    <button @click="showDetail(item.receiveTaskNo,item.reservationNo,item.asnNo,item.createSingleTime)" type="button"
                             class="btn btn-primary" data-toggle="modal"
                             data-target="#staticBackdrop">
                         查看明细
@@ -188,9 +188,8 @@
                     asnNo: null,
                     createSingleStartTime: null,
                     createSingleEndTime: null,
-                    finishedReceiveTime: null,
-                    receivePerson: null,
                     workGroupId: null,
+                    sign: null,
                 },
                 size: 50,
                 current: 1,
@@ -217,8 +216,8 @@
                     {name: 'workGroupName', value: '操作组', neglect: true},
                     {name: 'expectancyAmount', value: '预期总数', neglect: true},
                     {name: 'putawayAmount', value: '已上架总数', neglect: true},
-                    {name: 'receiveAverageConsumeDuration', value: ' 收货平均耗时', neglect: true},
-                    {name: 'putawayAverageConsumeDuration', value: '上架平均耗时', neglect: true},
+                    {name: 'receiveConsumeDuration', value: ' 收货总耗时(分)', neglect: true},
+                    {name: 'putawayConsumeDuration', value: '上架总耗时(分)', neglect: true},
 
                 ];
                 new Header({
@@ -242,8 +241,8 @@
                     {name: 'commBarcode', value: '条码', neglect: true},
                     {name: 'receiveQty', value: '收货数量', neglect: true},
                     {name: 'putawayTime', value: '上架时间', neglect: true},
-                    {name: 'receiveConsumeDuration', value: '收货耗时', neglect: true},
-                    {name: 'putawayConsumeDuration', value: '上架耗时', neglect: true},
+                    {name: 'receiveConsumeDuration', value: '收货耗时(分)', neglect: true},
+                    {name: 'putawayConsumeDuration', value: '上架耗时(分)', neglect: true},
 
                 ];
                 new Header({
@@ -275,10 +274,14 @@
                     });
                 },
                 getSearch() {
+                    if (this.search.customerId!=null ||this.search.receiveTaskNo!=null ||this.search.reservationNo!=null
+                        ||this.search.status!=null ||this.search.asnNo!=null ||this.search.createSingleStartTime!=null
+                        ||this.search.createSingleEndTime!=null ||this.search.workGroupId!=null){
+                        this.search.sign='有筛选';
+                    }
                     let search = Object.assign({}, this.search);
                     search.startTime += ' 00:00:00';
                     search.endTime += ' 23:59:59';
-                    console.log(search);
                     return search;
                 },
                 //初始化日期为今天和昨天
@@ -317,9 +320,8 @@
                     let url = this.getBaseUrl() + `/api/receiveBoard/agingScheduleList?size=${this.size}&current=${this.current}`
                     this.getPageResult(url);
                 },
-                showDetail(receiveTaskNo, reservationNo, asnNo) {
-                    let url = this.getBaseUrl() + `/api/receiveBoard/agingScheduleDetail?receiveTaskNo=${receiveTaskNo}&reservationNo=${reservationNo}&asnNo=${asnNo}`
-                    tempTip.showSuccess('开始查询,请稍后!');
+                showDetail(receiveTaskNo, reservationNo, asnNo,createSingleTime) {
+                    let url = this.getBaseUrl() + `/api/receiveBoard/agingScheduleDetail?receiveTaskNo=${receiveTaskNo}&reservationNo=${reservationNo}&asnNo=${asnNo}&createSingleTime=${createSingleTime}`
                     axios.get(url, this.getSearch()).then(res => {
                         if (res.data.code !== 200) {
                             this.resData.itemDetail = null;

+ 6 - 2
resources/views/store/receivingDashboard/receivingTableList/index.blade.php

@@ -209,8 +209,7 @@
                     asnNo: null,
                     createSingleStartTime: null,
                     createSingleEndTime: null,
-                    finishedReceiveTime: null,
-                    receivePerson: null,
+                    sign: null,
                 },
                 closeAsnParam:{
                     asnType:null,
@@ -304,6 +303,11 @@
                     });
                 },
                 getSearch() {
+                    if (this.search.customerId!=null ||this.search.receiveTaskNo!=null ||this.search.reservationNo!=null
+                        ||this.search.status!=null ||this.search.asnNo!=null ||this.search.createSingleStartTime!=null
+                        ||this.search.createSingleEndTime!=null){
+                        this.search.sign='有筛选';
+                    }
                     let search = Object.assign({}, this.search);
                     search.startTime += ' 00:00:00';
                     search.endTime += ' 23:59:59';

+ 2 - 1
routes/web.php

@@ -495,7 +495,8 @@ Route::group(['middleware' => 'auth'], function ($route) {
         });
         /** 主页 */
         Route::group(['prefix' => 'index'], function () {
-            Route::any('general', 'RejectedController@index');
+            Route::get('general', 'RejectedController@index');
+            Route::post('general', 'RejectedController@getTotal');
             Route::any('analyze', 'RejectedController@indexAnalyze');
             Route::get('import', 'RejectedController@import');
             Route::post('cancelCheck', 'RejectedController@cancelCheck');