loustwo 4 лет назад
Родитель
Сommit
c8aa01173a

+ 48 - 14
app/Http/Controllers/OrderIssueProcessLogController.php

@@ -7,6 +7,7 @@ use App\OrderIssue;
 use App\OrderIssueProcessLog;
 use App\Services\OrderIssueProcessLogService;
 use App\User;
+use App\WorkOrder;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\Gate;
@@ -14,6 +15,14 @@ use Illuminate\Support\Facades\Gate;
 class OrderIssueProcessLogController extends Controller
 {
 
+    /** @var OrderIssueProcessLogService $service */
+    private $service;
+
+    public function __construct()
+    {
+        $this->service = app(OrderIssueProcessLogService::class);
+    }
+
     /**
      * 处理日志创建
      * @param Request $request
@@ -34,7 +43,7 @@ class OrderIssueProcessLogController extends Controller
                     'type' => '处理',
                 ]);
                 $log->loadMissing('user');
-                return ['success' =>true,'data' =>$log ];
+                return ['success' => true, 'data' => $log];
             } catch (Exception $e) {
                 return ['success' => false, 'fail_info' => $e->getMessage()];
             }
@@ -51,16 +60,17 @@ class OrderIssueProcessLogController extends Controller
      */
     public function destroyApi(Request $request): array
     {
-        if(!$request->filled('id')){
-            return ['success'=>false,'fail_info'=>'没有传入对应参数'];
+        if (!$request->filled('id')) {
+            return ['success' => false, 'fail_info' => '没有传入对应参数'];
         }
         /** @var OrderIssueProcessLog $orderIssueProcessLog */
-        $orderIssueProcessLog = OrderIssueProcessLog::query()->where('id',$request->input('id'))->first();
+        $orderIssueProcessLog = OrderIssueProcessLog::query()->where('id', $request->input('id'))->first();
+        if (!$orderIssueProcessLog) return ['success' => false, 'fail_info' => '日志不存在,请刷新重试'];
         // 删除的如果是完结条目,将处理状态改为空
-        if($orderIssueProcessLog['type'] === '结束') OrderIssue::query()->where('id',$orderIssueProcessLog['order_issue_id'])->update(['final_status'=>null]);
+        if ($orderIssueProcessLog['type'] === '结束') OrderIssue::query()->where('id', $orderIssueProcessLog['order_issue_id'])->update(['final_status' => null]);
         $orderIssueProcessLog->delete();
         app('LogService')->log(__METHOD__, __FUNCTION__, json_encode($request->getContent()));
-        return ['success'=>true];
+        return ['success' => true];
     }
 
     /**
@@ -68,7 +78,8 @@ class OrderIssueProcessLogController extends Controller
      * @param Request $request
      * @return array
      */
-    public function batchStoreApi(Request $request){
+    public function batchStoreApi(Request $request)
+    {
         if (!Gate::allows('订单管理-问题件-编辑')) {
             return ['success' => false, 'fail_info' => '没有对应的权限'];
         }
@@ -79,17 +90,17 @@ class OrderIssueProcessLogController extends Controller
             $data = $service->batchStoreAndReturnLogs($request->all());
             $logs = OrderIssueProcessLog::query()
                 ->with('user')
-                ->whereIn('id',data_get($data,'*.id'))
+                ->whereIn('id', data_get($data, '*.id'))
                 ->get();
             $result_data = [];
             foreach ($logs as $log) {
-                $result_data[$log->order_issue_id] =$log;
+                $result_data[$log->order_issue_id] = $log;
             }
-            app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->getContent()));
-            return ['success' => true,'logs' => $result_data];
+            app('LogService')->log(__METHOD__, __FUNCTION__, json_encode($request->getContent()));
+            return ['success' => true, 'logs' => $result_data];
         } catch (\Exception $e) {
-            app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->getContent()).'||'.$e->getMessage()."||".$e->getTraceAsString());
-            return ['success' => false,$e->getMessage()];
+            app('LogService')->log(__METHOD__, __FUNCTION__, json_encode($request->getContent()) . '||' . $e->getMessage() . "||" . $e->getTraceAsString());
+            return ['success' => false, $e->getMessage()];
         }
     }
 
