Jelajahi Sumber

同步快递信息到orderPackage 页面添加查询总条数的按钮

ANG YU 4 tahun lalu
induk
melakukan
521835e35b

+ 21 - 1
app/Http/Controllers/PackageLogisticController.php

@@ -55,6 +55,26 @@ class PackageLogisticController extends Controller
         return view('package.logistic.index', compact('orderPackages', 'logistics', 'owners', 'paginateParams'));
     }
 
+    /**
+     * 获取查询条件下的总条数
+     * @param Request $request
+     * @param OrderPackageFilters $filters
+     * @return array
+     */
+    public function getTotal(Request $request, OrderPackageFilters $filters): array
+    {
+
+        /** @var UserService $userService */
+        $userService = app('UserService');
+        $owner_ids = $userService->getPermittingOwnerIds(auth()->user());
+        $total = OrderPackage::query()
+            ->selectRaw("count(*) as total")
+            ->filter($filters)
+            ->whereIn('owner_id', $owner_ids)
+            ->first();
+        return ['success' => true, 'data' => ['total' => $total->total]];
+    }
+
     public function update(Request $request)
     {
         $data = [];
@@ -102,7 +122,7 @@ class PackageLogisticController extends Controller
         $userService = app('UserService');
         $owner_ids = $userService->getPermittingOwnerIds(auth()->user());
         $query = OrderPackage::query()
-            ->whereIn('owner_id',$owner_ids)
+            ->whereIn('owner_id', $owner_ids)
             ->filter($filters)
             ->with([
                 'order.logistic',

+ 92 - 31
resources/views/package/logistic/index.blade.php

@@ -2,14 +2,15 @@
 @section('title')快递查询-包裹管理@endsection
 @section('head')
     <style>
-        .package-logistic-index{
-            position:relative;
+        .package-logistic-index {
+            position: relative;
         }
 
         /*备注容器*/
-        .order-package-remarks{
-            position:relative;
+        .order-package-remarks {
+            position: relative;
         }
+
         /*新建按钮*/
         .btn-create-remark {
             width: 25px;
@@ -24,9 +25,11 @@
             box-shadow: 0 0 6px #4747f1;
             float: left;
         }
-        .order-package-remarks:hover .btn-create-remark{
+
+        .order-package-remarks:hover .btn-create-remark {
             display: block;
         }
+
         /*新建输入框*/
         .remark-input {
             height: 30px;
@@ -36,6 +39,7 @@
             box-shadow: 0 0 6px #fff6a1;
             border-radius: 5px;
         }
+
         /*删除按钮*/
         .order-package-remarks table .destroy {
             float: right;
@@ -47,7 +51,7 @@
             border: 0 solid transparent !important;
         }
 
-        .remark-created_at{
+        .remark-created_at {
             border-right: none !important;
         }
 
@@ -59,7 +63,7 @@
             box-shadow: 0 0 6px #ac4a4a;
         }
 
-        .order-package-remarks table:hover .btn-destroy-remark{
+        .order-package-remarks table:hover .btn-destroy-remark {
             display: block;
         }
 
@@ -117,6 +121,18 @@
                         <button type="button" class="btn btn-outline-dark btn-sm form-control-sm  tooltipTarget"
                                 @click="copyLogisticNumber" style="background: #dad7e8;">复制快递单号</button>
                     </span>
+{{--                    获取查询条件下的总条数--}}
+                    <span class="ml-1">
+                        <button type="button" class="btn btn-outline-success btn-sm form-control-sm  tooltipTarget"
+                                @click="getTotal()"
+                                style="background: #dad7e8;">
+                            <span v-if="!total.loading">
+                                @{{ total.number===null?'获取总量':'总量:'+ total.number }}
+                            </span>
+                            <span v-else style="margin-left: 5px"><i class="fa fa-circle-o-notch fa-spin"></i>
+                            </span>
+                        </button>
+                    </span>
                 @endcan
             </div>
             <table class="table table-striped table-bordered table-hover card-body td-min-width-80" id="table">
@@ -135,12 +151,12 @@
                             <!--               是否为问题件         -->
                             <span class="badge badge-danger" v-if="package.order.issue">?</span>
 
-<!--       是否手动修改                     -->
+                            <!--       是否手动修改                     -->
                             <span v-if="package.is_manual_update">
                                 <i class="fa fa-hand-paper-o" aria-hidden="true"
                                    style="color: red;margin-left: 5px"></i>
                             </span>
-<!--     延时发货图标                       -->
+                            <!--     延时发货图标                       -->
                             <span
                                 v-if="package.is_delay_deliver"
                                 style="margin-left: 5px">
@@ -207,33 +223,40 @@
                             <label class="text-center mt-0 p-0 cursor-pointer pull-left">
                                 <span class="fa"
                                       :class="package.showMoreRemark ? 'fa-angle-double-down' : 'fa-angle-double-right'"></span>
-                                &nbsp;<span v-if="package.order_package_remarks && package.showMoreRemark">收起</span><span
-                                    v-else>展开</span>&nbsp;@{{ package.order_package_remarks.length }} 条
-                            </label>
-                        </div>
+                                    &nbsp;<span v-if="package.order_package_remarks && package.showMoreRemark">收起</span><span
+                                        v-else>展开</span>&nbsp;@{{ package.order_package_remarks.length }} 条
+                                </label>
+                            </div>
                         @endcan
                     </td>
-                    <td class="text-overflow-warp-200"><span v-if="package.order && package.order.issue">@{{ package.order.issue.result_explain }}</span></td>
+                    <td class="text-overflow-warp-200"><span v-if="package.order && package.order.issue">@{{ package.order.issue.result_explain }}</span>
+                    </td>
                     <td class="text-overflow-warp-200"><span
                             v-if="package.order && package.order.issue && package.order.issue.issue_type">@{{ package.order.issue.issue_type.name }}</span>
                     </td>
-                    <td class="text-overflow-warp-200">@{{ package.order && package.order.batch && package.order.batch.wms_type }}</td>
-                    <td class="text-overflow-warp-200">@{{ package.order && package.order.oracle_d_o_c_order_header && package.order.oracle_d_o_c_order_header.waveno }}</td>
+                    <td class="text-overflow-warp-200">@{{ package.order && package.order.batch &&
+                        package.order.batch.wms_type }}
+                    </td>
+                    <td class="text-overflow-warp-200">@{{ package.order && package.order.oracle_d_o_c_order_header &&
+                        package.order.oracle_d_o_c_order_header.waveno }}
+                    </td>
                     <td class="text-overflow-warp-200"><span
                             v-if="package.order && package.order.issue && package.order.issue.logs.length >0"><span
                                 v-for="log in package.order.issue.logs">@{{ log.content }}<br></span></span></td>
                     <td class="text-overflow-warp-200"><span
                             v-if="package.order && package.order.issue && package.order.issue.logs.length >0"><span
-                                v-for="log in package.order.issue.logs">@{{ log && log.user && log.user.name }}<br></span></span></td>
+                                v-for="log in package.order.issue.logs">@{{ log && log.user && log.user.name }}<br></span></span>
+                    </td>
                     <td class="text-overflow-warp-200"><span
                             v-if="package.order && package.order.issue && package.order.issue.logs.length >0"><span
                                 v-for="log in package.order.issue.logs">@{{ log.created_at }}<br></span></span></td>
                 </tr>
             </table>
-{{--            <div class="text-info h5 btn btn">{{$orderPackages->count()}}/{{$orderPackages->total()}}</div>--}}
-            {{$orderPackages->appends($paginateParams)->links()}}
+        {{--            <div class="text-info h5 btn btn">{{$orderPackages->count()}}/{{$orderPackages->total()}}</div>--}}
+        {{$orderPackages->appends($paginateParams)->links()}}
         <!-- Modal -->
-            <div class="modal fade" id="staticBackdrop" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true" z-index="51">
+            <div class="modal fade" id="staticBackdrop" data-backdrop="static" data-keyboard="false" tabindex="-1"
+                 aria-labelledby="staticBackdropLabel" aria-hidden="true" z-index="51">
                 <div class="modal-dialog">
                     <div class="modal-content">
                         <div class="modal-header">
@@ -244,11 +267,14 @@
                         </div>
                         <div class="modal-body">
                             <div class="form-group">
-                                <textarea v-model="bench_remark" style="width:80%;margin: 0 auto;" class="form-control" id="exampleFormControlTextarea1" rows="3"></textarea>
+                                <textarea v-model="bench_remark" style="width:80%;margin: 0 auto;" class="form-control"
+                                          id="exampleFormControlTextarea1" rows="3"></textarea>
                             </div>
                         </div>
                         <div class="modal-footer">
-                            <button @click="bench_remark = ''" type="button" class="btn btn-secondary" data-dismiss="modal">关闭</button>
+                            <button @click="bench_remark = ''" type="button" class="btn btn-secondary"
+                                    data-dismiss="modal">关闭
+                            </button>
                             <button @click="submitBenchRemark" type="button" class="btn btn-primary">提交</button>
                         </div>
                     </div>
@@ -267,6 +293,10 @@
         let vue = new Vue({
             el: "#list",
             data: {
+                total: {
+                    number: null,
+                    loading: false
+                },
                 packages: [
                     @foreach($orderPackages as $package)
                         {!! $package !!},
@@ -345,7 +375,7 @@
                             name: 'status',
                             type: 'select_multiple_select',
                             tip: ['输入关键词快速定位下拉列表,回车确定', '选择要显示的状态'],
-                            placeholder: ['状态','定位或多选状态'],
+                            placeholder: ['状态', '定位或多选状态'],
                             data: [
                                 {name: '0', value: '空'},
                                 {name: '1', value: '生成订单'},
@@ -470,14 +500,19 @@
                             ]
                         },
                         {name: 'default_date', type: 'checkbox', tip: '默认15天', data: [{name: 'ture', value: '默认15天'}]},
-                        {name: 'default_logistics', type: 'checkbox', tip: '默认承运商', data: [{name: 'ture', value: '默认承运商'}]},
+                        {
+                            name: 'default_logistics',
+                            type: 'checkbox',
+                            tip: '默认承运商',
+                            data: [{name: 'ture', value: '默认承运商'}]
+                        },
                         {name: 'virtual_receive', type: 'checkbox', tip: '虚拟揽收', data: [{name: 'ture', value: '虚拟揽收'}]},
                     ]
                 ];
                 _this.form = new query({
                     el: '#form_div',
                     condition: data,
-                    appendDom : "btn",
+                    appendDom: "btn",
                 });
                 _this.form.init();
                 let column = [
@@ -514,6 +549,31 @@
                 }).init();
             },
             methods: {
+                //获取查询条件下的总条数
+                getTotal() {
+                    if (!this.total.loading) {
+                        this.total.loading = true
+                        let query = "{{ request()->getQueryString() }}";
+                        query = query.replace(/amp;/g, "");
+                        let url = "{{ url()->current() }}";
+                        url += `/getTotal?${query}`;
+                        axios.get(url).then(res => {
+                            this.$forceUpdate();
+                            let responseData = res.data;
+                            if (responseData.success) {
+                                this.total.number = responseData.data.total;
+                                this.total.loading = false
+                                tempTip.showSuccess('获取总量成功!');
+                            }
+                        }).catch(e => {
+                            this.total.loading = false
+                            tempTip.show(`获取异常请稍后再试!${e}`);
+                        });
+                    } else {
+                        tempTip.show(`点击过于频繁请稍后再试!${e}`);
+                    }
+                },
+
                 showRoute(id) {
                     if (this.showList[id]) {
                         this.$set(this.showList, id, false);
@@ -535,7 +595,7 @@
                     this.$forceUpdate();
                 },
                 batchStatusUpdate() {
-                    if(!confirm('是否却认操作')) return;
+                    if (!confirm('是否却认操作')) return;
                     let _this = this;
                     if (checkData.length === 0) {
                         tempTip.show('没有勾选记录');
@@ -551,7 +611,7 @@
                     })
                 },
                 batchExceptionStatusUpdate() {
-                    if(!confirm('是否却认操作')) return;
+                    if (!confirm('是否却认操作')) return;
                     let _this = this;
                     if (checkData.length === 0) {
                         tempTip.show('没有勾选记录');
@@ -587,7 +647,7 @@
                     let _this = this;
                     tempTip.setDuration(2000);
                     tempTip.showSuccess('正在操作请稍后!');
-                    axios.put(url, {remark: _this.remark, orderPackageId: orderPackage.id}).then(response=>{
+                    axios.put(url, {remark: _this.remark, orderPackageId: orderPackage.id}).then(response => {
                         if (response.data.success) {
                             orderPackage.order_package_remarks = response.data.data
                             tempTip.setDuration(2000);
@@ -603,15 +663,16 @@
                         tempTip.show("网络错误:" + err)
                     });
                 },
-                destroyRemark(orderPackage,remarkId) {
+                destroyRemark(orderPackage, remarkId) {
                     let url = '{{url('apiLocal/package/logistic/delete')}}';
                     if (!confirm('是否却认删除', false)) {
                         return;
-                    };
+                    }
+                    ;
                     let _this = this;
                     tempTip.setDuration(2000);
                     tempTip.showSuccess('正在操作请稍后!');
-                    axios.post(url, {orderPackageId: orderPackage.id,remarkId:remarkId}).then(response=>{
+                    axios.post(url, {orderPackageId: orderPackage.id, remarkId: remarkId}).then(response => {
                         if (response.data.success) {
                             orderPackage.order_package_remarks = response.data.data
                             tempTip.setDuration(2000);

+ 4 - 0
routes/web.php

@@ -507,6 +507,7 @@ Route::group(['prefix'=>'package'],function(){
     });
     Route::get('weigh/index','WeighController@index');
     Route::resource('weigh','WeighController');
+    Route::get('logistic/getTotal','PackageLogisticController@getTotal');
     Route::put('logistic/batchUpdate','PackageLogisticController@batchUpdate');
     Route::any('logistic/export','PackageLogisticController@export');
     Route::resource('logistic','PackageLogisticController');
@@ -1103,5 +1104,8 @@ Route::group(['prefix'=>'package'],function(){
             Route::post('/toTarget', 'NotificationController@toTarget');
         }
     );
+    Route::group(['prefix' => 'kpi'], function () {
+        Route::get( 'month', 'KpiController@monthIndex');
+    });
 });