2025-07-04 19:07:35 +08:00

231 lines
12 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{% 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('user.orders') }}" 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="#" 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">
{% 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 %}
<a href="#" class="btn btn-outline-warning btn-sm">评价商品</a>
{% 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 %}