Przeglądaj źródła

客户管理-用仓占用-面积与非面积计算差异

Zhouzhendong 5 lat temu
rodzic
commit
d089ce004b

+ 13 - 8
app/Http/Controllers/CustomerController.php

@@ -230,13 +230,17 @@ class CustomerController extends Controller
     {
         if(!Gate::allows('客户管理-项目-面积-编辑')){ return ["success"=>false,'data'=>"无权操作!"];  }
         if (!($request->id ?? false) || !($request->area ?? false)) return ["success"=>false,'data'=>"传递错误!"];
-        $values = $request->area ?? null;
-        if (!$values)return ["success"=>true,"data"=>$values];
-        foreach ($values as $column=>$value){
-            if ($value && (!is_numeric($value) || $value<0))return ["success"=>false,'data'=>$column."非数字或小于0!"];
-        }
-        $accounting_area = ((int)$values["area_on_tray"]*2.5) + ((int)$values["area_on_half_tray"]*1.8) + ((int)$values["area_on_flat"]*1.3);
-        $values["accounting_area"] = $accounting_area;
+
+        if (!request("accounting_area")){
+            $values = $request->area ?? null;
+            if (!$values)return ["success"=>true,"data"=>$values];
+            foreach ($values as $column=>$value){
+                if ($value && (!is_numeric($value) || $value<0))return ["success"=>false,'data'=>$column."非数字或小于0!"];
+            }
+            $accounting_area = ((int)$values["area_on_tray"]*2.5) + ((int)$values["area_on_half_tray"]*1.8) + ((int)$values["area_on_flat"]*1.3);
+            $values["accounting_area"] = $accounting_area;
+        }else $values = ["accounting_area"=>request("accounting_area")];
+
         $row = app('OwnerAreaReportService')->update(["id"=>$request->id],$values);
         if ($row==1){
             LogService::log(__METHOD__,"客户管理-修改面积",json_encode($request->input()));
@@ -480,7 +484,7 @@ class CustomerController extends Controller
         $owners = $service->get(["id"=>$ids],["ownerStoragePriceModels"],false,true);
         app("OwnerAreaReportService")->notExistToInsert($owners);
 
-        $reports = OwnerAreaReport::query()
+        $reports = OwnerAreaReport::query()->with(["owner","ownerStoragePriceModel.unit"])
             ->where("counting_month",">=",date("Y-m")."-01")
             ->whereIn("owner_id",array_column($owners->toArray(),"id"))->get();
         $result = [];
@@ -497,6 +501,7 @@ class CustomerController extends Controller
                 "accountingArea" => $report->accounting_area,
                 "status" => $report->status,
                 "updatedAt" => $report->updated_at,
+                "unitName"  => $report->ownerStoragePriceModel ? ($report->ownerStoragePriceModel->unit ? $report->ownerStoragePriceModel->unit->name : '') : '',
                 "ownerStoragePriceModel"=> $report->ownerStoragePriceModel ? $report->ownerStoragePriceModel->using_type : '' ,
             ];
         }

+ 16 - 5
resources/views/customer/project/area.blade.php

@@ -53,18 +53,23 @@
                     <td>@{{ area.ownerStoragePriceModel }}</td>
                     <td>@{{ area.unitName }}</td>
                     <td>
-                        <label><input :readonly="editIndex==i ? false : true" @change="thisArea.area_on_tray = $event.target.value"
+                        <label><input :readonly="editIndex==i && area.unitName=='m²' ? false : true" @change="thisArea.area_on_tray = $event.target.value"
                                       type="number" min="0" class="form-control form-control-sm" :value="area.areaOnTray"></label>
                     </td>
                     <td>
-                        <label><input :readonly="editIndex==i ? false : true" @change="thisArea.area_on_half_tray = $event.target.value"
+                        <label><input :readonly="editIndex==i && area.unitName=='m²' ? false : true" @change="thisArea.area_on_half_tray = $event.target.value"
                                       type="number" min="0" class="form-control form-control-sm" :value=area.areaOnHalfTray></label>
                     </td>
                     <td>
-                        <label><input :readonly="editIndex==i ? false : true" @change="thisArea.area_on_flat = $event.target.value"
+                        <label><input :readonly="editIndex==i && area.unitName=='m²' ? false : true" @change="thisArea.area_on_flat = $event.target.value"
                                       type="number" min="0" class="form-control form-control-sm" :value="area.areaOnFlat"></label>
                     </td>
-                    <td>@{{ area.accountingArea }}<label v-if="area.accountingArea"> / @{{ area.unitName }}</label></td>
+                    <td>
+                        <label class="form-inline"><input :readonly="editIndex==i && area.unitName!='m²' ? false : true" @change="thisArea.accounting_area = $event.target.value"
+                                      type="number" min="0" class="form-control form-control-sm" :value="area.accountingArea">
+                            <label> / @{{ area.unitName }}</label>
+                        </label>
+                    </td>
                 </tr>
             </table>
             {{$areas->appends($params)->links()}}
@@ -215,6 +220,7 @@
                     this.thisArea.area_on_tray = area.areaOnTray;
                     this.thisArea.area_on_half_tray = area.areaOnHalfTray;
                     this.thisArea.area_on_flat = area.areaOnFlat;
+                    this.thisArea.accounting_area = area.accountingArea;
                 },
                 submitArea(){
                     window.tempTip.confirm("确认要提交该面积的更新吗?",()=>{
@@ -264,7 +270,12 @@
                     let url="{{url('customer/project/createAreaReport')}}";
                     let params = {val:val};
                     window.tempTip.postBasicRequest(url,params,res=>{
-                        this.areas = res.concat(this.areas);
+                        res.forEach(data =>{
+                            if (this.areas.every(area=>{
+                                if (area.id == data.id)return false;
+                                else return true;
+                            }))this.areas.unshift(data);
+                        });
                         dom.selectpicker('val',[]);
                         return "已生成报表";
                     },true)