123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- <?php
- namespace App\Admin\Controllers;
- use App\Models\Admin;
- use App\Models\Device;
- use App\Models\Role;
- use App\Models\Shop;
- use App\Repositories\Enums\BoxStatusEnum;
- use App\Repositories\Enums\DeviceLineEnum;
- use App\Repositories\Enums\DeviceLuTypeEnum;
- use App\Repositories\Enums\DeviceTypeEnum;
- use App\Repositories\Enums\DeviceUseStatusEnum;
- use App\Repositories\Enums\DeviceWaterLevelEnum;
- use App\Repositories\Enums\ModelStatusEnum;
- use Dcat\Admin\Actions\Response;
- use Dcat\Admin\Form;
- use Dcat\Admin\Grid;
- use Dcat\Admin\Http\Controllers\AdminController;
- use Dcat\Admin\Widgets\Box;
- use Illuminate\Http\Request;
- class DeviceController extends AdminController
- {
- protected $title = '设备管理';
- protected function grid()
- {
- return Grid::make(new Device(), function (Grid $grid) {
- // 这里的字段会自动使用翻译文件
- $grid->model()->with(['shop'])->orderByDesc('id');
- $grid->column('id')->sortable();
- $grid->column('type', '设备类型')->using(DeviceTypeEnum::toSelectArray());
- $grid->column('shop.name', '站点名');
- $grid->column('no', '设备编号');
- $grid->column('temperature', '温度');
- $grid->column('water_level_warning', '水位状态')->using(DeviceWaterLevelEnum::toSelectArray());
- $grid->column('water_quality', '水质');
- $grid->column('a', 'A路状态')->using(DeviceLuTypeEnum::toSelectArray());
- $grid->column('b', 'B路状态')->using(DeviceLuTypeEnum::toSelectArray());
- $grid->column('box_status', '设备状态')->using(BoxStatusEnum::toSelectArray())->label();
- $grid->column('last_update_time', '最后更新时间');
- $grid->column('is_use', '是否可用')->using(DeviceUseStatusEnum::toSelectArray());
- $grid->column('is_line', '是否在线')->using(DeviceLineEnum::toSelectArray());
- $grid->column('status', '投放状态')->using(ModelStatusEnum::toSelectArray());
- $grid->actions(function (Grid\Displayers\Actions $action) {
- $action->disableView();
- $id = $action->getKey();
- $action->append('<a href="' . route('dcat.admin.device.reset', ['id' => $id]) . '"><i class="feather icon-rotate-ccw"></i></a>');
- });
- $grid->filter(function (Grid\Filter $filter) {
- $filter->equal('id');
- $filter->like('box_no', '设备编号');
- $filter->in('shop_id', '站点')->multipleSelect(Shop::query()->where('status', ModelStatusEnum::OK)->pluck('name', 'id'));
- $filter->in('box_status', '设备状态')->multipleSelect(BoxStatusEnum::toSelectArray());
- $filter->equal('is_use', '是否可用')->select(DeviceUseStatusEnum::toSelectArray());
- $filter->equal('is_line', '是否在线')->select(DeviceLineEnum::toSelectArray());
- $filter->equal('status', '投放状态')->select(ModelStatusEnum::toSelectArray());
- });
- });
- }
- protected function form()
- {
- return Form::make(new Device(), function (Form $form) {
- $form->tab('基本信息', function (Form $form) {
- $form->text('no', '设备编号')->rules('required')->help('15位数字');
- $form->text('box_no', '硬件编号')->rules('required')->help('15位数字');
- $form->select('type', '设备类型')->options(DeviceTypeEnum::toSelectArray())->rules('required');
- })->tab('绑定站点', function (Form $form) {
- $form->select('shop_id', '站点')->options(Shop::query()->pluck('name', 'id'))->saving(function ($val) {
- if (empty($val)) return 0;
- return $val;
- });
- $form->rate('merchant_ratio', '商户分成比');
- $form->select('status', '投放状态')->options(ModelStatusEnum::toSelectArray())->default(ModelStatusEnum::OK);
- })->tab('收益绑定', function (Form $form) {
- $form->select('agency_id', '代理人')->options(Role::byRolesSelectOptions(Role::Agency));
- $form->rate('agency_ratio', '代理分成比');
- $form->select('invest_id', '投资人')->options(Role::byRolesSelectOptions(Role::Invest));
- $form->rate('invest_ratio', '投资分成比');
- });
- });
- }
- /**
- * 重置设备
- * @param Request $request
- * Author: Mead
- */
- public function reset(Request $request)
- {
- $id = $request->get('id');
- $device = Device::query()->find($id);
- if (!$device) {
- admin_toastr('找不到该设备!', 'error');
- return redirect()->back();
- }
- if ($device->is_line == DeviceLineEnum::NO) {
- $device->a = DeviceLuTypeEnum::FREE;
- $device->b = DeviceLuTypeEnum::FREE;
- } else {
- switch ((int)$device->box_status) {
- case BoxStatusEnum::WAIT:
- $device->a = DeviceLuTypeEnum::FREE;
- $device->b = DeviceLuTypeEnum::FREE;
- break;
- case BoxStatusEnum::A_WORK:
- case BoxStatusEnum::A_PAUSE_B_WAIT:
- $device->a = DeviceLuTypeEnum::USING;
- $device->b = DeviceLuTypeEnum::FREE;
- break;
- case BoxStatusEnum::AB_WORK:
- case BoxStatusEnum::A_PAUSE_B_WORK:
- case BoxStatusEnum::AB_PAUSE:
- case BoxStatusEnum::A_WORK_B_PAUSE:
- $device->a = DeviceLuTypeEnum::USING;
- $device->b = DeviceLuTypeEnum::USING;
- break;
- case BoxStatusEnum::B_WORK:
- case BoxStatusEnum::A_WAIT_B_PAUSE:
- $device->a = DeviceLuTypeEnum::FREE;
- $device->b = DeviceLuTypeEnum::USING;
- break;
- }
- }
- $device->save();
- return redirect()->back();
- }
- }
|