@@ -99,9 +110,32 @@ class OrderIssueProcessLogController extends Controller
         if (Gate::denies('订单管理-问题件-编辑'))
             return ['success' => false, 'fail_info' => '没有对应的权限'];
 
-        OrderIssueProcessLog::query()->where('id',$request['id'])->update(['tag'=>1]);
+        OrderIssueProcessLog::query()->where('id', $request['id'])->update(['tag' => 1]);
 
         return ['success' => true];
     }
 
+    /**
+     * 工单为问题批量添加处理日志
+     * @param Request $request
+     * @return array
+     */
+    public function workOrderCreateLogApi(Request $request): array
+    {
+        if (!Gate::allows('订单管理-问题件-编辑')) {
+            return ['success' => false, 'message' => '没有对应的权限'];
+        }
+        $workOrderQuery = WorkOrder::query()->select('order_id')->whereIn('id', $request->input('ids'));
+        $orderIssues = OrderIssue::query()->whereIn('order_id', $workOrderQuery)->get();
+        if (count($orderIssues) !== count($request->input('ids'))) {
+            return ['success' => false, 'message' => '部分工单没有对应的问题件,请检查后重试'];
+        }
+        $params = ['content' => $request->input('content'), 'orderIssueIds' => $orderIssues->map(function ($item) {
+            return $item->id;
+        })];
+        $data = $this->service->batchStoreAndReturnLogs($params);
+        $data = OrderIssueProcessLog::query()->with('user')->whereIn('id', data_get($data, "*.id"))->get();
+        return ['success' => true, 'data' => $data];
+    }
+
 }

+ 10 - 0
app/Http/Controllers/WorkOrderInformationChangeController.php

@@ -4,6 +4,7 @@ namespace App\Http\Controllers;
 
 use App\Services\OrderService;
 use App\Services\WorkOrderInformationChangeService;
+use App\WorkOrder;
 use App\WorkOrderDetail;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Gate;
@@ -76,4 +77,13 @@ class WorkOrderInformationChangeController extends Controller
         $data = $this->service->getDefaultWith($detail->work_order_id);
         return ['success' => true, 'data' => $data];
     }
+
+    public function baoShiBatchReviewApi(Request $request): array
+    {
+        if (Gate::denies('订单管理-工单处理-宝时编辑'))
+            return ['success' => false, 'message' => '没有对应权限'];
+        $workOrder = WorkOrder::query()->find($request->input('ids'));
+        $this->service->baoShiBatchReviewInformationChange($workOrder,$request->input('process_progress'));
+        return ['success' => true];
+    }
 }

+ 10 - 1
app/Http/Controllers/WorkOrderInterceptController.php

@@ -4,6 +4,7 @@ namespace App\Http\Controllers;
 
 use App\Services\OrderService;
 use App\Services\WorkOrderInterceptService;
+use App\WorkOrder;
 use App\WorkOrderDetail;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Gate;
@@ -65,5 +66,13 @@ class WorkOrderInterceptController extends Controller
         return ['success' => true,'data' => $data];
     }
 
-
+    public function baoShiBatchReviewApi(Request $request): array
+    {
+        if (Gate::denies('订单管理-工单处理-宝时编辑'))
+            return ['success' => false, 'message' => '没有对应权限'];
+        if (!$request->exists(['ids','process_progress'])) return ['success' => false, 'message' => '参数异常'];
+        $workOrder = WorkOrder::query()->find($request->input('ids'));
+        $this->service->baoShiBatchReviewIntercept($workOrder,$request->input('process_progress'));
+        return ['success' => true];
+    }
 }

