198 lines
		
	
	
		
			8.0 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			198 lines
		
	
	
		
			8.0 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
{% extends 'base.html' %}
 | 
						|
 | 
						|
{% block title %}{{ book.title }} - 图书详情{% endblock %}
 | 
						|
 | 
						|
{% block head %}
 | 
						|
<link rel="stylesheet" href="{{ url_for('static', filename='css/book-detail.css') }}">
 | 
						|
{% endblock %}
 | 
						|
 | 
						|
{% block content %}
 | 
						|
<div class="book-detail-container">
 | 
						|
    <div class="page-header">
 | 
						|
        <h1>图书详情</h1>
 | 
						|
        <div class="actions">
 | 
						|
            <a href="{{ url_for('book.book_list') }}" class="btn btn-secondary">
 | 
						|
                <i class="fas fa-arrow-left"></i> 返回列表
 | 
						|
            </a>
 | 
						|
            {% if current_user.role_id == 1 %}
 | 
						|
            <a href="{{ url_for('book.edit_book', book_id=book.id) }}" class="btn btn-primary">
 | 
						|
                <i class="fas fa-edit"></i> 编辑图书
 | 
						|
            </a>
 | 
						|
            {% endif %}
 | 
						|
            {% if book.stock > 0 %}
 | 
						|
            <a href="#" class="btn btn-success" id="borrowBtn">
 | 
						|
                <i class="fas fa-hand-holding"></i> 借阅此书
 | 
						|
            </a>
 | 
						|
            {% endif %}
 | 
						|
        </div>
 | 
						|
    </div>
 | 
						|
 | 
						|
    <div class="book-content">
 | 
						|
        <div class="book-header">
 | 
						|
            <div class="book-cover-large">
 | 
						|
                {% if book.cover_url %}
 | 
						|
                <img src="{{ book.cover_url }}" alt="{{ book.title }}">
 | 
						|
                {% else %}
 | 
						|
                <div class="no-cover-large">
 | 
						|
                    <i class="fas fa-book"></i>
 | 
						|
                    <span>无封面</span>
 | 
						|
                </div>
 | 
						|
                {% endif %}
 | 
						|
            </div>
 | 
						|
 | 
						|
            <div class="book-main-info">
 | 
						|
                <h2 class="book-title">{{ book.title }}</h2>
 | 
						|
                <p class="book-author"><i class="fas fa-user-edit"></i> 作者: {{ book.author }}</p>
 | 
						|
 | 
						|
                <div class="book-meta-info">
 | 
						|
                    <div class="meta-item">
 | 
						|
                        <i class="fas fa-building"></i>
 | 
						|
                        <span>出版社: </span>
 | 
						|
                        <span class="meta-value">{{ book.publisher or '未知' }}</span>
 | 
						|
                    </div>
 | 
						|
                    <div class="meta-item">
 | 
						|
                        <i class="fas fa-calendar-alt"></i>
 | 
						|
                        <span>出版年份: </span>
 | 
						|
                        <span class="meta-value">{{ book.publish_year or '未知' }}</span>
 | 
						|
                    </div>
 | 
						|
                    <div class="meta-item">
 | 
						|
                        <i class="fas fa-barcode"></i>
 | 
						|
                        <span>ISBN: </span>
 | 
						|
                        <span class="meta-value">{{ book.isbn or '未知' }}</span>
 | 
						|
                    </div>
 | 
						|
                    <div class="meta-item">
 | 
						|
                        <i class="fas fa-layer-group"></i>
 | 
						|
                        <span>分类: </span>
 | 
						|
                        <span class="meta-value">{{ book.category.name if book.category else '未分类' }}</span>
 | 
						|
                    </div>
 | 
						|
                    {% if book.tags %}
 | 
						|
                    <div class="meta-item">
 | 
						|
                        <i class="fas fa-tags"></i>
 | 
						|
                        <span>标签: </span>
 | 
						|
                        <span class="meta-value">
 | 
						|
                            {% for tag in book.tags.split(',') %}
 | 
						|
                            <span class="tag">{{ tag.strip() }}</span>
 | 
						|
                            {% endfor %}
 | 
						|
                        </span>
 | 
						|
                    </div>
 | 
						|
                    {% endif %}
 | 
						|
                    <div class="meta-item">
 | 
						|
                        <i class="fas fa-yuan-sign"></i>
 | 
						|
                        <span>价格: </span>
 | 
						|
                        <span class="meta-value">{{ book.price or '未知' }}</span>
 | 
						|
                    </div>
 | 
						|
                </div>
 | 
						|
 | 
						|
                <div class="book-status-info">
 | 
						|
                    <div class="status-badge {{ 'available' if book.stock > 0 else 'unavailable' }}">
 | 
						|
                        {{ '可借阅' if book.stock > 0 else '无库存' }}
 | 
						|
                    </div>
 | 
						|
                    <div class="stock-info">
 | 
						|
                        <i class="fas fa-cubes"></i> 库存: {{ book.stock }}
 | 
						|
                    </div>
 | 
						|
                </div>
 | 
						|
            </div>
 | 
						|
        </div>
 | 
						|
 | 
						|
        <div class="book-details-section">
 | 
						|
            <h3>图书简介</h3>
 | 
						|
            <div class="book-description">
 | 
						|
                {% if book.description %}
 | 
						|
                <p>{{ book.description|nl2br }}</p>
 | 
						|
                {% else %}
 | 
						|
                <p class="no-description">暂无图书简介</p>
 | 
						|
                {% endif %}
 | 
						|
            </div>
 | 
						|
        </div>
 | 
						|
 | 
						|
        <!-- 借阅历史 (仅管理员可见) -->
 | 
						|
        {% if current_user.role_id == 1 %}
 | 
						|
        <div class="book-borrow-history">
 | 
						|
            <h3>借阅历史</h3>
 | 
						|
            {% set borrow_records = book.borrow_records.order_by(BorrowRecord.borrow_date.desc()).limit(10).all() %}
 | 
						|
 | 
						|
            {% if borrow_records %}
 | 
						|
            <table class="table borrow-table">
 | 
						|
                <thead>
 | 
						|
                    <tr>
 | 
						|
                        <th>借阅用户</th>
 | 
						|
                        <th>借阅日期</th>
 | 
						|
                        <th>应还日期</th>
 | 
						|
                        <th>实际归还</th>
 | 
						|
                        <th>状态</th>
 | 
						|
                    </tr>
 | 
						|
                </thead>
 | 
						|
                <tbody>
 | 
						|
                    {% for record in borrow_records %}
 | 
						|
                    <tr>
 | 
						|
                        <td>{{ record.user.username }}</td>
 | 
						|
                        <td>{{ record.borrow_date.strftime('%Y-%m-%d') }}</td>
 | 
						|
                        <td>{{ record.due_date.strftime('%Y-%m-%d') }}</td>
 | 
						|
                        <td>{{ record.return_date.strftime('%Y-%m-%d') if record.return_date else '-' }}</td>
 | 
						|
                        <td>
 | 
						|
                            {% if record.status == 1 and record.due_date < now %}
 | 
						|
                            <span class="badge badge-danger">已逾期</span>
 | 
						|
                            {% elif record.status == 1 %}
 | 
						|
                            <span class="badge badge-warning">借阅中</span>
 | 
						|
                            {% else %}
 | 
						|
                            <span class="badge badge-success">已归还</span>
 | 
						|
                            {% endif %}
 | 
						|
                        </td>
 | 
						|
                    </tr>
 | 
						|
                    {% endfor %}
 | 
						|
                </tbody>
 | 
						|
            </table>
 | 
						|
            {% else %}
 | 
						|
            <p class="no-records">暂无借阅记录</p>
 | 
						|
            {% endif %}
 | 
						|
        </div>
 | 
						|
        {% endif %}
 | 
						|
    </div>
 | 
						|
