211 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			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 %}
 |