king hace 4 años
padre
commit
22d35e0950

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

@@ -6,6 +6,7 @@ use App\Authority;
 use App\Components\AsyncResponse;
 use App\Events\CustomerStored;
 use App\Owner;
+use App\OwnerGroup;
 use Exception;
 use Illuminate\Http\Request;
 use Illuminate\Http\Response;
@@ -29,7 +30,7 @@ class OwnerController extends Controller
         if (!Gate::allows('货主-查询')) {
             return redirect(url('/'));
         }
-        $query = Owner::query()
+        $query = Owner::with(['ownerGroup'])
             ->orderBy('id', 'desc')
             ->whereNull('deleted_at');
         if ($request->has('name')) {
@@ -52,8 +53,19 @@ class OwnerController extends Controller
                 $query->where('code','like',$code.'%');
             }
         }
+        if($request->has('owner_group_id')){
+            $owner_group_id = $request->input('owner_group_id');
+            if (strpos($owner_group_id, ',') || strpos($owner_group_id, ',') || strpos($owner_group_id, ' ')) {
+                $arr = array_filter(preg_split('/[,, ]+/is', $owner_group_id));
+                $query->whereIn('owner_group_id', $arr);
+                unset($owner_group_id);
+            } else {
+                $query->where('owner_group_id',$owner_group_id);
+            }
+        }
         $owners = $query->paginate($request->paginate);
-        return view('maintenance.owner.index', ['owners' => $owners]);
+        $group = app('OwnerGroupService')->getSelection();
+        return view('maintenance.owner.index', ['owners' => $owners, 'groups'=>$group]);
     }
 
     public function create()
@@ -61,7 +73,8 @@ class OwnerController extends Controller
         if (!Gate::allows('货主-录入')) {
             return redirect(url('/'));
         }
-        return view('maintenance.owner.create');
+        $group = app('OwnerGroupService')->getSelection();
+        return view('maintenance.owner.create',['groups' => $group]);
     }
 
     public function store(Request $request)
@@ -147,7 +160,8 @@ class OwnerController extends Controller
         if (!Gate::allows('货主-编辑')) {
             return redirect(url('/'));
         }
