Kaynağa Gözat

订单问题件 [问题件权限约束,修改绩效统计超时问题]

ajun 5 yıl önce
ebeveyn
işleme
8ed1d92a20

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

@@ -14,6 +14,7 @@ use App\QualityLabel;
 use App\RejectedBill;
 use App\Services\LogService;
 use App\Services\OrderIssueService;
+use App\Services\OwnerService;
 use App\Shop;
 use App\UserWorkgroup;
 use Exception;
@@ -35,7 +36,7 @@ class OrderIssueController extends Controller
         }
         /** @var OrderIssueService $orderIssueService */
         $orderIssueService = app('orderIssueService');
-        $owners = Owner::all();
+        $owners = app(OwnerService::class)->getAuthorizedOwners();
         $orderIssues = $orderIssueService->paginate($request->all());
         $orderIssueType = OrderIssueType::all();
         $qualityLabel = QualityLabel::all();

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

@@ -16,7 +16,6 @@ class OrderIssuePerformanceController extends Controller
     {
         app()->singleton('orderIssueWorkLoadService', OrderIssueWorkLoadService::class);
         app()->singleton('service', OrderIssuePerformanceService::class);
-
     }
 
     public function index(Request $request)
@@ -42,6 +41,7 @@ class OrderIssuePerformanceController extends Controller
         if (!Gate::allows('订单管理-问题件-工作量')) {
             return redirect(url('/'));
         }
+        /** @var OrderIssueWorkLoadService $workLoadService */
         $workLoadService = app('orderIssueWorkLoadService');
         $workLoads = $workLoadService->paginate($request->all());
         $users = $workLoadService->getUsers();

+ 18 - 16
app/Http/Controllers/OrderIssueProcessLogController.php

@@ -5,6 +5,7 @@ namespace App\Http\Controllers;
 use App\OrderIssueProcessLog;
 use App\Services\LogService;
 use App\Services\OrderIssueProcessLogService;
+use App\User;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\Gate;
@@ -19,20 +20,21 @@ class OrderIssueProcessLogController extends Controller
             return ['success' => false, 'fail_info' => '没有对应的权限'];
         }
         if ($request->filled(['id', 'content'])) {
-            $arr = ['order_issue_id' => $request->input('id'),
-                'content' => $request->input('content'),
-                'user_id' => Auth::user()['id'],
-                'type' => '处理',
-            ];
-            $orderIssueProcessLog = OrderIssueProcessLog::query()->create($arr);
-            if ($orderIssueProcessLog) {
-                $log = OrderIssueProcessLog::query()
-                    ->with('user')
-                    ->find($orderIssueProcessLog->id);
-                $this->log(__METHOD__, __FUNCTION__, json_encode($request->toArray()), Auth::user()['id']);
-                return ['success' => true, 'data' => $log];
-            } else {
-                return ['success' => false, 'fail_info' => '录入失败'];
+            try {
+                $log = OrderIssueProcessLog::query()->create([
+                    'order_issue_id' => $request->input('id'),
+                    'content' => $request->input('content'),
+                    'user_id' => Auth::user()['id'],
+                    'type' => '处理',
+                ]);
+                if ($log) {
+                    $log->user = $log->hasOne(User::class, 'id', 'user_id')->first();
+                }
+                LogService::log(__METHOD__, __FUNCTION__, json_encode($request->getContent()));
+                return ['success' =>true,'data' =>$log ];
+            } catch (\Exception $e) {
+                LogService::log(__METHOD__, __FUNCTION__, json_encode($request->getContent()) .'||'.$e->getMessage().'||'.$e->getTraceAsString());
+                return ['success' => false, 'fail_info' => $e->getMessage()];
             }
         } else {
             return ['success' => false, 'fail_info' => '没有传入对应参数'];
@@ -43,8 +45,8 @@ class OrderIssueProcessLogController extends Controller
         if(!$request->filled('id')){
             return ['success'=>false,'fail_info'=>'没有传入对应参数'];
         }
-        OrderIssueProcessLog::where('id',$request->input('id'))->delete();
-        $this->log(__METHOD__, __FUNCTION__, json_encode($request->toArray()), Auth::user()['id']);
+        OrderIssueProcessLog::query()->where('id',$request->input('id'))->delete();
+        LogService::log(__METHOD__, __FUNCTION__, json_encode($request->getContent()));
         return ['success'=>true];
     }
 

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

@@ -25,7 +25,7 @@ class OrderTrackingController extends Controller
         if (!Gate::allows('订单管理-跟踪'))
             return redirect(url('/'));
 
-        $owners = Owner::all();
+        $owners =  app(OwnerService::class)->getAuthorizedOwners();
         $service = app('orderTrackingService');
         $trackOrders = $service->paginate($request->input());
         return view('order.tracking.index', compact('owners', 'trackOrders'));
@@ -39,13 +39,12 @@ class OrderTrackingController extends Controller
             $bool = OrderTracking::query()
                 ->where('id', $request->input('id'))
                 ->update([$request->input('param') => $request->input('value')]);
-            LogService::log(__METHOD__, __FUNCTION__, '更新成功' . json_encode($request) . '」');
+            LogService::log(__METHOD__, __FUNCTION__, '更新成功' . json_encode($request->getContent()) );
             return ['success' => $bool];
         } catch (\Exception $e) {
-            LogService::log(__METHOD__, __FUNCTION__, '更新失败「' . json_encode($request) . '」');
+            LogService::log(__METHOD__, __FUNCTION__, '更新失败' . json_encode($request->getContent()) .'||'.$e->getMessage().'||'.$e->getTraceAsString());
             return ['success' => false];
         }