+ 1 - 1
app/Services/OrderIssueProcessLogService.php

@@ -13,7 +13,7 @@ class OrderIssueProcessLogService
     use ServiceAppAop;
     protected $modelClass=OrderIssueProcessLog::class;
 
-    public function batchStoreAndReturnLogs($params)
+    public function batchStoreAndReturnLogs($params): array
     {
         $ids = $params['orderIssueIds'];
         $content = $params['content'];

+ 13 - 0
app/Services/WorkOrderInformationChangeService.php

@@ -99,4 +99,17 @@ class WorkOrderInformationChangeService extends WorkOrderService
         $detail->change('待货主完结',$params['process_progress'],'宝时终审');
         $detail->workOrder->change('待货主完结',$params['process_progress'],'宝时终审');
     }
+
+    /**
+     * 宝时批量终审
+     * @param $workOrders
+     * @param $processProgress
+     */
+    public function baoShiBatchReviewInformationChange($workOrders,$processProgress){
+        $params = ['process_progress'=>$processProgress];
+        foreach ($workOrders as $workOrder){
+            $detail = $workOrder->details()->where('order_issue_type_id',$workOrder->order_issue_type_id)->where('status','!=',5)->orderByDesc('created_at')->first();
+            if ($detail) $this->baoShiReviewInformationChange($detail,$params);
+        }
+    }
 }

+ 12 - 0
app/Services/WorkOrderInterceptService.php

@@ -91,6 +91,7 @@ class WorkOrderInterceptService extends WorkOrderService
      * 自动终审
      * @param WorkOrder $workOrder
      */
+
     public function autoReviewIntercept(WorkOrder $workOrder)
     {
         /** @var WorkOrderDetail $detail */
@@ -103,4 +104,15 @@ class WorkOrderInterceptService extends WorkOrderService
         $detail->workOrder->change('待货主完结','成功已退回,不赔偿','宝时终审');
         $detail->workOrder->clearWorkOrderStatus();
     }
+
+    /**
+     * 批量修改
+     */
+    public function baoShiBatchReviewIntercept($workOrders,$processProgress){
+        $params = ['process_progress'=>$processProgress];
+        foreach ($workOrders as $workOrder){
+            $detail = $workOrder->details()->where('order_issue_type_id',$workOrder->order_issue_type_id)->where('status','!=',5)->orderByDesc('created_at')->first();
+            if ($detail) $this->baoShiReviewIntercept($detail,$params);
+        }
+    }
 }

+ 21 - 0
resources/views/order/workOrder/_batch_edit_work_order.blade.php

@@ -0,0 +1,21 @@
+<el-dialog :visible.sync="dialogBatchEditBaoShiVisible" width="75%">
+
+    <div slot="title">
+        批量修改
+    </div>
+    <div class="form-group row" v-if="batchEditWorkOrder.p_process_progress">
+        <label class="col-sm-2 col-form-label text-right text-primary">
+            当前进度
+        </label>
+        <select class="form-control col-sm-10" v-model="batchEditWorkOrder.process_progress">
+             <option v-for="item in getEditWorkOrderProcessProgress(batchEditWorkOrder)" :value="item" v-text="item"></option>
+        </select>
+    </div>
+    <div slot="footer" class="dialog-footer">
+        <el-button @click="dialogBatchEditBaoShiVisible = false">关 闭</el-button>
+        <el-button type="primary" @click="batchEditWorkOrderFunc">
+            提交
+        </el-button>
+    </div>
+</el-dialog>
+

+ 19 - 0
resources/views/order/workOrder/_edit_order_issue_log.blade.php