-        return view('maintenance.owner.edit', ['owner' => $owner]);
+        $group = app('OwnerGroupService')->getSelection();
+        return view('maintenance.owner.edit', ['owner' => $owner, 'groups'=>$group]);
     }
 
     /**

+ 84 - 0
app/Http/Controllers/OwnerGroupController.php

@@ -0,0 +1,84 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Gate;
+use Illuminate\Support\Facades\Validator;
+
+class OwnerGroupController
+{
+    public function index(Request $request)
+    {
+        if (!Gate::allows('货主组别-查询')) {
+            return redirect('denied');
+        }
+        $params = $request->all();
+        $groups = app('OwnerGroupService')->paginate($params);
+        return response()->view("maintenance.OwnerGroup.index", compact("groups"));
+    }
+
+    public function create()
+    {
+        if (!Gate::allows('货主组别-录入')) {
+            return redirect('denied');
+        }
+        return response()->view("maintenance.ownerGroup.create");
+    }
+
+    public function store(Request $request)
+    {
+        if (!Gate::allows('货主组别-录入')) {
+            return redirect('denied');
+        }
+        $this->validator($request->input())->validate();
+        app('OwnerGroupService')->create([
+            "name" => $request->input("name"),
+        ]);
+        return response()->redirectTo("maintenance/ownerGroup")->with("successTip","成功创建货主组别“".$request->input("name")."”");
+    }
+
+    public function edit($id)
+    {
+        if (!Gate::allows('货主组别-编辑')) {
+            return redirect('denied');
+        }
+        $group = app('OwnerGroupService')->find($id);
+        return response()->view('maintenance.ownerGroup.create', compact("group"));
+    }
+
+    public function update(Request $request, $id)
+    {
+        if(!Gate::allows('货主组别-编辑')){ return redirect('denied');  }
+        $this->validator($request->input(),$id)->validate();
+        $result = app('OwnerGroupService')->update(["id"=>$id],[
+            "name"=>$request->input("name"),
+        ]);
+        if ($result == 1){
+            return response()->redirectTo("maintenance/ownerGroup")->with("successTip","成功修改基础设置-货主组别“".$request->input("name")."”的信息");
+        }
+        return response()->view("exception.default",["code"=>"509"]);
+    }
+
+    public function destroy($id)
+    {
+        if(!Gate::allows('货主组别-删除')){ return ["success"=>false,"data"=>"无权操作!"];  }
+        $result = app('OwnerGroupService')->destroy($id);
+        if ($result == 1)return ["success"=>true];
+        return ["success"=>false,"data"=>"删除了“".$result."”行"];
+    }
+
+    private function validator(array $params, $id = null)
+    {
+        return Validator::make($params,[
+            'name'=>['required',$id?"unique:owner_groups,name,$id":'unique:owner_groups,name','max:20'],
+        ],[
+            'required'=>':attribute 为必填项',
+            'max'=>':attribute 字符过多或输入值过大',
+            'unique'=>':attribute 已存在',
+        ],[
+            'name'=>'货主组别名称',
+        ]);
+    }
+
+}

+ 7 - 2
app/Http/Controllers/UserController.php

@@ -3,6 +3,7 @@
 namespace App\Http\Controllers;
 
 use App\Components\AsyncResponse;
+use App\OwnerGroup;
 use App\Role;
 use App\Supplier;
 use App\User;
@@ -79,7 +80,8 @@ class UserController extends Controller
         $logistics=app('LogisticService')->getSelection(["id","name"],"物流");
         $userWorkgroups=UserWorkgroup::query()->get();
         $suppliers=Supplier::query()->get();
-        return view('maintenance.user.create',['rolesAll'=>$roles,'logistics'=>$logistics,'userWorkgroups'=>$userWorkgroups,'suppliers'=>$suppliers]);
+        $ownerGroups=app('OwnerGroupService')->getSelection();
+        return view('maintenance.user.create',['rolesAll'=>$roles,'logistics'=>$logistics,'userWorkgroups'=>$userWorkgroups,'suppliers'=>$suppliers, 'ownerGroups'=>$ownerGroups]);
     }
 
 
@@ -115,7 +117,10 @@ class UserController extends Controller
         $userWorkgroup=$user->userWorkgroups()->first();
         $supplierUser=$user->suppliers()->get();
         $suppliers=Supplier::query()->get();
-        return view('maintenance.user.edit',compact('user','rolesAll','roles','logistics','logisticUser','userWorkgroups','userWorkgroup','suppliers','supplierUser'));
+        $ownerGroups=app('OwnerGroupService')->getSelection();
+//        $ownerGroup=$user->ownerGroups()->get();
+        $ownerGroup=[];
+        return view('maintenance.user.edit',compact('user','rolesAll','roles','logistics','logisticUser','userWorkgroups','userWorkgroup','suppliers','supplierUser','ownerGroups','ownerGroup'));
     }
 
     /**

+ 8 - 1
app/Owner.php

@@ -39,7 +39,8 @@ class Owner extends Model
         'subjection',           //主体公司
         'is_tax_exist',         //是否必填税率
         'model_sequence',       //调箱序列(优先级匹配)
-        'is_check_asn'          //是否校验ASN(收货时检查此项)
+        'is_check_asn',          //是否校验ASN(收货时检查此项)
+        'owner_group_id',        // 所属组别
     ];
     //relevance说明 0:仓储 1:作业 2:快递 3:物流 4:直发 5:系统 存储示例:["0","1"]存在仓储与作业计费
     protected $casts = [
@@ -226,4 +227,10 @@ class Owner extends Model
     {   //角色
         return $this->belongsToMany(Role::class);
     }
+
+    //所属组别
+    public function ownerGroup()
+    {   //工作组
+        return $this->belongsTo(OwnerGroup::class,"owner_group_id","id");
+    }
 }

+ 20 - 0
app/OwnerGroup.php

@@ -0,0 +1,20 @@
+<?php
+
+namespace App;
+
+use App\Traits\ModelTimeFormat;
+use Illuminate\Database\Eloquent\Model;
+
+use App\Traits\ModelLogChanging;
+
+class OwnerGroup extends Model
+{
+    use ModelLogChanging;
+
+    use ModelTimeFormat;
+    public $fillable = [
+        'name',                 //名称
+    ];
+
+
+}

+ 2 - 0
app/Providers/AppServiceProvider.php

@@ -168,6 +168,7 @@ use App\Services\RequirementUserService;
 use App\Services\WorkOrderService;
 use App\Services\WorkOrderTypeService;
 use App\Services\OrderPackageRemarkService;
+use App\Services\OwnerGroupService;
 
 class AppServiceProvider extends ServiceProvider
 {
@@ -315,6 +316,7 @@ class AppServiceProvider extends ServiceProvider
         app()->singleton('OwnerDischargeTaskSettlementBillService',OwnerDischargeTaskSettlementBillService::class);
         app()->singleton('OwnerFeeDetailService', OwnerFeeDetailService::class);
         app()->singleton('OwnerFeeTotalService',OwnerFeeTotalService::class);
+        app()->singleton('OwnerGroupService',OwnerGroupService::class);
         app()->singleton('OwnerLogisticFeeDetailService',OwnerLogisticFeeDetailService::class);
         app()->singleton('OwnerLogisticFeeReportService',OwnerLogisticFeeReportService::class);
         app()->singleton('OwnerMaterialService', OwnerMaterialService::class);

+ 50 - 0
app/Services/OwnerGroupService.php

@@ -0,0 +1,50 @@
+<?php
+
+namespace App\Services;
+
+use App\Traits\ServiceAppAop;
+use App\OwnerGroup;
+
+class OwnerGroupService
+{
+    use ServiceAppAop;
+    protected $modelClass=OwnerGroup::class;
+
+    public function getSelection($column = ['id', 'name'])
+    {
+        return OwnerGroup::query()->select($column)->get();
+    }
+
+    public function paginate($params = [])
+    {
+        $query = OwnerGroup::query()->orderByDesc('id');
+        if (isset($params['name']) && trim($params['name'])) $query->where('name', 'like', '%'.trim($params['name']).'%');
+        return $query->paginate($params['paginate']??50);
+    }
+
+    public function create(array $params)
+    {
+        return OwnerGroup::query()->create($params);
+    }
+
+
+    public function find($id)
+    {
+        return OwnerGroup::query()->find($id);
+    }
+
+    public function update(array $params, array $values)
+    {
+        $query = OwnerGroup::query();
+        foreach ($params as $column => $value){
+            $query->where($column,$value);
+        }
+        return $query->update($values);
+    }
+
+    public function destroy($id)
+    {
+        return OwnerGroup::destroy($id);
+    }
+
+}

+ 3 - 0
app/User.php

@@ -96,6 +96,9 @@ class User extends Authenticatable
     function suppliers(){
         return $this->belongsToMany('App\Supplier','supplier_user','user_id','supplier_id');
     }
+    function ownerGroups(){
+        return $this->belongsToMany('App\UserRole','user_role','id_user','id_role');
+    }
 
     function authorities(){
         $authorities = new Collection([]);

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

@@ -0,0 +1,32 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class CreateOwnerGroupsTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('owner_groups', function (Blueprint $table) {
+            $table->id();
+            $table->string('name')->nullable(false)->comment('组名');
+            $table->timestamps();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('owner_groups');
+    }
+}

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

@@ -0,0 +1,32 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class AddOwnerGroupIdColumnInOwnersTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('owners', function (Blueprint $table) {
+            $table->unsignedInteger('owner_group_id')->comment('货主组别 id');
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('owners', function (Blueprint $table) {
+            $table->dropColumn('owner_group_id');
+        });
+    }
+}

+ 25 - 0
database/seeds/OwnerGroupSeeder.php

@@ -0,0 +1,25 @@
+<?php
+
+use Illuminate\Database\Seeder;
+
+class OwnerGroupSeeder extends Seeder
+{
+    /**
+     * Run the database seeds.
+     *
+     * @return void
+     */
+    public function run()
+    {
+        //
+        $data = [];
+        for ($i=0;$i<200;$i++){
+            $data[$i] = [
+                'name' => '分组名'.$i,
+                'created_at' => date('Y-m-d H:i:s'),
+                'updated_at' => date('Y-m-d H:i:s'),
+            ];
+        }
+        \Illuminate\Support\Facades\DB::table('owner_groups')->insert($data);
+    }
+}

