Files
MES_Core/shiftflow/templates/shiftflow/item_detail.html
ackFromRedmi e88b861f68
All checks were successful
Deploy MES Core / deploy (push) Successful in 11s
Огромная замена логики
2026-04-06 08:06:37 +03:00

219 lines
13 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{% extends 'base.html' %}
{% load l10n %}
{% block content %}
<div class="row justify-content-center">
<div class="col-lg-10 col-xl-8">
<div class="card shadow-sm border-secondary mb-4">
<div class="card-header border-secondary d-flex justify-content-between align-items-center py-3">
<h3 class="text-accent mb-0">
{% if user_role == 'operator' %}
<i class="bi bi-info-circle me-2"></i>{{ item.task.drawing_name|default:"Без названия" }}
{% else %}
<a href="{% url 'task_items' item.task.id %}" class="text-decoration-none text-reset">
<i class="bi bi-info-circle me-2"></i>{{ item.task.drawing_name|default:"Без названия" }}
</a>
{% endif %}
</h3>
{% if user_role == 'operator' %}
<span class="badge bg-secondary">Сделка № {{ item.task.deal.number }}</span>
{% else %}
<a href="{% url 'planning_deal' item.task.deal.id %}" class="text-decoration-none">
<span class="badge bg-secondary">Сделка № {{ item.task.deal.number }}</span>
</a>
{% endif %}
</div>
<form method="post" enctype="multipart/form-data" id="mainForm" class="card-body p-4">
{% csrf_token %}
<input type="hidden" name="next" value="{{ back_url }}">
{% if errors %}
<div class="alert alert-danger mb-4">
{% for e in errors %}
<div>{{ e }}</div>
{% endfor %}
</div>
{% endif %}
<div class="row g-3 mb-4 border-bottom border-secondary pb-3 text-body">
<div class="col-md-4">
<small class="text-muted d-block">Станок</small>
{% if user_role == 'master' %}
<select name="machine" class="form-select border-secondary">
{% for m in machines %}
<option value="{{ m.id }}" {% if item.machine.id == m.id %}selected{% endif %}>{{ m.name }}</option>
{% endfor %}
</select>
{% else %}
<strong>{{ item.machine.name }}</strong>
{% endif %}
</div>
<div class="col-md-4">
<small class="text-muted d-block">Материал</small>
<strong>{{ item.task.material.full_name|default:item.task.material.name }}</strong>
</div>
<div class="col-md-4">
<small class="text-muted d-block">План</small>
<strong class="text-info fs-5">{{ item.quantity_plan }} шт.</strong>
</div>
</div>
<div class="row g-3 mb-4 border-bottom border-secondary pb-3 text-body">
<div class="col-md-6">
<small class="text-muted d-block">Размер детали</small>
<strong>{{ item.task.size_value|default:"-" }}</strong>
</div>
<div class="col-md-6">
<small class="text-muted d-block">Габариты заготовки</small>
<strong>{{ item.task.blank_dimensions|default:"—" }}</strong>
</div>
</div>
<div class="mb-4">
<div class="small text-muted mb-2">Превью</div>
<div class="row g-3">
<div class="col-md-8">
<div class="border border-secondary rounded p-2" style="height: 200px; overflow: hidden;">
{% if item.task.preview_image %}
<img src="{{ item.task.preview_image.url }}" alt="Превью DXF" style="max-width:100%; max-height:100%; object-fit:contain; display:block; margin:0 auto;">
{% else %}
<div style="width:100%; height:100%;"></div>
{% endif %}
</div>
</div>
<div class="col-md-4">
<div class="mb-3">
<div class="d-flex align-items-center gap-2 mb-2">
{% if item.task.drawing_file %}
<a href="{{ item.task.drawing_file.url }}" target="_blank" class="btn btn-sm btn-outline-info p-1" title="DXF/STEP">
<i class="bi bi-file-earmark-code"></i>
</a>
{% else %}
<span class="btn btn-sm btn-outline-secondary p-1 disabled" title="DXF/STEP">
<i class="bi bi-file-earmark-code"></i>
</span>
{% endif %}
<div class="small text-muted">DXF/STEP</div>
</div>
{% if user_role == 'admin' %}
<input type="file" name="drawing_file" class="form-control border-secondary" accept=".dxf,.iges,.igs,.step,.stp">
{% endif %}
</div>
<div>
<div class="d-flex align-items-center gap-2 mb-2">
{% if item.task.extra_drawing %}
<a href="{{ item.task.extra_drawing.url }}" target="_blank" class="btn btn-sm btn-outline-danger p-1" title="PDF">
<i class="bi bi-file-pdf"></i>
</a>
{% else %}
<span class="btn btn-sm btn-outline-secondary p-1 disabled" title="PDF">
<i class="bi bi-file-pdf"></i>
</span>
{% endif %}
<div class="small text-muted">PDF</div>
</div>
{% if user_role == 'admin' %}
<input type="file" name="extra_drawing" class="form-control border-secondary" accept="application/pdf">
{% endif %}
</div>
</div>
</div>
</div>
<input type="hidden" name="status" id="id_status" value="{{ item.status }}">
{% if user_role in 'operator,master' %}
{% if item.status == 'work' %}
<div class="bg-body-tertiary p-3 rounded border mb-4 text-center">
<div class="row g-3 text-start">
<div class="col-md-4">
<label class="small text-muted">Факт (шт)</label>
<input type="number" name="quantity_fact" id="id_quantity_fact" class="form-control border-secondary" value="{{ item.quantity_fact }}" max="{{ item.quantity_plan }}">
</div>
</div>
</div>
{% else %}
<div class="alert alert-success">Статус: {{ item.get_status_display }}. Сделано: {{ item.quantity_fact }} шт.</div>
<input type="hidden" name="quantity_fact" value="{{ item.quantity_fact }}">
{% endif %}
{% endif %}
{% if user_role in 'admin,technologist' %}
<div class="row g-3 mb-4">
<div class="col-md-4">
<label class="small text-muted">Дата смены</label>
<input type="date" name="date" class="form-control border-secondary" value="{{ item.date|date:'Y-m-d' }}">
</div>
<div class="col-md-4">
<label class="small text-muted">Станок</label>
<select name="machine" class="form-select border-secondary">
{% for m in machines %}
<option value="{{ m.id }}" {% if item.machine.id == m.id %}selected{% endif %}>{{ m.name }}</option>
{% endfor %}
</select>
</div>
<div class="col-md-4">
<label class="small text-muted">План на смену (шт)</label>
<input type="number" name="quantity_plan" class="form-control border-secondary" value="{{ item.quantity_plan }}">
</div>
<div class="col-md-6">
<label class="small text-muted">Статус задания</label>
<select name="status" class="form-select border-secondary">
{% for val, name in form.fields.status.choices %}
<option value="{{ val }}" {% if item.status == val %}selected{% endif %}>{{ name }}</option>
{% endfor %}
</select>
</div>
<div class="col-md-6">
<label class="small text-muted">Факт (шт)</label>
<input type="number" name="quantity_fact" class="form-control border-secondary" value="{{ item.quantity_fact }}">
</div>
</div>
<div class="form-check form-switch p-3 rounded border border-warning mb-4 bg-body-tertiary d-flex justify-content-between align-items-center">
<label class="form-check-label fw-bold ms-2" for="sync1c">Списано в 1С</label>
<input class="form-check-input ms-0" style="width: 3em; height: 1.5em;" type="checkbox" name="is_synced_1c" id="sync1c" {% if item.is_synced_1c %}checked{% endif %}>
</div>
{% endif %}
{% if user_role == 'clerk' %}
{% if item.status == 'done' or item.status == 'partial' %}
<div class="form-check form-switch p-3 rounded border border-warning mb-4 bg-body-tertiary d-flex justify-content-between align-items-center">
<label class="form-check-label fw-bold ms-2" for="sync1c">Списано в 1С</label>
<input class="form-check-input ms-0" style="width: 3em; height: 1.5em;" type="checkbox" name="is_synced_1c" id="sync1c" {% if item.is_synced_1c %}checked{% endif %}>
</div>
{% else %}
<div class="text-muted small mb-4"><i class="bi bi-info-circle me-1"></i>Списание будет доступно после закрытия.</div>
{% endif %}
<input type="hidden" name="quantity_fact" value="{{ item.quantity_fact }}">
{% endif %}
<div class="d-flex justify-content-between mt-4">
<a href="{{ back_url }}" class="btn btn-outline-secondary">Назад</a>
<div class="d-flex gap-2">
<input type="hidden" name="action" id="actionField" value="save">
{% if item.status == 'work' and user_role == 'admin' %}
<button type="submit" class="btn btn-success px-4" onclick="document.getElementById('actionField').value='close_done'">
<i class="bi bi-check-all me-2"></i>Выполнено
</button>
<button type="submit" class="btn btn-outline-warning px-4" onclick="document.getElementById('actionField').value='close_partial'">
Частично
</button>
{% endif %}
<button type="submit" class="btn btn-outline-accent px-4 fw-bold" onclick="document.getElementById('actionField').value='save'">
<i class="bi bi-save me-2"></i>Сохранить
</button>
</div>
</div>
</form>
</div>
</div>
</div>
{% endblock %}