-
     }
 
     public function warehouseUpdateApi(Request $request)
@@ -56,10 +55,10 @@ class OrderTrackingController extends Controller
             $bool = OrderTracking::query()
                 ->where('id', $request->input('id'))
                 ->update([$request->input('param') => $request->input('value')]);
-            LogService::log(__METHOD__, __FUNCTION__, '更新成功「' . json_encode($request) . '」');
+            LogService::log(__METHOD__, __FUNCTION__, '更新成功' . json_encode($request->getContent()));
             return ['success' => $bool];
         } catch (\Exception $e) {
-            LogService::log(__METHOD__, __FUNCTION__, '更新失败「' . json_encode($request) . '」');
+            LogService::log(__METHOD__, __FUNCTION__, '更新失败' . json_encode($request->getContent()) .'||'.$e->getMessage().'||'.$e->getTraceAsString());
             return ['success' => false];
         }
     }

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

@@ -475,6 +475,7 @@ class TestController extends Controller
 
 
     public function test3(){
+
         /** @var DataHandlerService $dataHandlerService */
         $dataHandlerService = app('dataHandlerService');
         $startDate = \Illuminate\Support\Carbon::parse('2020-05-06 13:16:51')->toDateTimeString();
@@ -525,6 +526,11 @@ class TestController extends Controller
 
     }
 
+    public function doctype(){
+
+        $a=\Doctrine\DBAL\Types\Type::getTypesMap();
+        dd($a);
+    }
     public function orderTrckingOwnerAll(){
         $owners = Owner::all();
         foreach ($owners as $owner) {

+ 3 - 0
app/Owner.php

@@ -39,4 +39,7 @@ class Owner extends Model
         return $this->belongsTo(OrderTrackingOwner::class,'id','owner_id');
     }
 
+    public function order(){
+        return $this->hasOne(Order::class,'owner_id','id');
+    }
 }

+ 10 - 15
app/Services/OrderIssuePerformanceService.php

@@ -7,6 +7,7 @@ use App\Owner;
 use App\Services\common\QueryService;
 use App\User;
 use App\Exports\Export;
+use Carbon\Carbon;
 use Illuminate\Pagination\LengthAwarePaginator;
 use Illuminate\Pagination\Paginator;
 use Illuminate\Support\Facades\Auth;
@@ -76,25 +77,21 @@ class OrderIssuePerformanceService
         $user_ids =  $query->map(function($value){
             return $value->user_id;
         });
-        $owners = Owner::all();
-/*        $arr = OrderIssueProcessLog::all()->groupBy('user_id');
-        $user_ids = array_keys($arr->toArray());*/
+        $owners = Owner::query()->with('order.issue')->whereHas('order.issue')->get();
         $data = [];
         $total = 0;
