2025-07-09 05:22:28 +08:00

203 lines
9.0 KiB
HTML

{% extends "base.html" %}
{% block title %}我的评价 - 太白购物商城{% endblock %}
{% block head %}
<link rel="stylesheet" href="{{ url_for('static', filename='css/review.css') }}">
{% endblock %}
{% block content %}
<div class="row">
<!-- 侧边栏 -->
<div class="col-md-3">
<div class="card">
<div class="card-header">
<h5><i class="bi bi-person-circle"></i> 个人中心</h5>
</div>
<div class="list-group list-group-flush">
<a href="{{ url_for('user.profile') }}" class="list-group-item list-group-item-action">
<i class="bi bi-person"></i> 基本信息
</a>
<a href="{{ url_for('user.orders') }}" class="list-group-item list-group-item-action">
<i class="bi bi-bag"></i> 我的订单
</a>
<a href="{{ url_for('address.index') }}" class="list-group-item list-group-item-action">
<i class="bi bi-geo-alt"></i> 收货地址
</a>
<a href="{{ url_for('review.my_reviews') }}" class="list-group-item list-group-item-action active">
<i class="bi bi-star"></i> 我的评价
</a>
<a href="{{ url_for('favorite.index') }}" class="list-group-item list-group-item-action">
<i class="bi bi-heart"></i> 我的收藏
</a>
<a href="{{ url_for('favorite.index') }}" class="list-group-item list-group-item-action">
<i class="bi bi-clock-history"></i> 浏览历史
</a>
</div>
</div>
</div>
<!-- 主要内容 -->
<div class="col-md-9">
<div class="card">
<div class="card-header">
<h5><i class="bi bi-star"></i> 我的评价</h5>
</div>
<div class="card-body">
{% if reviews.items %}
{% for review in reviews.items %}
<div class="review-item">
<div class="row">
<div class="col-md-3">
<img src="{{ review.product.main_image or '/static/images/default-product.jpg' }}"
class="img-fluid rounded" alt="{{ review.product.name }}">
</div>
<div class="col-md-9">
<h6 class="mb-2">
<a href="{{ url_for('main.product_detail', product_id=review.product_id) }}"
class="text-decoration-none">{{ review.product.name }}</a>
</h6>
<!-- 评分 -->
<div class="rating-display mb-2">
<span class="stars">{{ review.get_rating_stars() }}</span>
<span class="text-muted">{{ review.rating }}分</span>
</div>
<!-- 评价内容 -->
{% if review.content %}
<p class="review-content">{{ review.content }}</p>
{% endif %}
<!-- 评价图片 -->
{% if review.get_images() %}
<div class="review-images mb-2">
{% for image_url in review.get_images() %}
<img src="{{ image_url }}" class="review-image-thumb" alt="评价图片"
onclick="showImageModal('{{ image_url }}')">
{% endfor %}
</div>
{% endif %}
<!-- 评价信息 -->
<div class="review-meta">
<small class="text-muted">
评价时间:{{ review.created_at.strftime('%Y-%m-%d %H:%M') }}
{% if review.is_anonymous %}
| 匿名评价
{% endif %}
</small>
<div class="float-end">
<button class="btn btn-outline-danger btn-sm"
onclick="deleteReview({{ review.id }})">
<i class="bi bi-trash"></i> 删除
</button>
</div>
</div>
</div>
</div>
</div>
{% endfor %}
<!-- 分页 -->
{% if reviews.pages > 1 %}
<nav aria-label="评价分页">
<ul class="pagination justify-content-center">
{% if reviews.has_prev %}
<li class="page-item">
<a class="page-link" href="{{ url_for('review.my_reviews', page=reviews.prev_num) }}">上一页</a>
</li>
{% endif %}
{% for page_num in reviews.iter_pages() %}
{% if page_num %}
{% if page_num != reviews.page %}
<li class="page-item">
<a class="page-link" href="{{ url_for('review.my_reviews', page=page_num) }}">{{ page_num }}</a>
</li>
{% else %}
<li class="page-item active">
<span class="page-link">{{ page_num }}</span>
</li>
{% endif %}
{% else %}
<li class="page-item disabled">
<span class="page-link"></span>
</li>
{% endif %}
{% endfor %}
{% if reviews.has_next %}
<li class="page-item">
<a class="page-link" href="{{ url_for('review.my_reviews', page=reviews.next_num) }}">下一页</a>
</li>
{% endif %}
</ul>
</nav>
{% endif %}
{% else %}
<div class="text-center empty-state">
<i class="bi bi-star display-1 text-muted"></i>
<h5 class="mt-3 text-muted">暂无评价</h5>
<p class="text-muted">您还没有发表过商品评价</p>
<a href="{{ url_for('main.index') }}" class="btn btn-primary">
<i class="bi bi-shop"></i> 去购物
</a>
</div>
{% endif %}
</div>
</div>
</div>
</div>
<!-- 图片查看模态框 -->
<div class="modal fade" id="imageModal" tabindex="-1">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">查看图片</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
</div>
<div class="modal-body text-center">
<img id="modalImage" src="" class="img-fluid" alt="评价图片">
</div>
</div>
</div>
</div>
{% endblock %}
{% block scripts %}
<script src="{{ url_for('static', filename='js/review.js') }}"></script>
<script>
function showImageModal(imageUrl) {
document.getElementById('modalImage').src = imageUrl;
new bootstrap.Modal(document.getElementById('imageModal')).show();
}
function deleteReview(reviewId) {
if (confirm('确定要删除这条评价吗?')) {
fetch(`/review/delete/${reviewId}`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
}
})
.then(response => response.json())
.then(data => {
if (data.success) {
showAlert(data.message, 'success');
setTimeout(() => {
window.location.reload();
}, 1000);
} else {
showAlert(data.message, 'error');
}
})
.catch(error => {
showAlert('删除失败', 'error');
});
}
}
</script>
{% endblock %}