提交 8ab83997 authored 作者: lihuihui's avatar lihuihui

提取模块

上级 d9b41e57
...@@ -5,7 +5,7 @@ import ReportAPI from './report_api' ...@@ -5,7 +5,7 @@ import ReportAPI from './report_api'
import PlayerAPI from './player_api' import PlayerAPI from './player_api'
import DiscussAPI from './discuss_api' import DiscussAPI from './discuss_api'
import FeedbackAPI from './feedback_api' import FeedbackAPI from './feedback_api'
import AffairsAPI from './Affairs_api' import AffairsAPI from './affairs_api'
const Other = new OtherAPI(webConf) const Other = new OtherAPI(webConf)
const Course = new CourseAPI(webConf) const Course = new CourseAPI(webConf)
......
...@@ -2,55 +2,57 @@ import BaseAPI from '@/api/base_api' ...@@ -2,55 +2,57 @@ import BaseAPI from '@/api/base_api'
const httpRequest = new BaseAPI(webConf) const httpRequest = new BaseAPI(webConf)
/** /**
* 获取课程详情 * 获取课程讨论列表
* @param {string} courseId 课程ID
* @param {string} semesterId 学期ID
*/ */
export function getCourse(courseId, semesterId) { export const getDiscussList = (param) => {
return httpRequest.get(`/v2/education/courses/${courseId}/${semesterId}`) const paramPath = param.path || ''
return httpRequest.get(
`/v2/qa/questions${paramPath}`,
param.dataJson
)
} }
/** /**
* 获取章节资源详情 * 获取我的课程讨论列表
* @param {string} vid 资源ID
*/ */
export function getChapterVideo(vid) { export const getCourseDiscussList = (param) => {
return httpRequest.post( const paramPath = param.path || ''
'/v2/education/video-streaming', return httpRequest.get(
{ vid }, `/v2/qa/questions/course${paramPath}`,
{ headers: { 'Content-Type': 'application/json' } } param.dataJson
) )
} }
/** /**
* 获取章节资源详情 * 删除提问
* @param {string} vid 章节的资源ID
*/ */
export function getChapterVideoAliyun(vid) { export const deleteDiscuss = (qid) => {
return httpRequest.post( return httpRequest.delete(
'/v2/education/aliyun-video-streaming', `/v2/qa/questions/${qid}`
{ vid },
{ headers: { 'Content-Type': 'application/json' } }
) )
} }
/** /**
* 获取课程讨论列表 * 获取问题详情
*/ */
export const getDiscussList = (param) => { export const getDiscussDetail = (qid) => {
const paramPath = param.path || ''
return httpRequest.get( return httpRequest.get(
`/v2/qa/questions${paramPath}`, `/v2/qa/questions/${qid}`
param.dataJson
) )
} }
/** /**
* 获取我的课程讨论列表 * 删除评论
*/ */
export const getCourseDiscussList = (param) => { export const deleteComment = (cid) => {
const paramPath = param.path || '' return httpRequest.delete(
return httpRequest.get( `/v2/qa/comments/${cid}`
`/v2/qa/questions/course${paramPath}`, )
param.dataJson }
/**
* 回复评论
*/
export const callbackComment = (param) => {
return httpRequest.post(
'/v2/qa/comments',
param,
{ headers: { 'Content-Type': 'application/json' } }
) )
} }
<template>
<div>
<div class='ask'>
<template v-for='(item, index) in abswerData.comments'>
<div v-bind:key="index" class='item-list' :data-id='item.id'>
<div class='user'>
<div class='name'>{{item.user.name}}</div>
<div class='time'>{{item.user.time}}</div>
<template v-if='item.mine'><div class='right-txt' @click='deleteComment' :data-cid='item.cid'>{{ $t('pages.learn.discussDetail.delete') }}</div></template>
<div class='right-txt' @click='callbackComment' :data-sid='abswerData.sid' :data-qid='abswerData.qid' :data-quesid='abswerData.qid' :data-to='item.user.name'>{{ $t('pages.learn.discussDetail.reply') }}</div>
</div>
<div class='text'>{{item.text}}</div>
</div>
</template>
</div>
</div>
</template>
<script>
import * as api from '../api/index'
export default {
data () {
return {
abswerData: {}
}
},
props: {
dataJson: {
type: Object,
require: false
}
},
mounted() {
},
methods: {
deleteComment (e) {
const cid = e.currentTarget.dataset.cid
const loading = this.$loading({ lock: true, text: '', spinner: '', background: 'rgba(255, 255, 255, 0.9)' })
api.deleteComment(cid).then(json => {
this.$emit('updateList')
this.$message({ type: 'success', message: this.$t('pages.learn.discussDetail.deleteSuccess') })
}).catch(e => { this.$message.error(e.message) }).finally(() => { loading.close() })
},
callbackComment () {
}
},
watch: {
dataJson: function(newVal, oldVal) {
this.abswerData = newVal
console.log(this.abswerData, '==============')
}
}
}
</script>
<style lang="scss" scoped>
</style>
import './index.scss' import './index.scss'
import Discuss from './src/discuss.vue' import Discuss from './src/discuss.vue'
import DiscussDetail from './src/discussDetail.vue'
const components = [ const components = [
Discuss Discuss,
DiscussDetail
] ]
const install = function (Vue, opts = {}) { const install = function (Vue, opts = {}) {
...@@ -26,5 +28,6 @@ if (typeof window !== 'undefined' && window.Vue) { ...@@ -26,5 +28,6 @@ if (typeof window !== 'undefined' && window.Vue) {
export default { export default {
install, install,
Discuss Discuss,
DiscussDetail
} }
...@@ -28,6 +28,19 @@ ...@@ -28,6 +28,19 @@
</template> </template>
<script> <script>
/**
* 调用:通过组件传值监听watch来请求渲染
*
params: {
path: '/my', 地址参数
request: 'getDiscussList', 请求方法
dataJson: { 参数
limit: 10,
offset: 0
}
}
*/
import * as api from '../api/index' import * as api from '../api/index'
export default { export default {
......
...@@ -2,7 +2,8 @@ ...@@ -2,7 +2,8 @@
<div> <div>
<div class="con-title">{{ $t('pages.learn.discussDetail.title') }}</div> <div class="con-title">{{ $t('pages.learn.discussDetail.title') }}</div>
<div class="con-box"> <div class="con-box">
<div class='discuss-detail-scroll'> <discuss-detail :paramId='paramId'></discuss-detail>
<!-- <div class='discuss-detail-scroll'>
<div class='ques'> <div class='ques'>
<div class='title'>{{discussQues.title}}</div> <div class='title'>{{discussQues.title}}</div>
<div class='text' v-html="discussQues.text"></div> <div class='text' v-html="discussQues.text"></div>
...@@ -13,7 +14,6 @@ ...@@ -13,7 +14,6 @@
<div class='right-txt' @click='callbackComment' :data-sid='discussQues.sid' :data-qid='discussQues.qid' :data-quesid='discussQues.qid'>{{ $t('pages.learn.discussDetail.reply') }}</div> <div class='right-txt' @click='callbackComment' :data-sid='discussQues.sid' :data-qid='discussQues.qid' :data-quesid='discussQues.qid'>{{ $t('pages.learn.discussDetail.reply') }}</div>
<div class='right-txt' @click='openOrcloseDis' data-key='disQus'>{{ $t('pages.learn.discussDetail.discuss') }}({{discussQues.comCnt}})</div> <div class='right-txt' @click='openOrcloseDis' data-key='disQus'>{{ $t('pages.learn.discussDetail.discuss') }}({{discussQues.comCnt}})</div>
<div class='right-txt' @click='btnlike' :data-quesid='discussQues.qid' :data-sid='discussQues.sid' :data-tagid='discussQues.tag_id'> <div class='right-txt' @click='btnlike' :data-quesid='discussQues.qid' :data-sid='discussQues.sid' :data-tagid='discussQues.tag_id'>
<!-- <image class='img' src='{{discussQues.has_tag ? "./icons/like-on.png" : "./icons/like.png"}}'></image> -->
{{ $t('pages.learn.discussDetail.like') }}({{discussQues.likeCnt}})</div> {{ $t('pages.learn.discussDetail.like') }}({{discussQues.likeCnt}})</div>
</div> </div>
<template v-if='disQus.isShowComment'> <template v-if='disQus.isShowComment'>
...@@ -53,7 +53,6 @@ ...@@ -53,7 +53,6 @@
<div class='right-txt' @click='callbackComment' :data-sid='discussQues.sid' :data-qid='discussQues.qid' :data-ansid='item.aid'>{{ $t('pages.learn.discussDetail.reply') }}</div> <div class='right-txt' @click='callbackComment' :data-sid='discussQues.sid' :data-qid='discussQues.qid' :data-ansid='item.aid'>{{ $t('pages.learn.discussDetail.reply') }}</div>
<div class='right-txt' @click='openOrcloseDis' :data-key='answers' :data-index='index'>{{ $t('pages.learn.discussDetail.discuss') }}({{item.comCnt}})</div> <div class='right-txt' @click='openOrcloseDis' :data-key='answers' :data-index='index'>{{ $t('pages.learn.discussDetail.discuss') }}({{item.comCnt}})</div>
<div class='right-txt' @click='btnlike' :data-sid='discussQues.sid' :data-quesid='discussQues.qid' :data-ansid='item.aid' :data-tagid='item.tag_id'> <div class='right-txt' @click='btnlike' :data-sid='discussQues.sid' :data-quesid='discussQues.qid' :data-ansid='item.aid' :data-tagid='item.tag_id'>
<!-- <image class='img' src='{{item.has_tag ? "./icons/like-on.png" : "./icons/like.png"}}'></image> -->
点赞({{item.likeCnt}})</div> 点赞({{item.likeCnt}})</div>
</div> </div>
<template v-if='answers[index].isShowComment'> <template v-if='answers[index].isShowComment'>
...@@ -76,7 +75,7 @@ ...@@ -76,7 +75,7 @@
<div class='no-data'>{{ $t('pages.learn.discussDetail.noAnswer') }}</div> <div class='no-data'>{{ $t('pages.learn.discussDetail.noAnswer') }}</div>
</template> </template>
<div style='width: 750rpx; height: 200rpx;'></div> <div style='width: 750rpx; height: 200rpx;'></div>
</div> </div> -->
</div> </div>
<div style="width: 100%; height: 1.7rem;"></div> <div style="width: 100%; height: 1.7rem;"></div>
<div class='input-publish'> <div class='input-publish'>
...@@ -103,6 +102,7 @@ export default { ...@@ -103,6 +102,7 @@ export default {
}, },
data () { data () {
return { return {
paramId: {},
ckeditor: null, ckeditor: null,
courseTitle: '课程问题', courseTitle: '课程问题',
discussQues: { discussQues: {
...@@ -142,6 +142,13 @@ export default { ...@@ -142,6 +142,13 @@ export default {
call: {} call: {}
} }
}, },
created() {
this.paramId = {
sid: this.$route.params.sid,
cid: this.$route.params.cid,
id: this.$route.params.id
}
},
mounted () { mounted () {
this.call = { questionId: this.id, semester_id: '', contents: '', question_id: this.id, answer: true } this.call = { questionId: this.id, semester_id: '', contents: '', question_id: this.id, answer: true }
const loading = this.$loading({ lock: true, text: '', spinner: '', background: 'rgba(255, 255, 255, 0.9)' }) const loading = this.$loading({ lock: true, text: '', spinner: '', background: 'rgba(255, 255, 255, 0.9)' })
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论