<?php namespace App\Admin\Actions\User; use App\Admin\Service\UserService; use App\Models\Order as OrderModel; use App\Models\User; use Dcat\Admin\Grid\BatchAction; use Dcat\Admin\Grid\Tools\AbstractTool; use Illuminate\Http\Request; use Dcat\Admin\Grid\RowAction; class UserStatusAction extends RowAction { /** * 按钮样式定义,默认 btn btn-white waves-effect * * @var string */ protected $style = 'btn btn-white waves-effect'; /** * 按钮文本 * * @return string|void */ public function title() { $buttonName = "启用"; if ($this->row->status == User::STATUS_NORMAL) { $buttonName = "禁用"; } return $buttonName; } public function html() { $class = $this->getElementClass(); $color = "btn btn-primary btn-sm btn-mini"; if ($this->row->status == User::STATUS_NORMAL) { $color = "btn btn-danger btn-sm btn-mini"; } // 获取当前行数据ID $id = $this->getKey(); $this->setHtmlAttribute([ 'data-id' => $id, "class" => "{$class} {$color}", ]); return parent::html(); } /** * 确认弹窗,如果不需要则返回空即可 * * @return array|string|void */ public function confirm() { $buttonName = "启用"; if ($this->row->status == User::STATUS_NORMAL) { $buttonName = "禁用"; } return ["是否确认 {$buttonName} ?"]; } /** * 处理请求 * 如果你的类中包含了此方法,则点击按钮后会自动向后端发起ajax请求,并且会通过此方法处理请求逻辑 * * @param Request $request */ public function handle(Request $request) { // 你的代码逻辑 $id = $this->getKey(); // 获取 parameters 方法传递的参数 $rowData = $request->get('rowData'); try { UserService::updateUserStatus($id, $rowData['status'] == User::STATUS_NORMAL ? User::STATUS_DISABLE : User::STATUS_NORMAL); } catch (\Throwable $e) { return $this->response()->error($e->getMessage()); } return $this->response()->success('操作成功')->refresh(); } /** * 设置请求参数 * * @return array|void */ public function parameters() { return [ 'rowData' => $this->row, ]; } }