Преглед изворни кода

快速入库-属性仓判空
计费模型-将原有运输计费模型移到基础计费模型下作为子块

Zhouzhendong пре 5 година
родитељ
комит
7e85f21e59
55 измењених фајлова са 1681 додато и 80 уклоњено
  1. 88 0
      app/Http/Controllers/CustomerBaseController.php
  2. 12 0
      app/Http/Controllers/CustomerController.php
  3. 88 0
      app/Http/Controllers/FeatureController.php
  4. 1 1
      app/Http/Controllers/OrderController.php
  5. 31 0
      app/Http/Controllers/PriceModelController.php
  6. 88 0
      app/Http/Controllers/ProcessMethodController.php
  7. 5 4
      app/Http/Controllers/StoreController.php
  8. 2 1
      app/Http/Controllers/TestController.php
  9. 88 0
      app/Http/Controllers/UserOwnerGroupController.php
  10. 1 1
      app/Http/Controllers/WaybillController.php
  11. 6 6
      app/Http/Controllers/WaybillPriceModelsController.php
  12. 1 0
      config/stores.php
  13. 21 1
      database/migrations/2020_10_20_134819_create_customers_table.php
  14. 12 3
      database/migrations/2020_10_26_165012_create_owner_fee_details_table.php
  15. 37 0
      database/migrations/2020_10_27_103741_create_owner_bill_reports_table.php
  16. 38 0
      database/migrations/2020_10_27_142647_create_owner_storage_price_model_table.php
  17. 32 0
      database/migrations/2020_10_27_162056_add_column_unit_id_table_process_methods.php
  18. 36 0
      database/migrations/2020_10_27_175452_create_owner_price_operations_table.php
  19. 36 0
      database/migrations/2020_10_28_105613_create_owner_out_storage_rules_table.php
  20. 33 0
      database/migrations/2020_10_28_105639_create_owner_in_storage_rules_table.php
  21. 34 0
      database/migrations/2020_10_28_110936_create_features_table.php
  22. 28 10
      public/css/app.css
  23. 6 0
      resources/sass/layout.scss
  24. 104 0
      resources/views/customer/finance/billConfirmation.blade.php
  25. 120 0
      resources/views/customer/finance/instantBill.blade.php
  26. 4 4
      resources/views/customer/finance/menu.blade.php
  27. 1 1
      resources/views/customer/menu.blade.php
  28. 27 0
      resources/views/maintenance/customer/create.blade.php
  29. 23 0
      resources/views/maintenance/customer/index.blade.php
  30. 14 0
      resources/views/maintenance/customer/menu.blade.php
  31. 35 0
      resources/views/maintenance/feature/create.blade.php
  32. 24 0
      resources/views/maintenance/feature/index.blade.php
  33. 14 0
      resources/views/maintenance/feature/menu.blade.php
  34. 20 8
      resources/views/maintenance/menu.blade.php
  35. 18 0
      resources/views/maintenance/priceModel/menu.blade.php
  36. 174 0
      resources/views/maintenance/priceModel/operation/create.blade.php
  37. 58 0
      resources/views/maintenance/priceModel/operation/index.blade.php
  38. 15 0
      resources/views/maintenance/priceModel/operation/menu.blade.php
  39. 66 0
      resources/views/maintenance/priceModel/storage/create.blade.php
  40. 38 0
      resources/views/maintenance/priceModel/storage/index.blade.php
  41. 15 0
      resources/views/maintenance/priceModel/storage/menu.blade.php
  42. 2 11
      resources/views/maintenance/priceModel/waybillPriceModel/create.blade.php
  43. 2 13
      resources/views/maintenance/priceModel/waybillPriceModel/edit.blade.php
  44. 1 1
      resources/views/maintenance/priceModel/waybillPriceModel/import.blade.php
  45. 3 4
      resources/views/maintenance/priceModel/waybillPriceModel/index.blade.php
  46. 5 4
      resources/views/maintenance/priceModel/waybillPriceModel/menu.blade.php
  47. 37 0
      resources/views/maintenance/processMethod/create.blade.php
  48. 24 0
      resources/views/maintenance/processMethod/index.blade.php
  49. 14 0
      resources/views/maintenance/processMethod/menu.blade.php
  50. 2 1
      resources/views/maintenance/role/index.blade.php
  51. 24 0
      resources/views/maintenance/userOwnerGroup/create.blade.php
  52. 24 0
      resources/views/maintenance/userOwnerGroup/index.blade.php
  53. 14 0
      resources/views/maintenance/userOwnerGroup/menu.blade.php
  54. 8 0
      resources/views/waybill/authorityMenu.blade.php
  55. 27 6
      routes/web.php

+ 88 - 0
app/Http/Controllers/CustomerBaseController.php

@@ -0,0 +1,88 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use Illuminate\Http\Request;
+use Illuminate\Http\Response;
+use Illuminate\Support\Facades\Gate;
+
+class CustomerBaseController extends Controller
+{
+    /**
+     * Display a listing of the resource.
+     *
+     * @return Response
+     */
+    public function index()
+    {
+        if(!Gate::allows('客户-查询')){ return redirect('denied');  }
+        return response()->view('maintenance.customer.index');
+    }
+
+    /**
+     * Show the form for creating a new resource.
+     *
+     * @return Response
+     */
+    public function create()
+    {
+        if(!Gate::allows('客户-录入')){ return redirect('denied');  }
+        return response()->view('maintenance.customer.create');
+    }
+
+    /**
+     * Store a newly created resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return \Illuminate\Http\Response
+     */
+    public function store(Request $request)
+    {
+        //
+    }
+
+    /**
+     * Display the specified resource.
+     *
+     * @param  int  $id
+     * @return \Illuminate\Http\Response
+     */
+    public function show($id)
+    {
+        //
+    }
+
+    /**
+     * Show the form for editing the specified resource.
+     *
+     * @param  int  $id
+     * @return \Illuminate\Http\Response
+     */
+    public function edit($id)
+    {
+        //
+    }
+
+    /**
+     * Update the specified resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  int  $id
+     * @return \Illuminate\Http\Response
+     */
+    public function update(Request $request, $id)
+    {
+        //
+    }
+
+    /**
+     * Remove the specified resource from storage.
+     *
+     * @param  int  $id
+     * @return \Illuminate\Http\Response
+     */
+    public function destroy($id)
+    {
+        //
+    }
+}

+ 12 - 0
app/Http/Controllers/CustomerController.php

@@ -36,4 +36,16 @@ class CustomerController extends Controller
         if(!Gate::allows('客户管理-项目-面积')){ return redirect('denied');  }
         return response()->view('customer.project.area');
     }
+
+    public function financeInstantBill()
+    {
+        if(!Gate::allows('客户管理-财务-即时账单')){ return redirect('denied');  }
+        return response()->view('customer.finance.instantBill');
+    }
+
+    public function financeBillConfirmation()
+    {
+        if(!Gate::allows('客户管理-财务-账单确认')){ return redirect('denied');  }
+        return response()->view('customer.finance.billConfirmation');
+    }
 }

+ 88 - 0
app/Http/Controllers/FeatureController.php

@@ -0,0 +1,88 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use Illuminate\Http\Request;
+use Illuminate\Http\Response;
+use Illuminate\Support\Facades\Gate;
+
+class FeatureController extends Controller
+{
+    /**
+     * Display a listing of the resource.
+     *
+     * @return Response
+     */
+    public function index()
+    {
+        if(!Gate::allows('特征-查询')){ return redirect('denied');  }
+        return response()->view("maintenance.feature.index");
+    }
+
+    /**
+     * Show the form for creating a new resource.
+     *
+     * @return Response
+     */
+    public function create()
+    {
+        if(!Gate::allows('特征-录入')){ return redirect('denied');  }
+        return response()->view("maintenance.feature.create");
+    }
+
+    /**
+     * Store a newly created resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return \Illuminate\Http\Response
+     */
+    public function store(Request $request)
+    {
+        //
+    }
+
+    /**
+     * Display the specified resource.
+     *
+     * @param  int  $id
+     * @return \Illuminate\Http\Response
+     */
+    public function show($id)
+    {
+        //
+    }
+
+    /**
+     * Show the form for editing the specified resource.
+     *
+     * @param  int  $id
+     * @return \Illuminate\Http\Response
+     */
+    public function edit($id)
+    {
+        //
+    }
+
+    /**
+     * Update the specified resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  int  $id
+     * @return \Illuminate\Http\Response
+     */
+    public function update(Request $request, $id)
+    {
+        //
+    }
+
+    /**
+     * Remove the specified resource from storage.
+     *
+     * @param  int  $id
+     * @return \Illuminate\Http\Response
+     */
+    public function destroy($id)
+    {
+        //
+    }
+}

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

