275 lines
15 KiB
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
|