loustwo преди 4 години
родител
ревизия
67e616f719
променени са 4 файла, в които са добавени 123 реда и са изтрити 35 реда
  1. 100 34
      app/Http/Controllers/WorkOrderController.php
  2. 1 0
      resources/views/order/issue/index.blade.php
  3. 21 1
      resources/views/order/workOrder/index.blade.php
  4. 1 0
      routes/web.php

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

@@ -5,7 +5,6 @@ namespace App\Http\Controllers;
 use App\Filters\WorkOrderFilters;
 use App\Logistic;
 use App\OrderIssue;
-use App\OwnerGroup;
 use App\Services\OrderIssueTypeService;
 use App\Services\OrderService;
 use App\Services\OwnerService;
@@ -19,6 +18,7 @@ use App\WorkOrder;
 use App\WorkOrderDetail;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Gate;
+use Oursdreams\Export\Export;
 
 class WorkOrderController extends Controller
 {
@@ -77,11 +77,11 @@ class WorkOrderController extends Controller
 
         $owners = $this->ownerService->getAuthorizedOwners();
 
-        $userWorkgroup = UserWorkgroup::query()->select('id','name')->get();
-        $userOwnerGroup = UserOwnerGroup::query()->select('id','name')->get();
+        $userWorkgroup = UserWorkgroup::query()->select('id', 'name')->get();
+        $userOwnerGroup = UserOwnerGroup::query()->select('id', 'name')->get();
 
         $this->service->tags($workOrders);
-        return view('order.workOrder.index', compact('workOrders', 'logistics', 'orderIssueTypes', 'owners','userWorkgroup','userOwnerGroup'));
+        return view('order.workOrder.index', compact('workOrders', 'logistics', 'orderIssueTypes', 'owners', 'userWorkgroup', 'userOwnerGroup'));
     }
 
     /**
@@ -200,73 +200,139 @@ class WorkOrderController extends Controller
 
     public function updateRemissionApi(Request $request): array
     {
-        if (Gate::denies('订单管理-工单处理-宝时编辑')){
-            return ['success' => false,'message' => '没有对应权限'];
+        if (Gate::denies('订单管理-工单处理-宝时编辑')) {
+            return ['success' => false, 'message' => '没有对应权限'];
         }
-        if (!$request->has(['id','column'])){
-            return  ['success' => false,'message' => '参数异常'];
+        if (!$request->has(['id', 'column'])) {
+            return ['success' => false, 'message' => '参数异常'];
         }
         /** @var WorkOrder $workOrder */
         $workOrder = WorkOrder::query()->find($request->input('id'));
