loustwo пре 4 година
родитељ
комит
4765541e4e

+ 32 - 34
app/Http/Controllers/WorkOrderController.php

@@ -19,16 +19,6 @@ use Illuminate\Support\Facades\Gate;
 
 class WorkOrderController extends Controller
 {
-
-    /**
-     * @var WorkOrderService $service
-     * @var WorkOrderCommoditiesService $commoditiesService
-     * @var WorkOrderDetailService $detailService
-     * @var WorkOrderLogService $logService
-     * @var OrderService $orderService
-     * @var OwnerService $ownerService
-     * @var OrderIssueTypeService $orderIssueTypeService
-     */
     public $service;
     public $detailService;
     public $commoditiesService;
@@ -37,15 +27,23 @@ class WorkOrderController extends Controller
     public $ownerService;
     public $orderIssueTypeService;
 
-    public function __construct()
+    public function __construct(
+        WorkOrderService $service,
+        WorkOrderCommoditiesService $commoditiesService,
+        WorkOrderDetailService $detailService,
+        WorkOrderLogService $logService,
+        OrderService $orderService,
+        OwnerService $ownerService,
+        OrderIssueTypeService $orderIssueTypeService
+    )
     {
-        $this->service = app(WorkOrderService::class);
-        $this->detailService = app(WorkOrderDetailService::class);
-        $this->commoditiesService = app(WorkOrderCommoditiesService::class);
-        $this->logService = app(WorkOrderLogService::class);
-        $this->orderService = app(OrderService::class);
-        $this->ownerService = app(OwnerService::class);
-        $this->orderIssueTypeService = app(OrderIssueTypeService::class);
+        $this->service = $service;
+        $this->detailService = $detailService;
+        $this->commoditiesService = $commoditiesService;
+        $this->logService = $logService;
+        $this->orderService = $orderService;
+        $this->ownerService = $ownerService;
+        $this->orderIssueTypeService = $orderIssueTypeService;
     }
 
     /**
@@ -58,10 +56,10 @@ class WorkOrderController extends Controller
         if (Gate::denies('订单管理-工单处理-承运商编辑'))
             return ['success' => false, 'message' => '没有对应权限'];
         $detail = WorkOrderDetail::query()->with('workOrder')->find($request->input('detail_id'));
-        if($detail->status === '完成') return ['success' => false, 'message' => '工单已完成,请刷新重试'];
+        if ($detail->status === '完成') return ['success' => false, 'message' => '工单已完成,请刷新重试'];
         $this->service->logisticHandlerTag($detail);
         $data = $this->service->getDefaultWith($detail->work_order_id);
-        return ['success' => true,'data' => $data];
+        return ['success' => true, 'data' => $data];
     }
 
     public function index(Request $request, WorkOrderFilters $filters)
@@ -72,12 +70,12 @@ class WorkOrderController extends Controller
 
         $logistics = Logistic::all();
 
-        $orderIssueTypes =  $this->orderIssueTypeService->getWorkOrderIssueType();
+        $orderIssueTypes = $this->orderIssueTypeService->getWorkOrderIssueType();
 
         $owners = $this->ownerService->getAuthorizedOwners();
 
         $this->service->tags($workOrders);
-         return view('order.workOrder.index', compact('workOrders', 'logistics', 'orderIssueTypes', 'owners'));
+        return view('order.workOrder.index', compact('workOrders', 'logistics', 'orderIssueTypes', 'owners'));
     }
 
     /**
@@ -123,7 +121,7 @@ class WorkOrderController extends Controller
 
         $workOrder = $this->service->find($id);
 
-        if (!$workOrder){
+        if (!$workOrder) {
             return ['success' => false, 'message' => '对应工单信息未找到'];
         } else {
             if ($workOrder->status == '已处理') {
@@ -142,12 +140,12 @@ class WorkOrderController extends Controller
      */
     public function checkWorkOrderApi(Request $request): array
     {
-        $nos = $request->input('no','');
-        if (is_string($nos)){
+        $nos = $request->input('no', '');
+        if (is_string($nos)) {
             $nos = [$nos];
         }
         $data = $this->service->checkWorkOrder($nos);
-        return ['success' => true,'data' => $data];
+        return ['success' => true, 'data' => $data];
     }
 
     /**
@@ -160,15 +158,15 @@ class WorkOrderController extends Controller
         if (Gate::denies('订单管理-工单处理-货主编辑'))
             return ['success' => false, 'message' => '没有对应权限'];
         $detail_id = $request->input('detail_id');
-        $detail = WorkOrderDetail::query()->with('workOrder')->where('id',$detail_id)->first();
-        if (!$detail || !$detail->workOrder){
-            return ['success'=>false,'message' => '参数异常'];
+        $detail = WorkOrderDetail::query()->with('workOrder')->where('id', $detail_id)->first();
+        if (!$detail || !$detail->workOrder) {
+            return ['success' => false, 'message' => '参数异常'];
         }
         try {
             $this->service->ownerEndWorkOrderDetail($detail);
-            return ['success'=>true];
+            return ['success' => true];
         } catch (\Exception $e) {
-            return ['success' => false,'message' => '工单完结异常'];
+            return ['success' => false, 'message' => '工单完结异常'];
         }
     }
 
@@ -181,11 +179,11 @@ class WorkOrderController extends Controller
     {
         if (Gate::denies('订单管理-工单处理-货主编辑'))
             return ['success' => false, 'message' => '没有对应权限'];
-        $detail_ids = $request->input('detail_ids',[]);
-        if (count($detail_ids) == 0) return ['success' => false,'message' => '参数异常'];
+        $detail_ids = $request->input('detail_ids', []);
+        if (count($detail_ids) == 0) return ['success' => false, 'message' => '参数异常'];
 
         $details = WorkOrderDetail::query()->find($detail_ids);
-        if (count($details) == 0 ) return ['success' => false,'message' => '参数异常'];
+        if (count($details) == 0) return ['success' => false, 'message' => '参数异常'];
         try {
             $this->service->ownerBatchEndWorkOrderDetails($details);
             return ['success' => true];

+ 5 - 9
app/Http/Controllers/WorkOrderInterceptController.php

@@ -11,17 +11,14 @@ use Illuminate\Support\Facades\Gate;
 
 class WorkOrderInterceptController extends Controller
 {
-    /**
-     * @var WorkOrderInterceptService $service
-     * @var OrderService orderService
-     */
+
     private $service;
     private $orderService;
 
-    public function __construct()
+    public function __construct( WorkOrderInterceptService $service,OrderService $orderService)
     {
-        $this->service = app("WorkOrderInterceptService");
-        $this->orderService = app("OrderService");
+        $this->service = $service;
+        $this->orderService = $orderService;
     }
 
     public function storeApi(Request $request): array
@@ -127,7 +124,6 @@ class WorkOrderInterceptController extends Controller
         $this->service->baoShiReviewIntercept($detail, $request->all());
 
         $data = WorkOrder::query()->defaultWith()->find($detail->work_order_id);
-
         return ['success' => true, 'data' => $data];
     }
 
@@ -157,7 +153,7 @@ class WorkOrderInterceptController extends Controller
         $data = WorkOrder::query()->defaultWith()->find($details->map(function ($item) {
             return $item->work_order_id;
         })->toArray());
-
+        $this->service->tags($data);
         return ['success' => true, 'data' => $data];
     }
 }