@@ -20,7 +20,7 @@ use Illuminate\Support\Facades\Http;
 class OrderController extends Controller
 {
     public function delivering(Request $request){
-        if(!Gate::allows('订单管理-查询')){ return redirect('denied');  }
+        if(!Gate::allows('订单管理-查询')){ return view('order.index');  }
         /** @var OrderService $orderService */
         $orderService = app('orderService');
         $request = $request->input();

+ 31 - 0
app/Http/Controllers/PriceModelController.php

@@ -0,0 +1,31 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Gate;
+
+class PriceModelController extends Controller
+{
+    public function storeIndex()
+    {
+        if(!Gate::allows('计费模型-仓储')){ return redirect('denied');  }
+        return response()->view('maintenance.priceModel.storage.index');
+    }
+
+    public function storeCreate()
+    {
+        if(!Gate::allows('计费模型-仓储-录入')){ return redirect('denied');  }
+        return response()->view('maintenance.priceModel.storage.create');
+    }
+
+    public function operationIndex(){
+        if(!Gate::allows('计费模型-作业-查询')){ return redirect('denied');  }
+        return response()->view('maintenance.priceModel.operation.index');
+    }
+
+    public function operationCreate(){
+        if(!Gate::allows('计费模型-作业-录入')){ return redirect('denied');  }
+        return response()->view('maintenance.priceModel.operation.create');
+    }
+}

+ 88 - 0
app/Http/Controllers/ProcessMethodController.php

@@ -0,0 +1,88 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use Illuminate\Http\Request;
+use Illuminate\Http\Response;
+use Illuminate\Support\Facades\Gate;
+
+class ProcessMethodController extends Controller
+{
+    /**
+     * Display a listing of the resource.
+     *
+     * @return Response
+     */
+    public function index()
+    {
+        if(!Gate::allows('作业类型-查询')){ return redirect('denied');  }
+        return response()->view("maintenance.processMethod.index");
+    }
+
+    /**
+     * Show the form for creating a new resource.
+     *
+     * @return Response
+     */
+    public function create()
+    {
+        if(!Gate::allows('作业类型-录入')){ return redirect('denied');  }
+        return response()->view("maintenance.processMethod.create");
+    }
+
+    /**
+     * Store a newly created resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return \Illuminate\Http\Response
+     */
+    public function store(Request $request)
+    {
+        //
+    }
+
+    /**
+     * Display the specified resource.
+     *
+     * @param  int  $id
+     * @return \Illuminate\Http\Response
+     */
+    public function show($id)
+    {
+        //
+    }
+
+    /**
+     * Show the form for editing the specified resource.
+     *
+     * @param  int  $id
+     * @return \Illuminate\Http\Response
+     */
+    public function edit($id)
+    {
+        //
+    }
+
+    /**
+     * Update the specified resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  int  $id
+     * @return \Illuminate\Http\Response
+     */
+    public function update(Request $request, $id)
+    {
+        //
+    }
+
+    /**
+     * Remove the specified resource from storage.
+     *
+     * @param  int  $id
+     * @return \Illuminate\Http\Response
+     */
+    public function destroy($id)
+    {
+        //
+    }
+}

+ 5 - 4
app/Http/Controllers/StoreController.php

@@ -146,7 +146,7 @@ class StoreController extends Controller
             'depository_code'=>$depository_code,
             'follow_code'=>$store['id'],
         ]);
-        if ($result["success"]){
+        if ($result){
             $store->status='已入库';
             $store->save();
             if ($store->storeItems){
@@ -196,21 +196,22 @@ class StoreController extends Controller
                 LogService::log(__METHOD__,"快速入库-FLUX收货失败","ASNNO:".$asnno.";ERROR:".$result);
                 return ['success' => false, 'data' => $detail->asnlineno.'收货失败,错误代码:'.$result];
             }
-            if (!isset($depositories[$detail->lotatt05])){
+            if (!isset($depositories[$detail->lotatt05]) && $detail->lotatt05){
                 $depository = app('depositoryService')->firstOrCreate(["code"=>$detail->lotatt05],["code"=>$detail->lotatt05,"name"=>$detail->lotatt05]);
                 $depositories[$detail->lotatt05] = $depository->id;
             }
-            $items[] = [
+            $item = [
                 "asn_line_code" => $detail->asnlineno,
                 "name" => $detail->skudescrc,
                 "sku" => $detail->sku,
                 "barcode" => $detail->alternate_sku1,
-                "depository_id" => $depositories[$detail->lotatt05],
                 "amount" => $detail->expectedqty_each,
                 "quality" => $quality == 'ZP' ? '正品' : '残次',
                 "status" => "已入库",
                 "created_at" => $toDay
             ];
+            if (isset($depositories[$detail->lotatt05]))$item["depository_id"] = $depositories[$detail->lotatt05];
+            $items[] = $item;
         }
         oci_close($conn);
         $warehouse = app('warehouseService')->firstOrCreate(["code"=>$asn->warehouseid],["code"=>$asn->warehouseid,"name"=>$asn->warehouseid]);

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

@@ -105,7 +105,8 @@ class TestController extends Controller
                      'OUT_Return_Code:'.$result
                  );*/
     public function test4(){
-        dd(Auth::id());
+        if (array_search("CGRK",array_values(config('stores.types'))) === false)return ['success'=>false, 'data'=>"该单据类型不允许被入库"];
+        return "SUCCESS";
     }
 
     public function test2(){

+ 88 - 0
app/Http/Controllers/UserOwnerGroupController.php

@@ -0,0 +1,88 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use Illuminate\Http\Request;
+use Illuminate\Http\Response;
+use Illuminate\Support\Facades\Gate;
+
+class UserOwnerGroupController extends Controller
+{
+    /**
+     * Display a listing of the resource.
+     *
+     * @return Response
+     */
+    public function index()
+    {
+        if(!Gate::allows('项目组-查询')){ return redirect('denied');  }
+        return response()->view("maintenance.userOwnerGroup.index");
+    }
+
+    /**
+     * Show the form for creating a new resource.
+     *
+     * @return Response
+     */
+    public function create()
+    {
+        if(!Gate::allows('项目组-录入')){ return redirect('denied');  }
+        return response()->view("maintenance.userOwnerGroup.create");
+    }
+
+    /**
+     * Store a newly created resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return \Illuminate\Http\Response
+     */
+    public function store(Request $request)
+    {
+        //
+    }
+
+    /**
+     * Display the specified resource.
+     *
+     * @param  int  $id
+     * @return \Illuminate\Http\Response
+     */
+    public function show($id)
+    {
+        //
+    }
+
+    /**
+     * Show the form for editing the specified resource.
+     *
+     * @param  int  $id
+     * @return \Illuminate\Http\Response
+     */
+    public function edit($id)
+    {
+        //
+    }
+
+    /**
+     * Update the specified resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  int  $id
+     * @return \Illuminate\Http\Response
+     */
+    public function update(Request $request, $id)
+    {
+        //
+    }
+
+    /**
+     * Remove the specified resource from storage.
+     *
+     * @param  int  $id
+     * @return \Illuminate\Http\Response
+     */
+    public function destroy($id)
+    {
+        //
+    }
+}

+ 1 - 1
app/Http/Controllers/WaybillController.php

@@ -48,7 +48,7 @@ class WaybillController extends Controller
      */
     public function index(Request $request,OwnerService $ownerService,CarrierService $carrierService)
     {
-        if(!Gate::allows('运输管理-查询')){ return redirect(url('/'));  }
+        if(!Gate::allows('运输管理-查询')){ return view("waybill.authorityMenu");  }
         $paginateParams = $request->input();
         $waybills=app('waybillService')->paginate($request->input());
         return view('waybill.index', [

+ 6 - 6
app/Http/Controllers/WaybillPriceModelsController.php

@@ -34,10 +34,10 @@ class WaybillPriceModelsController extends Controller
                 $waybillPriceModels=$waybillPriceModels->where('province_id',$request->input('province_id'));
             }
             $waybillPriceModels=$waybillPriceModels->paginate($request->input('paginate')?$request->input('paginate'):50);
-            return view('maintenance.waybillPriceModel.index',['waybillPriceModels'=>$waybillPriceModels,'carriers'=>$carriers,'provinces'=>$provinces,'filterData'=>$data]);
+            return view('maintenance.priceModel.waybillPriceModel.index',['waybillPriceModels'=>$waybillPriceModels,'carriers'=>$carriers,'provinces'=>$provinces,'filterData'=>$data]);
         }else{
             $waybillPriceModels= $waybillPriceModels->paginate(50);
-            return view('maintenance.waybillPriceModel.index',['waybillPriceModels'=>$waybillPriceModels,'carriers'=>$carriers,'provinces'=>$provinces,'filterData'=>$data]);
+            return view('maintenance.priceModel.waybillPriceModel.index',['waybillPriceModels'=>$waybillPriceModels,'carriers'=>$carriers,'provinces'=>$provinces,'filterData'=>$data]);
         }
     }
 
@@ -48,7 +48,7 @@ class WaybillPriceModelsController extends Controller
         $carriers=Carrier::get();
         $provinces=Province::get();
         $units=Unit::get();
-        return view('maintenance.waybillPriceModel.create',['carriers'=>$carriers,'provinces'=>$provinces,'units'=>$units]);
+        return view('maintenance.priceModel.waybillPriceModel.create',['carriers'=>$carriers,'provinces'=>$provinces,'units'=>$units]);
     }
 
     public function getCities($province_id){
@@ -90,7 +90,7 @@ class WaybillPriceModelsController extends Controller
             $waybillPriceModel=WaybillPriceModel::create($waybillPriceModel);
             event(new WaybillPriceModelEvent($waybillPriceModel));
             $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
-            return redirect('maintenance/waybillPriceModel')->with('successTip','新计费模型录入成功');
+            return redirect('maintenance/priceModel/waybillPriceModel')->with('successTip','新计费模型录入成功');
         }else{
             return redirect()->back()->with('successTip','该计费模型已存在');
         }
@@ -106,7 +106,7 @@ class WaybillPriceModelsController extends Controller
         $provinces=Province::get();
         $cities=City::where('province_id',$waybillPriceModel->province_id)->get();
         $units=Unit::get();
-        return view('maintenance.waybillPriceModel.edit',['waybillPriceModel'=>$waybillPriceModel,'carriers'=>$carriers,'provinces'=>$provinces,'units'=>$units,'cities'=>$cities]);
+        return view('maintenance.priceModel.waybillPriceModel.edit',['waybillPriceModel'=>$waybillPriceModel,'carriers'=>$carriers,'provinces'=>$provinces,'units'=>$units,'cities'=>$cities]);
     }
 
 
@@ -122,7 +122,7 @@ class WaybillPriceModelsController extends Controller
         if ($waybillPriceModel->save()){
             event(new WaybillPriceModelEvent($waybillPriceModel));
             $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
-            return redirect('maintenance/waybillPriceModel')->with('successTip','新计费模型修改成功');
+            return redirect('maintenance/priceModel/waybillPriceModel')->with('successTip','新计费模型修改成功');
         }
     }
 

+ 1 - 0
config/stores.php