-        if (!$workOrder){
-            return ['success' => false,'message' => '未找到对应的工单'];
+        if (!$workOrder) {
+            return ['success' => false, 'message' => '未找到对应的工单'];
         }
         $column = $request->input('column');
-        $workOrder->update(["{$column}" => $request->input('value')??null]);
+        $workOrder->update(["{$column}" => $request->input('value') ?? null]);
         return ['success' => true];
     }
 
     public function updateUserOwnerGroupApi(Request $request): array
     {
-        if (Gate::denies('订单管理-工单处理-宝时编辑')){
-            return ['success' => false,'message' => '没有对应权限'];
+        if (Gate::denies('订单管理-工单处理-宝时编辑')) {
+            return ['success' => false, 'message' => '没有对应权限'];
         }
-        if (!$request->has(['id','user_owner_group_id'])){
-            return  ['success' => false,'message' => '参数异常'];
+        if (!$request->has(['id', 'user_owner_group_id'])) {
+            return ['success' => false, 'message' => '参数异常'];
         }
         /** @var WorkOrder $workOrder */
         $workOrder = WorkOrder::query()->find($request->input('id'));
-        if (!$workOrder){
-            return ['success' => false,'message' => '未找到对应的工单'];
+        if (!$workOrder) {
+            return ['success' => false, 'message' => '未找到对应的工单'];
         }
-        $workOrder->update(['user_owner_group_id'=> $request->input('user_owner_group_id')]);
+        $workOrder->update(['user_owner_group_id' => $request->input('user_owner_group_id')]);
         return ['success' => true];
     }
 
     public function storeUserWorkGroupApi(Request $request): array
     {
-        if (Gate::denies('订单管理-工单处理-宝时编辑')){
-            return ['success' => false,'message' => '没有对应权限'];
+        if (Gate::denies('订单管理-工单处理-宝时编辑')) {
+            return ['success' => false, 'message' => '没有对应权限'];
         }
-        if (!$request->has(['id','user_workgroup_id'])){
-            return  ['success' => false,'message' => '参数异常'];
+        if (!$request->has(['id', 'user_workgroup_id'])) {
+            return ['success' => false, 'message' => '参数异常'];
         }
         /** @var WorkOrder $workOrder */
         $workOrder = WorkOrder::query()->find($request->input('id'));
-        if (!$workOrder){
-            return ['success' => false,'message' => '未找到对应的工单'];
+        if (!$workOrder) {
+            return ['success' => false, 'message' => '未找到对应的工单'];
         }
-        $hasExists = $workOrder->userWorkGroups()->where('user_workgroup_id',$request->input('user_workgroup_id'))->exists();
-        if ($hasExists) return ['success' => false,'message' => '已有对应的关系'];
-        $workOrder->userWorkGroups()->attach( $request->input('user_workgroup_id'));
-        return ['success' => true,'data' => $workOrder->userWorkGroups];
+        $hasExists = $workOrder->userWorkGroups()->where('user_workgroup_id', $request->input('user_workgroup_id'))->exists();
+        if ($hasExists) return ['success' => false, 'message' => '已有对应的关系'];
+        $workOrder->userWorkGroups()->attach($request->input('user_workgroup_id'));
+        return ['success' => true, 'data' => $workOrder->userWorkGroups];
     }
 
     public function destroyUserWorkGroupApi(Request $request): array
     {
-        if (Gate::denies('订单管理-工单处理-宝时编辑')){
-            return ['success' => false,'message' => '没有对应权限'];
+        if (Gate::denies('订单管理-工单处理-宝时编辑')) {
+            return ['success' => false, 'message' => '没有对应权限'];
         }
-        if (!$request->has(['id','user_workgroup_id'])){
-            return  ['success' => false,'message' => '参数异常'];
+        if (!$request->has(['id', 'user_workgroup_id'])) {
+            return ['success' => false, 'message' => '参数异常'];
         }
         /** @var WorkOrder $workOrder */
         $workOrder = WorkOrder::query()->find($request->input('id'));
-        if (!$workOrder){
-            return ['success' => false,'message' => '未找到对应的工单'];
+        if (!$workOrder) {
+            return ['success' => false, 'message' => '未找到对应的工单'];
         }
         $workOrder->userWorkGroups()->detach($request->input('user_workgroup_id'));
         return ['success' => true];
     }
 
+    public function exportJsonExcel(Request $request, WorkOrderFilters $filters)
+    {
+        $work_orders = WorkOrder::query()->filter($filters)->defaultWith()->get();
+        return $this->exportJson($work_orders);
+    }
+
+    public function exportJson($workOrders)
+    {
+        $json = [];
+        $row = [
+            '工单类型', '当前进度', '客户', '店铺名称', '客户订单号', '快递单号', '创建时间', '当前处理人', '创建人', '情况说明', '退回单号', '退回商品', '退回商品名称', '退回商品数量', '是否正品', '操作类型', '操作人', '内容'
+        ];
+        $workOrders->each(function ($item) use (&$json) {
+            $logistic_numbers = $item->order->packages->implode('logistic_number', ",\r\n");
+            $logistic_numbers_return = $item->orderIssueRejectedBills->implode('logistic_number_return',",\r\n");
+            $rejected_item_name = '';
+            $rejected_item_sku = '';
+            $rejected_item_label = '';
+            $rejected_item_amount = '';
+            $item->orderIssueRejectedBills->each(function ($item) use (&$rejected_item_name, &$rejected_item_sku, &$rejected_item_label, &$rejected_item_amount) {
+                if($item->rejectedBill)
+                    $item->rejectedBill->items->each(function ($item) use (&$rejected_item_name, &$rejected_item_sku, &$rejected_item_label, &$rejected_item_amount) {
+                        $rejected_item_name = $rejected_item_name . $item->name_goods . ",\r\n";
+                        $rejected_item_sku = $rejected_item_sku . $item->barcode_goods . ",\r\n";
+                        $rejected_item_label = $rejected_item_label . $item->quality_label . ",\r\n";
+                        $rejected_item_amount = $rejected_item_amount . $item->amount . ",\r\n";
+                    });
+            });
+            $work_order_process_logs_type = '';
+            $work_order_process_logs_user = '';
+            $work_order_process_logs = '';
+
+            $work_order_details = $item->details->filter(function ($detail) use ($item) {
+                return $detail->order_issue_type_id == $item->order_issue_type_id;
+            });
+            if(count($work_order_details) > 0){
+                $work_order_details->first()->processLogs->each(function ($log) use (&$work_order_process_logs_type,&$work_order_process_logs_user,&$work_order_process_logs) {
+                    $work_order_process_logs_type .= $log->type. ",\r\n";
+                    $work_order_process_logs_user .= ($log->user->name ?? ''). ",\r\n";
+                    $work_order_process_logs .= $log->content. ",\r\n";
+                });
+            }
+
+            $json[] = [
+                $item->issueType->name ?? '',
+                $item->process_progress,
+                $item->owner->name ?? '',
+                $item->order->shop->name ?? '',
+                $item->order->client_code ?? '',
+                rtrim($logistic_numbers, ",\r\n"),
+                isset($item->created_at) ? str_split($item->created_at, 10)[0] : '',
+                $item->status,
+                $item->creator->name ?? '',
+                $item->remark,
+                rtrim($logistic_numbers_return, ",\r\n"),
+                rtrim($rejected_item_sku, ",\r\n"),
+                rtrim($rejected_item_name, ",\r\n"),
+                rtrim($rejected_item_amount, ",\r\n"),
+                rtrim($rejected_item_label, ",\r\n"),
+                rtrim($work_order_process_logs_type, ",\r\n"),
+                rtrim($work_order_process_logs_user, ",\r\n"),
+                rtrim($work_order_process_logs, ",\r\n"),
+            ];
+        });
+        return Export::make($row, $json, "工单");
+    }
 }

+ 1 - 0
resources/views/order/issue/index.blade.php

@@ -6,6 +6,7 @@
         <div style="@cannot('订单管理-问题件-客户不可见')min-width: 3000px;@else min-width: 1990px; @endcannot">
             <div id="list" class="d-none container-fluid">
                 <div id="form_div" style="min-width: 2250px;"></div>
+
                 <div class="form-inline mt-1" id="btn">
                     <span class="dropdown">
                         <button type="button"

+ 21 - 1
resources/views/order/workOrder/index.blade.php

@@ -11,6 +11,16 @@
             <div class="">
                 <div id="form_div" style="min-width: 1220px;"></div>
                 <div class="ml-3 form-inline" id="btn">
+                     <span class="dropdown">
+                        <button type="button"
+                                class="btn btn-outline-dark btn-sm form-control-sm dropdown-toggle tooltipTarget"
+                                data-toggle="dropdown" title="导出所有页将会以搜索条件得到的筛选结果,将其全部记录(每一页)导出">导出Excel
+                        </button>
+                        <div class="dropdown-menu">
+                            <a class="dropdown-item" href="javascript:" @click="workOrderExport(false)">导出勾选内容</a>
+                            <a class="dropdown-item" href="javascript:" @click="workOrderExport(true)">导出所有页</a>
+                        </div>
+                    </span>
                     @can('订单管理-订单问题件生成')
                         <button type="button"
                                 class="ml-2 btn  btn-sm btn-outline-dark "
@@ -403,6 +413,7 @@
     <script type="text/javascript" src="{{mix('js/queryForm/header.js')}}"></script>
     <script type="text/javascript" src="{{mix('js/element-ui.js') }}"></script>
     <script src="https://unpkg.com/element-ui/lib/index.js"></script>
+    <script type="text/javascript" src="{{mix('js/queryForm/export.js')}}"></script>
 
     <style>
         .fade-enter-active {
@@ -974,7 +985,7 @@
                 groupRejectedBillItems(workOrder) {
                     let {order_issue_rejected_bills} = workOrder;
                     if (!order_issue_rejected_bills) return [];
-                    return order_issue_rejected_bills.map(e => e.rejected_bill).map(e => e.items).filter(e => e).reduce((a, b) => a.concat(b), [])
+                    return order_issue_rejected_bills.map(e => e.rejected_bill).filter(e => e).map(e => e.items).reduce((a, b) => a.concat(b), [])
                         .map(e => {
                             return {
                                 amount: e.amount,
@@ -3654,6 +3665,15 @@
                         this.errorTempTip(err);
                     });
                 },
+                workOrderExport(sign) {
+                    let url = '{{route('workOrder.exportApi')}}';
+                    let token = '{{ csrf_token() }}';
+                    if (sign) {
+                        excelExport(true, checkData, url, this.total, token);
+                    } else {
+                        excelExport(false, checkData, url, null, token);
+                    }
+                },
             },
         });
     </script>

+ 1 - 0
routes/web.php

@@ -935,6 +935,7 @@ Route::group(['middleware' => 'auth'], function ($route) {
         /** 工单 */
         Route::prefix('workOrder')->group(function () {
             Route::get('index', 'WorkOrderController@index');
+            Route::match(['get', 'post'], 'export', 'WorkOrderController@exportJsonExcel')->name('workOrder.exportApi');
         });
     });
     /** 结算 */