Przeglądaj źródła

客户管理-作业费计费逻辑变更,增加起步费逻辑,修改原有起步数

Zhouzhendong 5 lat temu
rodzic
commit
d8ff8d6435

+ 16 - 6
app/Services/OwnerPriceOperationService.php

@@ -256,13 +256,23 @@ Class OwnerPriceOperationService
                     if ($isIn)break;
                     if ($unitName && $unitName != $units[$rule->unit_id])return -3; //校验单位是否一致
 
-                    $money = $rule->amount * $rule->unit_price;
-                    $startNumber = $rule->amount;
-                    $packages = $this->settingCount($packages,$amountColumn,$startNumber);
-                    if ($packages){
-                        foreach ($packages as $package){
-                            $money += $package[$amountColumn] * $package["price"];
+                    if ($rule->amount){ //起步数+起步费
+                        $money = $rule->unit_price;
+                        $startNumber = $rule->amount;
+                        $packages = $this->settingCount($packages,$amountColumn,$startNumber);
+                        if ($packages){
+                            foreach ($packages as $package){
+                                $money += $package[$amountColumn] * $package["price"];
+                            }
+                        }
+                    }else{//单起步费
+                        $money = 0;
+                        if ($packages){
+                            foreach ($packages as $package){
+                                $money += $package[$amountColumn] * $package["price"];
+                            }
                         }
+                        if ($money<$rule->unit_price)$money = $rule->unit_price;
                     }
                     return $money;
             }

+ 3 - 3
resources/views/customer/project/create.blade.php

@@ -442,7 +442,7 @@
                     });
                 },
                 //加载仓储所需基础信息
