main
王家东 7 months ago
parent d5ecd33bc1
commit aa4c6c1464
  1. 199
      ant-design-vue-jeecg/src/views/course/modules/yjjk/TestWay.vue
  2. 454
      ant-design-vue-jeecg/src/views/course/modules/yjjk/chapterList.vue
  3. 82
      ant-design-vue-jeecg/src/views/course/modules/yjjk/chapterManage.vue
  4. 359
      ant-design-vue-jeecg/src/views/course/modules/yjjk/knowledgeManage.vue
  5. 28
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/course/entity/SeCoureseType.java
  6. 9
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/course/mapper/SeCourseMethodMapper.java
  7. 7
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/course/service/ISecourseMethodService.java
  8. 13
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/course/service/impl/SeCourseMethod.java

@ -0,0 +1,199 @@
<template xmlns="http://www.w3.org/1999/html">
<div id="components-layout-demo-basic" style="padding-top: 20px">
<a-layout>
<a-layout-header>
<CourseTitle :context="getInfoid" :setNum="setNum"></CourseTitle>
</a-layout-header>
<a-layout-content>
<a-form-model :model="formTest" :rules="rulesTest" >
<a-form-model-item label="过程性考核" prop="commonScore" :label-col="wrapperCol" :wrapper-col="wrapperCol">
<a-input v-model="formTest.processAssessment" addon-after="%" @blur="changeScore" />
</a-form-model-item>
<a-form-model-item label="期末考试" prop="testScore" :label-col="wrapperCol" :wrapper-col="wrapperCol">
<a-input v-model="formTest.finalExam" addon-after="%" @blur="changeScore"/>
</a-form-model-item>
<a-row>
<a-col :span="24">
<a-form-item label="考核细则" :label-col="wrapperCol" :wrapper-col="labelCol" >
<j-editor v-model="model.assessmentrules" />
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span="24">
<a-form-item label="考核内容" :label-col="wrapperCol" :wrapper-col="labelCol">
<j-editor v-model="model.contentdistribution" />
</a-form-item>
</a-col>
</a-row>
</a-form-model>
</a-layout-content>
<a-layout-footer>
<div class="sub-down">
<a-button @click="setSub" style="margin-right: 10px">上一步</a-button>
<a-button @click="setAdd" type="primary">{{setNum==4?'完成':'下一步'}}</a-button>
</div>
</a-layout-footer>
</a-layout>
</div>
</template>
<script>
import CourseTitle from "./CouseTitle"
import {getAction,postAction,deleteAction,putAction} from '@/api/manage'
//
import JEditor from '@/components/jeecg/JEditor'
export default {
name: "TestWay",
components: {
JEditor,
},
data () {
return{
model: {},
formTest:{
id:'',
processAssessment:0,
finalExam:0,
name:''
},
scoreUrl:{
getInfoUrl:'/course/seCourse1/methodList',
getChangeScore:'/course/seCourse1/methodadd',
editnrxz:'/course/seCourse/editnrxz',
getnrxz:'/course/seCourse/getnrxz',
},
labelCol: { span: 14},
wrapperCol: { span: 2 },
setNum:4,
rulesTest:{
processAssessment:[
{ required: true, message: '请输入过程性考核占比', trigger: 'blur' },
{ min: 1, max: 3, message: 'Length should be 3 to 5', trigger: 'blur' },
],
finalExam:[
{ required: true, message: '请输入期末考试占比', trigger: 'blur' },
{ min: 1, max: 3, message: 'Length should be 3 to 5', trigger: 'blur' },
],
}
}
},
components:{CourseTitle},
computed: {
getInfoid() {
return this.$route.query
},
},
mounted() {
this.getInfoScore();
getAction(this.scoreUrl.getnrxz, {id: this.getInfoid.courseid}).then((res) => {
if (res.result!==null&&res.code===200) {
this.model=res.result
}
})
},
methods:{
//
async getInfoScore(){
let res=await getAction(this.scoreUrl.getInfoUrl, {id: this.getInfoid.courseid})
if (res.result!==null&&res.code===200) this.formTest=res.result
console.log(res)
},
//
async changeScore(){
let {processAssessment,finalExam}=this.formTest
let score=processAssessment*1+finalExam*1
if (score!==100){
console.log(score)
let alt= () =>{ this.openNotificationWithIcon('warning')}
alt()
return
}
this.formTest.name=this.getInfoid.courseid
//
let res=await postAction(this.scoreUrl.getChangeScore,this.formTest)
console.log(res)
},
//
openNotificationWithIcon(type) {
this.$notification[type]({
message: '未达成需求',
description:
'考核方式需要达成条件:过程性考核+期末考试=100',
});
},
//
setAdd(){
putAction(this.scoreUrl.editnrxz, {
id: this.getInfoid.courseid,
assessmentrules: this.model.assessmentrules,
contentdistribution: this.model.contentdistribution,
}).then((res) => {
if (res.code != 200) {
this.$message.error(res.message)
} else {
if (this.setNum<4){
this.setNum++
}
this.$router.push({ path: '/src/views/course/SeCourseList' })
this.$message.success(res.message)
}
})
},
//
setSub(){
if (this.setNum>0){
this.setNum--;
this.$router.go(-1)
}
}
}
}
</script>
<style scoped>
#components-layout-demo-basic {
/*text-align: center;*/
min-height:550px;
background-color:#fff;
}
#components-layout-demo-basic .ant-layout-header,
#components-layout-demo-basic .ant-layout-footer {
background: #fff;
/*color: #fff;*/
}
#components-layout-demo-basic .ant-layout-header{
height:200px;
}
#components-layout-demo-basic .ant-layout-footer {
/*line-height: 1.5;*/
}
#components-layout-demo-basic .ant-layout-content {
background: #fff;
color: #000;
min-height: 120px;
/*line-height: 60px;*/
}
#components-layout-demo-basic > .ant-layout {
/*margin-bottom: 48px;*/
}
#components-layout-demo-basic > .ant-layout:last-child {
/*margin: 0;*/
}
th.column-money,
td.column-money {
text-align: right !important;
}
.sub-down{
text-align:center;
}
</style>

