订单页的渲染

支付方式

支付方式有2种:

  • 微信支付

  • 货到付款

与我们订单数据中的paymentType关联:

所以我们可以在Vue实例中定义一个属性来记录支付方式:

然后在页面渲染时与这个变量关联:

商品列表

效果图:

这里的送货清单,其实就是购物车中用户选择的要付款的商品

因此,我们需要在购物车跳转过来的同时,携带选中的购物车的信息

 

购物车信息获取

我们修改cart.html中的页面跳转逻辑,把用户选中的购物车信息传递过来:

然后在created钩子函数中获取购物车数据,保存到本地属性,要注意的是,我们应该在获取数据前校验用户登录状态,如果发现未登录,则直接重定向到登录页:

页面渲染

要修改的页面位置:每一个li就是一件商品

我们修改为:

<ul class="send-detail">
    <li v-for="(cart,index) in carts" :key="index">
        <div class="sendGoods">
            <ul class="yui3-g">
                <li class="yui3-u-1-6">
                    <span><img width="70px" height="70px" :src="cart.image"/></span>
                </li>
                <li class="yui3-u-7-12">
                    <div class="desc">{{cart.title}}</div>
                    <div class="seven">
                        <span v-for="(v) in JSON.parse(cart.ownSpec)">{{v + "  "}} </span>
                    </div>
                </li>
                <li class="yui3-u-1-12">
                    <div class="price">¥{{ly.formatPrice(cart.price * cart.num)}}</div>
                </li>
                <li class="yui3-u-1-12">
                    <div class="num">{{cart.num}}</div>
                </li>
                <li class="yui3-u-1-12">
                    <div class="exit">有货</div>
                </li>
            </ul>
        </div>
    </li>
</ul>

总金额

另外在商品列表下面,还有一个总金额的计算:

可以看出这里主要有4个数据:

  • 总金额:totalPay

  • 优惠返现:discount

  • 运费:postFee

  • 实付金额:actualPay

不过我们没有做优惠活动,另外运费需要结合物流系统来计算,暂时我们都设置为0,在order属性中写死:

我们通过计算属性来得到totalPayactualPay值:

computed: {
    totalNum(){
        return this.carts.reduce((c1, c2) => c1 + c2.num, 0)
    },
    totalPay(){
        return this.carts.reduce((c1, c2) => c1 + c2.price * c2.num, 0);
    },
    actualPay(){
        return this.totalPay + this.order.postFee - this.order.discount;
    }
},

然后在页面渲染:

效果:

 

好的,以下是一个简单的Django美妆商城订单面的示例代码: 1. 创建一个Django项目和一个app,命名为orders。 2. 在orders app中创建一个名为views.py的文件,添加以下代码: ```python from django.shortcuts import render def order(request): # 获取当前用户的订单信息 orders = request.user.orders.all() # 渲染订单面 return render(request, 'orders.html', {'orders': orders}) ``` 3. 在orders app中创建一个名为urls.py的文件,添加以下代码: ```python from django.urls import path from . import views urlpatterns = [ path('order/', views.order, name='order'), ] ``` 4. 在项目中的urls.py文件中导入orders app的urls.py文件,例如: ```python from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('accounts/', include('django.contrib.auth.urls')), path('orders/', include('orders.urls')), ] ``` 5. 在orders app中创建一个名为templates的文件夹,然后在templates文件夹中创建一个名为orders.html的模板文件,添加以下代码: ```html {% extends 'base.html' %} {% block content %} <h1>订单面</h1> {% if orders %} <table> <thead> <tr> <th>订单号</th> <th>商品名称</th> <th>商品数量</th> <th>商品总价</th> <th>订单状态</th> </tr> </thead> <tbody> {% for order in orders %} <tr> <td>{{ order.order_number }}</td> <td>{{ order.product.name }}</td> <td>{{ order.quantity }}</td> <td>{{ order.total_price }}</td> <td>{{ order.status }}</td> </tr> {% endfor %} </tbody> </table> {% else %} <p>您还没有任何订单。</p> {% endif %} {% endblock %} ``` 6. 在项目中的templates文件夹中创建一个名为base.html的基础模板文件,添加以下代码: ```html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>{% block title %}美妆商城{% endblock %}</title> </head> <body> {% block content %}{% endblock %} </body> </html> ``` 7. 运行Django项目并访问http://localhost:8000/orders/order/,就可以看到订单面了。 请注意,这只是一个简单的示例代码,实际的订单需要根据您的具体需求进行设计和开发。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值