当前位置: 首页 > backend >正文

16前端项目----交易页

交易

    • 交易页Trade
      • 修改默认地址
      • 商品清单
      • reduce计算总数和总价
        • 应用
    • 统一引入接口
    • 提交订单

交易页Trade

在这里插入图片描述

在computed中mapState映射出addressInfo和orderInfo,然后v-for渲染到组件当中

在这里插入图片描述

修改默认地址

<div class="address clearFix" v-for="address in addressInfo" :key="address.<span class="username" :class="{selected:address.isDefault==1}">{{address<p @click="changeDefault(address, addressInfo)"><span class="s1">{{ address.fullAdress }}</span><span class="s2">{{ address.phoneNum }}</span><span class="s3" v-show="address.isDefault==1">默认地址</span></p>
</div> 

绑定changeDefault修改默认地址

changeDefault(address, addressInfo) {addressInfo.forEach(item => {item.isDefault = 0;});address.isDefault = 1;}
  • 提取出来被选中的address,在组件右下角需要
    在computed中
    array.find()是找到数组中符合条件的那一个,然后返回该项值
userDefaultAddress(){return this.addressInfo.find(item=>item.isDefault==1)||{};
}

商品清单

在这里插入图片描述
在这里插入图片描述
获取数据展示就完事,一样的

reduce计算总数和总价

  • 理解reduce的用法
  1. reduce(callback,initialValue)接收两个参数
    - callback(回调函数):对数组每一项执行的操作
    - initialValue(可选初始值):accumulator的初始值(如果不提供,默认是数组第一项)

  2. 回调函数callback(accumulator,currentItem,index,array)通常有四个参数(常用前两个)
    - accumulator(累加器):存储上一次回调的返回值(或初始值)
    - cuurentIndex(当前项):当前被处理的数组元素
    - index(可选):当前项索引
    - array(可选):原数组本身

  3. accumulator是什么?
    accumulator(累加器)是 reduce 方法中的一个参数,它用于累积每次回调函数返回的值。你可以把它想象成一个"记忆器",它记住了到目前为止的计算结果

应用

computed当中

totalNum(){	return orderInfo.detailArrayList.reduce((accumulator,curentValue)=>{return accumulator + currentValue.skuNum;},0);
},
totalPrice(){return orderInfo.detailArrayList.reduce((accumulator,currentValue)=>{return accumulator+currentValue.orderPrice;},0)
}

统一引入接口

api里面有大量接口,每次需要import某个接口,如何实现在某处统一引入全部请求函数,然后在其他组件内可直接使用?

在main.js中

import * as API from '@/api';
console.log(API);

打印出来是一个对象,包含了所有的请求函数
在这里插入图片描述
然后在vue的原型上

new Vue({render: h => h(App),beforeCreate() {//直接挂载到vue原型对象身上//vue组件实例可以直接访问使用Vue.prototype.$API = API;Vue.prototype.$bus = this;},router,store
}).$mount('#app')

提交订单

  • 当用户点击提交订单跳转到支付页,但在跳转时需要传递给服务器订单的信息(商品、用户地址和信息、支付价格),即要再次发送请求
    在这里插入图片描述
  1. api封装请求函数
export const reqSubmitOrder = (tradeNo,data)=>request({url:`/order/auth/submitOrder?tradeNo=${tradeNo}`,data,method:'post'})
//data中k,v一致省略v

订单编号:
在这里插入图片描述
2. 组件内绑定事件触发请求
首先<a class="subBtn" @click="submitOrder">提交订单</a>

不用router-link,因为在跳转前需要处理复杂逻辑

这里我们不用vuex,直接在组件内发送请求

//methods:
async submitOrder(){//发送请求//解构出所需要传递的参数let {tradeNo} = this.orderInfo;let data = {consignee:this.userDefaultAddress.consignee,//……后面参数同样}try{let result = await this.$API.reqSubmitOrder(tradeNo,data);//成功就进行路由跳转,还需要带上订单号this.orderId = result.data;this.$router.push(`/pay?orderId=${this.orderId}`);}catch(error){alert(error.message);}
}

在这里插入图片描述
请求成功传递订单号并跳转到pay支付页面,然后在支付页可以通过订单号请求支付金额的数据

http://www.xdnf.cn/news/5296.html

相关文章:

  • QT6 源(90):阅读与注释 LCD显示类 QLCDNumber ,源代码以及属性测试。该类继承于容器框架 QFrame
  • Windows报错:OSError: [WinError 1455] 页面文件太小,无法完成操作的问题
  • Redis能保证数据不丢失吗之RDB
  • 【Web】使用Vue3开发鸿蒙的HelloWorld!
  • 模拟太阳系(C#编写的maui跨平台项目源码)
  • Autoware message_filters::Synchronizer链接错误问题
  • Axure疑难杂症:统计分析页面引入Echarts示例动态效果
  • 目录粘滞位的使用
  • JDBC链接数据库
  • 【typenum】 0 配置文件(Cargo.toml)
  • 【MySQL】事务(重点)
  • 酒店洗护用品那些事儿:品牌选择及扬州卓韵用品介绍
  • 6. 存储池配置与CephFS创建 ceph version 14.2.22
  • muduo源码解析
  • 【第33节 数据库基础概念】
  • 游戏引擎学习第269天:清理菜单绘制
  • [模型选择与调优]机器学习-part4
  • PyTorch API 6 - 编译、fft、fx、函数转换、调试、符号追踪
  • HTTP 请求中 Content-Type 头部
  • 使用谱聚类将相似度矩阵分为2类
  • 2025年RAG技术有哪些创新点?
  • 海市蜃楼的形成原理
  • M0的基础篇之PWM学习
  • adb命令查询不到设备?
  • 第二个简单的SpringBoot和Vue前后端全栈的todoapp案例
  • 告别“感觉良好”:深入RAG评估,从方法、工具到指标的全方位指南
  • Telnetlib三种异常处理方案
  • ROM详解
  • Nvidia Isaac Sim组装机器人和添加传感器,创建关节树Articulation
  • 基于 RAG 的 Agent(LangChain实现)