@@ -0,0 +1,19 @@
+<el-dialog :visible.sync="dialogBatchEditOrderIssueLogVisible" width="75%">
+
+    <div slot="title">
+        处理日志
+    </div>
+    <div class="form-group row" v-if="">
+        <label class="col-sm-2 col-form-label text-right text-primary">
+            输入处理内容
+        </label>
+        <textarea class="col-10 form-control" name="" id="" cols="30" rows="4" ref="order_issue_log"></textarea>
+    </div>
+    <div slot="footer" class="dialog-footer">
+        <el-button @click="dialogBatchEditOrderIssueLogVisible = false">关 闭</el-button>
+        <el-button type="primary" @click="batchEditOrderIssueLog">
+            提交
+        </el-button>
+    </div>
+</el-dialog>
+

Разница между файлами не показана из-за своего большого размера
+ 1049 - 1053
resources/views/order/workOrder/index.blade.php


+ 5 - 1
routes/apiLocal.php

@@ -105,6 +105,7 @@ Route::group(['prefix' => 'order'], function () {
             Route::post('destroy', 'OrderIssueProcessLogController@destroyApi')->name('order.issue.log.destroyApi');
             Route::post('batchStore','OrderIssueProcessLogController@batchStoreApi')->name('order.issue.log.batchStoreApi');
             Route::post('tag','OrderIssueProcessLogController@tagApi')->name('order.issue.log.tagApi');
+            Route::post('workOrder/store','OrderIssueProcessLogController@workOrderCreateLogApi')->name('order.issue.log.workOrder.storeApi');
         });
         Route::group(['prefix'=>'recycle'],function(){
             Route::post('recover','OrderIssueController@recoverOrderIssueApi');
@@ -281,8 +282,10 @@ Route::prefix('workOrder')->group(function(){
         Route::post('store','WorkOrderInterceptController@storeApi')->name('workOrder.intercept.storeApi');                                     // 拦截订单创建
         Route::post('logistic/header','WorkOrderInterceptController@logisticHandlerApi')->name('workOrder.intercept.logistic.handlerApi');        // 承运商处理
         Route::post('baoShi/review','WorkOrderInterceptController@baoShiReviewApi')->name('workOrder.intercept.baoShi.reviewApi');              // 宝时终审
+        Route::post('baoShi/batchReview','WorkOrderInterceptController@baoShiBatchReviewApi')->name('workOrder.intercept.baoShi.batchReviewApi');              // 宝时终审
+
     });
-    Route::prefix('cancelIntercept')->group(function(){           // 拦截
+    Route::prefix('cancelIntercept')->group(function(){           // 取消拦截
         Route::post('store','WorkOrderCancelInterceptController@storeApi')->name('workOrder.cancelIntercept.storeApi');                                     // 拦截订单创建
         Route::post('logistic/header','WorkOrderCancelInterceptController@logisticHandlerApi')->name('workOrder.cancelIntercept.logistic.handlerApi');        // 承运商处理
         Route::post('baoShi/review','WorkOrderCancelInterceptController@baoShiReviewApi')->name('workOrder.cancelIntercept.baoShi.reviewApi');              // 宝时终审
@@ -292,6 +295,7 @@ Route::prefix('workOrder')->group(function(){
         Route::post('owner/edit','WorkOrderInformationChangeController@ownerEditApi')->name('workOrder.informationChange.owner.editApi');     // 信息修改
         Route::post('logistic/header','WorkOrderInformationChangeController@logisticHandlerApi')->name('workOrder.informationChange.logistic.handlerApi');     // 信息修改
         Route::post('baoShi/review','WorkOrderInformationChangeController@baoShiReviewApi')->name('workOrder.informationChange.baoShi.reviewApi');              // 宝时终审
+        Route::post('baoShi/batchReview','WorkOrderInformationChangeController@baoShiBatchReviewApi')->name('workOrder.informationChange.baoShi.batchReviewApi');              // 宝时终审
     });
     Route::prefix('loss')->group(function(){                // 快递丢件
         Route::post('store','WorkOrderLossController@storeApi')->name('workOrder.loss.storeApi');                                       // 创建(宝时)

Некоторые файлы не были показаны из-за большого количества измененных файлов