@ -0,0 +1,454 @@
<template>
<div>
<div v-for="item in formData" :key="item.id">
<el-row class="warp_content">
<!-- type="flex" justify="center" -->
<el-col :span="6">
<el-input v-if="item.read" v-model="item.name">
</el-input>
<el-row v-else :sapn="24">
<el-col :span="24">
<i class="el-icon-plus" @click="expandList(item)"></i>
{{item.name}}
</el-col>
</el-row>
</el-col>
<!-- <el-col :span="4">
<el-input v-model="item.chapterName" :readonly="!item.read"></el-input>
</el-col> -->
<el-col :span="3">
<el-input v-if="item.read" v-model="item.totalclasshours">
</el-input>
<el-row v-else :sapn="24">
<el-col :span="24">
<!-- <el-button color="red" type="text">{{item.totalclasshours}}</el-button> -->
{{item.totalclasshours}}
</el-col>
</el-row>
</el-col>
<!-- <el-col :span="3">
<el-input v-if="item.read" v-model="item.childChapter">
</el-input>
<el-row v-else :sapn="24">
<el-col :span="24">
{{item.childChapter.length}}
</el-col>
</el-row>
</el-col> -->
<el-col :span="7" class="dominate">
<!-- <el-input v-model="item.dominate" :readonly="!item.read">
</el-input> -->
{{item.childChapter.length}}小节 已经分配 {{item.showListstudyTime}}学时 未分配{{ (item.totalclasshours-item.showListstudyTime).toFixed(1) }}学时
</el-col>
<el-col :span="4" class="operation">
<!-- <a @click="deleteList">删除</a>
<a @click="editList">修改</a> -->
<el-button @click="deleteList1(item)" size="small" type="primary">删除</el-button>
<el-button v-if="!item.showEdit" @click="editList(item)" size="small">修改</el-button>
<el-button v-if="item.showEdit" @click="editList(item)" size="small">确认</el-button>
</el-col>
</el-row>
<!-- 子节点列表数据 -->
<div v-show="item.showList" class="childList">
<el-table :data=" item.childChapter" style="width: 100%">
<el-table-column prop="index" label="" width="40">
</el-table-column>
<el-table-column prop="name" label="">
<template #default="{row}">
<el-input v-if="row.read" v-model="row.name">
</el-input>
<el-row v-else :sapn="24">
<el-col :span="24">
<!-- <el-button type="text">{{row.name}}</el-button> -->
{{row.name}}
</el-col>
</el-row>
</template>
</el-table-column>
<el-table-column prop="totalclasshours" label="" width="180">
<template #default="{row}">
<el-input v-if="row.read" v-model="row.totalclasshours">
</el-input>
<el-row v-else :sapn="24">
<el-col :span="24">
<!-- <el-button type="text">{{row.totalclasshours}}</el-button> -->
{{row.totalclasshours}}
</el-col>
</el-row>
</template>
</el-table-column>
<el-table-column prop="" label="" class="shours">
<template #default="{row}">
<!-- {{ (item.totalclasshours- row.timeShowReduce).toFixed(1) }} -->
已经分配 {{row.totalclasshours}}学时 未分配学时
</template>
</el-table-column>
<el-table-column label="" class="chapterButton">
<template scope="{row}">
<el-button @click="deleteList(item,row)" size="small" type="primary">删除</el-button>
<el-button v-if="!row.showEdit" @click="editList(row)" size="small">修改</el-button>
<el-button v-if="row.showEdit" @click="editList(row)" size="small">确认</el-button>
</template>
<!-- <el-button @click="deleteList(item,list)" size="small" type="primary">删除</el-button>
<el-button v-if="!list.showEdit" @click="editList(list)" size="small">修改</el-button>
<el-button v-if="list.showEdit" @click="editList(list)" size="small">确认</el-button> -->
</el-table-column>
</el-table>
<!-- 新增列表数据 -->
<el-row class="middleList" v-if="item.showMidList">
<!-- <el-col :span="1">
<el-input v-model="addListData.index"></el-input>
</el-col> -->
<el-col :span="4">
<el-input v-model="addListData.name"></el-input>
</el-col>
<!-- <el-col :span="4">
<el-input v-model="addListData.chapterName" ></el-input>
</el-col> -->
<el-col :span="4">
<el-input v-model="addListData.totalclasshours"></el-input>
</el-col>
<el-col :span="12">
<div class="operation1">
<el-button @click="deleteList2(item)" size="small" >取消</el-button>
<el-button @click="addList(item)" size="small" type="primary">确定</el-button>
</div>
</el-col>
</el-row>
<el-row>
<el-col class="newButton">
<el-button v-if="item.showMidList" type="primary" size="small" @click="addList(item)">确定</el-button>
<el-button v-else type="primary" size="small" @click="newList(item)">新一节</el-button>
</el-col>
</el-row>
</div>
</div>
<el-divider></el-divider>
<!-- 新一章 -->
<div v-if="showChapter">
<el-row>
<el-form label-width="70px">
<el-col :xl="6" :lg="7" :md="8" :sm="24">
<el-form-item label="章节名称">
<el-input v-model="queryParam.name" label-width="80px"></el-input>
</el-form-item>
</el-col>
<el-col :xl="6" :lg="7" :md="8" :sm="24">
<el-form-item label="学时">
<el-input v-model="queryParam.totalclasshours" label-width="80px"></el-input>
</el-form-item>
</el-col>
</el-form>
</el-row>
<el-row>
<el-form label-width="70px">
<el-col :xl="6" :lg="7" :md="8" :sm="24">
<el-form-item label="说明">
<el-input type="textarea" v-model="queryParam.content" :autosize="{ minRows: 3, maxRows: 4}"></el-input>
</el-form-item>
</el-col>
</el-form>
<el-button @click="submitChapter(queryParam)" type="primary" size="small" class="submitChapter1">确定</el-button>
<el-button @click="submitChapter1(queryParam)" size="small" class="submitChapter1">取消</el-button>
</el-row>
<!-- <el-row>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="学时" prop="">
<a-input placeholder="请输入学时" v-model="queryParam.totalclasshours"></a-input>
</a-form-item>
</a-col>
</el-row> -->
<!-- <el-row>
<el-form label-width="80px">
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="说明" prop="">
<a-textarea placeholder="" :rows="4" v-model="queryParam.content" />
</a-form-item>
</a-col>
</el-form>
</el-row> -->
<!-- <el-button @click="submitChapter(queryParam)" type="primary" size="small" class="submitChapter1">确定</el-button> -->
</div>
<el-button @click="showCha" type="primary" size="small" class="newChapterButton">新一章</el-button>
</div>
</template>
<script>
import { getAction, postAction, deleteAction, putAction } from '@/api/manage.js'
export default {
data() {
return {
formData: [],
showList: false,
showMidList: false,
showEdit: true,
read: true,
courseid: {
// id:'1298175613105115137'
id: '',
},
addListData: {
courseid: '',
name: '',
totalclasshours: '',
pid: '',
},
//
showChapter: false,
//
queryParam: {
name: '',
pid: '',
totalclasshours: '',
content: '',
courseid: '',
},
showListstudyTime: 0,
url: {
list: '/course/seCourse/listSeChapterByCourseId',
add: '/course/seCourse/addSeChapter',
delete: '/course/seCourse/deleteSeChapter',
edit: '/course/seCourse/editSeChapter',
},
}
},
props: {
getInfoid: {
type: Object,
},
},
watch: {
formData: {
handler() {
// console.log(this.formData, 'reduce')
this.formData.map((res) => {
// {}
// let times = 0;
this.$set(
res,
'showListstudyTime',
res.childChapter.reduce((pre, current) => {
// let time = parseFloat(current.totalclasshours?current.totalclasshours:0)
// this.$set(current,'timeShowReduce',times+=time)
return (pre += window.parseFloat(current.totalclasshours)
? window.parseFloat(current.totalclasshours)
: 0)
}, 0)
)
})
return null
},
deep: true,
immediate: true,
},
},
computed: {},
created() {
this.showListData()
},
methods: {
async deleteList1(item) {
await deleteAction(this.url.delete, { id: item.id })
// this.$delete(item,id)
this.showListData()
},
async showListData() {
this.courseid.id = this.getInfoid.courseid
console.log(this.courseid, '章节')
let res = await getAction(this.url.list, this.courseid)
this.formData = res.result.chapterList
console.log(this.formData, '接口数据 ')
// this.$set(this.formData.childChapter,'showList',false)
// this.$set(this.formData,'showList',false)
},
expandList(item) {
item.showList = !item.showList
// this.$set(item,'showList',!item.showList)
},
//
async editList(item) {
this.$set(item, 'read', !item.read)
this.$set(item, 'showEdit', !item.showEdit)
await putAction(this.url.edit, item)
},
//
submitEdit() {},
//
async deleteList(oldData, deleteDate) {
await deleteAction(this.url.delete, { id: deleteDate.id })
oldData.childChapter.find((res, key) => {
if (res == deleteDate) {
this.$delete(oldData.childChapter, key)
}
})
// await deleteAction(this.url.delete,{id:oldData.id})
// console.log(oldData.id,'')
// await deleteAction(this.url.delete,{id:deleteDate.id})
// oldData.childChapter.find((res, key) => {
// if (res == deleteDate) {
// console.log('')
// this.$delete(oldData.childChapter, key)
// }
// })
},
deleteList2(item){
item.showMidList=!item.showMidList
},
showCha() {
;(this.showChapter = true),
(this.queryParam = {
name: '',
totalclasshours: '',
pid: '',
content: '',
courseid: '',
})
},
async submitChapter(queryParam) {
// console.log(queryParam,'')
this.queryParam.courseid = this.courseid.id
let res = await postAction(this.url.add, this.queryParam)
this.formData.push(this.queryParam)
if ((res.code = 200)) {
this.$message.success(res.message)
} else {
this.$message.error(res.message)
}
// console.log(res,'abc')
// this.queryParam = {
// name: '',
// totalclasshours: '',
// pid:'',
// content:'',
// courseid:'',
// minutia: '',
// dominate: '',
// index: '',
// }
this.showChapter = false
this.showListData()
},
submitChapter1(){
this.showChapter = false
},
newList(item) {
this.$set(item, 'showMidList', !item.showMidList)
},
//
async addList(item) {
this.$set(item, 'showMidList', !item.showMidList)
// console.log(item.showListstudyTime, item.totalclasshours)
if (
item.showListstudyTime + parseInt(this.addListData.totalclasshours) <=
window.parseInt(item.totalclasshours)
) {
this.addListData.courseid = item.courseid
this.addListData.pid = item.id
item.childChapter.push(this.addListData)
await postAction(this.url.add, this.addListData)
console.log(this.addListData, '新增一节数据')
// item.formDataChild.push(this.addListData)
this.$message.success('添加新一节成功')
//
this.addListData = {
name: '',
courseid: '',
totalclasshours: '',
pid: '',
}
} else {
this.$message.error('学时不符合要求')
}
},
},
}
</script>
<style>
.warp_content {
background: rgb(245 245 245);
margin-bottom: 3px;
display: flex;
align-items: center;
text-align: center;
}
.warp_content > div:nth-child(1) {
text-align: start;
}
.el-icon-plus {
/* text-align: center; */
}
.middleList {
margin-left: 50px;
}
.icon {
margin-top: 3px;
}
.operation {
/* margin-top: 4px; */
margin-left: 50px;
}
.operation1 {
/* margin-top: 4px; */
margin-left:597px;
}
.dominate {
/* margin-top: 6px; */
height: 40px;
display: flex;
align-items: center;
justify-content: center;
}
/* .childList{
margin-left: 40px;
} */
/*
.el-input [type='text']{
border: none;
}*/
.submitChapter1 {
/* margin-left: 22%; */
margin-left:70px;
margin-top: 40px;
/* margin-bottom: 30px; */
}
.newChapterButton{
/* margin-left: 20px; */
}
.newButton {
margin-left: 90%;
}
.has-gutter > tr {
display: none;
}
.el-table__row {
height: 30px;
}
.el-input__inner {
height: 30px;
}
.el-icon-plus {
margin-right: 10px;
margin-left: 10px;
}
.chapterButton {
}
.el-table .el-table__cell {
padding: 8px 0;
}
.shours {
margin-right: 30px;
}
</style>