@@ -5,6 +5,7 @@ return [
         "笕尚" => "JIANSHANG",
         "幼岚" => "ALLBLU",
         "淳钲" => "CHUNZHENG",
+        "宝时" => "BAOSHI",
     ],
     "types" => [
         'THRK','DBRK','QTRK','HHRK','CGRK'

+ 21 - 1
database/migrations/2020_10_20_134819_create_customers_table.php

@@ -14,6 +14,25 @@ class CreateCustomersTable extends Migration
         '客户管理-项目-查询',
         '客户管理-项目-录入',
         '客户管理-项目-面积',
+        '客户管理-财务-即时账单',
+        '客户管理-财务-账单确认',
+        '计费模型-仓储',
+        '计费模型-仓储-录入',
+        '客户',
+        '客户-查询',
+        '客户-录入',
+        '项目组',
+        '项目组-查询',
+        '项目组-录入',
+        '作业类型',
+        '作业类型-查询',
+        '作业类型-录入',
+        '特征',
+        '特征-录入',
+        '特征-查询',
+        '计费模型-作业',
+        '计费模型-作业-查询',
+        '计费模型-作业-录入',
     ];
     /**
      * Run the migrations.
@@ -26,7 +45,8 @@ class CreateCustomersTable extends Migration
             $table->id();
             $table->string('code')->unique()->comment('客户代码');
             $table->string('name')->comment('客户名称');
-            $table->timestamp('created_at');
+            $table->string('company_name')->comment('公司名称');
+            $table->timestamps();
         });
         foreach ($this->authNames as $name){
             if(!Authority::query()->where('name',$name)->first())(new Authority(['name'=>$name,'alias_name'=>$name]))->save();

+ 12 - 3
database/migrations/2020_10_26_165012_create_owner_fee_details_table.php

@@ -17,12 +17,21 @@ class CreateOwnerFeeDetailsTable extends Migration
             $table->id();
             $table->bigInteger('owner_id')->index()->comment('外键货主');
             $table->date('counting_month')->index()->comment('结算月');
-            $table->dateTime('worked_at')->index()->comment('作业时间');
+            $table->date('worked_at')->index()->comment('作业时间');
             $table->enum('type',["发货","收货","增值服务"])->index()->comment('类型');
             $table->bigInteger('shop_id')->nullable()->index()->comment('外键店铺');
             $table->string('operation_bill')->nullable()->comment('发/收/退货单号');
-            //TODO 字段与来源渠道无法确认 暂时搁置
-            $table->timestamps();
+            $table->string('consignee_name')->nullable()->comment('收货人');
+            $table->string('consignee_phone')->nullable()->comment('收货人电话');
+            $table->string('commodity_amount')->nullable()->comment('商品数量');
+            $table->string('logistic_bill')->nullable()->comment('快递单号');
+            $table->decimal('volume',8,3)->nullable()->comment('体积');
+            $table->decimal('weight',8,3)->nullable()->comment('重量');
+            $table->bigInteger("logistic_id")->nullable()->index()->comment("快递公司");
+            $table->bigInteger('process_method_id')->nullable()->index()->comment('外键加工类型');
+            $table->decimal('work_fee',8,4)->nullable()->comment('作业费');
+            $table->decimal('logistic_fee',8,4)->nullable()->comment('物流费');
+            $table->timestamp('created_at')->nullable()->comment('创建时间');
         });
     }
 

+ 37 - 0
database/migrations/2020_10_27_103741_create_owner_bill_reports_table.php

@@ -0,0 +1,37 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class CreateOwnerBillReportsTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('owner_bill_reports', function (Blueprint $table) {
+            $table->id();
+            $table->bigInteger('owner_id')->index()->comment('外键项目');
+            $table->date('counting_month')->index()->comment('结算月');
+            $table->decimal('initial_fee',8,4)->nullable()->comment('原始账单金额');
+            $table->decimal('confirm_fee',8,4)->nullable()->comment('确认账单金额');
+            $table->decimal('difference',8,4)->nullable()->comment('差额');
+            $table->enum('confirmed',["是","否"])->default("否")->comment("确认状态");
+            $table->timestamps();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('owner_bill_reports');
+    }
+}

+ 38 - 0
database/migrations/2020_10_27_142647_create_owner_storage_price_model_table.php

@@ -0,0 +1,38 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class CreateOwnerStoragePriceModelTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('owner_storage_price_model', function (Blueprint $table) {
+            $table->id();
+            $table->enum("counting_type",["包仓","灵活用仓","统单价"])->default("灵活用仓")->comment('计费类型');
+            $table->enum("using_type",["常温","恒温"])->default("常温")->comment('用仓类型');
+            $table->decimal("minimum_area")->default(0)->comment("最低起租面积");
+            $table->decimal("price",8,3)->comment("单价");
+            $table->enum("discount_type",["无减免","按单减免","固定减免"])->default("无减免")->comment("最低起租面积");
+            $table->decimal("discount_value")->nullable()->comment("减免值");
+            $table->bigInteger("unit_id")->nullable()->index()->comment("外键单位");
+            $table->timestamps();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('owner_storage_price_model');
+    }
+}

+ 32 - 0
database/migrations/2020_10_27_162056_add_column_unit_id_table_process_methods.php

@@ -0,0 +1,32 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class AddColumnUnitIdTableProcessMethods extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('process_methods', function (Blueprint $table) {
+            $table->bigInteger("unit_id")->nullable()->index()->comment('单位');
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('process_methods', function (Blueprint $table) {
+            $table->dropColumn("unit_id");
+        });
+    }
+}

+ 36 - 0
database/migrations/2020_10_27_175452_create_owner_price_operations_table.php

@@ -0,0 +1,36 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class CreateOwnerPriceOperationsTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('owner_price_operations', function (Blueprint $table) {
+            $table->id();
+            $table->enum("operation_type",["入库","出库"])->default("入库")->comment("操作类型");
+            $table->string("name")->nullable()->comment("名称");
+            $table->enum("strategy",["默认","特征"])->default("默认")->comment("策略");
+            $table->string("feature")->nullable()->comment("特征");
+            $table->string("remark")->nullable()->comment("备注");
+            $table->timestamps();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('owner_price_operations');
+    }
+}

+ 36 - 0
database/migrations/2020_10_28_105613_create_owner_out_storage_rules_table.php

@@ -0,0 +1,36 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class CreateOwnerOutStorageRulesTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('owner_out_storage_rules', function (Blueprint $table) {
+            $table->bigInteger("owner_price_operation_id")->comment("外键作业计费模型");
+            $table->enum("owner_price_operation_strategy",["默认","特征"])->comment("作业计费模型策略");
+            $table->enum("strategy",["起步","默认","特征"])->comment("出库策略");
+            $table->integer("amount")->nullable()->comment("起步数");
+            $table->bigInteger("unit_id")->index()->comment("外键单位");
+            $table->decimal("unit_price",8,4)->comment("单价");
+            $table->string("feature")->nullable()->comment("特征");
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('owner_out_storage_rules');
+    }
+}

+ 33 - 0
database/migrations/2020_10_28_105639_create_owner_in_storage_rules_table.php

@@ -0,0 +1,33 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class CreateOwnerInStorageRulesTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('owner_in_storage_rules', function (Blueprint $table) {
+            $table->bigInteger("owner_price_operation_id")->primary()->comment("外键作业计费模型");
+            $table->integer("amount")->default(1)->comment("计量");
+            $table->bigInteger("unit_id")->index()->comment("外键单位");
+            $table->decimal("unit_price",8,4)->comment("单价");
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('owner_in_storage_rules');
+    }
+}

+ 34 - 0
database/migrations/2020_10_28_110936_create_features_table.php

@@ -0,0 +1,34 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class CreateFeaturesTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('features', function (Blueprint $table) {
+            $table->id();
+            $table->enum("type",["商品名称","订单类型","承运商","店铺类型"])->index()->comment("特征类型");
+            $table->enum("logic",["包含","不包含","等于"])->index()->comment("逻辑");
+            $table->string("describe")->comment("特征");
+            $table->timestamps();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('features');
+    }
+}

+ 28 - 10
public/css/app.css

@@ -105,6 +105,14 @@
   background: #f9f0f0;
 }
 
+.nav4 {
+  transform: scaleX(0.98);
+}
+
+.nav4 .card {
+  background: #eac3aa;
+}
+
 table th,
 table.table-striped tbody th {
   padding-bottom: 0;
@@ -248,28 +256,38 @@ table.table-striped tbody tr:hover.td-yellow {
   background: #fdf3db;
 }
 
-table tr.focusing td,
-table.table-striped tbody tr.focusing td {
+table .table-striped > tr.focusing,
+table tr.focusing > td,
+table.table-striped tbody .table-striped > tr.focusing,
+table.table-striped tbody tr.focusing > td {
   background: #d5aba1;
 }
 
-table tr.focusing td.td-warm,
-table.table-striped tbody tr.focusing td.td-warm {
+table .table-striped > tr.focusing.td-warm,
+table tr.focusing > td.td-warm,
+table.table-striped tbody .table-striped > tr.focusing.td-warm,
+table.table-striped tbody tr.focusing > td.td-warm {
   background: #e7ae80;
 }
 
-table tr.focusing td.td-cool,
-table.table-striped tbody tr.focusing td.td-cool {
+table .table-striped > tr.focusing.td-cool,
+table tr.focusing > td.td-cool,
+table.table-striped tbody .table-striped > tr.focusing.td-cool,
+table.table-striped tbody tr.focusing > td.td-cool {
   background: #5f8fcd;
 }
 
-table tr.focusing td.td-helpful,
-table.table-striped tbody tr.focusing td.td-helpful {
+table .table-striped > tr.focusing.td-helpful,
+table tr.focusing > td.td-helpful,
+table.table-striped tbody .table-striped > tr.focusing.td-helpful,
+table.table-striped tbody tr.focusing > td.td-helpful {
   background: #69cb9c;
 }
 
-table tr.focusing td.td-yellow,
-table.table-striped tbody tr.focusing td.td-yellow {
+table .table-striped > tr.focusing.td-yellow,
+table tr.focusing > td.td-yellow,
+table.table-striped tbody .table-striped > tr.focusing.td-yellow,
+table.table-striped tbody tr.focusing > td.td-yellow {
   background: #d9c290;
 }
 

+ 6 - 0
resources/sass/layout.scss

@@ -26,6 +26,12 @@
         background: #f9f0f0;
     }
 }
+.nav4{
+    transform: scaleX(0.98);
+    .card{
+        background: #eac3aa;
+    }
+}
 
 table,table.table-striped tbody{
     th {

+ 104 - 0
resources/views/customer/finance/billConfirmation.blade.php

@@ -0,0 +1,104 @@
+@extends('layouts.app')
+@section('title')客户管理-账单确认@endsection
+
+@section('content')
+    @component('customer.finance.menu')@endcomponent
+    <div class="container-fluid" id="container">
+        <div id="form_div"></div>
+        <div class="mt-1">
+            <button type="button" class="btn btn-outline-dark btn-sm form-control-sm dropdown-toggle tooltipTarget" :class="[checkData.length>0?'btn-dark text-light':'']"
+                    data-toggle="dropdown" title="导出所有页将会以搜索条件得到的筛选结果,将其全部记录(每一页)导出">
+                导出Excel
+            </button>
+            <div class="dropdown-menu">
+                <a class="dropdown-item" @click="excelExport(false)" href="javascript:">导出勾选内容</a>
+                <a class="dropdown-item" @click="excelExport(true)" href="javascript:">导出所有页</a>
+            </div>
+        </div>
+        <div>
+            <label for="all" id="cloneCheckAll" class="d-none">
+                <input id="all" type="checkbox" @click="checkAll($event)">全选
+            </label>
+            <table class="d-none" id="headerRoll"></table>
+            <table class="table table-sm text-nowrap table-striped table-hover" id="headerParent">
+                <tr id="header"></tr>
+            </table>
+        </div>
+    </div>
+@stop
+
+@section("lastScript")
+    <script type="text/javascript" src="{{mix('js/queryForm/header.js')}}"></script>
+    <script type="text/javascript" src="{{mix('js/queryForm/queryForm.js')}}"></script>
+    <script>
+        let vue = new Vue({
+            el:"#container",
+            data:{
+                checkData:[],
+                bills : [],
+            },
+            mounted(){
+                let data=[
+                    [
+                        {name:'workgroup',type:'select',tip:'项目小组',placeholder: '项目小组',data:[]},
+                        {name:'counting_month_start',type:'dateMonth',tip:'起始结算月'},
+                        {name:'owner_id',type:'select_multiple_select',tip:['输入关键词快速定位下拉列表,回车确定','选择要显示的项目'],
+                            placeholder:['项目','定位或多选项目'],data:[]},
+                    ],[
+                        {name:'customer_id',type:'select',tip:'客户',placeholder: '客户',data:[]},
+                        {name:'counting_month_end',type:'dateMonth',tip:'结束结算月'},
+                    ],
+                ];
+                this.form = new query({
+                    el:"#form_div",
+                    condition:data,
+                });
+                this.form.init();
+                let column = [
+                    {name:'cloneCheckAll',customization:true,type:'checkAll',column:'id',
+                        dom:$('#cloneCheckAll').removeClass('d-none'), neglect: true},
+                    {name:'index',value: '序号', neglect: true},
+                    {name:'workgroup',value: '项目小组'},
+                    {name:'customer',value: '客户'},
+                    {name:'owner',value: '子项目'},
+                    {name:'counting_month',value: '结算月'},
+                    {name:'created_at',value: '录入日期'},
+                    {name:'initial_fee',value: '原始账单金额', neglect: true},
+                    {name:'confirm_fee',value: '确认账单金额', neglect: true},
+                    {name:'difference',value: '差额', neglect: true},
+                    {name:'operating',value: '操作', neglect: true},
+                ];
+                let _this=this;
+                setTimeout(function () {
+                    let header = new Header({
+                        el: "#header",
+                        column: column,
+                        data: _this.reports,
+                        restorationColumn: 'id',
+                        fixedTop:($('#form_div').height())+2,
+                        offset:0.5,
+                        vue:vue
+                    });
+                    header.init();
+                },0);
+            },
+            methods:{
+                excelExport(isAll){
+
+                },
+                //全选事件
+                checkAll(e){
+                    if (e.target.checked){
+                        this.bills.forEach((el)=>{
+                            if (this.checkData.indexOf(el.id) === '-1'){
+                                this.checkData.push(el.id);
+                            }
+                        });
+                    }else {
+                        this.checkData = [];
+                    }
+                },
+            },
+        });
+    </script>
+@stop

+ 120 - 0
resources/views/customer/finance/instantBill.blade.php

@@ -0,0 +1,120 @@
+@extends('layouts.app')
+@section('title')客户管理-即时账单@endsection
+
+@section('content')
+    @component('customer.finance.menu')@endcomponent
+    <div class="container-fluid" id="container">
+        <div id="form_div"></div>
+        <div class="mt-1">
+            <button type="button" class="btn btn-outline-dark btn-sm form-control-sm dropdown-toggle tooltipTarget" :class="[checkData.length>0?'btn-dark text-light':'']"
+                    data-toggle="dropdown" title="导出所有页将会以搜索条件得到的筛选结果,将其全部记录(每一页)导出">
+                导出Excel
+            </button>
+            <div class="dropdown-menu">
+                <a class="dropdown-item" @click="excelExport(false)" href="javascript:">导出勾选内容</a>
+                <a class="dropdown-item" @click="excelExport(true)" href="javascript:">导出所有页</a>
+            </div>
+        </div>
+        <div>
+            <label for="all" id="cloneCheckAll" class="d-none">
+                <input id="all" type="checkbox" @click="checkAll($event)">全选
+            </label>
+            <table class="d-none" id="headerRoll"></table>
+            <table class="table table-sm text-nowrap table-striped table-hover" id="headerParent">
+                <tr class="text-center">
+                    <td colspan="2"></td>
+                    <td colspan="8" class="bg-light-info">单据信息</td>
+                    <td colspan="4" class="bg-light-khaki">物流作业信息</td>
+                    <td colspan="4" class="bg-light-cyanogen">费用信息</td>
+                </tr>
+                <tr id="header"></tr>
+            </table>
+        </div>
+    </div>
+@stop
+
+@section("lastScript")
+    <script type="text/javascript" src="{{mix('js/queryForm/header.js')}}"></script>
+    <script type="text/javascript" src="{{mix('js/queryForm/queryForm.js')}}"></script>
+    <script>
+        let vue = new Vue({
+            el:"#container",
+            data:{
+                checkData:[],
+                bills : [],
+            },
+            mounted(){
+                let data=[
+                    [
+                        {name:'shop_name',type:'select',tip:'店铺',placeholder: '店铺',data:[]},
+                        {name:'counting_month_start',type:'dateMonth',tip:'起始结算月'},
+                        {name:'owner_id',type:'select_multiple_select',tip:['输入关键词快速定位下拉列表,回车确定','选择要显示的项目'],
+                            placeholder:['项目','定位或多选项目'],data:[]},
+                        {name: 'operation_bill', type: 'input', tip: '发/收/退/提货单号:可在两侧增加百分号(%)进行模糊搜索', placeholder: '单据号'},
+                        {name:'type',type:'select',tip:'类型',placeholder: '类型',data:[]},
+                    ],[
+                        {name:'customer_id',type:'select',tip:'客户',placeholder: '客户',data:[]},
+                        {name:'counting_month_end',type:'dateMonth',tip:'结束结算月'},
+                        {name:'status',type:'select',placeholder:'状态',data:[]},
+                        {name:'logistic_bill', type: 'input', tip: '物流/快递单号:可在两侧增加百分号(%)进行模糊搜索', placeholder: '快递单号'},
+                    ],
+                ];
+                this.form = new query({
+                    el:"#form_div",
+                    condition:data,
+                });
+                this.form.init();
+                let column = [
+                    {name:'cloneCheckAll',customization:true,type:'checkAll',column:'id',
+                        dom:$('#cloneCheckAll').removeClass('d-none'), neglect: true},
+                    {name:'index',value: '序号', neglect: true},
+                    {name:'owner_name',value: '项目', class: "bg-info"},
+                    {name:'worked_at',value: '作业时间', class: "bg-info"},
+                    {name:'type',value: '类型', class: "bg-info"},
+                    {name:'shop_name',value: '店铺', class: "bg-info"},
+                    {name:'operation_bill',value: '单号(发/收/退/提)', class: "bg-info"},
+                    {name:'consignee_name',value: '收件人', class: "bg-info"},
+                    {name:'consignee_phone',value: '收件人电话', class: "bg-info"},
+                    {name:'commodity_amount',value: '商品数量', class: "bg-info", neglect: true},
+                    {name:'logistic_bill',value: '物流/快递单号', class: "bg-khaki"},
+                    {name:'volume',value: '体积', class: "bg-khaki", neglect: true},
+                    {name:'weight',value: '重量', class: "bg-khaki", neglect: true},
+                    {name:'logistic_name',value: '承运商', class: "bg-khaki"},
+                    {name:'work_fee',value: '操作费', class: "bg-cyanogen"},
+                    {name:'logistic_fee',value: '物流费', class: "bg-cyanogen"},
+                    {name:'total_fee',value: '合计', class: "bg-cyanogen"},
+                ];
+                let _this=this;
+                setTimeout(function () {
+                    let header = new Header({
+                        el: "#header",
+                        column: column,
+                        data: _this.bills,
+                        restorationColumn: 'id',
+                        fixedTop:($('#form_div').height())+2,
+                        offset:0.5,
+                        vue:vue
+                    });
+                    header.init();
+                },0);
+            },
+            methods:{
+                excelExport(isAll){
+
+                },
+                //全选事件
+                checkAll(e){
+                    if (e.target.checked){
+                        this.owners.forEach((el)=>{
+                            if (this.checkData.indexOf(el.id) === '-1'){
+                                this.checkData.push(el.id);
+                            }
+                        });
+                    }else {
+                        this.checkData = [];
+                    }
+                },
+            },
+        });
+    </script>
+@stop

+ 4 - 4
resources/views/customer/finance/menu.blade.php

@@ -4,13 +4,13 @@
     <div class="container-fluid nav3">
         <div class="card menu-third" >
             <ul class="nav nav-pills">
-                @can('客户管理-项目-报表')
+                @can('客户管理-财务-即时账单')
                 <li class="nav-item">
-                    <a class="nav-link" href="{{url('customer/project/report')}}" :class="{active:isActive('report',3)}">即时账单</a>
+                    <a class="nav-link" href="{{url('customer/finance/instantBill')}}" :class="{active:isActive('instantBill',3)}">即时账单</a>
                 </li> @endcan
-                @can('客户管理-项目-报表')
+                @can('客户管理-财务-账单确认')
                 <li class="nav-item">
-                    <a class="nav-link" href="{{url('customer/project/report')}}" :class="{active:isActive('report',3)}">账单确认</a>
+                    <a class="nav-link" href="{{url('customer/finance/billConfirmation')}}" :class="{active:isActive('billConfirmation',3)}">账单确认</a>
                 </li> @endcan
             </ul>
         </div>

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

@@ -7,7 +7,7 @@
                 <a class="nav-link" href="{{url('customer/project/report')}}" :class="{active:isActive('project',2)}">项目</a>
             </li>@endcan
             <li class="nav-item">
-                <a class="nav-link" href="{{url('customer')}}" :class="{active:isActive('delivering',3)}">财务</a>
+                <a class="nav-link" href="{{url('customer/finance/instantBill')}}" :class="{active:isActive('finance',2)}">财务</a>
             </li>
             <li class="nav-item">
                 <a class="nav-link" href="{{url('customer/relating')}}" :class="{active:isActive('delivering',3)}">相关设置</a>

+ 27 - 0
resources/views/maintenance/customer/create.blade.php

@@ -0,0 +1,27 @@
+@extends('layouts.app')
+@section('title')客户-录入@endsection
+
+@section('content')
+    <div id="nav2">
+        @component('maintenance.menu')@endcomponent
+        @component('maintenance.customer.menu')@endcomponent
+    </div>
+    <div class="container-fluid card">
+        <div class="card-body offset-3 mt-2">
+            <form method="post" action="{{url('')}}">
+                <div class="row">
+                    <label class="col-2" for="name">客户名称</label>
+                    <input class="form-control col-6" id="name" name="name">
+                </div>
+                <div class="row mt-3">
+                    <label class="col-2" for="company_name">公司名称</label>
+                    <input class="form-control col-6" id="company_name" name="company_name">
+                </div>
+                <div class="row mt-3 offset-1">
+                    <button class="btn btn-success col-7">提交</button>
+                </div>
+            </form>
+        </div>
+    </div>
+@stop
+

+ 23 - 0
resources/views/maintenance/customer/index.blade.php

@@ -0,0 +1,23 @@
+@extends('layouts.app')
+@section('title')客户@endsection
+
+@section('content')
+    <div id="nav2">
+        @component('maintenance.menu')@endcomponent
+        @component('maintenance.customer.menu')@endcomponent
+    </div>
+    <div class="container-fluid card">
+        <div class="card-body mt-2">
+            <table class="table table-striped table-hover text-nowrap">
+                <tr>
+                    <th>ID</th>
+                    <th>名称</th>
+                    <th>客户全称</th>
+                    <th>创建时间</th>
+                    <th>操作</th>
+                </tr>
+            </table>
+        </div>
+    </div>
+@stop
+

+ 14 - 0
resources/views/maintenance/customer/menu.blade.php

@@ -0,0 +1,14 @@
+<div class="container-fluid nav3">
+    <div class="card menu-third" >
+        <ul class="nav nav-pills">
+            @can('客户-查询')
+            <li class="nav-item">
+                <a class="nav-link" href="{{url('maintenance/customer')}}" :class="{active:isActive('',3)}">查询</a>
+            </li> @endcan
+            @can('客户-录入')
+            <li class="nav-item">
+                <a class="nav-link" href="{{url('maintenance/customer/create')}}" :class="{active:isActive('create',3)}">录入</a>
+            </li> @endcan
+        </ul>
+    </div>
+</div>

+ 35 - 0
resources/views/maintenance/feature/create.blade.php

@@ -0,0 +1,35 @@
+@extends('layouts.app')
+@section('title')特征-录入@endsection
+
+@section('content')
+    <div id="nav2">
+        @component('maintenance.menu')@endcomponent
+        @component('maintenance.feature.menu')@endcomponent
+    </div>
+    <div class="container-fluid card">
+        <div class="card-body offset-3 mt-2">
+            <form method="post" action="{{url('')}}">
+                <div class="row">
+                    <label class="col-2" for="type">特征类型</label>
+                    <select class="form-control col-3" id="type" name="type">
+                        <option></option>
+                    </select>
+                </div>
+                <div class="row mt-3">
+                    <label class="col-2" for="logic">逻辑</label>
+                    <select class="form-control col-3" id="logic" name="logic">
+                        <option></option>
+                    </select>
+                </div>
+                <div class="row mt-3">
+                    <label class="col-2" for="describe">字段特征</label>
+                    <input class="form-control col-6" id="describe" name="describe">
+                </div>
+                <div class="row mt-3 offset-1">
+                    <button class="btn btn-success col-7">提交</button>
+                </div>
+            </form>
+        </div>
+    </div>
+@stop
+

+ 24 - 0
resources/views/maintenance/feature/index.blade.php

@@ -0,0 +1,24 @@
+@extends('layouts.app')
+@section('title')特征@endsection
+
+@section('content')
+    <div id="nav2">
+        @component('maintenance.menu')@endcomponent
+        @component('maintenance.feature.menu')@endcomponent
+    </div>
+    <div class="container-fluid card">
+        <div class="card-body mt-2">
+            <table class="table table-striped table-hover text-nowrap">
+                <tr>
+                    <th>ID</th>
+                    <th>类型</th>
+                    <th>逻辑</th>
+                    <th>特征</th>
+                    <th>创建时间</th>
+                    <th>操作</th>
+                </tr>
+            </table>
+        </div>
+    </div>
+@stop
+

+ 14 - 0
resources/views/maintenance/feature/menu.blade.php

@@ -0,0 +1,14 @@
+<div class="container-fluid nav3">
+    <div class="card menu-third" >
+        <ul class="nav nav-pills">
+            @can('特征-查询')
+            <li class="nav-item">
+                <a class="nav-link" href="{{url('maintenance/feature')}}" :class="{active:isActive('',3)}">查询</a>
+            </li> @endcan
+            @can('特征-录入')
+            <li class="nav-item">
+                <a class="nav-link" href="{{url('maintenance/feature/create')}}" :class="{active:isActive('create',3)}">录入</a>
+            </li> @endcan
+        </ul>
+    </div>
+</div>

+ 20 - 8
resources/views/maintenance/menu.blade.php

@@ -18,10 +18,18 @@
                 <li class="nav-item">
                     <a class="nav-link" href="{{url('maintenance/userWorkgroup')}}" :class="{active:isActive('userWorkgroup',2)}">工作组</a>
                 </li> @endcan
+            @can('项目组')
+                <li class="nav-item">
+                    <a class="nav-link text-dark" href="{{url('maintenance/userOwnerGroup')}}" :class="{active:isActive('userOwnerGroup',2)}">项目组</a>
+                </li> @endcan
             @can('仓库')
                 <li class="nav-item">
                     <a class="nav-link text-muted" href="{{url('maintenance/warehouse')}}" :class="{active:isActive('warehouse',2)}">仓库</a>
                 </li> @endcan
+            @can('客户')
+                <li class="nav-item">
+                    <a class="nav-link text-dark" href="{{url('maintenance/customer')}}" :class="{active:isActive('customer',2)}">客户</a>
+                </li> @endcan
             @can('货主')
                 <li class="nav-item">
                     <a class="nav-link text-dark" href="{{url('maintenance/owner')}}" :class="{active:isActive('owner',2)}">货主</a>
@@ -30,21 +38,25 @@
                 <li class="nav-item">
                     <a class="nav-link text-dark" href="{{url('maintenance/qualityLabel')}}" :class="{active:isActive('qualityLabel',2)}">品质标签</a>
                 </li> @endcan
+            @can('作业类型')
+                <li class="nav-item">
+                    <a class="nav-link text-dark" href="{{url('maintenance/processMethod')}}" :class="{active:isActive('processMethod',2)}">作业类型</a>
+                </li> @endcan
             @can('商品信息')
                 <li class="nav-item">
                     <a class="nav-link text-dark" href="{{url('maintenance/commodity')}}" :class="{active:isActive('commodity',2)}">商品信息</a>
                 </li> @endcan
             @can('计量单位')
                 <li class="nav-item">
-                    <a class="nav-link text-info" href="{{url('maintenance/unit')}}" :class="{active:isActive('unit',2)}">计量单位</a>
+                    <a class="nav-link text-dark" href="{{url('maintenance/unit')}}" :class="{active:isActive('unit',2)}">计量单位</a>
                 </li> @endcan
             @can('省份')
                 <li class="nav-item">
-                    <a class="nav-link text-info" href="{{url('maintenance/province')}}" :class="{active:isActive('province',2)}">省份</a>
+                    <a class="nav-link text-dark" href="{{url('maintenance/province')}}" :class="{active:isActive('province',2)}">省份</a>
                 </li> @endcan
             @can('城市')
                 <li class="nav-item">
-                    <a class="nav-link text-info" href="{{url('maintenance/city')}}" :class="{active:isActive('city',2)}">城市</a>
+                    <a class="nav-link text-dark" href="{{url('maintenance/city')}}" :class="{active:isActive('city',2)}">城市</a>
                 </li> @endcan
             @can('物流公司')
                 <li class="nav-item">
@@ -58,17 +70,17 @@
                 <li class="nav-item">
                     <a class="nav-link text-dark" href="{{url('maintenance/carType')}}" :class="{active:isActive('carType',2)}">车型</a>
                 </li> @endcan
-            @can('计价模型')
-                <li class="nav-item">
-                    <a class="nav-link text-dark" href="{{url('maintenance/priceModel/storage')}}" :class="{active:isActive('priceModel',2)}">计价模型</a>
-                </li>@endcan
             @can('作业类型')
                 <li class="nav-item">
                     <a class="nav-link text-dark" href="{{url('maintenance/jobType')}}" :class="{active:isActive('jobType',2)}">作业类型</a>
                 </li>@endcan
+            @can('特征')
+                <li class="nav-item">
+                    <a class="nav-link text-dark" href="{{url('maintenance/feature')}}" :class="{active:isActive('feature',2)}">特征</a>
+                </li>@endcan
             @can('计费模型')
                 <li class="nav-item">
-                    <a class="nav-link text-dark" href="{{url('maintenance/waybillPriceModel')}}" :class="{active:isActive('waybillPriceModel',2)}">计费模型</a>
+                    <a class="nav-link text-info" href="{{url('maintenance/priceModel/waybillPriceModel')}}" :class="{active:isActive('priceModel',2)}">计费模型</a>
                 </li> @endcan
             @can('纸箱')
                 <li class="nav-item">

+ 18 - 0
resources/views/maintenance/priceModel/menu.blade.php

@@ -0,0 +1,18 @@
+<div class="container-fluid nav3">
+    <div class="card menu-third" >
+        <ul class="nav nav-pills">
+            @can('计费模型-查询')
+            <li class="nav-item">
+                <a class="nav-link" href="{{url('maintenance/priceModel/waybillPriceModel')}}" :class="{active:isActive('waybillPriceModel',3)}">运输付费</a>
+            </li> @endcan
+            @can('计费模型-仓储')
+            <li class="nav-item">
+                <a class="nav-link" href="{{url('maintenance/priceModel/storage')}}" :class="{active:isActive('storage',3)}">仓储计费</a>
+            </li> @endcan
+            @can('计费模型-作业')
+            <li class="nav-item">
+                <a class="nav-link" href="{{url('maintenance/priceModel/operation')}}" :class="{active:isActive('operation',3)}">作业计费</a>
+            </li> @endcan
+        </ul>
+    </div>
+</div>

+ 174 - 0
resources/views/maintenance/priceModel/operation/create.blade.php

@@ -0,0 +1,174 @@
+@extends('layouts.app')
+@section('title')计费模型-仓储计费@endsection
+
+@section('content')
+    <div id="nav2">
+        @component('maintenance.menu')@endcomponent
+        @component('maintenance.priceModel.operation.menu')@endcomponent
+    </div>
+    <div class="container-fluid mt-2 card" id="container">
+        <div class="modal fade" style="top: 30%" id="modal" tabindex="-1" role="dialog" aria-hidden="true">
+            <div class="modal-dialog">
+                <div class="modal-content">
+                    <div class="modal-body">
+                        <div>
+                            <div class="col-3 form-inline">
+                                <label for="feature_type">类型:</label>
+                                <select id="feature_type" class="form-control form-control-sm">
+                                    <option>商品名称</option>
+                                </select>
+                            </div>
+                            <div class="col-3 form-inline">
+                                <label for="feature_logic">逻辑:</label>
+                                <select id="feature_logic" class="form-control form-control-sm">
+                                    <option>不包含</option>
+                                </select>
+                            </div>
+                            <div class="col-4 form-inline">
+                                <label for="feature">特征:</label>
+                                <input id="feature" type="text" class="form-control form-control-sm">
+                            </div>
+                            <div class="col-2 form-inline">
+
+                            </div>
+                        </div>
+                        <div class="row">
+                            <div class="col-3 form-inline">
+                                <label for="feature_type">类型:</label>
+                                <select id="feature_type" class="form-control form-control-sm">
+                                    <option>商品名称</option>
+                                </select>
+                            </div>
+                            <div class="col-3 form-inline">
+                                <label for="feature_logic">逻辑:</label>
+                                <select id="feature_logic" class="form-control form-control-sm">
+                                    <option>不包含</option>
+                                </select>
+                            </div>
+                            <div class="col-4 form-inline">
+                                <label for="feature">特征:</label>
+                                <input id="feature" type="text" class="form-control form-control-sm">
+                            </div>
+                            <div class="col-2 form-inline">
+
+                            </div>
+                        </div>
+                    </div>
+                    <div class="modal-footer">
+                        <button type="button" class="btn btn-success">提交更改</button>
+                    </div>
+                </div>
+            </div>
+        </div>
+        <form method="GET" action="{{url('')}}" class="card-body offset-3">
+            <div class="row">
+                <label class="col-2" for="owner_id">项目</label>
+                <select id="owner_id" name="owner_id" class="selectpicker" multiple data-live-search="true" title="项目(多选)">
+
+                </select>
+            </div>
+            <div class="row mt-3">
+                <label for="type" class="col-2">操作类型</label>
+                <select id="type" v-model="type" name="type" class="col-3 form-control">
+                    <option>入库</option>
+                    <option>出库</option>
+                </select>
+            </div>
+            <div class="row mt-3">
+                <label for="strategy" class="col-2">计费策略</label>
+                <select id="strategy" name="strategy" class="col-3 form-control">
+
+                </select>
+            </div>
+            <div class="row mt-3">
+                <label for="name" class="col-2">名称</label>
+                <input id="name" type="text" name="name" class="col-6 form-control">
+            </div>
+            <div class="row mt-3">
+                <div v-for="(pond,i) in ponds" class="card row text-white col-8" :class="i>0 ? 'bg-secondary mt-2' : 'bg-info'">
+                    <div class="card-header">
+                        <div class="pull-left" v-if="i==0 && type=='出库'"><span @click="addDom()" class="fa fa-plus-square-o" style="cursor: pointer"></span></div>
+                        <div class="pull-right" v-if="i==len && len!=0"><span @click="delDom(i)" class="fa fa-window-close-o" style="cursor: pointer"></span></div>
+                    </div>
+                    <div class="card-body">
+                        <div class="row">
+                            <div class="col-4 form-inline">
+                                <label for="amount"><span v-if="type=='出库'">起步数:</span><span v-else>计量:</span></label>
+                                <input id="amount" type="number" name="amount" class="form-control">
+                            </div>
+                            <div class="col-4 form-inline">
+                                <label for="discount_type">单位:</label>
+                                <select id="discount_type" name="discount_type" class="form-control">
+                                    <option></option>
+                                </select>
+                            </div>
+                            <div class="col-4 form-inline">
+                                <label for="unit_price">单价:</label>
+                                <input id="unit_price" type="number" name="unit_price" class="form-control">
+                            </div>
+                        </div>
+                        <div class="row mt-2" v-if="type=='出库'">
+                            <label for="out_storage_strategy" class="col-2">出库策略:</label>
+                            <select id="out_storage_strategy" name="out_storage_strategy" class="col-5 form-control">
+                                <option>起步</option>
+                                <option>默认</option>
+                                <option>特征</option>
+                            </select>
+                        </div>
+                        <div class="row mt-2" v-if="type=='出库'">
+                            <label for="describe" class="col-2">特征:</label>
+                            <input id="describe" type="text" :value="pond" v-if="pond" disabled class="col-5 form-control"/>
+                            <button type="button" class="btn btn-dark col-2" v-else @click="showModal()">添加特征</button>
+                        </div>
+                    </div>
+                </div>
+            </div>
+
+
+                    <div class="row mt-3">
+                        <label for="discount_value" class="col-2">减免值</label>
+                        <input id="discount_value" type="number" name="discount_value" class="col-6 form-control">
+                    </div>
+                    <div class="row mt-3">
+                        <label for="unit_id" class="col-2">单位</label>
+                        <select id="unit_id" name="unit_id" class="col-3 form-control">
+                            <option></option>
+                        </select>
+                    </div>
+
+            <div class="row mt-3 offset-1">
+                <button type="submit" class="btn btn-success col-7">提交</button>
+            </div>
+        </form>
+    </div>
+@stop
+
+@section("lastScript")
+    <script>
+        new Vue({
+            el:"#container",
+            data:{
+                priceTypes : [],
+                types : [],
+                discountTypes : [],
+                units : [],
+                ponds : [""],
+                len : 0,
+                type : "",
+            },
+            methods:{
+                addDom(){
+                    this.ponds.push("");
+                    this.len++;
+                },
+                delDom(index){
+                    this.$delete(this.ponds,index);
+                    this.len--;
+                },
+                showModal(){
+                    $("#modal").modal("show");
+                }
+            },
+        });
+    </script>
+@stop

+ 58 - 0
resources/views/maintenance/priceModel/operation/index.blade.php

@@ -0,0 +1,58 @@
+@extends('layouts.app')
+@section('title')计费模型-仓储计费@endsection
+
+@section('content')
+    <div id="nav2">
+        @component('maintenance.menu')@endcomponent
+        @component('maintenance.priceModel.operation.menu')@endcomponent
+    </div>
+    <div class="container-fluid mt-2" id="container">
+        <div id="form_div"></div>
+        <table class="table table-hover table-striped text-nowrap">
+            <tr>
+                <th>序号</th>
+                <th>操作</th>
+                <th>名称</th>
+                <th>类型</th>
+                <th>项目</th>
+                <th>特征</th>
+                <th>计量</th>
+                <th>单位</th>
+                <th>单价</th>
+                <th>备注</th>
+                <th>录入时间</th>
+                <th>操作</th>
+            </tr>
+            <tr v-for="model in models">
+                <td></td>
+            </tr>
+        </table>
+    </div>
+@stop
+
+@section("lastScript")
+    <script type="text/javascript" src="{{mix('js/queryForm/queryForm.js')}}"></script>
+    <script>
+        new Vue({
+            el:"#container",
+            data:{
+                models : [],
+                owners : [],
+            },
+            mounted(){
+                let data=[
+                    [
+                        {name:'owner_id',type:'select_multiple_select',tip:['输入关键词快速定位下拉列表,回车确定','选择要显示的项目'],
+                            placeholder:['项目','定位或多选项目'],data:this.owners},
+                        {name: 'name', type: 'input', tip: '价格名称:可在左侧增加百分号(%)进行模糊搜索', placeholder: '价格名称'},
+                    ]
+                ];
+                this.form = new query({
+                    el:"#form_div",
+                    condition:data,
+                });
+                this.form.init();
+            },
+        });
+    </script>
+@stop

+ 15 - 0
resources/views/maintenance/priceModel/operation/menu.blade.php

@@ -0,0 +1,15 @@
+@component('maintenance.priceModel.menu')@endcomponent
+<div class="container-fluid nav4">
+    <div class="card menu-third" >
+        <ul class="nav nav-pills">
+            @can('计费模型-作业-查询')
+            <li class="nav-item">
+                <a class="nav-link" href="{{url('maintenance/priceModel/operation')}}" :class="{active:isActive('',4)}">查询</a>
+            </li> @endcan
+            @can('计费模型-作业-录入')
+            <li class="nav-item">
+                <a class="nav-link" href="{{url('maintenance/priceModel/operation/create')}}" :class="{active:isActive('create',4)}">录入</a>
+            </li> @endcan
+        </ul>
+    </div>
+</div>

+ 66 - 0
resources/views/maintenance/priceModel/storage/create.blade.php

@@ -0,0 +1,66 @@
+@extends('layouts.app')
+@section('title')计费模型-仓储计费@endsection
+
+@section('content')
+    <div id="nav2">
+        @component('maintenance.menu')@endcomponent
+        @component('maintenance.priceModel.storage.menu')@endcomponent
+    </div>
+    <div class="container-fluid mt-2 card" id="container">
+        <form method="GET" action="{{url('')}}" class="card-body offset-3">
+            <div class="row">
+                <label for="priceType" class="col-2">计费类型</label>
+                <select id="priceType" name="priceType" class="col-3 form-control">
+                    <option></option>
+                </select>
+            </div>
+            <div class="row mt-3">
+                <label for="type" class="col-2">用仓类型</label>
+                <select id="type" name="type" class="col-3 form-control">
+                    <option></option>
+                </select>
+            </div>
+            <div class="row mt-3">
+                <label for="minimum_area" class="col-2">最低起租面积</label>
+                <input id="minimum_area" type="text" name="minimum_area" class="col-6 form-control">
+            </div>
+            <div class="row mt-3">
+                <label for="price" class="col-2">单价</label>
+                <input id="price" type="number" name="price" class="col-6 form-control">
+            </div>
+            <div class="row mt-3">
+                <label for="discount_type" class="col-2">减免类型</label>
+                <select id="discount_type" name="discount_type" class="col-3 form-control">
+                    <option></option>
+                </select>
+            </div>
+            <div class="row mt-3">
+                <label for="discount_value" class="col-2">减免值</label>
+                <input id="discount_value" type="number" name="discount_value" class="col-6 form-control">
+            </div>
+            <div class="row mt-3">
+                <label for="unit_id" class="col-2">单位</label>
+                <select id="unit_id" name="unit_id" class="col-3 form-control">
+                    <option></option>
+                </select>
+            </div>
+            <div class="row mt-3 offset-1">
+                <button type="submit" class="btn btn-success col-7">提交</button>
+            </div>
+        </form>
+    </div>
+@stop
+
+@section("lastScript")
+    <script>
+        new Vue({
+            el:"#container",
+            data:{
+                priceTypes : [],
+                types : [],
+                discountTypes : [],
+                units : [],
+            },
+        });
+    </script>
+@stop

+ 38 - 0
resources/views/maintenance/priceModel/storage/index.blade.php

@@ -0,0 +1,38 @@
+@extends('layouts.app')
+@section('title')计费模型-仓储计费@endsection
+
+@section('content')
+    <div id="nav2">
+        @component('maintenance.menu')@endcomponent
+        @component('maintenance.priceModel.storage.menu')@endcomponent
+    </div>
+    <div class="container-fluid mt-2" id="container">
+        <table class="table table-hover table-striped text-nowrap">
+            <tr>
+                <th>序号</th>
+                <th>计费类型</th>
+                <th>用仓类型</th>
+                <th>最低起租面积</th>
+                <th>单价</th>
+                <th>减免类型</th>
+                <th>减免值</th>
+                <th>录入时间</th>
+                <th>操作</th>
+            </tr>
+            <tr v-for="model in models">
+                <td></td>
+            </tr>
+        </table>
+    </div>
+@stop
+
+@section("lastScript")
+    <script>
+        new Vue({
+            el:"#container",
+            data:{
+                models : [],
+            },
+        });
+    </script>
+@stop

+ 15 - 0
resources/views/maintenance/priceModel/storage/menu.blade.php

@@ -0,0 +1,15 @@
+@component('maintenance.priceModel.menu')@endcomponent
+<div class="container-fluid nav4">
+    <div class="card menu-third" >
+        <ul class="nav nav-pills">
+            @can('计费模型-仓储')
+            <li class="nav-item">
+                <a class="nav-link" href="{{url('maintenance/priceModel/storage')}}" :class="{active:isActive('',4)}">查询</a>
+            </li> @endcan
+            @can('计费模型-仓储-录入')
+            <li class="nav-item">
+                <a class="nav-link" href="{{url('maintenance/priceModel/storage/create')}}" :class="{active:isActive('create',4)}">录入</a>
+            </li> @endcan
+        </ul>
+    </div>
+</div>

+ 2 - 11
resources/views/maintenance/waybillPriceModel/create.blade.php → resources/views/maintenance/priceModel/waybillPriceModel/create.blade.php

@@ -4,12 +4,12 @@
 @section('content')
     <div id="nav2">
         @component('maintenance.menu')@endcomponent
-        @component('maintenance.waybillPriceModel.menu')@endcomponent
+        @component('maintenance.priceModel.waybillPriceModel.menu')@endcomponent
     </div>
     <div class="container-fluid" id="list">
         <div class="card col-md-8 offset-md-2">
             <div class="card-body">
-                <form method="POST" action="{{ url('maintenance/waybillPriceModel') }}">
+                <form method="POST" action="{{ url('maintenance/priceModel/waybillPriceModel') }}">
                     @if(Session::has('successTip'))
                         <div class="alert alert-success h1">{{Session::get('successTip')}}</div>
                     @endif
@@ -173,15 +173,6 @@
                             _this.cities=response.data.cities;
                         }
                    );
-                   /*let _this=this;
-                   let province_id=this.inputting.WaybillPriceModel.province_id;
-                   this.provinces.forEach(function (province) {
-                       if(province.id+''===province_id+''){
-                           _this.cities=province.cities;
-                           return
-                       }
-                       return null
-                   })*/
                }
            },
         });

