ultimatepos/Modules/Maintenance/Resources/views/equipment/show.blade.php

275 lines
15 KiB
PHP

@extends('layouts.app')
@section('title', $equipment->name)
@section('content')
@include('maintenance::layouts.nav')
@php $util = app(\Modules\Maintenance\Utils\MaintenanceUtil::class); @endphp
<section class="content no-print mt-page">
<div class="mt-page-header">
<h1>
<i class="fas fa-industry" style="color:#14b8a6;margin-left:8px;"></i>
{{ $equipment->name }}
<small class="text-muted">({{ $equipment->code }})</small>
</h1>
<div>
@can('maintenance.equipment.update')
<a href="{{ action([\Modules\Maintenance\Http\Controllers\EquipmentController::class, 'edit'], [$equipment->id]) }}" class="btn btn-primary">
<i class="glyphicon glyphicon-edit"></i> @lang('maintenance::lang.edit')
</a>
@endcan
<a href="{{ action([\Modules\Maintenance\Http\Controllers\EquipmentController::class, 'index']) }}" class="btn btn-default">
@lang('maintenance::lang.back')
</a>
</div>
</div>
<div class="mt-card">
<div class="mt-card-body" style="padding-bottom:0;">
<ul class="nav nav-tabs" role="tablist">
<li class="active"><a data-toggle="tab" href="#tab_overview">@lang('maintenance::lang.tab_overview')</a></li>
<li><a data-toggle="tab" href="#tab_parts">@lang('maintenance::lang.tab_parts')</a></li>
<li><a data-toggle="tab" href="#tab_documents">@lang('maintenance::lang.tab_documents')</a></li>
<li><a data-toggle="tab" href="#tab_visits">@lang('maintenance::lang.tab_visits')</a></li>
<li><a data-toggle="tab" href="#tab_services">@lang('maintenance::lang.tab_services')</a></li>
<li><a data-toggle="tab" href="#tab_replacements">@lang('maintenance::lang.tab_replacements')</a></li>
<li><a data-toggle="tab" href="#tab_overhauls">@lang('maintenance::lang.tab_overhauls')</a></li>
<li><a data-toggle="tab" href="#tab_history">@lang('maintenance::lang.tab_history')</a></li>
</ul>
</div>
<div class="mt-card-body tab-content" style="padding-top:20px;">
<div id="tab_overview" class="tab-pane active">
<div class="row">
<div class="col-md-6">
<table class="table table-bordered">
<tr><th>@lang('maintenance::lang.status')</th><td>{{ $util->statusLabel($equipment->status) }}</td></tr>
<tr><th>@lang('maintenance::lang.category')</th><td>{{ $equipment->category?->name ?? '—' }}</td></tr>
<tr><th>@lang('maintenance::lang.project')</th><td>{{ $equipment->project?->name ?? '—' }}</td></tr>
<tr><th>@lang('maintenance::lang.production_line')</th><td>{{ $equipment->productionLine?->name ?? '—' }}</td></tr>
<tr><th>@lang('maintenance::lang.location')</th><td>{{ $equipment->location ?? '—' }}</td></tr>
<tr><th>@lang('maintenance::lang.asset_number')</th><td>{{ $equipment->asset_number ?? '—' }}</td></tr>
@if($equipment->fixedAsset)
<tr><th>@lang('maintenance::lang.fixed_asset')</th><td>{{ $equipment->fixedAsset->name }} @if($equipment->fixedAsset->asset_code)<small class="text-muted">({{ $equipment->fixedAsset->asset_code }})</small>@endif</td></tr>
@endif
<tr><th>@lang('maintenance::lang.health_percentage')</th><td>{{ $equipment->health_percentage !== null ? number_format($equipment->health_percentage, 1).'%' : '—' }}</td></tr>
</table>
</div>
<div class="col-md-6">
<table class="table table-bordered">
<tr><th>@lang('maintenance::lang.manufacturer')</th><td>{{ $equipment->manufacturer ?? '—' }}</td></tr>
<tr><th>@lang('maintenance::lang.model')</th><td>{{ $equipment->model ?? '—' }}</td></tr>
<tr><th>@lang('maintenance::lang.serial_number')</th><td>{{ $equipment->serial_number ?? '—' }}</td></tr>
<tr><th>@lang('maintenance::lang.working_hours')</th><td>{{ $equipment->working_hours ?? '—' }}</td></tr>
<tr><th>@lang('maintenance::lang.installation_date')</th><td>{{ $util->formatDate($equipment->installation_date) ?? '—' }}</td></tr>
<tr><th>@lang('maintenance::lang.warranty_expires_at')</th><td>{{ $util->formatDate($equipment->warranty_expires_at) ?? '—' }}</td></tr>
</table>
</div>
</div>
@if($equipment->notes)
<p><strong>@lang('maintenance::lang.notes'):</strong> {{ $equipment->notes }}</p>
@endif
</div>
<div id="tab_parts" class="tab-pane">
<div class="clearfix" style="margin-bottom:12px;">
@can('maintenance.equipment.update')
<button type="button" class="btn btn-primary btn-sm btn-modal pull-left"
data-href="{{ action([\Modules\Maintenance\Http\Controllers\EquipmentPartController::class, 'create'], [$equipment->id]) }}"
data-container=".maintenance_equipment_part_modal">
<i class="fa fa-plus"></i> @lang('maintenance::lang.add')
</button>
@endcan
</div>
<div class="table-responsive">
<table class="table table-striped table-bordered">
<thead>
<tr>
<th>@lang('maintenance::lang.part_name')</th>
<th>@lang('maintenance::lang.part_number')</th>
<th>@lang('maintenance::lang.part_type')</th>
<th>@lang('maintenance::lang.quantity')</th>
<th>@lang('maintenance::lang.warranty_status')</th>
<th>@lang('maintenance::lang.health_percentage')</th>
<th>@lang('maintenance::lang.action')</th>
</tr>
</thead>
<tbody>
@php
$partTypes = $util->partTypeLabels();
$warrantyStatuses = $util->warrantyStatusLabels();
@endphp
@if(!empty($partsTree))
@include('maintenance::equipment_parts._tree', [
'nodes' => $partsTree,
'depth' => 0,
'equipment' => $equipment,
'util' => $util,
'part_types' => $partTypes,
'warranty_statuses' => $warrantyStatuses,
])
@else
<tr><td colspan="7" class="text-center text-muted">@lang('maintenance::lang.no_records')</td></tr>
@endif
</tbody>
</table>
</div>
</div>
<div id="tab_documents" class="tab-pane">
<div class="table-responsive">
<table class="table table-striped">
<thead><tr><th>@lang('maintenance::lang.title')</th><th>@lang('maintenance::lang.description')</th></tr></thead>
<tbody>
@forelse($equipment->documents as $doc)
<tr><td>{{ $doc->title ?? '—' }}</td><td>{{ $doc->notes ?? '—' }}</td></tr>
@empty
<tr><td colspan="2" class="text-center text-muted">@lang('maintenance::lang.no_records')</td></tr>
@endforelse
</tbody>
</table>
</div>
</div>
<div id="tab_visits" class="tab-pane">
<div class="table-responsive">
<table class="table table-striped">
<thead><tr><th>@lang('maintenance::lang.visit_date')</th><th>@lang('maintenance::lang.status')</th><th>@lang('maintenance::lang.health_percentage')</th><th></th></tr></thead>
<tbody>
@forelse($equipment->inspectionVisits as $visit)
<tr>
<td>{{ $util->formatDateTime($visit->visit_date) }}</td>
<td>{{ $util->statusLabel($visit->status) }}</td>
<td>{{ $visit->health_percentage !== null ? number_format($visit->health_percentage, 1).'%' : '—' }}</td>
<td><a href="{{ action([\Modules\Maintenance\Http\Controllers\InspectionVisitController::class, 'show'], [$visit->id]) }}" class="btn btn-xs btn-info">@lang('maintenance::lang.view')</a></td>
</tr>
@empty
<tr><td colspan="4" class="text-center text-muted">@lang('maintenance::lang.no_records')</td></tr>
@endforelse
</tbody>
</table>
</div>
</div>
<div id="tab_services" class="tab-pane">
<div class="table-responsive">
<table class="table table-striped">
<thead><tr><th>@lang('maintenance::lang.title')</th><th>@lang('maintenance::lang.started_at')</th><th>@lang('maintenance::lang.completed_at')</th><th>@lang('maintenance::lang.cost')</th></tr></thead>
<tbody>
@forelse($equipment->serviceRecords as $sr)
<tr>
<td>{{ $sr->title ?? '—' }}</td>
<td>{{ $util->formatDateTime($sr->started_at) }}</td>
<td>{{ $util->formatDateTime($sr->completed_at) }}</td>
<td>{{ $util->formatMoney($sr->cost ?? 0) }}</td>
</tr>
@empty
<tr><td colspan="4" class="text-center text-muted">@lang('maintenance::lang.no_records')</td></tr>
@endforelse
</tbody>
</table>
</div>
</div>
<div id="tab_replacements" class="tab-pane">
<div class="table-responsive">
<table class="table table-striped">
<thead><tr><th>@lang('maintenance::lang.part_name')</th><th>@lang('maintenance::lang.replaced_at')</th><th>@lang('maintenance::lang.quantity')</th></tr></thead>
<tbody>
@forelse($equipment->partReplacements as $rep)
<tr>
<td>{{ $rep->equipmentPart?->part_name ?? '—' }}</td>
<td>{{ $util->formatDate($rep->replaced_at) }}</td>
<td>{{ $rep->quantity ?? '—' }}</td>
</tr>
@empty
<tr><td colspan="3" class="text-center text-muted">@lang('maintenance::lang.no_records')</td></tr>
@endforelse
</tbody>
</table>
</div>
</div>
<div id="tab_overhauls" class="tab-pane">
<div class="table-responsive">
<table class="table table-striped">
<thead><tr><th>@lang('maintenance::lang.title')</th><th>@lang('maintenance::lang.start_date')</th><th>@lang('maintenance::lang.status')</th><th></th></tr></thead>
<tbody>
@forelse($equipment->overhauls as $oh)
<tr>
<td>{{ $oh->title }}</td>
<td>{{ $util->formatDate($oh->start_date) }}</td>
<td>{{ $util->statusLabel($oh->status) }}</td>
<td><a href="{{ action([\Modules\Maintenance\Http\Controllers\OverhaulController::class, 'show'], [$oh->id]) }}" class="btn btn-xs btn-info">@lang('maintenance::lang.view')</a></td>
</tr>
@empty
<tr><td colspan="4" class="text-center text-muted">@lang('maintenance::lang.no_records')</td></tr>
@endforelse
</tbody>
</table>
</div>
</div>
<div id="tab_history" class="tab-pane">
<div class="table-responsive">
<table class="table table-striped">
<thead><tr><th>@lang('maintenance::lang.performed_at')</th><th>@lang('maintenance::lang.performed_by')</th><th>@lang('maintenance::lang.description')</th></tr></thead>
<tbody>
@forelse($equipment->historyEntries as $entry)
<tr>
<td>{{ $util->formatDateTime($entry->performed_at) }}</td>
<td>{{ $entry->performer ? trim($entry->performer->first_name.' '.($entry->performer->last_name ?? '')) : '—' }}</td>
<td>{{ $entry->description ?? '—' }}</td>
</tr>
@empty
<tr><td colspan="3" class="text-center text-muted">@lang('maintenance::lang.no_records')</td></tr>
@endforelse
</tbody>
</table>
</div>
</div>
</div>
</div>
</section>
<div class="modal fade maintenance_equipment_part_modal" tabindex="-1" role="dialog"></div>
@endsection
@section('javascript')
<script>
$(function() {
if (window.location.hash) {
$('a[href="' + window.location.hash + '"]').tab('show');
}
$(document).on('click', '.delete_mm_equipment_part', function(e) {
e.preventDefault();
var url = $(this).data('href');
swal({
title: LANG.sure,
icon: 'warning',
buttons: true,
dangerMode: true,
}).then(function(willDelete) {
if (willDelete) {
$.ajax({
method: 'DELETE',
url: url,
data: {_token: $('meta[name="csrf-token"]').attr('content')},
success: function(result) {
if (result.success) {
toastr.success(result.msg);
location.reload();
} else {
toastr.error(result.msg);
}
}
});
}
});
});
});
</script>
@endsection