Browse Source

客户管理-需求变更

Zhouzhendong 5 years ago
parent
commit
4731331a57

+ 8 - 4
app/Http/Controllers/PriceModelController.php

@@ -267,7 +267,7 @@ class PriceModelController extends Controller
             "feature" => $request->input("feature"),
             "discount_count"    => request("discount_count"),
             "total_price"       => request("total_price"),
-            "total_discount_price"=> request("total_discount_price"),
+            "total_discount_price"=> request("total_discount_price") ?? null,
         ]);
         //录入子表
         $insert = [];
@@ -280,6 +280,7 @@ class PriceModelController extends Controller
                 "strategy" => $rule["strategy"],
                 "feature" => $rule["feature"],
                 "priority" => $rule["priority"],
+                "discount_price" => $rule["discount_price"] ?? null,
             ];
         }
         $service->insertItem($insert);
@@ -317,7 +318,7 @@ class PriceModelController extends Controller
             "feature" => $request->input("feature"),
             "discount_count"    => request("discount_count"),
             "total_price"       => request("total_price"),
-            "total_discount_price"=> request("total_discount_price"),
+            "total_discount_price"=> request("total_discount_price") ?? null,
         ]);
         $service->destroyItem($id);
         //录入子表
@@ -331,6 +332,7 @@ class PriceModelController extends Controller
                 "strategy" => $rule["strategy"],
                 "feature" => $rule["feature"],
                 "priority" => $rule["priority"],
+                "discount_price" => $rule["discount_price"] ?? null,
             ];
         }
         $service->insertItem($insert);
@@ -1061,7 +1063,7 @@ class PriceModelController extends Controller
             $model = app('OwnerPriceOperationService')->find(request("id"),["items"]);
             app('OwnerPriceOperationService')->findUpdate($model,$operation);
             $delete = [];//需要删除子项