-        foreach ($user_ids as $key => $value) {
-            $params['user_id'] = $value;
-            $user = User::find($value);
+        foreach ($user_ids as $key => $user_id) {
+            $params['user_id'] = $user_id;
+            $user = User::query()->find($user_id);
             $orderIssueProcessLog = $this->getQuery($params)->get();
             foreach ($owners as $owner) {
-                $createCount = $orderIssueProcessLog->where('user_id', $value)->where('orderIssue.order.owner.id', $owner['id'])->where('type', '创建')->count(); //创建
-                $endCount = $orderIssueProcessLog->where('user_id', $value)->where('orderIssue.order.owner.id', $owner['id'])->where('type', '结束')->count(); //结束
-                $treatmentCount = $orderIssueProcessLog->where('user_id', $value)->where('orderIssue.order.owner.id', $owner['id'])->where('type', '处理')->count(); //处理
+                $createCount = $orderIssueProcessLog->where('user_id', $user_id)->where('orderIssue.order.owner.id', $owner['id'])->where('type', '创建')->count(); //创建
+                $endCount = $orderIssueProcessLog->where('user_id', $user_id)->where('orderIssue.order.owner.id', $owner['id'])->where('type', '结束')->count(); //结束
+                $treatmentCount = $orderIssueProcessLog->where('user_id', $user_id)->where('orderIssue.order.owner.id', $owner['id'])->where('type', '处理')->count(); //处理
                 $sum = $createCount + $endCount + $treatmentCount;
-                if ($sum == 0) {
-                    continue;
-                }
+                if ($sum == 0) {continue;}
                 $total++;
-                array_push($data, ['id'=>$total,'user' => $user['name'], 'owner' => $owner['name'], 'createCount' => $createCount, 'endCount' => $endCount, 'treatmentCount' => $treatmentCount, 'sum' => $sum]);
+                $data[] = ['id'=>$total,'user' => $user['name'], 'owner' => $owner['name'], 'createCount' => $createCount, 'endCount' => $endCount, 'treatmentCount' => $treatmentCount, 'sum' => $sum];
             }
         }
         return $data;
@@ -106,6 +103,4 @@ class OrderIssuePerformanceService
         $row = [['user'=>'客服','owner'=>'客户','createCount'=>'创建数','treatmentCount' =>'处理数','endCount'=>'完结数','sum'=>'总数']];
         return  Excel::download(new Export($row,$performance),date('YmdHis', time()).'-客服绩效.xlsx');
     }
-
-
 }

+ 6 - 0
app/Services/OwnerService.php

@@ -97,4 +97,10 @@ Class OwnerService
             $query->where('status','启用');
         })->get();
     }
+
+    public function getAuthorizedOwners(){
+        $user = Auth::user();
+        return Owner::query()->whereIn('id',$user->getPermittingOwnerIdsAttribute()??[])->get();
+    }
+
 }

+ 59 - 109
resources/views/order/tracking/index.blade.php

@@ -84,36 +84,29 @@
                         <td>@{{ trackOrder.orderClientCode }}</td>
                         <td>
                             @can('订单管理-跟踪-仓库编辑')
-                                <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)">
+                                <input class="form-control form-control-sm" :value="trackOrder.web_order_number" @keydown.enter="warehouseUpdate($event,'web_order_number',trackOrder)" >
                             @else
                                 @{{ trackOrder.web_order_number }}
                             @endcan
                         </td>
                         <td>
                             @can('订单管理-跟踪-仓库编辑')
-                                <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)">
+                                <input class="form-control form-control-sm" type="datetime-local" :value="trackOrder.pick_up_at | dateTime" @change="warehouseUpdate($event,'pick_up_at',trackOrder)" >
                             @else
                                 @{{ trackOrder.pick_up_at }}
                             @endcan
                         </td>
                         <td>
                             @can('订单管理-跟踪-仓库编辑')
-                                <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)">
+                                <input class="form-control form-control-sm" :value="trackOrder.sale" @change="warehouseUpdate($event,'sale',trackOrder)" >
+
                             @else
                                 @{{ trackOrder.sale }}
                             @endcan
                         </td>
                         <td>
                             @can('订单管理-跟踪-仓库编辑')
