diff --git a/app/AdminAgent/Controllers/OrderController.php b/app/AdminAgent/Controllers/OrderController.php
index 3d000a2..01632e2 100644
--- a/app/AdminAgent/Controllers/OrderController.php
+++ b/app/AdminAgent/Controllers/OrderController.php
@@ -3,19 +3,16 @@
namespace App\AdminAgent\Controllers;
use App\AdminAgent\Extensions\Grid\AuditRefund;
-use App\AdminAgent\Extensions\Grid\ChangeOrderStatus;
use App\AdminAgent\Repositories\Order;
use App\Common\OrderStatus;
use App\Common\PayType;
use App\Models\OrderProductItem;
-use App\Models\Supplier;
use Dcat\Admin\Admin;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Grid\Filter\AbstractFilter;
use Dcat\Admin\Show;
use Dcat\Admin\Http\Controllers\AdminController;
-use Dcat\Admin\Widgets\Dropdown;
use Dcat\Admin\Widgets\Table;
use Illuminate\Support\Arr;
use Illuminate\Support\Facades\Storage;
@@ -101,10 +98,6 @@ class OrderController extends AdminController
} else if ($this->status == OrderStatus::REFUSED_REFUND) {
$column->append('已拒绝退款');
}
- })
- ->if(fn() => $this->status == OrderStatus::OFFLINE_UNPAID)
- ->then(function (Grid\Column $column) {
- return $column->action(new ChangeOrderStatus);
});
$grid->column('pay_type')->using(PayType::array());
@@ -221,9 +214,6 @@ class OrderController extends AdminController
if ($form->status !== null) {
if (in_array($form->status, [OrderStatus::REFUNDED, OrderStatus::REFUSED_REFUND])) {
return $form->response()->error('请通过订单列表的”通过“和”拒绝“按钮来审核退款');
- } else if ($form->status == OrderStatus::OFFLINE_PAID) {
- $form->hidden('timeout');
- $form->timeout = null; //清空超时时间
} else {
return $form->response()->error('操作禁止');
}
diff --git a/app/AdminSupplier/Controllers/OrderController.php b/app/AdminSupplier/Controllers/OrderController.php
index 88e7c8d..7d01749 100644
--- a/app/AdminSupplier/Controllers/OrderController.php
+++ b/app/AdminSupplier/Controllers/OrderController.php
@@ -2,6 +2,7 @@
namespace App\AdminSupplier\Controllers;
+use App\AdminSupplier\Extensions\Grid\ChangeOrderStatus;
use App\AdminSupplier\Repositories\Order;
use App\Common\OrderStatus;
use App\Common\PayType;
@@ -59,7 +60,12 @@ class OrderController extends AdminController
$grid->column('price');
// $grid->column('refund_info');
$grid->column('pay_type')->using(PayType::array());
- $grid->column('status', '订单状态')->using(OrderStatus::array());
+ $grid->column('status', '订单状态')
+ ->using(OrderStatus::array())
+ ->if(fn() => $this->status == OrderStatus::OFFLINE_UNPAID)
+ ->then(function (Grid\Column $column) {
+ return $column->action(new ChangeOrderStatus);
+ });
$grid->column('paid_at');
$grid->column('created_at');
diff --git a/app/AdminSupplier/Extensions/Grid/ChangeOrderStatus.php b/app/AdminSupplier/Extensions/Grid/ChangeOrderStatus.php
new file mode 100644
index 0000000..fd63cb8
--- /dev/null
+++ b/app/AdminSupplier/Extensions/Grid/ChangeOrderStatus.php
@@ -0,0 +1,50 @@
+appendHtmlAttribute('class', 'btn btn-sm btn-success');
+ $this->defaultHtmlAttribute('href', 'javascript:;');
+
+ return "formatHtmlAttributes()}>{$this->title}";
+ }
+
+ public function handle()
+ {
+ try {
+ $order = Order::query()->whereHas('orderProductItem', function ($query) {
+ $query->where(['supplier_id' => Admin::user()->id, 'order_id' => $this->getKey()]);
+ })->firstWhere(['id' => $this->getKey(), 'status' => OrderStatus::OFFLINE_UNPAID]);
+ if (!$order) {
+ return $this->response()->error("订单不存在或已处理过了")->refresh();
+ }
+ $order->status = OrderStatus::OFFLINE_PAID;
+ $order->verify_code = uniqid(); //生成核销码
+ $order->save();
+
+ return $this->response()->success("操作成功,已设置为“线下已付款”")->refresh();
+ } catch (\Exception $e) {
+ return $this->response()->error($e->getMessage());
+ }
+ }
+
+ public function confirm()
+ {
+ return ['确定要设置为已付款吗?', ''];
+ }
+}