Quellcode durchsuchen

阶段性提交 by 'zengjun'

ajun vor 5 Jahren
Ursprung
Commit
f2d1f2199a

+ 8 - 13
app/Exports/Export.php

@@ -17,18 +17,20 @@ class Export extends StringValueBinder implements FromCollection,
     private $data;
     private $mergeCell;
     private $columnName;
+    private $formatNumber;
 
     /*
      * $mergeCell $columnName :合并单元格所需参数;
      * $mergeCell 需要合并的位置数组以MAP形式存储 [开始行=>结束行]
      * $columnName 需要合并列 与合并行数结合使用ARRAY存储 ['A','B']
      */
-    public function __construct($row,$data,$mergeCell=null,$columnName=null)
+    public function __construct($row,$data,$mergeCell=null,$columnName=null,$formatNumber=['D','H','I','L','O','Q','S','T','U','V'])
     {
         $this->row = $row;
         $this->data = $data;
         $this->mergeCell = $mergeCell;
         $this->columnName = $columnName;
+        $this->formatNumber = $formatNumber;
     }
 
     public function collection()
@@ -70,18 +72,11 @@ class Export extends StringValueBinder implements FromCollection,
     }
 
     public function columnFormats(): array{
-        return [
-            'D' => NumberFormat::FORMAT_TEXT,
-            'H' => NumberFormat::FORMAT_TEXT,
-            'I' => NumberFormat::FORMAT_TEXT,
-            'L' => NumberFormat::FORMAT_TEXT,
-            'O' => NumberFormat::FORMAT_TEXT,
-            'Q' => NumberFormat::FORMAT_TEXT,
-            'S' => NumberFormat::FORMAT_TEXT,
-            'T' => NumberFormat::FORMAT_TEXT,
-            'U' => NumberFormat::FORMAT_TEXT,
-            'V' => NumberFormat::FORMAT_TEXT,
-        ];
+        $formatNumber = [];
+        foreach ($this->formatNumber as $column){
+            $formatNumber[$column] = NumberFormat::FORMAT_TEXT;
+        }
+        return $formatNumber;
     }
 }
 

+ 154 - 21
app/Http/Controllers/OrderIssueController.php

@@ -6,6 +6,8 @@ use App\Imports\OrderIssueExport;
 use App\Imports\OrderIssueImport;
 use App\Logistic;
 use App\OrderIssue;
+use App\OrderIssueOnTop;
+use App\OrderIssueProcessLog;
 use App\OrderIssueType;
 use App\Owner;
 use App\Services\OrderIssueService;
@@ -26,9 +28,6 @@ class OrderIssueController extends Controller
         app()->bind("orderService", OrderService::class);
     }
 
-    /**
-     * search orderissue
-     */
     public function index(Request $request)
     {
         if (!Gate::allows('订单管理-问题件-查询')) {
@@ -40,6 +39,7 @@ class OrderIssueController extends Controller
         return view('order.issue.index', compact('owners', 'orderIssues'));
     }
 
+    // 置顶
     public function orderIssueOnTop(Request $request)
     {
         if (!Gate::allows('订单管理-问题件-置顶')) {
@@ -54,13 +54,25 @@ class OrderIssueController extends Controller
         return $meg;
     }
 
+    // 取消置顶
     public function cancelTop(Request $request)
     {
         if (!Gate::allows('订单管理-问题件-置顶')) {
             ['success' => false, 'fail_info' => '没有对应权限'];
         }
+        if(!$request->has('orderIssue_id')){
+            return  ['success'=>false,'fail_info'=>'没有传入对应的id'];
+        } else if(!$request->has('remark')){
+            return  ['success'=>false,'fail_info'=>'没有传入对应的备注信息'];
+        }
+        $orderIssueOnTop = OrderIssueOnTop::create($request->all());
+        if(!$orderIssueOnTop){
+            return  ['success'=>false,'fail_info'=>'订单置顶失败,稍后重试'];
+        }
+        return ['success'=>true];
     }
 
+    // 校验Oracle 订单号
     public function verifyOracleOrderNo(Request $request)
     {
         $orderIssueService = app('orderIssueService');
@@ -73,6 +85,7 @@ class OrderIssueController extends Controller
         return $meg;
     }
 
+    // 校验快递单号
     public function verifyLogisticNumber(Request $request)
     {
         $orderIssueService = app('orderIssueService');
@@ -84,16 +97,6 @@ class OrderIssueController extends Controller
         return $orderIssueService->verifyLogisticNumber($request);
     }
 
-    public function performance(Request $request)
-    {
-        return view('order/issue/performance');
-    }
-
-    public function workLoad(Request $request)
-    {
-        return view('order/issue/workload');
-    }
-
     // 订单问题件标记
     public function orderIssueTag(Request $request)
     {
@@ -104,8 +107,7 @@ class OrderIssueController extends Controller
             return ['success' => false, 'fail_info' => '没有传入的订单编号'];
         }
         $orderIssueService = app('orderIssueService');
-        $meg = $orderIssueService->orderIssueTag($request);
-        return $meg;
+        return $orderIssueService->orderIssueTag($request);
     }
 
     // 创建订单问题件页面
@@ -171,17 +173,15 @@ class OrderIssueController extends Controller
         return redirect('order/issue/index');
     }
 