-                                <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)">
+                                <input class="form-control form-control-sm" :value="trackOrder.client" @change="warehouseUpdate($event,'client',trackOrder)" >
                             @else
                                 @{{ trackOrder.client }}
                             @endcan
@@ -123,9 +116,7 @@
                         <td>@{{ trackOrder.sku.skuAmount }}</td>
                         <td>
                             @can('订单管理-跟踪-仓库编辑')
-                                <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>
+                                <input class="form-control form-control-sm" :value="trackOrder.order_remark" @change="warehouseUpdate($event,'order_remark',trackOrder)" >
                             @else
                                 @{{ trackOrder.client }}
                             @endcan
@@ -134,9 +125,7 @@
                         <td>@{{ trackOrder.packageBulk |millimeterToCubic}}</td>
                         <td>
                             @can('订单管理-跟踪-仓库编辑')
-                                <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)">
+                                <input class="form-control form-control-sm" :value="trackOrder.order_remark" @change="displayInput($event,'order_remark',trackOrder)" >
                             @else
                                 @{{ trackOrder.pallet_total }}
                             @endcan
@@ -147,54 +136,46 @@
 
                         <td>
                             @can('订单管理-跟踪-物流公司编辑')
-                                <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)">
+                                <input class="form-control form-control-sm" type="datetime-local"  @change="logisticUpdate($event,'planning_sent_at',trackOrder)"  :value="trackOrder.planning_sent_at | dateTime" >
                             @else
                                 @{{ trackOrder.planning_sent_at }}
                             @endcan
                         </td>
                         <td>
                             @can('订单管理-跟踪-物流公司编辑')
-                                <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)">
+                                <select class="form-control form-control-sm" :value="trackOrder.is_on_duty_shift" @change="logisticUpdate($event,'is_on_duty_shift',trackOrder)" >
+                                    <option v-for="item in isOnDutyShift" :value="item">@{{ item }}</option>
+                                </select>
                             @else
                                 @{{ trackOrder.is_on_duty_shift }}
                             @endcan
                         </td>
                         <td>
                             @can('订单管理-跟踪-物流公司编辑')
-                                <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)">
+                                <select class="form-control form-control-sm" :value="trackOrder.is_arrival" @change="logisticUpdate($event,'is_arrival',trackOrder)" :data_value="trackOrder.id">
+                                    <option v-for="item in isArrival" :value="item">@{{ item }}</option>
+                                </select>
                             @else
                                 @{{ trackOrder.is_arrival }}
                             @endcan
                         </td>
                         <td>
                             @can('订单管理-跟踪-物流公司编辑')
-                                <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)">
+                                <input class="form-control form-control-sm" type="date"  @change="logisticUpdate($event,'signed_at',trackOrder)" :value="trackOrder.signed_at">
                             @else
                                 @{{ trackOrder.signed_at }}
                             @endcan
                         </td>
                         <td>
                             @can('订单管理-跟踪-仓库编辑')
-                                <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)">
+                                <input class="form-control form-control-sm" @keyup.enter="warehouseUpdate($event,'receive_bill_status',trackOrder)" :value="trackOrder.receive_bill_status">
                             @else
                                 @{{ trackOrder.receive_bill_status }}
                             @endcan
                         </td>
                         <td>
                             @can('订单管理-跟踪-仓库编辑')
-                                <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)">
+                                <input class="form-control form-control-sm" @keyup.enter="warehouseUpdate($event,'remark',trackOrder)" :value="trackOrder.remark">
                             @else
                                 @{{ trackOrder.remark }}
                             @endcan
@@ -257,6 +238,8 @@
                 page: {
                     total: {!!  $trackOrders->toJson() !!}['total'],
                 },
