Merge branch 'develop' of https://gitee.com/siwa-team/dawa-vue into develop

This commit is contained in:
cgd_mac 2022-02-11 10:22:33 +08:00
commit a59e89aa0f
9 changed files with 134 additions and 103 deletions

View File

@ -5,6 +5,7 @@ const projectApi = {
getDict: 'project/dict/get', getDict: 'project/dict/get',
list: 'project/pageList', list: 'project/pageList',
get: 'project/get', get: 'project/get',
del: 'project/del',
projectCourseList: '', projectCourseList: '',
release: '/project/release', release: '/project/release',
} }
@ -16,6 +17,14 @@ export function projectAdd(params) {
data: params data: params
}) })
} }
export function projectDel(params) {
return request({
url: projectApi.del,
method: 'post',
params: params
})
}
export function dictGet(params) { export function dictGet(params) {
return request({ return request({
url: projectApi.getDict, url: projectApi.getDict,

View File

@ -26,7 +26,7 @@
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
<!-- 件大小 --> <!-- -->
<a-col :span="9"> <a-col :span="9">
<a-form-item label="课时" :label-col="{ span: 4 }" :wrapper-col="{ span: 10 }"> <a-form-item label="课时" :label-col="{ span: 4 }" :wrapper-col="{ span: 10 }">
<a-input-number id="hour" v-model="dataValue" :min="1" :max="1000" @change="onChange" :style="{ display: 'ln', width: '100%' }" /> <a-input-number id="hour" v-model="dataValue" :min="1" :max="1000" @change="onChange" :style="{ display: 'ln', width: '100%' }" />
@ -165,6 +165,7 @@ export default {
}, },
save() { save() {
this.form.hour = this.dataValue;
this.form.coverPath = JSON.stringify(this.fileList) this.form.coverPath = JSON.stringify(this.fileList)
courseAdd(this.form).then((res) => { courseAdd(this.form).then((res) => {
if (res.code == 200) { if (res.code == 200) {

View File

@ -1,5 +1,5 @@
<template> <template>
<a-card :bordered="false" title="添加课件"> <a-card :bordered="false" :title="pageName">
<template slot="extra"> <template slot="extra">
<a-button @click="goback">返回</a-button> <a-button @click="goback">返回</a-button>
<a-button type="primary" @click="save">保存</a-button> <a-button type="primary" @click="save">保存</a-button>
@ -217,6 +217,7 @@ import { dictionaryDropDown } from '@/api/sys/dictionaryItem'
export default { export default {
data() { data() {
return { return {
pageName: this.$route.query.coursewareId ? '课件编辑' : '课件新增',
// treeData: [], // treeData: [],
ifResources : this.$route.query.ifResources, ifResources : this.$route.query.ifResources,
coursewareClassfiy: [], coursewareClassfiy: [],

View File

@ -1,5 +1,5 @@
<template> <template>
<a-card :bordered="false" title="新增习题"> <a-card :bordered="false" :title="pageName">
<template slot="extra"> <template slot="extra">
<a-button size="small" @click="close">返回</a-button> <a-button size="small" @click="close">返回</a-button>
<a-button size="small" type="primary" @click="queding">确定</a-button> <a-button size="small" type="primary" @click="queding">确定</a-button>
@ -167,6 +167,7 @@ export default {
components: {}, components: {},
data() { data() {
return { return {
pageName : this.$route.query.id ? "习题编辑" : "题目新增",
isactive:this.$route.query.isactive, isactive:this.$route.query.isactive,
quesitonList: [], quesitonList: [],
checkedValues: [], checkedValues: [],

View File

@ -6,6 +6,9 @@
<div class="questionLeft"> <div class="questionLeft">
<h1 class="questionNumber">题序</h1> <h1 class="questionNumber">题序</h1>
<!-- 题目序号 --> <!-- 题目序号 -->
<div v-if="quesitonList.length == 0" style="height:300px">
<a-empty description="暂无题目" />
</div>
<div v-for="(item, index) in quesitonList" :key="item" class="questionLeftItem" @click="quesionId(item, index)" :class="{ active_color: index == isactive }"> <div v-for="(item, index) in quesitonList" :key="item" class="questionLeftItem" @click="quesionId(item, index)" :class="{ active_color: index == isactive }">
{{ index + 1 }} {{ index + 1 }}
</div> </div>
@ -31,6 +34,9 @@
</b> </b>
<a-divider :style="{ backgroundColor: '#000' }" /> <a-divider :style="{ backgroundColor: '#000' }" />
<div class="question"> <div class="question">
<div v-if="quesitonList.length == 0" style="height:200px">
<a-empty description="暂无题目" />
</div>
<h1 class="questionName" v-if="quesitonList != null && quesitonList.length != 0"> <h1 class="questionName" v-if="quesitonList != null && quesitonList.length != 0">
{{ questionDetail.questionTypeName }}{{ questionDetail.questionName }} {{ questionDetail.questionTypeName }}{{ questionDetail.questionName }}
<span v-if="!courseId" class="edit" @click="edit(questionDetail.id)">编辑</span> <span v-if="!courseId" class="edit" @click="edit(questionDetail.id)">编辑</span>
@ -76,45 +82,46 @@
</template> </template>
<script> <script>
import { getQuestionListByCourseId } from '@/api/course/course' import { getQuestionListByCourseId } from '@/api/course/course';
import { getQuestionDeatil, deleteQuestion, importTemplate } from '@/api/course/question/question' import { getQuestionDeatil, deleteQuestion, importTemplate } from '@/api/course/question/question';
import { ossUpload } from '@/api/sys/oss' import { ossUpload } from '@/api/sys/oss';
import axios from 'axios' import axios from 'axios';
import storage from 'store' import storage from 'store';
import { ACCESS_TOKEN } from '@/store/mutation-types' import { ACCESS_TOKEN } from '@/store/mutation-types';
export default { export default {
props: { props: {
courseId: { courseId: {
type: String, type: String,
} },
}, },
data() { data() {
return { return {
title:"题库管理", title: '题库管理',
quesitonList: [], quesitonList: [],
questionDetail: {}, questionDetail: {},
isactive: 1, isactive: 1,
visible: false, visible: false,
add: 'add', add: 'add',
} };
}, },
created: function () { created: function () {
this.getQuestion() this.getQuestion();
}, },
methods: { methods: {
getQuestion() { getQuestion() {
// id // id
getQuestionListByCourseId({ id: this.$route.query.id || this.courseId }).then((res) => { getQuestionListByCourseId({ id: this.$route.query.id || this.courseId }).then(res => {
this.quesitonList = res.data this.quesitonList = res.data;
if (!res.data) return if (!res.data) return;
let questionId = 0, index = 0; let questionId = 0,
index = 0;
if (this.$route.query.questionId) { if (this.$route.query.questionId) {
questionId = this.$route.query.questionId questionId = this.$route.query.questionId;
index = this.$route.query.isactive; index = this.$route.query.isactive;
} else if (this.$route.query.opt) { } else if (this.$route.query.opt) {
questionId = this.quesitonList[this.quesitonList.length - 1]; questionId = this.quesitonList[this.quesitonList.length - 1];
@ -124,33 +131,40 @@ export default {
index = 0; index = 0;
} }
this.quesionId(questionId, index) this.quesionId(questionId, index);
}) });
}, },
//ID //ID
quesionId: function (i, index) { quesionId: function (i, index) {
if (this.quesitonList != null && this.quesitonList.length != 0) { if (this.quesitonList != null && this.quesitonList.length != 0) {
//ID //ID
this.isactive = index this.isactive = index;
this.questionId = i this.questionId = i;
getQuestionDeatil({ id: i }).then((res) => { getQuestionDeatil({ id: i }).then(res => {
this.questionDetail = res.data this.questionDetail = res.data;
// //
if (this.questionDetail.questionType == '1') this.questionDetail.questionTypeName = '单选题' if (this.questionDetail.questionType == '1')
if (this.questionDetail.questionType == '2') this.questionDetail.questionTypeName = '多选题' this.questionDetail.questionTypeName = '单选题';
if (this.questionDetail.questionType == '3') this.questionDetail.questionTypeName = '判断题' if (this.questionDetail.questionType == '2')
if (this.questionDetail.questionType == '4') this.questionDetail.questionTypeName = '简答题' this.questionDetail.questionTypeName = '多选题';
if (this.questionDetail.questionType == '5') this.questionDetail.questionTypeName = '填空题' if (this.questionDetail.questionType == '3')
this.questionDetail.questionTypeName = '判断题';
if (this.questionDetail.questionType == '4')
this.questionDetail.questionTypeName = '简答题';
if (this.questionDetail.questionType == '5')
this.questionDetail.questionTypeName = '填空题';
if (this.questionDetail.questionType == 3 && this.questionDetail.rightAnswers == 1) { if (this.questionDetail.questionType == 3 && this.questionDetail.rightAnswers == 1) {
this.questionDetail.rightAnswers = '正确' this.questionDetail.rightAnswers = '正确';
} else { } else if (
this.questionDetail.rightAnswers = '错误' this.questionDetail.questionType == 3 &&
this.questionDetail.rightAnswers == 0
) {
this.questionDetail.rightAnswers = '错误';
} }
});
})
} }
}, },
@ -162,7 +176,7 @@ export default {
courseName: this.$route.query.courseName, courseName: this.$route.query.courseName,
pageNum: this.$route.query.pageNum, pageNum: this.$route.query.pageNum,
}, },
}) });
}, },
questionSave() { questionSave() {
this.$router.push({ this.$router.push({
@ -174,7 +188,7 @@ export default {
opt: this.add, opt: this.add,
types: this.$route.query.type, types: this.$route.query.type,
}, },
}) });
}, },
edit(record) { edit(record) {
this.$router.push({ this.$router.push({
@ -186,74 +200,74 @@ export default {
courseId: this.$route.query.id, courseId: this.$route.query.id,
types: this.$route.query.type, types: this.$route.query.type,
}, },
}) });
}, },
// //
del(id) { del(id) {
deleteQuestion({ id: id }).then((res) => { deleteQuestion({ id: id }).then(res => {
if (res.code == 200) { if (res.code == 200) {
this.getQuestion() this.getQuestion();
this.$message.success('删除成功!') this.$message.success('删除成功!');
} else { } else {
this.getQuestion() this.getQuestion();
this.$message.error('后台报错了~') this.$message.error('后台报错了~');
} }
}) });
}, },
// //
questionBatch() { questionBatch() {
this.$refs.inputFile.click() this.$refs.inputFile.click();
}, },
questionBatchImport() { questionBatchImport() {
if (!this.$refs.inputFile.value || this.$refs.inputFile.value === '') return if (!this.$refs.inputFile.value || this.$refs.inputFile.value === '') return;
const data = new FormData() const data = new FormData();
data.append('file', this.$refs.inputFile.files[0]) data.append('file', this.$refs.inputFile.files[0]);
data.append('sourceId', 'questionImport') data.append('sourceId', 'questionImport');
data.append('fileType', 'excel') data.append('fileType', 'excel');
const header = {} const header = {};
header['Content-Type'] = 'multipart/form-data' header['Content-Type'] = 'multipart/form-data';
header[ACCESS_TOKEN] = storage.get(ACCESS_TOKEN) header[ACCESS_TOKEN] = storage.get(ACCESS_TOKEN);
axios axios
.post(ossUpload(), data, { headers: header }) .post(ossUpload(), data, { headers: header })
.then((res) => { .then(res => {
this.$refs.inputFile.value = '' this.$refs.inputFile.value = '';
if (res.data.code === 200) { if (res.data.code === 200) {
let params = { fileUrl: res.data.url, courseId: this.$route.query.id } let params = { fileUrl: res.data.url, courseId: this.$route.query.id };
importTemplate(params).then((res1) => { importTemplate(params).then(res1 => {
this.$message.success('题目导入成功!') this.$message.success('题目导入成功!');
this.getQuestion() this.getQuestion();
}) });
} else { } else {
this.$message.error(res.data.msg) this.$message.error(res.data.msg);
} }
}) })
.catch((err) => { .catch(err => {
this.$refs.inputFile.value = '' this.$refs.inputFile.value = '';
this.$message.error(res) this.$message.error(res);
}) });
}, },
showModal() { showModal() {
this.visible = true this.visible = true;
}, },
handleOk(e) { handleOk(e) {
this.visible = false this.visible = false;
}, },
// //
questionBatchDownload() { questionBatchDownload() {
window.location.href = '/dawa/sys/oss/show?id=1' window.location.href = '/dawa/sys/oss/show?id=1';
}, },
// //
questionBatchDownloadDemo() { questionBatchDownloadDemo() {
window.location.href = '/dawa/sys/oss/show?id=2' window.location.href = '/dawa/sys/oss/show?id=2';
}, },
}, },
} };
</script> </script>
<style scoped> <style scoped>

View File

@ -12,7 +12,7 @@
} }
"></SearchCom> "></SearchCom>
</div> </div>
</br> <br/>
<s-table <s-table
ref="table" ref="table"
:pageSize="5" :pageSize="5"
@ -30,9 +30,9 @@
<a-tag v-if="record.trainType === 2" color="blue">选修课</a-tag> <a-tag v-if="record.trainType === 2" color="blue">选修课</a-tag>
</span> </span>
<span slot="status" slot-scope="text, record"> <span slot="status" slot-scope="text, record">
<a-tag v-if="record.status === 1" color="red">未开始</a-tag> <a-tag v-if="record.status === 0" color="red">未开始</a-tag>
<a-tag v-if="record.status === 2" color="blue">进行中</a-tag> <a-tag v-if="record.status === 1" color="blue">进行中</a-tag>
<a-tag v-if="record.status === 3" color="green">已完成</a-tag> <a-tag v-if="record.status === 2" color="green">已完成</a-tag>
</span> </span>
<template slot="schedule" slot-scope="text, record"> <template slot="schedule" slot-scope="text, record">
<a-progress :percent="record.schedule" /> <a-progress :percent="record.schedule" />
@ -42,7 +42,7 @@
</template> </template>
<span slot="action" slot-scope="text, record"> <span slot="action" slot-scope="text, record">
<a-popconfirm <a-popconfirm
v-if="record.status === 1" v-if="record.status === 0"
:title="`确定要添加${record.name}课程吗?`" :title="`确定要添加${record.name}课程吗?`"
ok-text="添加" ok-text="添加"
cancel-text="取消" cancel-text="取消"
@ -50,8 +50,8 @@
> >
<a>添加课程</a> <a>添加课程</a>
</a-popconfirm> </a-popconfirm>
<a v-if="record.status === 2" @click="handlerContinue(record)">继续学习</a> <a v-if="record.status === 1" @click="handlerContinue(record)">继续学习</a>
<a v-if="record.status === 3">已完成学习</a> <a v-if="record.status === 2">已完成学习</a>
</span> </span>
</s-table> </s-table>
<MycourseDetail ref="aycourseDetail"></MycourseDetail> <MycourseDetail ref="aycourseDetail"></MycourseDetail>

View File

@ -56,7 +56,7 @@
<script> <script>
import { STable } from '@/components' import { STable } from '@/components'
import { getProjectList,releaseProject } from '@/api/project/project' import { getProjectList,releaseProject,projectDel } from '@/api/project/project'
export default { export default {
components: { components: {
@ -179,6 +179,16 @@ export default {
}, },
}) })
}, },
handleDelete(record){
projectDel({id:record.id}).then((res) => {
if(res.code == 200){
this.$message.success('删除成功')
this.$refs.table.refresh(false);
}else{
this.$message.success('删除失败')
}
})
},
// //
changeType(path) { changeType(path) {
var arr = [] var arr = []

View File

@ -107,9 +107,9 @@ export default {
// //
menuChack(){ menuChack(){
console.log('menuKey',this.menuKey) console.log('menuKey',this.menuKey)
let type = 0; let type = 1;
console.log('菜单改变',this.menuKey[0]) console.log('菜单改变',this.menuKey[0])
if(this.menuKey[0] === 'self') type = 1; if(this.menuKey[0] === 'self') type = 2;
this.queryParam.type = type this.queryParam.type = type
this.getCourseTreeData(type); this.getCourseTreeData(type);
this.$refs.table.refresh(true); this.$refs.table.refresh(true);

View File

@ -123,15 +123,11 @@
</a-form-model> </a-form-model>
</a-card> </a-card>
</div> </div>
<!-- </page-header-wrapper> -->
<!-- <class-list ref="ClassList"></class-list> -->
</template> </template>
<script> <script>
import { dictGet } from '@/api/project/project'
import ClassList from '../classAdd/ClassList.vue'
import { classList } from '@/api/project/class' import { classList } from '@/api/project/class'
import { projectAdd, getProjectDetail } from '@/api/project/project' import { dictGet , getProjectDetail } from '@/api/project/project'
import { dictionaryDropDown } from '@/api/sys/dictionaryItem'
export default { export default {
props: { props: {
@ -168,7 +164,6 @@ export default {
}, },
components: { components: {
dictGet, dictGet,
ClassList,
classList classList
}, },
created(ClassList) { created(ClassList) {
@ -187,10 +182,10 @@ export default {
console.log('Form返回list页面') console.log('Form返回list页面')
this.$emit('close') this.$emit('close')
}, },
//, //
fetchTemplateData() { fetchTemplateData() {
let formData = { type: 2 } let formData = { dictionaryCode:'0005'}
dictGet(formData).then(res => { dictionaryDropDown(formData).then(res => {
console.log(res) console.log(res)
if (res.code == 200) { if (res.code == 200) {
const result = res.data const result = res.data