ajun пре 5 година
родитељ
комит
85e2b8e057

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

@@ -29,7 +29,7 @@ class OrderController extends Controller
         $orders = $result['orders'];
         $commodities = $result['commodities'];
         $customers=OracleBasCustomer::query()->select('customerid','descr_c')->where('customer_type','OW')->where('active_flag','Y')->get();
-        $page = $request->page ?? 1;
+        $page = $request['page'] ?? 1;
         $codes=DB::connection('oracle')->table('BAS_CODES')->select('code','codename_c')->where('codeid','SO_STS')->orderBy('code','asc')->get();
         $orderIssueType = OrderIssueType::all();
         return view('order/index/delivering',compact('orders','customers','request','codes','commodities','page','picktotraceids','orderIssueType'));

+ 119 - 55
app/Http/Controllers/OrderIssueController.php

@@ -2,7 +2,6 @@
 
 namespace App\Http\Controllers;
 
-use App\Exports\Export;
 use App\Imports\OrderIssueImport;
 use App\Logistic;
 use App\OracleDOCOrderHeader;
@@ -13,10 +12,8 @@ use App\OrderIssueType;
 use App\Owner;
 use App\QualityLabel;
 use App\RejectedBill;
+use App\Services\LogService;
 use App\Services\OrderIssueService;
-use App\Services\OrderPackageService;
-use App\Services\OrderService;
-use App\Services\RejectedService;
 use App\Shop;
 use App\UserWorkgroup;
 use Exception;