-    public function destroy(Request $request, $id)
+    public function destroy(Request $request)
     {
         if (!Gate::allows('订单管理-问题件-删除')) {
             return ['success' => false, 'fail_info' => '没有对应权限'];
         }
-        $orderIssueService = app('orderIssueService');
-        $id = $request->input('id');
-        if (!$id) {
+        if (!($request->has('id'))) {
             return ['success' => 'false', 'fail_info' => '没有问题题件相关的参数'];
         }
-        $bool = $orderIssueService . destroy($request->input('id'));
+        $bool = OrderIssue::find($request->input('id'))->delete();
         if ($bool) {
             $this->log(__METHOD__, __FUNCTION__, json_encode($request->toArray()), Auth::user()['id']);
             return ['success' => 'true'];
@@ -252,7 +252,99 @@ class OrderIssueController extends Controller
 
     public function exportOrderIssue(Request $request)
     {
-        dd($request);
+        $orderIssueService = app('orderIssueService');
+        $resultdata = $orderIssueService->exportExcel($request);
+        $row = [[
+            'ID' => 'id', 'created_at' => '登记日期', 'order_created_at' => '订单日期', 'owner' => '客户', 'shop' => '店铺', 'order_no' => '原始订单号',
+            'logistic' => '原始承运商', 'consignee_name' => '收货人名称', 'consignee_phone' => '收货人电话',
+            'province' => '省', 'city' => '市', 'district' => '区', 'address' => '收货人地址',
+// order -> package -> commodity
+            'commodity_code' => '条码', 'commodity_name' => '商品', 'amount' => '数量',
+            'status' => '退单状态',
+// 退回商品信息 rejectedBill -> items
+            'barcode_goods' => '条码', 'name_goods' => '商品名', 'goods_amount' => '数量', 'is_checked' => '是否正品', 'remark' => '备注',
+            'order_issue_type' => '问题类别',
+            'second_order' => '二次订单', 'second_logistic' => '二次承运商', 'second_logistic_number' => '二次运单号',
+// order -> package -> commodity
+            's_commodity_code' => '条码', 's_commodity_name' => '商品名', 's_amount' => '数量', 's_is_checked' => '是否正品', 's_remark' => '备注',
+            'final_status' => '最终状态', 'logistic_indemnity_money' => '承运商赔偿金额', 'logistic_express_remission' => '承运商快递减免',
+            'baoshi_indemnity_money' => '宝石赔偿金额', 'baoshi_express_remission' => '宝石快递减免', 'user_workgroup' => '事故责任方']];
+        $data = [];
+        foreach ($resultdata as $result) {
+// orderIssue
+            $rowData = [
+                'ID' => $result->id,
+                'created_at' => $result->created_at,    // 登记日期
+                'order_created_at' => $result->order ? $result->order->created_at : '', // 订单创建日期
+                'owner' => $result->owner ? $result->owner->name : '',
+                'shop' => $result->shop ? $result->shop->name : '',
+                'order_no' => $result->code,
+                'final_status' => $result->final_status,
+                'logistic_indemnity_money' => $result->logistic_indemnity_money,
+                'logistic_express_remission' => $result->logistic_express_remission,
+                'baoshi_indemnity_money' => $result->baoshi_indemnity_money,
+                'baoshi_express_remission' => $result->baoshi_express_remission,
+                'user_workgroup' => $result->userWorkGroup ? $result->userWorkGroup->name : '',
+            ];
+// order
+            if (isset($result->order)) {
+                $rowData['logistic'] = $result->order->logistic ? $result->order->logistic->name : '';
+                $rowData['consignee_name'] = $result->order->consignee_name;
+                $rowData['consignee_phone'] = $result->order->consignee_phone;
+                $rowData['province'] = $result->order->province;
+                $rowData['city'] = $result->order->city;
+                $rowData['district'] = $result->order->district;
+                $rowData['address'] = $result->order->address;
+                $packages = [];
+                if (isset($result->packages)) {
+                    foreach ($result->packages as $key => $value) {
+                        $arr = [
+                            'commodity_code'=>$value->barcode_goods,
+                            'commodity_name'=>$value->name_goods,
+                            'amount'=>$value->amount
+                        ];
+                        array_push($packages,$arr);
+                    }
+                }
+                $rowData['packages']  = $packages;
+            }
+// secondOrder
+            if (isset($result->secondOrder)) {
+                $rowData['second_order'] = $result->secondOrder->code;
+                $rowData['second_logistic'] = $result->secondOrder->logistic->name;
+                $rowData['second_logistic_number'] = $result->secondOrder->code;
+                $secondOrder = $result->secondOrder;
+                if (isset($secondOrder->packages)) {
+                    $packages = [];
+                    foreach ($secondOrder->packages as $key => $value) {
+                        $arr = [
+                            'commodity_code'=>$value->barcode_goods,
+                            'commodity_name'=>$value->name_goods,
+                            'amount'=>$value->amount
+                        ];
+                        array_push($packages,$arr);
+                    }
+                    $rowData['s_packages']  = $packages;
+                }
+            }
+// rejectedBill
+            if (isset($result->rejectedBill)) {
+                $rejectedBillItems = [];
+                $items = $result->rejectedBill->items ?? [];
+                foreach ($items as $key => $value) {
+                    $item = [
+                        'barcode_goods' => $value['barcode_goods'],
+                        'name_goods' => $value['name_goods'],
+                        'goods_amount' => $value['amount'],
+                        'is_checked' => $value['is_checked'],
+                        'remark' => $value['remark'],
+                    ];
+                    array_push($rejectedBillItems, $item);
+                }
+                $rowData['rejectedBillItems']  = $rejectedBillItems;
+            }
+            array_push($data, $rowData);
+        }
     }
 
     public function excelImport(Request $request)
@@ -262,4 +354,45 @@ class OrderIssueController extends Controller
         }
         return view('order.issue.import');
     }
+
+    // 完结订单
+    public function endOrderIssue(Request $request)
+    {
+        if (!Gate::allows('订单管理-问题件-编辑')) {
+            return ['success' => false, 'fail_info' => '没有对应的权限'];
+        }
+        if (!$request->has('ids')) {
+            return ['success' => false, 'fail_info' => '没有传入对应的参数'];
+        }
+        $count = OrderIssue::whereIn('id', $request->input('ids'))->where('handle_status', 2)->count();
+        if ($count > 0) {
+            return ['success' => false, 'fail_info' => '勾选的内容中已有完结的订单问题件,取消勾选后重试'];
+        } else {
+            $count = OrderIssue::whereIn('id', $request->input('ids'))->update(['handle_status' => 2]);
+            foreach ($request->input('ids') as $id) {
+                OrderIssueProcessLog::create(['order_issue_id' => $id, 'user_id' => Auth::user()['id'], 'type' => 3]);
+            }
+            $this->log(__METHOD__, __FUNCTION__, json_encode($request->toArray()), Auth::user()['id']);
+            return ['success' => true];
+        }
+    }
+
+    // 添加处理日志
+    public function addOrderIssuesLog(Request $request)
+    {
+        if (!Gate::allows('订单管理-问题件-编辑')) {
+            return ['success' => false, 'fail_info' => '没有对应的权限'];
+        }
+        if ($request->has(['id', 'content'])) {
+            $orderIssueProcessLog = OrderIssueProcessLog::create(['order_issue_id' => $request->input('id'), 'content' => $request->input('content'), 'user_id' => Auth::user()['id'], 'type' => 2]);
+            if ($orderIssueProcessLog) {
+                $this->log(__METHOD__, __FUNCTION__, json_encode($request->toArray()), Auth::user()['id']);
+                return ['success' => true, 'data' => $orderIssueProcessLog];
+            } else {
+                return ['success' => false, 'fail_info' => '录入失败'];
+            }
+        } else {
+            return ['success' => false, 'fail_info' => '没有传入对应参数'];
+        }
+    }
 }

+ 4 - 1
app/Order.php

@@ -10,7 +10,10 @@ class Order extends Model
     //
     use ModelTimeFormat;
 
-    protected $fillable = ['created_at','code','shop_id','owner_id','logistic_number','logistic_id','consignee_name','consignee_phone','province','city','district','address','wms_status'];
+    protected $fillable = [
+        'id','created_at','code','shop_id','owner_id',
+        'logistic_number','logistic_id','consignee_name','consignee_phone','province',
+        'city','district','address','wms_status'];
 
     protected $appends = [
         'creator',

+ 1 - 1
app/OrderIssue.php

@@ -32,7 +32,7 @@ class OrderIssue extends Model
     }
 
     public function logs(){
-        return $this->hasMany('App\OrderIssueProcessLog','orderIssue_id','id');
+        return $this->hasMany('App\OrderIssueProcessLog','order_issue_id','id');
     }
 
     public function top(){

+ 4 - 1
app/OrderIssueProcessLog.php

@@ -10,9 +10,12 @@ class OrderIssueProcessLog extends Model
     //
     use ModelTimeFormat;
 
-    protected $fillable = ['order_issue_id','content','type'];
+    protected $fillable = ['order_issue_id','user_id','content','type'];
 
     public function orderIssue(){
         return $this->belongsTo('App\OrderIssue','order_issue_id','id');
     }
+    public function user(){
+        return $this->belongsTo('App\User','user_id','id');
+    }
 }

+ 66 - 93
app/Services/OrderIssueService.php

@@ -21,79 +21,78 @@ class OrderIssueService
     public function __construct()
     {
         app()->bind("orderService", OrderService::class);
+        app()->bind("rejectedService", RejectedService::class);
     }
 
