feat: 我的课程接口对接
This commit is contained in:
parent
c7f51a10dc
commit
04c18d2561
|
@ -48,4 +48,13 @@ export default {
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 全局样式配置
|
||||||
|
.ant-pro-basicLayout-children-content-wrap{
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-pro-grid-content{
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -0,0 +1,58 @@
|
||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
const mycourseApi = {
|
||||||
|
mycourseList: 'myCourse/getMyCourseList', // 我的课程列表,课程搜索
|
||||||
|
addMyCourse: 'myCourse/addMyCourse', // 添加课程
|
||||||
|
centerList: 'focused/training/list', // 集中培训列表
|
||||||
|
centerDetail: 'focused/training/list', // 集中培训详情
|
||||||
|
recommendList: 'sys/recommend/listPage', // 系统推荐课程列表
|
||||||
|
recommendDetail: 'sys/recommend/detail' // 系统课程推荐详情
|
||||||
|
}
|
||||||
|
|
||||||
|
export function reqMyCourseList (params) {
|
||||||
|
return request({
|
||||||
|
url: mycourseApi.mycourseList,
|
||||||
|
method: 'get',
|
||||||
|
params: params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function reqAddMyCourse (params) {
|
||||||
|
return request({
|
||||||
|
url: mycourseApi.addMyCourse,
|
||||||
|
method: 'get',
|
||||||
|
params: params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function reqCourseCenterList (params) {
|
||||||
|
return request({
|
||||||
|
url: mycourseApi.centerList,
|
||||||
|
method: 'get',
|
||||||
|
params: params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function reqCourseCenterDetail (params) {
|
||||||
|
return request({
|
||||||
|
url: mycourseApi.centerDetail,
|
||||||
|
method: 'get',
|
||||||
|
params: params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function reqRecommendList (params) {
|
||||||
|
return request({
|
||||||
|
url: mycourseApi.recommendList,
|
||||||
|
method: 'get',
|
||||||
|
params: params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function recommendDetail (params) {
|
||||||
|
return request({
|
||||||
|
url: mycourseApi.recommendDetail,
|
||||||
|
method: 'get',
|
||||||
|
params: params
|
||||||
|
})
|
||||||
|
}
|
|
@ -0,0 +1,13 @@
|
||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
const examApi = {
|
||||||
|
examList: 'exam/list', // 我的考试-预约考试列表
|
||||||
|
}
|
||||||
|
|
||||||
|
export function reqExamList (params) {
|
||||||
|
return request({
|
||||||
|
url: examApi.examList,
|
||||||
|
method: 'get',
|
||||||
|
params: params
|
||||||
|
})
|
||||||
|
}
|
|
@ -0,0 +1,13 @@
|
||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
const countApi = {
|
||||||
|
myexamCount: 'studyStatistics/getMyCourseList' // 学习统计
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getMyexamCount (params) {
|
||||||
|
return request({
|
||||||
|
url: countApi.myexamCount,
|
||||||
|
method: 'get',
|
||||||
|
params: params
|
||||||
|
})
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
const answerApi = {
|
||||||
|
answerViewReport: 'answer/viewReport', // 查看报告
|
||||||
|
answerViewResolution: 'answer/viewResolution' // 查看解析
|
||||||
|
}
|
||||||
|
|
||||||
|
export function answerViewReport (params) {
|
||||||
|
return request({
|
||||||
|
url: answerApi.answerViewReport,
|
||||||
|
method: 'get',
|
||||||
|
params: params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function answerViewResolution (params) {
|
||||||
|
return request({
|
||||||
|
url: answerApi.answerViewResolution,
|
||||||
|
method: 'get',
|
||||||
|
params: params
|
||||||
|
})
|
||||||
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="report-box">
|
<div class="report-box">
|
||||||
<a-row :gutter="30">
|
<a-row :gutter="30">
|
||||||
<a-col :span="12">
|
<a-col :span="24">
|
||||||
<a-card title="得分统计" :bordered="false">
|
<a-card title="得分统计" :bordered="false">
|
||||||
<a-row :gutter="30" style="margin: 15px 0;">
|
<a-row :gutter="30" style="margin: 15px 0;">
|
||||||
<a-col :span="12" class="flex-center">
|
<a-col :span="12" class="flex-center">
|
||||||
|
@ -16,7 +16,7 @@
|
||||||
</a-card>
|
</a-card>
|
||||||
</a-col>
|
</a-col>
|
||||||
<!-- <a-divider type="vertical" /> -->
|
<!-- <a-divider type="vertical" /> -->
|
||||||
<a-col :span="12">
|
<!-- <a-col :span="12">
|
||||||
<a-card title="答题分析" :bordered="false">
|
<a-card title="答题分析" :bordered="false">
|
||||||
<a-table :columns="columns" :data-source="dataList" size="small" :pagination="false" :bordered="false">
|
<a-table :columns="columns" :data-source="dataList" size="small" :pagination="false" :bordered="false">
|
||||||
<span slot="action" slot-scope="text, record">
|
<span slot="action" slot-scope="text, record">
|
||||||
|
@ -24,7 +24,7 @@
|
||||||
</span>
|
</span>
|
||||||
</a-table>
|
</a-table>
|
||||||
</a-card>
|
</a-card>
|
||||||
</a-col>
|
</a-col> -->
|
||||||
<a-col :span="24" style="margin-top: 15px;">
|
<a-col :span="24" style="margin-top: 15px;">
|
||||||
<a-card title="答题卡" :bordered="false">
|
<a-card title="答题卡" :bordered="false">
|
||||||
<ul class="answer-box">
|
<ul class="answer-box">
|
||||||
|
|
|
@ -37,12 +37,12 @@
|
||||||
<a-card v-for="(item, index) in recordInfo.list" :key="index" style="margin-bottom: 15px;">
|
<a-card v-for="(item, index) in recordInfo.list" :key="index" style="margin-bottom: 15px;">
|
||||||
<div class="flex-center" >
|
<div class="flex-center" >
|
||||||
<div style="flex: 1;">
|
<div style="flex: 1;">
|
||||||
<h3>{{item.courseName}}</h3>
|
<h3>{{ item.courseName }}</h3>
|
||||||
<div><span style="margin-right: 20px;">答题情况:做对{{item.rightQuestions}}/{{item.totalQuestions}}</span><span>交卷时间:{{item.submitTime}}</span></div>
|
<div><span style="margin-right: 20px;">答题情况:做对{{ item.rightQuestions }}/{{ item.totalQuestions }}</span><span>交卷时间:{{ item.submitTime }}</span></div>
|
||||||
</div>
|
</div>
|
||||||
<div style="flex: 0 0 200px; text-align: right;">
|
<div style="flex: 0 0 200px; text-align: right;">
|
||||||
<div :span="24" style="margin-bottom: 10px;"><a-button type="primary" size="small" >查看报告</a-button></div>
|
<div @click="handlerGoReport(item, 1)" :span="24" style="margin-bottom: 10px;"><a-button type="primary" size="small" >查看报告</a-button></div>
|
||||||
<div :span="24"><a-button type="primary" size="small">查看解析</a-button></div>
|
<div @click="handlerGoReport(item, 2)" :span="24"><a-button type="danger" size="small">查看解析</a-button></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</a-card>
|
</a-card>
|
||||||
|
@ -85,7 +85,7 @@ export default {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted () {
|
mounted () {
|
||||||
this.activeTab = this.$route.query.type || '1',
|
this.activeTab = this.$route.query.type || '1'
|
||||||
this.initData()
|
this.initData()
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
@ -124,6 +124,13 @@ export default {
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this[`getPractice${type}PageList`]()
|
this[`getPractice${type}PageList`]()
|
||||||
})
|
})
|
||||||
|
},
|
||||||
|
// 查看报告/查看解析
|
||||||
|
handlerGoReport (item, type) {
|
||||||
|
this.$router.push({
|
||||||
|
path: '/myreport',
|
||||||
|
query: { type: type, reportId: item.reportId }
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -86,15 +86,23 @@ export default {
|
||||||
.exam-detail {
|
.exam-detail {
|
||||||
display: flex;
|
display: flex;
|
||||||
max-height: 100%;
|
max-height: 100%;
|
||||||
|
height: 100%;
|
||||||
.exam-box {
|
.exam-box {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
|
height: 100%;
|
||||||
|
overflow-x: hidden;
|
||||||
|
overflow-y: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.exam-line {
|
.exam-line {
|
||||||
flex: 0 0 10px;
|
flex: 0 0 10px;
|
||||||
|
|
||||||
}
|
}
|
||||||
.answer-card {
|
.answer-card {
|
||||||
flex: 0 0 400px;
|
flex: 0 0 400px;
|
||||||
|
height: 100%;
|
||||||
|
overflow-x: hidden;
|
||||||
|
overflow-y: auto;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -10,10 +10,19 @@
|
||||||
:showPagination="false"
|
:showPagination="false"
|
||||||
:data-source="dataList"
|
:data-source="dataList"
|
||||||
:rowKey="record => record.id">
|
:rowKey="record => record.id">
|
||||||
<span slot="action" slot-scope="text, record, index">
|
<template slot="trainSdate" slot-scope="text, record">
|
||||||
<a v-if="index % 3 == 1" @click="$refs.userForm.edit(record)">添加课程</a>
|
{{ record.trainSdate }}至{{ record.trainEdate }}
|
||||||
<a v-if="index % 3 == 2" @click="$refs.userForm.edit(record)">继续学习</a>
|
</template>
|
||||||
<a v-if="index % 3 == 0">已完成学习</a>
|
<span slot="status" slot-scope="text, record">
|
||||||
|
<a-tag v-if="record.status === 1" color="orange">未发布</a-tag>
|
||||||
|
<a-tag v-if="record.status === 2" color="orange">未开始</a-tag>
|
||||||
|
<a-tag v-if="record.status === 3" color="blue">进行中</a-tag>
|
||||||
|
<a-tag v-if="record.status === 4" color="green">已结束</a-tag>
|
||||||
|
<a-tag v-if="record.status === 5" color="red">已中止</a-tag>
|
||||||
|
<template v-else>-</template>
|
||||||
|
</span>
|
||||||
|
<span slot="action" slot-scope="text, record">
|
||||||
|
<a @click="handlerDetail(record)">培训详情</a>
|
||||||
</span>
|
</span>
|
||||||
</a-table>
|
</a-table>
|
||||||
<CentralizedTrainingDetail ref="centralizedTrainingDetail"></CentralizedTrainingDetail>
|
<CentralizedTrainingDetail ref="centralizedTrainingDetail"></CentralizedTrainingDetail>
|
||||||
|
@ -21,10 +30,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { userPage, userDel, passwordReset } from '@/api/security/user'
|
import { reqCourseCenterList } from '@/api/mycourse/index'
|
||||||
import { getCourseList, deleteCourse } from '@/api/course/course'
|
|
||||||
import { dictionaryDropDown } from '@/api/sys/dictionaryItem'
|
|
||||||
import { dictToTree } from '@/utils/util'
|
|
||||||
import CentralizedTrainingDetail from './CentralizedTrainingDetail.vue'
|
import CentralizedTrainingDetail from './CentralizedTrainingDetail.vue'
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
|
@ -38,16 +44,16 @@ export default {
|
||||||
columns: [
|
columns: [
|
||||||
{
|
{
|
||||||
title: '培训名称',
|
title: '培训名称',
|
||||||
dataIndex: 'courseName',
|
dataIndex: 'trainName'
|
||||||
scopedSlots: { customRender: 'courseName' }
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '培训时间',
|
title: '培训时间',
|
||||||
dataIndex: 'courseTypeName'
|
dataIndex: 'trainSdate',
|
||||||
|
scopedSlots: { customRender: 'trainSdate' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '培训地点',
|
title: '培训地点',
|
||||||
dataIndex: 'date'
|
dataIndex: 'address'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '培训状态',
|
title: '培训状态',
|
||||||
|
@ -62,7 +68,7 @@ export default {
|
||||||
],
|
],
|
||||||
// 加载数据方法 必须为 Promise 对象
|
// 加载数据方法 必须为 Promise 对象
|
||||||
loadData: parameter => {
|
loadData: parameter => {
|
||||||
return getCourseList(Object.assign(parameter, this.queryParam)).then(res => {
|
return reqCourseCenterList({ pageNum: 1, pageSize: 5 }).then(res => {
|
||||||
return res
|
return res
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
@ -70,47 +76,16 @@ export default {
|
||||||
options: {}
|
options: {}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created () {
|
mounted () {
|
||||||
this.dictionaryDropDown()
|
setTimeout(() => {
|
||||||
|
this.loading = false
|
||||||
|
}, 800)
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
tabChange (key) {
|
|
||||||
console.log('key', key)
|
|
||||||
},
|
|
||||||
// 点击详情
|
// 点击详情
|
||||||
handlerDetail () {
|
handlerDetail (row) {
|
||||||
|
this.$refs.aycourseDetail.getDetail(row)
|
||||||
this.$refs.aycourseDetail.visible = true
|
this.$refs.aycourseDetail.visible = true
|
||||||
},
|
|
||||||
// 获取数据词典
|
|
||||||
dictionaryDropDown () {
|
|
||||||
dictionaryDropDown({ dictionaryCode: '0006' }).then((res) => {
|
|
||||||
this.loading = false
|
|
||||||
this.queryOptions[1].options = dictToTree(res.data, [], 0)
|
|
||||||
})
|
|
||||||
},
|
|
||||||
classificationChange (value) {
|
|
||||||
this.queryParam.classification = value
|
|
||||||
},
|
|
||||||
// 获取列表
|
|
||||||
handleRefresh () {
|
|
||||||
|
|
||||||
},
|
|
||||||
sysUserDelete (param) {
|
|
||||||
userDel(param)
|
|
||||||
.then(res => {
|
|
||||||
if (res.code === 200) {
|
|
||||||
this.$message.success('删除成功')
|
|
||||||
this.$refs.table.refresh()
|
|
||||||
} else {
|
|
||||||
this.$message.error('删除失败:' + res.msg)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.catch(err => {
|
|
||||||
this.$message.error('删除错误:' + err.msg)
|
|
||||||
})
|
|
||||||
},
|
|
||||||
handleOk () {
|
|
||||||
this.$refs.table.refresh()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,36 +1,53 @@
|
||||||
<template>
|
<template>
|
||||||
<a-modal title="集中培训详情" :width="800" :visible="visible" :confirmLoading="confirmLoading" :footer="null">
|
<a-modal title="集中培训详情" :width="800" v-model="visible" :confirmLoading="confirmLoading" :footer="null">
|
||||||
<a-descriptions title="User Info">
|
<a-descriptions :column="1" title="">
|
||||||
<a-descriptions-item label="UserName">
|
<a-descriptions-item label="培训名称">
|
||||||
Zhou Maomao
|
{{ data.trainName }}
|
||||||
</a-descriptions-item>
|
</a-descriptions-item>
|
||||||
<a-descriptions-item label="Telephone">
|
<a-descriptions-item label="培训时间">
|
||||||
1810000000
|
{{ data.trainSdate }}至{{ data.trainEdate }}
|
||||||
</a-descriptions-item>
|
</a-descriptions-item>
|
||||||
<a-descriptions-item label="Live">
|
<a-descriptions-item label="主持人">
|
||||||
Hangzhou, Zhejiang
|
{{ data.host }}
|
||||||
</a-descriptions-item>
|
</a-descriptions-item>
|
||||||
<a-descriptions-item label="Remark">
|
<a-descriptions-item label="会议人数">
|
||||||
empty
|
{{ data.personNum }}/{{ data.personNum }}
|
||||||
</a-descriptions-item>
|
</a-descriptions-item>
|
||||||
<a-descriptions-item label="Address">
|
<a-descriptions-item label="学习内容">
|
||||||
No. 18, Wantang Road, Xihu District, Hangzhou, Zhejiang, China
|
{{ data.learningContent }}
|
||||||
|
</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="联系人">
|
||||||
|
{{ data.contact }}({{ data.phone }})
|
||||||
|
</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="备注">
|
||||||
|
{{ data.remark }}
|
||||||
</a-descriptions-item>
|
</a-descriptions-item>
|
||||||
</a-descriptions>
|
</a-descriptions>
|
||||||
|
<div v-if="data.status === 3" class="flex-center">
|
||||||
|
<a-button @click="handlerJoin" type="primary">报名参加</a-button>
|
||||||
|
</div>
|
||||||
</a-modal>
|
</a-modal>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import { reqCourseCenterDetail } from '@/api/mycourse/index'
|
||||||
export default {
|
export default {
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
visible: false,
|
visible: false,
|
||||||
confirmLoading: false
|
confirmLoading: false,
|
||||||
|
data: {}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
// 开始学习
|
getDetail (row) {
|
||||||
handlerStartLearn () {}
|
reqCourseCenterDetail({ projectId: row.id }).then(res => {
|
||||||
|
this.data = res.data
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handlerJoin () {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -30,102 +30,27 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { userPage, userDel, passwordReset } from '@/api/security/user'
|
import { reqRecommendList } from '@/api/mycourse/index'
|
||||||
import { getCourseList, deleteCourse } from '@/api/course/course'
|
|
||||||
import { dictionaryDropDown } from '@/api/sys/dictionaryItem'
|
|
||||||
import { dictToTree } from '@/utils/util'
|
|
||||||
import { STable, SearchCom } from '@/components'
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
STable,
|
|
||||||
SearchCom
|
|
||||||
},
|
},
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
dataList: [],
|
dataList: [],
|
||||||
activeTab: '1',
|
loading: true
|
||||||
loading: true,
|
|
||||||
queryParam: {
|
|
||||||
classification: '' // 课程分类
|
|
||||||
},
|
|
||||||
queryOptions: [
|
|
||||||
{ type: 'input', placeholder: '课程名称', key: 'courseName' },
|
|
||||||
{ type: 'select-dic-tree', placeholder: '请选择课程类别', key: 'courseType', options: [] }
|
|
||||||
],
|
|
||||||
// 表头
|
|
||||||
columns: [
|
|
||||||
{
|
|
||||||
title: '课程名称',
|
|
||||||
dataIndex: 'courseName',
|
|
||||||
scopedSlots: { customRender: 'courseName' }
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: '课程类别',
|
|
||||||
dataIndex: 'courseTypeName'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: '学习时间',
|
|
||||||
dataIndex: 'date'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: '操作',
|
|
||||||
width: '150px',
|
|
||||||
dataIndex: 'action',
|
|
||||||
scopedSlots: { customRender: 'action' }
|
|
||||||
}
|
|
||||||
],
|
|
||||||
// 加载数据方法 必须为 Promise 对象
|
|
||||||
loadData: parameter => {
|
|
||||||
return getCourseList(Object.assign(parameter, this.queryParam)).then(res => {
|
|
||||||
return res
|
|
||||||
})
|
|
||||||
},
|
|
||||||
selectedRows: [], // 选中行的数据
|
|
||||||
options: {}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created () {
|
mounted () {
|
||||||
this.dictionaryDropDown()
|
this.initData()
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
tabChange (key) {
|
initData () {
|
||||||
console.log('key', key)
|
reqRecommendList({ pageSize: 20, pageNum: 1 }).then(res => {
|
||||||
},
|
this.dataList = res.rows
|
||||||
// 点击详情
|
this.loading = false
|
||||||
handlerDetail () {
|
|
||||||
this.$refs.aycourseDetail.visible = true
|
|
||||||
},
|
|
||||||
// 获取数据词典
|
|
||||||
dictionaryDropDown () {
|
|
||||||
dictionaryDropDown({ dictionaryCode: '0006' }).then((res) => {
|
|
||||||
this.queryOptions[1].options = dictToTree(res.data, [], 0)
|
|
||||||
this.loading = false
|
|
||||||
})
|
})
|
||||||
},
|
|
||||||
classificationChange (value) {
|
|
||||||
this.queryParam.classification = value
|
|
||||||
},
|
|
||||||
// 获取列表
|
|
||||||
handleRefresh () {
|
|
||||||
|
|
||||||
},
|
|
||||||
sysUserDelete (param) {
|
|
||||||
userDel(param)
|
|
||||||
.then(res => {
|
|
||||||
if (res.code === 200) {
|
|
||||||
this.$message.success('删除成功')
|
|
||||||
this.$refs.table.refresh()
|
|
||||||
} else {
|
|
||||||
this.$message.error('删除失败:' + res.msg)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.catch(err => {
|
|
||||||
this.$message.error('删除错误:' + err.msg)
|
|
||||||
})
|
|
||||||
},
|
|
||||||
handleOk () {
|
|
||||||
this.$refs.table.refresh()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -18,7 +18,6 @@
|
||||||
:pageSize="5"
|
:pageSize="5"
|
||||||
:columns="columns"
|
:columns="columns"
|
||||||
:data="loadData"
|
:data="loadData"
|
||||||
:alert="options.alert"
|
|
||||||
:rowKey="record => record.id">
|
:rowKey="record => record.id">
|
||||||
<span slot="index" slot-scope="text, record, index">
|
<span slot="index" slot-scope="text, record, index">
|
||||||
{{ index + 1 }}
|
{{ index + 1 }}
|
||||||
|
@ -27,34 +26,29 @@
|
||||||
<a-button @click="handlerDetail(record)" type="link" >{{ record.courseName }}</a-button>
|
<a-button @click="handlerDetail(record)" type="link" >{{ record.courseName }}</a-button>
|
||||||
</template>
|
</template>
|
||||||
<span slot="status" slot-scope="text, record">
|
<span slot="status" slot-scope="text, record">
|
||||||
<a-tag color="red">未开始</a-tag>
|
<a-tag v-if="record.status === 1" color="red">未开始</a-tag>
|
||||||
|
<a-tag v-if="record.status === 2" color="blue">进行中</a-tag>
|
||||||
|
<a-tag v-if="record.status === 3" color="green">已完成</a-tag>
|
||||||
|
<template v-else>-</template>
|
||||||
</span>
|
</span>
|
||||||
<template slot="progress" slot-scope="text, record">
|
<template slot="schedule" slot-scope="text, record">
|
||||||
<a-progress :percent="30" />
|
<a-progress :percent="record.schedule" />
|
||||||
</template>
|
</template>
|
||||||
<span slot="action" slot-scope="text, record, index">
|
<template slot="learnHours" slot-scope="text, record">
|
||||||
<a v-if="index % 3 == 1" @click="$refs.userForm.edit(record)">添加课程</a>
|
{{ record.learnHours }}小时
|
||||||
<a v-if="index % 3 == 2" @click="$refs.userForm.edit(record)">继续学习</a>
|
</template>
|
||||||
<a v-if="index % 3 == 0">已完成学习</a>
|
<span slot="action" slot-scope="text, record">
|
||||||
<!-- <a-divider type="vertical" />
|
<a-popconfirm
|
||||||
<a-dropdown v-if="hasPerm('sys:user:resetPwd') || hasPerm('sys:user:grantRole') || hasPerm('sys:user:del')">
|
v-if="record.status === 1"
|
||||||
<a class="ant-dropdown-link"> 更多 <a-icon type="down" /> </a>
|
:title="`确定要添加${record.name}课程吗?`"
|
||||||
<a-menu slot="overlay">
|
ok-text="添加"
|
||||||
<a-menu-item v-if="hasPerm('sys:user:resetPwd')">
|
cancel-text="取消"
|
||||||
<a-popconfirm placement="topRight" title="确认重置密码?" @confirm="() => resetPwd(record)">
|
@confirm="handlerAddCourse(record)"
|
||||||
<a>重置密码</a>
|
>
|
||||||
</a-popconfirm>
|
<a>添加课程</a>
|
||||||
</a-menu-item>
|
</a-popconfirm>
|
||||||
<a-menu-item v-if="hasPerm('sys:user:grantRole')">
|
<a v-if="record.status === 2" @click="handlerContinue(record)">继续学习</a>
|
||||||
<a @click="$refs.userRoleForm.userRole(record)">授权角色</a>
|
<a v-if="record.status === 3">已完成学习</a>
|
||||||
</a-menu-item>
|
|
||||||
<a-menu-item v-if="hasPerm('sys:user:delete')">
|
|
||||||
<a-popconfirm placement="topRight" title="确认删除?" @confirm="() => singleDelete(record)">
|
|
||||||
<a>删除</a>
|
|
||||||
</a-popconfirm>
|
|
||||||
</a-menu-item>
|
|
||||||
</a-menu>
|
|
||||||
</a-dropdown> -->
|
|
||||||
</span>
|
</span>
|
||||||
</s-table>
|
</s-table>
|
||||||
<MycourseDetail ref="aycourseDetail"></MycourseDetail>
|
<MycourseDetail ref="aycourseDetail"></MycourseDetail>
|
||||||
|
@ -62,8 +56,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { userPage, userDel, passwordReset } from '@/api/security/user'
|
import { reqMyCourseList } from '@/api/mycourse/index'
|
||||||
import { getCourseList, deleteCourse } from '@/api/course/course'
|
|
||||||
import { dictionaryDropDown } from '@/api/sys/dictionaryItem'
|
import { dictionaryDropDown } from '@/api/sys/dictionaryItem'
|
||||||
import { dictToTree } from '@/utils/util'
|
import { dictToTree } from '@/utils/util'
|
||||||
import { STable, SearchCom } from '@/components'
|
import { STable, SearchCom } from '@/components'
|
||||||
|
@ -80,11 +73,12 @@ export default {
|
||||||
return {
|
return {
|
||||||
loading: true,
|
loading: true,
|
||||||
queryParam: {
|
queryParam: {
|
||||||
classification: '' // 课程分类
|
name: '', // 课程分类
|
||||||
|
trainWay: ''
|
||||||
},
|
},
|
||||||
queryOptions: [
|
queryOptions: [
|
||||||
{ type: 'input', placeholder: '课程名称', key: 'courseName' },
|
{ type: 'input', placeholder: '课程名称', key: 'name' },
|
||||||
{ type: 'select-dic-tree', placeholder: '课程类别', key: 'courseType', options: [] }
|
{ type: 'select-dic-tree', placeholder: '课程类别', key: 'trainWay', options: [] }
|
||||||
],
|
],
|
||||||
// 表头
|
// 表头
|
||||||
columns: [
|
columns: [
|
||||||
|
@ -96,16 +90,16 @@ export default {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '课程名称',
|
title: '课程名称',
|
||||||
dataIndex: 'courseName',
|
dataIndex: 'name',
|
||||||
scopedSlots: { customRender: 'courseName' }
|
scopedSlots: { customRender: 'name' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '课程类别',
|
title: '课程类别',
|
||||||
dataIndex: 'courseTypeName'
|
dataIndex: 'trainType'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '学习时间',
|
title: '开始时间',
|
||||||
dataIndex: 'date'
|
dataIndex: 'startDate'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '课程状态',
|
title: '课程状态',
|
||||||
|
@ -115,19 +109,21 @@ export default {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '课程进度',
|
title: '课程进度',
|
||||||
dataIndex: 'progress',
|
dataIndex: 'schedule',
|
||||||
scopedSlots: { customRender: 'progress' },
|
scopedSlots: { customRender: 'schedule' },
|
||||||
width: '180px'
|
width: '180px'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '已休学时',
|
title: '已休学时',
|
||||||
dataIndex: 'yxxs',
|
dataIndex: 'learnHours',
|
||||||
scopedSlots: { customRender: 'present' }
|
scopedSlots: { customRender: 'learnHours' }
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
// 加载数据方法 必须为 Promise 对象
|
// 加载数据方法 必须为 Promise 对象
|
||||||
loadData: parameter => {
|
loadData: parameter => {
|
||||||
return getCourseList(Object.assign(parameter, this.queryParam)).then(res => {
|
const { info: userInfo } = this.$store.state.user
|
||||||
|
const params = { ...parameter, ...this.queryParam, personId: userInfo.id }
|
||||||
|
return reqMyCourseList(params).then(res => {
|
||||||
return res
|
return res
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
@ -162,23 +158,22 @@ export default {
|
||||||
// 获取列表
|
// 获取列表
|
||||||
handleRefresh () {
|
handleRefresh () {
|
||||||
|
|
||||||
},
|
|
||||||
sysUserDelete (param) {
|
|
||||||
userDel(param)
|
|
||||||
.then(res => {
|
|
||||||
if (res.code === 200) {
|
|
||||||
this.$message.success('删除成功')
|
|
||||||
this.$refs.table.refresh()
|
|
||||||
} else {
|
|
||||||
this.$message.error('删除失败:' + res.msg)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.catch(err => {
|
|
||||||
this.$message.error('删除错误:' + err.msg)
|
|
||||||
})
|
|
||||||
},
|
},
|
||||||
handleOk () {
|
handleOk () {
|
||||||
this.$refs.table.refresh()
|
this.$refs.table.refresh()
|
||||||
|
},
|
||||||
|
// 添加课程
|
||||||
|
handlerAddCourse (row) {
|
||||||
|
const _this = this
|
||||||
|
this.$emit('add', {
|
||||||
|
row: row,
|
||||||
|
callback: function () {
|
||||||
|
_this.$refs.table.refresh()
|
||||||
|
} })
|
||||||
|
},
|
||||||
|
// 继续学习
|
||||||
|
handlerContinue (row) {
|
||||||
|
this.$emit('continue', { row: row })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,62 +5,66 @@
|
||||||
>
|
>
|
||||||
<a-tabs :default-active-key="activeTab" @change="tabChange">
|
<a-tabs :default-active-key="activeTab" @change="tabChange">
|
||||||
<a-tab-pane key="1" tab="年度培训计划">
|
<a-tab-pane key="1" tab="年度培训计划">
|
||||||
<a-table
|
<s-table
|
||||||
ref="table"
|
ref="yearTable"
|
||||||
:pageSize="5"
|
:pageSize="5"
|
||||||
:columns="columns"
|
:columns="columns"
|
||||||
:showPagination="false"
|
:data="loadDataYear"
|
||||||
:data-source="dataList"
|
|
||||||
:rowKey="record => record.id">
|
:rowKey="record => record.id">
|
||||||
<span slot="action" slot-scope="text, record, index">
|
<span slot="action" slot-scope="text, record">
|
||||||
<a v-if="index % 3 == 1" @click="$refs.userForm.edit(record)">添加课程</a>
|
<a-popconfirm
|
||||||
<a v-if="index % 3 == 2" @click="$refs.userForm.edit(record)">继续学习</a>
|
v-if="record.status === 1"
|
||||||
<a v-if="index % 3 == 0">已完成学习</a>
|
:title="`确定要添加${record.name}课程吗?`"
|
||||||
|
ok-text="添加"
|
||||||
|
cancel-text="取消"
|
||||||
|
@confirm="handlerAddCourse(record)"
|
||||||
|
>
|
||||||
|
<a>添加课程</a>
|
||||||
|
</a-popconfirm>
|
||||||
|
<a v-if="record.status === 2" @click="handlerContinue(record)">继续学习</a>
|
||||||
|
<a v-if="record.status === 3">已完成学习</a>
|
||||||
</span>
|
</span>
|
||||||
</a-table>
|
</s-table>
|
||||||
</a-tab-pane>
|
</a-tab-pane>
|
||||||
<a-tab-pane key="2" tab="单位培训计划">
|
<a-tab-pane key="2" tab="单位培训计划">
|
||||||
<a-table
|
<s-table
|
||||||
ref="table"
|
ref="unitTable"
|
||||||
:pageSize="5"
|
:pageSize="5"
|
||||||
:columns="columns"
|
:columns="columns"
|
||||||
:showPagination="false"
|
:data="loadDataUnit"
|
||||||
:data-source="dataList"
|
|
||||||
:rowKey="record => record.id">
|
:rowKey="record => record.id">
|
||||||
<span slot="action" slot-scope="text, record, index">
|
<span slot="action" slot-scope="text, record">
|
||||||
<a v-if="index % 3 == 1" @click="$refs.userForm.edit(record)">添加课程</a>
|
<a-popconfirm
|
||||||
<a v-if="index % 3 == 2" @click="$refs.userForm.edit(record)">继续学习</a>
|
v-if="record.status === 1"
|
||||||
<a v-if="index % 3 == 0">已完成学习</a>
|
:title="`确定要添加${record.name}课程吗?`"
|
||||||
|
ok-text="添加"
|
||||||
|
cancel-text="取消"
|
||||||
|
@confirm="handlerAddCourse(record)"
|
||||||
|
>
|
||||||
|
<a>添加课程</a>
|
||||||
|
</a-popconfirm>
|
||||||
|
<a v-if="record.status === 2" @click="handlerContinue(record)">继续学习</a>
|
||||||
|
<a v-if="record.status === 3">已完成学习</a>
|
||||||
</span>
|
</span>
|
||||||
</a-table>
|
</s-table>
|
||||||
</a-tab-pane>
|
</a-tab-pane>
|
||||||
</a-tabs>
|
</a-tabs>
|
||||||
</a-card>
|
</a-card>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { userPage, userDel, passwordReset } from '@/api/security/user'
|
import { reqMyCourseList } from '@/api/mycourse/index'
|
||||||
import { getCourseList, deleteCourse } from '@/api/course/course'
|
import { STable } from '@/components'
|
||||||
import { dictionaryDropDown } from '@/api/sys/dictionaryItem'
|
|
||||||
import { dictToTree } from '@/utils/util'
|
|
||||||
import { STable, SearchCom } from '@/components'
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
STable,
|
STable
|
||||||
SearchCom
|
|
||||||
},
|
},
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
dataList: [],
|
dataListYear: [],
|
||||||
|
dataListUnit: [],
|
||||||
activeTab: '1',
|
activeTab: '1',
|
||||||
loading: true,
|
loading: true,
|
||||||
queryParam: {
|
|
||||||
classification: '' // 课程分类
|
|
||||||
},
|
|
||||||
queryOptions: [
|
|
||||||
{ type: 'input', placeholder: '课程名称', key: 'courseName' },
|
|
||||||
{ type: 'select-dic-tree', placeholder: '请选择课程类别', key: 'courseType', options: [] }
|
|
||||||
],
|
|
||||||
// 表头
|
// 表头
|
||||||
columns: [
|
columns: [
|
||||||
{
|
{
|
||||||
|
@ -84,57 +88,46 @@ export default {
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
// 加载数据方法 必须为 Promise 对象
|
// 加载数据方法 必须为 Promise 对象
|
||||||
loadData: parameter => {
|
loadDataYear: parameter => {
|
||||||
return getCourseList(Object.assign(parameter, this.queryParam)).then(res => {
|
const { info: userInfo } = this.$store.state.user
|
||||||
|
return reqMyCourseList({ personId: userInfo.id, type: 2, pageNum: 1, pageSize: 5 }).then(res => {
|
||||||
return res
|
return res
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
selectedRows: [], // 选中行的数据
|
loadDataUnit: parameter => {
|
||||||
options: {}
|
const { info: userInfo } = this.$store.state.user
|
||||||
|
return reqMyCourseList({ personId: userInfo.id, type: 3, pageNum: 1, pageSize: 5 }).then(res => {
|
||||||
|
return res
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created () {
|
mounted () {
|
||||||
this.dictionaryDropDown()
|
setTimeout(() => {
|
||||||
|
this.loading = false
|
||||||
|
}, 800)
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
tabChange (key) {
|
tabChange (key) {
|
||||||
console.log('key', key)
|
console.log('key', key)
|
||||||
|
if (key == 1) {
|
||||||
|
this.$refs.yearTable.refresh()
|
||||||
|
}
|
||||||
|
if (key == 2) {
|
||||||
|
this.$refs.unitTable.refresh()
|
||||||
|
}
|
||||||
},
|
},
|
||||||
// 点击详情
|
// 点击详情
|
||||||
handlerDetail () {
|
handlerDetail () {
|
||||||
this.$refs.aycourseDetail.visible = true
|
this.$refs.aycourseDetail.visible = true
|
||||||
},
|
},
|
||||||
// 获取数据词典
|
handlerAddCourse (row) {
|
||||||
dictionaryDropDown () {
|
this.$emit('add', { row: row })
|
||||||
dictionaryDropDown({ dictionaryCode: '0006' }).then((res) => {
|
|
||||||
this.queryOptions[1].options = dictToTree(res.data, [], 0)
|
|
||||||
this.loading = false
|
|
||||||
})
|
|
||||||
},
|
},
|
||||||
classificationChange (value) {
|
handlerContinue (row) {
|
||||||
this.queryParam.classification = value
|
this.$emit('continue', { row: row })
|
||||||
},
|
|
||||||
// 获取列表
|
|
||||||
handleRefresh () {
|
|
||||||
|
|
||||||
},
|
|
||||||
sysUserDelete (param) {
|
|
||||||
userDel(param)
|
|
||||||
.then(res => {
|
|
||||||
if (res.code === 200) {
|
|
||||||
this.$message.success('删除成功')
|
|
||||||
this.$refs.table.refresh()
|
|
||||||
} else {
|
|
||||||
this.$message.error('删除失败:' + res.msg)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.catch(err => {
|
|
||||||
this.$message.error('删除错误:' + err.msg)
|
|
||||||
})
|
|
||||||
},
|
|
||||||
handleOk () {
|
|
||||||
this.$refs.table.refresh()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -2,12 +2,12 @@
|
||||||
<div>
|
<div>
|
||||||
<a-card :bordered="false" >
|
<a-card :bordered="false" >
|
||||||
<a-card title="我的课程" :bodyStyle="{padding: '0px !important'}" >
|
<a-card title="我的课程" :bodyStyle="{padding: '0px !important'}" >
|
||||||
<MyCourseList></MyCourseList>
|
<MyCourseList @add="handlerAddCourse" @continue="handlerContinue"></MyCourseList>
|
||||||
</a-card>
|
</a-card>
|
||||||
<br />
|
<br />
|
||||||
<a-card title="培训计划" :bodyStyle="{padding: '0px !important'}">
|
<a-card title="培训计划" :bodyStyle="{padding: '0px !important'}">
|
||||||
<a slot="extra" href="#">查看更多</a>
|
<a slot="extra" href="#">查看更多</a>
|
||||||
<TrainingPlan></TrainingPlan>
|
<TrainingPlan @add="handlerAddCourse" @continue="handlerContinue"></TrainingPlan>
|
||||||
</a-card>
|
</a-card>
|
||||||
<br />
|
<br />
|
||||||
<a-card title="集中培训" :bodyStyle="{padding: '0px !important'}">
|
<a-card title="集中培训" :bodyStyle="{padding: '0px !important'}">
|
||||||
|
@ -27,6 +27,7 @@ import MyCourseList from './MyCourseList.vue' // 我的课程
|
||||||
import TrainingPlan from './TrainingPlan.vue' // 培训计划
|
import TrainingPlan from './TrainingPlan.vue' // 培训计划
|
||||||
import CentralizedTraining from './CentralizedTraining.vue' // 集中培训
|
import CentralizedTraining from './CentralizedTraining.vue' // 集中培训
|
||||||
import CourseRecommendation from './CourseRecommendation.vue' // 课程推荐
|
import CourseRecommendation from './CourseRecommendation.vue' // 课程推荐
|
||||||
|
import { reqAddMyCourse } from '@/api/mycourse/index'
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
MyCourseList,
|
MyCourseList,
|
||||||
|
@ -41,6 +42,23 @@ export default {
|
||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
|
// 添加课程
|
||||||
|
handlerAddCourse (row, callback) {
|
||||||
|
const { info: userInfo } = this.$store.state.user
|
||||||
|
reqAddMyCourse({ personId: userInfo.id, projectId: row.id }).then(res => {
|
||||||
|
if (res.code === 200) {
|
||||||
|
this.$message.success('添加课程成功!')
|
||||||
|
callback && callback()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 继续学习
|
||||||
|
handlerContinue (row) {
|
||||||
|
this.$router.push({
|
||||||
|
path: '/mycourse/courseLearn',
|
||||||
|
query: { courseId: row.id }
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -51,7 +51,7 @@
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { STable, SearchCom } from '@/components'
|
import { STable, SearchCom } from '@/components'
|
||||||
import { getCourseList } from '@/api/course/course'
|
import { reqExamList } from '@/api/myexam/exam'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: { STable, SearchCom },
|
components: { STable, SearchCom },
|
||||||
|
@ -142,12 +142,12 @@ export default {
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
loadExamData: parameter => {
|
loadExamData: parameter => {
|
||||||
return getCourseList(Object.assign(parameter, this.queryParam)).then(res => {
|
return reqExamList(Object.assign(parameter, this.queryParam)).then(res => {
|
||||||
return res
|
return res
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
loadExamDoneData: parameter => {
|
loadExamDoneData: parameter => {
|
||||||
return getCourseList(Object.assign(parameter, this.queryParam)).then(res => {
|
return reqExamList(Object.assign(parameter, this.queryParam)).then(res => {
|
||||||
return res
|
return res
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -55,6 +55,7 @@ import {
|
||||||
NumberInfo,
|
NumberInfo,
|
||||||
MiniSmoothArea
|
MiniSmoothArea
|
||||||
} from '@/components'
|
} from '@/components'
|
||||||
|
import { getMyexamCount } from '@/api/myexamCount/index.js'
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
ChartCard,
|
ChartCard,
|
||||||
|
@ -71,6 +72,18 @@ export default {
|
||||||
return {
|
return {
|
||||||
loading: false
|
loading: false
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
mounted () {
|
||||||
|
this.initData()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
initData () {
|
||||||
|
console.log('this.$sotre', this.$store)
|
||||||
|
const { info: userInfo } = this.$store.state.user
|
||||||
|
getMyexamCount({ personId: userInfo.id }).then(res => {
|
||||||
|
console.log('data', res)
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -1,24 +1,24 @@
|
||||||
<template>
|
<template>
|
||||||
<a-card :bordered="false">
|
<a-card :bordered="false">
|
||||||
<a-tabs :default-active-key="activeTab">
|
<a-tabs v-if="query.type" :default-active-key="query.type">
|
||||||
<a-tab-pane key="1" tab="答题报告">
|
<a-tab-pane key="1" tab="答题报告">
|
||||||
<a-card :bordered="false" :bodyStyle="{padding: '0px !important'}" :headStyle="{paddingLeft: '0px !important'}">
|
<a-card :bordered="false" :bodyStyle="{padding: '0px !important'}" :headStyle="{paddingLeft: '0px !important'}">
|
||||||
<template slot="title">
|
<template slot="title">
|
||||||
<h3>建筑施工安全培训第一期课程学习</h3>
|
<h3>{{viewReport.courseName}}</h3>
|
||||||
<div class="sub-info"><span>交卷时间:2021年06月11日 15:06</span><span>答题用时:31分19秒</span></div>
|
<div class="sub-info"><span>交卷时间:{{viewReport.submitTime}}</span><span v-if="viewReport.totalScore">答题用时:{{viewReport.totalScore}}</span></div>
|
||||||
<DbReport></DbReport>
|
<DbReport :data="viewReport.reportItems"></DbReport>
|
||||||
</template>
|
</template>
|
||||||
</a-card>
|
</a-card>
|
||||||
</a-tab-pane>
|
</a-tab-pane>
|
||||||
<a-tab-pane key="2" tab="查看解析">
|
<a-tab-pane key="2" tab="查看解析">
|
||||||
<a-card :bordered="false" :bodyStyle="{padding: '0px !important'}" :headStyle="{paddingLeft: '0px !important'}">
|
<a-card :bordered="false" :bodyStyle="{padding: '0px !important'}" :headStyle="{paddingLeft: '0px !important'}">
|
||||||
<template slot="title">
|
<template slot="title">
|
||||||
<h4>建筑施工安全培训第一期课程学习</h4>
|
<h4>{{viewReport.courseName}}</h4>
|
||||||
<div class="sub-info"><span>选择题30/30</span><span>选择题30/30</span><span>选择题30/30</span></div>
|
<div class="sub-info"><span>选择题30/30</span><span>选择题30/30</span><span>选择题30/30</span></div>
|
||||||
</template>
|
</template>
|
||||||
<template v-for="(item, index) in 10" >
|
<template v-for="(item, index) in viewResolution" >
|
||||||
<div :key="index">
|
<div :key="index">
|
||||||
<DbQuestionInfoItem :questionIndex="index+1" ></DbQuestionInfoItem>
|
<DbQuestionInfoItem :data="item" :questionIndex="index+1" ></DbQuestionInfoItem>
|
||||||
<a-divider></a-divider>
|
<a-divider></a-divider>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
@ -31,12 +31,33 @@
|
||||||
<script>
|
<script>
|
||||||
import DbQuestionInfoItem from '@/components/DbQuestionInfoItem/index.vue'
|
import DbQuestionInfoItem from '@/components/DbQuestionInfoItem/index.vue'
|
||||||
import DbReport from '@/components/DbReport/index.vue'
|
import DbReport from '@/components/DbReport/index.vue'
|
||||||
|
import { answerViewReport, answerViewResolution } from '@/api/practice/report'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: { DbQuestionInfoItem, DbReport },
|
components: { DbQuestionInfoItem, DbReport },
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
activeTab: '1'
|
query: {},
|
||||||
|
activeTab: '',
|
||||||
|
viewReport: {}, // 答题报告
|
||||||
|
viewResolution: [] // 答题解析
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted () {
|
||||||
|
this.query = this.$route.query
|
||||||
|
this.getAnswerViewReport()
|
||||||
|
this.getAnswerViewResolution()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
getAnswerViewReport () {
|
||||||
|
answerViewReport({ reportId: Number(this.query.reportId) }).then(res => {
|
||||||
|
this.viewReport = res.data
|
||||||
|
})
|
||||||
|
},
|
||||||
|
getAnswerViewResolution () {
|
||||||
|
answerViewResolution({ reportId: Number(this.query.reportId) }).then(res => {
|
||||||
|
this.viewResolution = res.data
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue