67a0e674ca
Marine maintenance management: work orders with photos, ISM/SWP procedures, MSDS, inventory, RFQ/purchases, vessel history, bilingual PDF reports. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
115 lines
5.3 KiB
HTML
115 lines
5.3 KiB
HTML
{% extends 'base.html' %}
|
|
{% block title %}{% if vessel %}Editar{% else %}Nueva{% endif %} Embarcación{% endblock %}
|
|
{% block page_title %}{% if vessel %}Editar Embarcación{% else %}Nueva Embarcación{% endif %}{% endblock %}
|
|
{% block topbar_actions %}
|
|
<a href="{{ url_for('vessels') }}" class="btn btn-secondary">← Volver</a>
|
|
{% endblock %}
|
|
{% block content %}
|
|
<div class="card" style="max-width:820px">
|
|
<form method="POST">
|
|
|
|
{% if current_user.role in ('superadmin','admin') and companies %}
|
|
<div class="section-title">Compañía</div>
|
|
<div class="form-grid mb-4">
|
|
<div class="form-group full">
|
|
<label>Compañía *</label>
|
|
<select name="company_id" required>
|
|
<option value="">-- Seleccionar --</option>
|
|
{% for c in companies %}
|
|
<option value="{{ c.id }}" {% if vessel and vessel.company_id==c.id %}selected{% elif current_user.company_id==c.id %}selected{% endif %}>{{ c.name }}</option>
|
|
{% endfor %}
|
|
</select>
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
|
|
<div class="section-title">Datos de la Embarcación</div>
|
|
<div class="form-grid cols-3">
|
|
<div class="form-group full">
|
|
<label>Nombre *</label>
|
|
<input type="text" name="name" value="{{ vessel.name if vessel else '' }}" required>
|
|
</div>
|
|
<div class="form-group">
|
|
<label>Matrícula</label>
|
|
<input type="text" name="registration" value="{{ vessel.registration if vessel else '' }}">
|
|
</div>
|
|
<div class="form-group">
|
|
<label>Tipo</label>
|
|
<select name="vessel_type">
|
|
<option value="">-- Seleccionar --</option>
|
|
{% for t in ['Motor Yacht','Sailing Yacht','Sport Fisherman','Center Console','Catamaran','Trawler','Pontoon','PWC','Commercial','Other'] %}
|
|
<option value="{{ t }}" {% if vessel and vessel.vessel_type==t %}selected{% endif %}>{{ t }}</option>
|
|
{% endfor %}
|
|
</select>
|
|
</div>
|
|
<div class="form-group">
|
|
<label>Año</label>
|
|
<input type="number" name="year" value="{{ vessel.year if vessel else '' }}" min="1900" max="2030">
|
|
</div>
|
|
<div class="form-group">
|
|
<label>Marca</label>
|
|
<input type="text" name="make" value="{{ vessel.make if vessel else '' }}" placeholder="Azimut, Sunseeker...">
|
|
</div>
|
|
<div class="form-group">
|
|
<label>Modelo</label>
|
|
<input type="text" name="model" value="{{ vessel.model if vessel else '' }}" placeholder="80, 68S...">
|
|
</div>
|
|
<div class="form-group">
|
|
<label>Eslora (pies)</label>
|
|
<input type="number" step="0.1" name="length_ft" value="{{ vessel.length_ft if vessel else '' }}">
|
|
</div>
|
|
<div class="form-group">
|
|
<label>Bandera</label>
|
|
<input type="text" name="flag" value="{{ vessel.flag if vessel else '' }}" placeholder="USA, Panama...">
|
|
</div>
|
|
<div class="form-group">
|
|
<label>Puerto de Matrícula</label>
|
|
<input type="text" name="port_of_registry" value="{{ vessel.port_of_registry if vessel else '' }}">
|
|
</div>
|
|
</div>
|
|
|
|
<div class="section-title mt-6">Propietario</div>
|
|
<div class="form-grid">
|
|
<div class="form-group">
|
|
<label>Nombre Propietario</label>
|
|
<input type="text" name="owner_name" value="{{ vessel.owner_name if vessel else '' }}">
|
|
</div>
|
|
<div class="form-group">
|
|
<label>Teléfono</label>
|
|
<input type="tel" name="owner_phone" value="{{ vessel.owner_phone if vessel else '' }}">
|
|
</div>
|
|
<div class="form-group full">
|
|
<label>Email</label>
|
|
<input type="email" name="owner_email" value="{{ vessel.owner_email if vessel else '' }}">
|
|
</div>
|
|
</div>
|
|
|
|
<div class="section-title mt-6">⚓ Capitán / Contacto Operativo</div>
|
|
<div class="form-grid">
|
|
<div class="form-group">
|
|
<label>Nombre Capitán</label>
|
|
<input type="text" name="captain_name" value="{{ vessel.captain_name if vessel else '' }}">
|
|
</div>
|
|
<div class="form-group">
|
|
<label>Teléfono</label>
|
|
<input type="tel" name="captain_phone" value="{{ vessel.captain_phone if vessel else '' }}">
|
|
</div>
|
|
<div class="form-group full">
|
|
<label>Email</label>
|
|
<input type="email" name="captain_email" value="{{ vessel.captain_email if vessel else '' }}">
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group full mt-4">
|
|
<label>Notas</label>
|
|
<textarea name="notes">{{ vessel.notes if vessel else '' }}</textarea>
|
|
</div>
|
|
|
|
<div class="flex gap-3 mt-6">
|
|
<button type="submit" class="btn btn-primary">💾 Guardar</button>
|
|
<a href="{{ url_for('vessels') }}" class="btn btn-secondary">Cancelar</a>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
{% endblock %}
|