Jelajahi Sumber

Merge branch 'zengjun' of ssh://was.baoshi56.com:10022/var/git/bswas

LD 5 tahun lalu
induk
melakukan
70c35e439e

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

@@ -378,32 +378,6 @@ class OrderIssueController extends Controller
         }
     }
 
-    public function updateLogisticNumberReturnApi(Request $request){
-        if (!Gate::allows('订单管理-问题件-编辑')) {
-            return ['success'=>false,'fail_info' => '没有对应权限'];
-        }
-        try {
-            /** @var OrderIssue $orderIssue */
-            $orderIssue = OrderIssue::query()->where('id',$request->input('id'))->first();
-            $rejectedBill = RejectedBill::query()
-                ->with('items')
-                ->where('logistic_number_return',$request->input('logisticNumberReturn'))
-                ->first();
-            app('LogService')->log(__METHOD__, __FUNCTION__, json_encode($request->getContent()));
-            if(!$rejectedBill){
-                $orderIssue->update(['logistic_number_return' => $request->input('logisticNumberReturn')]);
-                return ['success' => false, 'message' => '退回单号已修改,退回单号没有相应退件信息'];
-            }else{
-                $orderIssue->update(['logistic_number_return' => $request->input('logisticNumberReturn'),'is_new_rejecting' => '有']);
-                $orderIssue->同步退单状态();
-                return ['success' => true, 'rejectedBill' => $rejectedBill,'rejectingStatus' =>$orderIssue->rejecting_status];
-            }
-        } catch (Exception $e) {
-            app('LogService')->log(__METHOD__, __FUNCTION__,'error'. json_encode($request->getContent()).'||'.$e->getMessage().'||'.$e->getTraceAsString());
-            return ['success' => false ,'fail_info' => $e->getMessage()];
-        }
-    }
-
     public function apiUpdateValidator(array $arr)
     {
         return Validator::make($arr, [

+ 15 - 96
app/OrderIssue.php

@@ -115,102 +115,6 @@ class OrderIssue extends Model
         return $createLog->user->name ?? '';
     }
 
-    public function 同步退单状态(){
-        $rejectedItems = [];
-        $orderItems = [];
-        $orderIssueId = $this['id'];
-        if ($this->logistic_number_return ?? false) {
-            $rejectedBillItems = RejectedBillItem::query()->with('quality')
-                ->whereHas('rejectedBill.orderIssue', function ($query) use ($orderIssueId) {
-                    $query->where('id',$orderIssueId);
-                })->get();
-            if($rejectedBillItems->where('quality.name','残次')->count() > 0){
-                $this->update(['rejecting_status' => '差异退回']);
-                return;
-            }
-            if (count($rejectedBillItems) == 0) {
-                $this->update(['rejecting_status' => '未退回']);
-                return;
-            }
-            $barcodeGoods = data_get($rejectedBillItems,'*.barcode_goods');
-            $commodityBarcodes = CommodityBarcode::query()->with('commodity')->whereIn('code',$barcodeGoods)->get();
-            $commodities = Commodity::query()->whereIn('sku',$barcodeGoods)->get();
-
-            foreach ($rejectedBillItems as $item) {
-                $barcode_goods = (string)$item->barcode_goods;
-                $commodity = $commodities->where('sku',$barcode_goods)->first();
-                if(!$commodity){
-                    $commodityBarcode = $commodityBarcodes->where('code',$barcode_goods)->first();
-                    $barcode_goods = $commodityBarcode->commodity->sku ?? $barcode_goods;
-                }
-                if (!isset($rejectedItems[$barcode_goods])){
-                    $rejectedItems[$barcode_goods] = 0;
-                }
-                $rejectedItems[(string)$barcode_goods] += $item->amount;
-            }
-        } else {
-            $this->update(['rejecting_status' => '未退回']);
-            return;
-        }
-        if ($this->order_id  ?? false) {
-            $items = OrderPackageCommodities::query()
-                ->with(['commodity','package.order.issue'])
-                ->whereHas('package.order.issue', function ($query) use ($orderIssueId) {
-                    $query->where('id', $orderIssueId);
-                })->get();
-            if (count($items) > 0) {
-                foreach ($items as $item) {
-                    $sku = $item['commodity']['sku'];
-                    if (! isset($orderItems[$sku])  ?? false){
-                        $orderItems[$sku] = 0;
-                    }
-                    $orderItems[$sku] += $item->amount;
-                }
-            } else {
-                $this->update(['rejecting_status' => '无']);
-                return;
-            }
-        }
-        $rejectedExcess = 0;    // 退回差异
-        $rejectedReview = 0;    // 退回复核  $rejectedItems == $orderItems
-        foreach ($rejectedItems as $key => $items) {
-            if ($orderItems[$key] ?? false) {
-                if ($rejectedItems[$key] == $orderItems[$key])
-                    $rejectedReview++;
-            } else
-                $rejectedExcess++;
-        }
-        if ($rejectedExcess > 0) {
-            $this->update(['rejecting_status' => '差异退回']);
-            return;
-        }
-        // 全部退回 部分退回 超量退回 差异退回 未退回 无
-        $isExcess = 0; // 超量 $orderItems < $rejectedItems
-        $isDiff = 0;   // 部分 $orderItems > $rejectedItems
-        $isAccord = 0; // 相同 $orderItems == $rejectedItems
-        $isLack = 0;   // 缺少 $orderItems != $rejectedItems
-        foreach ($orderItems as $key => $item) {
-            if ($rejectedItems[$key] ?? false) {
-                if ($orderItems[$key] < $rejectedItems[$key])
-                    $isExcess++;
-                else if ($orderItems[$key] > $rejectedItems[$key])
-                    $isDiff++;
-                else if ($orderItems[$key] == $rejectedItems[$key])
-                    $isAccord++;
-            } else
-                $isLack++;
-        }
-
-        if($isAccord == $rejectedReview && $isLack == 0 && $isExcess == 0 && $isDiff==0 && $rejectedExcess == 0 )
-            $this->update(['rejecting_status' => '全部退回']);
-        else if($isExcess > 0 && $isAccord ==  $rejectedReview && $isDiff == 0 && $isLack == 0)
-            $this->update(['rejecting_status' => '超量退回']);
-        else if($isDiff >=0 && $isAccord == $rejectedReview && $isLack >=0 && $rejectedExcess ==0 && $isExcess==0)
-            $this->update(['rejecting_status' => '部分退回']);
-        else if($isLack >= 0 && $rejectedExcess>=0 && $isDiff>=0 && $isLack>=0 && $isExcess>=0 && $rejectedReview>=0)
-            $this->update(['rejecting_status' => '差异退回']);
-    }
-
     /**
      * 同步退货状态
      */
@@ -348,6 +252,20 @@ class OrderIssue extends Model
         }
     }
 