+ 15 - 0
resources/views/maintenance/owner/create.blade.php

@@ -34,6 +34,21 @@
                             @enderror
                         </div>
                     </div>
+                    <div class="form-group row">
+                        <label for="name" class="col-2 col-form-label text-right">所属名称</label>
+                        <div class="col-8">
+                            <select id="owner_group_id" type="text"  class="form-control" name="owner_group_id" autocomplete="off"  >
+                                @foreach($groups as $v)
+                                    <option value="{{$v->id}}">{{$v->name}}</option>
+                                @endforeach
+                            </select>
+                            @error('name')
+                            <span class="invalid-feedback" role="alert">
+                                <strong>{{ $message }}</strong>
+                            </span>
+                            @enderror
+                        </div>
+                    </div>
                     <div class="form-group row">
                         <div class="col-8 offset-2">
                             <input type="submit" class="btn btn-success form-control">

+ 15 - 0
resources/views/maintenance/owner/edit.blade.php

@@ -35,6 +35,21 @@
                             @enderror
                         </div>
                     </div>
+                    <div class="form-group row">
+                        <label for="name" class="col-2 col-form-label text-right">所属名称</label>
+                        <div class="col-8">
+                            <select id="owner_group_id" type="text"  class="form-control" name="owner_group_id" autocomplete="off"  >
+                                @foreach($groups as $v)
+                                    <option value="{{$v->id}}">{{$v->name}}</option>
+                                @endforeach
+                            </select>
+                            @error('name')
+                            <span class="invalid-feedback" role="alert">
+                                <strong>{{ $message }}</strong>
+                            </span>
+                            @enderror
+                        </div>
+                    </div>
                     <div class="form-group row">
                         <div class="col-8 offset-2">
                             <input type="submit" class="btn btn-outline-dark form-control">