-            $update = [["id","strategy","amount","unit_id","unit_price","feature"]];//需要更新子项
+            $update = [["id","strategy","amount","unit_id","unit_price","feature","discount_price"]];//需要更新子项
             $insert = [];//需要新增子项
             foreach ($params["items"] as $item){
                 $obj = [
@@ -1069,7 +1071,8 @@ class PriceModelController extends Controller
                     "amount"    => $item["amount"],
                     "unit_id"   => $item["unit_id"],
                     "unit_price"=> $item["unit_price"],
-                    "feature"   => $item["feature"],
+                    "feature"   => $item["feature"] ?? null,
+                    "discount_price"   => $item["discount_price"] ?? null,
                 ];
                 if (isset($item["id"])){
                     $obj["id"] = $item["id"];
@@ -1389,6 +1392,7 @@ class PriceModelController extends Controller
                     "amount" => $item["amount"],
                     "unit_id" => $item["unit_id"],
                     "unit_price" => $item["unit_price"],
+                    "discount_price" => $item["discount_price"] ?? null,
                     "feature" => $item["feature"],
                     "featureFormat" => $item->featureFormat,
                 ];

+ 26 - 1
resources/views/customer/project/create.blade.php

@@ -412,6 +412,10 @@
                         if (res.owner_storage_price_models.length>0)this.selectedModel.storage = res.owner_storage_price_models;
                         if (res.owner_price_operations.length>0){
                             this._loadOperation();
+                            res.owner_price_operations.forEach((operation,i)=>{
+                                if (operation.discount_count)operation.isDiscount = true;
+                                if (operation.total_price)operation.isSingle = true;
+                            });
                             this.selectedModel.operation = res.owner_price_operations;
                         }
                         if (res.owner_price_expresses.length>0){
@@ -619,14 +623,19 @@
                         this.$forceUpdate();
                         return;
                     }
-                    if (!this.model.operation.total_price){
+                    if (!this.model.operation.isSingle){
                         if ((this.model.operation.operation_type === '出库' && this._verifyOperationItem(0)) || this._verifyOperationItem(1))return;
                         if (this.model.operation.items.length>2){
                             for (let i=2;i<this.model.operation.items.length;i++){
                                 if (this._verifyOperationItem(i))return;
                             }
                         }
+                        this.model.operation.total_price = "";
                     }else this.$set(this.model.operation,"items",[]);
+                    if (!this.model.operation.isDiscount) {
+                        this.model.operation.discount_count = "";
+                        this.model.operation.total_discount_price = "";
+                    }
                     let url = "{{url('maintenance/priceModel/apiStoreOperation')}}";
                     let params = this.model.operation;
                     params.owner_id = this.ownerTemp.id;
@@ -649,6 +658,8 @@
                             res.items[i].type = this.model.operation.items[sign]['type'];
                             sign++;
                         }
+                        if (res.discount_count)res.isDiscount = true;
+                        if (res.total_price)res.isSingle = true;
                         if (params.id) this.selectedModel.operation[params.index] = res;
                         else this.selectedModel.operation.push(res);
                         this.model.operation = {
@@ -668,6 +679,10 @@
                 _verifyOperationItem(itemIndex){//验证作业费子项信息完整
                     let obj = this.model.operation.items[itemIndex];
                     let sign = false;
+                    if (obj.strategy === '特征' && !obj.feature){
+                        this.errors['items.'+itemIndex+'.feature'] = ["必须选择特征"];
+                        sign = true;
+                    }
                     if (this.model.operation.isDiscount && !obj.discount_price){
                         this.errors['items.'+itemIndex+'.discount_price'] = ["满减单价不得为空"];
                         sign = true;
@@ -683,6 +698,9 @@
                     if (!obj.unit_price){
                         this.errors['items.'+itemIndex+'.unit_price'] = ["单价不得为空"];
                     }
+                    if (this.model.operation.isDiscount && !obj.discount_price){
+                        this.errors['items.'+itemIndex+'.discount_price'] = ["满减单价不得为空"];
+                    }
                     if (sign)this.$forceUpdate();
                     return sign;
                 },
@@ -1420,6 +1438,13 @@
                     this.model.operation = JSON.parse(JSON.stringify(this.selectedModel.operation[index]));
                     if (this.model.operation.operation_type==='入库') this.model.operation.items.unshift({});
                     this.model.operation.index = index;
+                    if (this.model.operation.items.length == 0){
+                        this.model.operation.items = [
+                            {strategy:"起步",type:"0"},
+                            {strategy:"默认"},
+                            {strategy:"特征"},
+                        ];
+                    }
                 },
                 //编辑快递
                 editExpress(index){

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

@@ -221,6 +221,7 @@
             <div class="row mt-2">
                 <label class="col-3">特征:</label>
                 <label class="col-5">
+                    <label v-if="errors['items.'+i+'.feature']" class="text-danger">@{{ errors['items.'+i+'.feature'][0] }}</label>
                     <label v-if="item.feature">@{{ item.featureFormat }}</label><br>
                     <button type="button" class="btn btn-dark ml-2" @click="showAddFeatureModal(i)">调整特征</button>
                 </label>

+ 8 - 0
resources/views/customer/project/part/_three.blade.php

@@ -64,12 +64,16 @@
                             <div class="row offset-1 small mt-0" style="background-color: RGB(248,248,248)" v-if="operation.strategy === '特征'">
                                 @{{ operation.featureFormat }}
                             </div>
+                            <div class="container-fluid offset-2" v-if="operation.isSingle">
+                                按单计费:<b>@{{ operation.total_price }}</b>&nbsp;元/单<span v-if="operation.isDiscount">&nbsp;(满减价格:<b>@{{ operation.total_discount_price }}</b>&nbsp;元/单)</span>
+                            </div>
                             <div class="container-fluid offset-2" :id="'operation-item-'+i">
                                 <div v-for="(item,j) in operation.items" class="container-fluid">
                                     <div class="row">
                                         <div class="col-10">
                                             <label>@{{ item.strategy }}</label>:
                                             <b>@{{ item.amount }}</b>&nbsp;@{{ poolMapping.units ? poolMapping.units[item.unit_id] : '' }} / <b>@{{ item.unit_price }}</b>元
+                                            <span v-if="operation.isDiscount">&nbsp;(满减单价:<b>@{{ item.discount_price }}元</b>)</span>
                                         </div>
                                         <div class="col-1">
                                             <span class="cursor-pointer text-danger font-weight-bold"
@@ -106,12 +110,16 @@
                             <div class="row offset-1 small mt-0" style="background-color: RGB(248,248,248)" v-if="operation.strategy === '特征'">
                                 @{{ operation.featureFormat }}
                             </div>
+                            <div class="container-fluid offset-2" v-if="operation.isSingle">
+                                按单计费:<b>@{{ operation.total_price }}</b>&nbsp;元/单<span v-if="operation.isDiscount">&nbsp;(满减价格:<b>@{{ operation.total_discount_price }}</b>&nbsp;元/单)</span>
+                            </div>
                             <div class="container-fluid offset-2" :id="'operation-item-'+i">
                                 <div v-for="(item,j) in operation.items" class="container-fluid">
                                     <div class="row">
                                         <div class="col-10">
                                             <label>@{{ item.strategy }}</label>:
                                             <span v-if="item.amount > 0"><b>@{{ item.amount }}</b>&nbsp;@{{ poolMapping.units ? poolMapping.units[item.unit_id] : '' }} /</span><b>&nbsp;@{{ item.unit_price }}</b>元
+                                            <span v-if="operation.isDiscount">&nbsp;(满减单价:<b>@{{ item.discount_price }}元</b>)</span>
                                         </div>
                                         <div class="col-1">
                                             <span class="cursor-pointer text-danger font-weight-bold"