+ 2 - 13
resources/views/maintenance/waybillPriceModel/edit.blade.php → resources/views/maintenance/priceModel/waybillPriceModel/edit.blade.php

@@ -3,7 +3,7 @@
 
 @section('content')
     <div id="nav2">
-        @component('maintenance.waybillPriceModel.menu')
+        @component('maintenance.priceModel.waybillPriceModel.menu')
                 <li class="nav-item">
                     <a class="nav-link" href="{{URL::current()}}" :class="{active:isActive('edit',4)}">修改</a>
                 </li>
@@ -12,7 +12,7 @@
     <div class="container-fluid" id="list">
         <div class="card">
             <div class="card-body">
-                <form method="POST" action='{{url("maintenance/waybillPriceModel/{$waybillPriceModel->id}")}}'>
+                <form method="POST" action='{{url("maintenance/priceModel/waybillPriceModel/{$waybillPriceModel->id}")}}'>
                     @csrf
                     @method('PUT')
                     <div class="form-group row">
@@ -184,17 +184,6 @@
                     );
                 }
             },
-/*                changeProvince(){
-                    let _this=this;
-                    let province_id=this.inputting.WaybillPriceModel.province_id;
-                    this.provinces.forEach(function (province) {
-                        if(province.id+''===province_id+''){
-                            _this.cities=province.cities;
-                            return
-                        }
-                        return null
-                    })
-                }*/
         });
 
     </script>

