Bladeren bron

Merge branch 'waybill_ZD'

# Conflicts:
#	composer.lock
LD 6 jaren geleden
bovenliggende
commit
72f93a1543

+ 1 - 0
.gitignore

@@ -3,6 +3,7 @@
 /public/storage
 /public/js
 /public/css
+/public/mix-manifest.json
 /storage/*.key
 /vendor
 .env

+ 3 - 1
app/Exports/WaybillExport.php

@@ -4,10 +4,12 @@ use Maatwebsite\Excel\Concerns\FromCollection;
 use Maatwebsite\Excel\Concerns\ShouldAutoSize;
 use Maatwebsite\Excel\Concerns\WithColumnFormatting;
 use Maatwebsite\Excel\Concerns\WithCustomValueBinder;
+use Maatwebsite\Excel\Concerns\WithStrictNullComparison;
 use PhpOffice\PhpSpreadsheet\Cell\StringValueBinder;
 use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
 
-class WaybillExport extends StringValueBinder implements FromCollection,ShouldAutoSize,WithColumnFormatting,WithCustomValueBinder
+class WaybillExport extends StringValueBinder implements FromCollection,
+    ShouldAutoSize,WithColumnFormatting,WithCustomValueBinder,WithStrictNullComparison
 {
     private $row;
     private $data;

+ 4 - 3
app/Http/Controllers/Auth/RegisterController.php

@@ -87,9 +87,10 @@ class RegisterController extends Controller
             $user->roles()->sync($roleIdArr);
         }
 //        $this->guard()->login($user);
-        $carrier_id=$request->input('carrier_id')??'';
-        if ($carrier_id){
-            $user->carriers()->sync($carrier_id);
+        $carrierIds=$request->input('carrier')??'';
+        if ($carrierIds){
+            $carrierIds=explode(',',$carrierIds);
+            $user->carriers()->sync($carrierIds);
         }
         $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),$user['id']);
         if($headTo){return redirect(url($headTo))->with('successTip',"录入用户 {$user->name} 成功");}

+ 4 - 3
app/Http/Controllers/OwnerController.php

@@ -62,14 +62,15 @@ class OwnerController extends Controller
     protected function validatorCreate(array $data)
     {
         return Validator::make($data, [
-            'code' => ['required', 'string', 'max:50', 'unique:owners'],
+            'code' => ['required', 'string', 'max:50', "unique:owners,code"],
             'name' => ['required', 'string', 'max:50'],
         ]);
     }
-    protected function validatorUpdate(array $data)
+    protected function validatorUpdate(array $data,$id)
     {
         return Validator::make($data, [
             'name' => ['required', 'string', 'max:50'],
+            'code'=>['required', 'string', 'max:50',"unique:owners,code,$id"]
         ]);
     }
     /**
@@ -105,7 +106,7 @@ class OwnerController extends Controller
     public function update(Request $request, Owner $owner)
     {
         if(!Gate::allows('货主-编辑')){ return redirect(url('/'));  }
-        $this->validatorUpdate($request->all())->validate();
+        $this->validatorUpdate($request->all(),$owner->id)->validate();
         $owner->fill($request->all());
         $owner->update();
         event(new CustomerStored($owner));

+ 65 - 3
app/Http/Controllers/PackageController.php

@@ -8,12 +8,19 @@ use App\Logistic;
 use App\Owner;
 use App\Package;
 use App\PaperBox;
+use Box\Spout\Common\Helper\Escaper\XLSX;
+use Box\Spout\Common\Type;
+use Box\Spout\Writer\Common\Creator\WriterEntityFactory;
+use Box\Spout\Writer\Common\Creator\WriterFactory;
 use Carbon\Carbon;
 use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\DB;
 use Illuminate\Support\Facades\Gate;
 use Illuminate\Support\Facades\Validator;
 use Maatwebsite\Excel\Facades\Excel;
+use Box\Spout\Common\Entity\Row;
+
 
 class PackageController extends Controller
 {
@@ -51,11 +58,10 @@ class PackageController extends Controller
         if(!Gate::allows('称重管理-查询')){ return redirect(url('/'));  }
         if ($request->input()){
             $packages=Package::orderBy('id','DESC');
-
             $packages=$this->conditionQuery($request,$packages);
             $packages=$packages->paginate($request->input('paginate')?$request->input('paginate'):50);
             $owners=Owner::select('id','name')->get();
-            return view('weight.package.index',['packages'=>$packages,'owners'=>$owners]);
+            return view('weight.package.index',['packages'=>$packages,'owners'=>$owners,'request'=>$request->input()]);
         }
         $packages=Package::orderBy('id','DESC')->paginate(50);
         $owners=Owner::select('id','name')->get();
@@ -95,6 +101,7 @@ class PackageController extends Controller
         if ($package){
             $accomplishToWMS=new \App\Http\Controllers\Api\thirdPart\flux\PackageController();
             if ($package->batch_rule&&strstr($package->batch_rule,'组合')){
+                $this->log(__METHOD__,'活动波次开始同步_'.__FUNCTION__,json_encode($package),Auth::user()['name']);
                 $this->syncBatch($package->batch_number,$weight,null,null,null,Carbon::now(),$paper_box_id);
             }else{
                 $package->weight=$weight;
@@ -117,10 +124,12 @@ class PackageController extends Controller
             ]);
         }
         $package->save();
+        $this->log(__METHOD__,'create_'.__FUNCTION__,json_encode($package),Auth::user()['name']);
         event(new WeighedEvent($package));
         return redirect('package/create')->with('successTip','操作成功');
     }
 
+
     public function statistics(Request $request){
         $packages=Package::select(DB::raw('owner_id,logistic_id,COUNT(logistic_id) AS count'))->whereNotNull('owner_id');
         if($request->input('owner_id')){
@@ -137,13 +146,25 @@ class PackageController extends Controller
         if($request->input('date_end')){
             $packages=$packages->where('created_at','<=',$request->input('date_end'));
         }
-
         $packages=$packages->groupBy(['owner_id','logistic_id'])->get();
         $owners=Owner::get();
         $logistics=Logistic::get();
+        if ($request->input('checkSign')){
+            if ($request->input('checkSign')=="-1"){
+                $excel=$this->statisticExport($packages,$owners,$logistics);
+                return $excel;
+            }
+            $id=$id = explode( ',',$request->input('checkSign'));
+            $packages=Package::select(DB::raw('owner_id,logistic_id,COUNT(logistic_id) AS count'))
+                ->whereIn('owner_id',$id)->groupBy(['owner_id','logistic_id'])->get();
+            $excel=$this->statisticExport($packages,$owners,$logistics);
+            return $excel;
+
+        }
         return view('weight.package.statistics',["packages"=>$packages,'owners'=>$owners,'logistics'=>$logistics]);
     }
 
+
     /**
      * Display the specified resource.
      *
@@ -293,7 +314,48 @@ class PackageController extends Controller
                 $packageBatch->status="上传异常";
             }
             $packageBatch->save();
+            $this->log(__METHOD__,'SUCCESS_'.__FUNCTION__,json_encode($packageBatch));
+        }
+    }
+
+    public function statisticExport($packages,$owners,$logistics){
+        if (!$packages||!$owners||!$logistics) return;
+        $row=[[]];
+        $row[0]['owner']='货主';
+        $row[0]['sum']='总计';
+        foreach ($logistics as $logistic){
+            $row[0][$logistic->id]=$logistic->name;
+        }
+        $ownerArr=[];
+        foreach ($owners as $owner){
+            foreach ($packages as $package){
+                if ($owner->id==$package->owner_id){
+                    $ownerArr[$owner->name][$package->logistic_id]=$package->count;
+                }
+            }
         }
+        $list=[];
+        $i=0;
+        foreach ($owners as $owner){
+            if (isset($ownerArr[$owner->name])){
+                $w['owner']=$owner->name;
+                $sum=0;
+                foreach ($logistics as $logistic){
+                    if (isset($ownerArr[$owner->name][$logistic->id])){
+                        $w[$logistic->id]=$ownerArr[$owner->name][$logistic->id];
+                        $sum=$sum+$ownerArr[$owner->name][$logistic->id];
+                    }
+                    if (!isset($ownerArr[$owner->name][$logistic->id])){
+                        $w[$logistic->id]=0;
+                    }
+                }
+                $w['sum']=$sum;
+                $list[$i]=$w;
+                $i++;
+            }
+        }
+        return Excel::download(new WaybillExport($row,$list),date('YmdHis', time()).'-称重统计记录单.xls');
     }
 
+
 }

+ 6 - 0
app/Http/Controllers/TestController.php

@@ -128,4 +128,10 @@ class TestController extends Controller
             $authority->delete();
         });
     }
+
+    public function test1(){
+        $a=Package::select('id','batch_rule')->find(6);
+        $a->batch_rule="b";
+        $a->update(); //$a->save();
+    }
 }

+ 4 - 3
app/Http/Controllers/UserController.php

@@ -105,9 +105,10 @@ class UserController extends Controller
         }else{
             $user->roles()->sync([]);
         }
-        $carrier_id=$request->input('carrier_id')??'';
-        if($carrier_id){
-            $user->carriers()->sync($carrier_id);
+        $carrierIds=$request->input('carrier')??'';
+        if($carrierIds){
+            $carrierIds=explode(',',$carrierIds);
+            $user->carriers()->sync($carrierIds);
         }else{
             $user->carriers()->sync([]);
         }

+ 1 - 1
app/Jobs/MarkPackageExcepted.php

@@ -47,7 +47,7 @@ class MarkPackageExcepted implements ShouldQueue
             $pickedPackage->status="下发异常";
             $pickedPackage->save();
         }
-        if (!$pickedPackage->measuring_machine_id){
+        if (!$pickedPackage->weight){
             $pickedPackage->status="测量异常";
             $pickedPackage->save();
         }

+ 2 - 2
public/js/app.js

@@ -61348,8 +61348,8 @@ module.exports = tempTip;
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
-__webpack_require__(/*! D:\Reald\desktop\BsWAS\src\resources\js\app.js */"./resources/js/app.js");
-module.exports = __webpack_require__(/*! D:\Reald\desktop\BsWAS\src\resources\sass\app.scss */"./resources/sass/app.scss");
+__webpack_require__(/*! D:\Demo\bswas\resources\js\app.js */"./resources/js/app.js");
+module.exports = __webpack_require__(/*! D:\Demo\bswas\resources\sass\app.scss */"./resources/sass/app.scss");
 
 
 /***/ }),