+ 14 - 3
resources/views/maintenance/owner/index.blade.php

@@ -15,6 +15,7 @@
                         <th>ID</th>
                         <th>货主编码</th>
                         <th>货主名</th>
+                        <th>所属组名</th>
                         <th>创建时间</th>
                         <th>操作</th>
                     </tr>
@@ -22,6 +23,7 @@
                         <td class="text-muted">@{{owner.id}}</td>
                         <td>@{{owner.code}}</td>
                         <td>@{{owner.name}}</td>
+                        <td>@{{owner.group}}</td>
                         <td class="text-muted">@{{owner.created_at}}</td>
                         <td>
                             @can('货主-编辑')
@@ -45,15 +47,24 @@
             data:{
                 owners:[
                     @foreach( $owners as $owner )
-                    {id:'{{$owner->id}}',code:'{{$owner->code}}',name:'{{$owner->name}}',created_at:'{{$owner->created_at}}'},
+                    {id:'{{$owner->id}}',code:'{{$owner->code}}',name:'{{$owner->name}}',group:'{{$owner->ownerGroup->name??''}}',created_at:'{{$owner->created_at}}'},
+                    @endforeach
+                ],
+                owner_group: [
+                        @foreach($groups as $group)
+                    {name:'{{$group->id}}',value:'{{$group->name}}'},
                     @endforeach
                 ],
                 selectTr:0
             },
             mounted:function(){
                 let data = [
-                   [{name: 'code', type: 'input',tip:'可支持多货主编码,模糊搜索可在两侧添加百分号(%)进行',placeholder:'货主编码'},
-                   {name: 'name', type: 'input',tip:'可支持多货主名称,模糊搜索可在两侧添加百分号(%)进行',placeholder:'货主名称'}]
+                   [
+                    {name: 'code', type: 'input',tip:'可支持多货主编码,模糊搜索可在两侧添加百分号(%)进行',placeholder:'货主编码'},
+                    {name: 'name', type: 'input',tip:'可支持多货主名称,模糊搜索可在两侧添加百分号(%)进行',placeholder:'货主名称'},
+                   {name:'owner_group_id',type:'select_multiple_select',tip:['输入关键词快速定位下拉列表,回车确定','选择要显示的货主组名'],
+                       placeholder:['货主组名','定位或多选货主组名'],data:this.owner_group},
+                   ]
                 ];
                 this.from =new query({
                     el: '#form_div',

+ 25 - 0
resources/views/maintenance/ownerGroup/create.blade.php

@@ -0,0 +1,25 @@
+@extends('layouts.app')
+@section('title')编辑-货主组@endsection
+
+@section('content')
+<div class="container-fluid card">
+    <div class="card-body offset-3 mt-2">
+        <form method="post" action="{{isset($group) ? url('maintenance/ownerGroup').'/'.$group->id : url('maintenance/ownerGroup')}}">
+            @csrf
+            @if(isset($group)) @method('PUT') @endif
+            <div class="row mt-3">
+                <label class="col-2" for="name">货主组名称</label>
+                <input class="form-control col-6 @error("name") is-invalid @enderror" id="name" name="name"
+                value="{{old("name") ?? (isset($group) ? $group->name : '')}}">
+                @error("name")<span class="offset-2 mt-0 invalid-feedback">
+                        <strong>{{$message}}</strong>
+                    </span>@enderror
+            </div>
+            <div class="row mt-3 offset-1">
+                <button class="btn btn-success col-7">提交</button>
+            </div>
+        </form>
+    </div>
+</div>
+@stop
+

+ 81 - 0
resources/views/maintenance/ownerGroup/index.blade.php

@@ -0,0 +1,81 @@
+@extends('layouts.app')
+@section('title')查询-货主组别@endsection
+
+@section('content')
+    <div class="container-fluid card" id="container">
+        <div id="form_div"></div>
+
+        @if(Session::has('successTip'))
+            <div class="alert alert-success h1">{{Session::get('successTip')}}</div>
+        @endif
+        <table class="table table-hover table-striped text-nowrap card-body mt-2">
+            <tr>
+                <th>序号</th>
+                <th>名称</th>
+                <th>创建时间</th>
+                <th>操作</th>
+            </tr>
+            <tr v-for="(group,i) in groups"  @click="selectTr===i+1?selectTr=0:selectTr=i+1" :class="selectTr===i+1?'focusing' : ''">
+                <td>@{{ i+1 }}</td>
+                <td>@{{ group.name }}</td>
+                <td>@{{ group.created_at }}</td>
+                <td>
+                    @can("货主组别-编辑")<a :href="'{{url('maintenance/ownerGroup')}}/'+group.id+'/edit'"><button class="btn btn-sm btn-outline-info">改</button></a>@endcan
+                    @can("货主组别-删除")<button class="btn btn-sm btn-outline-danger" @click="destroy(group.id,i,group.name)">删</button>@endcan
+                </td>
+            </tr>
+        </table>
+        {{$groups->withQueryString()->links()}}
+    </div>
+@stop
+
+@section("lastScript")
+    <script type="text/javascript" src="{{mix('js/queryForm/queryForm.js')}}"></script>
+    <script>
+        new Vue({
+            el:"#container",
+            data:{
+                groups : [
+                        @foreach($groups as $group)
+                    {
+                        id:"{{$group->id}}",
+                        name:"{{$group->name}}",
+                        created_at:"{{$group->created_at}}",
+                    },
+                    @endforeach
+                ],
+                selectTr:0
+            },
+            mounted:function(){
+                let data = [
+                    [{name: 'name', type: 'input',tip:'可支持多货主组别名称,模糊搜索可在两侧添加百分号(%)进行',placeholder:'货主组别'}]
+                ];
+                this.from =new query({
+                    el: '#form_div',
+                    condition: data,
+                });
+                this.from.init();
+            },
+            methods:{
+                destroy(id,index,name){
+                    window.tempTip.confirm("确定要删除"+name+"吗?",()=>{
+                        window.axios.delete("{{url('maintenance/ownerGroup')}}/"+id)
+                            .then(res=>{
+                                if (res.data.success){
+                                    this.$delete(this.groups,index);
+                                    window.tempTip.setDuration(2000);
+                                    window.tempTip.showSuccess("删除"+name+"成功");
+                                    return;
+                                }
+                                window.tempTip.setDuration(3000);
+                                window.tempTip.show(res.data.data);
+                            }).catch(err=>{
+                            window.tempTip.setDuration(3000);
+                            window.tempTip.show("网络错误:"+err);
+                        })
+                    })
+                }
+            },
+        });
+    </script>
+@stop

+ 138 - 0
resources/views/maintenance/user/edit.blade.php

@@ -141,6 +141,36 @@
                         </div>
                     </div>
 
+{{--                    货主分组开始--}}
+                    <hr class="col-8 offset-2 border-info">
+                    <div class="form-group row">
+                        <label for="supplier" 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="seekOwnerGroup($event)" title="输入关键词快速定位"></div>
+                    </div>
+                    <div class="form-group row">
+                        <label class="col-md-3"></label>
+                        <div class="col-md-4">
+                            <input name="ownerGroup" hidden    v-model="ownerGroups" >
+                            <div class="input-group" style="max-height: 190px; overflow-y: scroll;border-radius:5px;opacity:0.5;text-align: center;">
+                                <ul class="list-group tooltipTarget" style="width: 100%" onselectstart="return false;">
+                                    <li  :data-original-title="ownerGroup.style ? '双击删除货主组' :'双击添加货主组'"    v-for="ownerGroup in ownerGroupsFilter" :id="ownerGroup.name" class="list-group-item list-group-item-action pt-0 pb-0"
+                                         @dblclick="selectedOwnerGroup(ownerGroup)" :class="ownerGroup.style ? 'active' :''"><span style="cursor: default;" :id="ownerGroup.name"> @{{ ownerGroup.name }}  </span></li>
+                                </ul>
+                            </div>
+                        </div>
+                        <div class="col-md-3">
+                            <div class="input-group" style="max-height: 190px; overflow-y: scroll;border-radius:5px;text-align: center;">
+                                <ul class="list-group" style="width: 100%" onselectstart="return false;">
+                                    <li  title="双击删除货主组"    v-for="ownerGroup in ownerGroupsList" :id="ownerGroup.name" class="list-group-item list-group-item-action pt-0 pb-0"
+                                         @dblclick="selectedOwnerGroup(ownerGroup)" ><span style="cursor: default;" > @{{ ownerGroup.name }}  </span></li>
+                                </ul>
+                            </div>
+                        </div>
+                    </div>
+{{--                    货主分组结束--}}
+
                     <hr class="col-8 offset-2 border-info">
                     <div class="form-group row">
                         <div class="col-8 offset-2">
@@ -227,6 +257,29 @@
                     @endif
                 ],
                 suppliersList: [],
+
+
+                ownerGroupsAll: [
+                        @foreach($ownerGroups as $ownerGroup)
+                    {id: '{{$ownerGroup->id}}', name: '{{$ownerGroup->name}}', style: false},
+                    @endforeach
+                ],
+                ownerGroupsFilter: [
+                        @foreach($ownerGroups as $ownerGroup)
+                    {id: '{{$ownerGroup->id}}', name: '{{$ownerGroup->name}}', style: false},
+                    @endforeach
+                ],
+                ownerGroups: [
+                    @if(old('ownerGroup'))
+                        {{ old('ownerGroup') }}
+                        @else
+                        @foreach( $ownerGroup as $group )
+                        {{$group->id??''}},
+                    @endforeach
+                    @endif
+                ],
+                ownerGroupsList: [],
+
             },
             mounted:function(){
                 $(".tooltipTarget").tooltip({'trigger':'hover'});
@@ -275,6 +328,22 @@
                         });
                     }
                 }
