187 lines
		
	
	
		
			9.8 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			187 lines
		
	
	
		
			9.8 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
{% extends 'base.html' %}
 | 
						|
 | 
						|
{% block title %}《{{ book.title }}》库存日志{% endblock %}
 | 
						|
 | 
						|
{% block head %}
 | 
						|
<link rel="stylesheet" href="{{ url_for('static', filename='css/inventory-book-logs.css') }}">
 | 
						|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css">
 | 
						|
{% endblock %}
 | 
						|
 | 
						|
{% block content %}
 | 
						|
<div class="frozen-background">
 | 
						|
    <div class="snowflakes" aria-hidden="true">
 | 
						|
        <div class="snowflake">❅</div>
 | 
						|
        <div class="snowflake">❆</div>
 | 
						|
        <div class="snowflake">❅</div>
 | 
						|
        <div class="snowflake">❆</div>
 | 
						|
        <div class="snowflake">❅</div>
 | 
						|
        <div class="snowflake">❆</div>
 | 
						|
        <div class="snowflake">❅</div>
 | 
						|
        <div class="snowflake">❆</div>
 | 
						|
        <div class="snowflake">❅</div>
 | 
						|
        <div class="snowflake">❆</div>
 | 
						|
    </div>
 | 
						|
 | 
						|
    <div class="container mt-5">
 | 
						|
        <div class="frozen-card">
 | 
						|
            <div class="castle-decoration"></div>
 | 
						|
 | 
						|
            <div class="card-header-frozen">
 | 
						|
                <div class="ice-crystal left"></div>
 | 
						|
                <h4><i class="fas fa-book-open"></i> 《{{ book.title }}》库存变动日志</h4>
 | 
						|
                <div class="ice-crystal right"></div>
 | 
						|
            </div>
 | 
						|
 | 
						|
            <div class="card-body-frozen">
 | 
						|
                <div class="row mb-4 book-info-row">
 | 
						|
                    <div class="col-md-3 book-cover-container">
 | 
						|
                        <div class="book-frame">
 | 
						|
                            {% if book.cover_url %}
 | 
						|
                            <img src="{{ book.cover_url }}" alt="{{ book.title }}" class="img-fluid book-cover">
 | 
						|
                            {% else %}
 | 
						|
                            <img src="{{ url_for('static', filename='images/book-placeholder.jpg') }}" alt="默认封面" class="img-fluid book-cover">
 | 
						|
                            {% endif %}
 | 
						|
                            <div class="book-glow"></div>
 | 
						|
                        </div>
 | 
						|
                    </div>
 | 
						|
                    <div class="col-md-9 book-details">
 | 
						|
                        <h3 class="book-title">{{ book.title }}</h3>
 | 
						|
                        <div class="book-info">
 | 
						|
                            <p class="info-item"><i class="fas fa-feather-alt"></i> <strong>作者:</strong> {{ book.author }}</p>
 | 
						|
                            <p class="info-item"><i class="fas fa-building"></i> <strong>出版社:</strong> {{ book.publisher }}</p>
 | 
						|
                            <p class="info-item"><i class="fas fa-barcode"></i> <strong>ISBN:</strong> {{ book.isbn }}</p>
 | 
						|
                            <p class="info-item">
 | 
						|
                                <i class="fas fa-cubes"></i> <strong>当前库存:</strong>
 | 
						|
                                <span class="frozen-badge {{ 'high-stock' if book.stock > 5 else 'low-stock' if book.stock > 0 else 'out-stock' }}">
 | 
						|
                                    {{ book.stock }}
 | 
						|
                                </span>
 | 
						|
                            </p>
 | 
						|
                        </div>
 | 
						|
                    </div>
 | 
						|
                </div>
 | 
						|
 | 
						|
                <div class="history-section">
 | 
						|
                    <h5 class="section-title">
 | 
						|
                        <i class="fas fa-history"></i> 库存变动历史记录
 | 
						|
                        <div class="magic-underline"></div>
 | 
						|
                    </h5>
 | 
						|
 | 
						|
                    <div class="table-container">
 | 
						|
                        <div class="table-frozen">
 | 
						|
                            <div class="table-header-row">
 | 
						|
                                <div class="th-frozen">ID</div>
 | 
						|
                                <div class="th-frozen">操作类型</div>
 | 
						|
                                <div class="th-frozen">变动数量</div>
 | 
						|
                                <div class="th-frozen">变动后库存</div>
 | 
						|
                                <div class="th-frozen">操作人</div>
 | 
						|
                                <div class="th-frozen">备注</div>
 | 
						|
                                <div class="th-frozen">操作时间</div>
 | 
						|
                            </div>
 | 
						|
 | 
						|
                            <div class="table-body">
 | 
						|
                                {% for log in logs %}
 | 
						|
                                <div class="table-row log-entry" data-type="{{ log.change_type }}">
 | 
						|
                                    <div class="td-frozen">{{ log.id }}</div>
 | 
						|
                                    <div class="td-frozen">
 | 
						|
                                        <span class="operation-badge {{ 'in-badge' if log.change_type == 'in' else 'out-badge' }}">
 | 
						|
                                            {{ '入库' if log.change_type == 'in' else '出库' }}
 | 
						|
                                            <i class="fas {{ 'fa-arrow-circle-down' if log.change_type == 'in' else 'fa-arrow-circle-up' }}"></i>
 | 
						|
                                        </span>
 | 
						|
                                    </div>
 | 
						|
                                    <div class="td-frozen">{{ log.change_amount }}</div>
 | 
						|
                                    <div class="td-frozen">{{ log.after_stock }}</div>
 | 
						|
                                    <div class="td-frozen">{{ log.operator.username if log.operator else '系统' }}</div>
 | 
						|
                                    <div class="td-frozen remark-cell">{{ log.remark or '-' }}</div>
 | 
						|
                                    <div class="td-frozen">{{ log.changed_at.strftime('%Y-%m-%d %H:%M:%S') }}</div>
 | 
						|
                                </div>
 | 
						|
                                {% endfor %}
 | 
						|
 | 
						|
                                {% if not logs %}
 | 
						|
                                <div class="table-row empty-log">
 | 
						|
                                    <div class="td-frozen empty-message" colspan="7">
 | 
						|
                                        <div class="olaf-empty">
 | 
						|
                                            <div class="olaf-image"></div>
 | 
						|
                                            <p>暂无库存变动记录,要不要堆个雪人?</p>
 | 
						|
                                        </div>
 | 
						|
                                    </div>
 | 
						|
                                </div>
 | 
						|
                                {% endif %}
 | 
						|
                            </div>
 | 
						|
                        </div>
 | 
						|
                    </div>
 | 
						|
 | 
						|
                    <!-- 分页 -->
 | 
						|
                    <div class="pagination-container">
 | 
						|
                        <nav aria-label="Page navigation">
 | 
						|
                            <ul class="frozen-pagination">
 | 
						|
                                {% if pagination.has_prev %}
 | 
						|
                                <li class="page-item">
 | 
						|
                                    <a class="page-link" href="{{ url_for('inventory.book_inventory_logs', book_id=book.id, page=pagination.prev_num) }}">
 | 
						|
                                        <i class="fas fa-chevron-left"></i> 上一页
 | 
						|
                                    </a>
 | 
						|
                                </li>
 | 
						|
                                {% else %}
 | 
						|
                                <li class="page-item disabled">
 | 
						|
                                    <a class="page-link" href="#">
 | 
						|
                                        <i class="fas fa-chevron-left"></i> 上一页
 | 
						|
                                    </a>
 | 
						|
                                </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">
 | 
						|
                                            <a class="page-link" href="#">{{ page_num }}</a>
 | 
						|
                                        </li>
 | 
						|
                                        {% else %}
 | 
						|
                                        <li class="page-item">
 | 
						|
                                            <a class="page-link" href="{{ url_for('inventory.book_inventory_logs', book_id=book.id, page=page_num) }}">{{ page_num }}</a>
 | 
						|
                                        </li>
 | 
						|
                                        {% endif %}
 | 
						|
                                    {% else %}
 | 
						|
                                        <li class="page-item disabled">
 | 
						|
                                            <a class="page-link" href="#">...</a>
 | 
						|
                                        </li>
 | 
						|
                                    {% endif %}
 | 
						|
                                {% endfor %}
 | 
						|
 | 
						|
                                {% if pagination.has_next %}
 | 
						|
                                <li class="page-item">
 | 
						|
                                    <a class="page-link" href="{{ url_for('inventory.book_inventory_logs', book_id=book.id, page=pagination.next_num) }}">
 | 
						|
                                        下一页 <i class="fas fa-chevron-right"></i>
 | 
						|
                                    </a>
 | 
						|
                                </li>
 | 
						|
                                {% else %}
 | 
						|
                                <li class="page-item disabled">
 | 
						|
                                    <a class="page-link" href="#">
 | 
						|
                                        下一页 <i class="fas fa-chevron-right"></i>
 | 
						|
                                    </a>
 | 
						|
                                </li>
 | 
						|
                                {% endif %}
 | 
						|
                            </ul>
 | 
						|
                        </nav>
 | 
						|
                    </div>
 | 
						|
                </div>
 | 
						|
            </div>
 | 
						|
 | 
						|
            <div class="card-footer-frozen">
 | 
						|
                <div class="footer-actions">
 | 
						|
                    <a href="{{ url_for('inventory.inventory_list') }}" class="btn frozen-btn return-btn">
 | 
						|
                        <i class="fas fa-arrow-left"></i> 返回库存管理
 | 
						|
                    </a>
 | 
						|
                    <a href="{{ url_for('inventory.adjust_inventory', book_id=book.id) }}" class="btn frozen-btn adjust-btn">
 | 
						|
                        <i class="fas fa-sliders-h"></i> 调整库存
 | 
						|
                    </a>
 | 
						|
                </div>
 | 
						|
                <div class="footer-decoration"></div>
 | 
						|
            </div>
 | 
						|
        </div>
 | 
						|
    </div>
 | 
						|
</div>
 | 
						|
{% endblock %}
 | 
						|
 | 
						|
{% block scripts %}
 | 
						|
<script src="{{ url_for('static', filename='js/inventory-book-logs.js') }}"></script>
 | 
						|
{% endblock %}
 |