课程审核部分的修改,替换到新开发的分支上来

This commit is contained in:
daihh
2022-09-25 10:58:16 +08:00
parent ba5ed90fc6
commit c31f9fdf62
7 changed files with 446 additions and 70 deletions

View File

@@ -73,18 +73,13 @@
:props="{ value: 'id', label: 'name' }"
:options="sysTypeListMap"></el-cascader>
</el-form-item>
<!-- <el-form-item label="资源归属" required>
<el-cascader
placeholder="选择资源归属"
style="width: 100%;"
clearable
v-model="resOwnerArray"
:props="{ value: 'code', label: 'name' }"
:options="resOwnerListMap"
></el-cascader>
</el-form-item> -->
<el-form-item label="资源归属" required>
<el-input placeholder="请选择" v-model="orgName" >
<el-button v-if="identity==3 || identity==5" @click="showChooseOrg()" slot="append" icon="el-icon-search">选择</el-button>
</el-input>
</el-form-item>
<el-form-item label="场景" v-show="!weike.onlyRequired">
<el-select v-model="courseInfo.forScene" style="width: 100%;">
<el-select v-model="courseInfo.forScene" style="width: 100%;" clearable>
<el-option v-for="item in sceneList" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</el-form-item>
@@ -156,7 +151,7 @@
</el-form-item>
</el-col>
<el-col :span="14">
<div @click="checkCourse"><weikeContent :reset="weikeReset" :contents="contentInfo.list" :course="courseInfo" min-height="644px"></weikeContent></div>
<div @click="checkCourse"><weikeContent ref="weikeContent" :reset="weikeReset" :contents="contentInfo.list" :course="courseInfo" min-height="644px"></weikeContent></div>
</el-col>
<!-- <el-form-item label="完成规则" v-if="!weike.onlyRequired"><el-input maxlength="50" v-model="courseInfo.passFormula" placeholder="可基于组织树或受众选择"></el-input></el-form-item> -->
<!-- <el-form-item label="开放权限" v-if="!weike.onlyRequired"><el-input maxlength="50" v-model="courseInfo.openObject" placeholder="可基于组织树或受众选择"></el-input></el-form-item> -->
@@ -182,6 +177,7 @@
<div style="padding-right: 30px;"><div></div></div>
<span slot="footer" class="dialog-footer">
<span class="red-tip">有分项内容保存的请先保存分项内容再提交</span>
<el-checkbox style="margin-right:10px" v-if="curCourseId != ''" v-model="checked"></el-checkbox><span v-if="curCourseId != ''" style="font-size:14px;color:#787878;">我已阅读并遵守<span style="color:#588afc;margin-right:10px;cursor: pointer;" @click="courseInfoFormCheckedShow = true">平台内容发布要求</span></span>
<!-- <el-button v-if="curCourseId!='' && contentInfo.list.length>0">预览</el-button> -->
<el-button :loading="btnLoading" v-if="curCourseId != ''" :disabled="!checked" @click="submitCourse()" type="primary">提交审核</el-button>
@@ -219,17 +215,9 @@
:options="sysTypeListMap">
</el-cascader>
</el-form-item>
<!-- <el-form-item label="资源归属" required>
<el-cascader
placeholder="选择资源归属"
style="width: 100%;"
clearable
v-model="resOwnerArray"
:props="{ value: 'code', label: 'name' }"
:options="resOwnerListMap"></el-cascader>
</el-form-item> -->
<el-form-item label="场景">
<el-select v-model="courseInfo.forScene" style="width: 100%;">
<el-select v-model="courseInfo.forScene" style="width: 100%;" clearable>
<el-option v-for="item in sceneList" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</el-form-item>
@@ -254,6 +242,11 @@
</el-form-item>
</el-col>
</el-form-item>
<el-form-item label="资源归属" required>
<el-input placeholder="请选择" v-model="orgName" >
<el-button v-if="identity==3 || identity==5" @click="showChooseOrg()" slot="append" icon="el-icon-search">选择</el-button>
</el-input>
</el-form-item>
<el-form-item label="目标人群" required>
<el-input maxlength="50" v-model="courseInfo.forUsers" show-word-limit placeholder="目标人群(限50字以内)"></el-input>
</el-form-item>
@@ -350,12 +343,13 @@
</div>
</el-aside>
<el-main style="padding: 0px;">
<catalog-courseware :reset="onlineReset" :content="curContent" :course="courseInfo" @save="saveCurContent" @remove="delCurContent"></catalog-courseware>
<catalog-courseware ref="courseware" :reset="onlineReset" :content="curContent" :addOrder="addOrder" :course="courseInfo" @save="saveCurContent" @remove="delCurContent"></catalog-courseware>
</el-main>
</el-container>
</el-tab-pane>
</el-tabs>
<span slot="footer" class="dialog-footer">
<span class="red-tip">有分项内容保存的请先保存分项内容再提交</span>
<el-checkbox v-if="curCourseId != ''" style="margin-right:10px" v-model="checked"></el-checkbox><span v-if="curCourseId != ''" style="font-size:14px;color:#787878">我已阅读并遵守<span style="color:#588afc;margin-right:10px;cursor: pointer;" @click="courseInfoFormCheckedShow = true">平台内容发布要求</span></span>
<el-button :loading="btnLoading" v-if="biaoke.tabIndex == 'base'" type="primary" @click="saveAndNext(2)">保存并下一步</el-button>
<el-button :loading="btnLoading" v-if="biaoke.tabIndex == 'content'" type="primary" @click="previousStep()">上一步</el-button>
@@ -378,6 +372,7 @@
</el-dialog>
<!--选择图片-->
<filecloud :show="dlgFileChoose.show" @choose="changeCourseImage" @close="choseChoose"></filecloud>
<chooseOrg ref="refChooseOrg" @confirm="confirmChooseOrg"></chooseOrg>
</div>
</template>
<script>
@@ -391,19 +386,25 @@ import scene from '../../api/modules/scene.js';
import apiUserGroup from '../../api/modules/usergroup.js';
import apiTeacher from '../../api/modules/teacher.js';
import apiTag from '../../api/modules/tag.js';
import apiHRBP from '../../api/boe/HRBP.js';
import apiCourse from '../../api/modules/course.js';
import apiOrg from '../../api/system/organiza.js';
import apiUser from '../../api/system/user.js';
import WxEditor from '@/components/Editor/index.vue';
import catalogSort from '@/components/Course/catalogSort.vue';
import { courseType, getType } from '../../utils/tools.js';
import { mapGetters, mapActions } from 'vuex';
import filecloud from '@/components/FileCloud/index.vue';
import chooseOrg from '@/components/System/chooseOrg.vue';
export default {
props: {},
components: { weikeContent, catalogCourseware, imageUpload, WxEditor, catalogSort,agreement,filecloud,choice},
components: { weikeContent, catalogCourseware, imageUpload, WxEditor, catalogSort,agreement,filecloud,choice,chooseOrg},
data() {
return {
addOrder:1,
checked:false,
courseInfoFormCheckedShow:false,
orgChooseShow:false,
weikeReset: '',
onlineReset: '',
sysTypeListMap: [],
@@ -432,11 +433,15 @@ export default {
courseCoverurl: '', //显示的图片
btnLoading: false,
requireSaveCourse: false,
orgName:'',
orgNamePath:'',
orgKid:'',
courseInfo: {
id: '',
name: '',
orderStudy: false,
type: 10,
orgId:'',
coverImg: '',
source: 1,
forUsers: '',
@@ -493,7 +498,7 @@ export default {
this.getSceneData();
},
computed: {
...mapGetters(['resOwnerMap', 'sysTypeMap']),
...mapGetters(['resOwnerMap', 'sysTypeMap','userInfo','identity']),
catalogTree() {
let treeList = [];
let $this = this;
@@ -531,8 +536,19 @@ export default {
this.loadResOwners();
this.loadSysTypes();
this.loadUserGroup();
},
methods: {
showChooseOrg(){
this.$refs.refChooseOrg.dlgShow = true;
},
confirmChooseOrg(orgInfo){
//console.log(orgInfo,'orgInfo');
this.orgName=orgInfo.name;
this.orgKid=orgInfo.kid;
this.courseInfo.orgId=orgInfo.id;
this.$refs.refChooseOrg.dlgShow = false;
},
getTeacherList(res) {
this.teacherValues = res;
},
@@ -652,11 +668,29 @@ export default {
this.onlineReset = Math.round(Math.random()) + '';
this.courseChooseShow = true;
this.biaoke.tabIndex = 'base';
this.courseInfo.orgId=this.userInfo.departId;
if(!this.courseInfo.orgId){
this.courseInfo.orgId=this.userInfo.departId;
}
this.orgKid='';
if(this.courseInfo.orgId){
apiOrg.getSimple(this.courseInfo.orgId).then(rrs=>{
if(rrs.status==200){
this.orgName=rrs.result.name;
this.orgKid=rrs.result.kid;
this.orgNamePath=rrs.result.namePath;
}
})
}
} else {
//console.log(editData,'editData');
this.weikeReset = editData.id;
this.onlineReset = editData.id;
//console.log("编辑课程?");
this.courseInfo.orgId=editData.orgId;
this.curCourseId = editData.id; //设置
this.courseInfo.type = editData.type; //设置课程类型,因为这里的课程对象可能不全,所以只能设置值,不能整个对象附值
this.getDetail(editData.id); //获取课程的详细信息
@@ -667,6 +701,7 @@ export default {
this.biaoke.dlgShow = true;
}
}
},
resetCurCourseContent() {
this.curContent = { id: '', contentType: 0, contentName: '', content: '', csectionId: '', contentName: '', contentRefId: '', courseId: this.courseInfo.id };
@@ -747,22 +782,55 @@ export default {
this.contentInfo.list = result.contents;
this.sectionInfo.list = result.sections;
this.courseTeachers = result.teachers; //课程的老师信息
if(!this.courseInfo.orgId){
//根据课程创建者获取机构id
apiUser.getOrgSimpleByUserId(result.course.sysCreateAid).then(ors=>{
if(ors.status==200){
$this.courseInfo.orgId=ors.result.id;
apiOrg.getSimple(ors.result.id).then(rrs=>{
if(rrs.status==200){
$this.orgName=rrs.result.name;
$this.orgKid=rrs.result.kid;
$this.orgNamePath=rrs.result.namePath;
}
})
}else{
//
}
})
}else{
apiOrg.getSimple(this.courseInfo.orgId).then(rrs=>{
if(rrs.status==200){
$this.orgName=rrs.result.name;
$this.orgKid=rrs.result.kid;
$this.orgNamePath=rrs.result.namePath;
}
})
}
this.resOwnerArray=[];
if (result.course.resOwner1 == '') {
this.resOwnerArray.push(result.course.resOwner1);
}else if(result.course.resOwner2 == ''){
}
if(result.course.resOwner2 == ''){
this.resOwnerArray.push(result.course.resOwner2);
}else if(result.course.resOwner3 == ''){
}
if(result.course.resOwner3 == ''){
this.resOwnerArray.push(result.course.resOwner3);
}
if (result.course.sysType3 == '' && result.course.sysType2 == '') {
this.sysTypeList = [result.course.sysType1];
} else if (result.course.sysType3 == '') {
this.sysTypeList = [result.course.sysType1, result.course.sysType2];
} else {
this.sysTypeList = [result.course.sysType1, result.course.sysType2, result.course.sysType3];
this.sysTypeList=[];
if(result.course.sysType1!='' && result.course.sysType1!='0'){
this.sysTypeList.push(result.course.sysType1);
}
if(result.course.sysType2!='' && result.course.sysType2!='0'){
this.sysTypeList.push(result.course.sysType2);
}
if(result.course.sysType3!='' && result.course.sysType3!='0'){
this.sysTypeList.push(result.course.sysType3);
}
//console.log(this.sysTypeList,'this.sysTypeList');
//受众处理crowds
let crowdList=[];
if(result.crowds && result.crowds.length>0){
@@ -887,8 +955,24 @@ export default {
//设置状态
},
addNewContent(sec) {
console.log(sec,'sec');
this.resetCurCourseContent();
this.curContent.csectionId = sec.id;
this.orderValue(sec.id);
},
// 计算新增节的顺序
orderValue(id) {
let cha = this.catalogTree.find(item=>{return item.section.id == id});
let order = [];
if(cha.contents.length > 0) {
cha.contents.forEach(con=>{
order.push(con.sortIndex);
})
let addOrder = order.sort(function(a,b) {return b-a;})
this.addOrder = addOrder[0] + 1;
} else {
this.addOrder = 1;
}
},
// 控制 过滤
deviceFilter(num) {
@@ -1036,7 +1120,109 @@ export default {
this.btnLoading = false;
});
},
// 判断是否有未保存的内容
unsavedContent() {
const courseware = this.$refs.courseware;
console.log(courseware,'courseware');
let pass = true;
if(this.curContent.id == '') {// 新增
if(this.curContent.contentType == 60) { // 判断作业是否保存
if(courseware.homework.content || courseware.homework.name || courseware.homework.deadTime){
pass = false;
}
} else if(this.curContent.contentType == 61) { //考试
if(courseware.exam.paperContent != '') {
pass = false;
}
if(courseware.examPaper.items.length >0) {
pass = false;
}
}else if(this.curContent.contentType == 41) { //图文
if(courseware.htmlContent.length > 7){
pass = false;
}
}else if(this.curContent.contentType == 52) { //外部链接
if(courseware.linkInfo.url != '') {
pass = false;
}
}
} else {// 编辑
if(this.curContent.contentType == 60) { // 判断作业是否保存
if(JSON.stringify(courseware.homeworkChange) !== JSON.stringify(courseware.homework)) {
pass = false;
}
} else if(this.curContent.contentType == 61) { //考试
if(courseware.exam.paperContent !== courseware.examChange.paperContent || JSON.stringify(courseware.examPaper) != JSON.stringify(courseware.examPaperChange)) {
pass = false;
}
} else if(this.curContent.contentType == 41) { //图文
if(this.curContent.content !== courseware.htmlContent) {
pass = false;
}
} else if(this.curContent.contentType == 52) { //外部链接
if(this.curContent.content !== JSON.stringify(courseware.linkInfo)) {
pass = false;
}
} else if(this.curContent.contentType == 10 || this.curContent.contentType == 20) {// 视频
if(this.curContent.content !== JSON.stringify(courseware.curriculumData)) {
pass = false;
}
}
}
return pass;
},
unsavedWeiContent() {
// console.log(this.contentInfo.list,'contentInfo.list');
// console.log(this.courseInfo,'courseInfo');
//console.log(this.$refs.weikeContent,'weikeContent');
const courseware = this.$refs.weikeContent;
//console.log(this.catalogTree,'this.catalogTree');
if(courseware.cware.content.id==''){
this.$message.error('无课件内容,请先添加课件内容保存后再提交');
return false;
}
if(courseware.homework.show == 2) { // 作业
this.$message.error('请先保存作业再提交');
return false;
}
let pass = true;
if(courseware.homework.show == 2) { // 作业
this.$message.error('请先保存作业再提交');
return false;
}
if(courseware.assess.show == 2) { // 评估
//this.$message.error('请先保存评估再提交');
//return false;
}
if(courseware.exam.show == 3) { // 评估
this.$message.error('请先保存考试再提交');
return false;
}
return true;
},
submitCourse() {
if(this.biaoke.dlgShow && !this.unsavedContent()){
this.$message.error('您有未保存的内容,请先保存');
return;
}
if(this.weike.dlgShow && !this.unsavedWeiContent()){
return;
}
//console.log(this.courseInfo.orgId,'this.courseInfo.orgId');
//console.log(this.orgKid,'this.orgKid');
if(!this.courseInfo.orgId){
this.$message.error('请选择资源归属');
return;
}
if(!this.orgKid){
this.$message.error('资源归属无关联HRBP信息');
return;
}
//console.log(this.resOwnerListMap[0],'this.resOwnerListMap[0]');
//return;
let ownerCode=this.resOwnerListMap[0].code;
@@ -1127,22 +1313,40 @@ export default {
};
this.btnLoading = true;
let $this = this;
apiCourse.submitCourse(postData).then(res => {
//this.btnLoading=false;
setTimeout(function() {
//先获取课程内容
apiHRBP.getHRBP(this.orgKid).then(rs=>{
if(rs.status==200 && rs.result.length>0){
let hrbpUser=rs.result[0];
postData.auditUser={
email:hrbpUser.email,
code:hrbpUser.user_no,
name:hrbpUser.real_name,
kid:hrbpUser.user_id,
orgId:hrbpUser.orgnization_id
}
postData.course.orgName=hrbpUser.orgnization_name_path+'/'+$this.orgName;
apiCourse.submitCourse(postData).then(res => {
//this.btnLoading=false;
setTimeout(function() {
$this.btnLoading = false;
}, 1000);
if (res.status === 200) {
//提交成功,直接关闭当前窗口
this.$message.success('提交成功!!!');
this.biaoke.dlgShow = false;
this.weike.dlgShow = false;
//提交成功回调处理
this.$emit('submitSuccess');
} else {
this.$message.error(res.message);
}
});
}else{
$this.btnLoading = false;
}, 1000);
if (res.status === 200) {
//提交成功,直接关闭当前窗口
this.$message.success('提交成功!!!');
this.biaoke.dlgShow = false;
this.weike.dlgShow = false;
//提交成功回调处理
this.$emit('submitSuccess');
} else {
this.$message.error(res.message);
this.$message.error('获取审核HRBP失败:'+rs.message);
}
});
})
},
// 教师列标,远程查询
async remoteFindTeacher(query) {
@@ -1250,6 +1454,13 @@ export default {
</script>
<style lang="scss" scoped>
.red-tip{
margin-top: 8px;
color: red;
font-size: 14px;
float: left;
font-weight: 600;
}
::v-deep .wei-from{
.el-form-item{
margin-bottom: 10px;