Przeglądaj źródła

Merge branch 'master' of ssh://47.103.131.176:10022/var/git/bswas

zhouzhendong 4 lat temu
rodzic
commit
574878f18e

+ 3 - 0
app/Http/ApiControllers/InventoryController.php

@@ -10,6 +10,7 @@ use App\InventoryAccountMission;
 use App\Services\AndroidInventoryService;
 use App\Services\InventoryAccountService;
 use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Log;
 
 class InventoryController
 {
@@ -176,6 +177,7 @@ class InventoryController
      */
     public function stockInventory(Request $request)
     {
+        Log::error('执行开始',[now()->toDateTimeString()]);
         $task_item_id = $request->input("task_item_id");
         $verified_amount = $request->input("verified_amount");
         /**
@@ -196,6 +198,7 @@ class InventoryController
             $stockService->updateInventory($task_id);
         }
         $notStocktakingList=$service->getUnInventoryTaskList($task_id);
+        Log::error('执行结束',[now()->toDateTimeString()]);
         $this->response($notStocktakingList);
     }
 

+ 2 - 1
app/Http/Controllers/OrderController.php

@@ -48,12 +48,13 @@ class OrderController extends Controller
         $result = $orderService->paginate($request);
         $picktotraceids = $result['picktotraceids'];
         $orders = $result['orders'];
+        $orderService->tagOrderByOrderIssue($orders);
         app('WorkOrderService')->tagWorkOrder($orders);
         $commodities = $result['commodities'];
         $customers = app(OwnerService::class)->getQuery()->select("code","name")->get();
         $page = $request["page"] ?? 1;
         $codes = DB::connection('oracle')->table('BAS_CODES')->select('code', 'codename_c')->where('codeid', 'SO_STS')->orderBy('code', 'asc')->get();
-        $orderIssueType = $this->orderIssueTypeService->getOwnerOrderIssueType();
+        $orderIssueType = $this->orderIssueTypeService->getOrderIssueTypes();
         return view('order/index/delivering', compact('orders', 'customers', 'request', 'codes', 'commodities', 'page', 'picktotraceids', 'orderIssueType', 'logistics'));
     }
 

+ 5 - 3
app/Http/Controllers/RejectedBillController.php

@@ -13,6 +13,7 @@ use App\RejectedBill;
 use App\Services\LogService;
 use App\Services\RejectedBillItemService;
 use App\Services\RejectedBillService;
+use App\Services\WorkOrderService;
 use Illuminate\Contracts\View\Factory;
 use Illuminate\Http\RedirectResponse;
 use Illuminate\Http\Request;
@@ -95,8 +96,6 @@ class RejectedBillController extends Controller
         $rejectedBillService=app(RejectedBillService::class);
         $rejectedBillService->joinOrderIssue($rejectedBill);
         $rejectedBillService->updateCheckedStatusByWms($request->input('logistic_number_return'));
-//        $rejectedBill->同步问题件退件状态();
-
         app('LogService')->log(__METHOD__,__FUNCTION__.'_'.$rejectedBill['id'],json_encode($request->toArray()),Auth::user()['id']);
         return ['success'=>'true','id'=>$rejectedBill['id']];
     }
@@ -118,11 +117,14 @@ class RejectedBillController extends Controller
         $rejectedBill->save();
         /**
          * @var RejectedBillService $rejectedBillService
+         * @var WorkOrderService $workOrderService
          */
         $rejectedBillService=app(RejectedBillService::class);
+        $workOrderService=app(WorkOrderService::class);
+
         $rejectedBillService->syncOrderIssue($rejectedBill);
+        $workOrderService->syncWorkOrder($rejectedBill);
         $rejectedBillService->updateCheckedStatusByWms($rejectedBill->logistic_number_return);
-//        $rejectedBill->同步问题件退件状态();
 
         app('LogService')->log(__METHOD__,__FUNCTION__.'_'.$rejectedBill['id'],json_encode($request->toArray()),Auth::user()['id']);
         return ['success'=>'true'];

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

@@ -52,6 +52,7 @@ use App\OrderBin;
 use App\OrderCommodity;
 use App\OrderIssue;
 use App\OrderIssueProcessLog;
+use App\OrderIssueType;
 use App\OrderPackage;
 use App\Owner;
 use App\OwnerAreaReport;
@@ -233,8 +234,34 @@ class TestController extends Controller
     }
 
     public function test123(){
+        $rejected_bill = RejectedBill::query()->find(2);
+        $service = new WorkOrderService();
+        $service->syncWorkOrder($rejected_bill);
+    }
+
+    public function changeWorkOrder(){
+        $type = OrderIssueType::query()->where('name' ,'拦截')->first();
+
+        WorkOrder::query()->where('order_issue_type_id',$type->id)
+            ->where('status',[4,5])
+            ->where('process_progress','拦截成功')
+            ->update(['process_progress' => '成功已退回,不赔偿']);
+
+        WorkOrder::query()->where('order_issue_type_id',$type->id)
+            ->whereIn('status',[4,5])
+            ->where('process_progress','拦截失败')
+            ->update(['process_progress' => '无法拦截']);
+
+
+        WorkOrderDetail::query()->where('order_issue_type_id',$type->id)
+            ->where('status',[4,5])
+            ->where('process_progress','拦截成功')
+            ->update(['process_progress' => '成功已退回,不赔偿']);
 
-//        dd(WorkOrderDetail::query()->orderByDesc('id')->first());
+        WorkOrderDetail::query()->where('order_issue_type_id',$type->id)
+            ->whereIn('status',[4,5])
+            ->where('process_progress','拦截失败')
+            ->update(['process_progress' => '无法拦截']);
     }
 
 

+ 1 - 1
app/Services/RejectedBillService.php

@@ -63,7 +63,7 @@ class RejectedBillService
      * 同步退回单号
      * @param RejectedBill $rejectedBill
      */
-    public function syncOrderIssue($rejectedBill)
+    public function syncOrderIssue(RejectedBill $rejectedBill)
     {
         $rejectedBill->syncOrderIssue();
     }

+ 6 - 1
app/Services/RejectedService.php

@@ -16,10 +16,15 @@ use App\Traits\ServiceAppAop;
 class RejectedService
 {
     use ServiceAppAop;
-    /** @var CacheService $cacheService */
+    /**
+     * @var CacheService $cacheService
+     * @var WorkOrderInterceptService $workOrderInterceptService
+     */
     private $cacheService;
+    private $workOrderInterceptService;
     function __construct(){
         $this->instant($this->cacheService,'CacheService');
+        $this->instant($this->workOrderInterceptService,'WorkOrderInterceptService');
     }
     private function  conditionQuery(array $param)
     {

+ 21 - 4
app/Services/WorkOrderInterceptService.php

@@ -44,8 +44,8 @@ class WorkOrderInterceptService extends WorkOrderService
     /*
     * 拦截工单处理流程
     * 1:创建
-    * 2:承运商处理   [已处理,已签收];
-    * 3:宝时终审     [拦截成功,拦截失败]
+    * 2:承运商处理   [`拦截失败`,`拦截成功`];
+    * 3:宝时终审     [`无法拦截`,`成功已退回,不赔偿`,`拦截在途丢件,赔偿`]
     */
 
     /**
@@ -63,8 +63,11 @@ class WorkOrderInterceptService extends WorkOrderService
         $this->logService->createLog($detail, '创建', '创建');
     }
 
-
-
+    /**
+     * 承运商处理 和  编辑承运商已处理
+     * @param WorkOrderDetail $detail
+     * @param $params
+     */
     public function logisticHandler(WorkOrderDetail $detail,$params)
     {
         $this->logService->createLog($detail, '处理', '承运商处理');
@@ -84,4 +87,18 @@ class WorkOrderInterceptService extends WorkOrderService
         $detail->workOrder->clearWorkOrderStatus();                     // 清除创建标记
     }
 
+    /**
+     * 自动终审
+     * @param WorkOrder $workOrder
+     */
+    public function autoReviewIntercept(WorkOrder $workOrder)
+    {
+        $issueType = $this->issueTypeService->firstOrCreate(['name' => '拦截']);
+        $detail = $workOrder->details()->where('order_issue_type_id',$issueType->id)->orderByDesc('created_at')->first();
+        if (!$detail) return;
+        $this->logService->createLog($detail, '终审', '自动终审');
+        $detail->change('待货主完结','成功已退回,不赔偿','宝时终审');
+        $detail->workOrder->change('待货主完结','成功已退回,不赔偿','宝时终审');
+        $detail->workOrder->clearWorkOrderStatus();
+    }
 }

+ 36 - 3
app/Services/WorkOrderService.php

@@ -2,6 +2,8 @@
 
 namespace App\Services;
 
+use App\OracleDOCOrderHeader;
+use App\Order;
 use App\OrderIssue;
 use App\OrderIssueType;
 use App\OrderPackage;
@@ -9,7 +11,6 @@ use App\Traits\ServiceAppAop;
 use App\WorkOrder;
 use App\WorkOrderDetail;
 use Illuminate\Support\Facades\Auth;
-use Illuminate\Support\Facades\Gate;
 
 class WorkOrderService
 {
@@ -108,8 +109,8 @@ class WorkOrderService
     public function ownerEndWorkOrderDetail(WorkOrderDetail $detail)
     {
         $this->logService->createLog($detail, '完结', '货主完结');
-        $detail->change('完成','完成','待货主完结');
-        $detail->workOrder->change('完成','完成','待货主完结');
+        $detail->change('完成', '完成', '待货主完结');
+        $detail->workOrder->change('完成', '完成', '待货主完结');
         $detail->workOrder->clearWorkOrderStatus();                     // 清除创建标记
         $this->detailService->endDetail($detail);                       // 标记为处理过
     }
@@ -271,4 +272,36 @@ class WorkOrderService
     {
         $detail->logisticTagHandle();
     }
+
+    public function syncWorkOrder($rejectedBill)
+    {
+        $logistic_number_return  = $rejectedBill->logistic_number_return;
+        /**
+         * @var WorkOrder $workOrder
+         */
+        $workOrder = WorkOrder::query()->where('order_id', function ($query)use($logistic_number_return) {
+            $query->from('order_packages')->selectRaw('order_id')->where('logistic_number', $logistic_number_return);
+        })->orderByDesc('id')->first();
+        if (!$workOrder){
+            $orderHeader = OracleDOCOrderHeader::query()->selectRaw('OrderNO')->where('SoReference1', function ($query) use ($logistic_number_return) {
+                $query->select('AsnReference2')->from('DOC_ASN_HEADER')->where('AsnReference3', $logistic_number_return)->first();
+            })->first();
+            if (!$orderHeader) return;
+            $workOrder = WorkOrder::query()->where('order_id', function ($query) use ($orderHeader) {
+                $query->from('orders')->select('id')->where('code', $orderHeader->orderno);
+            })->orderByDesc('id')->first();
+        }
+        if($workOrder){
+            $workOrder->is_new_rejecting =1;
+            $workOrder->save();
+            $orderIssue = $rejectedBill->orderIssue;
+            if($orderIssue->rejecting_status == '全部退回') {
+                /**
+                 * @var WorkOrderInterceptService $workOrderInterceptService
+                 */
+                $workOrderInterceptService = app(WorkOrderInterceptService::class);
+                $workOrderInterceptService->autoReviewIntercept($workOrder);
+            }
+        }
+    }
 }

+ 23 - 1
app/WorkOrder.php

@@ -32,7 +32,7 @@ class WorkOrder extends Model
         'last_handler_id',          // 上一个处理人
         'order_issue_type_id',      // 问题件类型
         'process_progress',         // 处理进度 -----------------------------------
-                                    // 拦截:       承运商->[已处理,已签收]         宝时审核->[拦截成功,拦截失败]
+                                    // 拦截:       承运商->[已处理,已签收]         宝时审核->[`无法拦截`,`成功已退回,不赔偿`,`拦截在途丢件,赔偿`]
                                     // 信息更改:    承运商->[已处理,无法更改]       宝时审核->[更改成功,更改失败]
                                     // 快递异常:    承运商->[已处理,已拦截]         宝时审核->[丢件赔偿,签收成功]
                                     // 错漏发:      宝时处理->[已核实]            商家处理->[补发,不补发]
@@ -48,6 +48,8 @@ class WorkOrder extends Model
         'logistic_tag',             // 待承运商处理标记
         'bao_shi_tag',              // 待宝时处理标记
         'owner_tag',                // 待货主处理标记
+        "is_new_rejecting "         // 回库标记
+
     ];
 
     static public $process_progress = [
@@ -81,6 +83,10 @@ class WorkOrder extends Model
             '完成' => 5,
             '待货主完结' => 6,
         ],
+        'is_new_rejecting'=> [
+            '' => 0,
+            '回库' => 1,
+        ],
     ];
 
     function __construct(array $attributes = [])