@ -0,0 +1,82 @@
<template>
<a-card :bordered="false">
<!-- 查询区域 -->
<CourseTitle :context="getInfoid" :setNum="setNum"></CourseTitle>
<br/>
<div class="table-page-search-wrapper">
<div>
<!-- 蓝色框 -->
<div class="ant-alert ant-alert-info" style="margin-bottom: 16px">
<i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择
<a style="font-weight: 600"></a
>
<a style="margin-left: 24px" >清空</a>
</div>
<!-- 新增 -->
<!-- 表单 -->
<ChapterList :getInfoid="getInfoid"></ChapterList>
</div>
</div>
<div class="sub-down">
<a-button @click="setSub">上一步</a-button>
<a-button @click="setAdd" type="primary">{{setNum==4?'完成':'下一步'}}</a-button>
</div>
</a-card>
</template>
<script>
import ChapterList from './chapterList.vue'
import CourseTitle from './CouseTitle.vue'
export default{
components:{ChapterList, CourseTitle},
data(){
return{
setNum:1,
}
},
mounted(){
console.log(this.getInfoid);
},
computed:{
getInfoid(){
return this.$route.query
}
},
methods:{
//
setAdd(){
if (this.setNum<3){
this.setNum++
this.$router.push({
path:'/knowledgeManage',
query:this.tokenid
})
}
},
//
setSub(){
if (this.setNum>0){
this.setNum--;
this.$router.go(-1)
}
}
}
}
</script>
<style scoped>
@import '~@assets/less/common.less';
.sub-down{
text-align:center;
}
.sub-down{
text-align:center;
}
</style>

