生成课程订单前端整合

1、复制样式文件到项目中assets

2、在default.vue 引入css样式

java 复制代码
import '~/assets/css/reset.css'
import '~/assets/css/theme.css'
import '~/assets/css/global.css'
import '~/assets/css/web.css'
import '~/assets/css/base.css'
import '~/assets/css/activity_tab.css'
import '~/assets/css/bottom_rec.css'
import '~/assets/css/nice_select.css'
import '~/assets/css/order.css'
import '~/assets/css/swiper-3.3.1.min.css'
import "~/assets/css/pages-weixinpay.css"

3、创建生成订单过程

(1)在api下创建order.js文件,定义接口。

java 复制代码
import request from '@/utils/request'

export default {
  //生成课程支付订单
  createOrder(courseId) {
    return request({
      url: `/orderservice/order/createOrder/${courseId}`,
      method: 'get'
    })
  },
  //获取订单信息
  getOrderInfo(orderNo) {
    return request({
      url: `/orderservice/order/getOrderInfo/${orderNo}`,
      method: 'get'
    })
  }
}

(2)在课程详情pages/course/_id.vue页面调用接口,生成订单。 1)修改pages/course/_id.vue页面元素,调用方法。

java 复制代码
<a href="#" title="立即购买" class="comm-btn c-btn-3" @click="createOrderInfo()">立即购买</a>
  1. 在pages/course/_id.vue定义js方法。
java 复制代码
import order from "@/api/order";

export default {
  //异步请求操作
  //params:this.$route.params
  asyncData({ params, error }) {
    //调用接口
    return course.getCourseInfo(params.id).then(response => {
      //得到返回的两个结果
      return {
        courseInfo: response.data.data.courseWebVo,
        chapterVideoList: response.data.data.chapterVideoList,
        courseId:params.id
      };
    });
  },
  methods: {
    //生成订单
    createOrderInfo(){
      order.createOrder(this.courseId)
      .then(response=>{
        //创建订单成功后,跳转订单确认页面
        //动态路由跳转
        this.$router.push({path:'/order/'+response.data.data.orderNo})
      })
    }
  }

(3)生成订单后,跳转订单确认页面,创建页面。

(4)pages/order/_oid.vue页面元素实现。

java 复制代码
<template>
  <div class="Page Confirm">
    <div class="Title">
      <h1 class="fl f18">订单确认</h1>
      <img src="~/assets/img/cart_setp2.png" class="fr">
      <div class="clear"></div>
    </div>
    <form name="flowForm" id="flowForm" method="post" action="">
      <table class="GoodList">
        <tbody>
        <tr>
          <th class="name">商品</th>
          <th class="price">原价</th>
          <th class="priceNew">价格</th>
        </tr>
        </tbody>
        <tbody>
        <!-- <tr>
          <td colspan="3" class="Title red f18 fb"><p>限时折扣</p></td>
        </tr> -->
        <tr>
          <td colspan="3" class="teacher">讲师:{{order.teacherName}}</td>
        </tr>
        <tr class="good">
          <td class="name First">
            <a target="_blank" :href="'https://localhost:3000/course/'+order.courseId">
              <img :src="order.courseCover"></a>
            <div class="goodInfo">
              <input type="hidden" class="ids ids_14502" value="14502">
              <a target="_blank" :href="'https://localhost:3000/course/'+ order.courseId">{{order.courseTitle}}</a>
            </div>
          </td>
          <td class="price">
            <p>¥<strong>{{order.totalFee}}</strong></p>
            <!-- <span class="discName red">限时8折</span> -->
          </td>
          <td class="red priceNew Last">¥<strong>{{order.totalFee}}</strong></td>
        </tr>
        <tr>
          <td class="Billing tr" colspan="3">
            <div class="tr">
              <p>共 <strong class="red">1</strong> 件商品,合计<span
                class="red f20">¥<strong>{{order.totalFee}}</strong></span></p>
            </div>
          </td>
        </tr>
        </tbody>
      </table>
      <div class="Finish">
        <div class="fr" id="AgreeDiv">
          
          <label for="Agree"><p class="on"><input type="checkbox" checked="checked">我已阅读并同意<a href="javascript:" target="_blank">《谷粒学院购买协议》</a></p></label>
        </div>
        <div class="clear"></div>
        <div class="Main fl">
          <div class="fl">
            <a :href="'/course/'+order.courseId">返回课程详情页</a>
          </div>
          <div class="fr">
            <p>共 <strong class="red">1</strong> 件商品,合计<span class="red f20">¥<strong
              id="AllPrice">{{order.totalFee}}</strong></span></p>
          </div>
        </div>
        <input name="score" value="0" type="hidden" id="usedScore">
        <button class="fr redb" type="button" id="submitPay" @click="toPay()">去支付</button>
        <div class="clear"></div>
      </div>
    </form>
  </div>
</template>

(5)pages/order/_oid.vue页面js方法实现。

java 复制代码
<script>
import order from "@/api/order";

export default {
    //异步请求操作
  //params:this.$route.params
  asyncData({ params, error }) {
    //调用接口
    return order.getOrderInfo(params.oid).then(response => {
      //得到返回的两个结果
      return {
        order:response.data.data.orderInfo
      };
    });
  }
}
</script>

4、测试

相关推荐
YikNjy5 分钟前
string(c++)
java·服务器·c++
小江的记录本27 分钟前
【Spring AI】Spring AI中RAG误触发与系统提示词泄露问题解决方案(完整版+代码方案)
java·人工智能·spring boot·后端·python·spring·面试
勇往直前plus35 分钟前
Python 属性访问与操作全解析:内置函数、魔法方法与描述符深度指南
java·网络·python
Arenaschi41 分钟前
关于GPT的版特点
java·网络·人工智能·windows·python·gpt
人道领域41 分钟前
【LeetCode刷题日记】108.将有序数组转换为二叉搜索树
java·算法·leetcode
右耳朵猫AI43 分钟前
Rust技术周刊 2026年第19周
开发语言·后端·rust
橙淮1 小时前
并发编程(五)
java
过期动态1 小时前
【LeetCode 热题 100】无重复字符的最长子串
java·数据结构·spring boot·算法·leetcode·职场和发展
Yeats_Liao1 小时前
好复杂的 IoT 世界:工业数据采集技术栈全景解析
java·物联网·struts
swipe1 小时前
LangSmith 全链路观测:从 Agent 调试到 RAG 量化评估
后端·面试·llm