ajun 5 سال پیش
والد
کامیت
11ac093572

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

@@ -787,4 +787,39 @@ class OrderIssueController extends Controller
         });
         return ['success' =>true];
     }
+
+    public function joinRejectedBillApi(Request $request)
+    {
+        if (!Gate::allows('订单管理-问题件-编辑')) return ['success'=>false,'error'=>'没有对应权限'];
+        if(!$request->has('logistic_number_return'))return ['success' => false,'error','参数为空'];
+        /** @var OrderIssue $orderIssue */
+        $orderIssue = OrderIssue::query()->find($request['id']);
+        $orderIssue->joinRejectedBill($request['logistic_number_return']);
+        $rejectedBill = RejectedBill::query()->where('logistic_number_return',$request['logistic_number_return'])->first();
+        return ['success'=>true,'message' =>'添加成功','data'=>$rejectedBill];
+    }
+
+    public function unJoinRejectedBillApi(Request $request)
+    {
+        if (!Gate::allows('订单管理-问题件-编辑')) return ['success'=>false,'error'=>'没有对应权限'];
+        if(!$request->has('logistic_number_return'))return ['success' => false,'error','请校验删除对象是否存在'];
+        /** @var OrderIssue $orderIssue */
+        $orderIssue = OrderIssue::query()->find($request['id']);
+        $orderIssue->unJoinRejectedBill($request['logistic_number_return']);
+        return ['success'=>true,'message'=>'删除成功'];
+    }
+
+    public function reviseJoinRejectedBillApi(Request $request)
+    {
+        if (!Gate::allows('订单管理-问题件-编辑')) return ['success'=>false,'error'=>'没有对应权限'];
+        if(!$request->has('logistic_number_return'))return ['success' => false,'error','请校验被修改内容'];
+        if(!$request->has('logistic_number_return_update'))return ['success' => false,'error','请输入修改内容'];
+        /** @var OrderIssue $orderIssue */
+        $orderIssue = OrderIssue::query()->find($request['id']);
+        $orderIssue->rejectedBills();
+        $orderIssue->reviseJoinRejectedBill($request['logistic_number_return'],$request['logistic_number_return_update']);
+        $rejectedBill = RejectedBill::query()->where('logistic_number_return',$request['logistic_number_return'])->first();
+        return ['success'=>true,'message' => '修改成功','data'=>$rejectedBill];
+    }
+
 }

+ 11 - 20
app/Http/Controllers/OrderIssueOnTopController.php

@@ -38,29 +38,20 @@ class OrderIssueOnTopController extends Controller
     }
 
     public function apiDestroy(Request $request){
-        if (!Gate::allows('订单管理-问题件-置顶')) {
-            ['success' => false, 'fail_info' => '没有对应权限'];
-        }
-        if (!$request->has('id')) {
-            return ['success' => false, 'fail_info' => '没有传入对应的id'];
-        }
-        OrderIssueOnTop::where('id', $request->input('id'))->delete();
-        return ['success' => true];
+        if (!Gate::allows('订单管理-问题件-置顶')) ['success' => false, 'fail_info' => '没有对应权限'];
+        if (!$request->has('id'))return ['success' => false, 'fail_info' => '没有传入对应的id'];
+
+        return ['success' => OrderIssueOnTop::query()->where('id', $request->input('id'))->delete()];
     }
 
     public function apiStore(Request $request){
-        if (!Gate::allows('订单管理-问题件-置顶')) {
-            return ['success' => false, 'fail_info' => '没有对应权限'];
-        }
-        if (!$request->filled('id')) {
-            return ['success' => false, 'fail_info' => '没有传入对应参数'];
-        } else if (!$request->filled('remark')) {
-            return ['success' => false, 'fail_info' => '没有写入备注'];
-        }
-        $orderIssueOnTop = OrderIssueOnTop::create(['order_issue_id' => $request->input('id'), 'remark' => $request->input('remark')]);
-        if ($orderIssueOnTop) {
-            return ['success' => true];
-        }
+        if (!Gate::allows('订单管理-问题件-置顶')) return ['success' => false, 'fail_info' => '没有对应权限'];
+        if (!$request->filled('id')) return ['success' => false, 'fail_info' => '没有传入对应参数'];
+        if (!$request->filled('remark')) return ['success' => false, 'fail_info' => '没有写入备注'];
+
+        $orderIssueOnTop = OrderIssueOnTop::query()->create(['order_issue_id' => $request->input('id'), 'remark' => $request->input('remark')]);
+        if ($orderIssueOnTop) return ['success' => true,'data'=>$orderIssueOnTop];
+
         return ['success' => false, 'fail_info' => '置顶失败'];
     }
 }

+ 21 - 1
app/Http/Controllers/TestController.php

@@ -141,7 +141,7 @@ class TestController extends Controller
             $count = DB::connection("oracle")->selectOne(DB::raw("SELECT count(*) count FROM DOC_WAVE_DETAILS WHERE EDITTIME >= TO_DATE(?,'yyyy-mm-dd hh24:mi:ss')"),[$date]);
             if ($count->count > 1000){
                 $sql = <<<sql
-    SELECT * FROM (SELECT ORDERNO,WAVENO,SEQNO,EDITTIME, ROWNUM AS rowno FROM ( 
+    SELECT * FROM (SELECT ORDERNO,WAVENO,SEQNO,EDITTIME, ROWNUM AS rowno FROM (
     SELECT * FROM DOC_WAVE_DETAILS WHERE EDITTIME >= TO_DATE(?,'yyyy-mm-dd hh24:mi:ss')
  ORDER BY EDITTIME) WHERE ROWNUM <= 1000)wave WHERE wave.rowno >= 0
 sql;
@@ -1409,4 +1409,24 @@ where (commodities.owner_id,commodity_barcodes.code) in (select commodities.owne
         $service->clearCancelledOrderTask();
     }
 
+    public function processOrderIssueRejectedBill()
+    {
+        OrderIssue::query()->withTrashed()->whereNotNull('logistic_number_return')->chunkById(200,function($orderIssues){
+            $orderIssues->each(function($orderIssue){
+                if($orderIssue->logistic_number_return)
+                    $orderIssue->rejectedBills()->syncWithoutDetaching([trim($orderIssue->logistic_number_return)]);
+            });
+        });
+    }
+
+    public function testOrderIssueQuery()
+    {
+        $orderIssue = OrderIssue::query()->first();
+        $orderIssue->rejectedBills()->attach('200706000001');
+        $orderIssue->rejectedBills()->attach('200706000002');
+        $orderIssue->rejectedBills()->attach('200706000003');
+        $orderIssue->rejectedBills()->attach('200706000004');
+
+    }
+
 }

+ 17 - 7
app/OrderIssue.php

@@ -53,16 +53,11 @@ class OrderIssue extends Model
         return $this->belongsTo(Order::class, 'order_id', 'id');
     }
 
-    public function rejectedBill()
+    public function rejectedBills()
     {
-        return $this->belongsTo(RejectedBill::class, 'logistic_number_return', 'logistic_number_return');
+        return $this->belongsToMany(RejectedBill::class,'order_issue_rejected_bill','order_issue_id','logistic_number_return','id','logistic_number_return');
     }
 
-//    public function rejectedBills()
-//    {
-//        return $this->hasManyThrough(OrderIssue::class,RejectedBill::class,'issue_id','logistic_number_return','id','logistic_number_return');
-//    }
-
     public function issueType()
     {
         return $this->belongsTo('App\OrderIssueType', 'order_issue_type_id', 'id');
@@ -248,4 +243,19 @@ class OrderIssue extends Model
             }
         }
     }
+
+    public function joinRejectedBill($logistic_number)
+    {
+        return $this->rejectedBills()->attach($this->id,$logistic_number);
+    }
+
+    public function unJoinRejectedBill($logistic_number)
+    {
+        return $this->rejectedBills()->detach($this->id,$logistic_number);
+    }
+
+    public function reviseJoinRejectedBill($logistic_number,$logistic_number_update)
+    {
+        return $this->rejectedBills()->updateExistingPivot($logistic_number,['logistic_number_return'=>$logistic_number_update]);
+    }
 }