-    private function getQueryOnArr(array $arr){
-        $order_ids = $arr['$order_ids'];
-        // 订单日期 // 客户 // 是否完结 // 原始订单 // 最终状态 // 承运商赔偿金额 // 宝时赔偿金额
-        $user = Auth::user();
-        $owderIds = $user ? $user->getPermittingOwnerIdsAttribute() : [];
-        $orders = Order::select('id')->whereIn('owner_id', $owderIds)->get();
-        if($order_ids){
-            $orders = $order_ids;
+
+    public function getQuery(Request $request, array $condition = null)
+    {
+        if (!isset($condition)) {
+            $condition = $request->all();
         }
-        $order_ids = [];        // 订单id
+        $user = Auth::user();
+        $owner_ids = $user ? $user->getPermittingOwnerIdsAttribute() : [];
+
+        $orders = Order::select('id')->whereIn('owner_id', $owner_ids)->get();
+        $order_ids = [];
         foreach ($orders as $order) {
             $order_ids[] = $order->id;
         }
-        $query = OrderIssue::with(['top', 'order' => function ($query) use ($order_ids) {
+
+        $query = OrderIssue::with(['top', 'logs' => function ($query) {
+            return $query->orderBy('created_at');
+        }, 'order' => function ($query) use ($order_ids) {
             return $query->whereIn('id', $order_ids)->with(['shop', 'logistic', 'owner', 'packages' => function ($query) {
                 return $query->with(['commodities' => function ($query) {
                     return $query->with('commodity');
                 }]);
             }]);
         }])->whereIn('order_id', $order_ids);
+
+
         return $query;
     }
 
-    public function getQuery(Request $request)
+    public function getConditionQuery(Request $request, array $condition = null)
     {
-        // 订单日期 // 客户 // 是否完结 // 原始订单 // 最终状态 // 承运商赔偿金额 // 宝时赔偿金额
-        $user = Auth::user();
-        $owderIds = $user ? $user->getPermittingOwnerIdsAttribute() : [];
-        if ($request->input('owner_id')) {
-            $owderIds = [$request->input('owner_id')];
+        $query = $this->getQuery($request, $condition);
+        if (!isset($condition)) {
+            $condition = $request->all();
         }
-
-        $orders = Order::select('id')->whereIn('owner_id', $owderIds)->get();
-        $order_ids = [];        // 订单id
-        foreach ($orders as $order) {
-            $order_ids[] = $order->id;
+        if (isset($condition['created_at_start'])) {
+            $query->where('created_at', '>=', $condition['created_at_start'] . " 00:00:00");
         }
-        $query = OrderIssue::with(['top', 'order' => function ($query) use ($order_ids) {
-            return $query->whereIn('id', $order_ids)->with(['shop', 'logistic', 'owner', 'packages' => function ($query) {
-                return $query->with(['commodities' => function ($query) {
-                    return $query->with('commodity');
-                }]);
-            }]);
-        }])->whereIn('order_id', $order_ids);
-
-        if ($request->input('created_at_start')) {
-            $query->where('created_at', '>=', $request->input('created_at_start') . " 00:00:00");
+        if (isset($condition['created_at_end'])) {
+            $query->where('created_at', '<=', $condition['created_at_end'] . " 23:59:59");
         }
-        if ($request->input('created_at_end')) {
-            $query->where('created_at', '<=', $request->input('created_at_end') . " 23:59:59");
+        if (isset($condition['final_status'])) {
+            $query->where('final_status', $condition['final_status']);
         }
-        if ($request->input('final_status')) {
-            $query->where('final_status', $request->input('final_status'));
+        if (isset($condition['handle_status'])) {
+            $query->where('handle_status', intval($condition['handle_status']));
         }
-        if ($request->input('handle_status')) {
-            $query->where('handle_status', $request->input('handle_status'));
+        if (isset($condition['logistic_indemnity_money'])) {
+            $query->where('logistic_indemnity_money', $condition['logistic_indemnity_money']);
         }
-        if ($request->input('logistic_indemnity_money')) {
-            $query->where('logistic_indemnity_money', $request->input('logistic_indemnity_money'));
+        if (isset($condition['baoshi_express_remission'])) {
+            $query->where('baoshi_express_remission', $condition['baoshi_express_remission']);
         }
-        if ($request->input('baoshi_express_remission')) {
-            $query->where('baoshi_express_remission', $request->input('baoshi_express_remission'));
+        if(isset($condition['order_issue_ids'])){
+            $orderIssuesId = $condition['order_issue_ids'];
+            if(is_string($orderIssuesId)){
+                $orderIssuesId = explode(',',$orderIssuesId);
+            }
+            $query->whereIn('id',$orderIssuesId);
         }
         return $query;
     }
 
     public function paginate(Request $request)
     {
-        return $this->getQuery($request)->paginate($request->input('paginate', 50));
+        return $this->getConditionQuery($request)->paginate($request->input('paginate', 50));
     }
 
+    // 置顶
     public function orderIssueOnTop(Request $request)
     {
         $mes = ['success' => false];
@@ -104,11 +103,11 @@ class OrderIssueService
             $mes['fail_info'] = $request->input('id') ? $mes['fail_info'] : '没有选中问题件';
             return $mes;
         }
-        $orderIssue = OrderIssue::updateOrCreate(['orderIssue_id' => $id], ['remark' => $remark]);
-        $mes['success'] = true;
-        return $mes;
+        OrderIssue::updateOrCreate(['orderIssue_id' => $id], ['remark' => $remark]);
+        return ['success' => true];
     }
 
+    // 标记问题件
     public function orderIssueTag(Request $request)
     {
         $orderNos = $request->input('orderNos');
@@ -124,10 +123,10 @@ class OrderIssueService
         return $meg;
     }
 
-    public function createOrFind($ordeNo)
+    public function createOrFind($orderNo)
     {
         $orderService = app('orderService');
-        $order = $orderService->createOrFindBy($ordeNo);
+        $order = $orderService->createOrFindBy($orderNo);
         $arr = [
             'order_id' => $order->id,
         ];
@@ -149,7 +148,7 @@ class OrderIssueService
         return Validator::make($request->input(), [
             'order_issue_type_id' => ['required'],
             'baoshi_indemnity_money' => ['numeric'],
-            'logistic_indemnity_money' => ['numeric']
+            'logistic_indemnity_money' => ['numeric'],
         ], [
             'required' => ':attribute 为必填项',
             'unique' => ':attribute 已存在',
@@ -161,18 +160,12 @@ class OrderIssueService
         ]);
     }
 
-    /**
-     * 通过 退回单号创建
-     */
     public function createByRejectedBill(Request $request)
     {
         $orderService = app('orderService');
-
         $rejectedBill = RejectedBill::where(['logistic_number_return' => $request->input('logistic_number_return')])->first();
-
         $orderNo = $rejectedBill->order_number;
         $order = $orderService->createOrFindBy($orderNo);
-
         $arr = $request->only(
             ['order_issue_type_id', 'result_explain', 'second_order_id', 'rejected_bill_id', 'situation_explain',
                 'final_status', 'final_status', 'logistic_indemnity_money',
@@ -182,25 +175,25 @@ class OrderIssueService
         return OrderIssue::create($arr);
     }
 
-    /**
-     * 通过WMS—SO编号创建
-     */
     public function createByOracleOrderNo(Request $request)
     {
         $orderService = app('orderService');
+        $rejectedService = app('rejectedService');
         if (!$request->has('wms_order_no')) {
             return null;
         }
         $wms_order_no = $request->input('wms_order_no');
+        $rejectedBill = $rejectedService->getRejectedByOrderNumber($wms_order_no);
+
         $orderIssue = $this->createOrFind($wms_order_no);
         $orderIssue->order_issue_type_id = $request->input('order_issue_type_id');
+        if ($rejectedBill) {
+            $orderIssue->rejected_bill_id = $rejectedBill->id;
+        }
         $orderIssue->save();
         return $orderIssue;
     }
 
-    /**
-     * 通过快递单号创建
-     */
     public function createByLogisticNumber(Request $request)
     {
         $orderService = app('orderService');
@@ -211,9 +204,6 @@ class OrderIssueService
         return OrderPackage::creaed(['order_id' => $order->id, 'logistic_number' => $request->input('logistic_number')]);
     }
 
-    /**
-     * 校验订单问题件是否已存在
-     */
     public function verifyOrderIssue(Request $request)
     {
         $orderIds = $request->input('orderNos');
@@ -229,9 +219,6 @@ class OrderIssueService
         return $count != 0;
     }
 
-    /**
-     * 校验Order是否已存在
-     */
     public function verifyOracleOrderNo(Request $request)
     {
         $meg = ['success' => false];
@@ -264,9 +251,6 @@ class OrderIssueService
         return $meg;
     }
 
-    /**
-     * 校验快递单号是否有对应的订单信息
-     */
     public function verifyLogisticNumber(Request $request)
     {
         $logisticNumber = $request->input('logisticNumber');
@@ -284,9 +268,6 @@ class OrderIssueService
         return OrderIssue::where('id', $id)->delete();
     }
 
-    /**
-     * 根据退回单号返回订单信息和详情
-     */
     public function getOrderHead(Request $request)
     {
         $data = ['orderHeader' => null, 'orderDetails' => null];
@@ -302,9 +283,6 @@ class OrderIssueService
         return $data;
     }
 
-    /**
-     * 跟退回单号返回退回单信息
-     */
     public function getReturnLogisticInfo(Request $request)
     {
         $logisticNumberReturn = $request->input('logisticNumberReturn');
@@ -316,9 +294,6 @@ class OrderIssueService
         return OracleDOCASNDetail::whereIn('asnno', $ASNNo)->get();
     }
 
-    /**
-     * 根据wms订单号获取订单头部信息
-     */
     public function getOrderHeadByOrderNo(Request $request)
     {
         $orderNo = $request->input('orderNo');
@@ -327,9 +302,6 @@ class OrderIssueService
         return ['orderHeader' => $orderHeader, 'orderDetails' => $orderDetails];
     }
 
-    /**
-     * 根据退回快递单号获取订单信息
-     */
     public function getOrderHeadByLogisticNumberReturn(Request $request)
     {
         $logisticNumberReturn = $request->input('logisticNumber');
@@ -337,19 +309,20 @@ class OrderIssueService
 
     public function exportExcel(Request $request)
     {
-        if (!$request -> has('type')) {
-            return ['success' => false, 'fail_info' => '没有传入类别参数'];
-        }
-        $data = null;
-        $type = $request->input('type');
-        if ($type == 'check') {
-            if (!$request -> has('ids')) {
-                return ['success' => false, 'fail_info' => '没有勾选对应的数据'];
+
+        $result = null;
+        if ($request->getMethod() == 'GET') {
+// 所有页
+            if ($request->has('checkAllSign')) {
+                $result = $this->getConditionQuery($request, null)->get();
             }
-            $data = $this -> getQueryOnArr(['order_ids',$request -> input('ids')]) -> get();
-        } else if ($type == 'all') {
-            $data = $this -> getQueryOnArr([]) -> get();
+        } else if ($request->getMethod() == 'POST') {
+// 选中
+            $owner_id = $request->input('data');
+            $result = $this->getConditionQuery($request, ['order_issue_ids' => $owner_id])->get();
         }
-        return $data;
+        dd($result);
+        return $result;
     }
+
 }

+ 1 - 1
app/Services/OrderPackageCommoditiesService.php

@@ -14,7 +14,7 @@ Class OrderPackageCommoditiesService
 {
     public function createOrFindBy(OrderPackage $orderPackage,OracleActAllocationDetails  $detail){
         $owner = Owner::where(['code'=>$detail->customerid])->first();      // 货主
-        $orderDetail = OracleDOCOrderDetail::where(['orderNo'=>$detail->orderno,'orderLineNo'=>$detail->orderlineno])->first(); // 订单详情
+        $orderDetail = OracleDOCOrderDetail::where(['orderNo'=>$detail->orderno,'orderLineNo'=>$detail->orderlineno])->first();
         $sku = $detail->sku;
         $owner_id = $owner->id;
         $customerid = $orderDetail->customerid;

+ 7 - 7
app/Services/OrderPackageService.php

@@ -13,26 +13,26 @@ class OrderPackageService
 
     public function __construct()
     {
-        app() -> bind('orderPackageCommoditiesService', OrderPackageCommoditiesService::class);
+        app()->bind('orderPackageCommoditiesService', OrderPackageCommoditiesService::class);
     }
 
     public function createOrFindBy(Order $order, OracleDOCOrderHeader $orderHeader = null)
     {
-        $orderPackageCommoditiesService = app('orderPackageCommoditiesService');
-
         if (!$orderHeader) {
-            $orderHeader = OracleDOCOrderHeader::where('OrderNo', trim($order->code, "'")) -> first();
+            $orderHeader = OracleDOCOrderHeader::where('OrderNo', trim($order->code, "'"))->first();
         }
-
-        $orderActAllocationDetails = OracleActAllocationDetails::where(['OrderNo' => $order -> code]) -> get();
+// 获取orderNo 对应的打包详情
+        $orderActAllocationDetails = OracleActAllocationDetails::where(['OrderNo' => $order->code])->get();
         if (!$orderActAllocationDetails) {
             return;
         }
+        $orderPackageCommoditiesService = app('orderPackageCommoditiesService');
         foreach ($orderActAllocationDetails as $detail) {
             if ($detail->picktotraceid == '*') {
                 continue;
             }
-            $orderPackage = OrderPackage::firstOrCreate(['order_id' => $order->id, 'logistic_number' => $detail -> picktotraceid]);
+// 根据打包详情创建orderPackage
+            $orderPackage = OrderPackage::firstOrCreate(['order_id' => $order->id, 'logistic_number' => $detail->picktotraceid]);
             $orderPackageCommoditiesService->createOrFindBy($orderPackage, $detail);
         }
 

+ 13 - 14
app/Services/OrderService.php

@@ -16,41 +16,40 @@ class OrderService
 {
     public function __construct()
     {
-        app() -> bind("orderPackageService", OrderPackageService::class);
+        app()->bind("orderPackageService", OrderPackageService::class);
     }
 
     public function createOrFindBy($oracleOrderNo)
     {
-        $order = Order::where('code', $oracleOrderNo) -> first();
-        $orderHeader = OracleDOCOrderHeader::where('OrderNo', trim($oracleOrderNo, "'")) -> first();
+        $order = Order::where('code', $oracleOrderNo)->first();
+        $orderHeader = OracleDOCOrderHeader::where('OrderNo', trim($oracleOrderNo, "'"))->first();
         if ($orderHeader == null) {
             return null;
         }
-        $orderHeadAttr = $orderHeader -> toArray();
+        $orderHeadAttr = $orderHeader->toArray();
         if ($order == null) {
-            // wms 货主
+
             $customer_name = $orderHeadAttr['oracleBASCustomer_descr_c'];
             $owner = Owner::firstOrCreate(['name' => $customer_name, 'code' => $orderHeadAttr['customerid']]);
-            $owner_id = $owner -> id;    // was 货主id
-            // 商铺id
+            $owner_id = $owner->id;
+
             $shop_name = $orderHeadAttr['issuepartyname'];
             $shop_Id = null;
             if ($shop_name) {
                 $shop = Shop::firstOrCreate(['name' => $shop_name, 'owner_id' => $owner_id]);
-                $shop_Id = $shop -> id;
+                $shop_Id = $shop->id;
             }
 
-            // 承运商ID
-            $logistics = Logistic::where(['name' => $orderHeadAttr['carrierid']]) -> first();
+            $logistics = Logistic::where(['name' => $orderHeadAttr['carrierid']])->first();
             if ($logistics == null) {
-                $oracleBasCustomer = OracleBasCustomer::where(['CustomerID' => $orderHeadAttr['carrierid'], 'Customer_Type' => 'CA']) -> first();
+                $oracleBasCustomer = OracleBasCustomer::where(['CustomerID' => $orderHeadAttr['carrierid'], 'Customer_Type' => 'CA'])->first();
                 if ($oracleBasCustomer) {
-                    $logistics = Logistic::firstOrCreate(['code' => $oracleBasCustomer -> customerid, 'name' => $oracleBasCustomer -> descr_c]);
+                    $logistics = Logistic::firstOrCreate(['code' => $oracleBasCustomer->customerid, 'name' => $oracleBasCustomer->descr_c]);
                 }
             }
             $logistics_id = null;
             if ($logistics) {
-                $logistics_id = $logistics -> id;
+                $logistics_id = $logistics->id;
             }
             $arr = [
                 'code' => $orderHeadAttr['orderno'],
@@ -69,7 +68,7 @@ class OrderService
             $order = Order::create($arr);
         }
         $orderPackageService = app('orderPackageService');
-        $orderPackageService -> createOrFindBy($order, $orderHeader);
+        $orderPackageService->createOrFindBy($order, $orderHeader);
         return $order;
     }
 

+ 19 - 25
app/Services/RejectedService.php

@@ -7,6 +7,8 @@ use App\Logistic;
 use App\OracleDOCASNDetail;
 use App\OracleDOCASNHeader;
 use App\OracleDOCOrderHeader;
+use App\Order;
+use App\OrderIssue;
 use App\Owner;
 use App\RejectedBill;
 use App\Services\common\QueryService;
@@ -100,33 +102,25 @@ class RejectedService
 
     public function getRejectedByOrderNumber(Request $request)
     {
-        return RejectedBill::with(['logistic', 'items']) -> where('logistic_number_return', $request -> input('orderNumber')) -> first();
+        return RejectedBill::with(['logistic', 'items'])->where('logistic_number_return', $request->input('orderNumber'))->first();
     }
 
-    public function createByOrderNumber(Request $request){
-        $orderNumber = $request -> input('orderNumber');
-        $rejectedBill =  RejectedBill::where('order_number',$orderNumber) -> get();
-        if($rejectedBill){
-            return $rejectedBill;
+    // 修改rejected items 时 需要同步 OrderIssue
+    public function syncOrderIssue($rejectedBillId)
+    {
+        $rejectedBIll = RejectedBill::where('id', $rejectedBillId)->first();
+        $ASNHeader = OracleDOCASNHeader::where('asnreference3', $rejectedBIll->logistic_number_return)->first();
+        if (!$ASNHeader) {
+            return;
         }
-        $orderHeader = OracleDOCOrderHeader::where('orderno',$orderNumber) -> first();
-        $soReference1 =  $orderHeader -> soreference1;
-        $ASNHeader =  OracleDOCASNHeader::where('asnreference2',$soReference1) -> get();
-        // 退回单号
-        $rejectedBill = RejectedBill::where('',$ASNHeader -> asnreference3) -> get();
-        $ASNDetails = OracleDOCASNDetail::where('asnno',$ASNHeader -> asnno ) -> get();
-
-        $ownerId = Owner::where('code', $ASNHeader -> customerid ) -> get() -> id;  // 货主id
-        /* $logisticNumber = $orderHeader -> asnreference3;    */
-        $logisticId =  Logistic::where('',$ASNHeader -> customerid) ->get() -> id;  // 承运商id
-        $logisticNumberReturn = $ASNHeader -> asnreference3;                        // 退回单号
-        $mobileSender = $orderHeader -> c_tel2;                                     // 电话
-        $operatorId = Auth::user()['id'];                                           // 操作人
-        $sender = $orderHeader -> consigneename;                                    // 姓名
-//        id_owner
-//        logistic_number
-//        logistic_number_return
-//        id_logistic_return
-
+        $orderHeader = OracleDOCOrderHeader::where('soreference1', $ASNHeader->asnreference2)->first();
+        if (!$orderHeader) {
+            return;
+        }
+        $order = Order::where('code', $orderHeader->orderno)->first;
+        if (!$order) {
+            return;
+        }
+        OrderIssue::where('order_id', $order->id)->where('is_new_rejecting', '<>', 2)->update('is_new_rejecting', 2);
     }
 }

+ 1 - 0
database/migrations/2020_08_06_172655_create_order_issue_process_logs_table.php

@@ -17,6 +17,7 @@ class CreateOrderIssueProcessLogsTable extends Migration
             $table->bigIncrements('id');
             $table->timestamps();
             $table->integer('order_issue_id')->index()->comment('订单问题件');
+            $table->integer('user_id')->nullable()->comment('操作人');
             $table->string('content')->nullable()->comment('说明');
             $table->enum('type',['创建','结束','处理'])->nullable()->comment('类别');
         });

+ 2 - 4
resources/views/order/issue/create.blade.php

@@ -31,10 +31,9 @@
                             <label for="wms_order_no" class="col-2 col-form-label text-right ">原始WMS订单号</label>
                             <div class="col-8">
                                 <input type="text" name="wms_order_no" id="wms_order_no" class="form-control col-lg-5 @error('wms_order_no') is-invalid @enderror"
-                                       value="@if(old('wms_order_no')){{old('wms_order_no')}}@endif"
-                                       :disabled="rejectedBill.order_number"
                                        @blur="verifyWMSOrderNo($event)"
-                                       >
+                                       :disabled="rejectedBill.order_number"
+                                       value="@if(old('wms_order_no')){{old('wms_order_no')}}@endif" >
                                 @error('wms_order_no')
                                 <span class="invalid-feedback" role="alert"><strong>{{ $message }}</strong></span>
                                 @enderror
@@ -353,7 +352,6 @@
                             _this.rejectedBill = '';
                             _this.RejectedBillTooltip('failed');
                         }
-                        console.log(_this.order);
                     }).catch(function(err){
                         tempTip.setDuration(4000);
                         tempTip.show('网络链接失败'+err);

+ 108 - 7
resources/views/order/issue/edit.blade.php

@@ -7,7 +7,6 @@
         <div class="card mb-2">
             <form action="{{url('order/issue/update')}}" method="post">
                 @csrf
-                @method('PUT')
                 <div class="form-group row">
                     <label for="name" class="col-2 col-form-label text-right">WMS订单号</label>
                     <div class="col-8">
@@ -19,12 +18,108 @@
                 <div class="form-group row">
                     <label for="name" class="col-2 col-form-label text-right">订单信息</label>
                     <div class="col-8">
-                        <input type="text" class="form-control @error('name') is-invalid @enderror"
-                               name="name" autocomplete="off" required>
+                        <input type="text" class="form-control @error('name') is-invalid @enderror" name="name" autocomplete="off" required>
+                    </div>
+                </div>
+
+                <div class="form-group" >
+                    <label  class="col-2 col-form-label text-right">退回单号</label>
+                    <div class="col-8">
+                        <input type="text" class="form-control" name="">
+                    </div>
+                </div>
+                <div class="form-group" >
+                    <label  class="col-2 col-form-label text-right">退回单商品详情</label>
+                    <div class="col-8">
+                        <input type="text" class="form-control" name="">
+                    </div>
+                </div>
+{{--退回状态为自动生成--}}
+                <div class="form-group">
+                    <label  class="col-2 col-form-label text-right">退回状态</label>
+                    <div class="col-8">
+                        <select class="form-control">
+                            <opiton ></opiton>
+                        </select>
                     </div>
                 </div>
+{{--展示处理日志--}}
+                <div class="form-group">
+                    <label  class="col-2 col-form-label text-right">处理日志</label>
+                    <div class="col-8">
 
+                    </div>
+                </div>
+                <label for="">处理日期</label>
+{{--问题类别--}}
+                <div class="form-group">
+                    <label  class="col-2 col-form-label text-right">问题类别</label>
+                    <div class="form-control">
 
+                    </div>
+                </div>
+{{--二次订单号--}}
+                <div class="form-group">
+                    <label  class="col-2 col-form-label text-right">二次订单号</label>
+                    <div class="col-8">
+                        <input type="text" name="" class="form-control">
+                    </div>
+                </div>
+{{--二次运单号--}}
+                <div class="form-group">
+                    <lable class="col-2 col-form-label text-right">二次运单号</lable>
+                </div>
+{{--最终状态--}}
+                <div class="form-group">
+                    <lable class="col-2 col-form-label text-right">最终状态</lable>
+                    <div class="col-8">
+                        <select>
+                            <option></option>
+                        </select>
+                    </div>
+                </div>
+{{--承运商赔偿金额--}}
+                <div class="form-group">
+                    <label class="col-2 col-form-label text-right">承运商赔偿金额</label>
+                    <div class="col-8">
+                        <input type="text" name="" class="form-control">
+                    </div>
+                </div>
+{{--承运商快递减免--}}
+                <div class="form-group">
+                    <label class="col-2 col-form-label text-right">承运商快递减免</label>
+                    <div class="col-8">
+                        <input type="text" name="" class="form-control">
+                    </div>
+                </div>
+{{--宝石赔偿金额--}}
+                <div class="form-group">
+                    <label class="col-2 col-form-label text-right">宝时赔偿金额</label>
+                    <div class="col-8">
+                        <input type="text" name="" class="form-control">
+                    </div>
+                </div>
+{{--宝石快递减免--}}
+                <div class="form-group">
+                    <label class="col-2 col-form-label text-right">宝时赔偿金额</label>
+                    <div class="col-8">
+                        <input type="text" name="" class="form-control">
+                    </div>
+                </div>
+{{--事故责任方--}}
+                <div class="form-group">
+                    <label class="col-2 col-form-label text-right">承运商赔偿金额</label>
+                    <div class="col-8">
+                        <select name="" id="">
+                            <option value></option>
+                            <option value=""></option>
+                        </select>
+                    </div>
+                </div>
+
+                <div class="form-control">
+                    <button type="submit" class="btn btn-success form-control" >提交修改</button>
+                </div>
             </form>
         </div>
     </div>
@@ -36,11 +131,17 @@
             el:'#editOrderIssue',
             data:{
                 orderIssues:{!! $orderIssue !!},
-                owners:{{ $woners }},
-
+                owners:{!! $woners !!},
+                logistics:{!! $logistics !!},
+                userGroup: {!! $userGroup !!},
+                rejectingStatus:[],
+                orderIssueType:[],
+                final_status: [ {name: 0, value: '已解决'}, {name: 1, value: '待退回'}, {name: 2, value: '退回中'},],
+                logisticExpressRemission: [{name: 0, value: '原单减免'}, {name: 1, value: '部分减免'}, {name: 2, value: '全部减免'},],
+                baoShiExpressRemission: [{name: 0, value: '原单减免'}, {name: 1, value: '部分减免'}, {name: 2, value: '全部减免'},],
             },
-            mounted:{
-
+            mounted:function(){
+                $("#editOrderIssue").removeClass('d-none');
             },
             methods:{
 

+ 218 - 86
resources/views/order/issue/index.blade.php

@@ -18,7 +18,7 @@
                         </div>
                     </span>
                     <span class="ml-1">
-                        <button type="button" class="btn btn-outline-dark btn-sm form-control-sm  tooltipTarget" :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>
                     <span class="ml-1">
                         <button type="button" class="btn btn-outline-dark btn-sm form-control-sm  tooltipTarget" @click="copyOrderNo()" >复制快递单号</button>
@@ -38,12 +38,12 @@
                                 <input id="all" type="checkbox" @click="checkAll($event)"/>
                             </label>
                         </th>
-
                         <th class="">序号</th>
                         @can("订单管理-问题件-置顶")
                             <th class="" style="width: 60px">置顶</th>
                         @endcan
                         <th class="">ID</th>
+                        <th class="">处理状态</th>
                         <th class="">登记日期</th>
                         <th class="">订单日期</th>
                         <th class="">客户</th>
@@ -92,16 +92,17 @@
                                 </button>
                             </td>
                         @endcan
-                        <td class="">@{{ orderIssue.id }}</td> <!--id-->
-                        <td class="">@{{ orderIssue.created_at }}</td> <!--登记日期-->
-                        <td class="">@{{ orderIssue.order.created_at }}</td> <!--订单日期-->
+                        <td class="">@{{ orderIssue.id }}</td>
+                        <td class="">@{{ orderIssue.handle_status }}</td>
+                        <td class="">@{{ orderIssue.created_at }}</td>
+                        <td class="">@{{ orderIssue.order.created_at }}</td>
                         <td class="">
                             <template v-if='orderIssue.order.owner'>
                                 @{{ orderIssue.order.owner.name }}
                             </template>
                         </td>  <!--客户-->
                         <td class=""><template v-if="orderIssue.order.shop">@{{ orderIssue.order.shop.name }}</template> </td>
-                        <td class="">@{{ orderIssue.order.code }} </td> <!--原始订单号-->
+                        <td class="">@{{ orderIssue.order.code }} </td>
                         <td class="">
                             <template v-if='orderIssue.order.logistic'>
                                 @{{ orderIssue.order.logistic.name }}
@@ -116,16 +117,15 @@
                                     @click="toggleNumber($event)" :data-value="orderIssue.id+'logisticNumbers'">
                                 分箱@{{ orderIssue.order.logisticNumbers.length }}件,点击展开
                             </button>
-                        </td>   <!--原始运单号-->
+                        </td>
 
-                        <td class="">@{{ orderIssue.order.consignee_name }}</td>   <!--收货人名称-->
-                        <td class="">@{{ orderIssue.order.consignee_phone }}</td>   <!--收货人电话-->
-                        <td class="">@{{ orderIssue.order.province }}</td>   <!--省-->
-                        <td class="">@{{ orderIssue.order.city }}</td>  <!--市-->
-                        <td class="">@{{ orderIssue.order.district }}</td> <!--区-->
-                        <td class="" ><p class="text-wrap" style="width: 350px">@{{ orderIssue.order.address }}</p></td> <!--收货人地址-->
+                        <td class="">@{{ orderIssue.order.consignee_name }}</td>
+                        <td class="">@{{ orderIssue.order.consignee_phone }}</td>
+                        <td class="">@{{ orderIssue.order.province }}</td>
+                        <td class="">@{{ orderIssue.order.city }}</td>
+                        <td class="">@{{ orderIssue.order.district }}</td>
+                        <td class="" ><p class="text-wrap" style="width: 350px">@{{ orderIssue.order.address }}</p></td>
 
-                        <!--原始商品明细-->
                         <td class=" p-0" :id="orderIssue.id+'items'"  valign="middle" align="center" >
                             <table v-if="orderIssue.order.packages.length > 0" class="table table-sm toggle-table m-0">
                                 <tr>
@@ -141,14 +141,12 @@
                             </table>
                             <button v-if="orderIssue.order.packages.length > 1" type="button"
                                     class="btn btn-sm btn-outline-primary hint-btn text-center align-middle mt-1"
-                                    @click="toggleTable($event)" :data-value="orderIssue.id+'items'">共有@{{
-                                orderIssue.order.logisticNumbers.length }}件商品,点击展开
+                                    @click="toggleTable($event)" :data-value="orderIssue.id+'items'">共有@{{ orderIssue.order.logisticNumbers.length }}件商品,点击展开
                             </button>
                         </td>
-                        {{--返回商品明细--}}
-                        <td class="bg-white">
+                        <td class="bg-white" :id="orderIssue.id+'rejectedBill'"  valign="middle" align="center">
                             <div v-if="orderIssue.rejectedBill">
-                                <table v-if="orderIssue.rejectedBill.items">
+                                <table v-if="orderIssue.rejectedBill.items" class="table table-sm toggle-table m-0">
                                     <tr>
                                         <th>条码</th>
                                         <th>商品名</th>
@@ -164,73 +162,104 @@
                                         <td>@{{ item.remark }}</td>
                                     </tr>
                                 </table>
+                                <button v-if="orderIssue.order.packages.length > 1" type="button"
+                                        class="btn btn-sm btn-outline-primary hint-btn text-center align-middle mt-1"
+                                        @click="toggleTable($event)" :data-value="orderIssue.id+'rejectedBill'">共有@{{ orderIssue.rejectedBill.items.length }}件商品,点击展开
+                                </button>
                             </div>
                         </td>
-                        {{--                        <td>@{{ orderIssue.order }}</td> --}}{{--原始商品明细--}}
-                        {{--                        <td>@{{ orderIssue.order }}</td> --}}{{--返回商品明细--}}
-                        <td class="bg-white">@{{ orderIssue.rejecting_status }}</td> {{--退单状态--}}
-                        <td class="bg-white">@{{ orderIssue.situation_explain }}</td> {{--情况说明--}}
+                        <td class="bg-white">@{{ orderIssue.rejecting_status }}</td>
+                        <td class="bg-white"  :id="orderIssue.id+'packages'"  valign="middle" align="center">
+                            <template v-if="orderIssue.logs">
+                                <table v-if="orderIssue.logs" class="table table-sm toggle-table m-0">
+                                    <tr>
+                                        <th>内容</th><th>类型</th><th>操作人</th>
+                                    </tr>
+                                    <tr v-if="orderIssue.logs" v-for="log in orderIssue.logs" class="toggle-content">
+                                        <td>log.content</td>
+                                        <td>log.type</td>
+                                        <td>log.user.name</td>
+                                    </tr>
+                                </table>
+                                <button v-if="orderIssue.logs.length > 1" type="button"
+                                        class="btn btn-sm btn-outline-primary hint-btn text-center align-middle mt-1"
+                                        @click="toggleTable($event)" :data-value="orderIssue.id+'packages'">共有@{{ orderIssue.logs.length }}件商品,点击展开
+                                </button>
+                            </template>
+                        </td> {{--情况说明--}}
                         <td class="bg-white">
                             <p v-if="orderIssue.order_issue_type">@{{ orderIssue.order_issue_type}}</p>
-                        </td>  <!-- 问题类别-->
-                        <td class="bg-white">@{{ orderIssue.result_explain }}</td>   <!--处理结果说明-->
-
-                        <td class="bg-white">
-                            <p v-if="orderIssue.secondOrder"> @{{ orderIssue.secondOrder.code }}</p>
-                        </td>   <!--二次订单号-->
-                        <td class="bg-white">
-                            <p v-if="orderIssue.secondOrder"> @{{ orderIssue.secondOrder.logistic_id }}</p>
-                        </td> {{--二次承运商--}}
-                        <td class="bg-white">
-                            <p v-if="orderIssue.secondOrder"> @{{ orderIssue.secondOrder.logistic_number }}</p>
-                        </td> {{-- 二次运单号--}}
-                        <td class="bg-white">
-                            <p v-if="orderIssue.secondOrder"> @{{ orderIssue.secondOrder.code }}</p>
-                        </td> {{-- 二次商品明细--}}
-                        <td class="bg-white">@{{ orderIssue.final_status }}</td> {{--最终转态--}}
-                        <td class="bg-white">@{{ orderIssue.logistic_indemnity_money }}</td> {{--承运商赔偿金额--}}
-                        <td class="bg-white">@{{ orderIssue.logistic_express_remission }}</td> {{--承运商快递减免--}}
-                        <td class="bg-white">@{{ orderIssue.baoshi_indemnity_money }}</td> {{--宝石赔偿金额--}}
-                        <td class="bg-white">@{{ orderIssue.baoshi_express_remission }}</td> {{--宝石快递减免--}}
-                        <td class="bg-white"></td>   <!--事故责任方-->
+                        </td>
+                        <td class="bg-white">@{{ orderIssue.result_explain }}</td>
+                        <td class="bg-white"><p v-if="orderIssue.secondOrder"> @{{ orderIssue.secondOrder.code }}</p></td>
+                        <td class="bg-white"><p v-if="orderIssue.secondOrder"> @{{ orderIssue.secondOrder.logistic_id }}</p></td>
+                        <td class="bg-white"><p v-if="orderIssue.secondOrder"> @{{ orderIssue.secondOrder.logistic_number}}</p></td>
+                        <td class="bg-white"><p v-if="orderIssue.secondOrder"> @{{ orderIssue.secondOrder.code }}</p></td>
+                        <td class="bg-white">@{{ orderIssue.final_status }}</td>
+                        <td class="bg-white">@{{ orderIssue.logistic_indemnity_money }}</td>
+                        <td class="bg-white">@{{ orderIssue.logistic_express_remission }}</td>
+                        <td class="bg-white">@{{ orderIssue.baoshi_indemnity_money }}</td>
+                        <td class="bg-white">@{{ orderIssue.baoshi_express_remission }}</td>
+                        <td class="bg-white"></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">删
-                            </button>
-                        </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">删</button>
+                        </td>
                     </tr>
                 </table>
-                <a :href="page.prevPageUrl" class="btn btn-sm" :class="page.curPage === 1 ?'':'btn-outline-primary'"  :disabled="page.curPage == 1">上一页</a>
+                <a :href="page.prevPageUrl" class="btn btn-sm" :class="page.curPage === 1 ?'':'btn-outline-primary'"  :disabled="page.curPage === 1">上一页</a>
                 <a :href="page.nextPageUrl" class="btn btn-sm" :class="page.curPage === page.lastPage ?'':'btn-outline-primary'"  :disabled="page.curPage === page.lastPage" >下一页</a>
-                <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>
+                <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>
             </div>
         </div>
-        <div class="modal" tabindex="-1" role="dialog" id="alertModal">
-            <div class="modal-dialog">
+{{--deleteOrderIssue--}}
+        <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">
-                        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+                        <h5 class="modal-title" id="exampleModalLabel">提示</h5>
+                        <button type="button" class="close" data-dismiss="modal" aria-label="Close" @click="changeDeleteId">
                             <span aria-hidden="true">&times;</span>
                         </button>
                     </div>
                     <div class="modal-body">
                         <p>是否删除当前订单问题件?</p>
+                        <input type="hidden" id = "deleteId"  class="form-control" />
                     </div>
                     <div class="modal-footer">
-                        <button type="button" class="btn btn-secondary" data-dismiss="modal" @click="this.deleteId = ''">取消</button>
+                        <button type="button" class="btn btn-secondary" data-dismiss="modal" @click="changeDeleteId">取消</button>
                         <button type="button" class="btn btn-primary" data-dismiss="modal" @click="deleteOrderIssueById">确认</button>
                     </div>
                 </div>
             </div>
         </div>
+{{--OrderIssue On Top--}}
+        <div class="modal fade " id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" 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>
+                        <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">
+                        <input type="hidden" class="form-control" id="onTopId">
+                        <textarea type="text" class="form-control"  required id="remark" @change="changeRemark"  ></textarea>
+                        <div class="invalid-feedback">
+                            备注信息不能为空
+                        </div>
+                    </div>
+                    <div class="modal-footer">
+                        <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="submitOnTop">提交</button>
+                    </div>
+                </div>
+            </div>
+        </div>
     </div>
 
-
 @endsection
 @section('lastScript')
     <style type="text/css">
@@ -261,6 +290,7 @@
         }
     </style>
     <script type="text/javascript" src="{{asset('js/queryForm/queryForm.js')}}"></script>
+    <script type="text/javascript" src="{{asset('js/queryForm/export.js')}}"></script>
     <script>
         let listVue = new Vue({
             el: '#issue_div ',
@@ -284,6 +314,7 @@
                     prevPageUrl:{!! $orderIssues->toJson()  !!}['prev_page_url'],
                     lastPageUrl:{!!  $orderIssues->toJson() !!}['last_page_url'],
                 },
+                onTopId:0,
             },
             mounted: function () {
                 $('.tooltipTarget').tooltip({'trigger': 'hover'});
@@ -292,13 +323,11 @@
                 let final_status = [{name:'0',value:'已解决'},{name:'1',value:'待退回'},{name:'2',value:'退回中'}];
                 let data = [[
                     {name: 'created_at_start', type: 'dataTime', tip: '订单开始日期'},
-                    {name: 'owner_id',type: 'search_select',tip: ['输入关键字检索客户', '选择要查询的客户'], placeholder: ['客户', ''],data: _this.owners},
+                    {name: 'owner_id',type: 'select_multiple_select',tip: ['输入关键词快速定位下拉列表,回车确定','选择要显示的客户'], placeholder:['货主','定位或多选货主'],data: _this.owners},
                     {name: 'final_status', type: 'select', tip: '问题件的最终状态', placeholder: '最终状态', data: final_status},
-                    {name: 'handle_status', type: 'checkbox', tip: '是否已完结', data: [{name: 'true', value: '已完结'}]},
-                ],
-                    [
+                    {name: 'handle_status', type: 'checkbox', tip: '是否已完结', data: [{name: '2', value: '已完结'}]},
+                ], [
                         {name: 'created_at_end', type: 'dataTime', tip: '订单结束日期'},
-
                         {name: 'logistic_indemnity_money', type: 'input', tip: '承运商赔偿金额', placeholder: '承运商赔偿金额'},
                         @can('客户不可见')
                         {name: 'baoshi_express_remission', type: 'input', tip: '宝时赔偿金额', placeholder: '宝时赔偿金额'},
@@ -309,7 +338,6 @@
                     condition: data,
                 })
                 this.form.init();
-
                 $('.table_tr').hide();
                 $('.hideItems').hide();
                 $('.toggle-content').hide();
@@ -326,7 +354,6 @@
                     },
                     deep:true
                 },
-
             },
             methods: {
                 selectedColor(orderno) {
@@ -378,25 +405,28 @@
                 },
                 editOrderIssue($event){
                     let id = $($event.target).attr('data-value');
-                    console.log(id);
+
                 },
                 deleteOrderIssue($event){
                     let id = $($event.target).attr('data-value');
+                    $('#deleteId').val(id);
                     $('#alertModal').modal('show');
-                    this.deleteId = id;
                 },
                 deleteOrderIssueById(){
                     let _this = this;
                     tempTip.setDuration(99999)
                     tempTip.waitingTip('删除中,请稍候')
-                    axios.post('{{url('order/issue/del')}}',{id:_this.deleteId}).then(function(res){
+                    let id =  $('#deleteId').val();
+                    let data = {id:id};
+                    axios.post('{{url('order/issue/destroy')}}',data).then(function(res){
                         tempTip.setDuration(5000)
                         tempTip.cancelWaitingTip();
                         if(res.data.success){
                             for(let i = 0;i< _this.orderIssues.length;i++){
                                 let data = _this.orderIssues[i];
-                                if(data.id === _this.deleteId){
+                                if(data.id == id){
                                     _this.orderIssues.splice(i,1);
+                                    _this.deleteId = 0;
                                     break;
                                 }
                             }
@@ -412,11 +442,59 @@
                         tempTip.show('网络错误:' + err);
                     });
                 },
-                cancelOnTop($event){
-
+                changeDeleteId(){
+                    $('#deleteId').val('');
                 },
-                OrderIssueOnTop($event){
-
+                cancelOnTop(event){
+                    let id =$(event.target).attr('data-value')
+                    let data = {id:id};
+                    axios.post('{{url('order/issue/onTop')}}',data).then(function(res){
+                        if(res.data.success){
+                            tempTip.setDuration(2000);
+                            tempTip.showSuccess('订单问题件取消置顶成功!');
+                            window.location.reload();
+                        }else{
+                            tempTip.setDuration(2500);
+                            tempTip.show( res.data.fail_info);
+                        }
+                    }).catch(function(err){
+                        tempTip.setDuration(4000);
+                        tempTip.show('网络错误:' + err);
+                    });
+                },
+                changeRemark(){
+                    $('#remark').removeClass('is-invalid');
+                },
+                OrderIssueOnTop(event){
+                    let id = $(event.target).attr('data-value');
+                    $("#onTopId").val(id);
+                    $("#exampleModal").modal('show');
+                },
+                submitOnTop(){
+                    let _this = this;
+                    let remark =  $("#remark").val();
+                    let id = $("#onTopId").val();
+                    if(remark === '') {
+                        $("#remark").focus();
+                        $('#remark').addClass('is-invalid');
+                    }else{
+                        let data = {id:id,remark:remark};
+                        axios.post('{{url('order/issue/onTop')}}',data).then(function(res){
+                            if(res.data.success){
+                                _this.orderIssues.forEach(function(orderIssue){
+                                    if(orderIssue.id == id){
+                                        orderIssue.top.remark = 'remark';
+                                    }
+                                })
+                            } else {
+                                tempTip.setDuration(2500);
+                                tempTip.show( res.data.fail_info);
+                            }
+                        }).catch(function(err){
+                            tempTip.setDuration(4000);
+                            tempTip.show('网络错误:' + err);
+                        });
+                    }
                 },
                 pageTurning(event){
                     let page = $(event.target).val();
@@ -425,22 +503,20 @@
                     }
                     window.location = this.form.goPage(page);
                 },
+                // 导出
                 orderIssueExport(sign){
-                    let data = {};
-                    console.log(sign);
+
+                    let url = '{{url('order/issue/export')}}';
+                    let token='{{ csrf_token() }}';
                     if(sign){
                         // 所有页
-                        data.search = this.form.getSearchData();
-                    }else if(sign){
+                        excelExport(true,this.checkData,url,this.page.total,token);
+                    }else{
                         // 选中
-                        data.ids = this.checkData;
+                        excelExport(false,this.checkData,url,null,token);
                     }
-                    axios.post('{{url('order/issue/export')}}',data).then(function(respone){
-
-                    }).catch(function(err){
-
-                    });
                 },
+                // 复制快递单号
                 copyOrderNo(){
                     let _this =this;
                     if(this.checkData.length === 0){
@@ -475,9 +551,65 @@
                         this.checkData = [];
                     }
                 },
+                // 完结
+                endOrderIssue(){
+                    if(this.checkData.length === 0){
+                        tempTip.show('没有勾选订单');
+                        return ;
+                    }
+                    let _this = this;
+                    let data = {ids:this.checkData};
+                    axios.post('{{url('order/issue/endOrderIssue')}}',data).then(function(res){
+                        if(res.data.success){
+                            _this.orderIssues.forEach(function(item){
+                                if(_this.checkData.includes(item.id)){
+                                    item.handle_status = '已完结';
+                                }
+                            })
+                            tempTip.setDuration(2000);
+                            tempTip.showSuccess('勾选订单已变为已完结');
+                        }else{
+                            tempTip.setDuration(3000);
+                            tempTip.show(res.data.fail_info);
+                        }
+                    }).catch(function(err){
+                        tempTip.setDuration(4000);
+                        tempTip.show('网络异常:'+err);
+                    })
+                },
+                // 添加日志
+                addOrderIssueLog(event){
+                    let _this = this;
+                    let id ;
+                    let data= {id:id,content:''};
+                    axios.post('{{url('order/issue/addOrderIssuesLog')}}').then(function(res){
+                        if(res.data.success){
+                            // unshift
+                            _this.orderIssues.forEach( function(orderIssue){
+                                if(orderIssue.id == id){
+                                    orderIssue.logs.unshift(res.data.data);
+                                }
+                            })
+                            tempTip.setDuration(2000);
+                            tempTip.showSuccess('添加成功');
+                        } else {
+                            tempTip.setDuration(3000);
+                            tempTip.showSuccess(res.data.fail_info);
+                        }
+                    }).catch(function(err){
+                        tempTip.setDuration(4000);
+                        tempTip.show('网络异常:'+err);
+                    });
+                },
             }
         })
-
+        // modal 隐藏时修改 input 为空
+        $("#exampleModal").on('hide.bs.modal',function(e){
+            $('#remark').val('');
+        });
+        $("#exampleModal").on('hide.bs.modal',function(e){
+            $('#remark').val('');
+        });
     </script>
 @endsection
 

+ 5 - 6
routes/web.php

@@ -333,19 +333,18 @@ Route::group(['prefix'=>'order'],function(){
     Route::get('issue/create','OrderIssueController@create'); // 录入
     Route::post('issue/import','OrderIssueController@import'); // 批量导入
     Route::get('issue/excelImport','OrderIssueController@excelImport'); // 前往
-//
-    Route::post('issue/orderIssueTag','OrderIssueController@orderIssueTag'); // 标记问题订单
-    Route::get('issue/destroy/{id}','OrderIssueController@destroy'); // 删除
+    Route::post('issue/destroy','OrderIssueController@destroy'); // 删除
     Route::get('issue/{id}/edit','OrderIssueController@edit');// 编辑
     Route::post('issue/update','OrderIssueController@update');// 修改
-
+    Route::post('issue/orderIssueTag','OrderIssueController@orderIssueTag'); // 标记问题订单
+    Route::post('issue/endOrderIssue','OrderIssueController@endOrderIssue');// 完结订单
     Route::post('issue/verifyOracleOrderNo','OrderIssueController@verifyOracleOrderNo');//校验订单号是否存在
     Route::post('issue/verifyLogisticNumber','OrderIssueController@verifyLogisticNumber');//校验退件快递单号是否存在
-
     Route::post('issue/store','OrderIssueController@store'); // 创建
     Route::get('issue/onTop','OrderIssueController@orderIssueOnTop'); // 置顶
     Route::get('issue/cancelTop','OrderIssueController@cancelTop'); // 取消置顶
     Route::post('issue/addLog','OrderIssueController@addLog');//添加记录
     Route::post('issue/ajaxGetOrderHead','OrderIssueController@ajaxGetOrderHead');//获取退回快递单号对应的WMS order Header
-    Route::post('issue/export','OrderIssueController@exportOrderIssue');// 导出
+    Route::match(['get','post'],'issue/export','OrderIssueController@exportOrderIssue');// 导出
+    Route::post('issue/addOrderIssuesLog','OrderIssueController@addOrderIssuesLog');// 添加记录
 });