refactor: kb & station & terminal
This commit is contained in:
@@ -4,7 +4,6 @@ namespace App\Filament\Resources;
|
||||
|
||||
use App\Filament\Resources\GuideResource\Pages;
|
||||
use App\Models\Guide;
|
||||
use App\Models\Terminal;
|
||||
use Filament\Forms;
|
||||
use Filament\Forms\Form;
|
||||
use Filament\Resources\Resource;
|
||||
@@ -33,6 +32,18 @@ class GuideResource extends Resource
|
||||
return auth()->user()?->can('guide.view') ?? false;
|
||||
}
|
||||
|
||||
public static function getEloquentQuery(): Builder
|
||||
{
|
||||
$query = parent::getEloquentQuery();
|
||||
$user = auth()->user();
|
||||
|
||||
if ($user && $user->hasStationRestriction()) {
|
||||
$query->accessibleBy($user);
|
||||
}
|
||||
|
||||
return $query;
|
||||
}
|
||||
|
||||
public static function form(Form $form): Form
|
||||
{
|
||||
return $form
|
||||
@@ -80,17 +91,17 @@ class GuideResource extends Resource
|
||||
])
|
||||
->columns(2),
|
||||
|
||||
Forms\Components\Section::make('关联终端')
|
||||
Forms\Components\Section::make('关联线站')
|
||||
->schema([
|
||||
Forms\Components\CheckboxList::make('terminals')
|
||||
->label('适用终端')
|
||||
->relationship('terminals', 'name')
|
||||
Forms\Components\CheckboxList::make('stations')
|
||||
->label('适用线站')
|
||||
->relationship('stations', 'name')
|
||||
->searchable()
|
||||
->bulkToggleable()
|
||||
->helperText('选择此指引适用的终端,未关联终端的指引不会在终端显示')
|
||||
->helperText('选择此指引适用的线站,未关联线站的指引为全局指引')
|
||||
->columns(3),
|
||||
])
|
||||
->description('配置此指引在哪些终端上可见'),
|
||||
->description('不关联任何线站则为全局指引,对所有终端可见'),
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -147,13 +158,13 @@ class GuideResource extends Resource
|
||||
->counts('pages')
|
||||
->sortable(),
|
||||
|
||||
Tables\Columns\TextColumn::make('terminals_count')
|
||||
->label('关联终端')
|
||||
->counts('terminals')
|
||||
Tables\Columns\TextColumn::make('stations_count')
|
||||
->label('关联线站')
|
||||
->counts('stations')
|
||||
->sortable()
|
||||
->badge()
|
||||
->color(fn(int $state): string => $state > 0 ? 'success' : 'gray')
|
||||
->formatStateUsing(fn(int $state): string => $state > 0 ? "{$state} 个" : '未关联'),
|
||||
->color(fn(int $state): string => $state > 0 ? 'info' : 'success')
|
||||
->formatStateUsing(fn(int $state): string => $state > 0 ? "{$state} 个" : '全局'),
|
||||
|
||||
Tables\Columns\TextColumn::make('created_at')
|
||||
->label('创建时间')
|
||||
|
||||
Reference in New Issue
Block a user