feat: 问题修复
This commit is contained in:
parent
4b9e970a6e
commit
b3b9720595
|
@ -10,12 +10,12 @@
|
|||
<!-- <li :class="{'success-li' : index == 2}" v-for="(item, index) in options" :key="index">
|
||||
<span>{{ optionKeys[index] }}、</span>{{ item.label }}
|
||||
</li> -->
|
||||
<li v-if="data.answerA || data.answerA === 0" :class="{'success-li' : data.rightAnswers.indexOf('A') !== -1}"><span>A、</span>{{ data.answerA }}</li>
|
||||
<li v-if="data.answerB || data.answerB === 0" :class="{'success-li' : data.rightAnswers.indexOf('B') !== -1}"><span>B、</span>{{ data.answerB }}</li>
|
||||
<li v-if="data.answerC || data.answerC === 0" :class="{'success-li' : data.rightAnswers.indexOf('C') !== -1}"><span>C、</span>{{ data.answerC }}</li>
|
||||
<li v-if="data.answerD || data.answerD === 0" :class="{'success-li' : data.rightAnswers.indexOf('D') !== -1}"><span>D、</span>{{ data.answerD }}</li>
|
||||
<li v-if="data.answerE || data.answerE === 0" :class="{'success-li' : data.rightAnswers.indexOf('E') !== -1}"><span>E、</span>{{ data.answerE }}</li>
|
||||
<li v-if="data.answerF || data.answerF === 0" :class="{'success-li' : data.rightAnswers.indexOf('F') !== -1}"><span>F、</span>{{ data.answerF }}</li>
|
||||
<li v-if="data.answerA || data.answerA === 0" :class="[{'error-li': data.myAnswerList.indexOf('A') !== -1},{'success-li' : data.rightAnswers.indexOf('A') !== -1}]"><span>A、</span>{{ data.answerA }}</li>
|
||||
<li v-if="data.answerB || data.answerB === 0" :class="[{'error-li': data.myAnswerList.indexOf('B') !== -1},{'success-li' : data.rightAnswers.indexOf('B') !== -1}]"><span>B、</span>{{ data.answerB }}</li>
|
||||
<li v-if="data.answerC || data.answerC === 0" :class="[{'error-li': data.myAnswerList.indexOf('C') !== -1},{'success-li' : data.rightAnswers.indexOf('C') !== -1}]"><span>C、</span>{{ data.answerC }}</li>
|
||||
<li v-if="data.answerD || data.answerD === 0" :class="[{'error-li': data.myAnswerList.indexOf('D') !== -1},{'success-li' : data.rightAnswers.indexOf('D') !== -1}]"><span>D、</span>{{ data.answerD }}</li>
|
||||
<li v-if="data.answerE || data.answerE === 0" :class="[{'error-li': data.myAnswerList.indexOf('E') !== -1},{'success-li' : data.rightAnswers.indexOf('E') !== -1}]"><span>E、</span>{{ data.answerE }}</li>
|
||||
<li v-if="data.answerF || data.answerF === 0" :class="[{'error-li': data.myAnswerList.indexOf('F') !== -1},{'success-li' : data.rightAnswers.indexOf('F') !== -1}]"><span>F、</span>{{ data.answerF }}</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="flex-center justify-between" style="margin-top: 10px;">
|
||||
|
@ -101,6 +101,9 @@ export default {
|
|||
li{
|
||||
line-height: 2;
|
||||
}
|
||||
.error-li{
|
||||
color: red;
|
||||
}
|
||||
.success-li{
|
||||
color: #52c41a;
|
||||
}
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
import T from 'ant-design-vue/es/table/Table'
|
||||
import get from 'lodash.get'
|
||||
|
||||
const defaultPagination = {
|
||||
pageSizeOptions: ['5', '10', '20', '30', '40']
|
||||
}
|
||||
export default {
|
||||
data () {
|
||||
return {
|
||||
|
@ -9,7 +11,7 @@ export default {
|
|||
selectedRowKeys: [],
|
||||
localLoading: false,
|
||||
localDataSource: [],
|
||||
localPagination: Object.assign({}, this.pagination)
|
||||
localPagination: Object.assign({}, defaultPagination)
|
||||
}
|
||||
},
|
||||
props: Object.assign({}, T.props, {
|
||||
|
@ -121,7 +123,7 @@ export default {
|
|||
* 如果参数为 true, 则强制刷新到第一页
|
||||
* @param Boolean bool
|
||||
*/
|
||||
refresh (bool = false) {
|
||||
refresh (bool = true) {
|
||||
bool && (this.localPagination = Object.assign({}, {
|
||||
current: 1, pageSize: this.pageSize
|
||||
}))
|
||||
|
|
|
@ -41,43 +41,50 @@ const user = {
|
|||
// 登录
|
||||
Login ({ commit }, userInfo) {
|
||||
return new Promise((resolve, reject) => {
|
||||
login(userInfo).then(response => {
|
||||
storage.set(ACCESS_TOKEN, response.token, 24 * 60 * 60 * 1000)
|
||||
commit('SET_TOKEN', response.token)
|
||||
resolve()
|
||||
}).catch(error => {
|
||||
reject('后端未启动或代理错误')
|
||||
})
|
||||
login(userInfo)
|
||||
.then(response => {
|
||||
storage.set(ACCESS_TOKEN, response.token, 24 * 60 * 60 * 1000)
|
||||
commit('SET_TOKEN', response.token)
|
||||
resolve()
|
||||
})
|
||||
.catch(error => {
|
||||
reject(error)
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 获取用户信息
|
||||
GetInfo ({ commit, state }) {
|
||||
return new Promise((resolve, reject) => {
|
||||
getLoginUser().then(response => {
|
||||
if (response.code === 200) {
|
||||
const data = response.data
|
||||
commit('SET_ROLES', 1)
|
||||
commit('SET_BUTTONS', data.permissions)
|
||||
commit('SET_INFO', data.user)
|
||||
state.person = data.person
|
||||
commit('SET_NAME', { name: data.user.userName, welcome: welcome() })
|
||||
if (data.user.avatar != null) {
|
||||
commit('SET_AVATAR', process.env.VUE_APP_API_BASE_URL + '/sysFileInfo/preview?id=' + data.user.avatar)
|
||||
getLoginUser()
|
||||
.then(response => {
|
||||
if (response.code === 200) {
|
||||
const data = response.data
|
||||
commit('SET_ROLES', 1)
|
||||
commit('SET_BUTTONS', data.permissions)
|
||||
commit('SET_INFO', data.user)
|
||||
state.person = data.person
|
||||
commit('SET_NAME', { name: data.user.userName, welcome: welcome() })
|
||||
if (data.user.avatar != null) {
|
||||
commit(
|
||||
'SET_AVATAR',
|
||||
process.env.VUE_APP_API_BASE_URL + '/sysFileInfo/preview?id=' + data.user.avatar
|
||||
)
|
||||
}
|
||||
resolve(data)
|
||||
} else {
|
||||
reject(new Error(response.msg))
|
||||
}
|
||||
resolve(data)
|
||||
} else {
|
||||
reject(new Error(response.msg))
|
||||
}
|
||||
}).catch(error => {
|
||||
reject(error)
|
||||
})
|
||||
})
|
||||
.catch(error => {
|
||||
reject(error)
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 登出
|
||||
Logout ({ commit, state }) {
|
||||
return new Promise((resolve) => {
|
||||
return new Promise(resolve => {
|
||||
const clear = function () {
|
||||
commit('SET_TOKEN', '')
|
||||
commit('SET_ROLES', [])
|
||||
|
@ -85,17 +92,20 @@ const user = {
|
|||
commit('SET_ROUTERS', [])
|
||||
storage.remove(ACCESS_TOKEN)
|
||||
}
|
||||
logout().then(() => {
|
||||
clear()
|
||||
setTimeout(() => {
|
||||
logout()
|
||||
.then(() => {
|
||||
clear()
|
||||
setTimeout(() => {
|
||||
resolve()
|
||||
}, 300)
|
||||
resolve()
|
||||
}, 300)
|
||||
resolve()
|
||||
}).catch(() => {
|
||||
resolve()
|
||||
}).finally(() => {
|
||||
clear()
|
||||
})
|
||||
})
|
||||
.catch(() => {
|
||||
resolve()
|
||||
})
|
||||
.finally(() => {
|
||||
clear()
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,111 +1,127 @@
|
|||
<template>
|
||||
<a-card :bordered="false" title="课程详情">
|
||||
<a-descriptions layout="horizontal" bordered size="small" :column="1">
|
||||
<a-descriptions-item label="课程编号"> {{ detailData.courseCode }} </a-descriptions-item>
|
||||
<a-descriptions-item label="课程名称"> {{ detailData.courseName }} </a-descriptions-item>
|
||||
<a-descriptions-item label="课程类别"> {{detailData.courseTypeName}} </a-descriptions-item>
|
||||
<a-descriptions-item label="课时"> {{ detailData.hour }} </a-descriptions-item>
|
||||
<a-descriptions-item label="学习内容"> {{ detailData.learningContent }} </a-descriptions-item>
|
||||
<a-descriptions-item label="试题数量"> {{ detailData.questionCount }} </a-descriptions-item>
|
||||
<a-descriptions-item label="备注"> {{ detailData.remark }} </a-descriptions-item>
|
||||
<a-descriptions-item label="课程编号">{{ detailData.courseCode }}</a-descriptions-item>
|
||||
<a-descriptions-item label="课程名称">{{ detailData.courseName }}</a-descriptions-item>
|
||||
<a-descriptions-item label="课程类别">
|
||||
{{ getDictLabelByKey('dictCourseType', detailData.courseType) }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="课时">{{ detailData.hour }}</a-descriptions-item>
|
||||
<a-descriptions-item label="学习内容">{{ detailData.learningContent }}</a-descriptions-item>
|
||||
<a-descriptions-item label="试题数量">{{ detailData.questionCount }}</a-descriptions-item>
|
||||
<a-descriptions-item label="备注">{{ detailData.remark }}</a-descriptions-item>
|
||||
<a-descriptions-item label="课程封面图">
|
||||
<div>
|
||||
<img style="width:75px;height:75px" :src="detailData.imagePath">
|
||||
<img style="width:75px;height:75px" :src="detailData.imagePath" />
|
||||
</div>
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="标签">
|
||||
<a-tag color="blue" v-for="(item,index) in detailData.tags" :key="index ">
|
||||
{{item}}
|
||||
<a-tag color="blue" v-for="(item, index) in detailData.courseTags" :key="index">
|
||||
{{ getDictLabelByKey('dictCourseTag', item.dictValue) }}
|
||||
</a-tag>
|
||||
</a-descriptions-item>
|
||||
</a-descriptions>
|
||||
<div class="buttonGroup">
|
||||
<a-button type="primary" @click="close"> 返回 </a-button>
|
||||
<a-button type="primary" @click="edit"> 编辑 </a-button>
|
||||
<a-button type="primary" @click="close">返回</a-button>
|
||||
<a-button type="primary" @click="edit">编辑</a-button>
|
||||
</div>
|
||||
</a-card>
|
||||
</template>
|
||||
<script>
|
||||
import _ from 'lodash'
|
||||
import { getCourseDetails } from '@/api/course/course'
|
||||
import { dictionaryDropDown } from '@/api/sys/dictionaryItem'
|
||||
export default {
|
||||
name: 'details',
|
||||
name: 'Details',
|
||||
components: {},
|
||||
data() {
|
||||
data () {
|
||||
return {
|
||||
queryParam: { id: this.$route.query.id },
|
||||
detailData: {
|
||||
imagePath: '', //图片路径
|
||||
coverPath:[],
|
||||
imagePath: '', // 图片路径
|
||||
coverPath: []
|
||||
},
|
||||
dictCourseType: [],
|
||||
dictCourseTag: [],
|
||||
tags: [], //用于存放标签
|
||||
tags: [] // 用于存放标签
|
||||
}
|
||||
},
|
||||
created: function () {
|
||||
//调用词典
|
||||
// 调用词典
|
||||
this.loadData()
|
||||
this.dictionaryDropDown()
|
||||
this.getTagName()
|
||||
},
|
||||
methods: {
|
||||
//加载数据
|
||||
loadData() {
|
||||
let parameter = {}
|
||||
getCourseDetails(Object.assign(parameter, this.queryParam)).then((res) => {
|
||||
// 加载数据
|
||||
loadData () {
|
||||
const parameter = {}
|
||||
getCourseDetails(Object.assign(parameter, this.queryParam)).then(res => {
|
||||
this.detailData = res.data
|
||||
|
||||
this.detailData.coverPath = JSON.parse(res.data.coverPath)
|
||||
console.log('JSON:::::',this.detailData.coverPath)
|
||||
|
||||
if(this.detailData.coverPath.length != 0)
|
||||
this.detailData.imagePath = this.detailData.coverPath[0].url;
|
||||
console.log('url',this.detailData.imagePath)
|
||||
console.log('JSON:::::', this.detailData.coverPath)
|
||||
|
||||
if (this.detailData.coverPath.length != 0) {
|
||||
this.detailData.imagePath = this.detailData.coverPath[0].url
|
||||
}
|
||||
console.log('url', this.detailData.imagePath)
|
||||
})
|
||||
},
|
||||
|
||||
close() {
|
||||
close () {
|
||||
this.$router.push({ path: '/course/CourseList/' + this.$route.query.type, query: {} })
|
||||
},
|
||||
edit(record) {
|
||||
this.$router.push({ path: '/course/CourseAdd', query: { id: this.queryParam.id, type: this.$route.query.type } })
|
||||
},
|
||||
|
||||
//获取数据字典
|
||||
dictionaryDropDown() {
|
||||
// 课程类别
|
||||
dictionaryDropDown({ dictionaryCode: '0006' }).then((res) => {
|
||||
this.dictCourseType = res.data
|
||||
|
||||
//课程类别的value转换成字典name
|
||||
for (let i = 0; i < this.dictCourseType.length; i++) {
|
||||
if (this.dictCourseType[i].value == this.detailData.courseType) {
|
||||
this.detailData.courseTypeName = this.dictCourseType[i].name
|
||||
}
|
||||
}
|
||||
edit (record) {
|
||||
this.$router.push({
|
||||
path: '/course/CourseAdd',
|
||||
query: { id: this.queryParam.id, type: this.$route.query.type }
|
||||
})
|
||||
},
|
||||
getTagName() {
|
||||
dictionaryDropDown({ dictionaryCode: '0008' }).then((res) => {
|
||||
getDictLabelByKey (name, value) {
|
||||
let result = '-'
|
||||
const list = this[name]
|
||||
if (Array.isArray(list)) {
|
||||
const item = _.find(list, ['value', value])
|
||||
if (item) {
|
||||
result = item.name
|
||||
}
|
||||
}
|
||||
return result
|
||||
},
|
||||
// 获取数据字典
|
||||
dictionaryDropDown () {
|
||||
// 课程类别
|
||||
dictionaryDropDown({ dictionaryCode: '0006' }).then(res => {
|
||||
this.dictCourseType = res.data
|
||||
|
||||
// // 课程类别的value转换成字典name
|
||||
// for (let i = 0; i < this.dictCourseType.length; i++) {
|
||||
// if (this.dictCourseType[i].value == this.detailData.courseType) {
|
||||
// this.detailData.courseTypeName = this.dictCourseType[i].name
|
||||
// }
|
||||
// }
|
||||
})
|
||||
},
|
||||
getTagName () {
|
||||
dictionaryDropDown({ dictionaryCode: '0008' }).then(res => {
|
||||
this.dictCourseTag = res.data
|
||||
|
||||
console.log(this.dictCourseTag)
|
||||
|
||||
let tags = []
|
||||
for (let i = 0; i < this.dictCourseTag.length; i++) {
|
||||
for (let j = 0; j < this.detailData.courseTags.length; j++) {
|
||||
if (this.dictCourseTag[i].value == this.detailData.courseTags[j].dictValue) {
|
||||
tags.push(this.dictCourseTag[i].name)
|
||||
}
|
||||
}
|
||||
}
|
||||
console.log('tagagagaga', tags)
|
||||
this.detailData.tags = tags
|
||||
// const tags = []
|
||||
// for (let i = 0; i < this.dictCourseTag.length; i++) {
|
||||
// for (let j = 0; j < this.detailData.courseTags.length; j++) {
|
||||
// if (this.dictCourseTag[i].value == this.detailData.courseTags[j].dictValue) {
|
||||
// tags.push(this.dictCourseTag[i].name)
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// console.log('tagagagaga', tags)
|
||||
// this.detailData.tags = tags
|
||||
})
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
|
@ -120,4 +136,4 @@ export default {
|
|||
text-align: center;
|
||||
margin-top: 10px;
|
||||
}
|
||||
</style>
|
||||
</style>
|
||||
|
|
|
@ -181,11 +181,16 @@ export default {
|
|||
title: '课中检查',
|
||||
content:
|
||||
'课程学习完成后都会随机出现1道小题,答对题目,方可继续下一部分学习,您有2次机会。否则之前上一小段学习时间不计算学时,需要重新学习!',
|
||||
okCancel: false,
|
||||
onOk () {
|
||||
_this.$refs.examDialog.show()
|
||||
_this.$refs.examDialog.getExamQuestion()
|
||||
},
|
||||
onCancel () {}
|
||||
onCancel () {
|
||||
return new Promise((resolve, reject) => {
|
||||
}).catch(() => console.log('Oops errors!'))
|
||||
},
|
||||
wrapClassName: 'dialogTest'
|
||||
})
|
||||
},
|
||||
// 禁止快进
|
||||
|
@ -230,4 +235,8 @@ export default {
|
|||
width: 100%;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.learn-exam-dialog ::v-deep .ant-modal-confirm-btns:first-child{
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -151,7 +151,7 @@ export default {
|
|||
},
|
||||
// 获取数据词典
|
||||
dictionaryDropDown () {
|
||||
dictionaryDropDown({ dictionaryCode: '0006' }).then((res) => {
|
||||
dictionaryDropDown({ dictionaryCode: '0009' }).then((res) => {
|
||||
this.queryOptions[1].options = dictToTree(res.data, [], 0)
|
||||
this.loading = false
|
||||
})
|
||||
|
|
|
@ -123,10 +123,10 @@ export default {
|
|||
tabChange (key) {
|
||||
console.log('key', key)
|
||||
if (key == 1) {
|
||||
this.$refs.yearTable.refresh()
|
||||
this.$refs.yearTable && this.$refs.yearTable.refresh()
|
||||
}
|
||||
if (key == 2) {
|
||||
this.$refs.unitTable.refresh()
|
||||
this.$refs.unitTable && this.$refs.unitTable.refresh()
|
||||
}
|
||||
},
|
||||
// 点击详情
|
||||
|
@ -134,7 +134,19 @@ export default {
|
|||
this.$refs.aycourseDetail.visible = true
|
||||
},
|
||||
handlerAddCourse (row) {
|
||||
this.$emit('add', { row: row })
|
||||
const _this = this
|
||||
const activeTab = this.activeTab
|
||||
this.$emit('add', {
|
||||
row: row,
|
||||
callback: function () {
|
||||
if (activeTab == 1) {
|
||||
_this.$refs.yearTable && _this.$refs.yearTable.refresh()
|
||||
}
|
||||
if (activeTab == 2) {
|
||||
_this.$refs.unitTable && _this.$refs.unitTable.refresh()
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
handlerContinue (row) {
|
||||
this.$emit('continue', { row: row })
|
||||
|
|
|
@ -187,7 +187,7 @@ export default {
|
|||
},
|
||||
methods: {
|
||||
dictionaryDropDown () {
|
||||
dictionaryDropDown({ dictionaryCode: '0006' }).then((res) => {
|
||||
dictionaryDropDown({ dictionaryCode: '0009' }).then((res) => {
|
||||
const result = dictToTree(res.data, [], 0)
|
||||
this.queryOptions[0].options = result
|
||||
this.loading = false
|
||||
|
|
Loading…
Reference in New Issue