Эх сурвалжийг харах

客户管理-作业计费修复

Zhouzhendong 5 жил өмнө
parent
commit
0b43cab6e7

+ 1 - 4
app/Http/Controllers/CustomerBaseController.php

@@ -2,8 +2,6 @@
 
 namespace App\Http\Controllers;
 
-use App\Components\SyncResponse;
-use App\Customer;
 use App\CustomerLog;
 use App\CustomerTag;
 use App\Owner;
@@ -17,7 +15,6 @@ use Illuminate\Support\Facades\Validator;
 
 class CustomerBaseController extends Controller
 {
-    use SyncResponse;
     /**
      * Display a listing of the resource.
      *
@@ -26,7 +23,7 @@ class CustomerBaseController extends Controller
      */
     public function index(Request $request)
     {
-        $this->gate("客户-查询");
+        if(!Gate::allows("客户-查询"))return view("exception.authority");
         $customers = app('CustomerService')->paginate($request->input(),["owners.contracts.files","tags:id,name","customerLogs"=>function($query){
             /** @var Builder $query */
             $query->with(["status:id,name,created_at","user:id,name"])->orderByDesc('id');

+ 0 - 2
app/Http/Controllers/OwnerController.php

@@ -5,8 +5,6 @@ namespace App\Http\Controllers;
 use App\Authority;
 use App\Components\AsyncResponse;
 use App\Events\CustomerStored;
-use App\Log;
-use App\Logistic;
 use App\Owner;
 use Exception;
 use Illuminate\Http\Request;

+ 16 - 14
app/Http/Controllers/PriceModelController.php

@@ -269,21 +269,23 @@ class PriceModelController extends Controller
             "total_price"       => request("total_price"),
             "total_discount_price"=> request("total_discount_price") ?? null,
         ]);
-        //录入子表
-        $insert = [];
-        foreach ($request->input("items") as $rule){
-            $insert[] = [
-                "owner_price_operation_id" => $ownerPriceOperation->id,
-                "amount" => $rule["amount"],
-                "unit_id" => $rule["unit_id"],
-                "unit_price" => $rule["unit_price"],
-                "strategy" => $rule["strategy"],
-                "feature" => $rule["feature"],
-                "priority" => $rule["priority"],
-                "discount_price" => $rule["discount_price"] ?? null,
-            ];
+        if ($request->input("items")){
+            //录入子表
+            $insert = [];
+            foreach ($request->input("items") as $rule){
+                $insert[] = [
+                    "owner_price_operation_id" => $ownerPriceOperation->id,
+                    "amount" => $rule["amount"],
+                    "unit_id" => $rule["unit_id"],
+                    "unit_price" => $rule["unit_price"],
+                    "strategy" => $rule["strategy"],
+                    "feature" => $rule["feature"],
+                    "priority" => $rule["priority"],
+                    "discount_price" => $rule["discount_price"] ?? null,
+                ];
+            }
+            $service->insertItem($insert);
         }
-        $service->insertItem($insert);
         //录入中间表
         /** @var OwnerPriceOperation $ownerPriceOperation */
         if ($request->input("owner_id"))$ownerPriceOperation->ownerPriceOperationOwners()->sync($request->input("owner_id"));

+ 4 - 5
app/Services/OwnerPriceOperationService.php

@@ -171,12 +171,12 @@ Class OwnerPriceOperationService
             if ($rule->strategy == '特征'){//特征策略匹配
                 $bool = app("FeatureService")->matchFeature($rule->feature,$columnMapping,$matchObject);
                 if ($bool === true){
-                    if ($rule->total_price)return $isDiscount ? $rule->total_discount_price : $rule->total_price; //按单计价存在,直接返回单总价或减免总价
+                    if ($rule->total_price)return ["id"=>$rule->id,"money"=>$isDiscount ? $rule->total_discount_price : $rule->total_price]; //按单计价存在,直接返回单总价或减免总价
                     $money = $this->matchItem($rule->items,$columnMapping,$matchObject,$units,$owner_id,$type=='入库' ? true : false,$isDiscount);
                     if ($money>0)return ["id"=>$rule->id,"money"=>$money];
                 };
             }else{//默认策略匹配
-                if ($rule->total_price)return $isDiscount ? $rule->total_discount_price : $rule->total_price; //按单计价存在,直接返回单总价或减免总价
+                if ($rule->total_price)return ["id"=>$rule->id,"money"=>$isDiscount ? $rule->total_discount_price : $rule->total_price]; //按单计价存在,直接返回单总价或减免总价
                 $money = $this->matchItem($rule->items,$columnMapping,$matchObject,$units,$owner_id,$type=='入库' ? true : false,$isDiscount);
                 if ($money>0)return ["id"=>$rule->id,"money"=>$money];
             };
@@ -230,12 +230,11 @@ Class OwnerPriceOperationService
                     $inMoney = 0;
                     foreach ($packages as &$package){
                         if ($package["price"] ?? false)continue;
-                        if (!app("FeatureService")->matchFeature($rule->feature,["商品名称"=>$commodityColumn],["commodity"=>$package[$commodityColumn] ?? ''])) continue;
+                        if (!app("FeatureService")->matchFeature($rule->feature,["商品名称"=>$commodityColumn],$package)) continue;
 
                         if (!$unitName)$unitName = $units[$rule->unit_id];
                         else {
-                            if ($unitName != $units[$rule->unit_id])
-                                return -3;
+                            if ($unitName != $units[$rule->unit_id]) return -3;
                         }
                         $package["price"] = $rule->unit_price;
                         if (!isset($units[$rule->unit_id]))return -3;

+ 35 - 0
database/migrations/2021_01_29_161734_add_units_data.php

@@ -0,0 +1,35 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class AddUnitsData extends Migration
+{
+    protected $units = [
+        "件","箱",'单',"日","月","m²","m³"
+    ];
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        foreach ($this->units as $unit){
+            \App\Unit::query()->firstOrCreate(["name"=>$unit],[
+               "name" => $unit,
+               "code" => $unit
+            ]);
+        }
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+    }
+}

+ 2 - 2
resources/views/customer/project/area.blade.php

@@ -170,8 +170,8 @@
                     {name:'ownerStoragePriceModel',value: '用仓类型'},
                     {name:'areaOnTray',value: '货物整托', neglect: true},
                     {name:'areaOnHalfTray',value: '货物半托', neglect: true},
-                    {name:'areaOnFlat',value: '平面区(面积/体积)', neglect: true},
-                    {name:'accountingArea',value: '结算(面积/体积)', neglect: true},
+                    {name:'areaOnFlat',value: '平面区', neglect: true},
+                    {name:'accountingArea',value: '结算', neglect: true},
                 ];
                 let _this=this;
                 setTimeout(function () {

+ 4 - 4
resources/views/customer/project/part/_operation.blade.php

@@ -35,7 +35,7 @@
 <div class="row mt-3" v-if="model.operation.operation_type == '出库'">
     <label class="col-2" for="isDiscount">是否满减</label>
     <div class="col-2">
-        <input type="checkbox" id="isDiscount" class="col-2 rounded mt-1" v-model="model.operation.isDiscount">
+        <input type="checkbox" id="isDiscount" class="rounded mt-1" v-model="model.operation.isDiscount">
     </div>
     <div class="col-8 row" v-if="model.operation.isDiscount">
         <label class="col-3" for="discount">满减值</label>
@@ -92,7 +92,7 @@
                     <div class="row mt-2" v-if="model.operation.items[0].type == 0">
                         <label class="col-3">单位</label>
                         <label class="col-5 mb-0"><select v-model="model.operation.items[0].unit_id" class="form-control" :class="errors['items.0.unit_id'] ? 'is-invalid' : ''">
-                                <option v-for="unit in pool.units" :value="unit.id">@{{ unit.name }}</option>
+                                <option v-for="unit in pool.units" :value="unit.id" v-if="unit.name=='件' || unit.name=='箱'">@{{ unit.name }}</option>
                             </select></label>
                     </div>
                     <div class="row mt-0" v-if="errors['items.0.unit_id']">
@@ -145,7 +145,7 @@
             <div class="row mt-2">
                 <label class="col-3">单位</label>
                 <label class="col-5 mb-0"><select v-model="model.operation.items[1].unit_id" class="form-control" :class="errors['items.1.unit_id'] ? 'is-invalid' : ''">
-                    <option v-for="unit in pool.units" :value="unit.id">@{{ unit.name }}</option>
+                    <option v-for="unit in pool.units" :value="unit.id" v-if="unit.name=='件' || unit.name=='箱'">@{{ unit.name }}</option>
                 </select></label>
             </div>
             <div class="row mt-0" v-if="errors['items.1.unit_id']">
@@ -196,7 +196,7 @@
             <div class="row mt-2">
                 <label class="col-3">单位</label>
                 <label class="col-5 mb-0"><select v-model="item.unit_id" class="form-control" :class="errors['items.'+i+'.unit_id'] ? 'is-invalid' : ''">
-                    <option v-for="unit in pool.units" :value="unit.id">@{{ unit.name }}</option>
+                    <option v-for="unit in pool.units" :value="unit.id" v-if="unit.name=='件' || unit.name=='箱'">@{{ unit.name }}</option>
                 </select></label>
             </div>
             <div class="row mt-0" v-if="errors['items.'+i+'.unit_id']">

+ 44 - 2
resources/views/maintenance/priceModel/operation/create.blade.php

@@ -65,12 +65,42 @@
             </div>
             <div class="row mt-3">
                 <label for="priority" class="col-2">优先级</label>
-                <input id="priority" type="number" min="0" value="0" name="priority" :class="errors.priority ? 'is-invalid' : ''" class="col-6 form-control" v-model="model.priority" required>
+                <input id="priority" type="number" min="0" name="priority" :class="errors.priority ? 'is-invalid' : ''" class="col-6 form-control" v-model="model.priority" required>
                 <span class="invalid-feedback mt-0 offset-2" role="alert" v-if="errors.priority">
                     <strong>@{{ errors.priority[0] }}</strong>
                 </span>
             </div>
+            <div class="row mt-3" v-if="model.operation_type == '出库'">
+                <label class="col-2" for="isDiscount">是否满减</label>
+                <div class="col-2">
+                    <input type="checkbox" id="isDiscount" class="rounded mt-1" v-model="model.isDiscount">
+                </div>
+                <div class="col-8 row" v-if="model.isDiscount">
+                    <label class="col-3" for="discount">满减值</label>
+                    <input id="discount" v-model="model.discount_count" name="discount_count"
+                           class="form-control form-control-sm col-6" :class="errors.discount_count ? 'is-invalid' : ''" step="1" type="number" min="0">
+                </div>
+            </div>
             <div class="row mt-3">
+                <label class="col-2" for="isSingle">按单计价</label>
+                <div class="col-2">
+                    <input type="checkbox" id="isSingle" class="pull-left rounded mt-1" v-model="model.isSingle">
+                </div>
+                <div class="col-8 row" v-if="model.isSingle">
+                    <label class="col-3" for="total_price">普通价格</label>
+                    <input id="total_price" name="total_price" v-model="model.total_price"
+                           class="form-control form-control-sm col-6" :class="errors.total_price ? 'is-invalid' : ''" step="0.001" type="number" min="0">
+                </div>
+            </div>
+            <div class="row mt-1" v-if="model.isSingle && model.isDiscount">
+                <label class="col-2"></label><div class="col-2"></div>
+                <div class="col-8 row">
+                    <label class="col-3" for="total_discount_price">满减价格</label>
+                    <input id="total_discount_price" name = "total_discount_price" v-model="model.total_discount_price"
+                           class="form-control form-control-sm col-6" :class="errors.total_discount_price ? 'is-invalid' : ''" step="0.001" type="number" min="0">
+                </div>
+            </div>
+            <div class="row mt-3" v-if="!model.isSingle">
                 <div v-for="(item,i) in model.items" 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"><span @click="addRule()" class="fa fa-plus-square-o" style="cursor: pointer"></span></div>
@@ -130,6 +160,11 @@
                             <label v-if="item.feature">@{{ item.feature }}</label>
                             <button type="button" class="btn btn-dark col-2 ml-2" @click="showAddFeatureModal(i,item.feature)">调整特征</button>
                         </div>
+                        <div class="row mt-2" v-if="model.isDiscount">
+                            <label class="col-2" for="discount_price">满减单价:</label>
+                            <input class="col-5 form-control form-control-sm" id="discount_price" name="discount_price" v-model="item.discount_price"
+                                type="number" step="0.001" min="0">
+                        </div>
                     </div>
                 </div>
                 <label hidden><input name="items" :value="JSON.stringify(model.items)"></label>
@@ -157,8 +192,11 @@
                     operation_type:"{{old('operation_type') ?? (isset($model) ? $model->operation_type : '')}}",
                     strategy:"{{old('strategy') ?? (isset($model) ? $model->strategy : '')}}",
                     name:"{{old('name') ?? (isset($model) ? $model->name : '')}}",
-                    priority:"{{old('priority') ?? (isset($model) ? $model->priority : '')}}",
+                    priority:"{{old('priority') ?? (isset($model) ? $model->priority : 0)}}",
                     feature:"{{old('feature') ?? (isset($model) ? $model->feature : '')}}",
+                    discount_count:"{{old('discount_count') ?? (isset($model) ? $model->discount_count : '')}}",
+                    total_price:"{{old('total_price') ?? (isset($model) ? $model->total_price : '')}}",
+                    total_discount_price:"{{old('total_discount_price') ?? (isset($model) ? $model->total_discount_price : '')}}",
                     remark:"{{old('remark') ?? (isset($model) ? $model->remark : '')}}",
                     items:{!! old('items') ? json_encode(old('items')) : (isset($model)&&$model->items ? $model->items : "[{strategy:'',amount:'',unit_id:'',unit_price:'',feature:'',priority:''}]")!!},
                 },
@@ -180,6 +218,10 @@
                 existStrategy:{default:false,starting:false},
                 oldFeature : '',
             },
+            mounted(){
+                this.$set(this.model,"isSingle",!!this.model.total_price);
+                this.$set(this.model,"isDiscount",!!this.model.discount_count);
+            },
             methods:{
                 outRuleUnique(strategy){
                     if (strategy==='起步') this.existStrategy.starting = true;

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

@@ -47,7 +47,7 @@
                 <td>@{{ model.totalDiscountPrice }}</td>
                 <td>@{{ model.discountDate }}</td>
                 <td>@{{ model.feature }}</td>
-                <td>@{{ model.remark }}</td>
+                <td><div class="text-overflow-warp-200">@{{ model.remark }}</div></td>
                 <td>@{{ model.createdAt }}</td>
                 <td>
                     @can("计费模型-作业-编辑")<button type="button" class="btn btn-sm btn-outline-info" @click="edit(model.id)">编辑</button>@endcan