</div>
 | 
						|
 | 
						|
<!-- 借阅确认模态框 -->
 | 
						|
<div class="modal fade" id="borrowModal" tabindex="-1" role="dialog" aria-labelledby="borrowModalLabel" aria-hidden="true">
 | 
						|
    <div class="modal-dialog" role="document">
 | 
						|
        <div class="modal-content">
 | 
						|
            <div class="modal-header">
 | 
						|
                <h5 class="modal-title" id="borrowModalLabel">借阅确认</h5>
 | 
						|
                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
 | 
						|
                    <span aria-hidden="true">×</span>
 | 
						|
                </button>
 | 
						|
            </div>
 | 
						|
            <form id="borrowForm" action="{{ url_for('borrow.borrow_book') }}" method="POST">
 | 
						|
                <div class="modal-body">
 | 
						|
                    <p>您确定要借阅《{{ book.title }}》吗?</p>
 | 
						|
                    <input type="hidden" name="book_id" value="{{ book.id }}">
 | 
						|
 | 
						|
                    <div class="form-group">
 | 
						|
                        <label for="borrow_days">借阅天数</label>
 | 
						|
                        <select class="form-control" id="borrow_days" name="borrow_days">
 | 
						|
                            <option value="7">7天</option>
 | 
						|
                            <option value="14" selected>14天</option>
 | 
						|
                            <option value="30">30天</option>
 | 
						|
                        </select>
 | 
						|
                    </div>
 | 
						|
                </div>
 | 
						|
                <div class="modal-footer">
 | 
						|
                    <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
 | 
						|
                    <button type="submit" class="btn btn-success">确认借阅</button>
 | 
						|
                </div>
 | 
						|
            </form>
 | 
						|
        </div>
 | 
						|
    </div>
 | 
						|
</div>
 | 
						|
{% endblock %}
 | 
						|
 | 
						|
{% block scripts %}
 | 
						|
<script>
 | 
						|
    $(document).ready(function() {
 | 
						|
        // 借阅按钮点击事件
 | 
						|
        $('#borrowBtn').click(function(e) {
 | 
						|
            e.preventDefault();
 | 
						|
            $('#borrowModal').modal('show');
 | 
						|
        });
 | 
						|
    });
 | 
						|
</script>
 | 
						|
{% endblock %}
 |