+ 0 - 6
public/mix-manifest.json

@@ -1,6 +0,0 @@
-{
-    "/js/app.js": "/js/app.js",
-    "/css/app.css": "/css/app.css",
-    "/js/singles/rejectedIndex200310.js": "/js/singles/rejectedIndex200310.js",
-    "/favicon.ico": "/favicon.ico"
-}

+ 1 - 1
resources/views/layouts/menu.blade.php

@@ -5,7 +5,7 @@
             <li class="nav-item"><a href="{{url("rejected/")}}" class="nav-link"
                                     :class="{active:isActive('rejected',1)}">退货管理</a></li> @endcan
         @can('入库管理')
-            <li class="nav-item"><a href="{{url("store/fast")}}" class="nav-link"
+            <li class="nav-item"><a href="{{url("store")}}" class="nav-link"
                                     :class="{active:isActive('store',1)}">入库管理</a></li> @endcan
         @can('运输管理')
             <li class="nav-item"><a href="{{url("waybill/index")}}" class="nav-link"

+ 66 - 59
resources/views/maintenance/role/create.blade.php

@@ -28,23 +28,20 @@
                     </div>
                     <div class="form-group row">
                         <label for="authority" class="col-2 col-form-label text-md-right">权限</label>
-
                         <div class="col-8">
-                            <input name="authority" type="hidden" v-model="authoritiesStr" required>
-                            <div class="input-group">
-                                <select id="authorityAddingItem" class="form-control">
-                                    <option :value="authority.id" v-for="authority in authoritiesAll">@{{ authority.name }}</option>
-                                </select>
-                                <span class="input-group-append">
-                                            <span class="input-group-text btn-outline-info" style="cursor: pointer;" @click="addRole">
-                                                添加左边的权限
-                                            </span>
-                                        </span>
+                        <input type="text"  class="form-control tooltipTarget" placeholder="定位权限"
+                               @input="seekAuthority($event)" title="输入关键词快速定位下拉列表"></div>
+                    </div>
+                    <div class="form-group row">
+                        <label class="col-2"></label>
+                        <div class="col-8">
+                            <input name="authority" hidden   v-model="authorities" >
+                            <div class="input-group" style="max-height: 150px; overflow-y: scroll;border-radius:5px;opacity:0.8;text-align: center;">
+                                <ul class="list-group tooltipTarget" style="width: 100%" onselectstart="return false;">
+                                    <li  :title="authority.style ? '双击删除权限' :'双击添加权限'"    v-for="authority in authoritiesAll" :id="authority.name" class="list-group-item list-group-item-action pt-0 pb-0"
+                                         @dblclick="selectedAuthority(authority)" :class="authority.style ? 'active' :''"><span style="cursor: default;" :id="authority.name"> @{{ authority.name }}  </span></li>
+                                </ul>
                             </div>
-                            <select size="8" class="form-control @error('authority') is-invalid @enderror "
-                                    :class="authoritiesStr?'tooltipTarget':''" title="两次点击移除目标">
-                                <option :value="authority.id" v-for="authority in authorities" @click="clickingRoleOption">@{{ authority.name }}</option>
-                            </select>
                             @error('authority')
                             <span class="invalid-feedback">
                                         <strong>{{ $message }}</strong>