+    public function syncRejected($logistic_number)
+    {
+        $query = RejectedBill::query()->selectRaw('id');
+        if(is_array($logistic_number)){
+            $query->whereIn('logistic_number_return',$logistic_number);
+        }elseif (is_string($logistic_number)){
+            $query->where('logistic_number_return',$logistic_number);
+        }else return;
+        $items = RejectedBillItem::query()->whereIn('id_rejected_bill',$query);
+        if($items->count() > 0) $this->update(['is_new_rejecting'=>'有']);
+        elseif($items->count() == 0) $this->update(['is_new_rejecting'=>'无']);
+    }
+
+
     /**
      * @param array|string $logistic_number
      * @return array|void
@@ -355,6 +273,7 @@ class OrderIssue extends Model
     public function joinRejectedBill($logistic_number)
     {
         if(!$logistic_number)return null;
+        $this->syncRejected($logistic_number);
         if(is_array($logistic_number)){
             return $this->rejectedBills()->sync($logistic_number,false);
         }

+ 17 - 6
resources/views/order/issue/index.blade.php

@@ -391,7 +391,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  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">
@@ -415,7 +415,7 @@
                                             <td class="text-muted" style="min-width: 170px">@{{ log.created_at }}</td>
                                             @can('订单管理-问题件-处理结果删除')
                                                 <td style="" class="m-0 p-0 border-0">
-                                                    <button type="button" class="btn btn-sm btn-outline-danger m-0 del-btn invisible" @click="deleteOrderIssueLog(log.id,orderIssue.id)">删</button>
+                                                    <button type="button" class="btn btn-sm btn-outline-danger m-0 del-btn invisible" @click="deleteOrderIssueLog(log,orderIssue.id)">删</button>
                                                 </td>
                                             @endcan
                                         </template>
@@ -1224,10 +1224,14 @@
                         tempTip.show('网络异常:' + err);
                     });
                 },
-                deleteOrderIssueLog(id, OrderIssueId) {
+                deleteOrderIssueLog(log, OrderIssueId) {
                     let _this = this;
                     if(!confirm('是否删除当前记录'))return;
-                    axios.post("{{url('apiLocal/order/issue/log/destroy')}}", {id: id}).then(function (res) {
+                    if(log.type === '创建'){
+                        tempTip.show('创建记录不能删除');
+                        return;
+                    }
+                    axios.post("{{url('apiLocal/order/issue/log/destroy')}}", {id: log.id}).then(function (res) {
                         if (res.data.success) {
                             _this.orderIssues.forEach(function (orderIssue) {
                                 if (orderIssue.id == OrderIssueId) {
@@ -1274,7 +1278,13 @@
                     let domObj = $(e.target).parents('.log-td');
                     if (domObj.hasClass('log-td')) {
                         domObj.find('.add-btn').show();
+                    }else{
+                        let obj = $(e.target);
+                        if(obj.hasClass('log-td')){
+                            obj.find('.add-btn').show();
+                        }
                     }
+
                 },
                 hideAddBtn(e) {
                     let domObj = $(e.target);
@@ -1686,6 +1696,7 @@
                                     orderIssue.rejecting_status = response.data.data.orderIssue.rejecting_status;
                                 }
                                 _this.regroupRejectedBill(orderIssue);
+                                _this.$forceUpdate();
                                 return;
                             }
                             tempTip.setDuration(2000);
@@ -1704,9 +1715,9 @@
                             if(response.data.success){
                                 tempTip.setDuration(2000);
                                 tempTip.showSuccess('退回单号取消关联成功');
-                                if(orderIssue.rejected_bills===null)return;
+                                if(orderIssue.order_issue_rejected_bills===null)return;
                                 $.each(orderIssue.order_issue_rejected_bills,function(i,item){
-                                    if(item.logistic_number_return === logistic_number){
+                                    if(item && item.logistic_number_return === logistic_number){
                                         orderIssue.order_issue_rejected_bills.splice(i,1);
                                         _this.regroupRejectedBill(orderIssue);
                                     }

+ 0 - 1
routes/apiLocal.php

@@ -49,7 +49,6 @@ Route::group(['prefix' => 'order'], function () {
         Route::post('endOrderIssue', 'OrderIssueController@apiEndOrderIssue');
         Route::post('getOrderInfoByClientNo', 'OrderIssueController@apiGetOrderInfoByClientNo');
         Route::post('isExistByOrderNo','OrderIssueController@isExistByOrderNoApi');
-        Route::post('updateLogisticNumberReturn','OrderIssueController@updateLogisticNumberReturnApi');
         Route::post('editSecondClientNo','OrderIssueController@editSecondClientNoApi');
         Route::post('endOrderIssues','OrderIssueController@endOrderIssuesApi');
         Route::post('editSecondLogisticNumber','OrderIssueController@editSecondLogisticNumberApi');