+ 1 - 1
app/RejectedBill.php

@@ -72,7 +72,7 @@ class RejectedBill extends Model
     }
 
     function orderIssueRejectedBill(){
-        return $this->hasOne(OrderIssueRejectedBill::class,'logistic_number_return','logistic_number_return');
+        return $this->hasOne(OrderIssueRejectedBill::class,'logistic_number_return','logistic_number_return')->whereNotNull('order_issue_id');
     }
 
     function setIsLoaded_toWaitConfirm(){

+ 4 - 2
app/Services/OrderRejectedBillRelationService.php

@@ -67,8 +67,10 @@ class OrderRejectedBillRelationService
 
         $logistic_number_returns = $this->filtersCanBeJoinLogisticNumberReturns($order, $logistic_number_returns);
 
-        OrderIssueRejectedBill::query()->insert(array_map(function($item)use($order){
-            return ['order_id' => $order->id,'logistic_number_return' => $item];
+        $order_issue = OrderIssue::query()->where('order_id',$order->id)->first();
+
+        OrderIssueRejectedBill::query()->insert(array_map(function($item)use($order,$order_issue){
+            return ['order_id' => $order->id,'logistic_number_return' => $item,'order_issue_id' => $order_issue->id ?? ''];
         },$logistic_number_returns));
 
         $this->service->syncRejectingStatus($order);

+ 1 - 1
app/Services/OrderService.php

@@ -704,7 +704,7 @@ SQL;
         if (!$orderHeaders) return null;
         $this->syncOrderInfo($orderHeaders);
         $code = $orderHeaders->first()->code;
-        return $order = Order::query()->with('packages.commodities.commodity')->where('code', $code)->first();
+        return Order::query()->with('packages.commodities.commodity')->where('code', $code)->first();
     }
 
     /**

+ 0 - 2
app/Services/WorkOrderInterceptService.php

@@ -15,8 +15,6 @@ use Illuminate\Support\Facades\Auth;
  */
 class WorkOrderInterceptService extends WorkOrderService
 {
-
-
     public function __construct(
         WorkOrderLogService $logService,
         WorkOrderImageService $imageService,

+ 1 - 2
app/Services/WorkOrderService.php

@@ -207,11 +207,10 @@ class WorkOrderService
             return $item->order_id;
         });
         $order_issues = OrderIssue::query()->whereIn('order_id', $order_ids)->get();
-
+        $codes = [];
         foreach ($order_issues as $order_issue) {
             $codes[$order_issue->order_id] = true;
         }
-        if (!isset($codes)) return;
         foreach ($workOrders as &$workOrder) {
             if (array_key_exists($workOrder->order_id, $codes)) $workOrder->is_issue_order = true;
             else  $workOrder->is_issue_order = false;

+ 43 - 28
resources/views/order/workOrder/index.blade.php

@@ -31,8 +31,8 @@
                                 @click="baoShiBatchHandler">宝时批量处理
                         </button>
                         <button type="button"
-                            class="ml-1 btn btn-outline-primary btn-sm"
-                            @click="showBatchStoreProcessLogs">批量处理日志
+                                class="ml-1 btn btn-outline-primary btn-sm"
+                                @click="showBatchStoreProcessLogs">批量处理日志
                         </button>
                     @endcan
                     @can('订单管理-问题件-编辑')
@@ -63,37 +63,47 @@
                             <tr @click="selectTr===i+1?selectTr=0:selectTr=i+1" :class="selectTr===i+1?'focusing' : ''">
                                 <td>
                                     <label><input name="checkData" type="checkbox" :value="item.id"></label>
-                                    <span v-show="isNewWorkOrder(item)" class="badge text-white bg-primary">新</span>
+                                    <span v-show="isNewWorkOrder(item)" class="badge  bg-primary text-white ">新</span>
                                     @can( '订单管理-工单处理-宝时编辑')
                                         <span v-show="isStrandWorkOrder(item)"
-                                              class="badge badge-danger bg-warning text-break"
+                                              class="badge  badge-danger bg-warning text-break"
                                               @click="showStoreProcessLog(item,i)">滞</span>
                                     @elsecan('订单管理-工单处理-承运商编辑')
                                         <span v-show="isStrandWorkOrder(item)"
-                                              class="badge badge-danger bg-warning text-break">滞</span>
+                                              class="badge  badge-danger bg-warning text-break">滞</span>
                                     @endcan
-                                    <span v-show="isLogisticHandler(item)" class="badge badge-success">承</span>
-                                    <span v-show="item.order_detail && ['有','已处理'].includes(item.order_detail.is_new_rejecting)" class="badge badge-danger">退</span>
-                                    <br>
-                                    <span class="badge badge-info" v-show="item.order_detail"
-                                          v-text="item.order_detail ? item.order_detail.rejecting_status : ''"></span>
+
+                                    <template>
+                                        <span class="badge badge-success" v-show="isLogisticHandler(item)">承</span>
+                                        <span v-show="item.order_detail && ['有','已处理'].includes(item.order_detail.is_new_rejecting)"
+                                            class="badge badge-primary">退</span>
+                                    </template>
+
+                                    <template >
+                                        <br v-show="item.is_issue_order === true">
+                                        <a :href="'{{url("order/issue/index")}}'+'?is_handle=ture&orderCode='+item.orderno"
+                                           v-show="item.is_issue_order === true"
+                                           target="order/issue/index?addtime=15">
+                                            <span class="badge badge-danger ">问题件</span>
+                                        </a>
+                                    </template>
+
+                                    <template v-show="item.order_detail">
+                                        <br>
+                                        <span class="badge  badge-light"
+                                            v-text="item.order_detail ? item.order_detail.rejecting_status : ''"></span>
+                                    </template>
                                 </td>
                                 <td>
                                     <span v-text="item.id"></span>
-                                    <br v-show="item.is_issue_order">
-                                    <a :href="'{{url("order/issue/index")}}'+'?orderCode='+item.orderno"
-                                       target="order/issue/index?addtime=15"
-                                       v-show="item.is_issue_order">
-                                        <span class="badge badge-primary">问题件</span>
-                                    </a>
                                     <br>
-                                    <button class="btn btn-sm btn-outline-dark"
-                                            @click="showWorkOrderItem(item)">详情
+                                    <button class="btn btn-sm btn-outline-secondary"
+                                            @click="showWorkOrderItem(item)">工单详情
                                     </button>
                                     <br>
-                                    <span class="badge btn-sm badge-info" style="cursor: default"
-                                        @click="showOrderCommoditiesInfo(item)">商品详情
-                                    </span>
+                                    <button class="btn btn-sm btn-outline-secondary"
+                                            @click="showOrderCommoditiesInfo(item)">商品详情
+                                    </button>
                                 </td>
                                 <td>
                                     @can('订单管理-订单问题件生成')
@@ -181,7 +191,7 @@
                                 </td>
                                 <td>
                                     <span v-text="item['last_handler_name'] + ':' + item.process_progress"></span>
-                                    <span class="badge badge-pill badge-warning" v-if="'快递异常' === item.issue_type_name"
+                                    <span class="badge  badge-warning" v-if="'快递异常' === item.issue_type_name"
                                           v-text="item.type"></span>
                                 </td>
                                 <td v-text="item.shop_name"></td>
@@ -487,7 +497,7 @@
                 orderInfo: {
                     commodities: [],
                 },
-                order_info_commodityes_key:1,
+                order_info_commodityes_key: 1,
             },
             computed: {},
             mounted() {
@@ -960,6 +970,7 @@
                         if (data[e.id]) {
                             let item = data[e.id];
                             this.sortOrder(item);
+                            item.is_order_issue = item.order_issue ? true : false;
                             this.$set(this.workOrders, i, item);
                         }
                     });
@@ -1509,6 +1520,7 @@
                         window.tempTip.cancelWaitingTip();
                         if (res.data.success) {
                             this.sortOrder(res.data.data);
+                            res.data.data.is_order_issue = 'order_issue' in res.data.data;
                             this.$set(this.workOrders, this.selectIndex, res.data.data);
                             this.successTempTip('处理完成');
                             if (this.baoShiEditWorkOrder.is_edit) this.dialogEditBaoShiVisible = false
@@ -1785,7 +1797,7 @@
                 },
                 logisticCheckDamage() {
                     let {commodities} = this.logisticEditWorkOrder;
-                    commodities.forEach(e =>console.log(Number(e.price) === 0));
+                    commodities.forEach(e => console.log(Number(e.price) === 0));
                     return commodities.filter(e => Number(e.price) === 0).length === 0;
                 },
                 logisticEdit() {
@@ -1859,6 +1871,8 @@
                         window.tempTip.cancelWaitingTip();
                         if (res.data.success) {
                             this.sortOrder(res.data.data);
+
+                            res.data.data.is_issue_order = 'order_issue' in res.data.data;
                             this.$set(this.workOrders, this.selectIndex, res.data.data);
                             this.successTempTip('处理完成');
                             if (this.logisticEditWorkOrder.is_edit) this.dialogEditLogisticVisible = false;
@@ -2353,6 +2367,7 @@
                         if (res.data.success) {
                             this.successTempTip('处理完成');
                             this.sortOrder(res.data.data);
+                            res.data.data.is_issue_order = 'order_issue' in res.data.data;
                             this.$set(this.workOrders, this.selectIndex, res.data.data);
                             this.selectIndex = null;
                             if (this.ownerEditWorkOrder.is_edit) this.dialogEditOwnerVisible = false;
@@ -3190,12 +3205,12 @@
                         this.errorTempTip(err);
                     })
                 },
-                showBatchStoreProcessLogs(){
-                    if (checkData.length === 0){
+                showBatchStoreProcessLogs() {
+                    if (checkData.length === 0) {
                         this.errorTempTip('请选择需要处理工单')
                         return;
                     }
-                    this.dialogProcessLogVisible= true;
+                    this.dialogProcessLogVisible = true;
                 },
                 batchStoreProcessLogs() {
                     let url = "{{route('workOrder.processLog.batchStore')}}";
@@ -3263,7 +3278,7 @@
                 },
 
 
-                showOrderCommoditiesInfo(item){
+                showOrderCommoditiesInfo(item) {
                     this.dialogOrderCommoditiesVisible = true;
                     this.orderInfo.commodities = item.order_commodities;
                 },

+ 1 - 1
resources/views/rejected/search/general.blade.php

@@ -55,7 +55,7 @@
                             <label><input type="checkbox" :value="rejectedBill.id"/></label>
                         </td>
                         <td class="text-nowrap">
-                            <span class="text-muted" style="opacity:0.7">@{{ i+1 }}</span> <span v-if="rejectedBill.order_issue_rejected_bill" class="badge badge-pill badge-danger">问题件</span>
+                                <span class="text-muted" style="opacity:0.7">@{{ i+1 }}</span> <span v-if="rejectedBill.order_issue_rejected_bill" class="badge badge-pill badge-danger">问题件</span>
                         </td>
                         <td class="text-muted text-center">
                             <span v-if="rejectedBill.is_checked==1">