superlishunqin 29914a4178 0506
2025-05-06 12:01:11 +08:00

211 lines
10 KiB
HTML

{% extends 'base.html' %}
{% block title %}《{{ book.title }}》库存日志{% endblock %}
{% block head %}
<link rel="stylesheet" href="{{ url_for('static', filename='css/inventory-logs.css') }}">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&display=swap">
{% endblock %}
{% block content %}
<div class="disney-container"
<!-- 雪花/魔法效果层 -->
<div id="magic-particles"></div>
<!-- 主内容区 -->
<div class="disney-card">
<!-- 装饰元素 -->
<div class="disney-decoration book-icon"></div>
<div class="disney-decoration crown-icon"></div>
<div class="disney-decoration wand-icon"></div>
<div class="disney-decoration snowflake-icon"></div>
<!-- 卡片头部 -->
<div class="card-header-disney">
<div class="princess-crown"></div>
<h4><i class="fas fa-book-open"></i>
{% if book %}
《{{ book.title }}》库存变动日志
{% else %}
全部库存变动日志
{% endif %}
</h4>
</div>
<!-- 卡片内容 -->
<div class="card-body-disney">
<!-- 图书信息部分 -->
{% if book %}
<div class="book-details-container">
<div class="book-cover-wrapper">
{% if book.cover_url %}
<img src="{{ book.cover_url }}" alt="{{ book.title }}" class="disney-book-cover">
{% else %}
<img src="{{ url_for('static', filename='images/book-placeholder.jpg') }}" alt="默认封面" class="disney-book-cover">
{% endif %}
<div class="book-cover-glow"></div>
</div>
<div class="book-info">
<h3 class="book-title">{{ book.title }}</h3>
<div class="info-row">
<div class="disney-icon author-icon"></div>
<div><strong>作者:</strong> {{ book.author }}</div>
</div>
<div class="info-row">
<div class="disney-icon publisher-icon"></div>
<div><strong>出版社:</strong> {{ book.publisher }}</div>
</div>
<div class="info-row">
<div class="disney-icon isbn-icon"></div>
<div><strong>ISBN:</strong> {{ book.isbn }}</div>
</div>
<div class="info-row">
<div class="disney-icon stock-icon"></div>
<div>
<strong>当前库存:</strong>
<span class="stock-badge {{ 'high-stock' if book.stock > 5 else 'low-stock' if book.stock > 0 else 'out-stock' }}">
{{ book.stock }}
</span>
</div>
</div>
</div>
</div>
{% endif %}
<!-- 日志表格部分 -->
<div class="logs-section">
<h5 class="logs-title">
<div class="title-decoration left"></div>
库存变动历史记录
<div class="title-decoration right"></div>
</h5>
<div class="table-container">
<table class="disney-table">
<thead>
<tr>
<th>ID</th>
{% if not book %}<th>图书</th>{% endif %}
<th>操作类型</th>
<th>变动数量</th>
<th>变动后库存</th>
<th>操作人</th>
<th>备注</th>
<th>操作时间</th>
</tr>
</thead>
<tbody>
{% for log in logs %}
<tr class="log-row">
<td>{{ log.id }}</td>
{% if not book %}
<td>
<a href="{{ url_for('inventory.book_inventory_logs', book_id=log.book_id) }}">
{{ log.book.title if log.book else '未知图书' }}
</a>
</td>
{% endif %}
<td>
<span class="operation-badge {{ 'in-badge' if log.change_type == 'in' or log.change_amount > 0 else 'out-badge' }}">
{{ '入库' if log.change_type == 'in' or log.change_amount > 0 else '出库' }}
</span>
</td>
<td>{{ log.change_amount }}</td>
<td>{{ log.after_stock }}</td>
<td>{{ log.operator.username if log.operator else '系统' }}</td>
<td class="remark-cell" title="{{ log.remark or '-' }}">{{ log.remark or '-' }}</td>
<td>{{ log.changed_at.strftime('%Y-%m-%d %H:%M:%S') }}</td>
</tr>
{% endfor %}
{% if not logs %}
<tr>
<td colspan="{{ 8 if not book else 7 }}" class="empty-logs">
<div class="empty-state">
<div class="empty-icon"></div>
<p>暂无库存变动记录</p>
</div>
</td>
</tr>
{% endif %}
</tbody>
</table>
</div>
<!-- 分页 -->
<div class="disney-pagination">
<nav aria-label="Page navigation">
<ul class="pagination-list">
{% if pagination.has_prev %}
<li class="page-item">
<a class="page-link" href="{{ url_for('inventory.inventory_logs' if not book else 'inventory.book_inventory_logs', book_id=book.id if book else None, page=pagination.prev_num) }}">
<i class="fas fa-chevron-left"></i> 上一页
</a>
</li>
{% else %}
<li class="page-item disabled">
<span class="page-link"><i class="fas fa-chevron-left"></i> 上一页</span>
</li>
{% endif %}
{% for page_num in pagination.iter_pages(left_edge=1, right_edge=1, left_current=2, right_current=2) %}
{% if page_num %}
{% if page_num == pagination.page %}
<li class="page-item active">
<span class="page-link">{{ page_num }}</span>
</li>
{% else %}
<li class="page-item">
<a class="page-link" href="{{ url_for('inventory.inventory_logs' if not book else 'inventory.book_inventory_logs', book_id=book.id if book else None, page=page_num) }}">{{ page_num }}</a>
</li>
{% endif %}
{% else %}
<li class="page-item dots">
<span class="page-link">...</span>
</li>
{% endif %}
{% endfor %}
{% if pagination.has_next %}
<li class="page-item">
<a class="page-link" href="{{ url_for('inventory.inventory_logs' if not book else 'inventory.book_inventory_logs', book_id=book.id if book else None, page=pagination.next_num) }}">
下一页 <i class="fas fa-chevron-right"></i>
</a>
</li>
{% else %}
<li class="page-item disabled">
<span class="page-link">下一页 <i class="fas fa-chevron-right"></i></span>
</li>
{% endif %}
</ul>
</nav>
</div>
</div>
</div>
<!-- 卡片底部 -->
<div class="card-footer-disney">
<div class="button-container">
<a href="{{ url_for('inventory.inventory_list') }}" class="disney-button return-btn">
<span class="button-icon"><i class="fas fa-arrow-left"></i></span>
<span class="button-text">返回库存管理</span>
</a>
{% if book %}
<a href="{{ url_for('inventory.adjust_inventory', book_id=book.id) }}" class="disney-button adjust-btn">
<span class="button-icon"><i class="fas fa-edit"></i></span>
<span class="button-text">调整库存</span>
</a>
{% endif %}
</div>
</div>
</div>
</div>
{% endblock %}
{% block scripts %}
<script src="https://cdnjs.cloudflare.com/ajax/libs/particles.js/2.0.0/particles.min.js"></script>
<script src="{{ url_for('static', filename='js/inventory-book-logs.js') }}"></script>
{% endblock %}