lcly-data-admin/app/Admin/Controllers/AgriculturalBaseController.php

103 lines
3.3 KiB
PHP

<?php
namespace App\Admin\Controllers;
use App\Enums\BaseType;
use App\Models\AgriculturalBase;
use Dcat\Admin\Admin;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Http\Controllers\AdminController;
class AgriculturalBaseController extends AdminController
{
/**
* Make a grid builder.
*
* @return Grid
*/
protected function grid()
{
$builder = AgriculturalBase::with('parent');
return Grid::make($builder, function (Grid $grid) {
$grid->model()->where('type', BaseType::Base);
// $grid->column('id')->sortable();
$grid->column('name');
$grid->column('parent.name', '所属镇街')->label();
$grid->column('person');
$grid->column('address');
$grid->column('address_lat');
$grid->column('address_lng');
// $grid->column('description');
// $grid->column('map');
$grid->column('areas');
$grid->column('workforce');
$grid->column('created_at')->sortable();
$grid->model()->orderBy('created_at', 'desc');
$grid->showCreateButton(! config('admin.permission.enable') || Admin::user()->can('dcat.admin.agricultural_bases.create'));
$grid->showQuickEditButton(! config('admin.permission.enable') || Admin::user()->can('dcat.admin.agricultural_bases.edit'));
$grid->showDeleteButton(! config('admin.permission.enable') || Admin::user()->can('dcat.admin.agricultural_bases.destroy'));
$grid->filter(function (Grid\Filter $filter) {
$filter->like('name')->width(3);
});
});
}
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
return Form::make(new AgriculturalBase(), function (Form $form) {
$model = $form->model();
$form->display('id');
$form->select('parent_id', '所属镇街')->options(AgriculturalBase::town()->get()->pluck('name', 'id'))->required();
$form->text('name');
$form->text('person');
$form->number('areas');
$form->number('workforce');
$form->textarea('description');
$form->amap('position')
->key(config('amap.js.key'))
->code(config('amap.js.secret'))
->address(data_get($model, 'address'))
->lng(data_get($model, 'address_lng', 105.287612))
->lat(data_get($model, 'address_lat', 29.339476));
$form->hidden('address');
$form->hidden('address_lng');
$form->hidden('address_lat');
$form->hidden('type')->value(BaseType::Base->value);
$form->saving(function ($form) {
$position = json_decode($form->position);
$form->address = $position->address ?? '';
$form->address_lng = $position->lng ?? '';
$form->address_lat = $position->lat ?? '';
$form->deleteInput('position');
});
$form->display('created_at');
$form->display('updated_at');
});
}
public function destroy($id)
{
$agriculturalBasic = AgriculturalBase::findOrFail($id);
$agriculturalBasic->crops()->sync([]);
return parent::destroy($id);
}
}