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

139 lines
4.9 KiB
PHP

<?php
namespace App\Admin\Controllers;
use App\Models\Crop;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Show;
use Dcat\Admin\Admin;
use App\Models\CropYield;
use App\Models\AgriculturalBase;
use Dcat\Admin\Http\Controllers\AdminController;
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');
});
}
}