@ -0,0 +1,359 @@
<template>
<div>
<el-card>
<!-- 头部 -->
<CouseTitle :context="getInfoid" :setNum="setNum"></CouseTitle>
<br />
<!-- 蓝色框 -->
<div class="ant-alert ant-alert-info" style="margin-bottom: 16px">
<i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择
<a style="font-weight: 600"></a>
<a style="margin-left: 24px">清空</a>
</div>
<!---->
<div class="c" v-for="items in formData" :key="items.id">
<section class="recomSiteText">
<!-- 第一列表 -->
<el-row class="content_list" :gutter="20">
<el-col :span="6">
<i class="el-icon-plus" @click=" $set(items,'listShow',!items.listShow) "></i>
{{items.name}}
</el-col>
<el-col :span="6">
{{items.totalclasshours}}学时
</el-col>
<el-col :span="6">
{{items.childCount}}
<!-- {{items.childChapter.length}} -->
</el-col>
<el-col :span="6">
已分配 {{items.usedKnow}} 学时 剩余 {{items.leaveKnow}} 学时
</el-col>
</el-row>
</section>
<section v-show="items.listShow" class="contentSized">
<!-- 次级列表 -->
<div v-for="item in items.childChapter" :key="item.id">
<el-row class="align_center">
<el-col :span="6">
<i class="el-icon-plus" @click="$set(item,'listShow',!item.listShow) "></i>
{{item.name}}
</el-col>
<el-col :span="6">
{{item.totalclasshours}} 学时
</el-col>
<el-col :span="6">
已经分配{{item.usedKnow}} 未分配{{item.konwLeave}}
</el-col>
<el-col :span="6">
<el-button type="primary" size="small" @click="knowledgeManageDialog(item)">管理知识点</el-button>
</el-col>
</el-row>
<section v-show="item.listShow" class="PivotContentWC" v-for="list in item.knowcourses" :key="list.knowid">
<!-- 次级列表数据-->
<div>
<span>
{{list.know}}
</span>
<span>
学时 {{list.xs}}
</span>
</div>
</section>
</div>
</section>
</div>
<!-- 弹窗 -->
<el-dialog class="dialogContent" :visible.sync="dialogVisible" width="60%" :before-close="handleClose" title="知识点管理">
<el-button @click="newKnowledge(staticActions)" type="primary" size="small">新增</el-button>
<el-table :data="staticActions.knowcourses" style="width: 100%">
<el-table-column label="知识点">
<template #default="{row}">
<el-input v-if="row.read" v-model="row.know">
</el-input>
<el-row v-else :sapn="24">
<el-col :span="24">
{{row.know}}
</el-col>
</el-row>
</template>
</el-table-column>
<el-table-column label="学时">
<template #default="{row}">
<el-input v-if="row.read" v-model="row.xs">
</el-input>
<el-row v-else :sapn="24">
<el-col :span="24">
{{row.xs}}
</el-col>
</el-row>
</template>
</el-table-column>
<!-- 下拉列表 -->
<el-table-column label="课程目标">
<template #default="{row}">
<el-select :disabled="!row.read" v-model="row.kcmbid" filterable placeholder="请选择">
<el-option v-for="item in target1" :key="item.id" :label="item.name" :value="item.id">
</el-option>
</el-select>
</template>
</el-table-column>
<el-table-column label="操作" width="100">
<template ref="changed" #default="{row}">
<el-row>
<el-col :span="12">
<el-button v-if="!row.showDetermine" type="primary" size="mini" @click="[$set(row, 'read', !row.read),$set(row,'showDetermine',!row.showDetermine)] ">
编辑
</el-button>
<el-button v-if="row.showDetermine" type="primary" size="mini" @click="[submitNew(staticActions,row,id),$set(row,'showDetermine',row.showDetermine)] ">
确定
</el-button>
</el-col>
<el-col :span="12">
<el-button type="primary" size="mini" @click="deleteShow(row)">
删除
</el-button>
</el-col>
</el-row>
</template>
</el-table-column>
</el-table>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false"> </el-button>
<el-button type="primary" @click="[dialogVisible = false,submitDialog()]"> </el-button>
</span>
</el-dialog>
<!-- 下一步上一步 -->
<br>
<div class="sub-down">
<a-button @click="setSub">上一步</a-button>
<a-button @click="setAdd" type="primary">{{setNum==4?'完成':'下一步'}}</a-button>
</div>
</el-card>
</div>
</template>
<script>
import CouseTitle from './CouseTitle.vue'
import { getAction, postAction, deleteAction, putAction } from '@/api/manage.js'
export default {
components: {
CouseTitle,
},
computed: {
getInfoid() {
return this.$store.getters.userID
},
},
data() {
return {
staticActions: {},
// resultDialog:{},
target1: {},
dialogVisible: false,
setNum: 2,
url: {
list: '/course/seCourse/listSeChapterByCourseId',
add: '/knowcourse/knowcourse/add1',
delete: '/knowcourse/knowcourse/delete',
course: '/course/seCourse/listByCourseId',
edit: '/knowcourse/knowcourse/edit1',
},
id: {},
formData: [],
value: '',
}
},
created() {
this.showKnowledge()
this.target()
},
methods: {
//
async target() {
const { courseid } = this.$store.getters.userID
let res = await getAction(this.url.course, { courseid: courseid })
this.$set(
this,
'target1',
res.result.map((res) => {
res.label = res.name
return res
})
)
},
submitNew(newKnowledge, newKnow) {
if (
newKnowledge.totalclasshours <
newKnowledge.knowcourses.reduce((item, { xs }) => {
return (item += Number(xs))
}, 0)
) {
this.$message.error('超出系统定义学时')
this.deleteShow(newKnow)
return
}
this.$set(newKnow, 'read', !newKnow.read)
this.formData.map((res) => {
res.childChapter.find((resChild) => {
if (resChild.id == newKnowledge.id) {
const { courseid, name } = this.$store.getters.userID
if (newKnow.isValue) {
newKnow.isValue = false
postAction(this.url.add, {
id: '',
chapterid: res.id,
uintid: resChild.id,
kcid: resChild.courseid,
kcid: courseid,
kc: name,
know: newKnow.know, //konw
xs: newKnow.xs, //
knowid: '',
kcmbid: newKnow.kcmbid, //
kcmb: '',
}).then((res) => {
if (res.code != 200) {
//
this.deleteShow(newKnow)
this.$message.error(res.message)
} else {
this.showKnowledge()
this.$message.success(res.message)
}
})
} else {
putAction(this.url.edit, {
id: newKnow.id,
chapterid: res.id,
uintid: resChild.id,
kcid: resChild.courseid,
kcid: courseid,
kc: name,
know: newKnow.know, //konw
xs: newKnow.xs, //
knowid: newKnow.knowid,
kcmbid: newKnow.kcmbid, //
}).then((res) => {
if (res.code != 200) {
//
this.deleteShow(newKnow)
this.$message.error(res.message)
} else {
this.staticActions = resChild
this.$message.success(res.message)
}
})
}
}
})
})
},
//
async submitDialog() {
await postAction(this.url.add, this.staticActions.knowcourses)
},
showKnowledge() {
this.id = this.$store.getters.userID.courseid
getAction(this.url.list, { id: this.id }).then((res) => {
this.$set(this, 'formData', res.result.chapterList)
})
},
newKnowledge(newValue) {
const knowledge = {
id: '',
kcid: '',
kc: '',
chapterid: '',
uintid: '',
kcmbid: '',
knowid: newValue.knowcourses.length + Date.now(),
xs: '',
kcmb: '',
know: '',
knowdy: '',
knowzb: null,
read: true,
showDetermine: true,
isValue: true,
}
//
newValue.knowcourses.push(knowledge)
//
},
//
async deleteShow(row) {
await deleteAction(this.url.delete, { id: row.id })
this.staticActions.knowcourses.find((res, index) => {
if (res == row) {
this.$delete(this.staticActions.knowcourses, index)
}
})
},
knowledgeManageDialog(childChapter) {
this.staticActions = childChapter
this.dialogVisible = true
},
handleClose(done) {
this.$confirm('确认关闭?')
.then((_) => {
done()
})
.catch((_) => {})
},
setAdd() {
if (this.setNum < 3) {
this.setNum++
this.$router.push({
path: '/TestWay',
query:this.$store.getters.userID
})
}
},
//
setSub() {
if (this.setNum > 0) {
this.setNum--
this.$router.go(-1)
}
},
},
}
</script>
<style >
.el-icon-plus {
margin: 0 10px;
}
.contentSized {
margin: 10px 20px;
}
.PivotContentWC > div {
text-indent: 5em;
}
.align_center {
display: flex;
align-items: center;
margin: 4px 0;
}
.sub-down {
text-align: center;
display: flex;
justify-content: center;
align-items: center;
}
.content_list {
background: whitesmoke;
height: 30px;
line-height: 30px;
margin-bottom: 6px;
}
.dialogContent .el-dialog {
min-width: 450px;
}
</style>

