157 lines
8.0 KiB
HTML
157 lines
8.0 KiB
HTML
{% extends "assetapp/base.html" %}
|
|
|
|
{% block title %}{{ asset.asset_number }} - 资产详情{% endblock %}
|
|
|
|
{% block content %}
|
|
<div class="d-flex justify-content-between align-items-center mb-4">
|
|
<div class="d-flex align-items-center">
|
|
<a href="{% url 'asset_list' %}" class="btn btn-outline-secondary btn-sm me-3">
|
|
<i class="bi bi-arrow-left"></i> 返回
|
|
</a>
|
|
<h4 class="mb-0"><i class="bi bi-hdd me-2"></i>{{ asset.asset_number }}</h4>
|
|
<span class="badge ms-3
|
|
{% if asset.status == 'in_use' %}bg-success
|
|
{% elif asset.status == 'idle' %}bg-warning text-dark
|
|
{% elif asset.status == 'maintenance' %}bg-info
|
|
{% else %}bg-danger{% endif %}">
|
|
{{ asset.get_status_display }}
|
|
</span>
|
|
</div>
|
|
<div>
|
|
<a href="{% url 'asset_update' asset.pk %}" class="btn btn-warning btn-sm">
|
|
<i class="bi bi-pencil me-1"></i>编辑
|
|
</a>
|
|
<a href="{% url 'asset_delete' asset.pk %}" class="btn btn-danger btn-sm">
|
|
<i class="bi bi-trash me-1"></i>删除
|
|
</a>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row g-3">
|
|
<!-- 基本信息 -->
|
|
<div class="col-md-6">
|
|
<div class="card card-dark">
|
|
<div class="card-header"><i class="bi bi-info-circle me-2"></i>基本信息</div>
|
|
<div class="card-body">
|
|
<table class="table table-dark table-borderless mb-0 detail-table">
|
|
<tr><td class="text-muted" width="120">设备名称</td><td>{{ asset.name }}</td></tr>
|
|
<tr><td class="text-muted">资产编号</td><td><code>{{ asset.asset_number }}</code></td></tr>
|
|
<tr><td class="text-muted">设备分类</td><td><span class="badge bg-secondary">{{ asset.category.name }}</span></td></tr>
|
|
<tr><td class="text-muted">品牌</td><td>{{ asset.brand|default:"-" }}</td></tr>
|
|
<tr><td class="text-muted">型号</td><td>{{ asset.model|default:"-" }}</td></tr>
|
|
<tr><td class="text-muted">资产面值</td><td>{% if asset.asset_value %}¥{{ asset.asset_value }}{% else %}-{% endif %}</td></tr>
|
|
<tr><td class="text-muted">序列号</td><td><code>{{ asset.serial_number|default:"-" }}</code></td></tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- 位置信息 -->
|
|
<div class="col-md-6">
|
|
<div class="card card-dark">
|
|
<div class="card-header"><i class="bi bi-geo-alt me-2"></i>位置与网络</div>
|
|
<div class="card-body">
|
|
<table class="table table-dark table-borderless mb-0 detail-table">
|
|
<tr><td class="text-muted" width="120">机房</td><td>{{ asset.location|default:"-" }}</td></tr>
|
|
<tr><td class="text-muted">机柜</td><td>{{ asset.cabinet|default:"-" }}</td></tr>
|
|
<tr><td class="text-muted">机柜位置</td><td>{{ asset.cabinet_position|default:"-" }}</td></tr>
|
|
<tr><td class="text-muted">BMC地址</td><td><code>{{ asset.bmc_address|default:"-" }}</code></td></tr>
|
|
<tr><td class="text-muted">IP地址</td><td><code>{{ asset.ip_address|default:"-" }}</code></td></tr>
|
|
<tr><td class="text-muted">显卡类型</td><td>{{ asset.gpu_type|default:"-" }}</td></tr>
|
|
<tr><td class="text-muted">卡数</td><td>{{ asset.gpu_count|default:"-" }}</td></tr>
|
|
<tr><td class="text-muted">负责人</td><td>{{ asset.responsible_person|default:"-" }}</td></tr>
|
|
<tr><td class="text-muted">使用部门</td><td>{{ asset.department|default:"-" }}</td></tr>
|
|
<tr><td class="text-muted">维护人</td><td>{{ asset.user|default:"-" }}</td></tr>
|
|
<tr><td class="text-muted">业务类型</td><td>{{ asset.business_type|default:"-" }}</td></tr>
|
|
<tr><td class="text-muted">状态</td>
|
|
<td><span class="badge
|
|
{% if asset.status == 'in_use' %}bg-success
|
|
{% elif asset.status == 'idle' %}bg-warning text-dark
|
|
{% elif asset.status == 'maintenance' %}bg-info
|
|
{% else %}bg-danger{% endif %}">
|
|
{{ asset.get_status_display }}
|
|
</span></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- 采购与质保 -->
|
|
<div class="col-md-6">
|
|
<div class="card card-dark">
|
|
<div class="card-header"><i class="bi bi-receipt me-2"></i>采购与质保</div>
|
|
<div class="card-body">
|
|
<table class="table table-dark table-borderless mb-0 detail-table">
|
|
<tr><td class="text-muted" width="120">采购日期</td><td>{{ asset.purchase_date|default:"-" }}</td></tr>
|
|
<tr>
|
|
<td class="text-muted">质保到期</td>
|
|
<td>
|
|
{{ asset.warranty_expire|default:"-" }}
|
|
{% if asset.warranty_expire %}
|
|
{% if asset.is_expired %}
|
|
<span class="badge bg-danger ms-2">已过保</span>
|
|
{% elif asset.is_expiring_soon %}
|
|
<span class="badge bg-warning text-dark ms-2">即将过保</span>
|
|
{% endif %}
|
|
{% endif %}
|
|
</td>
|
|
</tr>
|
|
<tr><td class="text-muted">供应商</td><td>{{ asset.supplier|default:"-" }}</td></tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- 备注 -->
|
|
<div class="col-md-6">
|
|
<div class="card card-dark">
|
|
<div class="card-header"><i class="bi bi-sticky me-2"></i>备注</div>
|
|
<div class="card-body">
|
|
<p class="mb-0">{{ asset.remark|default:"暂无备注"|linebreaksbr }}</p>
|
|
<hr class="border-secondary">
|
|
<small class="text-muted">
|
|
创建人:{{ asset.created_by|default:"-" }} |
|
|
创建时间:{{ asset.created_at|date:"Y-m-d H:i" }} |
|
|
更新时间:{{ asset.updated_at|date:"Y-m-d H:i" }}
|
|
</small>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- 变更记录 -->
|
|
<div class="card card-dark mt-3">
|
|
<div class="card-header"><i class="bi bi-clock-history me-2"></i>变更记录</div>
|
|
<div class="card-body p-0">
|
|
<div class="table-responsive">
|
|
<table class="table table-dark table-hover mb-0">
|
|
<thead>
|
|
<tr><th>时间</th><th>操作</th><th>字段</th><th>旧值</th><th>新值</th><th>操作人</th></tr>
|
|
</thead>
|
|
<tbody>
|
|
{% for log in change_logs %}
|
|
<tr>
|
|
<td>{{ log.created_at|date:"Y-m-d H:i" }}</td>
|
|
<td><span class="badge
|
|
{% if log.action == 'create' %}bg-success
|
|
{% elif log.action == 'update' %}bg-primary
|
|
{% elif log.action == 'delete' %}bg-danger
|
|
{% elif log.action == 'import' %}bg-info
|
|
{% else %}bg-secondary{% endif %}">
|
|
{{ log.get_action_display }}</span></td>
|
|
<td>{{ log.field_name|default:"-" }}</td>
|
|
<td><code>{{ log.old_value|default:"-" }}</code></td>
|
|
<td><code>{{ log.new_value|default:"-" }}</code></td>
|
|
<td>{{ log.operator|default:"-" }}</td>
|
|
</tr>
|
|
{% empty %}
|
|
<tr><td colspan="6" class="text-center text-light opacity-75 py-3">暂无变更记录</td></tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% endblock %}
|