mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/learning-system-portal.git
synced 2025-12-09 02:46:44 +08:00
Compare commits
40 Commits
20250909-h
...
20251104-1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
782bcc31e5 | ||
|
|
1a95852912 | ||
|
|
f5d865ccc3 | ||
|
|
65673561d8 | ||
|
|
2cbb379fa6 | ||
|
|
6d4af3aa2d | ||
|
|
5ebee96ce4 | ||
| 408d6a1612 | |||
| b1508ad226 | |||
| a9764bf2f8 | |||
|
|
c3f53515b9 | ||
| 087be5dd38 | |||
|
|
1772c972b9 | ||
|
|
91bafcb5b9 | ||
|
|
8c533c5f3a | ||
|
|
bb17784501 | ||
|
|
69530fe6ad | ||
|
|
b1cd8e2f63 | ||
|
|
7335dd4eba | ||
| 3860087fac | |||
| 046509f70d | |||
| bf0ae91184 | |||
| f61742a0b9 | |||
|
|
c886a80193 | ||
| 05ad90b025 | |||
| f3833a23fa | |||
| d957a8d44b | |||
|
|
89ed79828f | ||
|
|
b926590edc | ||
| 19bc757dc2 | |||
| f3a1036b64 | |||
| 3c1650b751 | |||
| ff2bdb4ae5 | |||
|
|
14fb53ccd3 | ||
|
|
72f9661150 | ||
|
|
7806afc5f7 | ||
| e1af233c5f | |||
| 2738493030 | |||
| 480a4f5564 | |||
|
|
205bf5469f |
BIN
public/images/qualityBg.png
Normal file
BIN
public/images/qualityBg.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.5 KiB |
@@ -22,7 +22,7 @@ const pageList = function(data) {
|
||||
|
||||
/**
|
||||
* 选择课件的查询,这里也是分页查询,只是返回的内容,字段会很少,用于课件制作那选择已有课件内容。
|
||||
*
|
||||
*
|
||||
* @param {Object} data
|
||||
* 查询参数如上面pageList方法
|
||||
*/
|
||||
@@ -47,7 +47,9 @@ const findList = function(data) {
|
||||
}
|
||||
*/
|
||||
const saveUpload = function(data) {
|
||||
return ajax.post('/xboe/m/course/file/upload/save', data);
|
||||
return ajax.post('/xboe/m/course/file/upload/save', data, {
|
||||
timeout: 60000
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -88,4 +90,4 @@ export default {
|
||||
batchUpdate,
|
||||
detail,
|
||||
delFile
|
||||
}
|
||||
}
|
||||
|
||||
@@ -59,7 +59,7 @@ export const qualityPageList=function (data){
|
||||
}
|
||||
// 课程精品课标记时间年份列表
|
||||
export const qualityCourseTimeMark=function (){
|
||||
return httpAjax.post(baseURL,'/quality/manage/createYearList',{});
|
||||
return httpAjax.post(baseURL,'/quality/manage/qualityYearList',{});
|
||||
}
|
||||
/**
|
||||
* 首页新课程推荐列表
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 46 KiB |
@@ -50,7 +50,7 @@
|
||||
<el-input-number v-model="duration" size="mini" :min="1" :max="100"></el-input-number>
|
||||
</span>
|
||||
</div>
|
||||
<el-upload class="upload-demo" :headers="headers" :data="data" drag :action="uploadFileUrl" :on-success="handleUploadSuccess" :before-upload="handleBeforeUpload">
|
||||
<el-upload ref="uploadRef" class="upload-demo" :headers="headers" :data="data" drag :action="uploadFileUrl" :on-success="handleUploadSuccess" :before-upload="handleBeforeUpload">
|
||||
<i class="el-icon-upload"></i>
|
||||
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
|
||||
<div class="el-upload__tip" slot="tip">文件大小限制:{{curComType.maxSizeName}},支持的文件类型:{{curComType.fileTypes.join(',')}}</div>
|
||||
@@ -195,6 +195,7 @@
|
||||
// this.cware.content.content=result.filePath;
|
||||
}else{
|
||||
this.$message.error(rs.message);
|
||||
this.$refs.uploadRef.clearFiles();
|
||||
}
|
||||
});
|
||||
}else{
|
||||
|
||||
@@ -153,28 +153,28 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="xindex-content">
|
||||
|
||||
|
||||
<!-- 推荐课程 -->
|
||||
<div class="modules xcontent2">
|
||||
<!-- <div class="xcontent2-main"> -->
|
||||
<!--内容块-->
|
||||
|
||||
|
||||
<!-- </div> -->
|
||||
<!-- 精品课模块 -->
|
||||
<div class="xcontent2-main">
|
||||
<div class="modules-title xindex-main" v-if="this.qusisityList.list.length>0">
|
||||
<div class="modules-title xindex-main" v-if="this.qusisityList.list.length > 0">
|
||||
<!-- <span class="modules-text" style="color: #3D86F4;">精品课</span> -->
|
||||
<span class="quyer-tag" style="margin-left: 0px;">
|
||||
<!-- <img src="../assets/images/tutoring1.pn" alt=""> -->
|
||||
<img class="modules-text" style="height: 24px;" src="../assets/images/course/courseTitle.png" alt="">
|
||||
<img class="modules-text" style="height: 28px;" src="../assets/images/course/courseTitle.png" alt="">
|
||||
</span>
|
||||
<span class="more">
|
||||
<router-link to="/quailtyCourse">查看更多>></router-link>
|
||||
<router-link to="/qualityCourse">查看更多>></router-link>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div
|
||||
v-for="(course, eIndex) in exquisiteList"
|
||||
:key="'cc' + eIndex"
|
||||
@@ -212,7 +212,7 @@
|
||||
</div>
|
||||
<div class="course-author">
|
||||
<div class="course-author-left">
|
||||
{{ course.authorInfo.teacherName }}
|
||||
{{ course.authorInfo.name }}
|
||||
|
||||
<span class="study-num"
|
||||
>{{ formatNum(course.studyNum) }}人学习</span
|
||||
@@ -231,9 +231,9 @@
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<!--内容块-->
|
||||
<div class="modules-title xindex-main" v-if="courseComputedOneList.length > 0">
|
||||
<div class="modules-title xindex-main">
|
||||
<span class="modules-text">推荐课程</span>
|
||||
<span class="quyer-tag">
|
||||
<a
|
||||
@@ -1308,7 +1308,7 @@ export default {
|
||||
return this.courseList.list.slice(3)
|
||||
},
|
||||
// 精品课展示
|
||||
exquisiteList() {
|
||||
exquisiteList() {
|
||||
return this.qusisityList.list.slice(0,3)
|
||||
},
|
||||
},
|
||||
@@ -1505,21 +1505,27 @@ export default {
|
||||
//二期调整,直接改成一个地址
|
||||
//return this.webBaseUrl + '/course/detail?id=' + item.id;
|
||||
let $this = this;
|
||||
let cId = "";
|
||||
if (item.id) {
|
||||
cId = item.id;
|
||||
} else {
|
||||
cId = item.courseId;
|
||||
}
|
||||
if (item.type == 10) {
|
||||
//return this.webBaseUrl + "/course/studyindex?id=" + item.id;
|
||||
//console.log("直接进入学习页面");
|
||||
this.$router.push("/course/studyindex?id=" + item.id?item.id:item.courseId);
|
||||
this.$router.push("/course/studyindex?id=" + cId);
|
||||
} else if (item.type == 20) {
|
||||
apiCourseStudy.hasSignup(item.id?item.id:item.courseId).then((rs) => {
|
||||
apiCourseStudy.hasSignup(cId).then((rs) => {
|
||||
if (rs.status == 200) {
|
||||
//return $this.webBaseUrl + "/course/studyindex?id=" + item.id;
|
||||
this.$router.push("/course/studyindex?id=" + item.id?item.id:item.courseId);
|
||||
//return $this.webBaseUrl + "/course/studyindex?id=" + cId;
|
||||
this.$router.push("/course/studyindex?id=" + cId);
|
||||
} else {
|
||||
//return $this.webBaseUrl + "/course/detail?id=" + item.id;
|
||||
this.$router.push("/course/detail?id=" + item.id?item.id:item.courseId);
|
||||
//return $this.webBaseUrl + "/course/detail?id=" + cId;
|
||||
this.$router.push("/course/detail?id=" + cId);
|
||||
}
|
||||
});
|
||||
//return $this.webBaseUrl + "/course/detail?id=" + item.id;
|
||||
//return $this.webBaseUrl + "/course/detail?id=" + cId;
|
||||
}
|
||||
},
|
||||
orderTypeFilter(val) {
|
||||
@@ -1561,8 +1567,21 @@ export default {
|
||||
let course = {
|
||||
aid: this.userInfo.aid,
|
||||
}
|
||||
apiIndex.qualitylist(course).then((res) => {
|
||||
console.log(res,'jinpinsjfhhfjash--------------------------');
|
||||
apiIndex.qualitylist(course).then((res) => {
|
||||
let courseIds = [];
|
||||
res.data.result.forEach((item) => {
|
||||
item.authorInfo = {
|
||||
aid: "",
|
||||
name: "",
|
||||
orgInfo: "",
|
||||
avatar: "",
|
||||
code: "",
|
||||
sex: null,
|
||||
};
|
||||
courseIds.push(item.courseId);
|
||||
});
|
||||
this.loadCouserTeacher(res.data.result, courseIds);
|
||||
console.log(res.data.result,'--------------------------');
|
||||
this.qusisityList.list = res.data.result;
|
||||
})
|
||||
},
|
||||
@@ -1765,7 +1784,7 @@ export default {
|
||||
let userIds = [];
|
||||
list.forEach((item, index) => {
|
||||
cres.result.some((courseTeahcer) => {
|
||||
if (courseTeahcer.courseId == item.id) {
|
||||
if (courseTeahcer.courseId == (item.id||item.courseId)) {
|
||||
if (courseTeahcer.teacherIds) {
|
||||
userIds.push(courseTeahcer.teacherIds[0]);
|
||||
item.authorInfo.aid = courseTeahcer.teacherIds[0];
|
||||
@@ -3115,6 +3134,6 @@ export default {
|
||||
background: linear-gradient(135deg, #e6f7ff, #f0f8ff, #ffffff);
|
||||
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
|
||||
border: 1px solid #d9edf7;
|
||||
overflow: hidden;
|
||||
//overflow: hidden;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -483,8 +483,11 @@ export default {
|
||||
} else if (this.form.device2 === true) {
|
||||
this.form.device = 2;
|
||||
}
|
||||
//时长,秒与分钟的转化
|
||||
//if(this.form.)
|
||||
// 时长,秒与分钟的转化
|
||||
if (this.form.minute) {
|
||||
this.form.duration = this.form.minute * 60;
|
||||
}
|
||||
|
||||
try {
|
||||
const { status,message} = await coueseFile.batchUpdate([this.form]);
|
||||
if (status === 200) {
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -28,7 +28,7 @@
|
||||
<div class="course-title-style">
|
||||
<div class="imgTilte">
|
||||
<div>精品课程</div>
|
||||
<div>COURSE</div>
|
||||
<!-- <div>COURSE</div> -->
|
||||
</div>
|
||||
</div>
|
||||
<div class="course-list">
|
||||
@@ -67,31 +67,36 @@
|
||||
</div>
|
||||
<!-- 右侧 -->
|
||||
<div class="xcontent2-main content-div">
|
||||
|
||||
<!-- 内容导航 -->
|
||||
<div class="topNav" v-if="!newData">
|
||||
<div class="search-div nav" style="height: 100px;flex: 1;">
|
||||
<div @click="handleTypeClick(ctypeList[0], ctypeList)" class="option-item"
|
||||
:class="{ 'option-active': ctypeList[0].checked }">
|
||||
<a>全部</a>
|
||||
<span :class="ctypeList[0].checked ? 'nav-bottbor' : ''"></span>
|
||||
</div>
|
||||
|
||||
<div @click="handleTypeClick(ctypeList[1], ctypeList)" class="option-item"
|
||||
:class="{ 'option-active': ctypeList[1].checked }">
|
||||
<a>内部专享</a>
|
||||
<span :class="ctypeList[1].checked ? 'nav-bottbor' : ''"></span>
|
||||
<!-- 内容导航 -->
|
||||
<div class="topNav" v-if="!newData" style="display: flex; flex-direction: row;background-color:#fff;">
|
||||
<div>
|
||||
<div class="search-div nav" style="height: 100px;flex: 1;">
|
||||
<div @click="handleTypeClick(ctypeList[0], ctypeList)" class="option-item"
|
||||
:class="{ 'option-active': ctypeList[0].checked }">
|
||||
<a>全部</a>
|
||||
<span :class="ctypeList[0].checked ? 'nav-bottbor' : ''"></span>
|
||||
</div>
|
||||
|
||||
<div @click="handleTypeClick(ctypeList[1], ctypeList)" class="option-item"
|
||||
:class="{ 'option-active': ctypeList[1].checked }">
|
||||
<a>内部专享</a>
|
||||
<span :class="ctypeList[1].checked ? 'nav-bottbor' : ''"></span>
|
||||
</div>
|
||||
<div @click="handleTypeClick(ctypeList[2], ctypeList)" class="option-item"
|
||||
:class="{ 'option-active': ctypeList[2].checked }">
|
||||
<a>外部精选</a>
|
||||
<span :class="ctypeList[2].checked ? 'nav-bottbor' : ''"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div @click="handleTypeClick(ctypeList[2], ctypeList)" class="option-item"
|
||||
:class="{ 'option-active': ctypeList[2].checked }">
|
||||
<a>外部精选</a>
|
||||
<span :class="ctypeList[2].checked ? 'nav-bottbor' : ''"></span>
|
||||
</div>
|
||||
<div style="display: flex;justify-content: space-between; align-items: center">
|
||||
<span>请选择年份</span>
|
||||
</div>
|
||||
|
||||
<div style="display: flex;justify-content: space-between; align-items: center;">
|
||||
<span style="margin-right: 10px;" class="option-item">请选择年份 </span>
|
||||
<el-select v-model="yearChosen" multiple>
|
||||
<el-option
|
||||
v-for="year in years"
|
||||
v-if="year"
|
||||
:key="year"
|
||||
:label="year"
|
||||
:value="year">
|
||||
@@ -99,11 +104,10 @@
|
||||
</el-select>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<!-- 清除 -->
|
||||
<!-- <div v-if="stagList.length > 0 && !newData" class="search-div" style="padding: 0;margin-bottom: 20px;">
|
||||
<div v-if="stagList.length > 0 && !newData" class="search-div" style="padding: 0;margin-bottom: 20px;">
|
||||
<div class="searchbar" style="background-color:#f6f7fb;display: flex;justify-content: space-between;">
|
||||
<div style="line-height: 30px;">
|
||||
<span class="item-title"> 搜索条件</span>
|
||||
@@ -114,20 +118,20 @@
|
||||
<el-button type="primary" size="mini" @click="handleClearTags">清除</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</div> -->
|
||||
</div>
|
||||
|
||||
<!-- 标题最新最热好评率 -->
|
||||
<div class="xcourse-list" style="background-color: #fff;border-radius: 8px;padding:0 25px;">
|
||||
<div class="order-div" v-if="!newData">
|
||||
<span class="quyer-tag">
|
||||
<el-button type="text" class="order-class" @click="orderChange('DEFAULT')"
|
||||
:class="{ actice: course.orderField == 'studys' }">全部课程</el-button>
|
||||
:class="{ actice: course.orderField == 'DEFAULT' }">全部课程</el-button>
|
||||
<el-button type="text" class="order-class" @click="orderChange('HOT')"
|
||||
:class="{ actice: course.orderField == 'studys1' }">最热</el-button>
|
||||
:class="{ actice: course.orderField == 'HOT' }">最热</el-button>
|
||||
<el-button type="text" class="order-class" @click="orderChange('NEW')"
|
||||
:class="{ actice: course.orderField == 'publishTime' }">最新</el-button>
|
||||
:class="{ actice: course.orderField == 'NEW' }">最新</el-button>
|
||||
<el-button type="text" class="order-class" @click="orderChange('GOOD')"
|
||||
:class="{ actice: course.orderField == 'score' }">好评率</el-button>
|
||||
:class="{ actice: course.orderField == 'GOOD' }">好评率</el-button>
|
||||
</span>
|
||||
<span class="order-count">
|
||||
共找到<span>{{ count }}</span>个结果
|
||||
@@ -143,7 +147,7 @@
|
||||
<span v-if="cinfo.type == 30" class="course-type-left">线下课</span>
|
||||
<span v-if="cinfo.type == 40" class="course-type-left">学习项目</span>
|
||||
</div>
|
||||
<div class="course-title two-line-ellipsis" :title="cinfo.title" v-html="cinfo.name"></div>
|
||||
<div class="course-title two-line-ellipsis" :title="cinfo.title" v-html="cinfo.courseName"></div>
|
||||
<!-- 关键字 -->
|
||||
<div class="keywordInfo-every">
|
||||
<div class="keywordInfo" v-for="(keyword, index) in cinfo.keywordsActive" :key="index">
|
||||
@@ -156,14 +160,14 @@
|
||||
</el-tooltip>
|
||||
</div>
|
||||
</div>
|
||||
<!-- {{cinfo}}-->
|
||||
<div class="couresstartTime">
|
||||
<span v-if="cinfo.type == 30 && cinfo.startTime">开课时间:{{ cinfo.startTime }}</span>
|
||||
</div>
|
||||
|
||||
<div class="course-info">
|
||||
<div class="course-info-user" style="max-width: 100px;" v-if="cinfo.teacher">
|
||||
<el-tooltip :content="cinfo.teacher" placement="bottom" effect="light">
|
||||
<span class="course-info-author">{{ cinfo.teacher }}</span>
|
||||
<div class="course-info-user" style="max-width: 100px;" v-if="cinfo.teacherName">
|
||||
<el-tooltip :content="cinfo.teacherName.split(',')[0]" placement="bottom" effect="light">
|
||||
<span class="course-info-author">{{ cinfo.teacherName.split(',')[0] }}</span>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
<div class="course-info-user">
|
||||
@@ -173,7 +177,7 @@
|
||||
<div style="display: flex;">
|
||||
<interactBar :type="1" nodeWidth="20px" :data="cinfo" :courseExclusive="true" :comments="false"
|
||||
:praises="false" :shares="false" :views="false"></interactBar>
|
||||
<div v-if="Number(cinfo.hasCollect)">
|
||||
<div v-if="cinfo.courseScore">
|
||||
<span class="course-score-value">{{ toScore(cinfo.courseScore) }}分</span>
|
||||
</div>
|
||||
<div v-else class="course-score-no">未评分</div>
|
||||
@@ -213,7 +217,7 @@
|
||||
<!-- <span class="pag-text-msg" v-else-if="moreState == 3 && courseList.length > 0">没有更多数据了</span> -->
|
||||
<span class="notcoures" v-if="moreState == 3 && courseList.length == 0">
|
||||
<img :src="`${webBaseUrl}/images/nocouresimg.png`" alt="">
|
||||
<h5>暂无课程,请优先学习其它课程吧~</h5>
|
||||
<h5>当前分类下暂未标记精品课</h5>
|
||||
</span>
|
||||
<div v-if="courseList.length > 0">
|
||||
<pagination :size="course.pageSize" :total="Number(count)" :page="course.pageIndex"
|
||||
@@ -273,7 +277,7 @@
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { mapGetters, mapActions } from "vuex";
|
||||
import {mapActions, mapGetters} from "vuex";
|
||||
import couresinteract from '@/components/Portal/course/couresinteract.vue';
|
||||
import portalHeader from "@/components/PortalHeader.vue";
|
||||
import portalFooter from "@/components/PortalFooter.vue";
|
||||
@@ -288,11 +292,11 @@ import scene from "@/api/modules/scene.js";
|
||||
import apiUserbasic from "@/api/boe/userbasic.js";
|
||||
import interactBar from "@/components/Portal/interactBar.vue";
|
||||
import courseImage from "@/components/Course/courseImage.vue";
|
||||
import { courseType, getType, toScore, formatDate, formatUserNumber, formatDateByFmt } from "@/utils/tools.js";
|
||||
import { deepClone, param } from "../../../utils";
|
||||
import {formatDate, formatUserNumber, toScore} from "@/utils/tools.js";
|
||||
import apiSearchterm from "@/api/modules/searchterm.js";
|
||||
import apiPlace from "@/api/phase2/place.js"
|
||||
import {qualityCourseTimeMark, qualityPageList} from "@/api/phase2"
|
||||
|
||||
export default {
|
||||
name: "index",
|
||||
components: {
|
||||
@@ -312,6 +316,7 @@ export default {
|
||||
let list = [];
|
||||
|
||||
},
|
||||
// 取消搜索条件标签展示
|
||||
stagList() { //计算出选择的内容
|
||||
let list = [];
|
||||
if (this.keyword) {
|
||||
@@ -322,11 +327,12 @@ export default {
|
||||
checked: true
|
||||
})
|
||||
}
|
||||
this.ctypeList.forEach(item => {
|
||||
if (item.checked) {
|
||||
list.push(item);
|
||||
}
|
||||
});
|
||||
// 取消 全部 内部专享 外部精选 三种的显示
|
||||
// this.ctypeList.forEach(item => {
|
||||
// if (item.checked) {
|
||||
// list.push(item);
|
||||
// }
|
||||
// });
|
||||
this.oneList.forEach(one => {
|
||||
var twoChildChecked = false;//是否有下级
|
||||
one.children.forEach(two => {
|
||||
@@ -393,6 +399,8 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
/** 被选择的精品课程*/
|
||||
courseChosen: void 0,
|
||||
yearChosen: [],
|
||||
years: [],
|
||||
newData: false,//线上品牌系列隐藏
|
||||
@@ -473,10 +481,9 @@ export default {
|
||||
mounted() {
|
||||
|
||||
qualityCourseTimeMark().then(response=>{
|
||||
console.log(`qualityCourseTimeMark`, response)
|
||||
this.years = response.data.result
|
||||
})
|
||||
let screenWidth = window.screen.availWidth;
|
||||
// let screenWidth = window.screen.availWidth;
|
||||
// if (screenWidth < 1280) {
|
||||
// this.course.pageSize = 9;
|
||||
// this.columns = 3;
|
||||
@@ -638,6 +645,7 @@ export default {
|
||||
},
|
||||
//搜索条件
|
||||
stagClose(tag, tagIndex) {
|
||||
this.courseChosen = void 0;
|
||||
tag.checked = false;
|
||||
if (tag.type == 0) {
|
||||
this.keyword = '';
|
||||
@@ -683,9 +691,10 @@ export default {
|
||||
handleClearTags() {
|
||||
//清空所有的条件
|
||||
this.keyword = '';
|
||||
this.ctypeList.forEach(item => {
|
||||
item.checked = false;
|
||||
});
|
||||
// 取消搜索条件标签展示
|
||||
// this.ctypeList.forEach(item => {
|
||||
// item.checked = false;
|
||||
// });
|
||||
this.oneList.forEach(one => {
|
||||
one.checked = false;
|
||||
one.children.forEach(two => {
|
||||
@@ -695,6 +704,8 @@ export default {
|
||||
})
|
||||
})
|
||||
});
|
||||
// 清除左侧被选中的内容
|
||||
this.courseChosen = void 0;
|
||||
this.twoList = [];
|
||||
this.threeList = [];
|
||||
this.navTitle = [];
|
||||
@@ -716,7 +727,8 @@ export default {
|
||||
handleOptionClick(item, level, list) {
|
||||
// 线上品牌展示效果
|
||||
this.newData = item.newData;
|
||||
console.log(this.newData);
|
||||
this.courseChosen = item.id
|
||||
console.log(item, "---------");
|
||||
// 单选,排除法
|
||||
this.oneList.forEach(one => {
|
||||
one.checked = false;
|
||||
@@ -914,7 +926,6 @@ export default {
|
||||
// 头部
|
||||
emitInput(val) {
|
||||
this.keyword = val;
|
||||
//this.stagList;
|
||||
this.searchData();
|
||||
},
|
||||
|
||||
@@ -1176,14 +1187,18 @@ export default {
|
||||
// 请求参数预处理
|
||||
const params = JSON.parse(JSON.stringify(this.course))
|
||||
// 清除多余的参数
|
||||
const {pageIndex, orderField} = params
|
||||
const {pageIndex, orderField, userId} = params
|
||||
params.pageNum = pageIndex
|
||||
params.orderByType = orderField
|
||||
params.courseSource = this.ctypeList.findIndex(e=>e.checked)
|
||||
params.courseSource = this.ctypeList.findIndex(e => e.checked)
|
||||
this.yearChosen.length && (params.years = this.yearChosen)
|
||||
params.courseName = this.keyword
|
||||
delete params.userId
|
||||
params.aid = userId
|
||||
params.sysType = this.courseChosen
|
||||
|
||||
await qualityPageList(params).then(res=>{
|
||||
console.log(`params`, params)
|
||||
await qualityPageList(params).then(res => {
|
||||
this.searching = false;
|
||||
console.log(res.status)
|
||||
if (res.status === 200) {
|
||||
@@ -1216,7 +1231,18 @@ export default {
|
||||
// }
|
||||
// });
|
||||
|
||||
this.courseList = res.data.result.records ?? []
|
||||
const list = res.data.result.records ?? []
|
||||
// list.forEach(course=>{
|
||||
// const id = course.courseId
|
||||
//
|
||||
// apiCourse.getTeacherByCourseIDs([id]).then(res=>{
|
||||
// console.log(res, "ids res")
|
||||
// course.teacher = res.result[0].names[0]
|
||||
// console.log(`course.teacher`, course.teacher)
|
||||
// })
|
||||
// })
|
||||
|
||||
this.courseList = list
|
||||
if (this.newData) {
|
||||
this.courseList = [
|
||||
{
|
||||
@@ -1269,6 +1295,7 @@ export default {
|
||||
} else {
|
||||
this.moreState = 2;
|
||||
}
|
||||
|
||||
})
|
||||
.catch(err => {
|
||||
this.moreState = 2;
|
||||
@@ -1406,7 +1433,7 @@ export default {
|
||||
.course-title-style {
|
||||
position: relative;
|
||||
height: 100px;
|
||||
background-image: url('../../../../public/images/courseBg.png');
|
||||
background-image: url('../../../../public/images/qualityBg.png');
|
||||
background-repeat: no-repeat;
|
||||
background-size: 100% 100%;
|
||||
display: flex;
|
||||
@@ -1414,19 +1441,20 @@ export default {
|
||||
|
||||
.imgTilte {
|
||||
|
||||
& div:first-child {
|
||||
padding-left: 40px;
|
||||
font-size: 30px;
|
||||
div {
|
||||
padding-left: 20px;
|
||||
font-size: 50px;
|
||||
color: #FFFFFF;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
& div:last-child {
|
||||
padding-left: 40px;
|
||||
font-size: 20px;
|
||||
color: #FFFFFF;
|
||||
opacity: .5;
|
||||
font-family: ArialMT !important;
|
||||
}
|
||||
// & div:last-child {
|
||||
// padding-left: 40px;
|
||||
// font-size: 20px;
|
||||
// color: #FFFFFF;
|
||||
// opacity: .5;
|
||||
// font-family: ArialMT !important;
|
||||
// }
|
||||
|
||||
}
|
||||
}
|
||||
@@ -2085,13 +2113,13 @@ export default {
|
||||
|
||||
.search-div {
|
||||
background: #fff;
|
||||
padding: 10px 25px;
|
||||
padding: 10px 15px;
|
||||
border-radius: 8px;
|
||||
|
||||
::v-deep .el-input {
|
||||
width: 420px;
|
||||
height: 38px;
|
||||
margin-bottom: 13px;
|
||||
//margin-bottom: 13px;
|
||||
|
||||
.el-input__inner {
|
||||
height: 38px;
|
||||
|
||||
@@ -480,6 +480,7 @@
|
||||
defaultMaxTime:1800, //非音频默认最大时间
|
||||
warn:"测试内容",
|
||||
warnTitle:"测试标题",
|
||||
isFinishingStudyItem: false, // 防止重复调用完成状态更新接口
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
@@ -1684,12 +1685,17 @@
|
||||
//这种可能没有,不过这里也是为了万中那个1
|
||||
!this.tentative && this.saveStudyInfo();
|
||||
} else {
|
||||
// 如果正在处理完成请求,则直接返回,避免重复调用
|
||||
if (this.isFinishingStudyItem) {
|
||||
return;
|
||||
}
|
||||
let params = {
|
||||
itemId: this.contentData.studyItemId,
|
||||
studyId: this.studyId,
|
||||
courseId: this.courseId,
|
||||
cnum: this.totalContent
|
||||
}
|
||||
this.isFinishingStudyItem = true; // 设置标志位
|
||||
apiVideoStudy.finishStudyItem(params).then(res => {
|
||||
if (res.status == 200) {
|
||||
this.contentData.status = 9;
|
||||
@@ -1697,6 +1703,10 @@
|
||||
} else {
|
||||
console.log("记录完成学习失败:" + res.message + "," + res.error);
|
||||
}
|
||||
this.isFinishingStudyItem = false; // 重置标志位
|
||||
}).catch(error => {
|
||||
console.error("记录完成学习出错:", error);
|
||||
this.isFinishingStudyItem = false; // 出错时也重置标志位
|
||||
});
|
||||
}
|
||||
},
|
||||
@@ -1960,16 +1970,19 @@
|
||||
}
|
||||
|
||||
.player-box {
|
||||
position: relative;
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
max-width: 300px;
|
||||
margin: 20px auto;
|
||||
height: 187px;
|
||||
background: rgba(74, 74, 74, .5);
|
||||
background: rgba(74, 74, 74, .8);
|
||||
border-radius: 33px;
|
||||
text-align: center;
|
||||
padding: 20px;
|
||||
top: 50%;
|
||||
box-sizing: border-box;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
|
||||
.player-praise {
|
||||
margin-top: 25px;
|
||||
|
||||
Reference in New Issue
Block a user