@@ -91,6 +97,22 @@ class WorkOrder extends Model
         parent::__construct($attributes);
     }
 
+    public function getIsNewRejectingAttribute($value)
+    {
+        if (!$value) return '';
+        return self::$enums['is_new_rejecting'][$value];
+    }
+
+    public function setIsNewRejectingAttribute($value)
+    {
+        if (!$value) return;
+        if (is_numeric($value)) {
+            $this->attributes['is_new_rejecting'] = $value;
+        } else {
+            $this->attributes['is_new_rejecting'] = self::$enums['is_new_rejecting'][$value];
+        }
+    }
+
     public function getStatusAttribute($value)
     {
         if (!$value) return '';

+ 32 - 0
database/migrations/2021_12_18_102015_work_orders_add_is_new_rejecting.php

@@ -0,0 +1,32 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class WorkOrdersAddIsNewRejecting extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('work_orders', function (Blueprint $table) {
+            $table->integer('is_new_rejecting')->comment('回库标记');
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('work_orders', function (Blueprint $table) {
+            $table->dropColumn('is_new_rejecting');
+        });
+    }
+}

+ 7 - 30
resources/views/order/scanInfo/index.blade.php

@@ -15,15 +15,10 @@
                 </select>
             </div>
             <!--用户-->
-            <div class="form-group m-2" style="max-width: 200px !important;">
-                <select v-model="search.userIds" class="selectpicker form-control" multiple title="选择用户"
-                        data-actions-box="true"
-                        data-live-search="true"
-                        data-live-search-placeholder="搜索"
-                >
-                    <option v-for="(v,k) of users" :value="v.id" :key="v.id">@{{ v.name }}</option>
-                </select>
+            <div class="form-group m-2" data-toggle="tooltip" data-placement="top" title="用户名">
+                <input v-model="search.username" class="form-control" type="text" placeholder="用户名">
             </div>
+
             <div class="form-group m-2" data-toggle="tooltip" data-placement="top" title="起始日期">
                 <input v-model="search.startTime" class="form-control" type="date">
             </div>
@@ -105,9 +100,8 @@
                 }
             },
             created() {
-                this.initData();
                 let url = this.getBaseUrl();
-                url += `/api/device/listPage?size=${this.size}&current=${this.current}`;
+                url += `/api/report/scanInfo/listPage?size=${this.size}&current=${this.current}`;
                 axios.post(url, this.search).then(res => {
                     this.details.data = res.data.data.list;
                     this.details.total = res.data.data.page.total;
@@ -156,9 +150,9 @@
                     let url = '';
                     let env = "{{ config('app.env') }}";
                     if (env === 'local') {
-                        url = 'http://127.0.0.1:8116'
+                        url = 'http://127.0.0.1:8111'
                     } else if (env === 'production') {
-                        url = 'https://device.baoshi56.com'
+                        url = 'https://stat.baoshi56.com'
                     }
                     return url;
                 },
@@ -172,7 +166,7 @@
                     console.log(env);
                     let url = this.getBaseUrl();
 
-                    url += `/api/device/listPage?size=${this.size}&current=${this.current}`;
+                    url += `/api/report/scanInfo/listPage?size=${this.size}&current=${this.current}`;
                     let search = Object.assign({}, this.search)
                     if (search.startTime != null && search.startTime !== '') {
                         search.startTime += " 00:00:00";
@@ -196,23 +190,6 @@
                         }
                     });
                 },