+                isOnDutyShift: ['是','否'],
+                isArrival: ['是','否'],
             },
             mounted:function(){
                 let selectDate = [
@@ -302,20 +285,7 @@
                     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) {
@@ -380,74 +350,46 @@
                     let button = input.prev('button').show();
                     input.addClass('d-none');
                 },
-                warehouseUpdate(e,param){ // 仓库编辑
-                    let input = $(e.target);
-                    let id = input.attr('data_value'),value = input.val();
-                    let trackOrder = this.getTrackOrder(id);
-                    let data = {id:id,param:param,value:value}
-
-                    if(!trackOrder){
-                        return ;
-                    }else{
-                        if(trackOrder[param] === value){
-                            input.addClass('d-none');
-                            input.prev('button').show();
-                            return;
-                        }
+                warehouseUpdate(e,param,trackingOrder){
+                    let value = $(e.target).val();
+                    if(trackingOrder[param] === value ){
+                        return
                     }
-                    // ajax 请求
-                    let _this = this;
+                    let data = {id:trackingOrder.id,param:param,value:value}
                     axios.post('{{url("apiLocal/order/tracking/warehouseUpdate")}}',data).then(function(res){
                         if(res.data.success){
-                            tempTip.setDuration(2000);
-                            tempTip.showSuccess('更新成功');
-                            _this.setTrackOrder(data);
-                            input.addClass('d-none');
-                            input.prev('button').show();
+                            tempTip.setDuration(2000)
+                            tempTip.showSuccess('更新成功')
+                            trackingOrder[param] = value
                         }else{
-                            tempTip.setDuration(2000);
-                            tempTip.show('更新失败');
-                            input.val(trackOrder[param]);
-                        }
-                    }).catch(function(err){
-                        tempTip.setDuration(4000);
-                        tempTip.show('更新失败:'+err);
-                        input.val(trackOrder[param]);
+                            tempTip.setDuration(2000)
+                            tempTip.show('更新失败')
+                         }
+                    }).catch(function(error){
+                        tempTip.setDuration(4000)
+                        tempTip.show('更新失败:'+error)
                     })
                 },
-                logisticUpdate(e,param){  // 物流公司编辑
-                    let input = $(e.target);
-                    let id = input.attr('data_value'),value = input.val();
-                    let trackOrder = this.getTrackOrder(id);
-                    if(!trackOrder ){
-                        return ;
-                    }else{
-                        if(trackOrder[param] === value){
-                            input.addClass('d-none');
-                            input.prev('button').show();
-                            return;
-                        }
+                logisticUpdate(e,param,trackingOrder){
+                    let value = $(e.target).val();
+                    if(trackingOrder[param] === value ){
+                        return
                     }
-                    let data = {id:id,param:param,value:value}
-                    // ajax 请求
-                    let _this = this;
-                    axios.post('{{url("apiLocal/order/tracking/logisticUpdate")}}',data).then(function(res){
-                        if(res.data.success){
-                            tempTip.setDuration(2000);
-                            tempTip.showSuccess('更新成功');
-                            _this.setTrackOrder(data);
-                            input.addClass('d-none');
-                            input.prev('button').show();
+                    let data = {id:trackingOrder.id,param:param,value:value}
+                    axios.post('{{url("apiLocal/order/tracking/logisticUpdate")}}',data).then(function(response){
+                        if(response.data.success){
+                            tempTip.setDuration(2000)
+                            tempTip.showSuccess('更新成功')
                         }else{
-                            tempTip.setDuration(2000);
-                            tempTip.show('更新失败');
-                            input.val(trackOrder[param]);
+                            tempTip.setDuration(2000)
+                            tempTip.show('更新失败')
+                            trackingOrder[param] = value
                         }
-                    }).catch(function(err){
-                        tempTip.setDuration(4000);
-                        tempTip.show('更新失败:'+err);
-                        input.val(trackOrder[param]);
+                    }).catch(function(error){
+                        tempTip.setDuration(4000)
+                        tempTip.show('更新失败:'+error)
                     })
+
                 },
                 getTrackOrder(id){
                     return this.trackOrders.filter(function(trackOrder){
@@ -485,8 +427,16 @@
                     if(val==='0'||val===0)return 0;
                     if(!val)return '';
                     return _.round(val/1000000000,2);
+                },
+                dateTime:function(value) {
+                    if (value !== null) {
+                        let date = value.replace(' ', 'T')
+                        return date;
+                    }
+                    return value
                 }
-            }
+            },
+
         });
     </script>
 @endsection