-                async _loadStorage(){
+                _loadStorage(){
                     if (!this.pool.units)this._getUnits();
                     if (!this.isLoad && this.ownerTemp.id)this._loadPriceModel();//计费模型未被加载且项目ID存在时
                     if (!this.isLoad && !this.ownerTemp.id) this.isLoad = true;
@@ -636,10 +636,10 @@
                 _verifyOperationItem(itemIndex){//验证作业费子项信息完整
                     let obj = this.model.operation.items[itemIndex];
                     let sign = false;
-                    if (!obj.amount){
+                    if (obj.strategy!=='起步' && !obj.amount){
                         this.errors['items.'+itemIndex+'.amount'] = ["数量不得为空"];
                         sign = true;
-                    }
+                    }else if (!obj.amount) obj.amount = 0;
                     if (!obj.unit_id){
                         this.errors['items.'+itemIndex+'.unit_id'] = ["必须选择单位"];
                         sign = true;

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

@@ -27,7 +27,7 @@
         <div class="w-100 form-inline">
             <input id="expressFile" type="file" class="d-none" accept=".csv, .xlsx, .xls" @change="importExpress($event)"/>
             <button type="button" class="btn btn-sm btn-outline-info w-25" @click="addExpressItem()">新增</button>
-            <button type="button" class="btn btn-sm btn-outline-primary w-25 ml-2" @click="   ('expressFile')" @mouseenter="hoverEffect('express',true)" @mouseleave="hoverEffect('express',false)">导入</button>
+            <button type="button" class="btn btn-sm btn-outline-primary w-25 ml-2" @click="selectFile('expressFile')" @mouseenter="hoverEffect('express',true)" @mouseleave="hoverEffect('express',false)">导入</button>
             <h5><span class="ml-0 fa fa-question-circle-o cursor-pointer" data-toggle="tooltip" data-placement="top" title="导入与保存时自动过滤重复数据"></span></h5>
         </div>
         <div class="w-100 mt-1 ml-1" v-if="model.express.items.length>searchBase">

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

@@ -35,13 +35,12 @@
 <div class="row mt-3">
     {{--起步--}}
     <div class="card row text-white offset-1 col-9 bg-dark" v-if="model.operation.operation_type === '出库'">
-        <div class="card-body">
+        <div class="card-header" style="max-height: 50px">
             <div class="row">
-                <label class="col-3">子策略:</label>
-                <label class="col-5"><select disabled v-model="model.operation.items[0].strategy" class="form-control">
-                    <option value="起步">起步</option>
-                </select></label>
+                <div class="col-6 offset-3 text-center">起&nbsp;&nbsp;&nbsp;&nbsp;步</div>
             </div>
+        </div>
+        <div class="card-body">
             <div class="row mt-2">
                 <label class="col-3">起步数</label>
                 <label class="col-5 mb-0"><input id="amount" type="number" :class="errors['items.0.amount'] ? 'is-invalid' : ''"
@@ -60,7 +59,7 @@
                 <div class="offset-3"><small class="text-danger font-weight-bold ml-3">单位为必选项</small></div>
             </div>
             <div class="row mt-2">
-                <label class="col-3">单价</label>
+                <label class="col-3">起步费</label>
                 <label class="col-5 mb-0"><input type="number" min="0" step="0.001" class="form-control" v-model="model.operation.items[0].unit_price"
                            :class="errors['items.0.unit_price'] ? 'is-invalid' : ''"></label>
             </div>
@@ -72,16 +71,17 @@
 
     {{--默认--}}
     <div class="card row text-white offset-1 col-9 bg-info">
-        <div class="card-header">
-            <div class="pull-left cursor-pointer text-white" @click="addOperationItem()"><small>新增</small>&nbsp;<span class="fa fa-plus-square-o"></span></div>
-        </div>
-        <div class="card-body">
+        <div class="card-header" style="max-height: 50px">
             <div class="row">
-                <label class="col-3">子策略:</label>
-                <label class="col-5"><select disabled v-model="model.operation.items[1].strategy" class=" form-control">
-                    <option value="默认">默认</option>
-                </select></label>
+                <div class="col-3">
+                    <div class="pull-left cursor-pointer text-white" @click="addOperationItem()"><small>新增</small>&nbsp;<span class="fa fa-plus-square-o"></span></div>
+                </div>
+                <div class="col-6 text-center">
+                    默&nbsp;&nbsp;&nbsp;&nbsp;认
+                </div>
             </div>
+        </div>
+        <div class="card-body">
             <div class="row mt-2">
                 <label class="col-3">数量</label>
                 <label class="col-5 mb-0"><input id="amount" type="number" :class="errors['items.1.amount'] ? 'is-invalid' : ''"
@@ -114,17 +114,20 @@
 
     {{--特征--}}
     <div v-for="(item,i) in model.operation.items" class="card row text-white offset-1 col-9 bg-secondary" v-if="i>1">
-        <div class="card-header">
-            <div class="pull-left cursor-pointer text-white" @click="addOperationItem()"><small>新增</small>&nbsp;<span class="fa fa-plus-square-o"></span></div>
-            <div class="pull-right cursor-pointer text-white" @click="delOperationItem(i)"><small>删除</small>&nbsp;<span class="fa fa-window-close-o"></span></div>
-        </div>
-        <div class="card-body">
+        <div class="card-header" style="max-height: 50px">
             <div class="row">
-                <label class="col-3">子策略</label>
-                <label class="col-5"><select disabled v-model="item.strategy" class="form-control">
-                    <option value="特征">特征</option>
-                </select></label>
+                <div class="col-3">
+                    <div class="pull-left cursor-pointer text-white" @click="addOperationItem()"><small>新增</small>&nbsp;<span class="fa fa-plus-square-o"></span></div>
+                </div>
+                <div class="col-6 text-center">
+                    特&nbsp;&nbsp;&nbsp;&nbsp;征
+                </div>
+                <div class="col-3">
+                    <div class="pull-right cursor-pointer text-white" @click="delOperationItem(i)"><small>删除</small>&nbsp;<span class="fa fa-window-close-o"></span></div>
+                </div>
             </div>
+        </div>
+        <div class="card-body">
             <div class="row mt-2">
                 <label class="col-3">数量</label>
                 <label class="col-5 mb-0"><input type="number" step="1" min="0" :class="errors['items.'+i+'.amount'] ? 'is-invalid' : ''" v-model="item.amount" class="form-control"></label>

+ 1 - 1
tests/Services/OwnerPriceOperationService/OwnerPriceOperationServiceTest.php

@@ -167,7 +167,7 @@ class OwnerPriceOperationServiceTest extends  TestCase
         $result = $this->service->matching(["packages"=>[["commodity"=>"测试","amount"=>55,"sku"=>$this->data["commodities"][0]["sku"]]]],[],$this->data["owners"][0]["id"],"入库");
         $this->assertEquals(96.9,$result);
         $result = $this->service->matching(["packages"=>[["commodity"=>"测试","amount"=>57,"sku"=>$this->data["commodities"][0]["sku"]]]],[],$this->data["owners"][0]["id"],"出库");
-        $this->assertEquals(107.1,$result);
+        $this->assertEquals(79.60000000000001,$result);
     }
 
     public function tearDown(): void