139 lines
4.4 KiB
Vue
139 lines
4.4 KiB
Vue
<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="课程类别">
|
|
{{ 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 v-if="detailData.imagePath">
|
|
<img style="width:75px;height:75px" :src="detailData.imagePath" />
|
|
</div>
|
|
</a-descriptions-item>
|
|
<a-descriptions-item label="标签">
|
|
<template v-if="detailData.courseTags && detailData.courseTags.length > 0">
|
|
<a-tag color="blue" v-for="(item, index) in detailData.courseTags" :key="index">
|
|
{{ getDictLabelByKey('dictCourseTag', item.dictValue) }}
|
|
</a-tag>
|
|
</template>
|
|
</a-descriptions-item>
|
|
</a-descriptions>
|
|
<div class="buttonGroup">
|
|
<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',
|
|
components: {},
|
|
data() {
|
|
return {
|
|
queryParam: { id: this.$route.query.id },
|
|
detailData: {
|
|
imagePath: '', // 图片路径
|
|
coverPath: [],
|
|
},
|
|
dictCourseType: [],
|
|
dictCourseTag: [],
|
|
tags: [], // 用于存放标签
|
|
};
|
|
},
|
|
created: function () {
|
|
// 调用词典
|
|
this.loadData();
|
|
this.dictionaryDropDown();
|
|
this.getTagName();
|
|
},
|
|
methods: {
|
|
// 加载数据
|
|
loadData() {
|
|
const parameter = {};
|
|
getCourseDetails(Object.assign(parameter, this.queryParam)).then(res => {
|
|
this.detailData = res.data;
|
|
|
|
this.detailData.coverPath = JSON.parse(res.data.coverPath);
|
|
|
|
if (this.detailData.coverPath && this.detailData.coverPath.length != 0) {
|
|
this.detailData.imagePath = this.detailData.coverPath[0].url;
|
|
}
|
|
});
|
|
},
|
|
|
|
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 },
|
|
});
|
|
},
|
|
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;
|
|
|
|
|
|
// 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>
|
|
|
|
<style>
|
|
.ant-descriptions-item-label {
|
|
width: 100px;
|
|
text-align: center;
|
|
}
|
|
.buttonGroup {
|
|
width: 100%;
|
|
height: auto;
|
|
text-align: center;
|
|
margin-top: 10px;
|
|
}
|
|
</style>
|