+
+                if (this.ownerGroups.length>0){
+                    let ownerGroupsAll=this.ownerGroupsAll;
+                    let ownerGroups=this.ownerGroups;
+                    let ownerGroupsList=this.ownerGroupsList;
+                    for (let i = 0; i < ownerGroups.length; i++) {
+                        ownerGroupsAll.every(function (ownerGroupAll) {
+                            if (ownerGroupAll.id == ownerGroups[i]) {
+                                ownerGroupAll.style = true;
+                                ownerGroupsList.push({'id':ownerGroupAll.id,'name':ownerGroupAll.name});
+                                return false;
+                            }
+                            return true;
+                        });
+                    }
+                }
             },
             methods:{
                 selectedLogistic:function (e) {
@@ -482,6 +551,75 @@
                         }
                     }
                 },
+
+                selectedOwnerGroup:function (e) {
+                    let ownerGroups=this.ownerGroups;
+                    let ownerGroupsAll=this.ownerGroupsAll;
+                    let ownerGroupsList=this.ownerGroupsList;
+                    let isOwnerGroup=true;
+                    if (ownerGroups&&ownerGroupsAll) {
+                        for (let i = 0; i < ownerGroups.length; i++) {
+                            if (ownerGroups[i] == e.id) {
+                                ownerGroups.splice(i,1);
+                                ownerGroupsAll.every(function (ownerGroupAll) {
+                                    if (ownerGroupAll.id == e.id) {
+                                        ownerGroupAll.style = false;
+                                        return false;
+                                    }
+                                    return true;
+                                });
+                                ownerGroupsList.every(function (ownerGroup,i) {
+                                    if (ownerGroup.id==e.id){
+                                        ownerGroupsList.splice(i,1);
+                                        return false;
+                                    }
+                                    return true;
+                                });
+                                isOwnerGroup= false;
+                                break;
+                            }
+                            isOwnerGroup= true;
+                        }
+                    }
+                    if (isOwnerGroup || !ownerGroups){
+                        ownerGroups.push(e.id);
+                        ownerGroupsAll.every(function (ownerGroupAll) {
+                            if (ownerGroupAll.id==e.id){
+                                ownerGroupAll.style=true;
+                                ownerGroupsList.push({'id':ownerGroupAll.id,'name':ownerGroupAll.name});
+                                return false;
+                            }
+                            return  true;
+                        });
+                    }
+                    setTimeout(function(){
+                        $(".tooltipTarget").tooltip({'trigger':'hover'});
+                    },10)
+                },
+                seekOwnerGroup:function (e) {
+                    let $val=e.target.value;
+                    let ownerGroupsAll=this.suppliersAll;
+                    let bool = false;
+                    ownerGroupsAll.every(function (ownerGroupAll) {
+                        let name=ownerGroupAll.name;
+                        if (name.includes($val)){
+                            bool = true;
+                            return false;
+                        }
+                        return  true;
+                    });
+                    if($val === '' ){
+                        this.ownerGroupsFilter = this.ownerGroupsAll;
+                    }else if(bool){
+                        this.ownerGroupsFilter = [];
+                        for (let i = 0; i <ownerGroupsAll.length ; i++) {
+                            let ownerGroup = ownerGroupsAll[i];
+                            if(ownerGroup.name.includes($val)){
+                                this.ownerGroupsFilter.push(ownerGroup);
+                            }
+                        }
+                    }
+                },
             },
         });
 

+ 1 - 1
resources/views/transport/waybill/index.blade.php

@@ -842,7 +842,7 @@
                 rendingHeader(){
                     let column = [
                         {name:'operation',value: '操作', neglect: true, class:"td-operation"},
-                        {name:'onTop',value: '置顶', neglect: true, class:"td-operation"},
+                        @can('运输管理-运单-置顶'){name:'onTop',value: '置顶', neglect: true, class:"td-operation"},@endcan
                         {name:'status',value: '状态', class:"td-operation"},
                         {name:'express_face_list',value: '快递面单是否打印', class:"td-warm"},
                         {name:'index',value: '序号', neglect: true, class:"td-warm"},

+ 1 - 0
routes/web.php

@@ -318,6 +318,7 @@ Route::group(['middleware'=>'auth'],function ($route){
         Route::resource('user', 'UserController');
         Route::resource('role', 'RoleController');
         Route::resource('owner', 'OwnerController');
+        Route::resource('ownerGroup', 'OwnerGroupController');
         Route::resource('logistic', 'LogisticController');
         Route::resource('qualityLabel', 'QualityLabelController');
         Route::resource('carrier', 'CarriersController');