254 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			254 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
{% extends "base.html" %}
 | 
						||
{% block title %}我的订单 - 太白购物商城{% endblock %}
 | 
						||
 | 
						||
{% block head %}
 | 
						||
<link rel="stylesheet" href="{{ url_for('static', filename='css/orders.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('order.list') }}" class="list-group-item list-group-item-action active">
 | 
						||
                    <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">
 | 
						||
                    <i class="bi bi-star"></i> 我的评价
 | 
						||
                </a>
 | 
						||
                <a href="#" class="list-group-item list-group-item-action">
 | 
						||
                    <i class="bi bi-heart"></i> 我的收藏
 | 
						||
                </a>
 | 
						||
                <a href="#" 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-bag"></i> 我的订单</h5>
 | 
						||
            </div>
 | 
						||
            <div class="card-body">
 | 
						||
                <!-- 订单状态筛选 -->
 | 
						||
                <ul class="nav nav-pills mb-4">
 | 
						||
                    <li class="nav-item">
 | 
						||
                        <a class="nav-link {% if not current_status %}active{% endif %}"
 | 
						||
                           href="{{ url_for('order.list') }}">全部订单</a>
 | 
						||
                    </li>
 | 
						||
                    <li class="nav-item">
 | 
						||
                        <a class="nav-link {% if current_status == 1 %}active{% endif %}"
 | 
						||
                           href="{{ url_for('order.list', status=1) }}">待支付</a>
 | 
						||
                    </li>
 | 
						||
                    <li class="nav-item">
 | 
						||
                        <a class="nav-link {% if current_status == 2 %}active{% endif %}"
 | 
						||
                           href="{{ url_for('order.list', status=2) }}">待发货</a>
 | 
						||
                    </li>
 | 
						||
                    <li class="nav-item">
 | 
						||
                        <a class="nav-link {% if current_status == 3 %}active{% endif %}"
 | 
						||
                           href="{{ url_for('order.list', status=3) }}">待收货</a>
 | 
						||
                    </li>
 | 
						||
                    <li class="nav-item">
 | 
						||
                        <a class="nav-link {% if current_status == 5 %}active{% endif %}"
 | 
						||
                           href="{{ url_for('order.list', status=5) }}">已完成</a>
 | 
						||
                    </li>
 | 
						||
                </ul>
 | 
						||
 | 
						||
                <!-- 订单列表 -->
 | 
						||
                {% if orders.items %}
 | 
						||
                    {% for order in orders.items %}
 | 
						||
                    <div class="order-card">
 | 
						||
                        <!-- 订单头部 -->
 | 
						||
                        <div class="order-header">
 | 
						||
                            <div class="row align-items-center">
 | 
						||
                                <div class="col-md-3">
 | 
						||
                                    <strong>订单号:</strong>{{ order.order_sn }}
 | 
						||
                                </div>
 | 
						||
                                <div class="col-md-3">
 | 
						||
                                    <strong>下单时间:</strong>{{ order.created_at.strftime('%Y-%m-%d %H:%M') }}
 | 
						||
                                </div>
 | 
						||
                                <div class="col-md-3">
 | 
						||
                                    {% if order.status == 1 %}
 | 
						||
                                        <span class="badge bg-warning status-badge">{{ order.get_status_text() }}</span>
 | 
						||
                                    {% elif order.status == 2 %}
 | 
						||
                                        <span class="badge bg-info status-badge">{{ order.get_status_text() }}</span>
 | 
						||
                                    {% elif order.status == 3 %}
 | 
						||
                                        <span class="badge bg-primary status-badge">{{ order.get_status_text() }}</span>
 | 
						||
                                    {% elif order.status == 5 %}
 | 
						||
                                        <span class="badge bg-success status-badge">{{ order.get_status_text() }}</span>
 | 
						||
                                    {% elif order.status == 6 %}
 | 
						||
                                        <span class="badge bg-secondary status-badge">{{ order.get_status_text() }}</span>
 | 
						||
                                    {% else %}
 | 
						||
                                        <span class="badge bg-dark status-badge">{{ order.get_status_text() }}</span>
 | 
						||
                                    {% endif %}
 | 
						||
                                </div>
 | 
						||
                                <div class="col-md-3 text-end">
 | 
						||
                                    <a href="{{ url_for('order.detail', order_id=order.id) }}"
 | 
						||
                                       class="btn btn-outline-primary btn-sm">查看详情</a>
 | 
						||
                                </div>
 | 
						||
                            </div>
 | 
						||
                        </div>
 | 
						||
 | 
						||
                        <!-- 订单商品 -->
 | 
						||
                        {% for item in order.order_items[:3] %}
 | 
						||
                        <div class="order-item">
 | 
						||
                            <div class="row align-items-center">
 | 
						||
                                <div class="col-md-2">
 | 
						||
                                    <img src="{{ item.product_image or '/static/images/default-product.jpg' }}"
 | 
						||
                                         class="product-image" alt="{{ item.product_name }}">
 | 
						||
                                </div>
 | 
						||
                                <div class="col-md-6">
 | 
						||
                                    <h6 class="mb-1">{{ item.product_name }}</h6>
 | 
						||
                                    {% if item.spec_combination %}
 | 
						||
                                    <p class="text-muted mb-0">{{ item.spec_combination }}</p>
 | 
						||
                                    {% endif %}
 | 
						||
                                </div>
 | 
						||
                                <div class="col-md-2 text-center">
 | 
						||
                                    <span class="text-muted">× {{ item.quantity }}</span>
 | 
						||
                                </div>
 | 
						||
                                <div class="col-md-2 text-end">
 | 
						||
                                    <span class="fw-bold">¥{{ "%.2f"|format(item.total_price) }}</span>
 | 
						||
                                </div>
 | 
						||
                            </div>
 | 
						||
                        </div>
 | 
						||
                        {% endfor %}
 | 
						||
 | 
						||
                        {% if order.order_items|length > 3 %}
 | 
						||
                        <div class="order-item text-center text-muted">
 | 
						||
                            <small>还有 {{ order.order_items|length - 3 }} 件商品...</small>
 | 
						||
                        </div>
 | 
						||
                        {% endif %}
 | 
						||
 | 
						||
                        <!-- 订单底部 -->
 | 
						||
                        <div class="order-footer">
 | 
						||
                            <div class="row align-items-center">
 | 
						||
                                <div class="col-md-6">
 | 
						||
                                    <div class="d-flex gap-2 flex-wrap">
 | 
						||
                                        {% if order.can_pay() %}
 | 
						||
                                        <a href="{{ url_for('order.pay', payment_sn=order.payments[0].payment_sn) }}"
 | 
						||
                                           class="btn btn-danger btn-sm">立即支付</a>
 | 
						||
                                        {% endif %}
 | 
						||
 | 
						||
                                        {% if order.can_cancel() %}
 | 
						||
                                        <button class="btn btn-outline-secondary btn-sm"
 | 
						||
                                                onclick="cancelOrder({{ order.id }})">取消订单</button>
 | 
						||
                                        {% endif %}
 | 
						||
 | 
						||
                                        {% if order.can_confirm_receipt() %}
 | 
						||
                                        <button class="btn btn-success btn-sm"
 | 
						||
                                                onclick="confirmReceipt({{ order.id }})">确认收货</button>
 | 
						||
                                        {% endif %}
 | 
						||
 | 
						||
                                        {% if order.status == 4 %}
 | 
						||
                                        <!-- 评价商品按钮,根据商品数量展示 -->
 | 
						||
                                        {% if order.order_items|length == 1 %}
 | 
						||
                                        <a href="{{ url_for('review.write_review', order_id=order.id, product_id=order.order_items[0].product_id) }}"
 | 
						||
                                           class="btn btn-outline-warning btn-sm">评价商品</a>
 | 
						||
                                        {% else %}
 | 
						||
                                        <div class="dropdown">
 | 
						||
                                            <button class="btn btn-outline-warning btn-sm dropdown-toggle" type="button" data-bs-toggle="dropdown">
 | 
						||
                                                评价商品
 | 
						||
                                            </button>
 | 
						||
                                            <ul class="dropdown-menu">
 | 
						||
                                                {% for item in order.order_items %}
 | 
						||
                                                <li>
 | 
						||
                                                    <a class="dropdown-item" 
 | 
						||
                                                       href="{{ url_for('review.write_review', order_id=order.id, product_id=item.product_id) }}">
 | 
						||
                                                        {{ item.product_name[:20] }}{% if item.product_name|length > 20 %}...{% endif %}
 | 
						||
                                                    </a>
 | 
						||
                                                </li>
 | 
						||
                                                {% endfor %}
 | 
						||
                                            </ul>
 | 
						||
                                        </div>
 | 
						||
                                        {% endif %}
 | 
						||
                                        {% endif %}
 | 
						||
                                    </div>
 | 
						||
                                </div>
 | 
						||
                                <div class="col-md-6 text-end">
 | 
						||
                                    <div>
 | 
						||
                                        <span class="text-muted">共 {{ order.order_items|length }} 件商品,</span>
 | 
						||
                                        <span class="text-muted">应付:</span>
 | 
						||
                                        <span class="order-amount">¥{{ "%.2f"|format(order.actual_amount) }}</span>
 | 
						||
                                    </div>
 | 
						||
                                </div>
 | 
						||
                            </div>
 | 
						||
                        </div>
 | 
						||
                    </div>
 | 
						||
                    {% endfor %}
 | 
						||
 | 
						||
                    <!-- 分页 -->
 | 
						||
                    {% if orders.pages > 1 %}
 | 
						||
                    <nav aria-label="订单分页">
 | 
						||
                        <ul class="pagination justify-content-center">
 | 
						||
                            {% if orders.has_prev %}
 | 
						||
                            <li class="page-item">
 | 
						||
                                <a class="page-link" href="{{ url_for('order.list', page=orders.prev_num, status=current_status) }}">上一页</a>
 | 
						||
                            </li>
 | 
						||
                            {% endif %}
 | 
						||
 | 
						||
                            {% for page_num in orders.iter_pages() %}
 | 
						||
                                {% if page_num %}
 | 
						||
                                    {% if page_num != orders.page %}
 | 
						||
                                    <li class="page-item">
 | 
						||
                                        <a class="page-link" href="{{ url_for('order.list', page=page_num, status=current_status) }}">{{ 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 orders.has_next %}
 | 
						||
                            <li class="page-item">
 | 
						||
                                <a class="page-link" href="{{ url_for('order.list', page=orders.next_num, status=current_status) }}">下一页</a>
 | 
						||
                            </li>
 | 
						||
                            {% endif %}
 | 
						||
                        </ul>
 | 
						||
                    </nav>
 | 
						||
                    {% endif %}
 | 
						||
 | 
						||
                {% else %}
 | 
						||
                    <div class="text-center empty-state">
 | 
						||
                        <i class="bi bi-bag-x display-1 text-muted"></i>
 | 
						||
                        <h5 class="mt-3 text-muted">
 | 
						||
                            {% if current_status %}
 | 
						||
                                暂无该状态订单
 | 
						||
                            {% else %}
 | 
						||
                                暂无订单
 | 
						||
                            {% endif %}
 | 
						||
                        </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>
 | 
						||
{% endblock %}
 | 
						||
 | 
						||
{% block scripts %}
 | 
						||
<script src="{{ url_for('static', filename='js/orders.js') }}"></script>
 | 
						||
{% endblock %}
 |