diff --git a/app/Http/Controllers/Admin/OrdersController.php b/app/Http/Controllers/Admin/OrdersController.php index 78d3d01..fbf29f0 100755 --- a/app/Http/Controllers/Admin/OrdersController.php +++ b/app/Http/Controllers/Admin/OrdersController.php @@ -8,9 +8,11 @@ namespace App\Http\Controllers\Admin; +use App\Models\OrderItems; use App\Models\Orders; use App\Models\Project; use Illuminate\Http\Request; +use Illuminate\Support\Facades\DB; class OrdersController extends CommonController { @@ -58,4 +60,47 @@ class OrdersController extends CommonController return view($this->bladePath . ".index", compact("data", "project_id", "month", "project")); } + + public function changeItem(Request $request) + { + $order_item = OrderItems::with("order")->find($request->item_id); + if ($order_item->paid_at && $request->total != $order_item->total) { + return $this->error("子订单已扣款,不支持后台更改价格,请通过其他方法进行更改"); + } + if ($order_item->total == 0 && $request->total != $order_item->total) { + return $this->error("未服务子订单不支持后台更改价格,请通过其他方法进行更改"); + } + + DB::beginTransaction(); + try { + $order_item->update([ + "total" => $request->total + ]); + if ($request->factor_item) { + $factors = json_decode($order_item->factors, true); + foreach ($factors as &$factor) { + if (!$factor["used_for_fee"]) continue; + foreach ($request->factor_item as $k => $v) { + if ($k != $factor["factor_item_id"]) continue; + $factor["fee_percent"] = $v["fee_percent"]; + $factor["fee"] = $v["fee"]; + } + } + $order_item->update([ + "factors" => json_encode($factors) + ]); + } + DB::commit(); + return $this->success("处理成功!"); + } catch (\Exception $exception) { + DB::rollBack(); + return $this->error($exception->getMessage()); + } + } + + public function getItem($id) + { + $order_item = OrderItems::with("order")->find($id); + return $this->ajaxResponse($order_item); + } } diff --git a/resources/views/admin/orders/index.blade.php b/resources/views/admin/orders/index.blade.php index 15fe436..584d187 100755 --- a/resources/views/admin/orders/index.blade.php +++ b/resources/views/admin/orders/index.blade.php @@ -59,7 +59,7 @@ - + @@ -68,18 +68,24 @@ + @foreach($row->orderItems as $item) - + - + + @endforeach @@ -96,6 +102,40 @@ + + @include("public._delete") @endsection @@ -106,5 +146,75 @@ $(element).closest("tr").toggleClass("bg-warning"); $(element).find("i").toggleClass("mdi-arrow-up") } + + function changeItem(element) { + var item_id = $(element).closest("tr").attr("data-id"); + var url = "{{ url("admin/orders/get-item") }}/" + item_id; + $.get(url, function (res) { + $("#modal-box").modal("show"); + $("#modal-box form input[name=item_id]").val(item_id); + $("#modal-box form input[name=serial]").val(res.order.serial); + $("#modal-box form input[name=service_date]").val(res.service_date); + $("#modal-box form input[name=total]").val(res.total); + $("#factor-box").html(""); + try { + var factors = JSON.parse(res.factors); + for (var i = 0; i < factors.length; i++) { + var factor = factors[i]; + if (!factor.used_for_fee) continue; + var html = ""; + html += '
' + + ' ' + + ' ' + + '
'; + html += '
' + + ' ' + + ' ' + + '
'; + html += '
' + + ' ' + + ' ' + + '
'; + html += '
' + + ' ' + + ' ' + + '
'; + $("#factor-box").html(html); + + calculateSalary(); + } + } catch (e) { + console.log(e); + } + }); + } + + function calculateSalary() { + if (!$("#modal-box form").find("input[name=salary]").length) return; + var total = $("#modal-box form input[name=total]").val(); + var fee_percent = $("#modal-box form input[name$='[fee_percent]']").val(); + var fee = $("#modal-box form input[name$='[fee]']").val(); + var salary = total - (fee_percent * total / 100 + parseFloat(fee)); + $("#modal-box form").find("input[name=salary]").val(salary); + } + + function saveItemChange() { + var url = "{{ url("admin/orders/change-item") }}"; + var data = $("#modal-box form").serialize(); + $.post(url, data, function (res) { + if (!res.status) { + alertError(res.msg); + return false; + } + updateItem(); + alertSuccess(res.msg); + }); + } + + function updateItem() { + var total = $("#modal-box form input[name=total]").val(); + var item_id = $("#modal-box form input[name=item_id]").val(); + $("#data-table tbody tr[data-item-id='" + item_id + "']").find("td[data-field=total]").html(total); + } @endpush diff --git a/routes/web.php b/routes/web.php index ff87bae..7a8e163 100644 --- a/routes/web.php +++ b/routes/web.php @@ -76,6 +76,9 @@ Route::group(["namespace" => "Admin", "prefix" => "admin"], function () { Route::post("manager/delete", 'ManagerController@delete'); Route::get("orders", 'OrdersController@index'); + Route::post("orders/change-item", 'OrdersController@changeItem'); + Route::get("orders/get-item/{item_id}", 'OrdersController@getItem'); + Route::get("statistics/overview", 'StatisticsController@overview'); Route::get("statistics/salary", 'StatisticsController@salary'); Route::get("statistics/finance", 'StatisticsController@finance');
护工 单价 扣款时间操作
{{ $item->building->name }}-{{ $item->room->name }} -{{ $item->bed->name }}床 {{ $item->service_date }} {{ $item->paramedic ? $item->paramedic->name : "" }}{{ $item->total }}{{ $item->total }} {{ $item->paid_at }} + +