提交 6501ad1c authored 作者: zyx's avatar zyx

测试

module.exports = {
demain: 'dev.ezijing.com',
url: 'https://transport.ezijing.com/api',
url: 'https://transport2.ezijing.com/api',
// apiBaseURL: 'https://zy2.ezijing.com/',
webpack: {
externals: {
......@@ -19,12 +19,12 @@ module.exports = {
// '^/api/passport': '/' // 需要rewrite重写的
// }
// },
'/usercenter': {
target: 'https://api-usercenter.ezijing.com',
pathRewrite: {
'^/usercenter': '/' // 需要rewrite重写的
}
}
// '/usercenter': {
// target: 'https://api-usercenter.ezijing.com',
// pathRewrite: {
// '^/usercenter': '/' // 需要rewrite重写的
// }
// }
/* 多个代理 */
// '/api': {
// target: $GLOBAL.webConf.url,
......
......@@ -28,10 +28,18 @@ export function getCourse(courseId) {
* 获取课程知识点
* @param {string} courseId 课程ID
*/
export function getCourseTag(courseId) {
export function getCourseTagList(courseId) {
return httpRequest.get(`/zy/v2/education/tag/tree/${courseId}`)
}
/**
* 知识点详情
* @param {string} tagId 知识点ID
*/
export function getCourseTag(tagId) {
return httpRequest.get(`/zy/v2/education/tag/${tagId}`)
}
/**
* 获取搜索记录
*/
......@@ -42,7 +50,7 @@ export function getSearchTips() {
/**
* 知识点搜索
*/
export function getTagSearchList(data) {
export function getSearchTagList(data) {
return httpRequest.post('/zy/v2/education/search/tag', data, {
headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
})
......@@ -51,7 +59,7 @@ export function getTagSearchList(data) {
/**
* 视频课程搜索
*/
export function getCourseVideoSearchList(data) {
export function getSearchCourseVideoList(data) {
return httpRequest.post('/zy/v2/education/search/chapter1', data, {
headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
})
......@@ -60,7 +68,7 @@ export function getCourseVideoSearchList(data) {
/**
* 课程搜索
*/
export function getCourseSearchList(data) {
export function getSearchCourseList(data) {
return httpRequest.post('/zy/v2/education/search/chapter2', data, {
headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
})
......
import BaseAPI from '@/api/base_api'
const httpRequest = new BaseAPI(webConf)
/**
* 获取我的已做试题
*/
export function getMyQuestion() {
return httpRequest.get('/zy/v2/examination/my-question')
}
/* 模拟考试设置角色 */
export function deleteQuestion(data) {
return httpRequest.post('/zy/v2/examination/delete-my-question', data, {
headers: { 'Content-Type': 'multipart/form-data' }
})
}
// /* 获取考试状态 */
// export function getExamStatus(data) {
// return httpRequest.get('/zy/v2/examination/examination-papers-status', data, {
// headers: { 'Content-Type': 'multipart/form-data' }
// })
// }
......@@ -30,7 +30,8 @@ export default {
margin: 0;
padding-bottom: 0.1rem;
font-size: 0.3rem;
font-weight: 600;
font-weight: bold;
line-height: 1;
color: #333;
border-bottom: 0.06rem solid #2b7ce9;
}
......
......@@ -70,6 +70,7 @@ export default {
}
.course-item__text {
font-size: 0.26rem;
line-height: 0.42rem;
color: #999;
display: -webkit-box;
-webkit-box-orient: vertical;
......
......@@ -2,7 +2,6 @@
<div class="card_box">
<div class="head" id="top-view2">
<i class="el-icon-arrow-left"></i>
<div class="title" @click="$emit('showCard')">答题卡</div>
</div>
<div id="bottom-view2">
<div class="card_con">
......@@ -71,7 +70,7 @@ export default {
}
},
mounted() {
this.scrollDom()
// this.scrollDom()
},
data() {
return {
......@@ -102,10 +101,6 @@ export default {
.card_box{
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
z-index: 9999999;
background: #fff;
.card_con{
padding: 0 .4rem;
......
......@@ -88,7 +88,7 @@
</div>
</div>
<div class="st-btn" v-if="title === '随堂测试'">
<div class="btn" @click="go(0)">全部解析</div>
<div class="btn" @click="go(1)">全部解析</div>
<div class="btn" @click="go(-1)">错误解析</div>
</div>
</div>
......@@ -132,6 +132,7 @@ export default {
go(id) {
const param = this.$route.query
param.id = id
console.log(id)
this.$emit('cardChange', param)
},
initData() {
......
<template>
<div class="exam-box">
<div id="top-view">
<div id="top-view" v-show="!topicCard.isShow">
<div class="tool-box">
<div class="time">{{ remainingTime }}</div>
<div class="tag-box">
......@@ -56,16 +56,18 @@
</swiper-slide>
</template>
</template>
<swiper-slide>
<card @cardChange="cardChange" @showCard="showCard" :questionsData="questionsData" :requestData="requestData"></card>
</swiper-slide>
</swiper>
</div>
<div class="btn-box">
<div class="btn-box" v-show="!topicCard.isShow">
<div class="padd">
<div class="analysis" @click="analyShow" v-if="$route.query.id || $route.query.course_id || $route.query.chapter_id">查看解析</div>
<div class="btn left" @click="switchQuestions('left')">上一题</div>
<div class="btn right" @click="switchQuestions('right')">下一题</div>
<div class="btn left" @click="switchQuestions('left')" v-show="currentNum !== 1">上一题</div>
<div class="btn right" @click="switchQuestions('right')" v-show="nextBtnShow">下一题</div>
</div>
</div>
<card v-if="isCard" @cardChange="cardChange" @showCard="showCard" :questionsData="questionsData" :requestData="requestData"></card>
<!-- <exam-end @cardChange="cardChange;examIsShow = false;isExamSubPop = false" @examEndBack="examEndBack" v-if="examIsShow" :questionsData="questionsData" :requestData="requestData"></exam-end> -->
<div class="exam_submit" v-if="isExamSubPop">
<div class="pop">
......@@ -82,7 +84,7 @@
<div class="tit">提示</div>
<img src="../assets/images/time.png" alt="">
<div class="txt">考试时间到!答题结束</div>
<div class="btn" @click="goExamResult ;examSubmit(1, true)">确定</div>
<div class="btn" @click="submitShowPop;goExamResult ;examSubmit(1, true)">确定</div>
</div>
</div>
</div>
......@@ -110,6 +112,7 @@ export default {
data () {
const _this = this
return {
nextBtnShow: true,
isCard: false,
opaKey: ['A', 'B', 'C', 'D', 'E', 'F', 'G'],
remainingTime: '01:00:00',
......@@ -119,9 +122,15 @@ export default {
observer: true,
on: {
slideChangeTransitionStart: function() {
if (this.activeIndex === _this.questionsData.sheet.question_count) {
_this.topicCard.isShow = true
} else {
_this.topicCard.isShow = false
}
document.getElementById('bottom-view').scrollTop = 0
_this.isAnalysis = false
_this.currentNum = this.activeIndex + 1
_this.currentNum === _this.questionsData.sheet.question_count ? _this.nextBtnShow = false : _this.nextBtnShow = true
}
}
},
......@@ -136,7 +145,10 @@ export default {
isExamSubPop: false,
timePopIsShow: false,
initTime: null,
cache: null
cache: null,
topicCard: {
isShow: false
}
}
},
computed: {
......@@ -203,15 +215,22 @@ export default {
},
// 答题卡点击跳题
cardChange(e) {
document.getElementById('bottom-view').scrollTop = 0
for (let i = 0; i < this.questionsData.sheet.question_count; i++) {
if (this.swiper.slides[i].attributes['data-dId'].nodeValue === e) {
this.swiper.slideTo(i, 0, false)
this.currentNum = this.swiper.activeIndex + 1
setTimeout(() => {
this.swiper.slideTo(i, 0, false)
this.currentNum = this.swiper.activeIndex + 1
this.topicCard.isShow = false
this.currentNum === this.questionsData.sheet.question_count ? this.nextBtnShow = false : this.nextBtnShow = true
}, 100)
}
}
},
showCard() {
this.isCard = !this.isCard
document.getElementById('bottom-view').scrollTop = 0
this.topicCard.isShow = true
this.swiper.slideTo(this.questionsData.sheet.question_count, 0, false)
},
// 标记
signQuestion() {
......@@ -568,6 +587,7 @@ export default {
font-weight: bold;
padding: .35rem .2rem;
margin-bottom: .2rem;
word-wrap:break-word;
}
.active{
color: #fff;
......
<template>
<div class="messages"></div>
</template>
<script>
import MessageCard from './messageCard.vue'
import * as api from '@/api/course.js'
export default {
props: {},
components: { MessageCard },
data() {
return {
messageList: []
}
},
getCourseTag() {
api.getCourseTag(this.courseId).then(response => {
console.log(response)
})
}
}
</script>
<style lang="scss" scoped>
.messages {
background: #eee;
}
</style>
......@@ -12,7 +12,7 @@
<course-chapter :courseId="courseId" :data="detail.chapters"></course-chapter>
</van-tab>
<van-tab title="知识点速学" name="1">
<course-tag></course-tag>
<course-tag :courseId="courseId"></course-tag>
</van-tab>
</van-tabs>
</div>
......@@ -20,7 +20,7 @@
<script>
import CourseChapter from './courseChapter.vue'
import CourseTag from './courseTag.vue'
import CourseTag from '../tag/index.vue'
import * as api from '@/api/course.js'
export default {
name: 'CourseLearnItem',
......@@ -38,7 +38,7 @@ export default {
$route: {
immediate: true,
handler(route) {
this.tabActive = route.query.tab || '0'
this.tabActive = route.query.tab || '1'
}
}
},
......@@ -60,17 +60,10 @@ export default {
})
this.detail = response
})
},
// 知识点速学
getCourseTag() {
api.getCourseTag(this.courseId).then(response => {
console.log(response)
})
}
},
beforeMount() {
this.getCourse()
this.getCourseTag()
}
}
</script>
......
<template>
<div class="message-card">
<div class="message-card-hd">
<div class="message-card__title">{{data.name}}</div>
</div>
<div class="message-card-bd">
<ul v-if="data.tag && data.tag.length">
<li v-for="item in data.tag" :key="item.id">{{item.title}}</li>
</ul>
</div>
<div class="message-card-ft">更多</div>
</div>
</template>
<script>
export default {
name: 'MessageCard',
props: {
data: { type: Object }
}
}
</script>
<template>
<div class="course-tag-message">
<div class="course-tag-message-hd">
<div class="course-tag-message__title">{{data.name}}</div>
</div>
<div class="course-tag-message-bd">
<template v-if="data.children && data.children.length">
<ul class="message-tag-list">
<template v-for="item in data.children">
<li
class="course-tag-item"
:key="item.id"
@click="$emit('search', item)"
>{{item.name}}</li>
</template>
</ul>
</template>
</div>
<div class="course-tag-message-ft">
<div class="more">
更多
<van-icon name="arrow-down"></van-icon>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'CourseTagMessage',
props: {
data: { type: Object }
}
}
</script>
<style lang="scss" scoped>
.course-tag-message {
padding: 10px;
background-color: #fff;
border-radius: 6px;
}
.course-tag-message-hd {
padding: 10px 0;
font-size: 15px;
color: #222;
}
.course-tag-item {
display: inline-block;
height: 24px;
margin: 0 10px 10px 0;
padding: 0 15px;
font-size: 13px;
color: #fff;
line-height: 24px;
background: #67a8ff;
border-radius: 12px;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
cursor: pointer;
}
.course-tag-message-ft {
padding-top: 10px;
border-top: 1px solid #eee;
}
.more {
font-size: 13px;
color: #222;
text-align: center;
cursor: pointer;
}
</style>
<template>
<div class="messages">
<template v-for="item in messageList">
<message-card :data="item" :key="item.id" @search="onSearchTag" @change="onChangeTag"></message-card>
</template>
</div>
</template>
<script>
import MessageCard from './messageCard.vue'
import * as api from '@/api/course.js'
export default {
props: { courseId: { type: String, required: true } },
components: { MessageCard },
data() {
return {
messageList: [] // {id:'', type: 1, payload: {}}
}
},
methods: {
// 获取知识点列表
getCourseTagList() {
api.getCourseTagList(this.courseId).then(response => {
this.messageList = response.chapters.map((item, index) => {
return {
id: this.genId(index),
type: 1,
from: 'system',
payload: item
}
})
})
},
// 点击标签
onSearchTag(data) {
this.messageList.push({
id: this.genId(),
type: 0,
from: 'user',
payload: { text: data.name }
})
this.searchTag(data.name)
},
searchTag(keywords) {
api.getSearchTagList({ keywords }).then(response => {
this.messageList.push({
id: this.genId(),
type: 2,
from: 'system',
payload: response
})
})
},
onChangeTag(data) {
this.messageList.push({
id: this.genId(),
type: 0,
from: 'user',
payload: { text: data.title }
})
this.getCourseTag(data.id)
},
// 获取知识点详情
getCourseTag(tagId) {
api.getCourseTag(tagId).then(response => {
this.messageList.push({
id: this.genId(),
type: 3,
from: 'system',
payload: response
})
})
},
// 生成消息ID
genId(index) {
index = index || this.messageList.length
return `message_${index}`
}
},
beforeMount() {
this.getCourseTagList()
}
}
</script>
<style lang="scss" scoped>
.messages {
background: #eee;
overflow: hidden;
}
</style>
<template>
<div class="message-card" :class="classes">
<div class="message-card-content">
<slot :data="data.payload">
<div class="message-card-text" v-if="data.type === 0">{{data.payload.text}}</div>
<course-tag-message :data="data.payload" v-on="$listeners" v-if="data.type === 1"></course-tag-message>
<search-tag-message :data="data.payload" v-on="$listeners" v-if="data.type === 2"></search-tag-message>
<tag-message :data="data.payload" v-on="$listeners" v-if="data.type === 3"></tag-message>
</slot>
</div>
</div>
</template>
<script>
import CourseTagMessage from './coursetagMessage.vue'
import SearchTagMessage from './searchtagMessage.vue'
import TagMessage from './tagMessage.vue'
export default {
name: 'MessageCard',
props: {
data: { type: Object }
},
components: { CourseTagMessage, SearchTagMessage, TagMessage },
computed: {
isMyPublish() {
return this.data.from === 'user'
},
classes() {
return {
'is-my': this.isMyPublish,
'is-system': !this.isMyPublish
}
}
}
}
</script>
<style lang="scss" scoped>
.message-card {
clear: both;
margin: 20px;
}
.message-card-text {
display: inline-block;
padding: 10px;
background-color: #fff;
border-radius: 6px;
}
.is-system {
.message-card-content {
text-align: left;
}
}
.is-my {
.message-card-content {
text-align: right;
}
.message-card-text {
color: #fff;
background-color: #67a8ff;
}
}
</style>
<template>
<div class="search-tag-message">
<p class="tips">交小通猜你想查:</p>
<ul class="search-tag-list">
<template v-for="(item,index) in data">
<li class="search-tag-item" :key="item.id" @click="$emit('change', item)">
<span class="num">{{index+1}}:</span>
<span class="text">{{item.title}}</span>
</li>
</template>
</ul>
</div>
</template>
<script>
export default {
name: 'SearchTagMessage',
props: {
data: { type: Array }
}
}
</script>
<style lang="scss" scoped>
.search-tag-message {
padding: 10px;
background-color: #fff;
border-radius: 6px;
}
.search-tag-item {
margin: 10px 0;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
.num {
display: inline-block;
min-width: 24px;
}
.text {
border-bottom: 1px solid #2b7ce9;
cursor: pointer;
}
}
</style>
<template>
<div class="tag-message" v-html="html"></div>
</template>
<script>
export default {
name: 'TagMessage',
props: {
data: { type: Object }
},
computed: {
html() {
return this.data.contents.replace(/\n/g, '<br/>')
}
}
}
</script>
<style lang="scss" scoped>
.tag-message {
padding: 10px;
background-color: #fff;
border-radius: 6px;
font-size: 13px;
line-height: 30px;
}
</style>
......@@ -120,7 +120,7 @@ export default {
}
},
wechatLogin() {
const appId = 'wx451c01d40d090d7a'
const appId = 'wxc6044475caf2805a'
// 回调地址
const redirectURI = `https://passport.ezijing.com/rest/wechat/oauth-callback?needCheck=false&identity=transport&redirectUrl=${window.location.href}`
// 微信的地址
......
<template>
<div>
<div class="top-tab">
<div :class="activeClass == '0' ? 'left btn active' : 'left btn'" @click="tab('0')">
<div class="num">{{ question.errorTotal }}</div>
<div class="txt">错题总数</div>
</div>
<div :class="activeClass == '1' ? 'right btn active' : 'right btn'" @click="tab('1')">
<div class="num">{{ question.total }}</div>
<div class="txt">做题总数</div>
</div>
</div>
<div class="exam-con">
<div class="sele" @click="screen.isShow = true">
<div class="title">选择题型</div>
<div class="txt">
<div class="t">{{ screen.checkedText }}</div>
<van-icon name="arrow" />
</div>
</div>
</div>
<div class="question-box">
<ul>
<template v-for="(item, index) in question.list">
<template v-if="changeGroup">
<template v-if="screen.screenVal == 0">
<li :key="index" v-if="item.is_right == '0'">
<img src="../../assets/images/que-type1.png" alt="" v-if="item.question_type == '6'">
<img src="../../assets/images/que-type2.png" alt="" v-if="item.question_type == '5'">
<img src="../../assets/images/que-type3.png" alt="" v-if="item.question_type == '2'">
<img src="../../assets/images/que-type4.png" alt="" v-if="item.question_type == '1'">
<div class="text">{{ item.question.question_content }}</div>
<div class="del" @click="del(item.id)">删除</div>
</li>
</template>
<template v-else>
<li :key="index" v-if="item.is_right == '0' && item.question_type == screen.screenVal">
<img src="../../assets/images/que-type1.png" alt="" v-if="item.question_type == '6'">
<img src="../../assets/images/que-type2.png" alt="" v-if="item.question_type == '5'">
<img src="../../assets/images/que-type3.png" alt="" v-if="item.question_type == '2'">
<img src="../../assets/images/que-type4.png" alt="" v-if="item.question_type == '1'">
<div class="text">{{ item.question.question_content }}</div>
<div class="del" @click="del(item.id)">删除</div>
</li>
</template>
</template>
<template v-else>
<template v-if="screen.screenVal == 0">
<li :key="index">
<img src="../../assets/images/que-type1.png" alt="" v-if="item.question_type == '6'">
<img src="../../assets/images/que-type2.png" alt="" v-if="item.question_type == '5'">
<img src="../../assets/images/que-type3.png" alt="" v-if="item.question_type == '2'">
<img src="../../assets/images/que-type4.png" alt="" v-if="item.question_type == '1'">
<div class="text">{{ item.question.question_content }}</div>
<div class="del" @click="del(item.id)">删除</div>
</li>
</template>
<template v-else>
<li :key="index" v-if="item.question_type == screen.screenVal">
<img src="../../assets/images/que-type1.png" alt="" v-if="item.question_type == '6'">
<img src="../../assets/images/que-type2.png" alt="" v-if="item.question_type == '5'">
<img src="../../assets/images/que-type3.png" alt="" v-if="item.question_type == '2'">
<img src="../../assets/images/que-type4.png" alt="" v-if="item.question_type == '1'">
<div class="text">{{ item.question.question_content }}</div>
<div class="del" @click="del(item.id)">删除</div>
</li>
</template>
</template>
</template>
</ul>
</div>
<div class="sele-pop" v-if="screen.isShow">
<div class="picker">
<van-picker
show-toolbar
:columns="screen.columns"
@confirm="onConfirm"
/>
</div>
</div>
</div>
</template>
<script>
import * as api from '@/api/my.js'
import { Toast } from 'vant'
export default {
components: {
[Toast.name]: Toast
},
data() {
return {
screen: {
isShow: false,
checkedText: '全部',
columns: ['全部', '单选题', '多选题', '判断题', '案例题'],
screenVal: '0'
},
question: {},
activeClass: '0',
changeGroup: false
}
},
methods: {
del(id) {
api.deleteQuestion({ id: id }).then(res => {
if (res.code === 0) {
Toast('删除成功')
this.initData()
}
console.log(res)
})
},
tab(e) {
this.screen.checkedText = '全部'
this.screen.screenVal = 0
this.activeClass = e
e === '0' ? this.changeGroup = false : this.changeGroup = true
},
onConfirm(value, index) {
const arr = [0, 1, 2, 5, 6]
this.screen.checkedText = value
this.screen.screenVal = arr[index]
this.screen.isShow = false
},
initData() {
api.getMyQuestion().then(res => {
let count = 0
this.question = res
this.question.list.map(item => {
if (item.is_right === '0') {
count++
}
})
this.question.errorTotal = count
})
}
},
mounted() {
this.initData()
}
}
</script>
<style lang="scss" scoped>
.top-tab{
width: 6.7rem;
height: 1.76rem;
border-bottom: 0.01rem solid #eee;
margin: 0 auto;
display: flex;
.btn{
margin-left: 1rem;
height: 100%;
.num{
text-align: center;
line-height: 100%;
font-size:.46rem;
padding-top: .4rem;
color: #999;
}
.txt{
line-height: 100%;
font-size: .3rem;
margin-top: .2rem;
color: #999;
}
}
.active{
border-bottom: 0.06rem solid rgba(43,124,233,1);
.num{
color:rgba(43,124,233,1);
}
.txt{
color:rgba(43,124,233,1);
}
}
.right{
margin-left: auto;
margin-right: 1rem;
}
}
.exam-con{
padding: 0 .4rem;
.sele{
height: 1.06rem;
display: flex;
align-items: center;
font-weight: bold;
.title{
font-size: .26rem;
color: #222;
}
.txt{
font-size: .26rem;
margin-left: auto;
display: flex;
align-items: center;
}
}
}
.sele-pop{
position: fixed;
top: 0;
left: 0;
background: rgba(0,0,0,0.8);
width: 100%;
height: 100%;
.picker{
width: 100%;
position: absolute;
bottom: 0;
left: 0;
}
}
.question-box{
padding: 0 .4rem;
ul{
li{
border-bottom: 0.01rem solid #eee;
display: flex;
padding-bottom: .4rem;
margin-bottom: .4rem;
img{
width: .48rem;
height: .6rem;
}
.text{
width: 5.2rem;
line-height:.34rem;
font-size: .26rem;
color:rgba(34,34,34,1);
margin-left: .2rem;
text-align: justify;
}
.del{
margin-left: auto;
font-size:.26rem;
color: #999;
line-height: 100%;
}
}
}
}
</style>
......@@ -10,7 +10,10 @@
<van-icon name="arrow" class="icon"/>
</li>
</ul>
<van-button type="default" @click="logout">退出登录</van-button>
<div class="login-out" @click="logout">
退出登录
<!-- <van-button type="default" >退出登录</van-button> -->
</div>
</div>
</template>
......@@ -27,20 +30,20 @@ export default {
},
{
title: '已做试题',
url: '/my/buyCourses'
},
{
title: '已学课程',
url: '/my/buyCourses'
},
{
title: '消息/通知',
url: '/my/buyCourses'
},
{
title: '意见反馈',
url: '/my/buyCourses'
url: '/my/exam'
}
// {
// title: '已学课程',
// url: '/my/buyCourses'
// }
// {
// title: '消息/通知',
// url: '/my/buyCourses'
// },
// {
// title: '意见反馈',
// url: '/my/buyCourses'
// }
]
}
},
......@@ -90,4 +93,18 @@ export default {
border: none;
}
}
.login-out{
position: absolute;
bottom: .34rem;
left: 50%;
-webkit-transform: translateX(-50%);
width:6.7rem;
height:.7rem;
background:rgba(247,247,247,1);
border-radius:.12rem;
text-align: center;
line-height: .7rem;
font-size: .3rem;
color: #ccc;
}
</style>
......@@ -39,7 +39,7 @@ export default {
},
methods: {
getList() {
api.getCourseSearchList(this.requestParams).then(response => {
api.getSearchCourseList(this.requestParams).then(response => {
this.list = response
})
},
......
......@@ -39,7 +39,7 @@ export default {
},
methods: {
getList() {
api.getTagSearchList(this.requestParams).then(response => {
api.getSearchTagList(this.requestParams).then(response => {
this.list = response
})
},
......
......@@ -46,7 +46,7 @@ export default {
},
methods: {
getList() {
api.getCourseVideoSearchList(this.requestParams).then(response => {
api.getSearchCourseVideoList(this.requestParams).then(response => {
this.list = response
})
},
......
......@@ -82,6 +82,12 @@ export default [
name: 'buyCourses',
component: () => import('../pages/my/buyCourses.vue')
},
// 我的-已做试题
{
path: '/my/exam',
name: 'examQuestions',
component: () => import('../pages/my/examQuestions.vue')
},
// 支付
{
path: '/pay',
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论