@ -0,0 +1,28 @@
package org.jeecg.modules.course.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.jeecg.common.aspect.annotation.Dict;
import java.io.Serializable;
@Data
@TableName("assessment_method")
@ApiModel(value="assessment_method", description="课程考核方式")
public class SeCoureseType implements Serializable {
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "主键")
private String id;
@ApiModelProperty(value = "过程阶段百分比")
private String processAssessment;
@ApiModelProperty(value = "期末考试百分比")
private String finalExam;
@ApiModelProperty(value = "课程id")
@Dict(dicCode = "id", dicText = "name", dictTable = "se_course")
private String name;
}

@ -0,0 +1,9 @@
package org.jeecg.modules.course.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.jeecg.modules.course.entity.SeCoureseType;
@Mapper
public interface SeCourseMethodMapper extends BaseMapper<SeCoureseType> {
}

@ -0,0 +1,7 @@
package org.jeecg.modules.course.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.course.entity.SeCoureseType;
public interface ISecourseMethodService extends IService<SeCoureseType> {
}

@ -0,0 +1,13 @@
package org.jeecg.modules.course.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.jeecg.modules.course.entity.SeCoureseType;
import org.jeecg.modules.course.entity.SeCourseobjectives;
import org.jeecg.modules.course.mapper.SeCourseMethodMapper;
import org.jeecg.modules.course.mapper.SeCourseobjectivesMapper;
import org.jeecg.modules.course.service.ISecourseMethodService;
import org.springframework.stereotype.Service;
@Service
public class SeCourseMethod extends ServiceImpl<SeCourseMethodMapper, SeCoureseType> implements ISecourseMethodService {
}
Loading…
Cancel
Save