+ 1 - 1
resources/views/maintenance/waybillPriceModel/import.blade.php → resources/views/maintenance/priceModel/waybillPriceModel/import.blade.php

@@ -4,7 +4,7 @@
 @section('content')
     <div id="nav2">
         @component('maintenance.menu')@endcomponent
-        @component('maintenance.waybillPriceModel.menu')@endcomponent
+        @component('maintenance.priceModel.waybillPriceModel.menu')@endcomponent
     </div>
     <div class="container-fluid">
         <div class="card col-md-8 offset-md-2">

+ 3 - 4
resources/views/maintenance/waybillPriceModel/index.blade.php → resources/views/maintenance/priceModel/waybillPriceModel/index.blade.php

@@ -1,11 +1,10 @@
-
 @extends('layouts.app')
 @section('title')运输价格模型@endsection
 
 @section('content')
     <span id="nav2">
         @component('maintenance.menu')@endcomponent
-        @component('maintenance.waybillPriceModel.menu')@endcomponent
+        @component('maintenance.priceModel.waybillPriceModel.menu')@endcomponent
     </span>
     <div id="list">
     <div class="container-fluid">
@@ -106,12 +105,12 @@
             },
             methods:{
                 edit:function(id){
-                    location.href = "{{url('maintenance/waybillPriceModel')}}/"+id+"/edit";
+                    location.href = "{{url('maintenance/priceModel/waybillPriceModel')}}/"+id+"/edit";
                 },
                 destroy:function(waybillPriceModel){
                     if(!confirm('确定要删除该计费模型吗?')){return};
                     let data=this;
-                    let url = "{{url('maintenance/waybillPriceModel')}}/"+waybillPriceModel.id;
+                    let url = "{{url('maintenance/priceModel/waybillPriceModel')}}/"+waybillPriceModel.id;
                     axios.delete(url,{id:waybillPriceModel.id})
                         .then(function (response) {
                             if(response.data.success){

+ 5 - 4
resources/views/maintenance/waybillPriceModel/menu.blade.php → resources/views/maintenance/priceModel/waybillPriceModel/menu.blade.php

@@ -1,17 +1,18 @@
-<div class="container-fluid nav3">
+@component('maintenance.priceModel.menu')@endcomponent
+<div class="container-fluid nav4">
     <div class="card menu-third" >
         <ul class="nav nav-pills">
             @can('计费模型-查询')
                 <li class="nav-item">
-                    <a class="nav-link" href="{{url('maintenance/waybillPriceModel')}}" :class="{active:isActive('',3)}">查询</a>
+                    <a class="nav-link" href="{{url('maintenance/priceModel/waybillPriceModel')}}" :class="{active:isActive('',4)}">查询</a>
                 </li> @endcan
             @can('计费模型-录入')
                 <li class="nav-item">
-                    <a class="nav-link" href="{{url('maintenance/waybillPriceModel/create')}}" :class="{active:isActive('create',3)}">录入</a>
+                    <a class="nav-link" href="{{url('maintenance/priceModel/waybillPriceModel/create')}}" :class="{active:isActive('create',4)}">录入</a>
                 </li> @endcan
             @can('计费模型-录入')
                 <li class="nav-item">
-                    <a class="nav-link" href="{{url('maintenance/waybillPriceModel/excel/goImport')}}" :class="{active:isActive('goImport',4)}">导入</a>
+                    <a class="nav-link" href="{{url('maintenance/priceModel/waybillPriceModel/excel/goImport')}}" :class="{active:isActive('goImport',5)}">导入</a>
                 </li> @endcan
             {{$slot}}
         </ul>

+ 37 - 0
resources/views/maintenance/processMethod/create.blade.php

@@ -0,0 +1,37 @@
+@extends('layouts.app')
+@section('title')作业类型-录入@endsection
+
+@section('content')
+    <div id="nav2">
+        @component('maintenance.menu')@endcomponent
+        @component('maintenance.processMethod.menu')@endcomponent
+    </div>
+    <div class="container-fluid card" id="container">
+       <form class="card-body offset-3" method="GET" action="{{url('')}}">
+            <div class="row">
+                <label for="name" class="col-2">类型</label>
+                <input type="text" id="name" name="name" class="form-control col-5">
+            </div>
+           <div class="row mt-2">
+               <label for="unit_id" class="col-2">单位</label>
+               <select id="unit_id" name="unit_id" class="form-control col-2">
+                   <option> </option>
+               </select>
+           </div>
+            <div class="row mt-4 offset-1">
+                <button type="submit" class="btn btn-success col-6">提交</button>
+            </div>
+       </form>
+    </div>
+@stop
+
+@section("lastScript")
+    <script>
+        new Vue({
+            el:"#container",
+            data : {
+                units : [],
+            },
+        });
+    </script>
+@stop

+ 24 - 0
resources/views/maintenance/processMethod/index.blade.php

@@ -0,0 +1,24 @@
+@extends('layouts.app')
+@section('title')作业类型@endsection
+
+@section('content')
+    <div id="nav2">
+        @component('maintenance.menu')@endcomponent
+        @component('maintenance.processMethod.menu')@endcomponent
+    </div>
+    <div class="container-fluid card">
+        <table class="table table-hover table-striped text-nowrap card-body mt-2">
+            <tr>
+                <th>ID</th>
+                <th>类型</th>
+                <th>单位</th>
+                <th>创建时间</th>
+                <th>操作</th>
+            </tr>
+        </table>
+    </div>
+@stop
+
+@section("lastScript")
+
+@stop

+ 14 - 0
resources/views/maintenance/processMethod/menu.blade.php

@@ -0,0 +1,14 @@
+<div class="container-fluid nav3">
+    <div class="card menu-third" >
+        <ul class="nav nav-pills">
+            @can('作业类型-查询')
+                <li class="nav-item">
+                    <a class="nav-link" href="{{url('maintenance/processMethod')}}" :class="{active:isActive('',3)}">查询</a>
+                </li> @endcan
+            @can('作业类型-录入')
+                <li class="nav-item">
+                    <a class="nav-link" href="{{url('maintenance/processMethod/create')}}" :class="{active:isActive('create',3)}">录入</a>
+                </li> @endcan
+        </ul>
+    </div>
+</div>

+ 2 - 1
resources/views/maintenance/role/index.blade.php

@@ -71,7 +71,7 @@
                 this.form = new query({
                     el: '#form_div',
                     condition: data,
-                })
+                });
                 this.form.init();
                 let column = [
                     {name:'id',value: 'ID'},
@@ -84,6 +84,7 @@
                 let header = new Header({
                     column: column,
                     data: this.roles,
+                    fixedTop: ($('#form_div').height())+2,
                     restorationColumn: 'id',
                 });
                 header.init();

+ 24 - 0
resources/views/maintenance/userOwnerGroup/create.blade.php

@@ -0,0 +1,24 @@
+@extends('layouts.app')
+@section('title')项目组-录入@endsection
+
+@section('content')
+    <div id="nav2">
+        @component('maintenance.menu')@endcomponent
+        @component('maintenance.userOwnerGroup.menu')@endcomponent
+    </div>
+    <div class="container-fluid card">
+       <form class="card-body offset-3" method="GET" action="{{url('')}}">
+            <div class="row">
+                <label for="name" class="col-2">小组名称</label>
+                <input type="text" id="name" name="name" class="form-control col-5">
+            </div>
+            <div class="row mt-4 offset-1">
+                <button type="submit" class="btn btn-success col-6">提交</button>
+            </div>
+       </form>
+    </div>
+@stop
+
+@section("lastScript")
+
+@stop

+ 24 - 0
resources/views/maintenance/userOwnerGroup/index.blade.php

@@ -0,0 +1,24 @@
+@extends('layouts.app')
+@section('title')项目组@endsection
+
+@section('content')
+    <div id="nav2">
+        @component('maintenance.menu')@endcomponent
+        @component('maintenance.userOwnerGroup.menu')@endcomponent
+    </div>
+    <div class="container-fluid card">
+        <table class="table table-hover table-striped text-nowrap card-body mt-2">
+            <tr>
+                <th>ID</th>
+                <th>名称</th>
+                <th>创建时间</th>
+                <th>操作</th>
+            </tr>
+
+        </table>
+    </div>
+@stop
+
+@section("lastScript")
+
+@stop

+ 14 - 0
resources/views/maintenance/userOwnerGroup/menu.blade.php

@@ -0,0 +1,14 @@
+<div class="container-fluid nav3">
+    <div class="card menu-third" >
+        <ul class="nav nav-pills">
+            @can('客户-查询')
+                <li class="nav-item">
+                    <a class="nav-link" href="{{url('maintenance/userOwnerGroup')}}" :class="{active:isActive('',3)}">查询</a>
+                </li> @endcan
+            @can('客户-录入')
+                <li class="nav-item">
+                    <a class="nav-link" href="{{url('maintenance/userOwnerGroup/create')}}" :class="{active:isActive('create',3)}">录入</a>
+                </li> @endcan
+        </ul>
+    </div>
+</div>

+ 8 - 0
resources/views/waybill/authorityMenu.blade.php

@@ -0,0 +1,8 @@
+@extends('layouts.app')
+@section('title')入库管理@endsection
+
+@section('content')
+    <span id="nav2">
+        @component('waybill.menu')@endcomponent
+    </span>
+@endsection

+ 27 - 6
routes/web.php

@@ -33,6 +33,7 @@ Route::group(['prefix'=>'password'],function(){
 Route::get('denied',function (){return view('exception.authority');});
 /** 基础设置 */
 Route::group(['prefix'=>'maintenance'],function(){
+
     /** 商品 */
     Route::group(['prefix'=>'commodity'],function(){
         /** 导出 */
@@ -70,12 +71,25 @@ Route::group(['prefix'=>'maintenance'],function(){
         });
     });
     /** 计费模型 */
-    Route::group(['prefix'=>'waybillPriceModel'],function(){
-        /** excel */
-        Route::group(['prefix'=>'excel'],function(){
-            Route::get('goImport',function (){return view('maintenance.waybillPriceModel.import');});
+    Route::group(['prefix'=>'priceModel'],function() {
+        Route::group(['prefix'=>'waybillPriceModel'],function(){
+            /** excel */
+            Route::group(['prefix'=>'excel'],function(){
+                Route::get('goImport',function (){return view('maintenance.priceModel.waybillPriceModel.import');});
+            });
+            Route::get('cities/{province_id}','WaybillPriceModelsController@getCities');
+        });
+        Route::resource('waybillPriceModel','WaybillPriceModelsController');
+
+        Route::group(['prefix'=>'storage'],function(){
+            Route::get('create','PriceModelController@storeCreate');
+        });
+        Route::get('storage','PriceModelController@storeIndex');
+
+        Route::group(['prefix'=>'operation'],function(){
+            Route::get('create','PriceModelController@operationCreate');
         });
-        Route::get('cities/{province_id}','WaybillPriceModelsController@getCities');
+        Route::get('operation','PriceModelController@operationIndex');
     });
 
     Route::resource('log', 'LogController');
@@ -99,7 +113,10 @@ Route::group(['prefix'=>'maintenance'],function(){
     Route::resource('tutorial', 'TutorialController');
     Route::resource('userLabor','UserLaborController');
     Route::resource('paperBox', 'PaperBoxController');
-    Route::resource('waybillPriceModel','WaybillPriceModelsController');
+    Route::resource('customer', 'CustomerBaseController');
+    Route::resource('userOwnerGroup', 'UserOwnerGroupController');
+    Route::resource('processMethod', 'ProcessMethodController');
+    Route::resource('feature', 'FeatureController');
 });
 Route::get('maintenance', function () {return view('maintenance.index');});
 
@@ -465,6 +482,10 @@ Route::group(['prefix'=>'customer'],function(){
         Route::get('create','CustomerController@projectCreate');
         Route::get('area','CustomerController@projectArea');
     });
+    Route::group(['prefix'=>'finance'],function(){
+        Route::get('instantBill','CustomerController@financeInstantBill');
+        Route::get('billConfirmation','CustomerController@financeBillConfirmation');;
+    });
     Route::get('relating',function (){return view('customer.relating');});
 });