301 lines
18 KiB
PHP
301 lines
18 KiB
PHP
<div>
|
|
<!-- Header -->
|
|
<div class="mb-8">
|
|
<h1 class="text-3xl font-bold text-zinc-900 dark:text-zinc-100">Edit Job Card {{ $jobCard->job_card_number }}</h1>
|
|
<p class="text-zinc-600 dark:text-zinc-400 mt-2">Update job card information</p>
|
|
</div>
|
|
|
|
<!-- Form Card -->
|
|
<div class="bg-white dark:bg-zinc-800 border border-zinc-200 dark:border-zinc-700 rounded-lg p-6">
|
|
<form wire:submit="save" class="space-y-6">
|
|
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
|
|
<!-- Customer Selection -->
|
|
<div class="md:col-span-2">
|
|
<label class="block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-2">Customer</label>
|
|
<select wire:model="form.customer_id" class="w-full px-3 py-2 border border-zinc-300 dark:border-zinc-600 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 dark:bg-zinc-700 dark:text-zinc-100">
|
|
<option value="">Select customer...</option>
|
|
@foreach($customers as $customer)
|
|
<option value="{{ $customer->id }}">
|
|
{{ $customer->first_name }} {{ $customer->last_name }} - {{ $customer->phone }}
|
|
</option>
|
|
@endforeach
|
|
</select>
|
|
@error('form.customer_id')
|
|
<p class="mt-1 text-sm text-red-600 dark:text-red-400">{{ $message }}</p>
|
|
@enderror
|
|
</div>
|
|
|
|
<!-- Vehicle Selection -->
|
|
<div class="md:col-span-2">
|
|
<label class="block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-2">Vehicle</label>
|
|
<select wire:model="form.vehicle_id" class="w-full px-3 py-2 border border-zinc-300 dark:border-zinc-600 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 dark:bg-zinc-700 dark:text-zinc-100">
|
|
<option value="">Select vehicle...</option>
|
|
@foreach($vehicles as $vehicle)
|
|
<option value="{{ $vehicle->id }}">
|
|
{{ $vehicle->year }} {{ $vehicle->make }} {{ $vehicle->model }} - {{ $vehicle->license_plate }}
|
|
</option>
|
|
@endforeach
|
|
</select>
|
|
@error('form.vehicle_id')
|
|
<p class="mt-1 text-sm text-red-600 dark:text-red-400">{{ $message }}</p>
|
|
@enderror
|
|
</div>
|
|
|
|
<!-- Service Advisor -->
|
|
<div>
|
|
<label class="block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-2">Service Advisor</label>
|
|
<select wire:model="form.service_advisor_id" class="w-full px-3 py-2 border border-zinc-300 dark:border-zinc-600 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 dark:bg-zinc-700 dark:text-zinc-100">
|
|
<option value="">Select service advisor...</option>
|
|
@foreach($serviceAdvisors as $advisor)
|
|
<option value="{{ $advisor->id }}">{{ $advisor->name }}</option>
|
|
@endforeach
|
|
</select>
|
|
@error('form.service_advisor_id')
|
|
<p class="mt-1 text-sm text-red-600 dark:text-red-400">{{ $message }}</p>
|
|
@enderror
|
|
</div>
|
|
|
|
<!-- Status -->
|
|
<div>
|
|
<label class="block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-2">Status</label>
|
|
<select wire:model="form.status" class="w-full px-3 py-2 border border-zinc-300 dark:border-zinc-600 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 dark:bg-zinc-700 dark:text-zinc-100">
|
|
<option value="received">Received</option>
|
|
<option value="in_diagnosis">In Diagnosis</option>
|
|
<option value="estimate_sent">Estimate Sent</option>
|
|
<option value="approved">Approved</option>
|
|
<option value="in_progress">In Progress</option>
|
|
<option value="quality_check">Quality Check</option>
|
|
<option value="completed">Completed</option>
|
|
<option value="delivered">Delivered</option>
|
|
<option value="cancelled">Cancelled</option>
|
|
</select>
|
|
@error('form.status')
|
|
<p class="mt-1 text-sm text-red-600 dark:text-red-400">{{ $message }}</p>
|
|
@enderror
|
|
</div>
|
|
|
|
<!-- Arrival Date & Time -->
|
|
<div>
|
|
<label class="block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-2">Arrival Date & Time</label>
|
|
<input
|
|
type="datetime-local"
|
|
wire:model="form.arrival_datetime"
|
|
class="w-full px-3 py-2 border border-zinc-300 dark:border-zinc-600 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 dark:bg-zinc-700 dark:text-zinc-100"
|
|
/>
|
|
@error('form.arrival_datetime')
|
|
<p class="mt-1 text-sm text-red-600 dark:text-red-400">{{ $message }}</p>
|
|
@enderror
|
|
</div>
|
|
|
|
<!-- Expected Completion Date -->
|
|
<div>
|
|
<label class="block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-2">Expected Completion Date</label>
|
|
<input
|
|
type="datetime-local"
|
|
wire:model="form.expected_completion_date"
|
|
class="w-full px-3 py-2 border border-zinc-300 dark:border-zinc-600 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 dark:bg-zinc-700 dark:text-zinc-100"
|
|
/>
|
|
@error('form.expected_completion_date')
|
|
<p class="mt-1 text-sm text-red-600 dark:text-red-400">{{ $message }}</p>
|
|
@enderror
|
|
</div>
|
|
|
|
<!-- Priority -->
|
|
<div>
|
|
<label class="block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-2">Priority</label>
|
|
<select wire:model="form.priority" class="w-full px-3 py-2 border border-zinc-300 dark:border-zinc-600 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 dark:bg-zinc-700 dark:text-zinc-100">
|
|
<option value="low">Low</option>
|
|
<option value="medium">Medium</option>
|
|
<option value="high">High</option>
|
|
<option value="urgent">Urgent</option>
|
|
</select>
|
|
@error('form.priority')
|
|
<p class="mt-1 text-sm text-red-600 dark:text-red-400">{{ $message }}</p>
|
|
@enderror
|
|
</div>
|
|
|
|
<!-- Mileage In -->
|
|
<div>
|
|
<label class="block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-2">Mileage In</label>
|
|
<input
|
|
type="number"
|
|
wire:model="form.mileage_in"
|
|
placeholder="Current mileage"
|
|
class="w-full px-3 py-2 border border-zinc-300 dark:border-zinc-600 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 dark:bg-zinc-700 dark:text-zinc-100"
|
|
/>
|
|
@error('form.mileage_in')
|
|
<p class="mt-1 text-sm text-red-600 dark:text-red-400">{{ $message }}</p>
|
|
@enderror
|
|
</div>
|
|
|
|
<!-- Mileage Out -->
|
|
<div>
|
|
<label class="block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-2">Mileage Out</label>
|
|
<input
|
|
type="number"
|
|
wire:model="form.mileage_out"
|
|
placeholder="Final mileage"
|
|
class="w-full px-3 py-2 border border-zinc-300 dark:border-zinc-600 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 dark:bg-zinc-700 dark:text-zinc-100"
|
|
/>
|
|
@error('form.mileage_out')
|
|
<p class="mt-1 text-sm text-red-600 dark:text-red-400">{{ $message }}</p>
|
|
@enderror
|
|
</div>
|
|
|
|
<!-- Fuel Level In -->
|
|
<div>
|
|
<label class="block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-2">Fuel Level In</label>
|
|
<select wire:model="form.fuel_level_in" class="w-full px-3 py-2 border border-zinc-300 dark:border-zinc-600 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 dark:bg-zinc-700 dark:text-zinc-100">
|
|
<option value="">Select fuel level</option>
|
|
<option value="empty">Empty</option>
|
|
<option value="1/4">1/4 Tank</option>
|
|
<option value="1/2">1/2 Tank</option>
|
|
<option value="3/4">3/4 Tank</option>
|
|
<option value="full">Full Tank</option>
|
|
</select>
|
|
@error('form.fuel_level_in')
|
|
<p class="mt-1 text-sm text-red-600 dark:text-red-400">{{ $message }}</p>
|
|
@enderror
|
|
</div>
|
|
|
|
<!-- Fuel Level Out -->
|
|
<div>
|
|
<label class="block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-2">Fuel Level Out</label>
|
|
<select wire:model="form.fuel_level_out" class="w-full px-3 py-2 border border-zinc-300 dark:border-zinc-600 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 dark:bg-zinc-700 dark:text-zinc-100">
|
|
<option value="">Select fuel level</option>
|
|
<option value="empty">Empty</option>
|
|
<option value="1/4">1/4 Tank</option>
|
|
<option value="1/2">1/2 Tank</option>
|
|
<option value="3/4">3/4 Tank</option>
|
|
<option value="full">Full Tank</option>
|
|
</select>
|
|
@error('form.fuel_level_out')
|
|
<p class="mt-1 text-sm text-red-600 dark:text-red-400">{{ $message }}</p>
|
|
@enderror
|
|
</div>
|
|
|
|
<!-- Keys Location -->
|
|
<div>
|
|
<label class="block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-2">Keys Location</label>
|
|
<input
|
|
wire:model="form.keys_location"
|
|
placeholder="Where are the keys?"
|
|
class="w-full px-3 py-2 border border-zinc-300 dark:border-zinc-600 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 dark:bg-zinc-700 dark:text-zinc-100"
|
|
/>
|
|
@error('form.keys_location')
|
|
<p class="mt-1 text-sm text-red-600 dark:text-red-400">{{ $message }}</p>
|
|
@enderror
|
|
</div>
|
|
|
|
<!-- Delivery Method -->
|
|
<div>
|
|
<label class="block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-2">Delivery Method</label>
|
|
<select wire:model="form.delivery_method" class="w-full px-3 py-2 border border-zinc-300 dark:border-zinc-600 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 dark:bg-zinc-700 dark:text-zinc-100">
|
|
<option value="">Select delivery method</option>
|
|
<option value="pickup">Customer Pickup</option>
|
|
<option value="delivery">Delivery</option>
|
|
<option value="towing">Towing</option>
|
|
</select>
|
|
@error('form.delivery_method')
|
|
<p class="mt-1 text-sm text-red-600 dark:text-red-400">{{ $message }}</p>
|
|
@enderror
|
|
</div>
|
|
|
|
<!-- Customer Reported Issues -->
|
|
<div class="md:col-span-2">
|
|
<label class="block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-2">Customer Reported Issues</label>
|
|
<textarea
|
|
wire:model="form.customer_reported_issues"
|
|
placeholder="Describe what the customer has reported..."
|
|
rows="3"
|
|
class="w-full px-3 py-2 border border-zinc-300 dark:border-zinc-600 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 dark:bg-zinc-700 dark:text-zinc-100"
|
|
></textarea>
|
|
@error('form.customer_reported_issues')
|
|
<p class="mt-1 text-sm text-red-600 dark:text-red-400">{{ $message }}</p>
|
|
@enderror
|
|
</div>
|
|
|
|
<!-- Vehicle Condition Notes -->
|
|
<div class="md:col-span-2">
|
|
<label class="block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-2">Vehicle Condition Notes</label>
|
|
<textarea
|
|
wire:model="form.vehicle_condition_notes"
|
|
placeholder="Note any existing damage, wear, or condition issues..."
|
|
rows="3"
|
|
class="w-full px-3 py-2 border border-zinc-300 dark:border-zinc-600 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 dark:bg-zinc-700 dark:text-zinc-100"
|
|
></textarea>
|
|
@error('form.vehicle_condition_notes')
|
|
<p class="mt-1 text-sm text-red-600 dark:text-red-400">{{ $message }}</p>
|
|
@enderror
|
|
</div>
|
|
|
|
<!-- Additional Notes -->
|
|
<div class="md:col-span-2">
|
|
<label class="block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-2">Additional Notes</label>
|
|
<textarea
|
|
wire:model="form.notes"
|
|
placeholder="Any additional information..."
|
|
rows="2"
|
|
class="w-full px-3 py-2 border border-zinc-300 dark:border-zinc-600 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 dark:bg-zinc-700 dark:text-zinc-100"
|
|
></textarea>
|
|
@error('form.notes')
|
|
<p class="mt-1 text-sm text-red-600 dark:text-red-400">{{ $message }}</p>
|
|
@enderror
|
|
</div>
|
|
|
|
<!-- Completion Date & Time -->
|
|
@if(in_array($form['status'], ['completed', 'delivered']))
|
|
<div>
|
|
<label class="block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-2">Completion Date & Time</label>
|
|
<input
|
|
type="datetime-local"
|
|
wire:model="form.completion_datetime"
|
|
class="w-full px-3 py-2 border border-zinc-300 dark:border-zinc-600 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 dark:bg-zinc-700 dark:text-zinc-100"
|
|
/>
|
|
@error('form.completion_datetime')
|
|
<p class="mt-1 text-sm text-red-600 dark:text-red-400">{{ $message }}</p>
|
|
@enderror
|
|
</div>
|
|
|
|
<div>
|
|
<label class="block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-2">Customer Satisfaction Rating</label>
|
|
<select wire:model="form.customer_satisfaction_rating" class="w-full px-3 py-2 border border-zinc-300 dark:border-zinc-600 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 dark:bg-zinc-700 dark:text-zinc-100">
|
|
<option value="">Select rating</option>
|
|
<option value="1">1 - Very Poor</option>
|
|
<option value="2">2 - Poor</option>
|
|
<option value="3">3 - Average</option>
|
|
<option value="4">4 - Good</option>
|
|
<option value="5">5 - Excellent</option>
|
|
</select>
|
|
@error('form.customer_satisfaction_rating')
|
|
<p class="mt-1 text-sm text-red-600 dark:text-red-400">{{ $message }}</p>
|
|
@enderror
|
|
</div>
|
|
@endif
|
|
|
|
<!-- Checkboxes -->
|
|
<div class="md:col-span-2 space-y-3">
|
|
<label class="flex items-center">
|
|
<input type="checkbox" wire:model="form.personal_items_removed" class="rounded border-zinc-300 dark:border-zinc-600 text-blue-600 shadow-sm focus:ring-blue-500 dark:bg-zinc-700">
|
|
<span class="ml-2 text-sm text-zinc-700 dark:text-zinc-300">Personal items removed from vehicle</span>
|
|
</label>
|
|
|
|
<label class="flex items-center">
|
|
<input type="checkbox" wire:model="form.photos_taken" class="rounded border-zinc-300 dark:border-zinc-600 text-blue-600 shadow-sm focus:ring-blue-500 dark:bg-zinc-700">
|
|
<span class="ml-2 text-sm text-zinc-700 dark:text-zinc-300">Photos taken of vehicle condition</span>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="flex justify-end space-x-3 mt-6">
|
|
<a href="{{ route('job-cards.show', $jobCard) }}" class="inline-flex items-center px-4 py-2 border border-zinc-300 dark:border-zinc-600 hover:bg-zinc-50 dark:hover:bg-zinc-700 text-zinc-700 dark:text-zinc-300 font-medium rounded-lg transition-colors">
|
|
Cancel
|
|
</a>
|
|
<button type="submit" class="inline-flex items-center px-4 py-2 bg-blue-600 hover:bg-blue-700 text-white font-medium rounded-lg transition-colors">
|
|
Update Job Card
|
|
</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|