public function form(Form $form): Form { return $form ->schema([ Wizard::make([ Step::make('category') ->label('Loại hỗ trợ') ->description('Chọn loại sự cố') ->schema([ Select::make('ticket_category_id') ->label('Loại sự cố') ->options(TicketCategory::pluck('name', 'id')) ->required() ->live() ->afterStateUpdated(function ($state, Forms\Set $set) { $set('code', 'TIC-' . strtoupper(Str::random(6))); }), TextInput::make('code') ->label('Mã phiếu') ->disabled() ->dehydrated() ->required(), Select::make('department_id') ->label('Đơn vị') ->options(DonVi::pluck('name', 'id')) ->searchable() ->required(), ]) ->columns(2), Step::make('details') ->label('Chi tiết') ->description('Thông tin chi tiết') ->schema(function (Forms\Get $get) { if ($this->isVehicleCardCategory($get('ticket_category_id'))) { return [ TextInput::make('full_name')->label('Họ và tên')->required(), TextInput::make('employee_code')->label('Mã nhân sự')->required(), TextInput::make('email')->label('Email')->email()->required(), TextInput::make('phone')->label('Số điện thoại')->tel()->required(), TextInput::make('vehicle_type')->label('Loại xe')->required(), TextInput::make('vehicle_color')->label('Màu xe')->required(), TextInput::make('plate_number')->label('Biển số xe')->required(), FileUpload::make('id_card_image') ->label('Ảnh CCCD/CMND') ->image() ->directory('tickets/vehicle_cards') ->visibility('public'), FileUpload::make('vehicle_image') ->label('Ảnh xe') ->image() ->directory('tickets/vehicle_cards') ->visibility('public'), Textarea::make('note')->label('Ghi chú')->rows(3), ]; } return [ Textarea::make('description') ->label('Mô tả chi tiết') ->rows(6) ->required(), FileUpload::make('attachments') ->label('Đính kèm hình ảnh') ->multiple() ->image() ->imagePreviewHeight('150') ->maxSize(2048) ->directory('tickets/attachments') ->visibility('public'), ]; }), ]) ->submitAction( Action::make('submit') ->label('Gửi phiếu') ->action('submit') ->color('primary') ), ]) ->statePath('data'); }