-
-                //初始化数据 大类型和小类型的初始化,完成后才可以渲染页面
-                initData() {
-                    let names = ['device/users'];
-                    let requests = names.map(name => axios.get(this.getBaseUrl() + "/api/" + name));
-                    Promise.all(requests).then(resList => {
-                        for (let res of resList) {
-                            if ((res.config.url + '').endsWith('users')) {
-                                this.users = res.data.data;
-                            }
-                        }
-                        setTimeout(() => {
-                            $(".selectpicker").selectpicker('refresh');
-                            $('#list').removeClass('d-none');
-                        }, 50);
-                    });
-                },
             },
         });
     </script>

+ 32 - 15
resources/views/order/workOrder/index.blade.php

@@ -10,29 +10,28 @@
         <div>
             <div class="">
                 <div id="form_div" style="min-width: 1220px;"></div>
-                <div class="form-inline mt-1" id="btn">
+                <div class="ml-3 form-inline" id="btn">
                     @can('订单管理-订单问题件生成')
                         <button type="button"
-                                class="ml-1 btn btn-outline-dark btn-sm form-control-sm tooltipTarget"
+                                class="ml-2 btn  btn-sm btn-outline-dark "
                                 @click="createOrderIssue(null,false)" style="background: #dad7e8;">生成问题件
                         </button>
                     @endcan
                     @can('订单管理-订单问题件生成')
                         <button type="button"