+ 5 - 1
app/RejectedBill.php

@@ -63,9 +63,13 @@ class RejectedBill extends Model
     function wmsReflectReceive(){
         return $this->belongsTo('App\WMSReflectReceive','id','id_rejected_bill');
     }
+
     function orderIssue(){
-        return $this->hasOne( OrderIssue::class, 'logistic_number_return', 'logistic_number_return');
+        return $this->hasOne(OrderIssue::class,'logistic_number_return','logistic_number_return');
     }
+//    function orderIssue(){
+//        return $this->belongsToMany(OrderIssue::class,'order_issue_rejected_bill','logistic_number_return','order_issue_id');
+//    }
     function setIsLoaded_toWaitConfirm(){
         if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"将待推单修改为待确认! 退单号:".$this['logistic_number_return'],Auth::user()['id']);
         $bill=RejectedBill::find($this['id']);

+ 1 - 1
app/Services/OrderIssueService.php

@@ -48,7 +48,7 @@ class OrderIssueService
             $query->with(['shop', 'logistic', 'owner', 'packages.commodities.commodity' => function ($query) {
                 $query->with('barcodes');
             }]);
-        }, 'rejectedBill' => function ($query) {
+        }, 'rejectedBills' => function ($query) {
             $query->with(['items.quality']);
         }, 'secondOrder' => function ($query) {
             $query->with(['shop', 'logistic', 'owner', 'packages.commodities.commodity' => function ($query) {

+ 11 - 6
database/migrations/2021_01_07_092258_create_order_issue_rejected_bill_table.php

@@ -3,6 +3,7 @@
 use Illuminate\Database\Migrations\Migration;
 use Illuminate\Database\Schema\Blueprint;
 use Illuminate\Support\Facades\Schema;
+use App\OrderIssue;
 
 class CreateOrderIssueRejectedBillTable extends Migration
 {
@@ -13,11 +14,11 @@ class CreateOrderIssueRejectedBillTable extends Migration
      */
     public function up()
     {
-        Schema::table('order_issue_rejected_bill', function (Blueprint $table) {
-            $table->bigInteger('issue_id')->index();
-            $table->string('rejected_logistic_number')->index();
-            $table->timestamps();
+        Schema::create('order_issue_rejected_bill', function (Blueprint $table) {
+            $table->bigInteger('order_issue_id')->index();
+            $table->string('logistic_number_return')->index();
         });
+        $this->processOrderIssueRejectedBill();
     }
 
     /**
@@ -32,7 +33,11 @@ class CreateOrderIssueRejectedBillTable extends Migration
 
     public function processOrderIssueRejectedBill()
     {
-        $orderIssues = \App\OrderIssue::query()->selectRaw('id')->whereNotNull('logistic_number_return')->get();
-
+        OrderIssue::query()->withTrashed()->whereNotNull('logistic_number_return')->chunkById(200,function($orderIssues){
+            $orderIssues->each(function($orderIssue){
+                if($orderIssue->logistic_number_return)
+                    $orderIssue->rejectedBills()->syncWithoutDetaching([$orderIssue->logistic_number_return]);
+            });
+        });
     }
 }

+ 292 - 259
resources/views/order/issue/index.blade.php

@@ -64,7 +64,7 @@
                     @endcan
                 </div>
                 <table class="table table-sm table-striped table-bordered table-hover card-body p-0 m-0" style="background: #fff;@cannot('订单管理-问题件-客户不可见')min-width: 3000px;@else min-width: 1990px; @endcannot">
-                    <tr class="tr-yellow" align="center" >
+                    <tr class="tr-yellow align-center">
                         <th class=" font-weight-bolder header-1" ></th>
                         <th class="td-yellow  font-weight-bolder original-class table-head-warning  header-2">
                             <span>原始运单</span>
@@ -150,7 +150,7 @@
                         <th class="align-middle" rowspan="2" style="min-width: 120px">操作</th>
                         @endcannot
                     </tr>
-                    <tr class=" tr-yellow" align="center">
+                    <tr class="tr-yellow align-center">
                         <th class="td-yellow" v-if="isShowOrderInfo" style="min-width: 120px">条码</th>
                         <th class="td-yellow" v-if="isShowOrderInfo" style="min-width: 150px">商品名</th>
                         <th class="td-yellow" v-if="isShowOrderInfo" style="min-width: 75px">数量</th>
@@ -173,29 +173,28 @@
                     </tr>
 
                     <tr class="tr-yellow text-center table-body"  v-if="orderIssues" v-for="(orderIssue,index) in orderIssues"
-                        @click="selectedColor(orderIssue.id,$event)" :class="orderIssue.remark ? 'tr_top':''" v-on:mouseover="hidetop($event)" v-on:mouseleave="showtop($event)">
-{{--                        :style="[{'font-weight': orderIssue.id===selectedStyle?'bold':''}]">--}}
+                        @click="selectedColor(orderIssue.id,$event)" :class="orderIssue.top ? 'tr_top':''" v-on:mouseover="hidetop($event)" v-on:mouseleave="showtop($event)">
                         <td class="child-layer-1">
-                            <div class="m-0 p-0 " :style="[{'min-height':orderIssue.remark ?'72px':'45px'}]">
-                                <input class="checkItem" type="checkbox" :value="orderIssue.id" v-model="checkData">
+                            <div class="m-0 p-0 " :style="[{'min-height':orderIssue.top ?'72px':'45px'}]">
+                                <label>
+                                    <input class="checkItem" type="checkbox" :value="orderIssue.id" v-model="checkData">
+                                </label>
                             </div>
                         </td>
                         <td class="child-layer-1 text-nowrap">
                             @{{index+1}}
-                            <span class="text-muted" v-if="orderIssue.finance_confirm === '是'">财务确认</span>
+                            <span class="text-muted" v-show="orderIssue.finance_confirm === '是'">财务确认</span>
                         </td>
                         <td class="child-layer-1">
                             @{{ orderIssue.id }}
                             @can('订单管理-问题件-编辑')
-                            <button type="button" v-if="orderIssue.imported_status === '导入未处理'" class="btn btn-sm btn-primary" @click="updateOrderIssue(orderIssue,'imported_status',$event)">导入</button>
+                                <button v-if="orderIssue.imported_status === '导入未处理'" type="button" class="btn btn-sm btn-primary" @click="updateOrderIssue(orderIssue,'imported_status',$event)">导入</button>
                             @endcan
                         </td>
                         @cannot('订单管理-问题件-客户不可见')
                             <td class="child-layer-1">
                                 @can('订单管理-问题件-编辑')
-                                    <button type="button" class="btn btn-sm btn-outline-secondary" @click="disposeOrderIssue($event,orderIssue)" :data-value="orderIssue.id"
-                                            v-if="orderIssue.is_new_rejecting === '有'">有
-                                    </button>
+                                    <button v-if="orderIssue.is_new_rejecting === '有'" type="button" class="btn btn-sm btn-outline-secondary" @click="disposeOrderIssue(orderIssue)">有</button>
                                     <span v-else>@{{ orderIssue.is_new_rejecting }}</span>
                                 @else
                                     <span v-if="orderIssue.is_new_rejecting">@{{ orderIssue.is_new_rejecting }}</span>
@@ -203,19 +202,17 @@
                             </td>
                             @can("订单管理-问题件-置顶")
                                 <td class="text-muted child-layer-1">
-                                    <button type="button" class="btn btn-sm btn-outline-danger " @click="cancelOnTop($event)" :data-value="orderIssue.top.id" style="opacity: 0.75" v-if="orderIssue.top">
-                                        取消
-                                    </button>
-                                    <button type="button" class="btn btn-sm btn-outline-secondary" @click="OrderIssueOnTop($event)" :data-value="orderIssue.id" style="opacity: 0.75" v-else>
-                                        置顶
-                                    </button>
+                                    <button type="button" class="btn btn-sm btn-outline-danger" @click="cancelOnTop(orderIssue.top.id)" style="opacity: 0.75" v-if="orderIssue.top">取消</button>
+                                    <button type="button" class="btn btn-sm btn-outline-secondary" @click="OrderIssueOnTop(orderIssue.id)" :data-value="orderIssue.id" style="opacity: 0.75" v-else>置顶</button>
                                 </td>
                             @endcan
                             <td class="child-layer-1">
                                 @can('订单管理-问题件-编辑')
-                                    <select class="form-control form-control-sm" :value="orderIssue.rejecting_status" @change="updateOrderIssue(orderIssue,'rejecting_status',$event)">
-                                        <option v-for="item in rejectingStatus" :value="item.name">@{{ item.value }}</option>
-                                    </select>
+                                    <label >
+                                        <select class="form-control form-control-sm" :value="orderIssue.rejecting_status" @change="updateOrderIssue(orderIssue,'rejecting_status',$event)">
+                                            <option v-for="item in rejectingStatus" :value="item.name">@{{ item.value }}</option>
+                                        </select>
+                                    </label>
                                 @else
                                     @{{ orderIssue.rejecting_status }}
                                 @endcan
@@ -224,9 +221,11 @@
 
                         <td class="child-layer-1">
                             @can('订单管理-问题件-编辑')
-                                <select class="form-control form-control-sm" :value="orderIssue.final_status" @change="updateOrderIssue(orderIssue,'final_status',$event)">
-                                    <option v-for="item in finalStatus" :value="item.value">@{{ item.name }}</option>
-                                </select>
+                                <label>
+                                    <select class="form-control form-control-sm" :value="orderIssue.final_status" @change="updateOrderIssue(orderIssue,'final_status',$event)">
+                                        <option v-for="item in finalStatus" :value="item.value">@{{ item.name }}</option>
+                                    </select>
+                                </label>
                             @else
                                 @{{ orderIssue.final_status }}
                             @endcan
@@ -234,7 +233,7 @@
 
                         @cannot('订单管理-问题件-客户不可见')
                         <td class="toptd td-yellow child-layer-2">
-                            <div v-if="orderIssue.remark" class="bg-light-yellow  text-danger top text-left" data-toggle="tooltip" style="opacity: 0.1;position: absolute;z-index: 1">
+                            <div v-if="orderIssue.remark" class="bg-light-yellow  text-danger top text-left position-absolute" data-toggle="tooltip" style="opacity: 0.1;z-index: 1">
                                 置顶备注:@{{ orderIssue.remark }}
                             </div>
                             @{{ orderIssue.created_at }}
@@ -244,8 +243,8 @@
                         <td class="td-yellow child-layer-2">
                             @cannot('订单管理-问题件-客户不可见')
                             @else
-                                <div v-if="orderIssue.remark" class="bg-light-yellow  text-danger top text-left" data-toggle="tooltip" style="opacity: 0.1;position: absolute;z-index: 1">
-                                    置顶备注:@{{ orderIssue.remark }}
+                                <div v-if="orderIssue.top" class="bg-light-yellow  text-danger top text-left" data-toggle="tooltip" style="opacity: 0.1;position: absolute;z-index: 1">
+                                    置顶备注:@{{ orderIssue.top.remark}}
                                 </div>
                             @endcannot
                             @{{ orderIssue.order.created_at }}
@@ -254,19 +253,20 @@
                             <span v-if='orderIssue.order.owner'>@{{ orderIssue.order.owner.name }}</span>
                         </td>
                         <td class="td-yellow child-layer-2">
-                            <template v-if="orderIssue.order.shop">@{{ orderIssue.order.shop.name }}</template>
+                            <span v-if="orderIssue.order.shop">@{{ orderIssue.order.shop.name }}</span>
                         </td>
                         <td class="td-yellow child-layer-2">
-                            <template v-if="orderIssue.order"> @{{ orderIssue.order.client_code }}</template>
+                            <span v-if="orderIssue.order">@{{ orderIssue.order.client_code }}</span>
+                        </td>
                         <td class="td-yellow child-layer-2">
                             <span v-if='orderIssue.order.logistic'>@{{ orderIssue.order.logistic.name }}</span>
                         </td>
-                        <td class=" hide-content p-0 td-yellow child-layer-2" valign="middle" align="center">
+                        <td class=" hide-content p-0 td-yellow child-layer-2 align-center" valign="middle">
                             <div v-if="orderIssue.order">
                                 <span  :class="orderIssue.order.packages.length > 1 ?'collapse ':''" :id="'logisticNumbers'+orderIssue.id" >
                                     <span class="m-0 p-0 d-inline-block" v-for="package in orderIssue.order.packages" >@{{ package.logistic_number }}&nbsp;&nbsp;</span>
                                 </span>
-                                <button v-if="orderIssue.order.packages.length > 1" type="button" class="btn btn-sm btn-outline-primary align-middle mt-1"
+                                <button type="button" class="btn btn-sm btn-outline-primary align-middle mt-1" v-if="orderIssue.order.packages.length > 1"
                                         :id="'logisticNumbersBtn'+orderIssue.id" data-toggle="collapse" :data-target="'#logisticNumbers'+orderIssue.id"
                                         @click="toggleLogisticNumbers(orderIssue.id,orderIssue.order.packages.length)">
                                     分箱@{{ orderIssue.order.packages.length }}件,点击展开
@@ -274,7 +274,7 @@
                             </div>
                         </td>
                         {{--商品明细 开始--}}
-                        <td class="td-yellow p-0 m-0 child-layer-2" v-if="!isShowOrderInfo && index===0" style="width:50px" :rowspan="orderIssues.length">
+                        <td class="td-yellow p-0 m-0 child-layer-2 w-50" v-if="!isShowOrderInfo && index===0" :rowspan="orderIssues.length">
                             <span class="btn btn-outline-secondary "  @click="showOrderInfo" :style="orderIssues.length>4 ?'{height: 200px;line-height: 100px':''" >展开运单列</span>
                         </td>
                         <td class="td-yellow child-layer-2-hide text-wrap text-letter" v-if="isShowOrderInfo" style="max-width: 320px">@{{ orderIssue.order.consignee_name }}</td>
@@ -285,58 +285,69 @@
                         <td class="td-yellow child-layer-2-hide" style="max-width: 400px" v-if="isShowOrderInfo" >
                             <span class="text-wrap m-0 p-0 text-wrap text-letter" style="max-width: 550px">@{{ orderIssue.order.address }}</span>
                         </td>
-                        <td class="td-yellow p-0 child-layer-2-hide" :id="orderIssue.id+'items'" colspan="3" v-if="isShowOrderInfo" :data-value="orderIssue.orderCount = 0" :data-value1='orderIssue.orderPackagecount = 0'>
+                        <td class="td-yellow p-0 child-layer-2-hide" :id="orderIssue.id+'items'" colspan="3" v-if="isShowOrderInfo"  >
                             <div v-if="orderIssue.order">
-                                <table  class="table table-sm m-0" v-if="orderIssue.order.packages"
-                                        :class="orderIssue.order.commodityPackages > 1? 'collapse' : ''" :id="'order'+orderIssue.id">
+                                <table  class="table table-sm m-0" v-if="orderIssue.order.packages" :class="orderIssue.order.type_numbers > 1? 'collapse' : ''" :id="'order'+orderIssue.id">
                                     <template v-for="packages in orderIssue.order.packages">
-                                        <tr v-for="item in packages.commodities" class="text-center" :data-value="orderIssue.orderCount += 1" align="center" v-if="item.commodity" @click="removeFocusing($event)">
+                                        <tr v-for="item in packages.commodities" class="text-center align-center" v-if="item.commodity" @click="removeFocusing($event)">
                                             <td >@{{ item.commodity.sku }}</td>
                                             <td>
                                                 <p class="text-truncate text-primary m-0 p-0 tooltipTarget" style="width: 100px;cursor:pointer;text-decoration: underline" title="双击展开"  @dblclick="nowrapText($event)">@{{ item.commodity.name }}</p>
                                                 <p class="text-nowrap m-0 p-0 tooltipTarget" style="display: none;cursor:pointer" @dblclick="truncateText($event)" title="双击收起">@{{ item.commodity.name }}</p>
                                             </td>
-                                            <td  >@{{ item.amount }}</td>
+                                            <td>@{{ item.amount }}</td>
                                         </tr>
                                     </template>
                                 </table>
-                                <button v-if="orderIssue.order.commodityPackages > 1" type="button" class="btn btn-sm btn-outline-primary mt-1" :id="'orderBtn'+orderIssue.id"   @click="toggleOrder(orderIssue.id,orderIssue.orderIssue.order.amount)" data-toggle="collapse" :data-target="'#order'+orderIssue.id">
-                                    商品@{{ orderIssue.order.amount }}件,点击展开
+                                <button v-if="orderIssue.order.type_numbers > 1" type="button" class="btn btn-sm btn-outline-primary mt-1" :id="'orderBtn'+orderIssue.id" @click="toggleOrder(orderIssue.id,orderIssue.order.amounts)" data-toggle="collapse" :data-target="'#order'+orderIssue.id">
+                                    商品@{{ orderIssue.order.amounts }}件,点击展开
                                 </button>
                             </div>
                         </td>
 
                         <td class="text-muted child-layer-3-hide" v-if="isShowRejectedBill">
                             @can('订单管理-问题件-编辑')
-                                <input type="text" class="form-control form-control-sm" :value="orderIssue.logistic_number_return" @change="changeRejectedBill(orderIssue,$event)">
+                                <div class="form-inline">
+                                    <div class="form-group">
+                                        {{--添加--}}
+                                        <input type="text" class="form-control form-text form-control-sm mr-1">
+                                        <button class="btn btn-sm btn-primary" @click="joinRejectedBill(orderIssue,$event)">添加</button>
+                                    </div>
+                                </div>
+                                <div class="form-inline" v-for="rejected_bill in orderIssue.rejected_bills">
+                                    {{--修改--}}
+                                    <input type="text" class="form-control form-control-sm mt-1 mr-1" :value="rejected_bill.logistic_number_return" @change="reviseJoinRejectedBill(orderIssue,rejected_bill.logistic_number_return,$event)" @focus="displayDelBtn(true,$event)" @blur="displayDelBtn(false,$event)">
+                                    {{--删除--}}
+                                    <button type="button" class="btn btn-sm btn-outline-danger mt-1 d-none" @click="unJoinRejectedBill(orderIssue,rejected_bill.logistic_number_return)">删</button>
+                                </div>
                             @else
-                                @{{ orderIssue.logistic_number_return }}
+                                <span v-for="rejected_bill in orderIssue.rejected_bills">
+                                    <span class="d-inline-block w-100">@{{ rejected_bill.logistic_number_return }}</span>
+                                </span>
                             @endcan
                         </td>
 
                         <td class="p-0 m-0 child-layer-3" v-if="!isShowRejectedBill && index === 0 " style="width:50px;" :rowspan="orderIssues.length" >
-                            <span class="btn  btn-outline-secondary "  @click="showRejectedBill"  :style="orderIssues.length>4 ?'{height: 200px;line-height: 100px':''" >展开退单列</span>
+                            <span class="btn btn-outline-secondary"  @click="showRejectedBill"  :style="orderIssue.length>4 ?'{height: 200px;line-height: 100px':''" >展开退单列</span>
                         </td>
 
-                        <td class="p-0 child-layer-3-hide" :id="orderIssue.id+'rejectedBill'" valign="middle" align="center" colspan="5" v-if="isShowRejectedBill">
+                        <td class="p-0 child-layer-3-hide align-center" :id="orderIssue.id+'rejectedBill'" colspan="5" v-if="isShowRejectedBill">
                             <div v-if="orderIssue.rejected_bill" class="m-0 p-0">
-                                <table v-if="orderIssue.rejected_bill.items" class="table table-sm  m-0" :class="orderIssue.rejected_bill.items.length > 1 ? 'collapse' : '' " :id="'rejectedBill'+orderIssue.id"
-                                       :data-value="orderIssue.rejectedCount = 0">
-                                    <tr v-for="item in orderIssue.rejected_bill.items" @click="removeFocusing($event)"
-                                        :data-value="orderIssue.rejected_bill.sum += item.amount" align="center">
-                                        <td style="min-width: 75px" >@{{ item.barcode_goods }}</td>
+                                <table v-if="orderIssue.rejected_bill.items" class="table table-sm  m-0" :class="orderIssue.rejected_bill.items.length > 1 ? 'collapse' : '' " :id="'rejectedBill'+orderIssue.id">
+                                    <tr class="align-center" v-for="item in orderIssue.rejected_bill.items" @click="removeFocusing($event)" v-show="isShowRejectedBill">
+                                        <td style="min-width: 75px">@{{ item.barcode_goods }}</td>
                                         <td style="min-width: 100px" >
                                             <div class="text-truncate text-primary tooltipTarget" style="width: 100px;cursor:pointer;text-decoration: underline" title="双击展开" @dblclick="nowrapText($event)">@{{ item.name_goods }}</div>
                                             <div class="text-nowrap m-0 p-0 tooltipTarget"  style="display: none;cursor:pointer" @dblclick="truncateText($event)" title="双击收起">@{{ item.name_goods }}</div>
                                         </td>
-                                        <td style="min-width: 50px" :data-value="orderIssue.rejectedCount += item.amount">@{{ item.amount }}</td>
-                                        <td style="min-width: 50px" >@{{ item.quality_label }}</td>
-                                        <td style="min-width: 100px" >@{{ item.remark }}</td>
+                                        <td style="min-width: 50px">@{{ item.amount }}</td>
+                                        <td style="min-width: 50px">@{{ item.quality_label }}</td>
+                                        <td style="min-width: 100px">@{{ item.remark }}</td>
                                     </tr>
                                 </table>
-                                <button v-if="orderIssue.rejected_bill.items.length >  1" type="button" class="btn btn-sm btn-outline-primary   align-middle mt-1" :id="'rejectedBillBtn'+orderIssue.id"
+                                <button v-if="orderIssue.rejected_bill_type_numbers>1" type="button" class="btn btn-sm btn-outline-primary align-middle mt-1" :id="'rejectedBillBtn'+orderIssue.id"
                                         data-toggle="collapse" :data-target="'#rejectedBill'+orderIssue.id" @click="toggleRejectedBill(orderIssue.id,orderIssue.rejectedCount)">
-                                    商品@{{ orderIssue.rejectedCount }}件,点击展开
+                                    商品@{{ orderIssue.rejected_bill_amounts }}件,点击展开
                                 </button>
                             </div>
                         </td>
@@ -363,7 +374,7 @@
                             @endcan
                         </td>
 
-                        <td class=" m-0 p-0 log-td child-layer-3" valign="middle" align="center" v-on:mouseover="showAddBtn($event)" v-on:mouseleave="hideAddBtn($event)" colspan="4">
+                        <td class=" m-0 p-0 log-td child-layer-3  valign-middle align-center" v-on:mouseover="showAddBtn($event)" v-on:mouseleave="hideAddBtn($event)" colspan="4">
                             @can('订单管理-问题件-处理结果添加')
                             <div class="addLogDiv row m-0 p-0 form-group" :id="'AddLog_'+orderIssue.id" style="display: none;">
                                 <input type="hidden" name="id" :value="orderIssue.id">
@@ -378,10 +389,8 @@
                             </div>
                             @endcan
                             <template v-if="orderIssue.logs && orderIssue.logs.length > 0" class="p-0 m-0 ">
-                                <table class="table table-sm p-0 m-0 " :id="'logs'+orderIssue.id" :data-value="orderIssue.logShow = true">
-                                    <tr style="position:static" align="center" v-for="(log,index) in orderIssue.logs"
-                                        :class="(index > 1 && orderIssue.logShow) ? 'd-none':''"
-                                        @click="removeFocusing($event)"
+                                <table class="table table-sm p-0 m-0 " :id="'logs'+orderIssue.id">
+                                    <tr class="align-center position-static" v-for="(log,index) in orderIssue.logs" v-show="index > 1 && orderIssue.logShow" @click="removeFocusing($event)"
                                         v-on:mouseover="showDelBtn($event)" v-on:mouseleave="hideDelBtn($event)" >
                                         <td style="min-width: 200px">@{{ log.content }}</td>
                                         <td class="text-muted" style="min-width: 120px">@{{ log.user.name }}</td>
@@ -393,8 +402,7 @@
                                         @endcan
                                     </tr>
                                 </table>
-                                <button type="button" class="btn btn-sm btn-outline-primary align-middle mt-1" v-if="orderIssue.logs.length > 2"
-                                        @click="toggleLogs(orderIssue,$event)" :data-value="orderIssue.logs.length" :data-count="orderIssue.logShow" >
+                                <button type="button" class="btn btn-sm btn-outline-primary align-middle mt-1" v-if="orderIssue.logs.length > 2" @click="toggleLogs(orderIssue,$event)">
                                     记录共@{{ orderIssue.logs.length }}条,点击展开
                                 </button>
                             </template>
@@ -412,13 +420,10 @@
                                 @else
                                     @{{ orderIssue.second_client_no }}
                                 @endcan
-
                             </td>
                             <td class="child-layer-3-hide" v-if="isShowSecondOrderInfo">
                                 <span v-if="orderIssue.second_order" class="p-0">
-                                    <span v-if="orderIssue.second_order.logistic">
-                                        @{{ orderIssue.second_order.logistic.name }}
-                                    </span>
+                                    <span v-if="orderIssue.second_order.logistic">@{{ orderIssue.second_order.logistic.name }}</span>
                                 </span>
                             </td>
                             <td class="log-td p-0 child-layer-3-hide" v-if="isShowSecondOrderInfo" v-on:mouseover="edit.orderIssue.id=orderIssue.id" v-on:mouseleave="edit.orderIssue.id = null">
@@ -433,13 +438,10 @@
                                 </div>
 
                                 <div v-if="orderIssue.second_order !== null">
-                                    <div class="text-center m-0" :id="'secondOrderNumbers'+orderIssue.id"
-                                         :class="orderIssue.seconderCount > 1 ? 'collapse':''"
-                                         :data-value="orderIssue.seconderCount = 0">
-                                        <p class="m-0 p-0  text-muted " v-for="package in orderIssue.second_order.packages"
-                                           :data-value="orderIssue.seconderCount +=1">@{{ package.logistic_number }}</p>
+                                    <div class="text-center m-0" :id="'secondOrderNumbers'+orderIssue.id" :class="orderIssue.seconderCount > 1 ? 'collapse':''">
+                                        <p class="m-0 p-0  text-muted " v-for="package in orderIssue.second_order.packages">@{{ package.logistic_number }}</p>
                                     </div>
-                                    <button v-if="orderIssue.seconderCount > 1" type="button"
+                                    <button v-if="orderIssue.second_order.packages.length > 1" type="button"
                                             class="btn btn-sm btn-outline-primary align-middle mt-1"
                                             data-toggle="collapse"
                                             :id="'secondOrderNumbersBtn'+orderIssue.id"
@@ -454,27 +456,26 @@
                             </td>
                             <td class="child-layer-3-hide p-0" colspan="3" v-if="isShowSecondOrderInfo">
                                 <template v-if="orderIssue.second_order!==null" class=" p-0">
-                                    <div class="m-0 p-0" :class="orderIssue.secondeOrderCount > 1 ? 'collapse':''"
-                                         :id="'secondOrder'+orderIssue.id">
-                                        <table class="table table-sm  m-0 " :data-count="orderIssue.secondeOrderCount = 0" :data-value="orderIssue.secondeOrderItems = 0">
+                                    <div class="m-0 p-0" :class="orderIssue.second_order.type_numbers > 1 ? 'collapse':''" :id="'secondOrder'+orderIssue.id">
+                                        <table class="table table-sm  m-0 ">
                                             <template v-for="packages in orderIssue.second_order.packages">
-                                                <tr v-for="item in packages.commodities" :data-value="orderIssue.secondeOrderCount += 1" v-if="item.commodity" >
-                                                    <td >@{{ item.commodity.sku }}</td>
-                                                    <td >
+                                                <tr v-for="item in packages.commodities" v-if="item.commodity" >
+                                                    <td>@{{ item.commodity.sku }}</td>
+                                                    <td>
                                                         <div class="text-truncate text-primary tooltipTarget" style="width: 100px;cursor:pointer;text-decoration: underline" title="双击展开" @dblclick="nowrapText($event)">@{{ item.commodity.name }}</div>
                                                         <div class="text-nowrap tooltipTarget"  style="display: none;cursor:pointer" @dblclick="truncateText($event)" title="双击收起">@{{ item.commodity.name }}</div>
                                                     </td>
-                                                    <td :data-value="orderIssue.secondeOrderItems+=item.amount">@{{ item.amount }}</td>
+                                                    <td>@{{ item.amount }}</td>
                                                 </tr>
                                             </template>
                                         </table>
                                     </div>
                                     <button type="button" class="btn btn-sm btn-outline-primary  align-middle mt-1"  data-toggle="collapse"
-                                            v-if="orderIssue.secondeOrderCount > 0"
+                                            v-if="orderIssue.second_order.amounts > 0"
                                             :id="'secondOrderBtn'+orderIssue.id"
                                             :data-target="'#secondOrder'+orderIssue.id"
                                             @click="toggleSecond(orderIssue.id,orderIssue.secondeOrderItems)">
-                                        商品@{{ orderIssue.secondeOrderItems }}件,点击展开
+                                        商品@{{ orderIssue.second_order.amounts }}件,点击展开
                                     </button>
                                 </template>
                             </td>
@@ -532,9 +533,7 @@
                                     <a :href="'edit/'+orderIssue.id"  class="btn btn-sm btn-outline-primary" target="_blank">改</a>
                                 @endcan
                                 @can('订单管理-问题件-删除')
-                                    <button type="button" class="btn btn-sm btn-outline-danger" @click="deleteOrderIssue($event)" :data-value="orderIssue.id">
-                                        删
-                                    </button>
+                                    <button type="button" class="btn btn-sm btn-outline-danger" @click="deleteOrderIssue(orderIssue.id)" >删</button>
                                 @endcan
                             </td>
                         @endcannot
@@ -559,12 +558,8 @@
                         <textarea id="logsContent" class="form-control" v-model="edit.batchStoreLogs"></textarea>
                     </div>
                     <div class="modal-footer">
-                        <button type="button" class="btn btn-secondary" data-dismiss="modal" @click="edit.batchStoreLogs=''">
-                            取消
-                        </button>
-                        <button type="button" class="btn btn-primary" data-dismiss="modal" @click="batchStoreLogs">
-                            确认
-                        </button>
+                        <button type="button" class="btn btn-secondary" data-dismiss="modal" @click="edit.batchStoreLogs=''">取消</button>
+                        <button type="button" class="btn btn-primary" data-dismiss="modal" @click="batchStoreLogs">确认</button>
                     </div>
                 </div>
             </div>
@@ -584,15 +579,11 @@
                     </div>
                     <div class="modal-body">
                         <p>是否删除当前订单问题件?</p>
-                        <input type="hidden" id="deleteId" class="form-control"/>
+                        <input type="hidden" id="deleteId" class="form-control">
                     </div>
                     <div class="modal-footer">
-                        <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>
+                        <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>
@@ -604,8 +595,7 @@
                 <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">
+                        <button type="button" class="close" data-dismiss="modal" aria-label="Close" @click="changeRemark">
                             <span aria-hidden="true">&times;</span>
                         </button>
                     </div>
@@ -617,9 +607,7 @@
                         </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-secondary" data-dismiss="modal" @click="changeRemark">关闭</button>
                         <button type="button" class="btn btn-sm btn-primary" @click="submitOnTop">提交</button>
                     </div>
                 </div>
@@ -730,10 +718,12 @@
                 },
             },
             created(){
+                let _this = this;
                 $.each(this.orderIssues,function(i,orderIssue){
-                    this.regroupOrder(orderIssue.order);
-                    this.regroupOrder(orderIssue.second_order);
-                    this.regroupRejectedBill(orderIssue);
+                    _this.regroupOrder(orderIssue.order);
+                    _this.regroupOrder(orderIssue.second_order);
+                    _this.regroupRejectedBill(orderIssue);
+                    _this.regroupLogs(orderIssue);
                 });
             },
             mounted: function () {
@@ -880,6 +870,14 @@
                     orderIssue.rejected_bill_amounts = amounts;
                     orderIssue.rejected_bill_type_numbers = type_numbers;
                 },
+                regroupLogs(orderIssue){
+                    if(orderIssue.logs && orderIssue.logs.length > 2) orderIssue.logShow = true;
+                    else orderIssue.logShow = false;
+                },
+                displayDelBtn(bool,e){
+                    if(bool)$(e.target).next().removeClass('d-none');
+                    else $(e.target).next().addClass('d-none');
+                },
                 selectedColor(orderno,e) {
                     $('.table-body').removeClass('focusing')
                     if (orderno === this.selectedStyle) {
@@ -889,12 +887,7 @@
                     this.selectedStyle = orderno;
                     $(e.target).parent('tr').addClass('focusing')
                 },
-                editOrderIssue($event) {
-                    let id = $($event.target).attr('data-value');
-                    window.location.href = "{{url('order/issue/edit')}}" + '/' + id;
-                },
-                deleteOrderIssue($event) {
-                    let id = $($event.target).attr('data-value');
+                deleteOrderIssue(id) {
                     $('#deleteId').val(id);
                     $('#alertModal').modal('show');
                 },
@@ -905,12 +898,10 @@
                     let id = $('#deleteId').val();
                     let data = {id: id};
                     axios.post('{{url('apiLocal/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 == id) {
+                                if (_this.orderIssues[i].id == id) {
                                     _this.orderIssues.splice(i, 1);
                                     _this.deleteId = 0;
                                     break;
@@ -918,44 +909,40 @@
                             }
                             tempTip.setDuration(2000);
                             tempTip.showSuccess('删除成功');
-                        } else {
-                            tempTip.setDuration(2500);
-                            tempTip.show('删除失败,错误:' + res.data.fail_info);
+                            return;
                         }
+                        tempTip.setDuration(2500);
+                        tempTip.show('删除失败,错误:' + res.data.fail_info);
                     }).catch(function (err) {
-                        tempTip.setDuration(4000);
                         tempTip.cancelWaitingTip();
+                        tempTip.setDuration(4000);
                         tempTip.show('网络错误:' + err);
                     });
+                    this.changeDeleteId();
                 },
                 changeDeleteId() {
                     $('#deleteId').val('');
                 },
-                cancelOnTop(event) {
-                    let id = $(event.target).attr('data-value')
-                    let data = {id: id};
-                    if (data === '' || data === null) {
-                        return;
-                    }
-                    axios.post('{{url('apiLocal/order/issue/onTop/cancelTop')}}', data).then(function (res) {
-                        if (res.data.success) {
-                            tempTip.setDuration(2000);
-                            tempTip.showSuccess('订单问题件取消置顶成功!');
-                            window.location.reload();
-                        } else {
+                cancelOnTop(id) {
+                    axios.post('{{url('apiLocal/order/issue/onTop/cancelTop')}}', {id:id})
+                        .then(function (res) {
+                            if (res.data.success) {
+                                tempTip.setDuration(2000);
+                                tempTip.showSuccess('订单问题件取消置顶成功!');
+                                window.location.reload();
+                                return;
+                            }
                             tempTip.setDuration(2500);
                             tempTip.show(res.data.fail_info);
-                        }
-                    }).catch(function (err) {
-                        tempTip.setDuration(4000);
-                        tempTip.show('网络错误:' + err);
-                    });
+                        }).catch(function (err) {
+                            tempTip.setDuration(4000);
+                            tempTip.show('网络错误:' + err);
+                        });
                 },
                 changeRemark() {
                     $('#remark').removeClass('is-invalid');
                 },
-                OrderIssueOnTop(event) {
-                    let id = $(event.target).attr('data-value');
+                OrderIssueOnTop(id) {
                     $("#onTopId").val(id);
                     $("#exampleModal").modal('show');
                 },
@@ -964,34 +951,31 @@
                     let remark = $("#remark").val();
                     let id = $("#onTopId").val();
                     if (remark === '' || remark == null) {
-                        $("#remark").focus();
-                        $('#remark').addClass('is-invalid');
-                    } else {
-                        let data = {id: id, remark: remark};
-                        axios.post('{{url('apiLocal/order/issue/onTop/store')}}', data).then(function (res) {
+                        $('#remark').focus().addClass('is-invalid');
+                        return;
+                    }
+                    axios.post('{{url('apiLocal/order/issue/onTop/store')}}', {id: id, remark: remark})
+                        .then(function (res) {
                             $("#exampleModal").modal('hide');
                             if (res.data.success) {
-                                _this.orderIssues.forEach(function (orderIssue) {
-                                    if (orderIssue.id == id) {
-                                        if (orderIssue.top == null) {
-                                            orderIssue.top = {};
-                                        }
-                                        orderIssue.top.remark = 'remark';
+                                $.each(_this.orderIssues,function(i,orderIssue){
+                                    if(orderIssue.id == id){
+                                        orderIssue.top = res.data.data;
+                                        _this.orderIssues.unshift(_this.orderIssues.splice(i,1).shift());
                                     }
-                                })
+                                });
                                 tempTip.setDuration(2500);
                                 tempTip.showSuccess('置顶成功');
-                                window.location.href = window.location.href;
-                            } else {
-                                tempTip.setDuration(2500);
-                                tempTip.show(res.data.fail_info);
+                                window.location.reload();
+                                return;
                             }
+                            tempTip.setDuration(2500);
+                            tempTip.show(res.data.fail_info);
                         }).catch(function (err) {
                             $("#exampleModal").modal('hide');
                             tempTip.setDuration(4000);
                             tempTip.show('网络错误:' + err);
                         });
-                    }
                 },
                 orderIssueExport(sign) {
                     let url = '{{url('order/issue/export')}}';
@@ -1007,69 +991,62 @@
                         let _this = this;
                         if (this.checkData.length === 0) {
                             tempTip.show('没有勾选订单');
-                        } else {
-                            let orderNos = [];
-                            this.orderIssues.forEach(function (item) {
-                                if (_this.checkData.includes(item.id)) {
-                                    let logisticNumbers = item.order.logisticNumbers;
-                                    if (logisticNumbers.length > 0) {
-                                        orderNos =  orderNos.concat(logisticNumbers);
-                                    }
+                            return;
+                        }
+                        let orderNos = [];
+                        $.each(this.orderIssues,function(index,orderIssue){
+                            if (_this.checkData.includes(orderIssue.id)) {
+                                if(orderIssue.order.packages){
+                                    $.each(orderIssue.order.packages,function(i,package){
+                                        orderNos.push(package.logistic_number);
+                                    });
                                 }
-                            })
-                            if (orderNos.length === 0) {
-                                tempTip.setDuration(2200);
-                                tempTip.show('勾选的问题件没有对应的快递单号');
-                                return;
                             }
-                            let p = $('<textarea id="copy" />'+orderNos.join('\n')+'</textarea>');
-                            p.attr('opacity', 0);
-                            $('body').append(p);
-                            let p_ele = document.getElementById('copy');
-                            p_ele.select();
-                            document.execCommand("Copy");
-                            p.remove();
-                            tempTip.setDuration(1200);
-                            tempTip.showSuccess('复制快递单号成功');
+                        });
+                        if (orderNos.length === 0) {
+                            tempTip.setDuration(2200);
+                            tempTip.show('勾选的问题件没有对应的快递单号');
+                            return;
                         }
+                        let p = $('<textarea class="d-none" id="copy" />'+orderNos.join('\n')+'</textarea>');
+                        $('body').append(p);
+                        let p_ele = document.getElementById('copy');
+                        p_ele.select();
+                        document.execCommand("Copy");
+                        p.remove();
+                        tempTip.setDuration(1200);
+                        tempTip.showSuccess('复制快递单号成功');
                     }catch(err){
                         tempTip.setDuration(2000);
                         tempTip.show('复制快递单号失败'+err);
                     }
                 },
                 checkAll(e) {
-                    if (e.target.checked) {
+                    if(!e.target.checked)this.checkData = [];
+                    else{
                         this.orderIssues.forEach((el, i) => {
-                            if (this.checkData.indexOf(el.id) == '-1') {
-                                this.checkData.push(el.id);
-                            }
+                            if (this.checkData.indexOf(el.id) === -1) this.checkData.push(el.id);
                         });
-                    } else {
-                        this.checkData = [];
                     }
                 },
                 endOrderIssue() {
-                    if (this.checkData.length === 0) {
-                        tempTip.show('没有勾选订单');
+                    if(this.checkData.length!==0){
+                        this.endOrderIssues(this.checkData)
                         return;
                     }
-                    let _this = this;
-                    let ids = _this.checkData;
-                    this.endOrderIssues(ids)
+                    tempTip.show('没有勾选订单');
                 },
-                disposeOrderIssue(e,orderIssue) {
-                    let _this = this;
-                    let id = $(e.target).attr('data-value');
-                    let data = {id: id};
+                disposeOrderIssue(orderIssue) {
+                    let data = {id: orderIssue.id};
                     axios.post('{{url('apiLocal/order/issue/disposeOrderIssue')}}', data).then(function (res) {
                         if (res.data.success) {
                             orderIssue.is_new_rejecting = '已处理'
                             tempTip.setDuration(3000);
                             tempTip.showSuccess('订单已处理');
-                        } else {
-                            tempTip.setDuration(3000);
-                            tempTip.show(res.data.fail_info);
+                            return;
                         }
+                        tempTip.setDuration(3000);
+                        tempTip.show(res.data.fail_info);
                     }).catch(function (err) {
                         tempTip.setDuration(4000);
                         tempTip.show('网路链接异常' + err);
@@ -1081,16 +1058,19 @@
                 endOrderIssues(ids){
                     let data = {ids:ids}
                     let orderIssues = {};
+                    let _this = this;
                     for (let i = 0; i < this.orderIssues.length; i++) {
                         let id = this.orderIssues[i]['id']
                         if(ids.includes(id))orderIssues[id] = this.orderIssues[i];
-
                     }
                     axios.post('{{url('apiLocal/order/issue/endOrderIssues')}}',data).then(function(response){
                         if(response.data.success){
                             tempTip.setDuration(3000)
                             tempTip.showSuccess('订单已处理')
-                            let logs = response.data.logs
+                            let logs = response.data.logs;
+                            $.each(response.data.logs,function(i,log){
+
+                            });
                             for (let i = 0; i < logs.length; i++) {
                                 let log = logs[i]
                                 let orderIssue = orderIssues[log['order_issue_id']]
@@ -1099,10 +1079,10 @@
                                     orderIssue['final_status'] = '已解决'
                                 }
                             }
-                        }else{
-                            tempTip.setDuration(3000)
-                            tempTip.show(response.data.fail_info)
+                            return ;
                         }
+                        tempTip.setDuration(3000)
+                        tempTip.show(response.data.fail_info)
                     }).catch(function(error){
                         tempTip.setDuration(4000)
                         tempTip.show('网路链接异常' + error);
@@ -1124,10 +1104,10 @@
                             $('#' + id).hide();
                             tempTip.setDuration(2000);
                             tempTip.showSuccess('添加成功');
-                        } else {
-                            tempTip.setDuration(3000);
-                            tempTip.show(res.data.fail_info);
+                            return;
                         }
+                        tempTip.setDuration(3000);
+                        tempTip.show(res.data.fail_info);
                     }).catch(function (err) {
                         tempTip.setDuration(4000);
                         tempTip.show('网络异常:' + err);
@@ -1140,20 +1120,17 @@
                         if (res.data.success) {
                             _this.orderIssues.forEach(function (orderIssue) {
                                 if (orderIssue.id == OrderIssueId) {
-                                    let logs = orderIssue.logs;
-                                    logs.forEach(function (item, index) {
-                                        if (item.id == id) {
-                                            logs.splice(index, 1);
-                                        }
+                                    orderIssue.logs.forEach(function (item, index) {
+                                        if (item.id == id)orderIssue.logs.splice(index, 1);
                                     });
                                 }
                             })
                             tempTip.setDuration(2000);
                             tempTip.showSuccess('删除成功');
-                        } else {
-                            tempTip.setDuration(2000);
-                            tempTip.show('删除失败:' + res.data.fail_info);
+                            return;
                         }
+                        tempTip.setDuration(2000);
+                        tempTip.show('删除失败:' + res.data.fail_info);
                     }).catch(function (err) {
                         tempTip.setDuration(4000);
                         tempTip.show('网络异常:' + err);
@@ -1216,9 +1193,7 @@
                 toggleLogs(orderIssue, e) {
                     if ( orderIssue.logShow  === false) {
                         $(e.target).text("记录共" + $(e.target).attr('data-value') + "条,点击展开");
-                        $('#logs'+orderIssue.id).find('tr:gt(1)').addClass('d-none');
                     } else {
-                        $('#logs'+orderIssue.id).find('tr').removeClass('d-none');
                         $(e.target).text('点击收起');
                     }
                     orderIssue.logShow = !orderIssue.logShow;
@@ -1279,12 +1254,10 @@
                 },
                 updateOrderIssue(orderIssue,column,e){
                     let value = $(e.target).val()
-                    if(column==='imported_status'){
-                        value = '导入已梳理'
-                    }
+                    if(column==='imported_status')value = '导入已梳理'
                     if(column === 'final_status' && value === '已解决'){
                         this.endOrderIssueById(orderIssue['id'])
-                        return ;
+                        return;
                     }
                     let data = {id:orderIssue['id'],column:column,value:value}
                     axios.post('{{url("apiLocal/order/issue/updateColumn")}}',data).then(function(response){
@@ -1292,10 +1265,10 @@
                             orderIssue[column] = data.value
                             tempTip.setDuration(2000)
                             tempTip.showSuccess('修改成功')
-                        }else{
-                            tempTip.setDuration(3000)
-                            tempTip.show('修改失败:'+response.data.fail_info)
+                            return;
                         }
+                        tempTip.setDuration(3000)
+                        tempTip.show('修改失败:'+response.data.fail_info)
                     }).catch(function(error){
                         tempTip.setDuration(3000)
                         tempTip.show('修改出现异常:'+error)
@@ -1314,16 +1287,14 @@
                         if(response.data.success){
                             for (let index = _this.orderIssues.length-1; index >= 0 ; index--) {
                                 let item = _this.orderIssues[index]
-                                if(_this.checkData.includes(item.id)){
-                                    _this.orderIssues.splice(index,1)
-                                }
+                                if(_this.checkData.includes(item.id))_this.orderIssues.splice(index,1)
                             }
                             _this.checkData = []
                             tempTip.setDuration(2000)
                             tempTip.showSuccess('删除成功')
-                        }else{
-                            tempTip.setDuration('删除失败')
+                            return;
                         }
+                        tempTip.setDuration('删除失败')
                     }).catch(function(error){
                         tempTip.setDuration(3000)
                         tempTip.show('删除异常:'+error)
@@ -1363,37 +1334,6 @@
                         tempTip.show('处理结果添加异常:'+error)
                     })
                 },
-                changeRejectedBill(orderIssue,e){
-                    let logistic_number_return = $(e.target).val()
-                    if(orderIssue['logistic_number_return'] === logistic_number_return){
-                        return;
-                    }
-                    let data = {id:orderIssue['id'],logisticNumberReturn:logistic_number_return}
-                    axios.post('{{url('apiLocal/order/issue/updateLogisticNumberReturn')}}',data).then(function(response){
-                        if(response.data.success){
-                            orderIssue['logistic_number_return'] = logistic_number_return
-                            orderIssue['rejected_bill'] = response.data.rejectedBill
-                            orderIssue['rejecting_status'] = response.data.rejectingStatus
-                            orderIssue.is_new_rejecting = '有'
-                            tempTip.setDuration(2000)
-                            tempTip.showSuccess('修改成功')
-                        }else{
-                            if(response.data.message){
-                                orderIssue['logistic_number_return'] = logistic_number_return
-                                orderIssue.is_new_rejecting = '无'
-                                orderIssue.rejected_bill = null
-                                orderIssue.finalStatus = '未退回'
-                                tempTip.okWindow(response.data.message,'确认')
-                            }else{
-                                tempTip.setDuration(3000)
-                                tempTip.show('修改失败:'+response.data.fail_info)
-                            }
-                        }
-                    }).catch(function(error){
-                        tempTip.setDuration(3000)
-                        tempTip.show('修改异常:'+error)
-                    })
-                },
                 editSecondClientNo(orderIssue,e){
                     let value = $(e.target).val()
                     let data = {id:orderIssue.id,secondClientNo:value}
@@ -1451,6 +1391,7 @@
                             tempTip.setDuration(2000)
                             tempTip.showSuccess('添加成功')
                             if(response.data.order != null){
+                                _this.regroupOrder(response.data.order);
                                 orderIssue.second_order = response.data.order
                                 orderIssue.second_client_no = response.data.order.client_code
                             }
@@ -1489,11 +1430,11 @@
                                 if(_this.checkData.includes(item.id)){
                                     item.imported_status='导入已处理'
                                 }
-                            })
-                        }else{
-                            tempTip.setDuration(2000)
-                            tempTip.show(response.data.fail_info)
+                            });
+                            return;
                         }
+                        tempTip.setDuration(2000)
+                        tempTip.show(response.data.fail_info)
                     }).catch(function(error){
                         tempTip.setDuration(2000)
                         tempTip.show('处理导入出现异常'+error)
@@ -1517,10 +1458,10 @@
                                 tempTip.setDuration(2000);
                                 tempTip.showSuccess('确认成功');
                                 _this.orderIssuesEdit(data.ids,'finance_confirm','是');
-                            }else{
-                                tempTip.setDuration(2000);
-                                tempTip.show(response.data.error);
+                                return;
                             }
+                            tempTip.setDuration(2000);
+                            tempTip.show(response.data.error);
                         }).catch(function(error){
                             tempTip.cancelWaitingTip();
                             tempTip.setDuration(2000);
@@ -1559,6 +1500,98 @@
                             tempTip.setDuration(2000);
                             tempTip.show(error);
                         });
+                },
+                joinRejectedBill(orderIssue,e){
+                    let logistic_number = $(e.target).val();
+                    if(logistic_number===null){
+                        tempTip.show('请输入需要关联的退回单号');
+                        return;
+                    }
+                    let _this = this;
+                    axios.post('{{url('apiLocal/order/issue/rejectedBill/join')}}', {id:orderIssue.id,logistic_number_return})
+                        .then(function(response){
+                            if(response.data.success){
+                                tempTip.setDuration(2000);
+                                tempTip.showSuccess('关联成功');
+                                if(response.data.data){
+                                    if(orderIssue.rejected_bills===null)orderIssue.rejected_bills=[];
+                                    orderIssue.rejected_bills.push(response.data.data);
+                                    _this.regroupRejectedBill(orderIssue);
+                                }
+                                return;
+                            }
+                            tempTip.setDuration(2000);
+                            tempTip.show(response.data.error);
+                        })
+                        .catch(function(error){
+                            tempTip.cancelWaitingTip();
+                            tempTip.setDuration(2000);
+                            tempTip.show(error);
+                        });
+                },
+                unJoinRejectedBill(orderIssue,logistic_number){
+                    console.log(orderIssue,logistic_number);
+                    if(logistic_number===null)return;
+                    let _this = this;
+                    axios.post('{{url('apiLocal/order/issue/rejectedBill/unJoin')}}', {id:orderIssue.id,logistic_number_return})
+                        .then(function(response){
+                            if(response.data.success){
+                                tempTip.setDuration(2000);
+                                tempTip.showSuccess('取消');
+                                if(response.data.data){
+                                    if(orderIssue.rejected_bills===null)return;
+                                    $.each(orderIssue.rejected_bills,function(i,rejecetd_bill){
+                                        if(rejecetd_bill.logistic_number_return === logistic_number){
+                                            orderIssue.rejected_bills.splice(i,1);
+                                            _this.regroupRejectedBill(orderIssue);
+                                            return;
+                                        }
+                                    });
+                                }
+                                return;
+                            }
+                            tempTip.setDuration(2000);
+                            tempTip.show(response.data.error);
+                        })
+                        .catch(function(error){
+                            tempTip.cancelWaitingTip();
+                            tempTip.setDuration(2000);
+                            tempTip.show(error);
+                        });
+                },
+                reviseJoinRejectedBill(orderIssue,logistic_number,e){
+                    let logistic_number_update = $(e.target).val();
+                    if(logistic_number===null || logistic_number_update===null){
+                        tempTip.show('请输入需要关联的退回单号');
+                        return;
+                    }
+                    let _this = this;
+                    let data = {id:orderIssue.id,logistic_number_return:logistic_number,logistic_number_return_update:logistic_number_update};
+                    axios.post('{{url('apiLocal/order/issue/rejectedBill/reviseJoin')}}', data)
+                        .then(function(response){
+                            if(response.data.success){
+                                tempTip.setDuration(2000);
+                                tempTip.showSuccess('修改关联');
+                                if(response.data.data){
+                                    $.each(orderIssue.rejected_bills,function(i,rejecetd_bill){
+                                        if(rejecetd_bill.logistic_number_return === logistic_number){
+                                            orderIssue.rejected_bills.splice(i,1);
+                                            orderIssue.rejected_bills.push(response.data.data);
+                                            _this.regroupRejectedBill(orderIssue);
+                                            return;
+                                        }
+                                    });
+                                }
+                                return;
+                            }
+                            tempTip.setDuration(2000);
+                            tempTip.show(response.data.error);
+                        })
+                        .catch(function(error){
+                            tempTip.cancelWaitingTip();
+                            tempTip.setDuration(2000);
+                            tempTip.show(error);
+                        });
                 }
             }
         })

+ 6 - 0
routes/apiLocal.php

@@ -55,6 +55,12 @@ Route::group(['prefix' => 'order'], function () {
         Route::match(['get','post'],'disposeImport','OrderIssueController@disposeImportApi');
         Route::post('financeConfirm','OrderIssueController@financeConfirmApi');
 
+        Route::group(['prefix'=>'rejectedBill'],function(){
+            Route::post('join','OrderIssueController@joinRejectedBillApi');
+            Route::post('unJoin','OrderIssueController@unJoinRejectedBillApi');
+            Route::post('reviseJoin','OrderIssueController@reviseJoinRejectedBillApi');
+        });
+
          Route::group(['prefix'=>'onTop'],function(){
             Route::post('/store', 'OrderIssueOnTopController@apiStore');
             Route::post('/cancelTop', 'OrderIssueOnTopController@apiDestroy');