@@ -31,13 +28,6 @@ use Maatwebsite\Excel\Facades\Excel;
 class OrderIssueController extends Controller
 {
 
-    public function __construct()
-    {
-        app()->singleton("orderIssueService", OrderIssueService::class);
-        app()->singleton("orderService", OrderService::class);
-        app()->singleton("rejectedService", RejectedService::class);
-    }
-
     public function index(Request $request)
     {
         if (!Gate::allows('订单管理-问题件-查询')) {
@@ -49,7 +39,8 @@ class OrderIssueController extends Controller
         $orderIssues = $orderIssueService->paginate($request->all());
         $orderIssueType = OrderIssueType::all();
         $qualityLabel = QualityLabel::all();
-        return view('order.issue.index', compact('owners', 'orderIssues', 'orderIssueType', 'qualityLabel'));
+        $userWorkgroup = UserWorkgroup::all();
+        return view('order.issue.index', compact('owners', 'orderIssues', 'orderIssueType', 'qualityLabel','userWorkgroup'));
     }
 
     public function create()
@@ -87,8 +78,8 @@ class OrderIssueController extends Controller
         if (!Gate::allows('订单管理-问题件-编辑')) {
             return redirect(url('/'));
         }
-        $orderIssue = OrderIssue::where('id', $id)->first();
-        $order = Order::with(['packages' => function ($query) {
+        $orderIssue = OrderIssue::query()->where('id', $id)->first();
+        $order = Order::query()->with(['packages' => function ($query) {
             return $query->with(['commodities' => function ($query) {
                 return $query->with('commodity');
             }]);
@@ -98,7 +89,7 @@ class OrderIssueController extends Controller
                 return $query->with(['commodity']);
             }]);
         }])->where('id', $orderIssue->second_order_id)->first();
-        $rejectedBill = RejectedBill::where('id', $orderIssue->rejected_bill_id)->first();
+        $rejectedBill = RejectedBill::query()->where('id', $orderIssue->rejected_bill_id)->first();
         $userWorkgroup = UserWorkgroup::all();
         $orderIssueType = OrderIssueType::all();
         $owners = Owner::all();
@@ -187,7 +178,7 @@ class OrderIssueController extends Controller
         if (!($request->has('id'))) {
             return ['success' => 'false', 'fail_info' => '没有问题题件相关的参数'];
         }
-        $orderIssue = OrderIssue::where('id', $request->input('id'))->first();
+        $orderIssue = OrderIssue::query()->where('id', $request->input('id'))->first();
         $bool = $orderIssue->delete();
         if ($bool) {
             $this->log(__METHOD__, __FUNCTION__, json_encode($request->toArray()), Auth::user()['id']);
@@ -197,39 +188,28 @@ class OrderIssueController extends Controller
         }
     }
 
-    public function apiUpdate(Request $request)
+    public function updateApi(Request $request)
     {
         if (!Gate::allows('订单管理-问题件-编辑')) {
             return ['success' => false, 'fail_info' => '没有对应权限'];
         }
-        $validator = $this->apiUpdateValidator($request->input('orderIssues'));
-        if ($validator->fails()) {
-            $arr = [];
-            foreach ($validator->getMessageBag()->toArray() as $k => $error) {
-                array_push($arr, $error[0]);
-            }
-            return ['success' => false, 'errors' => $arr];
-        }
-        if($request->filled( 'rejectedBill')){
-            $validator = $this->apiUpdateValidatorRejectedBill($request->input('rejectedBill'));
-            if($validator->fails()){
-                $arr = [];
-                foreach ($validator->getMessageBag()->toArray() as $k => $error) {
-                    array_push($arr, $error[0]);
-                }
-                return ['success' => false, 'errors' => $arr];
-            }
-        }
-        $orderIssue = OrderIssue::where('id', $request->input('orderIssues')['id'])->first();
-        if (!$orderIssue) {
-            return ['success' => false, 'fail_info' => '数据库没有相应记录,请到查询页面刷新重试'];
+        try {
+            $data =  $request->only([
+                'order_issue_type_id','owner_id','logistic_id', 'logistic_number_return','result_explain','final_status','second_order_id',
+                'logistic_indemnity_money','logistic_express_remission','baoshi_indemnity_money','baoshi_express_remission','user_workgroup_id'
+            ]);
+            $orderIssue = OrderIssue::query()->find($request->id);
+            $orderIssue->update($data);
+            $orderIssue->同步退单状态();
+            LogService::log(__METHOD__,__FUNCTION__,json_encode($request));
+            return  ['success' => true];
+        } catch (Exception $e) {
+            LogService::log(__METHOD__,__FUNCTION__,json_encode($request)."||".$e->getMessage().'||'.$e->getTraceAsString());
+            return  ['success' => true ,'fail_info' => $e->getMessage()];
         }
-        $orderIssueService = app('orderIssueService');
-        $orderIssueService->updateOrderIssue($orderIssue, $request->all());
-        $this->log(__METHOD__, __FUNCTION__, json_encode($request->toArray()), Auth::user()['id']);
-        return ['success' => true, 'id' => $orderIssue['id']];
     }
 
+
     public function apiEndOrderIssue(Request $request)
     {
         if (!Gate::allows('订单管理-问题件-编辑')) {
@@ -238,13 +218,13 @@ class OrderIssueController extends Controller
         if (!$request->has('ids')) {
             return ['success' => false, 'fail_info' => '没有传入对应的参数'];
         }
-        $count = OrderIssue::whereIn('id', $request->input('ids'))->where('final_status', '已解决')->count();
+        $count = OrderIssue::query()->whereIn('id', $request->input('ids'))->where('final_status', '已解决')->count();
         if ($count > 0) {
             return ['success' => false, 'fail_info' => '勾选的内容中已有完结的订单问题件,取消勾选后重试'];
         } else {
-            OrderIssue::whereIn('id', $request->input('ids'))->update(['final_status' => '已解决']);
+            OrderIssue::query()->whereIn('id', $request->input('ids'))->update(['final_status' => '已解决']);
             foreach ($request->input('ids') as $id) {
-                OrderIssueProcessLog::create(['order_issue_id' => $id, 'user_id' => Auth::user()['id'], 'type' => '结束', 'content' => '完结订单']);
+                OrderIssueProcessLog::query()->create(['order_issue_id' => $id, 'user_id' => Auth::user()['id'], 'type' => '结束', 'content' => '完结订单']);
             }
             $this->log(__METHOD__, __FUNCTION__, json_encode($request->toArray()), Auth::user()['id']);
             return ['success' => true];
@@ -259,13 +239,16 @@ class OrderIssueController extends Controller
         if (!$request->has('id')) {
             return ['success' => false, 'fail_info' => '没有传入对应参数'];
         }
-        $bool = OrderIssue::where('id', $request->input('id'))->update(['is_new_rejecting' => '已处理']);
-        if ($bool) {
-            $log = OrderIssueProcessLog::create(['order_issue_id' => $request->input('id'), 'user_id' => Auth::user()['id'], 'content' => '订单已处理', 'type' => '处理']);
-            $log=OrderIssueProcessLog::with(['user'])->where('id',$log['id'])->first();
-            return ['success' => true,'data'=> $log];
+        try {
+            OrderIssue::query()
+                ->where('id', $request->input('id'))
+                ->update(['is_new_rejecting' => '已处理']);
+            LogService::log(__METHOD__,__FUNCTION__,json_encode($request->getContent()));
+            return ['success'=>true];
+        } catch (Exception $e) {
+            LogService::log(__METHOD__,__FUNCTION__,json_encode($request->getContent())."||".$e->getMessage()."||".$e->getTraceAsString());
+            return ['success' => false,'fail_info' => $e->getMessage()];
         }
-        return ['success' => false, 'fail_info' => '修改失败'];
     }
 
     public function apiGetOrderInfoByClientNo(Request $request)
@@ -288,15 +271,15 @@ class OrderIssueController extends Controller
         }
         $orderService = app('orderService');
         $clientCode = $request->input('clientCode');
-        $order = Order::where('client_code', $clientCode)->first();
+        $order = Order::query()->where('client_code', $clientCode)->first();
         if ($order) {
-            if (OrderIssue::where('order_id', $order['id'])->count()) {
+            if (OrderIssue::query()->where('order_id', $order['id'])->count()) {
                 return ['success' => false, 'fail_info' => '该客户订单号已有对应的订单问题件'];
             }
             $order = $orderService->findOrCreateByClientCode($clientCode);
             return ['success' => true, 'order' => $order];
         } else {
-            $orderHeader = OracleDOCOrderHeader::where('SOReference1', $clientCode)->first();
+            $orderHeader = OracleDOCOrderHeader::query()->where('SOReference1', $clientCode)->first();
             if (!$orderHeader) {
                 return ['success' => false, 'fail_info' => '该客户订单号没有对应的订单信息'];
             } else {
@@ -315,7 +298,7 @@ class OrderIssueController extends Controller
         $logisticNumberReturn = $request->input('logisticNumberReturn');
         $rejectedBill = RejectedBill::with('items')->where('logistic_number_return', $logisticNumberReturn)->first();
         if ($rejectedBill) {
-            $orderIssue = OrderIssue::where('rejected_bill_id', $rejectedBill->id)->first();
+            $orderIssue = OrderIssue::query()->where('rejected_bill_id', $rejectedBill->id)->first();
 
             if ($orderIssue) {
                 return ['success' => false, 'fail_info' => '该退回单号已有对应的问题件'];
@@ -329,6 +312,87 @@ class OrderIssueController extends Controller
         }
     }
 
+    public function isExistByOrderNoApi(Request $request){
+        if (!Gate::allows('订单管理-订单问题件生成')) {
+            return ['success'=>false,'fail_info' => '没有对应权限'];
+        }
+        $orderNos = $request->input('orderNos');
+        $orderIssues =OrderIssue::query()
+            ->with('order')
+            ->whereHas('order',function($query) use ($orderNos){
+                $query->whereIn('code',$orderNos);
+            })->get();
+
+        if($orderIssues->count() == 0){
+            return ['success'=>true ];
+        }else{
+            $is_exist_orderNos = '';
+            foreach ($orderIssues as $orderIssue) {
+                $is_exist_orderNos.= $orderIssue->order->code.',';
+            }
+            $is_exist_orderNos = rtrim($is_exist_orderNos,',');
+            $is_exist_orderNos .= ';';
+            return ['success'=>false,'fail_info'=>'选中的订单已有存在的问题件:'.$is_exist_orderNos];
+        }
+    }
+
+    public function updateColumnApi(Request $request)
+    {
+        if (!Gate::allows('订单管理-问题件-编辑')) {
+            return ['success'=>false,'fail_info' => '没有对应权限'];
+        }
+        try {
+            OrderIssue::query()
+                ->where('id', $request->input('id'))
+                ->update([$request->input('column') => $request->input('value')]);
+            LogService::log(__METHOD__,'更新问题件',json_encode($request->getContent()));
+            return ['success' => true];
+        } catch (Exception $e) {
+            LogService::log(__METHOD__,'更新问题件error',json_encode($request->getContent()).'||'.$e->getMessage().'||'.$e->getTraceAsString());
+            return ['success' => false, $e->getMessage()];
+        }
+    }
+
+    public function batchDestroyApi(Request $request)
+    {
+        if (!Gate::allows('订单管理-问题件-删除')) {
+            return ['success'=>false,'fail_info' => '没有对应权限'];
+        }
+        try {
+            OrderIssue::query()->whereIn('id', $request->input('ids'))->delete();
+            LogService::log(__METHOD__,__FUNCTION__,json_encode($request->getContent()));
+            return ['success' => true];
+        } catch (Exception $e) {
+            LogService::log(__METHOD__,__FUNCTION__,json_encode($request)."||".$e->getMessage()."||".$e->getTraceAsString());
+            return ['success' => false,'fail_info' => $e->getMessage()];
+        }
+    }
+
+    public function updateLogisticNumberReturnApi(Request $request){
+        if (!Gate::allows('订单管理-问题件-编辑')) {
+            return ['success'=>false,'fail_info' => '没有对应权限'];
+        }
+
+        try {
+
+            /** @var OrderIssue $orderIssue */
+            $orderIssue = OrderIssue::query()->where('id',$request->input('id'))->first();
+            $orderIssue->update(['logistic_number_return' => $request->input('logisticNumberReturn')]);
+            $orderIssue->同步退单状态();
+
+            $rejectedBill = RejectedBill::query()
+                ->with('items')
+                ->where('logistic_number_return',$request->input('logisticNumberReturn'))
+                ->first();
+
+            LogService::log(__METHOD__, __FUNCTION__, json_encode($request->getContent()));
+            return ['success' => true, 'rejectedBill' => $rejectedBill,'rejectingStatus' =>$orderIssue->rejecting_status];
+        } catch (Exception $e) {
+            LogService::log(__METHOD__, __FUNCTION__,'error'. json_encode($request->getContent()).'||'.$e->getMessage().'||'.$e->getTraceAsString());
+            return ['success' => false ,'fail_info' => $e->getMessage()];
+        }
+    }
+
     public function apiUpdateValidator(array $arr)
     {
         return Validator::make($arr, [

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

@@ -24,6 +24,7 @@ class OrderIssuePerformanceController extends Controller
         if (!Gate::allows('订单管理-问题件-绩效统计')) {
             return redirect(url('/'));
         }
+        /** @var OrderIssuePerformanceService $service */
         $service = app('orderIssuePerformanceService');
         $performance = $service->paginate($request->all());
         $options = ['timeFrame' => $request->input('timeFrame'), 'create_start' => $request->input('create_start') ?? '', 'create_end' => $request->input('create_end') ?? ''];

+ 30 - 3
app/Http/Controllers/OrderIssueProcessLogController.php

@@ -3,6 +3,8 @@
 namespace App\Http\Controllers;
 
 use App\OrderIssueProcessLog;
+use App\Services\LogService;
+use App\Services\OrderIssueProcessLogService;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\Gate;
@@ -22,11 +24,10 @@ class OrderIssueProcessLogController extends Controller
                 'user_id' => Auth::user()['id'],
                 'type' => '处理',
             ];
-            $orderIssueProcessLog = OrderIssueProcessLog::create($arr);
+            $orderIssueProcessLog = OrderIssueProcessLog::query()->create($arr);
             if ($orderIssueProcessLog) {
-                $data = OrderIssueProcessLog::with(['user'])->where('id',$orderIssueProcessLog['id'])->first();
                 $this->log(__METHOD__, __FUNCTION__, json_encode($request->toArray()), Auth::user()['id']);
-                return ['success' => true, 'data' => $data];
+                return ['success' => true, 'data' => $orderIssueProcessLog];
             } else {
                 return ['success' => false, 'fail_info' => '录入失败'];
             }
@@ -43,4 +44,30 @@ class OrderIssueProcessLogController extends Controller
         $this->log(__METHOD__, __FUNCTION__, json_encode($request->toArray()), Auth::user()['id']);
         return ['success'=>true];
     }
+
+    public function batchStoreApi(Request $request){
+        if (!Gate::allows('订单管理-问题件-编辑')) {
+            return ['success' => false, 'fail_info' => '没有对应的权限'];
+        }
+        /** @var OrderIssueProcessLogService $service */
+        $service = app(OrderIssueProcessLogService::class);
+
+        try {
+            $data = $service->batchStoreAndReturnLogs($request->all());
+            $logs = OrderIssueProcessLog::query()
+                ->with('user')
+                ->whereIn('id',data_get($data,'*.id'))
+                ->get();
+            $result_data = [];
+            foreach ($logs as $log) {
+                $result_data[$log->order_issue_id] =$log;
+            }
+            LogService::log(__METHOD__,__FUNCTION__,json_encode($request->getContent()));
+            return ['success' => true,'logs' => $result_data];
+        } catch (\Exception $e) {
+            LogService::log(__METHOD__,__FUNCTION__,json_encode($request->getContent()).'||'.$e->getMessage()."||".$e->getTraceAsString());
+            return ['success' => false,$e->getMessage()];
+        }
+    }
+
 }

+ 2 - 4
app/Http/Controllers/RejectedBillItemController.php

@@ -73,6 +73,7 @@ class RejectedBillItemController extends Controller
         }
         $rejectedBillItem->injectCommodityName();
         $rejectedBIll = RejectedBill::where('id',$request->input('id_rejected_bill'))->first();
+        $rejectedBIll->同步问题件();
         $rejectedBIll->同步问题件退件状态();
         $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         return ['success'=>'true','id'=>$rejectedBillItem['id']];
@@ -94,14 +95,11 @@ class RejectedBillItemController extends Controller
             $rejectedBillItem->fill($request->all());
             $rejectedBillItem->update();
             $rejectedBillItem->injectCommodityName();
-            $rejectedBIll = RejectedBill::where('id',$rejectedBillItem->id_rejected_bill)->with('orderIssue')->first();
-
+            $rejectedBIll = RejectedBill::query()->where('id',$rejectedBillItem->id_rejected_bill)->with('orderIssue')->first();
             $rejectedBIll->同步问题件退件状态();
             $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
             return ['success'=>'true','id'=>$rejectedBillItem['id']];
         }
-
-
     }
 
 

+ 3 - 0
app/Http/Controllers/TestController.php

@@ -475,6 +475,9 @@ class TestController extends Controller
         /** @var DataHandlerService $dataHandlerService */
         $dataHandlerService = app('dataHandlerService');
 
+        $orderIssue = OrderIssue::query()->find(11111);
+        dd($orderIssue,$orderIssue === null);
+
         $startDate = \Illuminate\Support\Carbon::parse('2020-05-06 13:16:51')->toDateTimeString();
         /** @var OrderTrackingService $orderTrackingService */
         $orderTrackingService  = app('orderTrackingService');

+ 2 - 2
app/Imports/OrderIssueImport.php

@@ -97,10 +97,10 @@ class OrderIssueImport implements ToCollection, WithHeadingRow, WithMultipleShee
                 if ($rejectedBill) {
                     $arr['rejected_bill_id'] = $rejectedBill['id'];
                 }
-                $orderIssue = OrderIssue::create($arr);
+                $orderIssue = OrderIssue::query()->create($arr);
                 if ($orderIssue) {
                     array_push($exception, ['订单' . $row['原始运单号'] . '问题件创建成功!']);
-                    OrderIssueProcessLog::create(['order_issue_id' => $orderIssue['id'], 'user_id' => Auth::user()['id'], 'content' => '', 'type' => '创建']);
+                    OrderIssueProcessLog::query()->create(['order_issue_id' => $orderIssue['id'], 'user_id' => Auth::user()['id'], 'content' => '', 'type' => '创建']);
                 } else {
                     array_push($exception, ['订单' . $row['原始运单号'] . '问题件创建失败']);
                 }

+ 23 - 15
app/OrderIssue.php

@@ -11,7 +11,7 @@ class OrderIssue extends Model
     use ModelTimeFormat;
 
     protected $fillable = [
-        'order_id', 'created_at', 'rejected_bill_id', 'rejecting_status', 'result_explain',
+        'order_id', 'created_at', 'rejected_bill_id', 'rejecting_status', 'result_explain','logistic_number_return',
         'situation_explain', 'order_issue_type_id', 'second_order_id', 'is_new_rejecting',
         'final_status', 'logistic_indemnity_money', 'logistic_express_remission', 'baoshi_indemnity_money', 'baoshi_express_remission', 'user_workgroup_id'];
 
@@ -31,7 +31,8 @@ class OrderIssue extends Model
 
     public function rejectedBill()
     {
-        return $this->belongsTo('App\RejectedBill', 'rejected_bill_id', 'id');
+        return $this->hasOne(RejectedBill::class, 'id', 'rejected_bill_id'); // 执行迁移文件之前
+//        return $this->hasOne(RejectedBill::class, 'logistic_number_return', 'logistic_number_return'); // 执行迁移文件之后
     }
 
     public function issueType()
@@ -101,31 +102,39 @@ class OrderIssue extends Model
         $rejectedItems = [];
         $orderItems = [];
         $orderIssueId = $this['id'];
-        if ($this['rejected_bill_id'] ?? false) {
-            $rejectedBillItems = RejectedBillItem::query()->whereHas('rejectedBill.orderIssue', function ($query) use ($orderIssueId) {$query->where('id',$orderIssueId);})->get();
+        if ($this->logistic_number_return ?? false) {
+            $rejectedBillItems = RejectedBillItem::query()
+                ->whereHas('rejectedBill.orderIssue', function ($query) use ($orderIssueId) {
+                    $query->where('id',$orderIssueId);
+                })->get();
             if (count($rejectedBillItems) == 0) {
                 $this->update(['rejecting_status' => '未退回']);
                 return;
             }
             foreach ($rejectedBillItems as $item) {
-                if (!isset($rejectedItems[$item->barcode_goods]))
-                    $rejectedItems[$item->barcode_goods] = 0;
-                $rejectedItems[$item->barcode_goods] = $item->amount + $rejectedItems[$item->barcode_goods] ?? 0;
+                $barcode_goods = (string)$item->barcode_goods;
+                if (!isset($rejectedItems[$barcode_goods])){
+                    $rejectedItems[$barcode_goods] = 0;
+                }
+                $rejectedItems[(string)$barcode_goods] += $item->amount;
             }
         } else {
             $this->update(['rejecting_status' => '未退回']);
             return;
         }
-        if ($this['order_id']  ?? false) {
-            $items = OrderPackageCommodities::query()->with('commodity')->whereHas('package.order.issue', function ($query) use ($orderIssueId) {
-                $query->where('id', $orderIssueId);
-            })->get();
+        if ($this->order_id  ?? false) {
+            $items = OrderPackageCommodities::query()
+                ->with(['commodity','package.order.issue'])
+                ->whereHas('package.order.issue', function ($query) use ($orderIssueId) {
+                    $query->where('id', $orderIssueId);
+                })->get();
             if (count($items) > 0) {
                 foreach ($items as $item) {
                     $sku = $item['commodity']['sku'];
-                    if ($orderItems[$sku] ?? false)
+                    if (! isset($orderItems[$sku])  ?? false){
                         $orderItems[$sku] = 0;
-                    $orderItems[$sku] = $orderItems[$sku] ?? 0 + $item->amount;
+                    }
+                    $orderItems[$sku] += $item->amount;
                 }
             } else {
                 $this->update(['rejecting_status' => '无']);
@@ -161,6 +170,7 @@ class OrderIssue extends Model
             } else
                 $isLack++;
         }
+
         //dd($isAccord,$rejectedReview,$isLack,$isExcess,$isDiff,$rejectedExcess);
         if($isAccord == $rejectedReview && $isLack == 0 && $isExcess == 0 && $isDiff==0 && $rejectedExcess == 0 )
             $this->update(['rejecting_status' => '全部退回']);
@@ -172,9 +182,7 @@ class OrderIssue extends Model
             $this->update(['rejecting_status' => '差异退回']);
     }
 
-    public function 同步退单($logist_number){
 
-    }
 
     public function delete()
     {

+ 3 - 0
app/Providers/AppServiceProvider.php

@@ -3,6 +3,7 @@
 namespace App\Providers;
 
 use App\Http\Controllers\Controller;
+use App\OrderIssueProcessLog;
 use App\Services\CommodityService;
 use App\Services\common\BatchUpdateService;
 use App\Services\CommodityBarcodeService;
@@ -15,6 +16,7 @@ use App\Services\AllInventoryService;
 use App\Services\InventoryDailyLogService;
 use App\Services\LogisticService;
 use App\Services\OracleActAllocationDetailService;
+use App\Services\OrderIssueProcessLogService;
 use App\Services\OrderIssueService;
 use App\Services\OrderPackageService;
 use App\Services\OrderService;
@@ -126,6 +128,7 @@ class AppServiceProvider extends ServiceProvider
         app()->singleton('orderIssuePerformanceService',OrderIssuePerformanceService::class);
         app()->singleton('oracleDOCOrderHeaderService',OracleDOCOrderHeaderService::class);
         app()->singleton('oracleActAllocationDetailService',OracleActAllocationDetailService::class);
+        app()->singleton('orderIssueProcessLogService',OrderIssueProcessLogService::class);
     }
 
     private function loadingBasedModuleService(){

+ 13 - 11
app/RejectedBill.php

@@ -69,7 +69,7 @@ class RejectedBill extends Model
 
     function orderIssue()
     {
-        return $this->hasOne('App\OrderIssue', 'rejected_bill_id', 'id');
+        return $this->hasOne( OrderIssue::class, 'logistic_number_return', 'logistic_number_return');
     }
 
     function update(array $attributes = [], array $options = [])
@@ -145,22 +145,24 @@ class RejectedBill extends Model
         $orderIssue = $this->orderIssue()->first();
         if ($orderIssue ?? false) {
             $this->同步退单状态();
-            OrderIssue::query()->where('id', $orderIssue['id'])->update(['is_new_rejecting' => '有']);
+            $orderIssue->update(['is_new_rejecting' => '有']);
         } else {
-            OrderIssue::query()->where('rejected_bill_id', $this->id)->update(['is_new_rejecting' => '有']);
+            OrderIssue::query()->where('logistic_number_return', $this->logistic_number_return)->update(['is_new_rejecting' => '有']);
         }
     }
 
     public function 同步问题件(){
-        $order_number = $this['order_number'];
-        $order_header = OracleDOCOrderHeader::query()->where('soreference1',$order_number)->first();
-        if(!$order_header){
-            return;
+        $order = null;
+        if($this->order_number ?? false){
+            $order = Order::query()->with('issue')->where('client_code',$this->order_number)->first();
+        }else if($this->logistic_number_return ?? false){
+            $asn_header = OracleDOCASNHeader::query()->where('soreference3',$this->logistic_number_return)->first();
+            $order_header = OracleDOCOrderHeader::query()->where('soreference1',$asn_header->asnreference1)->first();
+            $order = Order::query()->with('issue')->where('code',$order_header['orderno'])->first();
         }
-        $order = Order::query()->with('issue')->where('code',$order_header['orderno'])->first();
-        if($order['issue']){
+        if($order['issue'] ?? false){
             $order_issue =  $order->issue;
-            $order_issue->update(['rejected_bill_id'=>$this['id']]);
+            $order_issue->update(['logistic_number_return'=>$this->logistic_number_return]);
         }
     }
 
@@ -168,7 +170,7 @@ class RejectedBill extends Model
     {
         /** @var OrderIssue $orderIssue */
         $orderIssue =  $this->orderIssue()->first();
-        if($orderIssue)
+        if($orderIssue ?? false)
             $orderIssue->同步退单状态();
     }
 }

+ 24 - 0
app/Services/OrderIssueProcessLogService.php

@@ -0,0 +1,24 @@
+<?php
+
+namespace App\Services;
+
+use App\OrderIssueProcessLog;
+use Illuminate\Support\Facades\Auth;
+
+class OrderIssueProcessLogService
+{
+
+    public function batchStoreAndReturnLogs($params)
+    {
+        $ids = $params['orderIssueIds'];
+        $content = $params['content'];
+        $user_id = Auth::user()['id'];
+        $logs = [];
+        foreach ($ids as $id) {
+            $logs[] = OrderIssueProcessLog::query()
+                ->create(['order_issue_id' => $id, 'content' => $content, 'user_id' => $user_id, 'type' => '处理']);
+        }
+        return $logs;
+    }
+
+}

+ 46 - 24
app/Services/OrderIssueService.php

@@ -10,6 +10,7 @@ use App\OrderPackage;
 use App\Order;
 use App\RejectedBill;
 use App\RejectedBillItem;
+use Carbon\Carbon;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\Validator;
@@ -33,7 +34,7 @@ class OrderIssueService
         if ($condition['owner_id'] ?? false) {
             $owner_ids = explode(',', $condition['owner_id']);
         }
-        $query = OrderIssue::with(['userWorkGroup', 'issueType', 'logs' => function ($query) {
+        $query = OrderIssue::with(['top','userWorkGroup', 'issueType', 'logs' => function ($query) use($arr) {
             $query->with('user')->orderByDesc('created_at');
         }, 'order' => function ($query) {
             $query->with(['shop', 'logistic', 'owner', 'packages.commodities.commodity']);
@@ -44,6 +45,16 @@ class OrderIssueService
         }])->whereHas('order.owner', function ($query) use ($owner_ids) {
             $query->whereIn('id', $owner_ids);
         });
+        if($arr['log_content'] ?? false){
+            $query->whereHas('logs',function($query) use ($arr){
+                $query->where('content','like',$arr['log_content']);
+                if($arr['addtime'] ?? false){
+                    $query->where('created_at','>=', Carbon::now()->subDays($arr['addtime']));
+                }else{
+                    $query->where('created_at','>=', Carbon::now()->subDays(31));
+                }
+            });
+        }
         $query->selectRaw('order_issues.* ,order_issue_on_tops.id top_id ,order_issue_on_tops.remark,order_issue_on_tops.updated_at top_update')
             ->leftJoin('order_issue_on_tops', 'order_issue_on_tops.order_issue_id', '=', 'order_issues.id')
             ->whereNull('order_issue_on_tops.deleted_at')
@@ -71,17 +82,13 @@ class OrderIssueService
                 });
             }
             if (($arr['good_barcode'] ?? false) || ($arr['good_name'] ?? false)) {
-                $query->whereHas('packages', function ($query) use ($arr) {
-                    $query->whereHas('commodities', function ($query) use ($arr) {
-                        $query->whereHas('commodity', function ($query) use ($arr) {
-                            if ($arr['good_barcode'] ?? false) {
-                                return $this->searchWay($query,$arr['good_barcode'],'sku');
-                            }
-                            if ($arr['good_name'] ?? false) {
-                                $query->where('name', $arr['good_name']);
-                            }
-                        });
-                    });
+                $query->whereHas('packages.commodities.commodity', function ($query) use ($arr) {
+                    if ($arr['good_barcode'] ?? false) {
+                        return $this->searchWay($query,$arr['good_barcode'],'sku');
+                    }
+                    if ($arr['good_name'] ?? false) {
+                        $query->where('name','like', $arr['good_name']);
+                    }
                 });
             }
         });
@@ -90,7 +97,6 @@ class OrderIssueService
                 return $this->searchWay($query,$arr['send_client_code'], 'client_code');
             });
         }
-
         return $query;
     }
 
@@ -130,7 +136,12 @@ class OrderIssueService
             $query->where('order_issues.created_at', '<=', $condition['created_at_end'] . " 23:59:59");
         }
         if (isset($condition['final_status'])) {
-            $query->where('final_status', $condition['final_status']);
+            if($condition['final_status'] == 'null'){
+                $query->whereNull('final_status');
+            }else{
+                $query->where('final_status', $condition['final_status']);
+            }
+
         }
         if (isset($condition['order_issue_type_id'])) {
             $query->where('order_issue_type_id', $condition['order_issue_type_id']);
@@ -232,16 +243,13 @@ class OrderIssueService
     {
         $orderNos = $params['orderNos'];
         $meg = ['success' => false];
-        $orderIssues = $this->verifyOrderIssue($orderNos);
-        if ($orderIssues != null && count($orderIssues) > 0) {
-            $orderNOs = data_get($orderIssues, '*.order.code');
-            $meg['fail_info'] = '传入订单编号中对应的订单问题已有生成,单号为' . json_encode($orderNOs);
-            return $meg;
-        }
         foreach ($orderNos as $orderNo) {
             try {
                 $orderIssue = $this->createOrFindByOrderNo($orderNo);
                 if($orderIssue != null){
+
+
+
                     OrderIssue::query()->where('id', $orderIssue['id'])->update(['order_issue_type_id' => $params['typeId'], 'result_explain' => $params['result_explain']]);
                     OrderIssueProcessLog::query()->create(['order_issue_id' => $orderIssue['id'], 'user_id' => Auth::user()['id'], 'content' => '', 'type' => '创建']);
                     LogService::log(__METHOD__, __FUNCTION__, '标记订单问题件' . json_encode($orderNo).json_encode($orderIssue));
@@ -250,7 +258,6 @@ class OrderIssueService
                 LogService::log(__METHOD__, __FUNCTION__, '标记订单问题件error' . json_encode($orderNo).$e->getMessage(),$e->getTraceAsString());
             }
         }
-
         $meg['success'] = true;
         unset($params,$orderIssues,$orderNos);
         return $meg;
@@ -270,12 +277,12 @@ class OrderIssueService
         /** @var OrderService $orderService */
         $orderService = app('orderService');
         $orderHeader = OracleDOCOrderHeader::query()->where('SOReference1', $clientCode)->first();
-        if (!$orderHeader) {
+        if ($orderHeader=== null) {
             return null;
         }
         $order = $orderService->findOrCreateByClientCode($clientCode);
         $rejectedBill = RejectedBill::query()->where('order_number', $orderHeader['soreference1'])->first();
-        if(!($rejectedBill ?? false)){
+        if($rejectedBill === null){
            $asnHeader =  OracleDOCASNHeader::query()->where('ASNReference2', $orderHeader['soreference1'])->first();
            if($asnHeader['asnreference3'] ?? false){
                $rejectedBill = RejectedBill::query()->where('logistic_number_return',$asnHeader['asnreference3'])->first();
@@ -283,7 +290,7 @@ class OrderIssueService
         }
         $arr = [
             'order_id' => $order['id'],
-            'rejected_bill_id' => $rejectedBill['id'] ?? '',
+            'logistic_number_return' => $rejectedBill['logistic_number_return'] ?? '',
         ];
         $orderIssue = null;
         try {
@@ -418,4 +425,19 @@ class OrderIssueService
         unset($orderIssue,$arr);
     }
 
+    public function batchDestroy($ids){
+        $bool = null;
+        try {
+            $bool = OrderIssue::query()->whereIn('id', $ids)->delete();
+            LogService::log(__METHOD__,__FUNCTION__,json_encode($ids));
+        } catch (\Exception $e) {
+            LogService::log(__METHOD__,__FUNCTION__,'error'.json_decode($ids).'||'.$e->getMessage().'||'.$e->getTraceAsString());
+        } finally {
+            if($bool ?? false){
+                return ['success'=>true];
+            }else{
+                return ['success' => false];
+            }
+        }
+    }
 }

+ 3 - 2
app/Services/OrderPackageCommoditiesService.php

@@ -294,13 +294,14 @@ class OrderPackageCommoditiesService
             $commodities_list[$key] = $commodity;
         }
         foreach ($orderHeaders as $orderHeader) {
-            $order = $orders[$orderHeader['orderno']] ?? '';
-            if(!($order ?? false)){
+            $order = $orders[$orderHeader['orderno']] ?? null;
+            if(isset($order)){
                 continue;
             }
             $orderPackages = $order['packages'];
             $oracleDOCOrderDetails = $orderHeader['oracleDOCOrderDetails'] ?? [];
             $actAllocationDetails = $orderHeader['actAllocationDetails'] ?? [];
+
             if($actAllocationDetails->count() > 0){
                 foreach ($orderPackages as $orderPackage) {
                     $details = [];

+ 19 - 4
app/Services/OrderPackageService.php

@@ -231,12 +231,18 @@ class OrderPackageService
         $commodityService = app('commodityService');
         $commodities = $commodityService->getWASCommoditiesByWMSOrderHeaders($orderHeaders); // 商品
 
-        /** @var BatchUpdateService $batchUpdateService */
-        $batchUpdateService = app('batchUpdateService');
+
         $multipleData = [['id','weight','bulk']];
         $noAttributeCommodity = [];
+
+        $commodity_map = [];
+        foreach ($commodities as $commodity) {
+            $key = ' id='.$commodity->id;
+            $commodity_map[$key] = $commodity;
+        }
         foreach ($orderPackages as $packages) {
             foreach ($packages as $package) {
+
                 if($package == null){
                     continue;
                 }
@@ -247,8 +253,8 @@ class OrderPackageService
                     'bulk' => 0,
                 ];
                 foreach ($orderPackageCommodities as $packageCommodity) {
-                    $commodity = $commodities->where('id',$packageCommodity['commodity_id'])->first();
-                    if(!($commodity['weight'] ?? false) ||!($packageCommodity['amount'] ?? false) ){
+                    $commodity =  $commodity_map[' id='.$packageCommodity->commodity_id];
+                    if($commodity['weight'] == 0  || !$commodity['bulk'] == 0 ){
                         array_push($noAttributeCommodity,$commodity);
                     }
                     $updateArr['weight'] +=(intval($commodity['weight']) ?? 0)  * ( intval($packageCommodity['amount']) ?? 0);
@@ -257,10 +263,19 @@ class OrderPackageService
                 if($package['weight'] == $updateArr['weight'] && $package['weight'] == $updateArr['bulk']){
                     continue;
                 }
+                // 订单同步步时 重量 体积不覆盖已用值
+                if($packages['weight'] ?? false){
+                    $updateArr['weight'] = $packages['weight'];
+                }
+                if($packages['bulk'] ?? false){
+                    $updateArr['bulk'] = $packages['bulk'];
+                }
                 $multipleData[] = $updateArr;
             }
         }
         if(count($multipleData) > 1){
+            /** @var BatchUpdateService $batchUpdateService */
+            $batchUpdateService = app('batchUpdateService');
             $batchUpdateService->batchUpdate('order_packages',$multipleData);
         }
         array_unique($noAttributeCommodity);

+ 6 - 1
app/UserWorkgroup.php

@@ -26,7 +26,12 @@ class UserWorkgroup extends Model
         return md5($this['name'].Carbon::now()->format('Y-m-d'));
     }
     public  function getIsNeedRemarkAttribute(){
-        return $this['signs']['mark']=='是'? true:false;
+        if($this['signs']['mark'] ?? false){
+            return $this['signs']['mark'] == '是';
+        }else{
+            return false;
+        }
+//        return $this['signs']['mark']=='是'? true:false;
     }
 
 }

+ 58 - 0
database/migrations/2020_09_20_142656_change_order_issue.php

@@ -0,0 +1,58 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class ChangeOrderIssue extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('order_issues',function (Blueprint $table) {
+            $table->string('logistic_number_return')->nullable()->index()->after('order_id');
+        });
+
+        $orderIssues = \App\OrderIssue::query()
+            ->with('rejectedBill')
+            ->get();
+
+        foreach ($orderIssues as $orderIssue) {
+            $orderIssue->update(['logistic_number_return'=>$orderIssue->rejectedBill->logistic_number_return ?? null]);
+        }
+
+//        Schema::table('order_issues',function (Blueprint $table) {
+//            $table->dropColumn('rejected_bill_id');
+//        });
+
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        //
+        Schema::table('order_issues',function (Blueprint $table) {
+            $table->integer('rejected_bill_id')->index()->nullable()->comment('退回单')->after('order_id');
+        });
+
+        $orderIssues = \App\OrderIssue::query()
+            ->with('rejectedBill')
+            ->get();
+
+        foreach ($orderIssues as $orderIssue) {
+            $orderIssue->update(['rejected_bill_id'=>$orderIssue['rejectedBill']['id'] ?? null]);
+        }
+
+//        Schema::table('order_issues',function (Blueprint $table) {
+//            $table->dropColumn('logistic_number_return');
+//        });
+    }
+}

+ 52 - 8
resources/views/order/index/delivering.blade.php

@@ -141,6 +141,32 @@
                 <input  @keyup.enter="pageSkip($event)" class="form-control-sm ml-3 tooltipTarget" :placeholder="pagePlaceholder" title="去往指定页">
                 <span class="text-muted m-1" v-if="maxPage != 0">共 @{{ sum }} 条</span>
 
+
+                <div class="modal fade " id="checkModal" tabindex="-1" role="dialog" aria-labelledby="checkModalLabel" aria-hidden="true">
+                    <div class="modal-dialog modal-dialog-centered">
+                        <div class="modal-content">
+                            <div class="modal-header">
+                                <h5 class="modal-title" id="checkModalLabel">标记问题件提示</h5>
+                                <button type="button" class="close" data-dismiss="modal" aria-label="Close"
+                                        @click="changeRemark">
+                                    <span aria-hidden="true">&times;</span>
+                                </button>
+                            </div>
+                            <div class="modal-body">
+                                <div class="alert" id="alert-message">
+                                    @{{ message.checkOrderIssueMessage }}
+                                </div>
+                            </div>
+                            <div class="modal-footer">
+                                <button type="button" class="btn btn-secondary" data-dismiss="modal"
+                                        @click="message.checkOrderIssueMessage=''">关闭
+                                </button>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+
+
                 <div class="modal fade " id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel"
                      aria-hidden="true">
                     <div class="modal-dialog modal-dialog-centered">
@@ -169,7 +195,7 @@
                                 <button type="button" class="btn btn-sm btn-secondary" data-dismiss="modal"
                                         @click="changeRemark">关闭
                                 </button>
-                                <button type="button" class="btn btn-sm btn-primary" @click="submit">提交</button>
+                                <button type="button" class="btn btn-sm btn-primary" @click="orderIssueTagSubmit">提交</button>
                             </div>
                         </div>
                     </div>
@@ -213,6 +239,9 @@
                 typeId:'',
                 result_explain:'',
                 orderIssueType:{!! $orderIssueType !!},
+                message:{
+                    checkOrderIssueMessage:'',
+                }
             },
             mounted:function () {
                 $(".tooltipTarget").tooltip({'trigger':'hover'});
@@ -572,14 +601,13 @@
                     order.is_unfold=false;
                 },
                 orderIssueTag(){
-                    let _this = this;
-                    if( _this.checkData.length === 0){
+                    if( this.checkData.length === 0){
                         tempTip.show('没有勾选记录');
                         return
                     }
-                    $("#exampleModal").modal('show');
+                    this.isExistByOrderNos()
                 },
-                submit(){
+                orderIssueTagSubmit(){
                     if(this.typeId === ''){
                         $("#orderIssueType").addClass('is-invalid'); return;
                     }else{
@@ -590,7 +618,6 @@
                     tempTip.waitingTip('处理中,请稍候');
                     let data = {orderNos:this.checkData,typeId: this.typeId,result_explain:this.result_explain};
                     axios.post("{{url('apiLocal/order/issue/orderIssueTag')}}",data).then(function(res){
-                        console.log(22);
                         tempTip.setDuration(5000)
                         tempTip.cancelWaitingTip();
                         if(res.data.success){console.log(11);
@@ -599,7 +626,7 @@
                             setTimeout(function(){
                                 window.location.href = "{{url('order/issue/index')}}";
                             },1000);
-                        }else{ console.log(22);
+                        }else{
                             tempTip.setDuration(4000);
                             tempTip.show(res.data.fail_info);
                         }
@@ -683,8 +710,25 @@
                             tempTip.setDuration(3000);
                             tempTip.show('网络错误:'+err);
                         });
+                },
+                isExistByOrderNos(){
+                    let orderNos = this.checkData;
+                    let data = {orderNos:orderNos};
+                    let _this = this;
+                    axios.post("{{url('apiLocal/order/issue/isExistByOrderNo')}}",data).then(function(res){
+                        if(res.data.success){
+                            $("#exampleModal").modal('show')
+                        }else{
+                            _this.message.checkOrderIssueMessage = res.data.fail_info
+                            $("#checkModal").modal('show')
+                        }
+                    }).catch(function(error){
+                        tempTip.setDuration(3000)
+                        tempTip.show('网络异常:'+error)
+                    })
                 }
-            }
+            },
+
         });
     </script>
 @endsection

+ 24 - 100
resources/views/order/issue/edit.blade.php

@@ -49,20 +49,9 @@
                 <div class="form-group row">
                     <label class="col-2 col-form-label text-right">退回单号</label>
                     <div class="col-8">
-                        <input type="text" class="form-control" name="logistic_number" v-model="rejectedBill.logistic_number_return" @blur="getRejectedBill" id="logistic_number_return">
+                        <input type="text" class="form-control" name="logistic_number" v-model="orderIssues.logistic_number_return">
                     </div>
                 </div>
-
-                <div class="form-group row" >
-                    <label class="col-2 col-form-label text-right">退回单号承运商</label>
-                    <div class="col-8 form-group">
-                        <select class="form-control" name="id_logistic_return" v-model="rejectedBill.id_logistic_return" id="id_logistic_return">
-                            <option value></option>
-                            <option v-for="logistic in logistics" :value="logistic.id">@{{ logistic.name }}</option>
-                        </select>
-                    </div>
-                </div>
-
                 <div class="form-group row">
                     <label class="col-2 col-form-label text-right">二次客户订单号</label>
                     <div class="col-8">
@@ -155,23 +144,6 @@
                     </div>
                 </div>
             </div>
-            <div class="modal fade" id="alertModal" tabindex="-1" role="dialog"  aria-labelledby="alertModalLabel" aria-hidden="true">
-                <div class="modal-dialog  modal-dialog-centered">
-                    <div class="modal-content">
-                        <div class="modal-header">
-                            <h5 class="modal-title" id="exampleModalLabel">提示</h5>
-                        </div>
-                        <div class="modal-body">
-                            <div class="alert alert-success">
-                                订单问题件已修改
-                            </div>
-                        </div>
-                        <div class="modal-footer">
-                            <button type="button" class="btn btn-primary" data-dismiss="modal" @click="backOrderIssueIndex">返回查询页面</button>
-                        </div>
-                    </div>
-                </div>
-            </div>
         </div>
     </div>
 @endsection
@@ -237,85 +209,38 @@
                     })
                     p.then(this.orderIssueUpdate);
                 },
-                getRejectedBill(){
-                    let logistic_number_return =  this.rejectedBill.logistic_number_return;
-                    let _this = this;
-                    if( logistic_number_return === null || logistic_number_return == '' ){
-                        this.rejectedBill = {logistic_number_return:logistic_number_return} ;
-                        this.orderIssues.rejected_bill_id = null;
-                        this.isSubmit = false;
-                        return ;
-                    }
-                    let data = {logisticNumberReturn:logistic_number_return};
-                    axios.post("{{url('apiLocal/rejectedBill/getRejectedByLogisticNumberReturn')}}",data).then(function(res){
-                        if(res.data.success){
-                            if(res.data.rejectedBill){
-                                _this.rejectedBill = res.data.rejectedBill;
-                                _this.rejectedBill.id_logistic_return = res.data.rejectedBill.id_logistic_return;
-                                _this.rejectedBill.id_owner = res.data.rejectedBill.id_owner;
-                                _this.orderIssues.rejected_bill_id = res.data.rejectedBill.id;
-                                _this.isSubmit = false;
-                            }
-                            if(res.data.msg){
-                                tempTip.setDuration(2000);
-                                tempTip.showSuccess(res.data.msg);
-                                _this.orderIssues.rejected_bill_id = null;
-                                _this.rejectedBill =  {logistic_number_return:logistic_number_return};
-                            }else {
-                                tempTip.setDuration(2000);
-                                tempTip.showSuccess('找到对应的问题单');
-                            }
-                        }else{
-                            _this.isSubmit = true;
-                            tempTip.setDuration(4000);
-                            tempTip.show(res.data.fail_info);
-                        }
-                    }).catch(function(err){
-                        _this.isSubmit = true;
-                        tempTip.setDuration(4000);
-                        tempTip.show('网络异常:' + err);
-                    });
-                },
                 orderIssueUpdate() {
-                    let arr = {
-                        '问题类别':'order_issue_type_id',
-                        '处理状态':'handle_status',
-                        '处理结果说明':'result_explain',
-                        '承运商赔偿金额':'logistic_indemnity_money',
-                        '承运商快递减免':'logistic_express_remission',
-                        '宝时赔偿金额':'baoshi_indemnity_money',
-                        '宝时快递减免':'baoshi_express_remission',
-                        '退回单号':'logistic_number_return',
-                        '退回单号货主':'id_owner',
-                        '退回单号承运商':'id_logistic_return',
-                    }
-                    let data = {orderIssues:this.orderIssues,order:this.order,rejectedBill:this.rejectedBill};
-                    if(data.rejectedBill.logistic_number_return == null || data.rejectedBill.logistic_number_return===''){
-                        data.rejectedBill = null;
-                    }
-                    axios.post('{{url("apiLocal/order/issue/update")}}', data).then(function (res) {
-                        if (res.data.success) {
+                     let arr = {
+                         '问题类别':'order_issue_type_id',
+                         '处理状态':'handle_status',
+                         '处理结果说明':'result_explain',
+                         '承运商赔偿金额':'logistic_indemnity_money',
+                         '承运商快递减免':'logistic_express_remission',
+                         '宝时赔偿金额':'baoshi_indemnity_money',
+                         '宝时快递减免':'baoshi_express_remission',
+                         '退回单号':'logistic_number_return',
+                         '退回单号货主':'id_owner',
+                         '退回单号承运商':'id_logistic_return',
+                     }
+                    axios.post('{{url("apiLocal/order/issue/update")}}',this.orderIssues).then(function (response) {
+                        if(response.data.success){
                             tempTip.setDuration(1000);
                             tempTip.showSuccess('修改成功正在返回查询页面');
-                            setTimeout(function(){
-                                window.location.href="javascript:history.go(-1)";
-                            },500);
-                        } else {
+                            window.location.href = "{{url("order/issue/index")}}";
+                        }else{
                             tempTip.setDuration(3000);
-                            tempTip.show(res.data.errors[0][0]);
-                            res.data.errors.forEach(function(item){
+                            tempTip.show(response.data.errors[0][0]);
+                            response.data.errors.forEach(function(item){
                                 let target = $('#'+arr[item[1]]);
                                 target.addClass('is-invalid').change(function(){
                                     target.removeClass('is-invalid');
                                 });
                             })
-                            $('#alertModal').modal('hide');
                         }
-                    }).catch(function (err) {
-                        tempTip.setDuration(4000);
-                        tempTip.show('网络异常:' + err);
-                        $('#alertModal').modal('hide');
-                    });
+                    }).catch(function(error){
+                        tempTip.setDuration(3000)
+                        tempTip.show('修改出现异常:'+error);
+                    })
                 },
                 getSecondOrder(){
                     let _this = this;
@@ -329,6 +254,7 @@
                         let data = {clientNo:client_code};
                         axios.post("{{url('apiLocal/order/issue/getOrderInfoByClientNo')}}",data).then(function(res){
                             if(res.data.success){
+                                console.log(res.data);
                                 _this.secondOrder = res.data.data;
                                 _this.orderIssues.second_order_id = res.data.data.id;
                             } else {
@@ -349,8 +275,6 @@
         $('.is-invalid').change(function(){
             $(this).removeClass('is-invalid');
         })
-
-
     </script>
 
 @endsection

+ 311 - 126
resources/views/order/issue/index.blade.php

@@ -4,7 +4,7 @@
 @section('content')
     @component("order.issue.menu")@endcomponent
     <div class="container-fluid" id="issue_div">
-        <div style="min-width: 3000px;" >
+        <div style="min-width: 3300px;" >
             <div id="list" class="d-none container-fluid">
                 <div id="form_div" style="min-width: 2250px;"></div>
                 <div class="form-inline mt-1 ">
@@ -19,20 +19,34 @@
                             <a class="dropdown-item" @click="orderIssueExport(true)" href="javascript:">导出所有页</a>
                         </div>
                     </span>
-                    @cannot('客户不可见')
+                    @cannot('订单管理-问题件-客户不可见')
                     <span class="ml-1">
-                        <button type="button" class="btn btn-outline-dark btn-sm form-control-sm  to ltipTarget"
-                                @click="endOrderIssue"
-                                :class="[checkData.length>0?'btn-dark text-light':'']">完结</button>
+                        <button type="button" class="btn btn-outline-dark btn-sm form-control-sm   tooltipTarget" @click="endOrderIssue" :class="[checkData.length>0?'btn-dark text-light':'']">
+                            完结
+                        </button>
                     </span>
-                    @endcannot
+                    @endcannot @can('订单管理-问题件-删除')
+                    <span class="ml-1">
+                        <button type="button" class="btn btn-outline-dark btn-sm form-control-sm  tooltipTarget" @click="batchDeleteOrderIssue">
+                            删除
+                        </button>
+                    </span>
+                    @endcan
+                    @can('订单管理-问题件-编辑')
+                    <span class="ml-1">
+                        <button type="button" class="btn btn-outline-dark btn-sm form-control-sm  tooltipTarget" @click="batchStoreLogsModel">
+                            修改
+                        </button>
+                    </span>
+                    @endcan
                     <span class="ml-1">
-                        <button type="button" class="btn btn-outline-dark btn-sm form-control-sm  tooltipTarget"
-                                @click="copyOrderNo">复制快递单号</button>
+                        <button type="button" class="btn btn-outline-dark btn-sm form-control-sm  tooltipTarget" @click="copyOrderNo">
+                            复制快递单号
+                        </button>
                     </span>
                 </div>
-                <table class="table table-sm  table-bordered table-hover card-body table-responsive-sm p-0 m-0 "
-                       style="background: #fff;min-width: 3000px;">
+                {{--table table-sm  table-bordered table-hover card-body table-responsive-sm p-0 m-0 --}}
+                <table class="table table-sm table-striped table-bordered table-hover card-body p-0 m-0" style="background: #fff;min-width: 3000px;">
                     <tr class="tr-yellow" align="center">
                         <th class=" font-weight-bolder header-1" ></th>
                         <th class="td-yellow  font-weight-bolder original-class table-head-warning  header-2">
@@ -41,14 +55,13 @@
                                 隐藏运单列
                             </button>
                         </th>
-
                         <th class="font-weight-bolder header-3">
 
-                            @cannot('订单管理-问题件-客户不可见')
+{{--                            @cannot('订单管理-问题件-客户不可见')--}}
                             <button class="btn btn-sm btn-outline-secondary float-left" v-if="isShowRejectedBill" @click="hideRejectedBill">
                                 隐藏退单列
                             </button>
-                            @endcannot
+{{--                            @endcannot--}}
                             情况说明
                             @cannot('订单管理-问题件-客户不可见')
                             <button class="btn btn-sm btn-outline-secondary" v-if="isShowSecondOrderInfo" @click="hideSecondOrder">
@@ -98,10 +111,10 @@
                         <th class="tow-layer align-middle td-yellow" v-if="isShowOrderInfo" rowspan="2" style="min-width:300px">收货人地址</th>
                         <th class="tow-layer align-middle td-yellow" v-if="isShowOrderInfo" colspan="3" style="min-width:300px">原始商品明细</th>
 {{--                        <th class="three-layer  align-middle" rowspan="2" >退回单号</th>--}}
-{{--                        @cannot('客户不可见')--}}
+{{--                        @cannot('订单管理-问题件-客户不可见')--}}
                         <th class="three-layer   align-middle" rowspan="2" v-if="!isShowRejectedBill" style="min-width:50px">展开</th>
 
-                            <th class=" align-middle" rowspan="2" v-if="isShowRejectedBill" style="min-width:75px">退回单号</th>
+                        <th class=" align-middle" rowspan="2" v-if="isShowRejectedBill" style="min-width:220px">退回单号</th>
                         <th class="three-layer   align-middle" colspan="5" v-if="isShowRejectedBill" style="min-width: 450px">返回商品明细</th>
 {{--                        @endcannot--}}
                         <th class=" bg-whit  align-middle" rowspan="2" style="min-width: 115px">情况说明</th>
@@ -158,8 +171,7 @@
                         @cannot('订单管理-问题件-客户不可见')
                         <td class="child-layer-1">
                             @can('订单管理-问题件-编辑')
-                            <button type="button" class="btn btn-sm btn-outline-secondary"
-                                    @click="disposeOrderIssue($event)" :data-value="orderIssue.id"
+                            <button type="button" class="btn btn-sm btn-outline-secondary" @click="disposeOrderIssue($event,orderIssue)" :data-value="orderIssue.id"
                                     v-if="orderIssue.is_new_rejecting === '有'">有
                             </button>
                             <span v-else>@{{ orderIssue.is_new_rejecting }}</span>
@@ -178,12 +190,26 @@
                                 置顶
                             </button>
                         </td>
-                        <td class="child-layer-1">@{{ orderIssue.rejecting_status }}</td>{{--退件状态--}}
+                        <td class="child-layer-1">
+                            @can('订单管理-问题件-编辑')
+                            <select class="form-control form-control-sm" :value="orderIssue.rejecting_status" @change="updateOrderIssue(orderIssue,'rejecting_status',$event)">
+                                <option v-for="item in rejectingStatus" :value="item.name">@{{ item.value }}</option>
+                            </select>
+                            @else
+                                @{{ orderIssue.rejecting_status }}
+                            @endcan
+                        </td>{{--退件状态--}}
                         @endcan
                         @endcannot
-
-
-                        <td class="child-layer-1">@{{ orderIssue.final_status }}</td>{{--最终状态--}}
+                        <td class="child-layer-1">
+                            @can('订单管理-问题件-编辑')
+                            <select class="form-control form-control-sm" :value="orderIssue.final_status" @change="updateOrderIssue(orderIssue,'final_status',$event)">
+                                <option v-for="item in  finalStatus" :value="item">@{{ item }}</option>
+                            </select>
+                            @else
+                            @{{ orderIssue.final_status }}
+                            @endcan
+                        </td>{{--最终状态--}}
                         @cannot('订单管理-问题件-客户不可见')  {{--登记日期--}}
                         <td class="toptd td-yellow child-layer-2">
                             <div v-if="orderIssue.remark" class="bg-light-yellow  text-danger top text-left" data-toggle="tooltip" style="opacity: 0.1;position: absolute;z-index: 1">
@@ -246,7 +272,10 @@
                                     <template v-for="packages in orderIssue.order.packages">
                                         <tr v-for="item in packages.commodities" class="text-center" :data-value="orderIssue.orderCount += 1" align="center">
                                             <td >@{{ item.commodity.sku }}</td>
-                                            <td >@{{ item.commodity.name }}</td>
+                                            <td>
+                                                <p class="text-truncate text-primary m-0 p-0" style="width: 100px;cursor:pointer;text-decoration: underline"  @click="nowrapText($event)">@{{ item.commodity.name }}</p>
+                                                <p class="text-nowrap m-0 p-0" style="display: none;cursor:pointer" @click="truncateText($event)">@{{ item.commodity.name }}</p>
+                                            </td>
                                             <td  :data-value="orderIssue.orderPackagecount += item.amount ">@{{ item.amount }}</td>
                                         </tr>
                                     </template>
@@ -261,26 +290,30 @@
                         {{--商品明细 结束--}}
 
                         {{--退单商品明细 开始--}}
-{{--                        @cannot('客户不可见')--}}
+{{--                        @cannot('订单管理-问题件-客户不可见')--}}
 
                         <td class="text-muted child-layer-3-hide" v-if="isShowRejectedBill">
-                            <template v-if="orderIssue.rejected_bill">
-                                @{{ orderIssue.rejected_bill.logistic_number_return }}
-                            </template>
+                            @can('订单管理-问题件-编辑')
+                            <input type="text" class="form-control form-control-sm" :value="orderIssue.logistic_number_return" @keydown.enter="changeRejectedBill(orderIssue,$event)">
+                            @else
+                            @{{ orderIssue.logistic_number_return }}
+                            @endcan
                         </td>
 {{--                        @cannot('订单管理-问题件-客户不可见')--}}
                         <td class="p-0 m-0 child-layer-3" v-if="!isShowRejectedBill && index === 0 " style="width:50px;" :rowspan="orderIssues.length" >
                             <span class="btn  btn-outline-secondary "  @click="showRejectedBill"  :style="orderIssues.length>4 ?'{height: 200px;line-height: 100px':''" >展开退单列</span>
                         </td>
-                        <td class="p-0 child-layer-3-hide" :id="orderIssue.id+'rejectedBill'" valign="middle" align="center" colspan="5"
-                            v-if="isShowRejectedBill">
+                        <td class="p-0 child-layer-3-hide" :id="orderIssue.id+'rejectedBill'" valign="middle" align="center" colspan="5" v-if="isShowRejectedBill">
                             <div v-if="orderIssue.rejected_bill" class="m-0 p-0">
                                 <table v-if="orderIssue.rejected_bill.items" class="table table-sm  m-0" :class="orderIssue.rejected_bill.items.length > 1 ? 'collapse' : '' " :id="'rejectedBill'+orderIssue.id"
                                        :data-value="orderIssue.rejectedCount = 0">
                                     <tr v-for="item in orderIssue.rejected_bill.items"
                                         :data-value="orderIssue.rejected_bill.sum += item.amount" align="center">
                                         <td style="min-width: 75px" >@{{ item.barcode_goods }}</td>
-                                        <td style="min-width: 100px" >@{{ item.name_goods }}</td>
+                                        <td style="min-width: 100px" >
+                                            <p class="text-truncate text-primary m-0 p-0" style="width: 100px;cursor:pointer;text-decoration: underline"  @click="nowrapText($event)">@{{ item.name_goods }}</p>
+                                            <p class="text-nowrap m-0 p-0" style="display: none;cursor:pointer" @click="truncateText($event)">@{{ item.name_goods }}</p>
+                                        </td>
                                         <td style="min-width: 50px" :data-value="orderIssue.rejectedCount += item.amount">@{{ item.amount }}</td>
                                         <td style="min-width: 50px" >@{{ item.quality_label }}</td>
                                         <td style="min-width: 100px" >@{{ item.remark }}</td>
@@ -296,18 +329,30 @@
                         {{--退单商品明细 结束--}}
 
                         <td class="child-layer-3">@{{ orderIssue.result_explain}}</td>
-                        <td class="child-layer-3"><span v-if="orderIssue.issue_type">@{{ orderIssue.issue_type.name}}</span></td>
+                        <td class="child-layer-3">
+                            @can('订单管理-问题件-编辑')
+                                <select class="form-control form-control-sm" :value="orderIssue.order_issue_type_id" @change="updateOrderIssue(orderIssue,'order_issue_type_id',$event)">
+                                    <option value></option>
+                                    <option v-for="type in orderIssueType" :value="type.name" >@{{ type.value }}</option>
+                                <select>
+                            @else
+                            <span v-if="orderIssue.issue_type">
+                                @{{ orderIssue.issue_type.name}}
+                            </span>
+                            @endcan
+                        </td>
 
                         {{--处理结果--}}
                         <td class=" m-0 p-0 log-td child-layer-3" valign="middle" align="center" v-on:mouseover="showAddBtn($event)" v-on:mouseleave="hideAddBtn($event)" colspan="3">
-                            <div class="addLogD  v row m-0 p-0" :id="'AddLog_'+orderIssue.id" style="display: none">
+                            <div class="addLogDiv row m-0 p-0 form-group" :id="'AddLog_'+orderIssue.id" style="display: none;">
                                 <input type="hidden" name="id" :value="orderIssue.id">
-                                <div class="form-group m-2">
-                                    <input type="text" name="content" class="form-control" required>
+                                <div style="width: 45px"></div>
+                                <div class="form-inline m-2">
+                                    <input type="text" name="content" class="form-control" style="width: 300px" required >
+                                    <button type="button" class="btn btn-primary ml-2"
+                                            @click="addOrderIssueLog('AddLog_'+orderIssue.id)">添加
+                                    </button>
                                 </div>
-                                <button type="button" class="btn btn-primary m-2 "
-                                        @click="addOrderIssueLog('AddLog_'+orderIssue.id)">添加
-                                </button>
                             </div>
 
                             <div style="position: absolute;display: none;margin-top: -35px" class="add-btn" :id="'AddBtn'+orderIssue.id">
@@ -338,7 +383,7 @@
 
                             </div>
                         </td>
-                        @cannot('客户不可见')
+                        @cannot('订单管理-问题件-客户不可见')
                         <td class="p-0 m-0 h-100 child-layer-3" v-if="!isShowSecondOrderInfo && index === 0" style="width:50px;" :rowspan="orderIssues.length" >
                             <span class="btn btn-outline-secondary " @click="showSecondeOrder"   :style="orderIssues.length>4 ?'{height: 200px;line-height: 100px':''">展开运单列</span>
                         </td>
@@ -366,7 +411,7 @@
                                 </button>
                             </template>
                         </td>
-                        <td class="child-layer-3-hide p-0" colspan="3"v-if="isShowSecondOrderInfo">
+                        <td class="child-layer-3-hide p-0" colspan="3" v-if="isShowSecondOrderInfo">
                             <template v-if="orderIssue.second_order" class=" p-0">
                                 <div class="m-0 p-0" :class="orderIssue.secondeOrderCount > 1 ? 'collapse':''"
                                      :id="'secondOrder'+orderIssue.id">
@@ -376,7 +421,10 @@
                                         <template v-for="packages in orderIssue.second_order.packages">
                                             <tr v-for="item in packages.commodities" :data-value="orderIssue.secondeOrderCount += 1">
                                                 <td >@{{ item.commodity.sku }}</td>
-                                                <td >@{{ item.commodity.name }}</td>
+                                                <td >
+                                                    <p class="text-truncate text-primary m-0 p-0" style="width: 100px;cursor:pointer;text-decoration: underline"  @click="nowrapText($event)">@{{ item.commodity.name }}</p>
+                                                    <p class="text-nowrap m-0 p-0" style="display: none;cursor:pointer" @click="truncateText($event)">@{{ item.commodity.name }}</p>
+                                                </td>
                                                 <td :data-value="orderIssue.secondeOrderItems+=item.amount">@{{ item.amount }}</td>
                                             </tr>
                                         </template>
@@ -386,42 +434,96 @@
                                         v-if="orderIssue.secondeOrderCount > 0"
                                         :id="'secondOrderBtn'+orderIssue.id"
                                         :data-target="'#secondOrder'+orderIssue.id"
-                                        @click="toggleSecond(orderIssue.id,orderIssue.secondeOrderItems)">商品@{{ orderIssue.secondeOrderItems }}件,点击展开
+                                        @click="toggleSecond(orderIssue.id,orderIssue.secondeOrderItems)">
+                                    商品@{{ orderIssue.secondeOrderItems }}件,点击展开
                                 </button>
                             </template>
                         </td>
                         @endcannot
-                        <td class="child-layer-3">@{{ orderIssue.logistic_indemnity_money }}</td>
-                        <td class="child-layer-3">@{{ orderIssue.logistic_express_remission }}</td>
+                        <td class="child-layer-3">
+                            @can('订单管理-问题件-编辑')
+                            <input type="number" class="form-control form-control-sm" :value="orderIssue.logistic_indemnity_money" @keydown.enter="updateOrderIssue(orderIssue,'logistic_indemnity_money',$event)">
+                            @else
+                                @{{ orderIssue.logistic_indemnity_money }}
+                            @endcan
+                        </td>
+                        <td class="child-layer-3">
+                            @can('订单管理-问题件-编辑')
+                            <select class="form-control form-control-sm" :value="orderIssue.logistic_express_remission" @change="updateOrderIssue(orderIssue,'logistic_express_remission',$event)">
+                                <option value></option>
+                                <option v-for="item in expressRemission" :value="item">@{{ item }}</option>
+                            </select>
+                            @else
+                                @{{ orderIssue.logistic_express_remission }}
+                            @endcan
+                        </td>
                         @cannot('订单管理-问题件-客户不可见')
-                        <td class="child-layer-3">@{{ orderIssue.baoshi_indemnity_money }}</td>
-                        <td class="child-layer-3">@{{ orderIssue.baoshi_express_remission }}</td>
-                        <td class="child-layer-3"><span
-                                v-if="orderIssue.user_work_group">@{{ orderIssue.user_work_group.name }}</span>
+                        <td class="child-layer-3">
+                            @can('订单管理-问题件-编辑')
+                            <input type="number" class="form-control form-control-sm" :value="orderIssue.baoshi_indemnity_money" @keydown.enter="updateOrderIssue(orderIssue,'baoshi_indemnity_money',$event)">
+                            @else
+                                @{{ orderIssue.baoshi_indemnity_money }}
+                            @endcan
+                        </td>
+                        <td class="child-layer-3">
+                            @can('订单管理-问题件-编辑')
+                            <select class="form-control form-control-sm" :value="orderIssue.baoshi_express_remission" @change="updateOrderIssue(orderIssue,'baoshi_express_remission',$event)">
+                                <option value></option>
+                                <option v-for="item in expressRemission" :value="item">@{{ item }}</option>
+                            </select>
+                            @else
+                                @{{ orderIssue.baoshi_express_remission }}
+                            @endcan
+                        </td>
+                        <td class="child-layer-3">
+                            <select class="form-control form-control-sm" :value="orderIssue.user_workgroup_id" @change="updateOrderIssue(orderIssue,'user_workgroup_id',$event)">
+                                <option value></option>
+                                <option v-for="item in userWorkGroup" :value="item.name">@{{ item.value }}</option>
+                            </select>
                         </td>
                         <td>
-                            <button type="button" class="btn btn-sm btn-outline-primary"
-                                    @click="editOrderIssue($event)" :data-value="orderIssue.id">改
-                            </button>
-                            <button type="button" class="btn btn-sm btn-outline-danger"
-                                    @click="deleteOrderIssue($event)" :data-value="orderIssue.id">删
+                            @can('订单管理-问题件-编辑')
+                            <a :href="'edit/'+orderIssue.id"  class="btn btn-sm btn-outline-primary" target="_blank">改</a>
+                            @endcan
+                            @can('订单管理-问题件-删除')
+                            <button type="button" class="btn btn-sm btn-outline-danger" @click="deleteOrderIssue($event)" :data-value="orderIssue.id">
+                                删
                             </button>
+                            @endcan
                         </td>
                         @endcannot
                     </tr>
                 </table>
-                <button  class="btn btn-sm" :class="page.curPage === 1 ?'':'btn-outline-primary'"
-                    @click="goPage(page.curPage-1)"
-                   :disabled="page.curPage === 1">上一页</button>
-                <button  class="btn btn-sm" :class="page.curPage === page.lastPage ?'':'btn-outline-primary'"
-                    @click="goPage(page.curPage+1)"
-                    :disabled="page.curPage === page.lastPage">下一页</button>
-                <input @keyup.enter="pageTurning($event)" class="form-control-sm ml-3 tooltipTarget"
-                       :placeholder="'当前页数:'+page.curPage+'/'+page.lastPage" title="去往指定页">
-                <span class="text-muted m-1">共 @{{page.total}} 条 </span>
+                {{$orderIssues->withQueryString()->links()}}
             </div>
         </div>
-        {{--deleteOrderIssue--}}
+
+        {{--batchStore logs--}}
+        <div class="modal fade" id="batchStoreLogsModel" tabindex="-1" role="dialog" aria-labelledby="logsLabel" aria-hidden="true">
+            <div class="modal-dialog  modal-dialog-centered">
+                <div class="modal-content">
+                    <div class="modal-header">
+                        <h5 class="modal-title" id="logsLabel">输入处理内容</h5>
+                        <button type="button" class="close" data-dismiss="modal" aria-label="Close" @click="edit.batchStoreLogs=''">
+                            <span aria-hidden="true">&times;</span>
+                        </button>
+                    </div>
+                    <div class="modal-body">
+                        <textarea id="logsContent" class="form-control" v-model="edit.batchStoreLogs"></textarea>
+                    </div>
+                    <div class="modal-footer">
+                        <button type="button" class="btn btn-secondary" data-dismiss="modal" @click="edit.batchStoreLogs=''">
+                            取消
+                        </button>
+                        <button type="button" class="btn btn-primary" data-dismiss="modal" @click="batchStoreLogs">
+                            确认
+                        </button>
+                    </div>
+                </div>
+            </div>
+        </div>
+
+        {{--delete OrderIssue--}}
         <div class="modal fade" id="alertModal" tabindex="-1" role="dialog" aria-labelledby="alertModalLabel"
              aria-hidden="true">
             <div class="modal-dialog  modal-dialog-centered">
@@ -542,44 +644,53 @@
                     @endforeach],
                 qualityLabel: [
                     @foreach($qualityLabel as $type)
-                    {name: '{{$type->id}}', value: '{{$type->name}}' },
+                    {name: '{{$type->id}}', value: '{{$type->name}}'},
+                    @endforeach],
+                userWorkGroup: [
+                        @foreach($userWorkgroup as $item)
+                    {name:{{$item->id}},value:'{{$item->name}}'},
                     @endforeach],
+                rejectingStatus: [
+                    {name:'',value:'无'},
+                    {name:'未退回',value:'未退回'},
+                    {name:'全部退回',value:'全部退回'},
+                    {name:'部分退回',value:'部分退回'},
+                    {name:'差异退回',value:'差异退回'},
+                    {name:'超量退回',value:'超量退回'},
+                    {name:'全部退回',value:'全部退回'},
+                ],
+                expressRemission:['原单减免', '部分减免', '全部减免'],
                 checkData: [],
                 from: '',
-                finalStatus: [{name: '0', value: '已解决'}, {name: '1', value: '待退回'}, {name: '2', value: '退回中'}],
+                finalStatus: ['已解决', '待退回', '退回中'],
                 selectedStyle: '',
                 deleteId: '',
-                page: {
-                    lastPage: {!! $orderIssues->toJson() !!}['last_page'],
-                    curPage: {!!  $orderIssues->toJson() !!}['current_page'],
-                    total: {!!  $orderIssues->toJson() !!}['total'],
-                    nextPageUrl: {!!  $orderIssues->toJson() !!}['next_page_url'],
-                    prevPageUrl: {!! $orderIssues->toJson()  !!}['prev_page_url'],
-                    lastPageUrl: {!!  $orderIssues->toJson() !!}['last_page_url'],
-                },
+                total: {!!  $orderIssues->toJson() !!}['total'],
                 isShowOrderInfo:true,
                 isShowRejectedBill: true,
                 isShowSecondOrderInfo: true,
+                message:{},
+                edit:{
+                    batchStoreLogs:'',
+                },
             },
             mounted: function () {
                 this.isShowOrderInfo = false;
                 this.isShowRejectedBill= false;
                 this.isShowSecondOrderInfo= false;
-
                 let tr = $('.table-body')[0];
                 let countShow = $(tr).children('.child-layer-1').length;
                 $('.header-1').attr('colspan',countShow);
-
-
                 $('.tooltipTarget').tooltip({'trigger': 'hover'});
                 $('#list').removeClass("d-none");
 
-                console.log(this.orderIssues);
                 let _this = this;
-                let final_status = [{name: '已解决', value: '已解决'}, {name: '待退回', value: '待退回'}, {
-                    name: '退回中',
-                    value: '退回中'
-                }];
+                let log_content_range = [{name:'31',value:'近一月'},{name:'92',value:'近三月'},{name:'183',value:'近半年'},{name:'366',value:'近一年'},{name:'0',value:'不限'},];
+                let final_status = [
+                    {name: 'null', value: '无'},
+                    {name: '已解决', value: '已解决'},
+                    {name: '待退回', value: '待退回'},
+                    {name: '退回中', value: '退回中'}];
                 let data = [[
                     {name: 'created_at_start', type: 'dateTime', tip: '订单开始日期'},
                     {
@@ -597,30 +708,20 @@
                     {name: 'created_at_end', type: 'dateTime', tip: '订单结束日期'},
                     {name: 'consignee_name', type: 'input', tip: '收货人名称:前或后加百分号为单个模糊搜索,否则为多条件精确搜索', placeholder: '收货人名称'},
                     {name: 'consignee_phone', type: 'input', tip: '收货人电话:前或后加百分号为单个模糊搜索,否则为多条件精确搜索', placeholder: '收货人电话'},
-                    {name: 'good_barcode', type: 'input', tip: '条码:前或后加百分号为单个模糊搜索,否则为多条件精确搜索', placeholder: '条码'},
-                    {name: 'good_name', type: 'input', tip: '商品名', placeholder: '商品名'},
-
-                    {
-                        name: 'id_quality_label',
-                        type: 'select',
-                        tip: '是否正品',
-                        placeholder: '是否正品',
-                        data: this.qualityLabel
+                    {name: 'good_barcode', type: 'input', tip: '条码:前或后加 百分号为单个模糊搜索,否则为多条件精确搜索', placeholder: '条码'},
+                    {name: 'good_name', type: 'input', tip: '商品名:前或后加 百分号为单个模糊搜索,否则为多条件精确搜索', placeholder: '商品名'},
+                    {name: 'id_quality_label', type: 'select', tip: '是否正品', placeholder: '是否正品', data: this.qualityLabel
                     },
                 ],[
                     {name: 'logistic_indemnity_money', type: 'input', tip: '承运商赔偿金额', placeholder: '承运商赔偿金额'},
                     @cannot('订单管理-问题件-客户不可见')
-                    {
-                        name: 'baoshi_indemnity_money', type: 'input', tip: '宝时赔偿金额', placeholder: '宝时赔偿金额'
-                    },
+                    {name: 'baoshi_indemnity_money', type: 'input', tip: '宝时赔偿金额', placeholder: '宝时赔偿金额'},
                     {name: 'final_status', type: 'select', tip: '问题件的最终状态', placeholder: '最终状态', data: final_status},
-                    {
-                        name: 'order_issue_type_id',
-                        type: 'select',
-                        tip: '问题类别',
-                        placeholder: '问题类别',
-                        data: this.orderIssueType
-                    },
+                    {name: 'order_issue_type_id', type: 'select', tip: '问题类别', placeholder: '问题类别', data: this.orderIssueType},
+                    {name: ['log_content','addtime'], type: 'input_select', tip: ['处理结果:前或后加 百分号为单个模糊搜索,否则为多条件精确搜索','查询范围越短,搜索速度越快'], placeholder: ['处理结果',''],
+                        data:log_content_range,
+                        rules:[{son:{addtime:{default:'31',required_without_all_if:['created_at_start','created_at_end']}}}]},
+                         // {date_relevance:{date:['orderdate_start','orderdate_end'],relevance:'addtime',killing:'date',default:[31,92,183,366]}}]},
                     {name: 'is_handle', type: 'checkbox', tip: '是否已处理', data: [{name: 'ture', value: '已解决'}]},
                     @endcannot
                 ]];
@@ -733,10 +834,10 @@
                                 }
                             }
                             tempTip.setDuration(2000);
-                            tempTip.showSuccess('问题件删除成功');
+                            tempTip.showSuccess('删除成功');
                         } else {
                             tempTip.setDuration(2500);
-                            tempTip.show('标记勾选内容删除失败,错误:' + res.data.fail_info);
+                            tempTip.show('删除失败,错误:' + res.data.fail_info);
                         }
                     }).catch(function (err) {
                         tempTip.setDuration(4000);
@@ -813,7 +914,7 @@
                     let url = '{{url('order/issue/export')}}';
                     let token = '{{ csrf_token() }}';
                     if (sign) {
-                        excelExport(true, this.checkData, url, this.page.total, token);
+                        excelExport(true, this.checkData, url, this.total, token);
                     } else {
                         excelExport(false, this.checkData, url, null, token);
                     }
@@ -878,32 +979,26 @@
                             tempTip.showSuccess('勾选订单已变为已完结');
                             _this.orderIssues.forEach(function (item,index) {
                                 if (ids.includes(item.id)) {
-                                    item.final_status = '已解决';
-                                    // _this.orderIssues.splice(index,1);
+                                    item.final_status = '已解决'
                                 }
                             });
                             _this.checkData = [];
                         } else {
-                            tempTip.setDuration(3000);
-                            tempTip.show(res.data.fail_info);
+                            tempTip.setDuration(3000)
+                            tempTip.show(res.data.fail_info)
                         }
                     }).catch(function (err) {
                         tempTip.setDuration(4000);
                         tempTip.show('网络异常:' + err);
                     })
                 },
-                disposeOrderIssue(e) {
+                disposeOrderIssue(e,orderIssue) {
                     let _this = this;
                     let id = $(e.target).attr('data-value');
                     let data = {id: id};
                     axios.post('{{url('apiLocal/order/issue/disposeOrderIssue')}}', data).then(function (res) {
                         if (res.data.success) {
-                            _this.orderIssues.forEach(function (orderIssue) {
-                                if (orderIssue.id == data.id) {
-                                    orderIssue.is_new_rejecting = '已处理';
-                                    orderIssue.logs.unshift(res.data.data);
-                                }
-                            })
+                            orderIssue.is_new_rejecting = '已处理'
                             tempTip.setDuration(3000);
                             tempTip.showSuccess('订单已处理');
                         } else {
@@ -1086,24 +1181,115 @@
                 showSecondeOrder() {
                     this.isShowSecondOrderInfo = true;
                 },
-                pageTurning(e){
-                    let page = $(e.target).val();
-                    if (page > this.page.lastPage) {
+                updateOrderIssue(orderIssue,column,e){
+                    let data = {id:orderIssue['id'],column:column,value:$(e.target).val()}
+                    axios.post('{{url("apiLocal/order/issue/updateColumn")}}',data).then(function(response){
+                        if(response.data.success){
+                            orderIssue[column] = data.value
+                            tempTip.setDuration(2000)
+                            tempTip.showSuccess('修改成功')
+                        }else{
+                            tempTip.setDuration(3000)
+                            tempTip.show('修改失败:'+response.data.fail_info)
+                        }
+                    }).catch(function(error){
+                        tempTip.setDuration(3000)
+                        tempTip.show('修改出现异常:'+error)
+                    })
+                },
+                batchDeleteOrderIssue(){
+                    if(this.checkData.length === 0){
+                        tempTip.setDuration(2000)
+                        tempTip.show('没有勾选内容')
                         return;
                     }
-                    this.goPage(page);
+                    let _this = this
+                    let data = {ids:this.checkData}
+                    axios.post('{{url('apiLocal/order/issue/batchDestroy')}}',data).then(function(response){
+                        if(response.data.success){
+                            for (let index = _this.orderIssues.length-1; index >= 0 ; index--) {
+                                let item = _this.orderIssues[index]
+                                if(_this.checkData.includes(item.id)){
+                                    _this.orderIssues.splice(index,1)
+                                }
+                            }
+                            _this.checkData = []
+                            tempTip.setDuration(2000)
+                            tempTip.showSuccess('删除成功')
+                        }else{
+                            tempTip.setDuration('删除失败')
+                        }
+                    }).catch(function(error){
+                        tempTip.setDuration(3000)
+                        tempTip.show('删除异常:'+error)
+                    })
                 },
-                goPage(page){
-                    let href = window.location.href;
-                    if(href.indexOf('?')===-1){
-                        href+='?'
+                batchStoreLogsModel(){
+                    if(this.checkData.length === 0){
+                        tempTip.setDuration(2000)
+                        tempTip.show('没有勾选内容')
+                        return;
                     }
-                    if(href.indexOf('page=')!==-1){
-                        href = href.replace('page='+this.page.curPage,'page='+page);
-                    }else{
-                        href+='&page='+page;
+                    $("#batchStoreLogsModel").modal('show');
+                },
+                batchStoreLogs(){
+                    let _this = this;
+                    let data = {orderIssueIds:this.checkData,content:this.edit.batchStoreLogs};
+                    axios.post('{{url("apiLocal/order/issue/log/batchStore")}}',data).then(function(response){
+                        if(response.data.success){
+
+                            _this.edit.batchStoreLogs = ''
+                            let logs = response.data.logs
+                            _this.orderIssues.forEach(function(item){
+                                let id = item['id']
+                                if (_this.checkData.includes(id)) {
+                                    item['logs'].unshift(logs[id])
+                                }
+                            })
+                            tempTip.setDuration(2000)
+                            tempTip.setIndex(100)
+                            tempTip.showSuccess('添加成功')
+                            $("#batchStoreLogsModel").modal('hide')
+                        }else{
+                            tempTip.setIndex(100)
+                            tempTip.show('添加失败'+response.data.fail_info)
+                        }
+                    }).catch(function(error){
+                        tempTip.setDuration(3000)
+                        tempTip.show('处理结果添加异常:'+error)
+                    })
+                },
+                changeRejectedBill(orderIssue,e){
+                    let logistic_number_return = $(e.target).val()
+                    if(orderIssue['logistic_number_return'] === logistic_number_return){
+                        return;
                     }
-                    window.location = href;
+                    let data = {id:orderIssue['id'],logisticNumberReturn:logistic_number_return}
+                    axios.post('{{url('apiLocal/order/issue/updateLogisticNumberReturn')}}',data).then(function(response){
+                        if(response.data.success){
+                            orderIssue['logistic_number_return'] = logistic_number_return
+                            orderIssue['rejected_bill'] = response.data.rejectedBill
+                            orderIssue['rejecting_status'] = response.data.rejectingStatus
+                            tempTip.setDuration(2000)
+                            tempTip.showSuccess('修改成功')
+                        }else{
+                            tempTip.setDuration(3000)
+                            tempTip.show('修改失败:'+response.data.fail_info)
+                        }
+                    }).catch(function(error){
+                        tempTip.setDuration(3000)
+                        tempTip.show('修改异常:'+error)
+                    })
+                },
+                truncateText(e){
+                    let nowrapSpan = $(e.target);
+                    nowrapSpan.hide();
+                    nowrapSpan.siblings('.text-truncate').show();
+                },
+                nowrapText(e){
+                    let truncateSpan = $(e.target);
+                    truncateSpan.hide();
+                    truncateSpan.siblings('.text-nowrap').show();
                 }
             }
         })
@@ -1111,7 +1297,6 @@
         $("#exampleModal").on('hide.bs.modal', function (e) {
             $('#remark').val('');
         });
-
     </script>
 @endsection
 

+ 53 - 55
resources/views/order/tracking/index.blade.php

@@ -3,7 +3,7 @@
 @section('content')
     @component('order.tracking.menu')@endcomponent
     <div class="container-fluid" id="tracking_div">
-        <div>
+        <div style="width: 3000px">
             <div class="d-none" id="list">
                 @can('订单管理-跟踪-监听')
                 <div class="modal fade" id="modal" tabindex="-1" role="dialog" aria-labelledby="pasteDataTitle" aria-hidden="true">
@@ -45,8 +45,8 @@
                     </button>
                     @endif
                 </div>
-
-                <table class="table table-bordered table-hover   p-0 m-0">
+                {{--<!-- table table-bordered table-hover  table-responsive-sm p-0 m-0-->--}}
+                <table class="table table-sm table-striped table-bordered table-hover card-body p-0 m-0">
                     <tr class="text-center" >
                         <th>
                             <input id="all" type="checkbox" @click="checkAll($event)"/>
@@ -75,16 +75,17 @@
                         <th style="min-width: 120px">签收单情况</th>
                         <th style="min-width: 120px">备注</th>
                     </tr>
-                    <tr v-for="(trackOrder,index) in trackOrders" class="text-center">
+                    <tr v-for="(trackOrder,index) in trackOrders" class="table-body text-center"  :key="trackOrder.id">
                         <td>
                             <input id="all" type="checkbox" :value="trackOrder.id" v-model="checkData">
                         </td>
                         <td>@{{ index+1 }}</td>
-                        <td>@{{ trackOrder.ownerName }}</td>
+                        <td class="text-decoration-none">@{{ trackOrder.ownerName }}</td>
                         <td>@{{ trackOrder.orderClientCode }}</td>
                         <td>
                             @can('订单管理-跟踪-仓库编辑')
-                                <button class="btn btn-sm btn-outline-secondary" @click="displayInput($event)">@{{ trackOrder.web_order_number ?  trackOrder.web_order_number : '点击编辑' }}</button>
+                                <button class="btn btn-sm btn-outline-secondary btn-border" @click="displayInput($event)" v-if="trackOrder.web_order_number">@{{ trackOrder.web_order_number }}</button>
+                                <button class="btn btn-sm btn-outline-secondary btn-border" @click="displayInput($event)" v-else style=" min-width: 120px;height: 30px"></button>
                                 <input class="form-control d-none"  @keyup.enter="warehouseUpdate($event,'web_order_number')" :value="trackOrder.web_order_number"  :data_value="trackOrder.id" @blur="hideInput($event)">
                             @else
                                 @{{ trackOrder.web_order_number }}
@@ -92,7 +93,8 @@
                         </td>
                         <td>
                             @can('订单管理-跟踪-仓库编辑')
-                                <button class="btn btn-sm btn-outline-secondary" @click="displayInput($event)">@{{ trackOrder.pick_up_at ? trackOrder.pick_up_at :'点击编辑' }}</button>
+                                <button class="btn btn-sm btn-outline-secondary btn-border" @click="displayInput($event)" v-if="trackOrder.pick_up_at">@{{ trackOrder.pick_up_at | date }}</button>
+                                <button class="btn btn-sm btn-outline-secondary btn-border" @click="displayInput($event)" v-else style=" min-width: 120px;height: 30px"></button>
                                 <input class="form-control d-none" type="date"  @keyup.enter="warehouseUpdate($event,'pick_up_at')"  :value="trackOrder.pick_up_at" :data_value="trackOrder.id" @blur="hideInput($event)">
                             @else
                                 @{{ trackOrder.pick_up_at }}
@@ -100,7 +102,8 @@
                         </td>
                         <td>
                             @can('订单管理-跟踪-仓库编辑')
-                                <button class="btn btn-sm btn-outline-secondary" @click="displayInput($event)">@{{ trackOrder.sale ? trackOrder.sale:'点击编辑' }}</button>
+                                <button class="btn btn-sm btn-outline-secondary btn-border" @click="displayInput($event)" v-if="trackOrder.trackOrder">@{{ trackOrder.trackOrder }}</button>
+                                <button class="btn btn-sm btn-outline-secondary btn-border" @click="displayInput($event)" v-else style=" min-width: 120px;height: 30px"></button>
                                 <input class="form-control d-none"  @keyup.enter="warehouseUpdate($event,'sale')"  :value="trackOrder.sale" :data_value="trackOrder.id" @blur="hideInput($event)">
                             @else
                                 @{{ trackOrder.sale }}
@@ -108,7 +111,8 @@
                         </td>
                         <td>
                             @can('订单管理-跟踪-仓库编辑')
-                                <button class="btn btn-sm btn-outline-secondary" @click="displayInput($event)">@{{ trackOrder.client  ? trackOrder.client:'点击编辑'}}</button>
+                                <button class="btn btn-sm btn-outline-secondary btn-border" @click="displayInput($event)" v-if="trackOrder.client">@{{ trackOrder.client }}</button>
+                                <button class="btn btn-sm btn-outline-secondary btn-border" @click="displayInput($event)" v-else style=" min-width: 120px;height: 30px"></button>
                                 <input class="form-control d-none"  @keyup.enter="warehouseUpdate($event,'client')"  :value="trackOrder.client" :data_value="trackOrder.id" @blur="hideInput($event)">
                             @else
                                 @{{ trackOrder.client }}
@@ -119,7 +123,8 @@
                         <td>@{{ trackOrder.sku.skuAmount }}</td>
                         <td>
                             @can('订单管理-跟踪-仓库编辑')
-                                <button class="btn btn-sm btn-outline-secondary" @click="displayInput($event)">@{{ trackOrder.order_remark ? trackOrder.order_remark:'点击编辑' }}</button>
+                                <button class="btn btn-sm btn-outline-secondary btn-border" @click="displayInput($event)" v-if="trackOrder.order_remark">@{{ trackOrder.order_remark }}</button>
+                                <button class="btn btn-sm btn-outline-secondary btn-border" @click="displayInput($event)" v-else style=" min-width: 120px;height: 30px"></button>
                                 <textarea class="form-control d-none"  @keyup.enter="warehouseUpdate($event,'order_remark')"  :value="trackOrder.order_remark" :data_value="trackOrder.id" @blur="hideInput($event)"></textarea>
                             @else
                                 @{{ trackOrder.client }}
@@ -129,7 +134,8 @@
                         <td>@{{ trackOrder.packageBulk }}</td>
                         <td>
                             @can('订单管理-跟踪-仓库编辑')
-                                <button class="btn btn-sm btn-outline-secondary" @click="displayInput($event)">@{{ trackOrder.pallet_total ? trackOrder.pallet_total:'点击编辑' }}</button>
+                                <button class="btn btn-sm btn-outline-secondary btn-border" @click="displayInput($event)" v-if="trackOrder.pallet_total">@{{ trackOrder.pallet_total }}</button>
+                                <button class="btn btn-sm btn-outline-secondary btn-border" @click="displayInput($event)" v-else style=" min-width: 120px;height: 30px"></button>
                                 <input class="form-control d-none" type="number"  @keyup.enter="warehouseUpdate($event,'pallet_total')" :value="trackOrder.pallet_total" :data_value="trackOrder.id" @blur="hideInput($event)">
                             @else
                                 @{{ trackOrder.pallet_total }}
@@ -141,7 +147,8 @@
 
                         <td>
                             @can('订单管理-跟踪-物流公司编辑')
-                                <button class="btn btn-sm btn-outline-secondary" @click="displayInput($event)">@{{ trackOrder.planning_sent_at ? trackOrder.planning_sent_at:'点击编辑' }}</button>
+                                <button class="btn btn-sm btn-outline-secondary btn-border" @click="displayInput($event)" v-if="trackOrder.planning_sent_at">@{{ trackOrder.planning_sent_at | date }}</button>
+                                <button class="btn btn-sm btn-outline-secondary btn-border" @click="displayInput($event)" v-else style=" min-width: 120px;height: 30px"></button>
                                 <input class="form-control d-none" type="date"  @keyup.enter="logisticUpdate($event,'planning_sent_at')"  :value="trackOrder.planning_sent_at" :data_value="trackOrder.id" @blur="hideInput($event)">
                             @else
                                 @{{ trackOrder.planning_sent_at }}
@@ -149,7 +156,8 @@
                         </td>
                         <td>
                             @can('订单管理-跟踪-物流公司编辑')
-                                <button class="btn btn-sm btn-outline-secondary" @click="displayInput($event)">@{{ trackOrder.is_on_duty_shift ? trackOrder.is_on_duty_shift :'点击编辑'}}</button>
+                                <button class="btn btn-sm btn-outline-secondary btn-border" @click="displayInput($event)" v-if="trackOrder.is_on_duty_shift">@{{ trackOrder.is_on_duty_shift }}</button>
+                                <button class="btn btn-sm btn-outline-secondary btn-border" @click="displayInput($event)" v-else style=" min-width: 120px;height: 30px"></button>
                                 <input class="form-control d-none"  @keyup.enter="logisticUpdate($event,'is_on_duty_shift')"  :value="trackOrder.is_on_duty_shift" :data_value="trackOrder.id" @blur="hideInput($event)">
                             @else
                                 @{{ trackOrder.is_on_duty_shift }}
@@ -157,7 +165,8 @@
                         </td>
                         <td>
                             @can('订单管理-跟踪-物流公司编辑')
-                                <button class="btn btn-sm btn-outline-secondary" @click="displayInput($event)">@{{ trackOrder.is_arrival ? trackOrder.is_arrival : '点击编辑' }}</button>
+                                <button class="btn btn-sm btn-outline-secondary btn-border" @click="displayInput($event)" v-if="trackOrder.is_arrival">@{{ trackOrder.is_arrival }}</button>
+                                <button class="btn btn-sm btn-outline-secondary btn-border" @click="displayInput($event)" v-else style=" min-width: 120px;height: 30px"></button>
                                 <input class="form-control d-none"  @keyup.enter="logisticUpdate($event,'is_arrival')"  :value="trackOrder.is_arrival" :data_value="trackOrder.id"  @blur="hideInput($event)">
                             @else
                                 @{{ trackOrder.is_arrival }}
@@ -165,16 +174,17 @@
                         </td>
                         <td>
                             @can('订单管理-跟踪-物流公司编辑')
-                                <button class="btn btn-sm btn-outline-secondary" @click="displayInput($event)">@{{ trackOrder.signed_at ? trackOrder.signed_at : '点击编辑' }}</button>
+                                <button class="btn btn-sm btn-outline-secondary btn-border" @click="displayInput($event)" v-if="trackOrder.signed_at">@{{ trackOrder.signed_at | date }}</button>
+                                <button class="btn btn-sm btn-outline-secondary btn-border" @click="displayInput($event)" v-else style=" min-width: 120px;height: 30px"></button>
                                 <input class="form-control d-none" type="date"  @keyup.enter="logisticUpdate($event,'signed_at')" :value="trackOrder.signed_at" :data_value="trackOrder.id"  @blur="hideInput($event)">
                             @else
                                 @{{ trackOrder.signed_at }}
                             @endcan
                         </td>
-
                         <td>
                             @can('订单管理-跟踪-仓库编辑')
-                                <button class="btn btn-sm btn-outline-secondary" @click="displayInput($event)">@{{ trackOrder.receive_bill_status ? trackOrder.receive_bill_status:'点击编辑' }}</button>
+                                <button class="btn btn-sm btn-outline-secondary btn-border" @click="displayInput($event)" v-if="trackOrder.receive_bill_status">@{{ trackOrder.receive_bill_status }}</button>
+                                <button class="btn btn-sm btn-outline-secondary btn-border" @click="displayInput($event)" v-else style=" min-width: 120px;height: 30px"></button>
                                 <input class="form-control d-none"  @keyup.enter="warehouseUpdate($event,'receive_bill_status')" :value="trackOrder.receive_bill_status" :data_value="trackOrder.id" @blur="hideInput($event)">
                             @else
                                 @{{ trackOrder.receive_bill_status }}
@@ -182,7 +192,8 @@
                         </td>
                         <td>
                             @can('订单管理-跟踪-仓库编辑')
-                                <button class="btn btn-sm btn-outline-secondary" @click="displayInput($event)">@{{ trackOrder.remark ? trackOrder.remark:'点击编辑'}}</button>
+                                <button class="btn btn-sm btn-outline-secondary btn-border" @click="displayInput($event)" v-if="trackOrder.remark">@{{ trackOrder.remark }}</button>
+                                <button class="btn btn-sm btn-outline-secondary btn-border" @click="displayInput($event)" v-else style=" min-width: 120px;height: 30px"></button>
                                 <input class="form-control d-none"  @keyup.enter="warehouseUpdate($event,'remark')"  :value="trackOrder.remark" :data_value="trackOrder.id" @blur="hideInput($event)">
                             @else
                                 @{{ trackOrder.remark }}
@@ -191,15 +202,7 @@
                     </tr>
                 </table>
 
-                <button  class="btn btn-sm" :class="page.curPage === 1 ?'':'btn-outline-primary'"
-                         @click="goPage(page.curPage-1)"
-                         :disabled="page.curPage === 1">上一页</button>
-                <button  class="btn btn-sm" :class="page.curPage === page.lastPage ?'':'btn-outline-primary'"
-                         @click="goPage(page.curPage+1)"
-                         :disabled="page.curPage === page.lastPage">下一页</button>
-                <input @keyup.enter="pageTurning($event)" class="form-control-sm ml-3 tooltipTarget"
-                       :placeholder="'当前页数:'+page.curPage+'/'+page.lastPage" title="去往指定页">
-                <span class="text-muted m-1">共 @{{page.total}} 条 </span>
+              {{ $trackOrders->withQueryString()->links() }}
 
                 <div id="alert_modal" class="modal fade " tabindex="-1" aria-hidden="true" >
                     <div class="modal-dialog modal-dialog-scrollable">
@@ -231,14 +234,20 @@
     <script type="text/javascript" src="{{asset('js/queryForm/export200818a.js')}}"></script>
     <script type="text/javascript" src="{{asset('js/queryForm/queryForm200914.js')}}"></script>
     <script type="text/javascript" src="{{asset('js/queryForm/header200826b.js')}}"></script>
-
+    <style>
+        .btn-border{
+            border:1px solid rgba(108, 117, 125,0.3);
+        }
+    </style>
     <script>
         let tracking_vue = new Vue({
             el:'#tracking_div',
             data:{
                 trackOrders:{!! $trackOrders->toJson() !!}['data'],
-                owners:[@foreach($owners as $owner){name: '{{ $owner->id }}', value: '{{ $owner->name}}'},@endforeach],
-                from:'',
+                owners:[
+                    @foreach($owners as $owner)
+                    {name: '{{ $owner->id }}', value: '{{ $owner->name}}'},
+                    @endforeach],
                 checkData:[],
                 seekOwners : [],
                 name : "",
@@ -246,12 +255,7 @@
                 status:'',
                 ownerName:'',
                 page: {
-                    lastPage: {!! $trackOrders->toJson() !!}['last_page'],
-                    curPage: {!!  $trackOrders->toJson() !!}['current_page'],
                     total: {!!  $trackOrders->toJson() !!}['total'],
-                    nextPageUrl: {!! $trackOrders->toJson() !!}['next_page_url'],
-                    prevPageUrl: {!! $trackOrders->toJson()  !!}['prev_page_url'],
-                    lastPageUrl: {!! $trackOrders->toJson() !!}['last_page_url'],
                 },
             },
             mounted:function(){
@@ -263,7 +267,6 @@
                     {name:'0',value: '不限'},
                 ];
 
-
                 $('.tooltipTarget').tooltip({'trigger': 'hover'});
                 $("#list").removeClass('d-none');
                 let _this = this;
@@ -299,6 +302,20 @@
                     deep: true
                 },
             },
+            filters:{
+                date:function(value){
+                    if(value.length > 10){
+                        value = value.substring(0,10)
+                    }
+                    return value
+                },
+                weight:function(value){
+                    return value+''
+                },
+                volume:function(value){
+                    return value+''
+                }
+            },
             methods:{
                 checkAll(e){
                     if (e.target.checked) {
@@ -461,25 +478,6 @@
                     let token = '{{ csrf_token() }}';
                     excelExport(true, this.checkData, url, null, token);
                 },
-                pageTurning(e){
-                    let page = $(e.target).val();
-                    if (page > this.page.lastPage) {
-                        return;
-                    }
-                    this.goPage(page);
-                },
-                goPage(page){
-                    let href = window.location.href;
-                    if(href.indexOf('?')===-1){
-                        href+='?'
-                    }
-                    if(href.indexOf('page=')!==-1){
-                        href = href.replace('page='+this.page.curPage,'page='+page);
-                    }else{
-                        href+='&page='+page;
-                    }
-                    window.location = href;
-                },
             }
         });
     </script>

+ 35 - 19
routes/apiLocal.php

@@ -31,29 +31,45 @@ Route::post('waybill/changeFee', 'WaybillController@changeFee');
 Route::post('waybill/changeCharge', 'WaybillController@changeCharge');
 
 Route::post('rejectedBill/getRejectedByLogisticNumberReturn','RejectedController@apiGetRejectedByLogisticNumberReturn');
+
 Route::group(['prefix' => 'order'], function () {
-    Route::post('issue/onTop/store', 'OrderIssueOnTopController@apiStore');
-    Route::post('issue/onTop/cancelTop', 'OrderIssueOnTopController@apiDestroy');
-    Route::post('issue/orderIssueHasClientCode', 'OrderIssueController@apiOrderIssueHasClientCode');
-    Route::post('issue/orderIssueHasLogisticNumberReturn', 'OrderIssueController@apiOrderIssueHasLogisticNumberReturn');
-    Route::post('issue/update', 'OrderIssueController@apiUpdate');
-    Route::post('issue/destroy', 'OrderIssueController@apiDestroy');
-    Route::any('issue/orderIssueTag', 'OrderIssueController@apiOrderIssueTag');
-    Route::post('issue/log/store', 'OrderIssueProcessLogController@apiStore');
-    Route::post('issue/log/destroy', 'OrderIssueProcessLogController@apiDestroy');
-    Route::post('issue/disposeOrderIssue', 'OrderIssueController@apiDisposeOrderIssue');
-    Route::post('issue/endOrderIssue', 'OrderIssueController@apiEndOrderIssue');
-    Route::post('issue/getOrderInfoByClientNo', 'OrderIssueController@apiGetOrderInfoByClientNo');
+    Route::group(['prefix'=>'issue'],function(){
 
-});
+        Route::post('orderIssueHasClientCode', 'OrderIssueController@apiOrderIssueHasClientCode');
+        Route::post('orderIssueHasLogisticNumberReturn', 'OrderIssueController@apiOrderIssueHasLogisticNumberReturn');
+        Route::post('update', 'OrderIssueController@updateApi');
+        Route::post('updateColumn','OrderIssueController@updateColumnApi');
+        Route::post('destroy', 'OrderIssueController@apiDestroy');
+        Route::post('batchDestroy', 'OrderIssueController@batchDestroyApi');
+        Route::any('orderIssueTag', 'OrderIssueController@apiOrderIssueTag');
+        Route::post('disposeOrderIssue', 'OrderIssueController@apiDisposeOrderIssue');
+        Route::post('endOrderIssue', 'OrderIssueController@apiEndOrderIssue');
+        Route::post('getOrderInfoByClientNo', 'OrderIssueController@apiGetOrderInfoByClientNo');
+        Route::post('isExistByOrderNo','OrderIssueController@isExistByOrderNoApi');
+        Route::post('updateLogisticNumberReturn','OrderIssueController@updateLogisticNumberReturnApi');
 
-Route::group(['prefix' => 'order'], function () {
-    Route::get('tracking/update','OrderTrackingController@updateApi');
+         Route::group(['prefix'=>'onTop'],function(){
+            Route::post('/store', 'OrderIssueOnTopController@apiStore');
+            Route::post('/cancelTop', 'OrderIssueOnTopController@apiDestroy');
+        });
+
+        Route::group(['prefix'=>'log'],function(){
+            Route::post('store', 'OrderIssueProcessLogController@apiStore');
+            Route::post('destroy', 'OrderIssueProcessLogController@apiDestroy');
+            Route::post('batchStore','OrderIssueProcessLogController@batchStoreApi');
+        });
+    });
+
+    Route::group(['prefix'=>'tracking'],function (){
+        Route::get('update','OrderTrackingController@updateApi');
+        Route::any('logisticUpdate','OrderTrackingController@logisticUpdateApi');
+        Route::any('warehouseUpdate','OrderTrackingController@warehouseUpdateApi');
+    });
 
-    Route::any('tracking/logisticUpdate','OrderTrackingController@logisticUpdateApi');
-    Route::any('tracking/warehouseUpdate','OrderTrackingController@warehouseUpdateApi');
-    Route::any('trackingOwner/all','OrderTrackingOwnerController@getAllApi');
-    Route::any('trackingOwner/updateStatus','OrderTrackingOwnerController@updateStatusApi');
+    Route::group(['prefix'=>'trackingOwner'],function (){
+        Route::any('all','OrderTrackingOwnerController@getAllApi');
+        Route::any('updateStatus','OrderTrackingOwnerController@updateStatusApi');
+    });
 
 });