-                                class="ml-1 btn btn-outline-primary btn-sm form-control-sm tooltipTarget"
+                                class="ml-1 btn btn-outline-primary btn-sm  "
                                 @click="exportText()">导出文本
                         </button>
                     @endcan
                     @can('订单管理-工单处理-审核')
                     @endcan
                     <button type="button"
-                            class="ml-1 btn btn-outline-dark btn-sm form-control-sm tooltipTarget"
+                            class="ml-1 btn btn-outline-dark btn-sm"
                             @click="copyLogisticNumber()" style="background: #dad7e8;">批量复制单号
                     </button>
                     @can('订单管理-工单处理-审核')
                     @endcan
                 </div>
-
                 <div>
                     <table class="table table-sm table-striped table-hover table-bordered td-min-width-80 " id="table">
                         <tbody>
@@ -48,6 +47,10 @@
                                     <span v-show="isLogisticHandler(item)" class="badge badge-success">
                                     </span>
+
+                                    <span v-show="item.is_new_rejecting ==='回库'" class="badge badge-danger">
+                                        退
+                                    </span>
                                 </td>
                                 <td>
                                     <span v-text="item.id"></span>
@@ -182,6 +185,7 @@
                         </template>
                         </tbody>
                     </table>
+                    <div class="text-info h5 btn btn">{{$workOrders->count()}}/@{{ total }}</div>
                     {{ $workOrders->withQueryString()->links() }}
                 </div>
             </div>
