generated from liutk/owl-admin-base
添加竞猜场次管理
parent
0d322304ac
commit
223431204a
|
|
@ -6,10 +6,13 @@ use Slowlyo\OwlAdmin\Admin;
|
|||
use Slowlyo\OwlAdmin\Renderers\Page;
|
||||
use Slowlyo\OwlAdmin\Renderers\Form;
|
||||
use Slowlyo\OwlAdmin\Renderers\Operation;
|
||||
use Slowlyo\OwlAdmin\Renderers\Dialog;
|
||||
use Slowlyo\OwlAdmin\Renderers\DialogAction;
|
||||
use Slowlyo\OwlAdmin\Controllers\AdminController;
|
||||
use App\Services\Admin\ActivityService;
|
||||
use App\Traits\CustomActionTrait;
|
||||
use App\Admin\Components;
|
||||
use App\Enums\Score;
|
||||
|
||||
class ActivityController extends AdminController
|
||||
{
|
||||
|
|
@ -44,7 +47,7 @@ class ActivityController extends AdminController
|
|||
//发布活动-todo
|
||||
//结算活动(参与时间结束后,且最后一场竞猜结束,点击结算则发送奖品)-todo
|
||||
$this->rowShowTypeButton('drawer', 'xl'),//活动详情-todo-//竞猜赛程//活动奖品
|
||||
$this->rowEditTypeButton('drawer', 'xl'),
|
||||
$this->rowEditTypeButton('drawer', 'lg'),
|
||||
$this->rowDeleteButton()->visibleOn('${state === 0}'),
|
||||
])
|
||||
]);
|
||||
|
|
@ -57,15 +60,118 @@ class ActivityController extends AdminController
|
|||
return $this->baseForm()->body([
|
||||
amis()->TextControl('name', __('admin.activities.name'))->required(true),
|
||||
Components::make()->cropImageControl('cover', __('admin.activities.cover'), 1.5)->required(true),
|
||||
amis()->DateRangeControl('activity_at', __('admin.activities.activity_at'))->clearable(false)->format('YYYY-MM-DD HH:mm:ss')->required(true),
|
||||
amis()->DateRangeControl('start_at', __('admin.activities.activity_at'))->extraName('end_at')->clearable(false)->format('YYYY-MM-DD HH:mm:ss')->required(true),
|
||||
amis()->TextareaControl('rules', __('admin.activities.rules'))
|
||||
]);
|
||||
}
|
||||
|
||||
public function detail(): Form
|
||||
{
|
||||
return $this->baseDetail()->body([
|
||||
|
||||
public function detail()
|
||||
{
|
||||
$form = amisMake()->form()->title('')->panelClassName('border-r border-t-0 border-b-0 border-l-0')->mode('horizontal')
|
||||
->static(true)->actions([])
|
||||
->body([
|
||||
amis()->FieldSetControl()->title('活动信息')->body([
|
||||
amis()->TextControl('name', __('admin.activities.name'))->required(true),
|
||||
amis()->Image()->type('static-image')->name('cover')->label( __('admin.activities.cover'))->height('80px')->width('80px')->thumbMode('cover')->enlargeAble(true)->required(true),
|
||||
amis()->DateRangeControl('start_at', __('admin.activities.activity_at'))->extraName('end_at')->clearable(false)->format('YYYY-MM-DD HH:mm:ss')->required(true),
|
||||
amis()->TextareaControl('rules', __('admin.activities.rules'))
|
||||
]),
|
||||
]);
|
||||
|
||||
return amisMake()->Grid()->columns([
|
||||
amis()->Column()->body($form)->md(4),
|
||||
amis()->Column()->body([
|
||||
amisMake()->form()->title('')->panelClassName('border-0')->mode('horizontal')
|
||||
->static(true)->actions([])
|
||||
->body([
|
||||
amis()->FieldSetControl()->title('竞猜场次')->body([
|
||||
amisMake()->CRUDTable()->affixHeader(false)->perPage(10)->loadDataOnce(true)
|
||||
->headerToolbar([
|
||||
DialogAction::make()->className('absolute top-3 right-4')->label(__('admin.create'))->dialog(
|
||||
Dialog::make()->title('新增竞猜场次')->body([
|
||||
amisMake()->form()->title('')
|
||||
->api([
|
||||
'method'=>'post',
|
||||
'url'=>admin_url('activity_games'),
|
||||
"data" => [
|
||||
'activity_id'=>'${activity_id}',
|
||||
'name'=>'${game_name}',
|
||||
'home_field'=>'${home_field}',
|
||||
'home_logo'=>'${home_logo}',
|
||||
'away'=>'${away}',
|
||||
'away_logo'=>'${away_logo}',
|
||||
'game_at'=>'${game_at}',
|
||||
'mark'=>'${mark}',
|
||||
],
|
||||
])
|
||||
->body([
|
||||
amis()->TextControl('activity_id', '活动ID')->hidden(true)->value('${id}'),
|
||||
amis()->TextControl('game_name', __('admin.activity_games.name'))->required(true),
|
||||
amis()->GroupControl()->mode('horizontal')->body([
|
||||
amis()->TextControl('home_field', __('admin.activity_games.home_field'))->required(),
|
||||
Components::make()->cropImageControl('home_logo', __('admin.activity_games.home_logo'))->required(true),
|
||||
]),
|
||||
amis()->GroupControl()->mode('horizontal')->body([
|
||||
amis()->TextControl('away', __('admin.activity_games.away'))->required(),
|
||||
Components::make()->cropImageControl('away_logo', __('admin.activity_games.away_logo'))->required(true),
|
||||
]),
|
||||
amis()->DateTimeControl('game_at', __('admin.activity_games.game_at'))->format('YYYY-MM-DD HH:mm:ss')->required(true),
|
||||
Components::make()->sortControl('mark', __('admin.activity_games.mark'))->required(true),
|
||||
])
|
||||
])->size('lg')
|
||||
)
|
||||
])
|
||||
->title('')
|
||||
->api(admin_url('activity_games?_action=getData&state=1&activity_id=${id}'))
|
||||
->columns([
|
||||
amis()->TableColumn('name', __('admin.activity_games.name')),
|
||||
amis()->TableColumn('home_field', __('admin.activity_games.home_field')),
|
||||
amis()->TableColumn('home_logo', __('admin.activity_games.home_logo'))->type('image')->height('30px')->width('30px'),
|
||||
amis()->TableColumn('away', __('admin.activity_games.away')),
|
||||
amis()->TableColumn('away_logo', __('admin.activity_games.away_logo'))->type('image')->height('30px')->width('30px'),
|
||||
amis()->TableColumn('game_at', __('admin.activity_games.game_at')),
|
||||
amis()->TableColumn('mark', __('admin.activity_games.mark')),
|
||||
amis()->TableColumn('score', __('admin.activity_games.score')),
|
||||
amisMake()->Operation()->label(__('admin.actions'))->buttons([
|
||||
// amisMake()->AjaxAction()->label('发布')->level('link')
|
||||
// ->actionType('ajax')
|
||||
// ->confirmText(__('admin.confirm_delete'))
|
||||
// ->api([
|
||||
// 'method' => 'delete',
|
||||
// 'url' => admin_url('activity_games/${id}')
|
||||
// ])
|
||||
amisMake()->AjaxAction()->label('删除')->level('link')
|
||||
->actionType('ajax')
|
||||
->confirmText(__('admin.confirm_delete'))
|
||||
->api([
|
||||
'method' => 'delete',
|
||||
'url' => admin_url('activity_games/${id}')
|
||||
])->visibleOn('${state} == 0'),
|
||||
amisMake()->DialogAction()->label('结果')
|
||||
->level('link')
|
||||
->dialog(Dialog::make()->title('比赛结果')->body([
|
||||
amisMake()->form()->title('')
|
||||
->api('put:'.admin_url('/activity_games/${id}'))
|
||||
->body([
|
||||
amis()->TextControl('id', '场次ID')->hidden(true)->value('${id}'),
|
||||
amis()->TextControl('state', '状态')->hidden(true)->value(2),
|
||||
amis()->SelectControl('score', __('admin.activity_games.score'))
|
||||
->options(Score::options()),
|
||||
])
|
||||
]))->visibleOn('${state} == 1'),
|
||||
]),
|
||||
])
|
||||
]),
|
||||
])
|
||||
])->md(8),
|
||||
]);
|
||||
}
|
||||
|
||||
public function detailActions()
|
||||
{
|
||||
return [
|
||||
//返回
|
||||
amis()->Button()->actionType('cancel')->label(__('admin.back'))->primary()
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
@ -15,6 +15,7 @@ use App\Traits\CustomActionTrait;
|
|||
class ArticleController extends AdminController
|
||||
{
|
||||
use CustomActionTrait;
|
||||
|
||||
protected string $serviceName = ArticleService::class;
|
||||
|
||||
public function list():Page
|
||||
|
|
|
|||
|
|
@ -36,6 +36,8 @@ Route::group([
|
|||
|
||||
$router->resource('activities', \App\Admin\Controllers\ActivityController::class);
|
||||
|
||||
$router->resource('activity_games', \App\Admin\Controllers\ActivityGameController::class);
|
||||
|
||||
//修改上传
|
||||
$router->post('upload_file', [\App\Admin\Controllers\IndexController::class, 'uploadFile']);
|
||||
$router->post('upload_image', [\App\Admin\Controllers\IndexController::class, 'uploadImage']);
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ enum Score: string
|
|||
{
|
||||
$options = [];
|
||||
foreach(self::cases() as $score){
|
||||
$options[$score->name] = $score->value;
|
||||
$options[$score->value] = $score->value;
|
||||
}
|
||||
return $options;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,8 +4,14 @@ namespace App\Models;
|
|||
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use EloquentFilter\Filterable;
|
||||
|
||||
class ActivityGame extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
use HasFactory,Filterable;
|
||||
|
||||
public function scopeSort($q)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ class ActivityFilter extends ModelFilter
|
|||
return $this->where('id', $id);
|
||||
}
|
||||
/**
|
||||
* 昵称
|
||||
* 活动名称
|
||||
*/
|
||||
public function name($name)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -26,10 +26,6 @@ class ActivityService extends BaseService
|
|||
$columns = $this->getTableColumns();
|
||||
$model = $this->getModel();
|
||||
|
||||
$activityAt = explode(',', Arr::get($data, 'activity_at'));
|
||||
$data['start_at'] = Arr::get($activityAt, 0) ?? null;
|
||||
$data['end_at'] = Arr::get($activityAt, 1) ?? null;
|
||||
|
||||
$data['cover'] = $this->saveImage('cover', 'activities/cover')[0] ?? '';
|
||||
|
||||
foreach ($data as $k => $v) {
|
||||
|
|
@ -47,11 +43,6 @@ class ActivityService extends BaseService
|
|||
{
|
||||
$columns = $this->getTableColumns();
|
||||
$model = $this->query()->whereKey($primaryKey)->first();
|
||||
if(isset($data['activity_at'])){
|
||||
$activityAt = explode(',', Arr::get($data, 'activity_at'));
|
||||
$data['start_at'] = Arr::get($activityAt, 0) ?? null;
|
||||
$data['end_at'] = Arr::get($activityAt, 1) ?? null;
|
||||
}
|
||||
|
||||
if(isset($data['cover'])){
|
||||
$data['cover'] = $this->saveImage('cover', 'activities/cover')[0] ?? '';
|
||||
|
|
|
|||
|
|
@ -322,5 +322,15 @@ return [
|
|||
'end_at' => '结束时间',
|
||||
'rules' => '规则内容',
|
||||
'cover' => '活动封面'
|
||||
],
|
||||
'activity_games' => [
|
||||
'name' => '场次名称',
|
||||
'home_field' => '主场',
|
||||
'home_logo' => '主场logo',
|
||||
'away' => '客场',
|
||||
'away_logo' => '客场logo',
|
||||
'game_at' => '比赛时间',
|
||||
'mark' => '分数',
|
||||
'score' => '比赛结果'
|
||||
]
|
||||
];
|
||||
|
|
|
|||
Loading…
Reference in New Issue