filled('cate_id')) { $cateIds = PartyCateService::make()->catePermissions(); request()->offsetSet('cate_id', $cateIds); } if ($this->actionOfGetData()) { return $this->response()->success($this->service->list()); } if ($this->actionOfExport()) { return $this->export(); } return $this->response()->success($this->list()); } public function list(): Page { $crud = $this->baseCRUD() ->filterTogglable(false) ->columnsTogglable(false) ->headerToolbar([ $this->createButton(true), ]) ->filter($this->baseFilter()->actions([])->body([ amisMake()->TextControl()->name('name')->label(__('party_user.name'))->size('md')->clearable(), amisMake()->SelectControl()->name('cate_id')->label(__('party_user.cate_id'))->options($this->getCateOptions())->size('md')->searchable()->clearable(), amisMake()->Component()->setType('submit')->label(__('admin.search'))->level('primary'), ])) ->columns([ amisMake()->TableColumn()->name('id')->label(__('party_user.id')), amisMake()->TableColumn()->name('username')->label(__('party_user.username')), amisMake()->TableColumn()->name('name')->label(__('party_user.name')), amisMake()->TableColumn()->type('avatar')->src('${avatar}')->name('avatar')->label(__('party_user.avatar')), amisMake()->TableColumn()->name('cate.name')->label(__('party_user.cate_id')), amisMake()->TableColumn()->name('current_score')->label(__('party_user.current_score'))->sortable(), amisMake()->TableColumn()->name('score')->label(__('party_user.score'))->sortable(), $this->rowActions([ $this->rowShowButton(), $this->rowEditButton(true), $this->rowDeleteButton(), ]), ]); return $this->baseList($crud); } public function form($edit): Form { return $this->baseForm()->title('')->body([ amisMake()->SelectControl()->name('cate_id')->label(__('party_user.cate_id'))->options($this->getCateOptions())->required(), amisMake()->TextControl()->name('name')->label(__('party_user.name'))->required(), amisMake()->ImageControl()->name('avatar')->label(__('party_user.avatar')), amisMake()->TextControl()->name('username')->label(__('party_user.username'))->required(), amisMake()->TextControl()->set('type', 'input-password')->name('password')->label(__('party_user.password'))->required(!$edit), amisMake()->TextControl()->name('remarks')->label(__('party_cate.remarks')), ]); } public function detail(): Form { return $this->baseDetail()->title('')->body([ amisMake()->TextControl()->name('id')->label(__('party_user.id'))->static(), amisMake()->TextControl()->name('cate.name')->label(__('party_user.cate_id'))->static(), amisMake()->TextControl()->name('username')->label(__('party_user.username'))->static(), amisMake()->TextControl()->name('name')->label(__('party_user.name'))->static(), amisMake()->TextControl()->name('avatar')->label(__('party_user.avatar'))->static()->staticSchema(amisMake()->Image()), amisMake()->TextControl()->name('current_score')->label(__('party_cate.current_score'))->static(), amisMake()->TextControl()->name('score')->label(__('party_cate.score'))->static(), amisMake()->TextControl()->name('scores')->label(__('party_cate.scores'))->static()->staticSchema( amisMake()->Chart()->width('400px')->height('300px')->initFetch(false)->api(admin_url('/party-user/${id}/chart-option')) ), amisMake()->TextControl()->name('remarks')->label(__('party_cate.remarks'))->static(), amisMake()->TextControl()->name('created_at')->label(__('party_user.created_at'))->static(), ]); } public function chartOption($id) { $user = PartyUser::findOrFail($id); $option = $this->service->getChartOption($user); return $this->response()->success($option); } public function getCateOptions() { if (!$this->cateOptions) { $cateIds = PartyCateService::make()->catePermissions(); $this->cateOptions = PartyCate::select(['id as value', 'name as label'])->filter(['ids' => $cateIds])->get(); } return $this->cateOptions; } }