@@ -303,6 +307,7 @@
                 isBaoShi: false,
                 orderIssueVue: orderIssueVue,
                 workOrders: {!! $workOrders->toJson() !!}['data'],
+                total: {!!  $workOrders->toJson() !!}['total'],
                 form: null,
                 logistics: [
                         @foreach($logistics as $logistic)
@@ -343,6 +348,7 @@
                     logistic_number: null,          // 丢件快递单号
                     commodities: [],
                     process_progress: null,
+                    prev_process_progress: null,
                     is_edit: false,
                 },
                 ownerEditWorkOrder: {
@@ -404,6 +410,9 @@
             },
             computed: {},
             mounted() {
+                $(".up").slideUp();
+                $(".tooltipTarget").tooltip({'trigger': 'hover'});
+                $("#list").removeClass('d-none');
                 let data = [[
                     {name: 'created_at_start', type: 'time', tip: ['工单创建开始日期', '时间']},
                     {name: 'created_at_end', type: 'time', tip: ['工单创建结束日期', '时间']},
@@ -481,6 +490,7 @@
                 this.form = new query({
                     el: '#form_div',
                     condition: data,
+                    appendDom: "btn",
                 });
                 this.form.init();
                 let column = [
@@ -520,12 +530,11 @@
                 ];
                 new Header({
                     el: "table",
-                    name: "workOrders",
+                    name: "work_orders",
                     column: column,
                     data: this.workOrders,
-                    fixedTop: ($('#form_div').height()) + 2,
+                    fixedTop: ($('#form_div').height()) + ($('#btn').height()) + 1,
                 }).init();
-                $("#list").removeClass("d-none");
             },
             created() {
                 this.workOrders.forEach(item => {
@@ -1170,15 +1179,16 @@
                     }
                 },
                 baoShiShowDispose(item, index) {
-                    let {status} = item;
+                    let {status,process_progress} = item;
                     let {issue_type_name, detail_id, commodities} = item.pending_detail;
                     this.baoShiEditWorkOrder.is_edit = false;
                     this.selectIndex = index;
                     this.baoShiEditWorkOrder.issue_type_name = issue_type_name;
                     this.baoShiEditWorkOrder.detail_id = detail_id;
                     this.baoShiEditWorkOrder.status = status;
-
+                    this.baoShiEditWorkOrder.process_progress = null;
                     if ("拦截" === issue_type_name) {
+                        this.baoShiEditWorkOrder.prev_process_progress = process_progress ;
                         this.dialogShowBaoShiVisible = true
                     } else if ("信息更改" === issue_type_name) {
                         this.dialogShowBaoShiVisible = true
@@ -1411,9 +1421,9 @@
                     });
                 },
                 getBaoShiProcessProgress() {
-                    let {issue_type_name} = this.baoShiEditWorkOrder;
+                    let {issue_type_name,process_progress,prev_process_progress } = this.baoShiEditWorkOrder;
                     let items = [
-                        {issue_type_name: '拦截', option: ['拦截成功,不赔偿', '拦截失败,赔偿']},
+                        {issue_type_name: '拦截', option: {success: ['成功已退回,不赔偿','拦截在途丢件,赔偿'],failed:['无法拦截']}},
                         {issue_type_name: '取消拦截', option: ['已签收', '已退回']},
                         {issue_type_name: '信息更改', option: ['更改成功', '更改失败'],},
                         {issue_type_name: '快递异常', option: ['丢件赔偿', '签收成功']},
@@ -1421,6 +1431,10 @@
                         {issue_type_name: '破损', option: ['全部赔偿', '部分赔偿', '不赔偿'],},
                     ];
                     let item = items.find(e => e.issue_type_name === issue_type_name);
+                    if (issue_type_name === '拦截') {
+                        if (['拦截成功','已处理','拦截退回中'].includes(prev_process_progress)) return item.option.success;
+                        else if (['拦截失败','已签收'].includes(prev_process_progress)) return item.option.failed;
+                    }
                     return item ? item.option : [];
                 },
                 getBaoShiProcessResults() {
@@ -2566,8 +2580,7 @@
                         issue_type,
                         price,
                         status,
-                        reissue_logistic_number
-                        ,
+                        reissue_logistic_number,
                         return_logistic_number,
                         return_address,
                         return_phone,
@@ -2679,7 +2692,11 @@
                     let baoShi = @can('订单管理-工单处理-客服编辑') true
                     @else false @endcan;
                     let {logistic_tag, bao_shi_tag, owner_tag} = item;
-                    if (logistic && logistic_tag === '1') return true;
+                    if (logistic && logistic_tag === '1'){
+                        let logistic_handle_tag = item.pending_detail ?  item.pending_detail.logistic_handle_tag : '';
+                        if('承运商处理中' === logistic_handle_tag) return false;
+                        return '取消标记' !== logistic_handle_tag;
+                    }
                     if (owner && owner_tag === '1') return true;
                     if (baoShi && bao_shi_tag === '1') return true;
                     return false;

+ 70 - 45
resources/views/personnel/scanInfo/index.blade.php

@@ -15,21 +15,16 @@
                 </select>
             </div>
             <!--用户-->
-            <div class="form-group m-2" style="max-width: 200px !important;">
-                <select v-model="search.userIds" class="selectpicker form-control" multiple title="选择用户"
-                        data-actions-box="true"
-                        data-live-search="true"
-                        data-live-search-placeholder="搜索"
-                >
-                    <option v-for="(v,k) of users" :value="v.id" :key="v.id">@{{ v.name }}</option>
-                </select>
+            <div class="form-group m-2" data-toggle="tooltip" data-placement="top" title="用户名">
+                <input v-model="search.username" class="form-control" type="text" placeholder="用户名">
             </div>
+
             <div class="form-group m-2" data-toggle="tooltip" data-placement="top" title="起始日期">
-                <input v-model="search.startTime" class="form-control" type="date">
+                <input v-model="search.startTime" class="form-control" type="datetime-local" step="01">
             </div>
 
             <div class="form-group m-2" data-toggle="tooltip" data-placement="top" title="截止日期">
-                <input v-model="search.endTime" class="form-control" type="date">
+                <input v-model="search.endTime" class="form-control" type="datetime-local" step="01">
             </div>
 
             <div class="form-group m-2">
@@ -49,8 +44,16 @@
             <tr v-for="(item,i) in details.data" :key="i">
                 <td class="td-warm text-muted"><span>@{{ i+1 }}</span></td>
                 <td class="td-warm text-muted"><span>@{{ item.username }}</span></td>
+                <td class="td-warm text-muted"><span>@{{ item.empno }}</span></td>
+                <td class="td-warm text-muted"><span>打包员</span></td>
+                <td class="td-warm text-muted"><span>@{{ item.customerName }}</span></td>
                 <td class="td-warm text-muted"><span>@{{ item.count }}</span></td>
                 <td class="td-warm text-muted"><span>@{{ item.commodityNum }}</span></td>
+                <td class="td-warm text-muted"><span>0</span></td>
+                <td class="td-warm text-muted"><span>0</span></td>
+                <td class="td-warm text-muted"><span>0</span></td>
+                <td class="td-warm text-muted"><span>0</span></td>
+
             </tr>
         </table>
         <nav aria-label="...">
@@ -92,9 +95,29 @@
                 }
             },
             created() {
-                this.initData();
+                Date.prototype.format = function(fmt) {
+                    var o = {
+                        "M+": this.getMonth() + 1, //月份
+                        "d+": this.getDate(), //日
+                        "h+": this.getHours(), //小时
+                        "m+": this.getMinutes(), //分
+                        "s+": this.getSeconds(), //秒
+                        "q+": Math.floor((this.getMonth() + 3) / 3), //季度
+                        "S": this.getMilliseconds() //毫秒
+                    };
+                    if (/(y+)/.test(fmt)) {
+                        fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
+                    }
+                    for (var k in o) {
+                        if (new RegExp("(" + k + ")").test(fmt)) {
+                            fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
+                        }
+                    }
+                    return fmt;
+                }
+
                 let url = this.getBaseUrl();
-                url += `/api/device/group/listPage?size=${this.size}&current=${this.current}`;
+                url += `/api/report/scanInfo/group/listPage?size=${this.size}&current=${this.current}`;
                 axios.post(url, this.search).then(res => {
                     this.details.data = res.data.data.list;
                     this.details.total = res.data.data.page.total;
@@ -105,19 +128,7 @@
             },
             mounted: function () {
                 $('#list').removeClass('d-none');
-                let column = [
-                    {name: 'username', value: '用户'},
-                    {name: 'count', value: '快递数量'},
-                    {name: 'commodity_num', value: '商品数量'},
-                ];
-                new Header({
-                    el: "table",
-                    name: "details",
-                    column: column,
-                    data: this.details.data,
-                    restorationColumn: 'addtime',
-                    fixedTop: ($('#form_div').height()) + ($('#btn').height()) + 1,
-                }).init();
+                this.rendingHeader();
             },
             methods: {
                 resetSearch() {
@@ -138,9 +149,9 @@
                     let url = '';
                     let env = "{{ config('app.env') }}";
                     if (env === 'local') {
-                        url = 'http://127.0.0.1:8116'
+                        url = 'http://127.0.0.1:8111'
                     } else if (env === 'production') {
-                        url = 'https://device.baoshi56.com'
+                        url = 'https://stat.baoshi56.com'
                     }
                     return url;
                 },
@@ -154,13 +165,13 @@
                     console.log(env);
                     let url = this.getBaseUrl();
 
-                    url += `/api/device/group/listPage?size=${this.size}&current=${this.current}`;
+                    url += `/api/report/scanInfo/group/listPage?size=${this.size}&current=${this.current}`;
                     let search = Object.assign({}, this.search)
                     if (search.startTime != null && search.startTime !== '') {
-                        search.startTime += " 00:00:00";
+                        search.startTime = new Date(Date.parse(search.startTime)).format("yyyy-MM-dd hh:mm:ss");
                     }
                     if (search.endTime != null && search.endTime !== '') {
-                        search.endTime += " 23:59:59";
+                        search.endTime =new Date(Date.parse(search.endTime)).format("yyyy-MM-dd hh:mm:ss");
                     }
                     axios.post(url, search).then(res => {
                         if (res.data.data === undefined) {
@@ -178,24 +189,38 @@
                         }
                     });
                 },
+                rendingHeader() {
+                    let column = [
+                        {name: 'name', value: '姓名', neglect: true, class: "td-cool"},
+                        {name: 'work_code', value: '工号', neglect: true, class: "td-warm"},
+                        {name: 'work_type', value: '岗位', neglect: true, class: "td-warm"},
+                        {name: 'owner_name', value: '货主', neglect: true, class: "td-warm"},
+                        {name: 'package_order_num', value: '订单数', neglect: true, class: "td-warm"},
+                        {name: 'package_commodity_num', value: '单品数', neglect: true, class: "td-warm"},
+                        {name: 'invoice_order_num', value: '订单数', neglect: true, class: "td-warm"},
+                        {name: 'invoice_commodity_num', value: '单品数', neglect: true, class: "td-warm"},
+                        {name: 'scan_order_num', value: '订单数', neglect: true, class: "td-warm"},
+                        {name: 'scan_commodity_num', value: '单品数', neglect: true, class: "td-warm"},
 
-                //初始化数据 大类型和小类型的初始化,完成后才可以渲染页面
-                initData() {
-                    let names = ['device/users'];
-                    let requests = names.map(name => axios.get(this.getBaseUrl() + "/api/" + name));
-                    Promise.all(requests).then(resList => {
-                        for (let res of resList) {
-                            if ((res.config.url + '').endsWith('users')) {
-                                this.users = res.data.data;
-                            }
-                        }
-                        setTimeout(() => {
-                            $(".selectpicker").selectpicker('refresh');
-                            $('#list').removeClass('d-none');
-                        }, 50);
-                    });
+
+                    ];
+                    new Header({
+                        el: "table",
+                        name: "details",
+                        column: column,
+                        data: this.details.data,
+                        restorationColumn: 'id',
+                        fixedTop: ($('#form_div').height()) + ($('#btn').height()) + 2,
+                        before: [
+                            {colspan: '5', value: '员工信息', class: "table-header-layer-1"},
+                            {colspan: '2', value: '打包业绩', class: "table-header-layer-1"},
+                            {colspan: '2', value: '配货业绩', class: "table-header-layer-1"},
+                            {colspan: '2', value: '扫描业绩', class: "table-header-layer-1"},
+                        ],
+                    }).init();
                 },
             },
         });
     </script>
 @endsection
+