142 lines
4.9 KiB
PHP
142 lines
4.9 KiB
PHP
<?php
|
|
|
|
namespace App\Admin\Controllers;
|
|
|
|
use App\Models\AgriculturalBase;
|
|
use App\Models\Crop;
|
|
use App\Models\CropYield;
|
|
use Dcat\Admin\Admin;
|
|
use Dcat\Admin\Form;
|
|
use Dcat\Admin\Grid;
|
|
use Dcat\Admin\Http\Controllers\AdminController;
|
|
use Dcat\Admin\Show;
|
|
|
|
class CropYieldController extends AdminController
|
|
{
|
|
/**
|
|
* Make a grid builder.
|
|
*
|
|
* @return Grid
|
|
*/
|
|
protected function grid()
|
|
{
|
|
$builder = CropYield::with(['base', 'crop', 'createdBy', 'updatedBy']);
|
|
|
|
return Grid::make($builder, function (Grid $grid) {
|
|
$grid->column('id')->sortable();
|
|
$grid->column('base.name', '区域')->label();
|
|
$grid->column('crop.name', '农作物');
|
|
$grid->column('time_year')->append('年');
|
|
$grid->column('quarter')->display(function ($v) {
|
|
return '第'.$v.'季度';
|
|
});
|
|
$grid->column('yield')->display(function ($v) {
|
|
return $v.$this->crop?->unit ?? '';
|
|
});
|
|
$grid->column('cultivated');
|
|
$grid->column('output');
|
|
$grid->column('createdBy.name', '录入人');
|
|
$grid->column('updatedBy.name', '更新人');
|
|
$grid->column('created_at')->sortable();
|
|
|
|
$grid->model()->orderBy('time_year', 'desc')->orderBy('quarter', 'asc');
|
|
|
|
$grid->showCreateButton(! config('admin.permission.enable') || Admin::user()->can('dcat.admin.crop_yields.create'));
|
|
$grid->showQuickEditButton(! config('admin.permission.enable') || Admin::user()->can('dcat.admin.crop_yields.edit'));
|
|
$grid->showDeleteButton(! config('admin.permission.enable') || Admin::user()->can('dcat.admin.crop_yields.destroy'));
|
|
|
|
$grid->filter(function (Grid\Filter $filter) {
|
|
$filter->equal('base_id')->select(AgriculturalBase::all()->pluck('name', 'name'))->width(3);
|
|
$filter->equal('crop_id')->select(Crop::where('is_end', 1)->pluck('name', 'id'))->width(3);
|
|
});
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Make a show builder.
|
|
*
|
|
* @param mixed $id
|
|
* @return Show
|
|
*/
|
|
protected function detail($id)
|
|
{
|
|
return Show::make($id, new CropYield(), function (Show $show) {
|
|
$show->field('id');
|
|
$show->field('base_id');
|
|
$show->field('crop_id');
|
|
$show->field('time_year');
|
|
$show->field('quarter');
|
|
$show->field('yield');
|
|
$show->field('cultivated');
|
|
$show->field('output');
|
|
$show->field('created_by');
|
|
$show->field('updated_by');
|
|
$show->field('created_at');
|
|
$show->field('updated_at');
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Make a form builder.
|
|
*
|
|
* @return Form
|
|
*/
|
|
protected function form()
|
|
{
|
|
$builder = CropYield::with(['base', 'crop']);
|
|
|
|
return Form::make($builder, function (Form $form) {
|
|
$model = $form->model();
|
|
|
|
$form->display('id');
|
|
$form->select('base_id')->options(AgriculturalBase::all()->pluck('name', 'id'));
|
|
$form->select('crop_id')->options(Crop::where('is_end', 1)->pluck('name', 'id'));
|
|
|
|
$form->datetime('time_year')->format('YYYY')->required();
|
|
$form->radio('quarter')->options([
|
|
1 => '1季度', 2 => '2季度', 3 => '3季度', 4 => '4季度',
|
|
])->default(1)->required();
|
|
$form->currency('yield')->symbol($model->crop?->unit ?? '斤');
|
|
|
|
Admin::script(
|
|
<<<'JS'
|
|
let crop;
|
|
$('body').on('select2:select', 'select.field_crop_id', function(e){
|
|
let url_path = '/admin/api/crops/' + e.params.data.id
|
|
$.ajax({
|
|
type: 'get',
|
|
dataType: 'json',
|
|
url: url_path,
|
|
success: function(result){
|
|
crop = result.data;
|
|
$('input[name=yield]').parent().find('span.input-group-text').text(crop.unit);
|
|
}
|
|
});
|
|
});
|
|
JS
|
|
);
|
|
$form->cropExtends('extends', '扩展信息')->crop($model->crop)->listen('crop_id');
|
|
|
|
$form->currency('cultivated')->symbol('亩')->default(0)->required()->saving(function ($v) {
|
|
if ($v === null) {
|
|
$v = 0;
|
|
}
|
|
|
|
return $v;
|
|
});
|
|
$form->currency('output')->symbol('元')->default(0)->required()->saving(function ($v) {
|
|
if ($v === null) {
|
|
$v = 0;
|
|
}
|
|
|
|
return $v;
|
|
});
|
|
// $form->text('created_by');
|
|
// $form->text('updated_by');
|
|
|
|
$form->display('created_at');
|
|
$form->display('updated_at');
|
|
});
|
|
}
|
|
}
|