@@ -70,63 +67,73 @@
             data:{
                 authoritiesAll:[
                         @foreach( $authoritiesAll as $authority )
-                    {id:'{{$authority->id}}',name:'{{$authority->alias_name}}',},
+                    {id:'{{$authority->id}}',name:'{{$authority->alias_name}}',style:false},
                     @endforeach
                 ],
-                authorities:[],
-                authoritiesStr:'{{ old('authority') }}'
+                authorities:[{{old('authority')}}],
             },
             mounted:function(){
                 $(".tooltipTarget").tooltip({'trigger':'hover'});
+                if (this.authorities.length>0){
+                    let authoritiesAll=this.authoritiesAll;
+                    let authorities=this.authorities;
+                    for (let i = 0; i < authorities.length; i++) {
+                        authoritiesAll.every(function (authorityAll) {
+                            if (authorityAll.id == authorities[i]) {
+                                authorityAll.style = true;
+                                return false;
+                            }
+                            return true;
+                        });
+                    }
+                }
             },
             methods:{
-                addRole:function () {
-                    let $authorityAddingItem = $('#authorityAddingItem');
-                    let val=$authorityAddingItem.val();
-                    let authorityName = $authorityAddingItem.find("option:selected").text();
-                    let isLackOf=this.authorities.every(function(authority){
-                        return authority.id !== val;
-                    });
-                    if(isLackOf){
-                        this.authorities.push({id:val,name: authorityName})
-                        this.authoritiesCompileToStr()
-                    }else{
-                        tempTip.setDuration(1500);
-                        tempTip.show('已添加'+authorityName)
-                    }
-                },
-                clickingRoleOption:function(e){
-                    let target = $(e.target);
-                    if(typeof target.attr('data-clicked')=='undefined'||target.attr('data-clicked')==='0'){
-                        target.attr('data-clicked',1);
-                        setTimeout(function(){target.attr('data-clicked','0');},1500)
+                selectedAuthority:function (e) {
+                    let authorities=this.authorities;
+                    let authoritiesAll=this.authoritiesAll;
+                    let isAuthorty=true;
+                    if (authorities) {
+                        for (let i = 0; i < authorities.length; i++) {
+                            if (authorities[i] == e.id) {
+                                authorities.splice(i,1);
+                                authoritiesAll.every(function (authorityAll) {
+                                    if (authorityAll.id == e.id) {
+                                        authorityAll.style = false;
+                                        return false;
+                                    }
+                                    return true;
+                                });
+                                isAuthorty= false;
+                                break;
+                            }
+                            isAuthorty= true;
+                        }
                     }
-                    else{
-                        target.attr('data-clicked',parseInt(target.attr('data-clicked'))+1);
-                        this.removeRole(target.val(),target.find("option:selected").text())
+                    if (isAuthorty || !authorities){
+                        authorities.push(e.id);
+                        authoritiesAll.every(function (authorityAll) {
+                            if (authorityAll.id==e.id){
+                                authorityAll.style=true;
+                                return false;
+                            }
+                            return  true;
+                        });
                     }
                 },
-                removeRole:function(id,name){
-                    let _this=this;
-                    tempTip.confirm('确定要删除权限' + name + '吗?',function () {
-                        for(let i=0;i<_this.authorities.length;i++){
-                            if(_this.authorities[i].id===id){
-                                _this.authorities.splice(i, 1);
-                                _this.authoritiesCompileToStr();
-                                break;
-                            }
+                seekAuthority:function (e) {
+                    let $val=e.target.value;
+                    let authoritiesAll=this.authoritiesAll;
+                    authoritiesAll.every(function (authorityAll) {
+                        let name=authorityAll.name;
+                        if (name.includes($val)){
+                            location.href="#"+authorityAll.name;
+                            return false;
                         }
+                        return  true;
                     });
+                    $(e.target).focus();
                 },
-                authoritiesCompileToStr:function(){
-                    let ids=this.authorities.map(function(authority){
-                        return authority.id;
-                    });
-                    this.authoritiesStr=ids.join(',');
-                    setTimeout(function(){
-                        $(".tooltipTarget").tooltip({'trigger':'hover'});
-                    },20);
-                }
             },
         });
 

+ 74 - 64
resources/views/maintenance/role/edit.blade.php

@@ -33,26 +33,23 @@
                         </div>
                     </div>
                     <div class="form-group row">
-                        <label for="authority" class="col-md-3 col-form-label text-md-right">权限</label>
-
-                        <div class="col-md-7">
-                            <input name="authority" type="hidden" v-model="authoritiesStr" required>
-                            <div class="input-group">
-                                <select id="authorityAddingItem" class="form-control">
-                                    <option :value="authority.id" v-for="authority in authoritiesAll">@{{ authority.name }}</option>
-                                </select>
-                                <span class="input-group-append">
-                                            <span class="input-group-text btn-outline-info" style="cursor: pointer;" @click="addRole">
-                                                添加左边的权限
-                                            </span>
-                                        </span>
+                        <label for="authority" class="col-2 col-form-label text-md-right">权限</label>
+                        <div class="col-8">
+                            <input type="text"  class="form-control tooltipTarget" placeholder="定位权限"
+                                   @input="seekAuthority($event)" title="输入关键词快速定位下拉列表"></div>
+                    </div>
+                    <div class="form-group row">
+                        <label class="col-2"></label>
+                        <div class="col-8">
+                            <input name="authority" hidden   v-model="authorities" >
+                            <div class="input-group" style="max-height: 150px; overflow-y: scroll;border-radius:5px;opacity:0.8;text-align: center;">
+                                <ul class="list-group" style="width: 100%" onselectstart="return false;">
+                                    <li  :title="authority.style ? '双击删除权限' :'双击添加权限'"    v-for="authority in authoritiesAll" :id="authority.name" class="list-group-item list-group-item-action pt-0 pb-0"
+                                         @dblclick="selectedAuthority(authority)" :class="authority.style ? 'active' :''"><span style="cursor: default;" :id="authority.name"> @{{ authority.name }} </span></li>
+                                </ul>
                             </div>
-                            <select size="8" class="form-control @error('authority') is-invalid @enderror "
-                                    :class="authoritiesStr?'tooltipTarget':''" title="两次点击移除目标">
-                                <option :value="authority.id" v-for="authority in authorities" @click="clickingRoleOption">@{{ authority.name }}</option>
-                            </select>
                             @error('authority')
-                            <span class="invalid-feedback" authority="alert">
+                            <span class="invalid-feedback">
                                         <strong>{{ $message }}</strong>
                                     </span>
                             @enderror
@@ -77,68 +74,81 @@
             data:{
                 authoritiesAll:[
                         @foreach( $authoritiesAll as $authority )
-                    {id:'{{$authority->id}}',name:'{{$authority->alias_name}}',},
+                    {id:'{{$authority->id}}',name:'{{$authority->alias_name}}',style:false},
                     @endforeach
                 ],
                 authorities:[
+                    @if(old('authority'))
+                        {{ old('authority') }}
+                    @else
                         @foreach( $authorities as $authority )
-                    {id:'{{$authority->id}}',name:'{{$authority->alias_name}}',},
-                    @endforeach
+                        {{$authority->id}},
+                        @endforeach
+                    @endif
                 ],
-                authoritiesStr:'{{ old('authority') }}'
             },
             mounted:function(){
                 $(".tooltipTarget").tooltip({'trigger':'hover'});
-                this.authoritiesCompileToStr()
+                if (this.authorities.length>0){
+                    let authoritiesAll=this.authoritiesAll;
+                    let authorities=this.authorities;
+                    for (let i = 0; i < authorities.length; i++) {
+                        authoritiesAll.every(function (authorityAll) {
+                            if (authorityAll.id == authorities[i]) {
+                                authorityAll.style = true;
+                                return false;
+                            }
+                            return true;
+                        });
+                    }
+                }
             },
             methods:{
-                addRole:function () {
-                    let $authorityAddingItem = $('#authorityAddingItem');
-                    let val=$authorityAddingItem.val();
-                    let authorityName = $authorityAddingItem.find("option:selected").text();
-                    let isLackOf=this.authorities.every(function(authority){
-                        return authority.id !== val;
-                    });
-                    if(isLackOf){
-                        this.authorities.push({id:val,name: authorityName});
-                        this.authoritiesCompileToStr()
-                    }else{
-                        tempTip.setDuration(1500);
-                        tempTip.show('已添加'+authorityName)
-                    }
-                },
-                clickingRoleOption:function(e){
-                    let target = $(e.target);
-                    if(typeof target.attr('data-clicked')=='undefined'||target.attr('data-clicked')==='0'){
-                        target.attr('data-clicked',1);
-                        setTimeout(function(){target.attr('data-clicked','0');},1500)
+                selectedAuthority:function (e) {
+                    let authorities=this.authorities;
+                    let authoritiesAll=this.authoritiesAll;
+                    let isAuthorty=true;
+                    if (authorities) {
+                        for (let i = 0; i < authorities.length; i++) {
+                            if (authorities[i] == e.id) {
+                                authorities.splice(i,1);
+                                authoritiesAll.every(function (authorityAll) {
+                                    if (authorityAll.id == e.id) {
+                                        authorityAll.style = false;
+                                        return false;
+                                    }
+                                    return true;
+                                });
+                                isAuthorty= false;
+                                break;
+                            }
+                            isAuthorty= true;
+                        }
                     }
-                    else{
-                        target.attr('data-clicked',parseInt(target.attr('data-clicked'))+1);
-                        this.removeRole(target.val(),target.find("option:selected").text())
+                    if (isAuthorty || !authorities){
+                        authorities.push(e.id);
+                        authoritiesAll.every(function (authorityAll) {
+                            if (authorityAll.id==e.id){
+                                authorityAll.style=true;
+                                return false;
+                            }
+                            return  true;
+                        });
                     }
                 },
-                removeRole:function(id,name){
-                    let _this=this;
-                    tempTip.confirm('确定要删除权限' + name + '吗?',function () {
-                        for(let i=0;i<_this.authorities.length;i++){
-                            if(_this.authorities[i].id===id){
-                                _this.authorities.splice(i, 1);
-                                _this.authoritiesCompileToStr();
-                                break;
-                            }
+                seekAuthority:function (e) {
+                    let $val=e.target.value;
+                    let authoritiesAll=this.authoritiesAll;
+                    authoritiesAll.every(function (authorityAll) {
+                        let name=authorityAll.name;
+                        if (name.includes($val)){
+                            location.href="#"+authorityAll.name;
+                            return false;
                         }
+                        return  true;
                     });
+                    $(e.target).focus();
                 },
-                authoritiesCompileToStr:function(){
-                    let ids=this.authorities.map(function(authority){
-                        return authority.id;
-                    });
-                    this.authoritiesStr=ids.join(',');
-                    setTimeout(function(){
-                        $(".tooltipTarget").tooltip({'trigger':'hover'});
-                    },20);
-                }
             },
         });
 

+ 137 - 108
resources/views/maintenance/user/create.blade.php

@@ -68,55 +68,39 @@
                                     <input id="password-confirm" type="password" class="form-control" name="password_confirmation" required autocomplete="new-password">
                                 </div>
                             </div>
-
                             <div class="form-group row">
                                 <label for="role" class="col-md-3 col-form-label text-md-right">角色</label>
-
                                 <div class="col-md-7">
-                                    <input name="role" type="hidden" v-model="rolesStr" required>
-                                    <div class="input-group">
-                                        <select id="roleAddingItem" class="form-control">
-                                            <option :value="role.id" v-for="role in rolesAll">@{{ role.name }}</option>
-                                        </select>
-                                        <span class="input-group-append">
-                                            <span class="input-group-text btn-outline-info" style="cursor: pointer;" @click="addRole">
-                                                添加左边的角色
-                                            </span>
-                                        </span>
+                                    <input type="text"  class="form-control tooltipTarget" placeholder="定位角色"
+                                           @input="seekRole($event)" title="输入关键词快速定位"></div>
+                            </div>
+                            <div class="form-group row">
+                                <label class="col-md-3"></label>
+                                <div class="col-md-7">
+                                    <input name="role" hidden    v-model="roles" >
+                                    <div class="input-group" style="max-height: 150px; overflow-y: scroll;border-radius:5px;opacity:0.8;text-align: center;">
+                                        <ul class="list-group tooltipTarget" style="width: 100%" onselectstart="return false;">
+                                            <li  :title="role.style ? '双击删除权限' : '双击添加权限'"    v-for="role in rolesAll" :id="role.name" class="list-group-item list-group-item-action pt-0 pb-0"
+                                                  @dblclick="selectedRole(role)" :class="role.style ? 'active' :''"><span style="cursor: default;" :id="role.name"> @{{ role.name }}  </span></li>
+                                        </ul>
                                     </div>
-                                    <select size="8" class="form-control @error('role') is-invalid @enderror "
-                                            :class="rolesStr?'tooltipTarget':''" title="两次点击移除目标">
-                                        <option :value="role.id" v-for="role in roles" @click="clickingRoleOption">@{{ role.name }}</option>
-                                    </select>
-                                    @error('role')
-                                    <span class="invalid-feedback" role="alert">
-                                        <strong>{{ $message }}</strong>
-                                    </span>
-                                    @enderror
                                 </div>
                             </div>
                             <div class="form-group row">
-                                <label for="role" class="col-md-3 col-form-label text-md-right">可见承运商</label>
-
+                                <label for="carrier" class="col-md-3 col-form-label text-md-right">可见承运商</label>
                                 <div class="col-md-7">
-                                    <div class="input-group">
-                                        <select id="carrierAddingItem" class="form-control">
-                                            <option :value="carrier.id" v-for="carrier in carrierAll">@{{ carrier.name }}</option>
-                                        </select>
-                                        <span class="input-group-append">
-                                            <span class="input-group-text btn-outline-info" style="cursor: pointer;" @click="addCarrier">
-                                                添加左边的承运商
-                                            </span>
-                                        </span>
-                                    </div>
-                                    <select size="8" class="form-control "
-                                            title="两次点击移除目标">
-                                        <option :value="carrier.id" v-for="carrier in carriers" @dblclick="clickingCarrierOption">
-                                            @{{ carrier.name }}
-                                        </option>
-                                    </select>
-                                    <div hidden v-for="carrier in carriers">
-                                        <input hidden name="carrier_id[]" :value="carrier.id">
+                                    <input type="text"  class="form-control tooltipTarget" placeholder="定位承运商"
+                                           @input="seekCarrier($event)" title="输入关键词快速定位"></div>
+                            </div>
+                            <div class="form-group row">
+                                <label class="col-md-3"></label>
+                                <div class="col-md-7">
+                                    <input name="carrier" hidden   v-model="carriers" >
+                                    <div class="input-group" style="max-height: 150px; overflow-y: scroll;border-radius:5px;opacity:0.8;text-align: center;">
+                                        <ul class="list-group tooltipTarget" style="width: 100%" onselectstart="return false;">
+                                            <li  :title="carrier.style ? '双击删除承运商' : '双击添加承运商'"    v-for="carrier in carriersAll" :id="carrier.name" class="list-group-item list-group-item-action pt-0 pb-0"
+                                                 @dblclick="selectedCarrier(carrier)" :class="carrier.style ? 'active' :''"><span style="cursor: default;" :id="carrier.name"> @{{ carrier.name }}  </span></li>
+                                        </ul>
                                     </div>
                                 </div>
                             </div>
@@ -143,92 +127,137 @@
             el:"#editPanel",
             data:{
                 rolesAll:[
-                        @foreach( $rolesAll as $role )
-                    {id:'{{$role->id}}',name:'{{$role->name}}',},
+                    @foreach( $rolesAll as $role )
+                    {id:'{{$role->id}}',name:'{{$role->name}}',style:false},
                     @endforeach
                 ],
-                roles:[],
-                rolesStr:'{{ old('role') }}',
-                carrierAll:[
+                roles:[{{old('role')}}],
+                carriersAll:[
                     @foreach($carriers as $carrier)
-                    {id:'{{$carrier->id}}',name:'{{$carrier->name}}'},
+                    {id:'{{$carrier->id}}',name:'{{$carrier->name}}',style:false},
                     @endforeach
                 ],
-                carriers:[],
+                carriers:[{{old('carrier')}}],
             },
             mounted:function(){
                 $(".tooltipTarget").tooltip({'trigger':'hover'});
-            },
-            methods:{
-                addRole:function () {
-                    let $roleAddingItem = $('#roleAddingItem');
-                    let val=$roleAddingItem.val();
-                    let roleName = $roleAddingItem.find("option:selected").text();
-                    let isLackOf=this.roles.every(function(role){
-                        return role.id !== val;
-                    });
-                    if(isLackOf){
-                        this.roles.push({id:val,name: roleName})
-                        this.rolesCompileToStr()
-                    }else{
-                        tempTip.setDuration(1500);
-                        tempTip.show('已添加'+roleName)
-                    }
-                },
-                clickingRoleOption:function(e){
-                    let target = $(e.target);
-                    if(typeof target.attr('data-clicked')=='undefined'||target.attr('data-clicked')==='0'){
-                        target.attr('data-clicked',1);
-                        setTimeout(function(){target.attr('data-clicked','0');},1500)
+                if (this.roles.length>0){
+                    let rolesAll=this.rolesAll;
+                    let roles=this.roles;
+                    for (let i = 0; i < roles.length; i++) {
+                        rolesAll.every(function (roleAll) {
+                            if (roleAll.id == roles[i]) {
+                                roleAll.style = true;
+                                return false;
+                            }
+                            return true;
+                        });
                     }
-                    else{
-                        target.attr('data-clicked',parseInt(target.attr('data-clicked'))+1);
-                        this.removeRole(target.val(),target.find("option:selected").text())
+                }
+                if (this.carriers.length>0){
+                    let carriersAll=this.carriersAll;
+                    let carriers=this.carriers;
+                    for (let i = 0; i < carriers.length; i++) {
+                        carriersAll.every(function (carrierAll) {
+                            if (carrierAll.id == carriers[i]) {
+                                carrierAll.style = true;
+                                return false;
+                            }
+                            return true;
+                        });
                     }
-                },
-                removeRole:function(id,name){
-                    let _this=this;
-                    tempTip.confirm('确定要删除角色' + name + '吗?',function () {
-                        for(let i=0;i<_this.roles.length;i++){
-                            if(_this.roles[i].id===id){
-                                _this.roles.splice(i, 1);
-                                _this.rolesCompileToStr();
+                }
+            },
+            methods:{
+                selectedCarrier:function (e) {
+                    let carriers=this.carriers;
+                    let carriersAll=this.carriersAll;
+                    let isCarrier=true;
+                    if (carriers&&carriersAll) {
+                        for (let i = 0; i < carriers.length; i++) {
+                            if (carriers[i] == e.id) {
+                                carriers.splice(i,1);
+                                carriersAll.every(function (carrierAll) {
+                                    if (carrierAll.id == e.id) {
+                                        carrierAll.style = false;
+                                        return false;
+                                    }
+                                    return true;
+                                });
+                                isCarrier= false;
                                 break;
                             }
+                            isCarrier= true;
                         }
-                    });
+                    }
+                    if (isCarrier || !carriers){
+                        carriers.push(e.id);
+                        carriersAll.every(function (carrierAll) {
+                            if (carrierAll.id==e.id){
+                                carrierAll.style=true;
+                                return false;
+                            }
+                            return  true;
+                        });
+                    }
                 },
-                rolesCompileToStr:function(){
-                    let ids=this.roles.map(function(role){
-                        return role.id;
+                seekCarrier:function (e) {
+                    let $val=e.target.value;
+                    let carriersAll=this.carriersAll;
+                    carriersAll.every(function (carrierAll) {
+                        let name=carrierAll.name;
+                        if (name.includes($val)){
+                            location.href="#"+carrierAll.name;
+                            return false;
+                        }
+                        return  true;
                     });
-                    this.rolesStr=ids.join(',');
-                    setTimeout(function(){
-                        $(".tooltipTarget").tooltip({'trigger':'hover'});
-                    },20);
+                    $(e.target).focus();
                 },
-                addCarrier:function () {
-                    let $carrierAddingItem = $('#carrierAddingItem');
-                    let val=$carrierAddingItem.val();
-                    let carrierName = $carrierAddingItem.find("option:selected").text();
-                    let isLackOf=this.carriers.every(function(carrier){
-                        return carrier.id !== val;
-                    });
-                    if(isLackOf){
-                        this.carriers.push({id:val,name: carrierName})
-                    }else{
-                        tempTip.setDuration(1500);
-                        tempTip.show('已添加'+carrierName)
+                selectedRole:function (e) {
+                    let roles=this.roles;
+                    let rolesAll=this.rolesAll;
+                    let isRole=true;
+                    if (roles&&rolesAll) {
+                        for (let i = 0; i < roles.length; i++) {
+                            if (roles[i] == e.id) {
+                                roles.splice(i,1);
+                                rolesAll.every(function (roleAll) {
+                                    if (roleAll.id == e.id) {
+                                        roleAll.style = false;
+                                        return false;
+                                    }
+                                    return true;
+                                });
+                                isRole= false;
+                                break;
+                            }
+                            isRole= true;
+                        }
+                    }
+                    if (isRole || !roles){
+                        roles.push(e.id);
+                        rolesAll.every(function (roleAll) {
+                            if (roleAll.id==e.id){
+                                roleAll.style=true;
+                                return false;
+                            }
+                            return  true;
+                        });
                     }
                 },
-                clickingCarrierOption:function(e){
-                    let target = $(e.target);
-                    for (let i=0;i<this.carriers.length;i++){
-                        if(this.carriers[i].id===target.val()){
-                            this.carriers.splice(i,1);
-                            break;
+                seekRole:function (e) {
+                    let $val=e.target.value;
+                    let rolesAll=this.rolesAll;
+                    rolesAll.every(function (roleAll) {
+                        let name=roleAll.name;
+                        if (name.includes($val)){
+                            location.href="#"+roleAll.name;
+                            return false;
                         }
-                    }
+                        return  true;
+                    });
+                    $(e.target).focus();
                 },
             },
         });

+ 151 - 113
resources/views/maintenance/user/edit.blade.php

@@ -45,53 +45,38 @@
                         </div>
                     </div>
                     <div class="form-group row">
-                        <label for="role" class="col-2 col-form-label text-md-right">角色</label>
-
-                        <div class="col-8">
-                            <input name="role" type="hidden" v-model="rolesStr" required>
-                            <div class="input-group">
-                                <select id="roleAddingItem" class="form-control">
-                                    <option :value="role.id" v-for="role in rolesAll">@{{ role.name }}</option>
-                                </select>
-                                <span class="input-group-append">
-                                            <span class="input-group-text btn-outline-info" style="cursor: pointer;" @click="addRole">
-                                                添加左边的角色
-                                            </span>
-                                        </span>
+                        <label for="role" class="col-md-3 col-form-label text-md-right">角色</label>
+                        <div class="col-md-7">
+                            <input type="text"  class="form-control tooltipTarget" placeholder="定位角色"
+                                   @input="seekRole($event)" title="输入关键词快速定位"></div>
+                    </div>
+                    <div class="form-group row">
+                        <label class="col-md-3"></label>
+                        <div class="col-md-7">
+                            <input name="role" hidden    v-model="roles" >
+                            <div class="input-group" style="max-height: 150px; overflow-y: scroll;border-radius:5px;opacity:0.8;text-align: center;">
+                                <ul class="list-group tooltipTarget" style="width: 100%" onselectstart="return false;">
+                                    <li  :title="role.style ? '双击删除角色' :'双击添加角色'"    v-for="role in rolesAll" :id="role.name" class="list-group-item list-group-item-action pt-0 pb-0"
+                                         @dblclick="selectedRole(role)" :class="role.style ? 'active' :''"><span style="cursor: default;" :id="role.name"> @{{ role.name }}  </span></li>
+                                </ul>
                             </div>
-                            <select size="8" class="form-control @error('role') is-invalid @enderror "
-                                    :class="rolesStr?'tooltipTarget':''" title="两次点击移除目标">
-                                <option :value="role.id" v-for="role in roles" @click="clickingRoleOption">@{{ role.name }}</option>
-                            </select>
-                            @error('role')
-                            <span class="invalid-feedback" role="alert">
-                                        <strong>{{ $message }}</strong>
-                                    </span>
-                            @enderror
                         </div>
                     </div>
                     <div class="form-group row">
-                        <label for="role" class="col-2 col-form-label text-md-right">可见承运商</label>
-
-                        <div class="col-md-8">
-                            <div class="input-group">
-                                <select id="carrierAddingItem" class="form-control">
-                                    <option :value="carrier.id" v-for="carrier in carrierAll">@{{ carrier.name }}</option>
-                                </select>
-                                <span class="input-group-append">
-                                            <span class="input-group-text btn-outline-info" style="cursor: pointer;" @click="addCarrier">
-                                                添加左边的承运商
-                                            </span>
-                                        </span>
-                            </div>
-                            <select size="8" class="form-control "
-                                    title="两次点击移除目标">
-                                <option :value="carrier.id" v-for="carrier in carriers" @dblclick="clickingCarrierOption">
-                                    @{{ carrier.name }}
-                                </option>
-                            </select>
-                            <div hidden v-for="carrier in carriers">
-                                <input hidden name="carrier_id[]" :value="carrier.id">
+                        <label for="carrier" class="col-md-3 col-form-label text-md-right">可见承运商</label>
+                        <div class="col-md-7">
+                            <input type="text"  class="form-control tooltipTarget" placeholder="定位承运商"
+                                   @input="seekCarrier($event)" title="输入关键词快速定位"></div>
+                    </div>
+                    <div class="form-group row">
+                        <label class="col-md-3"></label>
+                        <div class="col-md-7">
+                            <input name="carrier" hidden   v-model="carriers" >
+                            <div class="input-group" style="max-height: 150px; overflow-y: scroll;border-radius:5px;opacity:0.8;text-align: center;">
+                                <ul class="list-group tooltipTarget" style="width: 100%" onselectstart="return false;">
+                                    <li  :title="carrier.style ? '双击删除承运商' :'双击添加承运商'"    v-for="carrier in carriersAll" :id="carrier.name" class="list-group-item list-group-item-action pt-0 pb-0"
+                                         @dblclick="selectedCarrier(carrier)" :class="carrier.style ? 'active' :''"><span style="cursor: default;" :id="carrier.name"> @{{ carrier.name }}  </span></li>
+                                </ul>
                             </div>
                         </div>
                     </div>
@@ -114,100 +99,153 @@
             data:{
                 rolesAll:[
                         @foreach( $rolesAll as $role )
-                    {id:'{{$role->id}}',name:'{{$role->name}}',},
+                    {id:'{{$role->id}}',name:'{{$role->name}}',style:false},
                     @endforeach
                 ],
                 roles:[
+                    @if(old('role'))
+                        {{ old('role') }}
+                    @else
                         @foreach( $roles as $role )
-                    {id:'{{$role->id}}',name:'{{$role->name}}',},
-                    @endforeach
+                        {{$role->id}},
+                        @endforeach
+                    @endif
                 ],
                 rolesStr:'{{ old('role') }}',
-                carrierAll:[
-                        @foreach($carriers as $carrier)
-                    {id:'{{$carrier->id}}',name:'{{$carrier->name}}'},
+                carriersAll:[
+                    @foreach($carriers as $carrier)
+                    {id:'{{$carrier->id}}',name:'{{$carrier->name}}',style:false},
                     @endforeach
                 ],
                 carriers:[
-                    @foreach($carrierUser as $carrier)
-                    {id:'{{$carrier->id}}',name:'{{$carrier->name}}'},
-                    @endforeach
+                    @if(old('carrier'))
+                        {{ old('carrier') }}
+                    @else
+                        @foreach( $carrierUser as $carrier )
+                        {{$carrier->id}},
+                        @endforeach
+                    @endif
                 ],
             },
             mounted:function(){
                 $(".tooltipTarget").tooltip({'trigger':'hover'});
-                this.rolesCompileToStr()
-            },
-            methods:{
-                addRole:function () {
-                    let $roleAddingItem = $('#roleAddingItem');
-                    let val=$roleAddingItem.val();
-                    let roleName = $roleAddingItem.find("option:selected").text();
-                    let isLackOf=this.roles.every(function(role){
-                        return role.id !== val;
-                    });
-                    if(isLackOf){
-                        this.roles.push({id:val,name: roleName});
-                        this.rolesCompileToStr()
-                    }else{
-                        tempTip.setDuration(1500);
-                        tempTip.show('已添加'+roleName)
-                    }
-                },
-                clickingRoleOption:function(e){
-                    let target = $(e.target);
-                    if(typeof target.attr('data-clicked')=='undefined'||target.attr('data-clicked')==='0'){
-                        target.attr('data-clicked',1);
-                        setTimeout(function(){target.attr('data-clicked','0');},1500)
+                if (this.roles.length>0){
+                    let rolesAll=this.rolesAll;
+                    let roles=this.roles;
+                    for (let i = 0; i < roles.length; i++) {
+                        rolesAll.every(function (roleAll) {
+                            if (roleAll.id == roles[i]) {
+                                roleAll.style = true;
+                                return false;
+                            }
+                            return true;
+                        });
                     }
-                    else{
-                        target.attr('data-clicked',parseInt(target.attr('data-clicked'))+1);
-                        this.removeRole(target.val(),target.find("option:selected").text())
+                }
+                if (this.carriers.length>0){
+                    let carriersAll=this.carriersAll;
+                    let carriers=this.carriers;
+                    for (let i = 0; i < carriers.length; i++) {
+                        carriersAll.every(function (carrierAll) {
+                            if (carrierAll.id == carriers[i]) {
+                                carrierAll.style = true;
+                                return false;
+                            }
+                            return true;
+                        });
                     }
-                },
-                removeRole:function(id,name){
-                    let _this=this;
-                    tempTip.confirm('确定要删除角色' + name + '吗?',function () {
-                        for(let i=0;i<_this.roles.length;i++){
-                            if(_this.roles[i].id===id){
-                                _this.roles.splice(i, 1);
-                                _this.rolesCompileToStr();
+                }
+            },
+            methods:{
+                selectedCarrier:function (e) {
+                    let carriers=this.carriers;
+                    let carriersAll=this.carriersAll;
+                    let isCarrier=true;
+                    if (carriers&&carriersAll) {
+                        for (let i = 0; i < carriers.length; i++) {
+                            if (carriers[i] == e.id) {
+                                carriers.splice(i,1);
+                                carriersAll.every(function (carrierAll) {
+                                    if (carrierAll.id == e.id) {
+                                        carrierAll.style = false;
+                                        return false;
+                                    }
+                                    return true;
+                                });
+                                isCarrier= false;
                                 break;
                             }
+                            isCarrier= true;
                         }
-                    });
+                    }
+                    if (isCarrier || !carriers){
+                        carriers.push(e.id);
+                        carriersAll.every(function (carrierAll) {
+                            if (carrierAll.id==e.id){
+                                carrierAll.style=true;
+                                return false;
+                            }
+                            return  true;
+                        });
+                    }
                 },
-                rolesCompileToStr:function(){
-                    let ids=this.roles.map(function(role){
-                        return role.id;
+                seekCarrier:function (e) {
+                    let $val=e.target.value;
+                    let carriersAll=this.carriersAll;
+                    carriersAll.every(function (carrierAll) {
+                        let name=carrierAll.name;
+                        if (name.includes($val)){
+                            location.href="#"+carrierAll.name;
+                            return false;
+                        }
+                        return  true;
                     });
-                    this.rolesStr=ids.join(',');
-                    setTimeout(function(){
-                        $(".tooltipTarget").tooltip({'trigger':'hover'});
-                    },20);
+                    $(e.target).focus();
                 },
-                addCarrier:function () {
-                    let $carrierAddingItem = $('#carrierAddingItem');
-                    let val=$carrierAddingItem.val();
-                    let carrierName = $carrierAddingItem.find("option:selected").text();
-                    let isLackOf=this.carriers.every(function(carrier){
-                        return carrier.id !== val;
-                    });
-                    if(isLackOf){
-                        this.carriers.push({id:val,name: carrierName})
-                    }else{
-                        tempTip.setDuration(1500);
-                        tempTip.show('已添加'+carrierName)
+                selectedRole:function (e) {
+                    let roles=this.roles;
+                    let rolesAll=this.rolesAll;
+                    let isRole=true;
+                    if (roles&&rolesAll) {
+                        for (let i = 0; i < roles.length; i++) {
+                            if (roles[i] == e.id) {
+                                roles.splice(i,1);
+                                rolesAll.every(function (roleAll) {
+                                    if (roleAll.id == e.id) {
+                                        roleAll.style = false;
+                                        return false;
+                                    }
+                                    return true;
+                                });
+                                isRole= false;
+                                break;
+                            }
+                            isRole= true;
+                        }
+                    }
+                    if (isRole || !roles){
+                        roles.push(e.id);
+                        rolesAll.every(function (roleAll) {
+                            if (roleAll.id==e.id){
+                                roleAll.style=true;
+                                return false;
+                            }
+                            return  true;
+                        });
                     }
                 },
-                clickingCarrierOption:function(e){
-                    let target = $(e.target);
-                    for (let i=0;i<this.carriers.length;i++){
-                        if(this.carriers[i].id===target.val()){
-                            this.carriers.splice(i,1);
-                            break;
+                seekRole:function (e) {
+                    let $val=e.target.value;
+                    let rolesAll=this.rolesAll;
+                    rolesAll.every(function (roleAll) {
+                        let name=roleAll.name;
+                        if (name.includes($val)){
+                            location.href="#"+roleAll.name;
+                            return false;
                         }
-                    }
+                        return  true;
+                    });
+                    $(e.target).focus();
                 },
             },
         });

+ 18 - 13
resources/views/waybill/index.blade.php

@@ -77,7 +77,7 @@
                                 <label style="margin-left: 1%"> 截至日期:&nbsp;&nbsp;</label><input type="date" class="form-control-sm" name="created_at_end" v-model="filterData.created_at_end"></div></td>
                         <td>
                             <label style="margin-left: 2%">运单状态:&nbsp;&nbsp;&nbsp;&nbsp;</label>
-                            <select name="state" v-model="filterData.state" @change="setState" class="form-control-sm" style="vertical-align: middle">
+                            <select name="status" v-model="filterData.status" @change="setState" class="form-control-sm" style="vertical-align: middle">
                                 <option value="待审核">待审核</option>
                                 <option value="已审核">待调度</option>
                                 <option value="待终审">待终审</option>
@@ -88,12 +88,16 @@
                     <tr>
                         <td colspan="5">
                             <label style="margin-left: 5px"> 操作选定记录:</label>
-                            <select @change="waybillExport($event)" :class="[checkData>0?'btn-dark':'btn-outline-dark']"  class=" tooltipTarget form-control-sm" style=" vertical-align: middle"
-                                    title="导出所有页将会以搜索条件得到的过滤结果,将其全部记录(每一页)导出">
-                                <option >导出Excel   </option>
-                                <option value="1">导出勾选内容</option>
-                                <option value="2">导出所有页</option>
-                            </select>
+                            <span class="dropdown">
+                                <button class="btn btn-outline-dark btn-sm form-control-sm dropdown-toggle tooltipTarget" :class="[checkData>0?'btn-dark text-light':'']"
+                                        data-toggle="dropdown" title="导出所有页将会以搜索条件得到的过滤结果,将其全部记录(每一页)导出">
+                                    导出Excel
+                                </button>
+                                <div class="dropdown-menu">
+                                    <a class="dropdown-item" @click="waybillExport(1)" href="javascript:">导出勾选内容</a>
+                                    <a class="dropdown-item" @click="waybillExport(2)" href="javascript:">导出所有页</a>
+                                </div>
+                            </span>
                             <input hidden type="submit" value="kk">
                         </td>
                     </tr>
@@ -150,13 +154,13 @@
                     @endcan
                 </tr>
 
-                <tr v-for="waybill in waybills" :style="{color:waybill.state=='待重审'?'red':''||waybill.state=='已完结'?'green':''}">
+                <tr v-for="waybill in waybills" :style="{color:waybill.status=='待重审'?'red':''||waybill.status=='已完结'?'green':''}">
                     <td>
                         <input class="checkItem" type="checkbox" :value="waybill.id" v-model="checkData">
                     </td>
                     <td>@{{waybill.id}}</td>
                     <td>@{{waybill.type}}</td>
-                    <td :style="{color:waybill.state=='已审核'?'blue':''}">@{{waybill.state}}</td>
+                    <td :style="{color:waybill.status=='已审核'?'blue':''}">@{{waybill.status}}</td>
                     <td>@{{waybill.waybill_number}}</td>
                     <td>@{{waybill.owner}}</td>
                     <td>@{{waybill.wms_bill_number}}</td>
@@ -169,7 +173,7 @@
                     <td>@{{waybill.ordering_remark}}</td>
                     <td><p v-for="waybillAuditLog in waybill.waybillAuditLogs" v-if=waybillAuditLog.audit_stage==="运单阶段">@{{waybillAuditLog.user.name}}</p></td>
                     <td>
-                        <div v-if=waybill.state==="未审核"||waybill.state==="待重审">
+                        <div v-if=waybill.status==="未审核"||waybill.status==="待重审">
                             @can('运输管理-运单审核')
                                 <button class="btn btn-outline-success" @click="waybillAudit(waybill.id,waybill.waybill_number)">审核</button>
                             @endcan
@@ -177,7 +181,7 @@
                                 <button class="btn btn-outline-secondary" @click="waybillUpdate(waybill.id)">修改</button>
                             @endcan
                         </div>
-                        <div v-if=waybill.state==="已审核">
+                        <div v-if=waybill.status==="已审核">
                             @can('运输管理-调度')
                                 <button class="btn btn-outline-secondary" @click="waybillRetreatAudit(waybill.id,waybill.waybill_number)">取消审核</button>
                                 <button class="btn btn-outline-secondary" @click="job(waybill.id)">调度</button>
@@ -204,7 +208,7 @@
                     <td><p v-for="waybillAuditLog in waybill.waybillAuditLogs" v-if=waybillAuditLog.audit_stage==="调度阶段">@{{waybillAuditLog.user.name}}</p></td>
 
                     <td>
-                        <div v-if=waybill.state==="待终审">
+                        <div v-if=waybill.status==="待终审">
                             @can('运输管理-调度审核')
                                 <button class="btn btn-outline-success" @click="waybillEndAudit(waybill.id,waybill.waybill_number)">完结</button>
                             @endcan
@@ -220,6 +224,7 @@
     </div>
 @endsection
 
+
 @section('lastScript')
     <script>
         let vueList=new Vue({
@@ -434,7 +439,7 @@
                     }
                 },
                 waybillExport(e){
-                    let val=e.target.value;
+                    let val=e;
                     let data=this.filterData;
                     console.log(val)
                     if (val==1) {

+ 11 - 7
resources/views/waybill/waybillFinancialSnapshot/index.blade.php

@@ -44,12 +44,16 @@
     @if(!isset($excepted))
     <div class="card-header">
     <label>操作选定记录:</label>
-    <select @change="waybillExport($event)" :class="[checkData>0?'btn-dark':'btn-outline-dark']"  class=" tooltipTarget form-control-sm" style=" vertical-align: middle"
-            title="导出所有页将会以搜索条件得到的过滤结果,将其全部记录(每一页)导出">
-        <option >导出Excel   </option>
-        <option value="1">导出勾选内容</option>
-        <option value="2">导出所有页</option>
-    </select>
+        <span class="dropdown">
+            <button class="btn btn-outline-dark btn-sm form-control-sm dropdown-toggle tooltipTarget" :class="[checkData>0?'btn-dark':'btn-outline-dark']"
+                    data-toggle="dropdown" title="导出所有页将会以搜索条件得到的过滤结果,将其全部记录(每一页)导出">
+                导出Excel
+            </button>
+            <div class="dropdown-menu">
+                <a class="dropdown-item" @click="waybillExport(1)" href="javascript:">导出勾选内容</a>
+                <a class="dropdown-item" @click="waybillExport(2)" href="javascript:">导出所有页</a>
+            </div>
+        </span>
     </div>
     @endif
     <table class="table  table-hover table-bordered text-nowrap " style="width: 1500px;height: auto">
@@ -222,7 +226,7 @@
                 }
             },
             waybillExport(e){
-                let val=e.target.value;
+                let val=e;
                 let data=this.filterData;
                 if (val==1) {
                     if (this.checkData.length <= 0) {

+ 18 - 15
resources/views/weight/package/index.blade.php

@@ -41,14 +41,6 @@
                                         <input style="width: 150px" type="date" name="created_at_end" v-model="filterData.created_at_end" class="form-control-sm">
                                     </label>
                                 </td>
-                                {{--<td > <label class="form-inline" style="width:200px;margin-left: 2%">货主:
-                                        <input class="form-control-sm" style="width: 80px" placeholder="搜索定位" @input="owner_seek">&nbsp;&nbsp;&nbsp;
-                                        <select name="owner_id" v-model="filterData.owner_id" class="form-control-sm"  @change="setOwner">
-                                            <option >    </option>
-                                            @foreach($owners as $owner)
-                                                <option value="{{$owner->id}}">{{$owner->name}}</option>
-                                            @endforeach
-                                        </select></label><input hidden type="submit" value="kk"></td>--}}
                                 <td>
                                     <label for="">客户:</label>
                                     <input type="text" class="form-control-sm tooltipTarget" placeholder="查找"
@@ -77,12 +69,16 @@
                                     <span class="text-muted">操作选定记录:</span>
                                 </td>
                                 <td colspan="9">
-                                    <select @change="packageExport($event)" :class="[checkData>0?'btn-dark':'btn-outline-dark']"  class=" tooltipTarget form-control-sm" style=" vertical-align: middle"
-                                             title="导出所有页将会以搜索条件得到的过滤结果,将其全部记录(每一页)导出">
-                                        <option >导出Excel</option>
-                                        <option value="1">导出勾选内容</option>
-                                        <option value="2">导出所有页</option>
-                                    </select>
+                                    <span class="dropdown">
+                                        <button class="btn btn-outline-dark btn-sm form-control-sm dropdown-toggle tooltipTarget" :class="[checkData>0?'btn-dark text-light':'']"
+                                                data-toggle="dropdown" title="导出所有页将会以搜索条件得到的过滤结果,将其全部记录(每一页)导出">
+                                            导出Excel
+                                        </button>
+                                        <div class="dropdown-menu">
+                                            <a class="dropdown-item" @click="packageExport(1)" href="javascript:">导出勾选内容</a>
+                                            <a class="dropdown-item" @click="packageExport(2)" href="javascript:">导出所有页</a>
+                                        </div>
+                                    </span>
                                     <input hidden type="submit" value="kk">
                                 </td>
                             </tr>
@@ -136,7 +132,11 @@
                         <td class="text-muted">@{{package.recipientMobile}}</td>
                     </tr>
                 </table>
+                @if(isset($request))
+                {{$packages->appends($request)->links()}}
+                @else
                 {{$packages->links()}}
+                @endif
             </div>
         </div>
     </div>
@@ -145,6 +145,9 @@
 
 @section('lastScript')
     <script>
+        @if(isset($request))
+        let request={!! json_encode($request) !!};
+        @endif
         new Vue({
             el:"#list",
             data:{
@@ -236,7 +239,7 @@
                     }
                 },
                 packageExport(e){
-                    let val=e.target.value;
+                    let val=e;
                     let data=this.filterData;
                     if (val==1){
                         if (this.checkData&&this.checkData.length<=0){

+ 178 - 60
resources/views/weight/package/statistics.blade.php

@@ -23,7 +23,7 @@
                                         <span class="text-muted align-items-center d-flex">根据条件过滤:</span>
                                     </div>
                                 </td>
-                                <td style="min-width: 300px">
+                                <td>
                                     <div class="form-inline pl-3" style="height: 100px">
                                         <div class="align-items-center">
                                             <div class="text-right">货主:</div>
@@ -35,16 +35,16 @@
                                         </div>
 
 
-                                        <div style="max-height: 90px; overflow-y: scroll;border: solid 1px #ddd;border-radius:5px;text-align: center;transform:scale(0.9)"  v-if="ownersCopy.length>0">
+                                        <div style="max-height: 90px; overflow-y: scroll;border: solid 1px #ddd;border-radius:5px;opacity:0.5;text-align: center;transform:scale(0.9)"  v-if="ownersCopy.length>0">
                                             <ul class="list-group tooltipTarget" id="seek" onselectstart="return false;">
-                                                <li  title="单击添加货主"    v-for="ownerCopy in ownersCopy" :id="ownerCopy.name" class="text-muted list-group-item list-group-item-action pt-0 pb-0"
-                                                     @click="selectedOwner(ownerCopy)" :class="ownerCopy.style ? 'active' :''"><span style="cursor: default;" :name="ownerCopy.name">@{{ ownerCopy.name }}</span></li>
+                                                <li  title="单击添加货主"    v-for="ownerCopy in ownersCopy" :id="ownerCopy.name" class="list-group-item list-group-item-action pt-0 pb-0"
+                                                     @click="selectedOwner(ownerCopy)" :class="ownerCopy.style ? 'active' :''"><span style="cursor: default;" :id="ownerCopy.name">@{{ ownerCopy.name }}</span></li>
                                             </ul>
                                             <input hidden name="owner_id" :value="selectedOwners">
                                         </div>
                                     </div>
                                 </td>
-                                <td style="min-width: 300px">
+                                <td >
                                     <div class="form-inline pl-3" style="height: 100px">
                                         <div class="align-items-center">
                                             <div class="text-right">物流公司:</div>
@@ -54,25 +54,40 @@
                                                        title="输入关键词快速定位下拉列表">
                                             </p>
                                         </div>
-                                        <div style="max-height: 90px;overflow-y: scroll;border: solid 1px #ddd;border-radius:5px;text-align: center;transform:scale(0.9)"  v-if="logisticsCopy.length>0">
+                                        <div style="max-height: 90px;overflow-y: scroll;border: solid 1px #ddd;border-radius:5px;opacity:0.5;text-align: center;transform:scale(0.9)"  v-if="logisticsAll.length>0">
                                             <ul class="list-group tooltipTarget" onselectstart="return false;">
-                                                <li  title="单击添加物流公司"   v-for="logisticCopy in logisticsCopy" class="text-muted list-group-item list-group-item-action pt-0 pb-0"
-                                                     @click="selectedLogistic(logisticCopy)" :class="logisticCopy.style ? 'active' :''" >
-                                                    <span style="cursor: default;" :name="logisticCopy.name">@{{ logisticCopy.name }}</span></li>
+                                                <li  title="单击添加物流公司"   v-for="logistic in logisticsAll" class=" list-group-item list-group-item-action pt-0 pb-0"
+                                                     @click="selectedLogistic(logistic)" :class="logistic.style ? 'active' :''" >
+                                                    <span style="cursor: default;" :id="logistic.name">@{{ logistic.name }}</span></li>
                                             </ul>
                                             <input hidden name="logistic_id" :value="selectedLogistics">
                                         </div>
                                     </div>
                                 </td>
                                 <td >
-                                    <div class="form-inline" style="height: 100px;width: 350px">
-                                        <div class=" align-items-center d-flex">
+
+                                    <div style="height: 100px">
+                                        <div class="form-inline ">
                                             <label >时间:</label>
-                                            <input style="width: 150px" name="date_start" type="date" v-model="filterData.date_start" class="form-control-sm">
-                                            <input style="width: 150px"  name="date_end" type="date" v-model="filterData.date_end" class="form-control-sm">
+                                            <div class="pl-1" style="width: 300px">
+                                                <input  style="width: 170px;transform:scale(0.8)" type="date" v-model="filterData.date_start" class="form-control">
+                                                <input id="hour_input" type="text" class="form-control"  placeholder="00:00"
+                                                       @input="hourFilter($event)" v-model="inputtingAdd_start" style="transform:scale(0.8);width: 80px"
+                                                       @keypress="hourFilter($event)" >
+                                            </div>
+                                            <input v-if="filterData.date_start" hidden  name="date_start" :value="filterData.date_start+' '+inputtingAdd_start">
                                         </div>
+                                        <div class="form-inline pl-5" style="width: 300px">
+                                            <input style="transform:scale(0.8);width: 170px"  type="date" v-model="filterData.date_end" class="form-control" >
+                                            <input id="hour_input" type="text" class="form-control"  placeholder="00:00"
+                                                   @input="hourFilter($event)" v-model="inputtingAdd_end" style="transform:scale(0.8);width:80px"
+                                                   @keypress="hourFilter($event)" >
+                                            <input v-if="filterData.date_end" hidden  name="date_end" :value="filterData.date_end+' '+inputtingAdd_end">
+                                        </div>
+                                    </div>
+                                    <div class=" align-items-center d-flex pt-2">
                                         <div class="m-auto d-flex">
-                                            <button class="btn btn-primary pl-5 pr-5">提交</button>
+                                            <button class="btn btn-primary btn-sm pl-5 pr-5">提交</button>
                                         </div>
                                     </div>
                                 </td>
@@ -80,22 +95,48 @@
 
                                 </td>
                             </tr>
+                            <tr></tr>
+                            <tr>
+                                <td>
+                                    <div>
+                                        <span class="text-muted">操作选定记录:</span>
+                                    </div>
+                                </td>
+                                <td colspan="3">
+                                    <span class="dropdown">
+                                        <button class="btn btn-outline-dark btn-sm form-control-sm dropdown-toggle tooltipTarget" {{--:class="[rejectedBills_checkBoxes.length>0?'btn-dark text-light':'']"--}}
+                                        data-toggle="dropdown" title="导出所有页将会以搜索条件得到的过滤结果,将其全部记录(每一页)导出">
+                                            导出Excel
+                                        </button>
+                                        <div class="dropdown-menu">
+                                            <a class="dropdown-item"  @click="statisticExport(1)" href="javascript:">导出勾选内容</a>
+                                            <a class="dropdown-item"  @click="statisticExport(2)" href="javascript:">导出所有页</a>
+                                        </div>
+                                    </span>
+                                </td>
+                            </tr>
                         </table>
                     </form>
                 </div>
                 <div class="">
                     <table class="table table-striped table-sm text-nowrap table-hover">
                         <tr>
-                            <th>序号</th>
+                            <th>
+                                <label for="all">
+                                    <input id="all" type="checkbox" @click="checkAll($event)">全选
+                                </label>
+                            </th>
                             <th>货主</th>
                             <th>总计</th>
-                            <th v-for="logisticCopy in logisticsCopy">@{{ logisticCopy.name }}</th>
+                            <th v-for="logistic in logisticsAll">@{{ logistic.name }}</th>
                         </tr>
-                        <tr v-for="(ownerModel,i) in ownersModel">
-                            <th class="text-muted">@{{ i+1 }}</th>
+                        <tr v-for="ownerModel in ownersModel">
+                            <td>
+                                <input class="checkItem" type="checkbox" :value="ownerModel.id" v-model="checkData">
+                            </td>
                             <th class="text-muted">@{{ ownerModel.name }}</th>
                             <td><p v-if="ownerModel.sum">@{{ ownerModel.sum }}</p><p v-else>0</p></td>
-                            <td class="text-muted" v-for="logisticCopy in logisticsCopy"><p v-if="ownerModel.logistics[logisticCopy.name]">@{{ ownerModel.logistics[logisticCopy.name] }}</p>
+                            <td class="text-muted" v-for="logistic in logisticsAll"><p v-if="ownerModel.logistics[logistic.id]">@{{ ownerModel.logistics[logistic.id] }}</p>
                                 <p v-else>0</p></td>
                         </tr>
                     </table>
@@ -129,6 +170,11 @@
                     '{{$logistic->id}}' : "{{$logistic->name}}",
                     @endforeach
                 },
+                logisticsAll:[
+                    @foreach($logistics as $logistic)
+                    {id:'{{$logistic->id}}', name: '{{$logistic->name}}',style:false},
+                    @endforeach
+                ],
                 ownersCopy:[
                         @foreach($owners as $owner)
                     {id:'{{$owner->id}}',name:"{{$owner->name}}",style:false},
@@ -140,6 +186,10 @@
                     {date_start:'',date_end:''},
                 selectedOwners:[],
                 selectedLogistics:[],
+                checkData:[],
+                checkSign:'',
+                inputtingAdd_start:'',
+                inputtingAdd_end:'',
             },
             computed:{
                 isBeingFilterConditions:function(){
@@ -155,31 +205,32 @@
                 },
 
             },
+            watch:{
+                checkData:{
+                    handler(){
+                        if (this.checkData.length === this.ownersModel.length){
+                            document.querySelector('#all').checked = true;
+                        }else {
+                            document.querySelector('#all').checked = false;
+                        }
+                    },
+                    deep:true
+                }
+            },
             mounted:function(){
                 let _this=this;
                 let owners=this.owners;
-                let logistics=this.logistics;
+
                 this.packages.forEach(function (package){
                     if (owners[package.owner_id]){
                         package.owner_name=owners[package.owner_id];
                     }
-                    if (logistics[package.logistic_id]){
-                        package.logistic_name=logistics[package.logistic_id];
-                        let isLogistic=_this.logisticsCopy.every(function (logisticCopy) {
-                            if (logisticCopy.name==logistics[package.logistic_id]){
-                                return  false;
-                            }
-                            return true;
-                        });
-                        if (isLogistic){
-                            _this.logisticsCopy.push({'id':package.logistic_id,'name':package.logistic_name,'style':false});
-                        }
-                    }
+
                     let isEvery=true;
                     if (_this.ownersModel) {
                         isEvery=_this.ownersModel.every(function (ownerModel) {
                             if (ownerModel.name==package.owner_name){
-                                ownerModel.logistics[package.logistic_name]=package.count;
+                                ownerModel.logistics[package.logistic_id]=package.count;
                                 ownerModel.sum=parseInt(ownerModel.sum)+parseInt(package.count);
                                 return false;
                             }
@@ -188,7 +239,13 @@
                     }
                     if (isEvery){
                         let obj={};
-                        obj[package.logistic_name]=package.count;
+                        _this.logisticsAll.every(function (logistic) {
+                            if (logistic.id==package.logistic_id) {
+                                obj[package.logistic_id]=package.count;
+                                return false;
+                            }
+                            return true;
+                        });
                         _this.ownersModel.push({'id':package.owner_id,'name':package.owner_name,'sum':package.count,'logistics':obj,});
                     }
                 });
@@ -202,7 +259,7 @@
                     let uriParts =decodeURI(location.href).split("?");
                     if(uriParts.length>1){
                         let params = uriParts[1].split('&');
-                        params.forEach(function(paramPair){
+                        params.every(function(paramPair){
                             let pair=paramPair.split('=');
                             let key = pair[0], val = pair[1];
                             $('input[name="'+key+'"]').val(val);
@@ -210,10 +267,10 @@
                             if (key!='owner_id'||key!='logistic_id') {
                                 decodeURI(data.filterData[key]=val);
                             }
+                            let str=unescape(val);
+                            let strs=new Array();
+                            strs=str.split(",");
                             if (key=='owner_id'){
-                                let str=unescape(val);
-                                let strs=new Array();
-                                strs=str.split(",");
                                 for (let i=0;i<strs.length;i++){
                                     data.selectedOwners.push(strs[i]);
                                     data.ownersCopy.every(function (ownerCopy) {
@@ -226,20 +283,30 @@
                                 }
                             }
                             if (key=='logistic_id'){
-                                let str=unescape(val);
-                                let strs=new Array();
-                                strs=str.split(",");
                                 for (let i=0;i<strs.length;i++){
                                     data.selectedLogistics.push(strs[i]);
-                                    data.logisticsCopy.every(function (logisticCopy) {
-                                        if (strs[i]==logisticCopy.id){
-                                            logisticCopy.style=true;
+                                    data.logisticsAll.every(function (logistic) {
+                                        if (strs[i]==logistic.id){
+                                            logistic.style=true;
                                             return false;
                                         }
                                         return  true;
                                     });
                                 }
                             }
+                            if (key=='date_start'){
+                                strs=str.split("+");
+                                if (strs.length!=2) return;
+                                data.filterData.date_start=strs[0];
+                                data.inputtingAdd_start=strs[1];
+                            }
+                            if (key=='date_end'){
+                                strs=str.split("+");
+                                if (strs.length!=2) return;
+                                data.filterData.date_end=strs[0];
+                                data.inputtingAdd_end=strs[1];
+                            }
+                            return true;
                         });
                     }
                 },
@@ -255,19 +322,22 @@
                         }
                         @endforeach
                     }
+                    $(e.target).focus();
                 },
                 logistic_seek:function(e){
                     let _this=this;
                     let $val=e.target.value;
-                    if($val==='')_this.filterData.logistic_id='';
-                    else{
-                        @foreach($logistics as $logistic)
-                        if ("{{ $logistic->name }}".includes($val)){
-                            _this.filterData.logistic_id="{{ $logistic->id }}";
-                            location.href="#{{$logistic->name}}";
-                        }
-                        @endforeach
+                    if($val){
+                        _this.logisticsAll.every(function (logistic) {
+                            let name=logistic.name;
+                            if (name.includes($val)){
+                                location.href="#"+logistic.name;
+                                return false;
+                            }
+                            return true;
+                        });
                     }
+                    $(e.target).focus();
                 },
                 selectedOwner:function (e) {
                     let selectedOwners=this.selectedOwners;
@@ -303,9 +373,9 @@
                     for (let i=0;i<selectedLogistics.length;i++){
                         if (selectedLogistics[i]==e.id){
                             selectedLogistics.splice(i,1);
-                            this.logisticsCopy.every(function (logisticCopy) {
-                                if (logisticCopy.id==e.id) {
-                                    logisticCopy.style=false;
+                            this.logisticsAll.every(function (logistic) {
+                                if (logistic.id==e.id) {
+                                    logistic.style=false;
                                     return false;
                                 }
                                 return  true;
@@ -316,16 +386,64 @@
                     }
                     if (sign) {
                         this.selectedLogistics.push(e.id);
-                        this.logisticsCopy.every(function (logisticCopy) {
-                            if (logisticCopy.id==e.id) {
-                                logisticCopy.style=true;
+                        this.logisticsAll.every(function (logistic) {
+                            if (logistic.id==e.id) {
+                                logistic.style=true;
                                 return false;
                             }
                             return  true;
                         });
                     }
-                }
-            },
+                },
+                checkAll(e){
+                    if (e.target.checked){
+                        this.ownersModel.forEach((el,i)=>{
+                            if (this.checkData.indexOf(el.id) == '-1'){
+                                this.checkData.push(el.id);
+                            }
+                        });
+                    }else {
+                        this.checkData = [];
+                    }
+                },
+                statisticExport:function (e) {
+                    if (e==1){
+                        location.href="{{url('package/statistics?checkSign=')}}"+this.checkData;
+                    }else{
+/*                        let formData=new FormData();
+                        formData.append('owner_id',this.selectedOwners);
+                        formData.append('logistic_id',this.selectedLogistics);
+                        formData.append('date_start',this.filterData.date_start);
+                        formData.append('date_end',this.filterData.date_end);
+                        formData.append('checkSign','-1');*/
+                        location.href="{{url('package/statistics?owner_id=')}}"+this.selectedOwners+
+                            "&logistic_id="+this.selectedLogistics+"&date_start="+this.filterData.date_start
+                            +"&date_end="+this.filterData.date_end+"&checkSign=-1";
+                    }
+                },
+                hourFilter:function(e){
+                    setTimeout(function(){
+                        e.target.value=e.target.value.replace(':',':');
+                        e.target.value=e.target.value.replace(/[a-zA-Z]/,'');
+                        e.target.value=e.target.value.replace(/^([\d]{1})([\s]{1})/,"$1:");
+                        e.target.value=e.target.value.replace(/^([\d]{1})([\d]{1})([\s]{1})/,"$1$2:");
+                        //e.target.value=e.target.value.replace(/^([3-9]{1})([\d]{1})/,"$1:$2");
+                        e.target.value=e.target.value.replace(/^([\d]{1})([\d]{1})([\d]{1})/,"$1$2:$3");
+                        e.target.value=e.target.value.replace(/^([\d]{1})([\d]{1})([\d]{1})([\d]{1})(.*?)/,"$1$2$3$4");
+                        e.target.value=e.target.value.replace(/^([\d]{1})([\d]{1})([\d]{1})([\d]{1})/,"$1$2:$3$4");
+                        e.target.value=e.target.value.replace(/^([\d]{1})([\d]{1}):([\d]{1})([\d]{1})([\s\S]{1})/,"$1$2:$3$4");
+                        e.target.value=e.target.value.replace(/^([\d]{1})([\d]{1}):([\D]{1,99})/,"$1$2:");
+                        e.target.value=e.target.value.replace(/^([\d]{1})([\d]{1})([\d]{1})\./,"$1:$2$3");
+                        e.target.value=e.target.value.replace(/^([\d]{1})\.([\d]{1})([\d]{1})/,"$1:$2$3");
+                        e.target.value=e.target.value.replace(/^([\d]{1})([\d]{2})([\S\s]{1,99})/,"$1$2:$3");
+                        e.target.value=e.target.value.replace(/^([\d]{1}):([\d]{2})([\S\s]{1,99})/,"$1:$2");
+                        e.target.value=e.target.value.replace(/^([\d])/,"$1");
+                        e.target.value=e.target.value.replace(/^([3-9])([\d]{1})/,"2$2");
+                        e.target.value=e.target.value.replace(/^([\d]{1})([4-9]{1})/,"$13");
+                        e.target.value=e.target.value.replace(/^([\d]{1})([\d]{1}):([6-9]{1})/,"$1$2:5");
+                    },1);
+                },
+            }
         });
     </script>
 @endsection

+ 11 - 7
resources/views/weight/weightExcepted/index.blade.php

@@ -24,12 +24,16 @@
                                     </select></label></td>
                                 <td colspan="5">
                                     <label style="margin-left: 5px"> 操作选定记录:</label>
-                                    <select @change="weightExport($event)" :class="[checkData>0?'btn-dark':'btn-outline-dark']"  class=" tooltipTarget form-control-sm" style=" vertical-align: middle"
-                                            title="导出所有页将会以搜索条件得到的过滤结果,将其全部记录(每一页)导出">
-                                        <option >导出Excel</option>
-                                        <option value="1">导出勾选内容</option>
-                                        <option value="2">导出所有页</option>
-                                    </select>
+                                    <span class="dropdown">
+                                        <button class="btn btn-outline-dark btn-sm form-control-sm dropdown-toggle tooltipTarget" :class="[checkData>0?'btn-dark':'btn-outline-dark']"
+                                                data-toggle="dropdown" title="导出所有页将会以搜索条件得到的过滤结果,将其全部记录(每一页)导出">
+                                            导出Excel
+                                        </button>
+                                        <div class="dropdown-menu">
+                                            <a class="dropdown-item" @click="weightExport(1)" href="javascript:">导出勾选内容</a>
+                                            <a class="dropdown-item" @click="weightExport(2)" href="javascript:">导出所有页</a>
+                                        </div>
+                                    </span>
                                     <input hidden type="submit" value="kk">
                                 </td>
                             </tr>
@@ -177,7 +181,7 @@
                     }
                 },
                 weightExport(e){
-                    let val=e.target.value;
+                    let val=e;
                     if (val==1) {
                         if (this.checkData.length <= 0) {
                             tempTip.setDuration(4000);

+ 1 - 0
routes/web.php

@@ -94,6 +94,7 @@ Route::post('package/measureMonitor/data','MeasureMonitorController@data');
 Route::resource('package/measureMonitor','MeasureMonitorController');
 Route::get('package/export/{id}','PackageController@export');
 Route::get('package/statistics','PackageController@statistics');
+Route::get('package/statisticExport','PackageController@statisticExport');
 Route::get('package/relating', function () {return view('weight.menuWeight');});
 Route::get('package/weightExcepted/indexCreate','WeighExceptedController@indexCreate');
 Route::get('package/weightExcepted/indexIssued','WeighExceptedController@indexIssued');