170 lines
6.0 KiB
PHP
170 lines
6.0 KiB
PHP
<?php
|
|
|
|
namespace App\Admin\Controllers;
|
|
|
|
use App\Models\{Guess, GuessOption, UserGuess};
|
|
use Dcat\Admin\Form;
|
|
use Dcat\Admin\Grid;
|
|
use Dcat\Admin\Show;
|
|
use Dcat\Admin\Http\Controllers\AdminController;
|
|
use Carbon\Carbon;
|
|
use App\Admin\Renderable\GuessOptionsTable;
|
|
use App\Admin\Actions\Grid\GuessAnswer;
|
|
|
|
class GuessController extends AdminController
|
|
{
|
|
/**
|
|
* Make a grid builder.
|
|
*
|
|
* @return Grid
|
|
*/
|
|
protected function grid()
|
|
{
|
|
return Grid::make(new Guess(), function (Grid $grid) {
|
|
|
|
$grid->model()->orderBy('created_at', 'desc');
|
|
|
|
$grid->disableRefreshButton();
|
|
$grid->disableRowSelector();
|
|
|
|
$grid->column('id');
|
|
$grid->column('name');
|
|
$grid->column('image', '分享图')->image('', 100);
|
|
$grid->column('guess_options', '选项统计')->display('选项列表')->modal(GuessOptionsTable::make());
|
|
// $grid->column('description');
|
|
$grid->column('start_time');
|
|
$grid->column('end_time');
|
|
$grid->column('status')->if(function ($column) {
|
|
return $this->prize_state === Guess::PRIZE_EXIST && $this->status === Guess::STATUS_DISABLE;
|
|
})->display(function () {
|
|
return '已结束';
|
|
})->else()->switch();
|
|
|
|
$grid->filter(function (Grid\Filter $filter) {
|
|
$filter->panel();
|
|
$filter->like('name')->width(3);
|
|
});
|
|
|
|
$grid->actions(function (Grid\Displayers\Actions $actions) {
|
|
// if ($actions->row->status === Guess::PRIZE_UNEXIST) {
|
|
$actions->append(new GuessAnswer());
|
|
// $actions->append(new GuessAnswer());
|
|
// }
|
|
});
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Make a show builder.
|
|
*
|
|
* @param mixed $id
|
|
*
|
|
* @return Show
|
|
*/
|
|
protected function detail($id)
|
|
{
|
|
return Show::make($id, new Guess(), function (Show $show) {
|
|
$show->field('id');
|
|
$show->field('name');
|
|
// $show->field('banner_kv', '活动背景图')->image('', 100);
|
|
$show->field('image', '分享图')->image('', 100);
|
|
$show->field('description')->unescape();
|
|
$show->field('num');
|
|
$show->field('start_time');
|
|
$show->field('end_time');
|
|
$show->field('status')->as(function ($value) {
|
|
return $value ? '打开' : '关闭';
|
|
});
|
|
$show->field('created_at');
|
|
|
|
$show->options(function ($model) {
|
|
$grid = new Grid(new GuessOption());
|
|
|
|
$grid->disableRefreshButton();
|
|
$grid->disableRowSelector();
|
|
// $grid->disableCreateButton();
|
|
// $grid->disableActions();
|
|
|
|
$grid->setResource('guess-option');
|
|
$grid->model()->where('guess_id', $model->id);
|
|
$grid->id();
|
|
$grid->column('option_name', __('guess-option.fields.option_name'));
|
|
$grid->column('image')->image('', 100);
|
|
$grid->column('correct_state', __('guess-option.fields.correct_state'))
|
|
->using(GuessOption::$correctStateMap)->dot(GuessOption::$correctIcoMap);
|
|
|
|
return $grid;
|
|
});
|
|
|
|
// $show->users(function ($model) {
|
|
// $grid = new Grid(UserGuess::with(['user', 'options']));
|
|
|
|
// $grid->disableRefreshButton();
|
|
// $grid->disableRowSelector();
|
|
// $grid->disableCreateButton();
|
|
// $grid->disableActions();
|
|
|
|
// $grid->model()->where('guess_id', $model->id);
|
|
// $grid->column('id');
|
|
// $grid->column('user.phone', '用户');
|
|
// $grid->column('answers', '答案')->display(function () {
|
|
// return $this->options->implode('option_name', ', ');
|
|
// });
|
|
// $grid->column('correct_state', '是否正确')->using([
|
|
// 0 => '不正确',
|
|
// 1 => '正确',
|
|
// 2 => '未知'
|
|
// ])->dot([
|
|
// 0 => 'danger',
|
|
// 1 => 'success',
|
|
// 2 => 'warning',
|
|
// ]);
|
|
// $grid->column('created_at', '参与时间');
|
|
|
|
// return $grid;
|
|
// });
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Make a form builder.
|
|
*
|
|
* @return Form
|
|
*/
|
|
protected function form()
|
|
{
|
|
return Form::make(Guess::with(['options']), function (Form $form) {
|
|
$form->display('id');
|
|
$form->text('name')->required();
|
|
$form->datetimeRange('start_time', 'end_time', admin_trans('guess.fields.time'))->required();
|
|
// $form->text('description');
|
|
// $form->image('banner_kv', '活动背景图')
|
|
// ->accept('jpg,png,gif,jpeg', 'image/*')
|
|
// ->move('milk-tea/guess-options/'.Carbon::now()->toDateString())
|
|
// ->saveFullUrl()
|
|
// ->removable()->required();
|
|
$form->image('image', '分享图')
|
|
->accept('jpg,png,gif,jpeg', 'image/*')
|
|
->move('milk-tea/guess-options/'.Carbon::now()->toDateString())
|
|
->saveFullUrl()
|
|
->removable();
|
|
|
|
$form->editor('description');
|
|
$form->number('num')->default(1)->min(1)->help('用户最多可选择几项');
|
|
$form->hidden('status')->default(Guess::STATUS_DISABLE);
|
|
|
|
// if ($form->isCreating()) {
|
|
// $form->hasMany('options', function (Form\NestedForm $form) {
|
|
// $form->text('option_name', __('guess-option.fields.option_name'));
|
|
// });
|
|
// }
|
|
|
|
// $form->saving(function (Form $form) {
|
|
// if (!$form->image) {
|
|
// $form->deleteInput('image');
|
|
// }
|
|
// });
|
|
});
|
|
}
|
|
}
|